From cca1a820f0ea0f44674ab33c1ec434b1445cf3d9 Mon Sep 17 00:00:00 2001 From: vasilito Date: Sat, 1 Aug 2026 04:43:37 +0300 Subject: [PATCH] dev/gnu-make, libs/freetype2: vendor as full-fork recipes (path=source, patches baked) --- local/recipes/dev/gnu-make/recipe.toml | 16 +- local/recipes/dev/gnu-make/source.tar | Bin 0 -> 2307891 bytes .../dev/gnu-make/source/.redbear-src-version | 1 + local/recipes/dev/gnu-make/source/ABOUT-NLS | 1282 + local/recipes/dev/gnu-make/source/AUTHORS | 122 + local/recipes/dev/gnu-make/source/Basic.mk | 249 + local/recipes/dev/gnu-make/source/COPYING | 674 + local/recipes/dev/gnu-make/source/ChangeLog | 5893 +++++ local/recipes/dev/gnu-make/source/INSTALL | 368 + local/recipes/dev/gnu-make/source/Makefile.am | 221 + local/recipes/dev/gnu-make/source/Makefile.in | 1622 ++ local/recipes/dev/gnu-make/source/NEWS | 1834 ++ local/recipes/dev/gnu-make/source/README | 221 + .../recipes/dev/gnu-make/source/README.Amiga | 80 + local/recipes/dev/gnu-make/source/README.DOS | 296 + local/recipes/dev/gnu-make/source/README.OS2 | 176 + local/recipes/dev/gnu-make/source/README.VMS | 515 + local/recipes/dev/gnu-make/source/README.W32 | 363 + .../dev/gnu-make/source/README.customs | 112 + local/recipes/dev/gnu-make/source/SCOPTIONS | 13 + local/recipes/dev/gnu-make/source/aclocal.m4 | 1747 ++ .../gnu-make/source/autom4te.cache/output.0 | 17350 +++++++++++++ .../gnu-make/source/autom4te.cache/output.1 | 17350 +++++++++++++ .../gnu-make/source/autom4te.cache/output.2 | 17351 +++++++++++++ .../gnu-make/source/autom4te.cache/output.3 | 17350 +++++++++++++ .../gnu-make/source/autom4te.cache/requests | 604 + .../gnu-make/source/autom4te.cache/traces.0 | 7739 ++++++ .../gnu-make/source/autom4te.cache/traces.1 | 2193 ++ .../gnu-make/source/autom4te.cache/traces.2 | 2193 ++ .../gnu-make/source/autom4te.cache/traces.3 | 2193 ++ .../dev/gnu-make/source/build-aux/compile | 364 + .../gnu-make/source/build-aux/config.guess | 1818 ++ .../gnu-make/source/build-aux/config.guess~ | 1815 ++ .../gnu-make/source/build-aux/config.rpath | 684 + .../dev/gnu-make/source/build-aux/config.sub | 2364 ++ .../dev/gnu-make/source/build-aux/config.sub~ | 2354 ++ .../dev/gnu-make/source/build-aux/depcomp | 792 + .../dev/gnu-make/source/build-aux/install-sh | 541 + .../dev/gnu-make/source/build-aux/mdate-sh | 227 + .../dev/gnu-make/source/build-aux/missing | 236 + .../dev/gnu-make/source/build-aux/texinfo.tex | 12233 ++++++++++ .../recipes/dev/gnu-make/source/build.cfg.in | 38 + local/recipes/dev/gnu-make/source/build.sh | 182 + .../recipes/dev/gnu-make/source/build_w32.bat | 458 + .../recipes/dev/gnu-make/source/builddos.bat | 97 + local/recipes/dev/gnu-make/source/configure | 17351 +++++++++++++ .../recipes/dev/gnu-make/source/configure.ac | 554 + local/recipes/dev/gnu-make/source/configure~ | 16404 +++++++++++++ .../dev/gnu-make/source/doc/Makefile.am | 24 + .../dev/gnu-make/source/doc/Makefile.in | 846 + .../recipes/dev/gnu-make/source/doc/fdl.texi | 505 + .../dev/gnu-make/source/doc/make-stds.texi | 1173 + local/recipes/dev/gnu-make/source/doc/make.1 | 416 + .../recipes/dev/gnu-make/source/doc/make.info | 221 + .../dev/gnu-make/source/doc/make.info-1 | 7235 ++++++ .../dev/gnu-make/source/doc/make.info-2 | 6852 ++++++ .../dev/gnu-make/source/doc/make.info-3 | Bin 0 -> 19645 bytes .../recipes/dev/gnu-make/source/doc/make.texi | 13722 +++++++++++ .../recipes/dev/gnu-make/source/doc/stamp-vti | 4 + .../dev/gnu-make/source/doc/version.texi | 4 + .../dev/gnu-make/source/lib/Makefile.am | 242 + .../dev/gnu-make/source/lib/Makefile.in | 1022 + .../recipes/dev/gnu-make/source/lib/alloca.c | 167 + .../dev/gnu-make/source/lib/alloca.in.h | 72 + .../dev/gnu-make/source/lib/concat-filename.c | 73 + .../dev/gnu-make/source/lib/concat-filename.h | 46 + .../dev/gnu-make/source/lib/filename.h | 112 + .../dev/gnu-make/source/lib/findprog-in.c | 399 + .../dev/gnu-make/source/lib/findprog.h | 77 + .../recipes/dev/gnu-make/source/lib/fnmatch.c | 489 + .../dev/gnu-make/source/lib/fnmatch.in.h | 85 + .../dev/gnu-make/source/lib/getloadavg.c | 944 + local/recipes/dev/gnu-make/source/lib/glob.c | 1437 ++ .../recipes/dev/gnu-make/source/lib/glob.in.h | 210 + .../dev/gnu-make/source/lib/intprops.h | 642 + .../dev/gnu-make/source/lib/stdbool.in.h | 143 + .../dev/gnu-make/source/lib/warn-on-use.h | 149 + .../dev/gnu-make/source/m4/00gnulib.m4 | 85 + .../dev/gnu-make/source/m4/acinclude.m4 | 132 + .../recipes/dev/gnu-make/source/m4/alloca.m4 | 106 + .../dev/gnu-make/source/m4/asm-underscore.m4 | 83 + .../recipes/dev/gnu-make/source/m4/codeset.m4 | 23 + .../dev/gnu-make/source/m4/dospaths.m4 | 33 + .../recipes/dev/gnu-make/source/m4/eaccess.m4 | 12 + .../dev/gnu-make/source/m4/extensions.m4 | 227 + .../dev/gnu-make/source/m4/extern-inline.m4 | 100 + .../recipes/dev/gnu-make/source/m4/fcntl-o.m4 | 134 + .../dev/gnu-make/source/m4/findprog-in.m4 | 11 + .../dev/gnu-make/source/m4/getloadavg.m4 | 216 + .../recipes/dev/gnu-make/source/m4/gettext.m4 | 401 + .../recipes/dev/gnu-make/source/m4/glibc2.m4 | 31 + .../recipes/dev/gnu-make/source/m4/glibc21.m4 | 34 + .../dev/gnu-make/source/m4/gnulib-cache.m4 | 71 + .../dev/gnu-make/source/m4/gnulib-common.m4 | 1076 + .../dev/gnu-make/source/m4/gnulib-comp.m4 | 329 + .../dev/gnu-make/source/m4/host-cpu-c-abi.m4 | 678 + local/recipes/dev/gnu-make/source/m4/iconv.m4 | 271 + .../recipes/dev/gnu-make/source/m4/intdiv0.m4 | 87 + local/recipes/dev/gnu-make/source/m4/intl.m4 | 298 + .../recipes/dev/gnu-make/source/m4/intldir.m4 | 19 + .../dev/gnu-make/source/m4/intlmacosx.m4 | 56 + .../recipes/dev/gnu-make/source/m4/intmax.m4 | 36 + .../dev/gnu-make/source/m4/inttypes-pri.m4 | 42 + .../dev/gnu-make/source/m4/inttypes_h.m4 | 29 + .../dev/gnu-make/source/m4/largefile.m4 | 180 + .../dev/gnu-make/source/m4/lcmessage.m4 | 35 + .../recipes/dev/gnu-make/source/m4/lib-ld.m4 | 119 + .../dev/gnu-make/source/m4/lib-link.m4 | 777 + .../dev/gnu-make/source/m4/lib-prefix.m4 | 224 + local/recipes/dev/gnu-make/source/m4/lock.m4 | 42 + .../dev/gnu-make/source/m4/longlong.m4 | 113 + local/recipes/dev/gnu-make/source/m4/nls.m4 | 32 + local/recipes/dev/gnu-make/source/m4/po.m4 | 453 + .../dev/gnu-make/source/m4/printf-posix.m4 | 48 + .../dev/gnu-make/source/m4/progtest.m4 | 91 + .../dev/gnu-make/source/m4/sig_atomic_t.m4 | 14 + .../dev/gnu-make/source/m4/size_max.m4 | 79 + .../recipes/dev/gnu-make/source/m4/stdbool.m4 | 118 + .../dev/gnu-make/source/m4/stdint_h.m4 | 27 + .../dev/gnu-make/source/m4/threadlib.m4 | 389 + .../dev/gnu-make/source/m4/uintmax_t.m4 | 30 + .../dev/gnu-make/source/m4/visibility.m4 | 77 + .../dev/gnu-make/source/m4/warn-on-use.m4 | 62 + .../recipes/dev/gnu-make/source/m4/wchar_t.m4 | 24 + .../recipes/dev/gnu-make/source/m4/wint_t.m4 | 32 + local/recipes/dev/gnu-make/source/m4/xsize.m4 | 12 + .../dev/gnu-make/source/m4/year2038.m4 | 124 + .../dev/gnu-make/source/m4/zzgnulib.m4 | 23 + .../recipes/dev/gnu-make/source/makefile.com | 171 + local/recipes/dev/gnu-make/source/mk/Amiga.mk | 45 + local/recipes/dev/gnu-make/source/mk/VMS.mk | 97 + .../dev/gnu-make/source/mk/Windows32.mk | 122 + .../dev/gnu-make/source/mk/msdosdjgpp.mk | 43 + local/recipes/dev/gnu-make/source/po/LINGUAS | 30 + .../dev/gnu-make/source/po/Makefile.in.in | 475 + local/recipes/dev/gnu-make/source/po/Makevars | 87 + .../dev/gnu-make/source/po/Makevars.template | 78 + .../dev/gnu-make/source/po/POTFILES.in | 48 + .../recipes/dev/gnu-make/source/po/Rules-quot | 58 + local/recipes/dev/gnu-make/source/po/be.gmo | Bin 0 -> 6136 bytes local/recipes/dev/gnu-make/source/po/be.po | 2425 ++ local/recipes/dev/gnu-make/source/po/bg.gmo | Bin 0 -> 65584 bytes local/recipes/dev/gnu-make/source/po/bg.po | 2495 ++ .../dev/gnu-make/source/po/boldquot.sed | 10 + local/recipes/dev/gnu-make/source/po/cs.gmo | Bin 0 -> 50567 bytes local/recipes/dev/gnu-make/source/po/cs.po | 2628 ++ local/recipes/dev/gnu-make/source/po/da.gmo | Bin 0 -> 46951 bytes local/recipes/dev/gnu-make/source/po/da.po | 2656 ++ local/recipes/dev/gnu-make/source/po/de.gmo | Bin 0 -> 52220 bytes local/recipes/dev/gnu-make/source/po/de.po | 2547 ++ .../dev/gnu-make/source/po/en@boldquot.header | 25 + .../dev/gnu-make/source/po/en@quot.header | 22 + local/recipes/dev/gnu-make/source/po/es.gmo | Bin 0 -> 41411 bytes local/recipes/dev/gnu-make/source/po/es.po | 3148 +++ local/recipes/dev/gnu-make/source/po/fi.gmo | Bin 0 -> 30675 bytes local/recipes/dev/gnu-make/source/po/fi.po | 2583 ++ local/recipes/dev/gnu-make/source/po/fr.gmo | Bin 0 -> 41807 bytes local/recipes/dev/gnu-make/source/po/fr.po | 2917 +++ local/recipes/dev/gnu-make/source/po/ga.gmo | Bin 0 -> 38938 bytes local/recipes/dev/gnu-make/source/po/ga.po | 2593 ++ local/recipes/dev/gnu-make/source/po/gl.gmo | Bin 0 -> 20076 bytes local/recipes/dev/gnu-make/source/po/gl.po | 2880 +++ local/recipes/dev/gnu-make/source/po/he.gmo | Bin 0 -> 9710 bytes local/recipes/dev/gnu-make/source/po/he.po | 2616 ++ local/recipes/dev/gnu-make/source/po/hr.gmo | Bin 0 -> 50639 bytes local/recipes/dev/gnu-make/source/po/hr.po | 2751 +++ local/recipes/dev/gnu-make/source/po/id.gmo | Bin 0 -> 39490 bytes local/recipes/dev/gnu-make/source/po/id.po | 2705 +++ .../dev/gnu-make/source/po/insert-header.sin | 23 + local/recipes/dev/gnu-make/source/po/it.gmo | Bin 0 -> 41012 bytes local/recipes/dev/gnu-make/source/po/it.po | 2525 ++ local/recipes/dev/gnu-make/source/po/ja.gmo | Bin 0 -> 54247 bytes local/recipes/dev/gnu-make/source/po/ja.po | 2652 ++ local/recipes/dev/gnu-make/source/po/ko.gmo | Bin 0 -> 51905 bytes local/recipes/dev/gnu-make/source/po/ko.po | 2458 ++ local/recipes/dev/gnu-make/source/po/lt.gmo | Bin 0 -> 6827 bytes local/recipes/dev/gnu-make/source/po/lt.po | 2406 ++ local/recipes/dev/gnu-make/source/po/make.pot | 2321 ++ local/recipes/dev/gnu-make/source/po/nl.gmo | Bin 0 -> 48958 bytes local/recipes/dev/gnu-make/source/po/nl.po | 2600 ++ local/recipes/dev/gnu-make/source/po/pl.gmo | Bin 0 -> 49133 bytes local/recipes/dev/gnu-make/source/po/pl.po | 2455 ++ local/recipes/dev/gnu-make/source/po/pt.gmo | Bin 0 -> 39137 bytes local/recipes/dev/gnu-make/source/po/pt.po | 2498 ++ .../recipes/dev/gnu-make/source/po/pt_BR.gmo | Bin 0 -> 39569 bytes local/recipes/dev/gnu-make/source/po/pt_BR.po | 2743 +++ local/recipes/dev/gnu-make/source/po/quot.sed | 6 + .../gnu-make/source/po/remove-potcdate.sin | 19 + local/recipes/dev/gnu-make/source/po/ro.gmo | Bin 0 -> 52157 bytes local/recipes/dev/gnu-make/source/po/ro.po | 2640 ++ local/recipes/dev/gnu-make/source/po/ru.gmo | Bin 0 -> 51042 bytes local/recipes/dev/gnu-make/source/po/ru.po | 2640 ++ local/recipes/dev/gnu-make/source/po/sr.gmo | Bin 0 -> 59190 bytes local/recipes/dev/gnu-make/source/po/sr.po | 2509 ++ local/recipes/dev/gnu-make/source/po/stamp-po | 1 + local/recipes/dev/gnu-make/source/po/sv.gmo | Bin 0 -> 48252 bytes local/recipes/dev/gnu-make/source/po/sv.po | 2451 ++ local/recipes/dev/gnu-make/source/po/tr.gmo | Bin 0 -> 17599 bytes local/recipes/dev/gnu-make/source/po/tr.po | 2662 ++ local/recipes/dev/gnu-make/source/po/uk.gmo | Bin 0 -> 61658 bytes local/recipes/dev/gnu-make/source/po/uk.po | 2593 ++ local/recipes/dev/gnu-make/source/po/vi.gmo | Bin 0 -> 42515 bytes local/recipes/dev/gnu-make/source/po/vi.po | 2625 ++ .../recipes/dev/gnu-make/source/po/zh_CN.gmo | Bin 0 -> 37823 bytes local/recipes/dev/gnu-make/source/po/zh_CN.po | 2661 ++ .../recipes/dev/gnu-make/source/po/zh_TW.gmo | Bin 0 -> 45174 bytes local/recipes/dev/gnu-make/source/po/zh_TW.po | 2458 ++ local/recipes/dev/gnu-make/source/src/amiga.c | 113 + local/recipes/dev/gnu-make/source/src/amiga.h | 18 + local/recipes/dev/gnu-make/source/src/ar.c | 332 + .../recipes/dev/gnu-make/source/src/arscan.c | 1013 + .../dev/gnu-make/source/src/commands.c | 712 + .../dev/gnu-make/source/src/commands.h | 45 + .../dev/gnu-make/source/src/config.ami | 331 + .../dev/gnu-make/source/src/config.h-vms | 430 + .../dev/gnu-make/source/src/config.h.W32 | 623 + .../dev/gnu-make/source/src/config.h.in | 1218 + .../dev/gnu-make/source/src/config.h.in~ | 1210 + .../dev/gnu-make/source/src/configh.dos | 111 + local/recipes/dev/gnu-make/source/src/debug.h | 41 + .../recipes/dev/gnu-make/source/src/default.c | 762 + local/recipes/dev/gnu-make/source/src/dep.h | 139 + local/recipes/dev/gnu-make/source/src/dir.c | 1376 ++ .../recipes/dev/gnu-make/source/src/expand.c | 621 + local/recipes/dev/gnu-make/source/src/file.c | 1278 + .../recipes/dev/gnu-make/source/src/filedef.h | 229 + .../dev/gnu-make/source/src/function.c | 2826 +++ .../recipes/dev/gnu-make/source/src/getopt.c | 1030 + .../recipes/dev/gnu-make/source/src/getopt.h | 130 + .../recipes/dev/gnu-make/source/src/getopt1.c | 180 + .../recipes/dev/gnu-make/source/src/gettext.h | 57 + .../dev/gnu-make/source/src/gmk-default.h | 28 + .../dev/gnu-make/source/src/gmk-default.scm | 53 + .../recipes/dev/gnu-make/source/src/gnumake.h | 79 + local/recipes/dev/gnu-make/source/src/guile.c | 159 + local/recipes/dev/gnu-make/source/src/hash.c | 495 + local/recipes/dev/gnu-make/source/src/hash.h | 234 + .../dev/gnu-make/source/src/implicit.c | 1159 + local/recipes/dev/gnu-make/source/src/job.c | 3762 +++ local/recipes/dev/gnu-make/source/src/job.h | 92 + local/recipes/dev/gnu-make/source/src/load.c | 262 + .../recipes/dev/gnu-make/source/src/loadapi.c | 82 + local/recipes/dev/gnu-make/source/src/main.c | 3800 +++ .../recipes/dev/gnu-make/source/src/makeint.h | 881 + local/recipes/dev/gnu-make/source/src/misc.c | 976 + .../dev/gnu-make/source/src/mkconfig.h | 37 + local/recipes/dev/gnu-make/source/src/os.h | 158 + .../recipes/dev/gnu-make/source/src/output.c | 534 + .../recipes/dev/gnu-make/source/src/output.h | 58 + .../recipes/dev/gnu-make/source/src/posixos.c | 881 + local/recipes/dev/gnu-make/source/src/read.c | 3546 +++ .../recipes/dev/gnu-make/source/src/remake.c | 1842 ++ .../dev/gnu-make/source/src/remote-cstms.c | 297 + .../dev/gnu-make/source/src/remote-stub.c | 99 + local/recipes/dev/gnu-make/source/src/rule.c | 622 + local/recipes/dev/gnu-make/source/src/rule.h | 59 + .../recipes/dev/gnu-make/source/src/shuffle.c | 237 + .../recipes/dev/gnu-make/source/src/shuffle.h | 26 + .../recipes/dev/gnu-make/source/src/signame.c | 254 + .../dev/gnu-make/source/src/strcache.c | 330 + .../dev/gnu-make/source/src/variable.c | 1957 ++ .../dev/gnu-make/source/src/variable.h | 249 + .../recipes/dev/gnu-make/source/src/version.c | 33 + .../dev/gnu-make/source/src/vms_exit.c | 95 + .../gnu-make/source/src/vms_export_symbol.c | 527 + .../dev/gnu-make/source/src/vms_progname.c | 463 + .../recipes/dev/gnu-make/source/src/vmsdir.h | 76 + .../dev/gnu-make/source/src/vmsfunctions.c | 226 + .../recipes/dev/gnu-make/source/src/vmsify.c | 1005 + .../recipes/dev/gnu-make/source/src/vmsjobs.c | 1462 ++ local/recipes/dev/gnu-make/source/src/vpath.c | 634 + .../gnu-make/source/src/w32/compat/dirent.c | 196 + .../gnu-make/source/src/w32/compat/posixfcn.c | 151 + .../gnu-make/source/src/w32/include/dirent.h | 84 + .../gnu-make/source/src/w32/include/dlfcn.h | 29 + .../source/src/w32/include/pathstuff.h | 25 + .../source/src/w32/include/sub_proc.h | 64 + .../gnu-make/source/src/w32/include/w32err.h | 26 + .../dev/gnu-make/source/src/w32/pathstuff.c | 270 + .../gnu-make/source/src/w32/subproc/misc.c | 83 + .../gnu-make/source/src/w32/subproc/proc.h | 29 + .../source/src/w32/subproc/sub_proc.c | 1564 ++ .../gnu-make/source/src/w32/subproc/w32err.c | 85 + .../dev/gnu-make/source/src/w32/w32os.c | 514 + .../recipes/dev/gnu-make/source/tests/README | 100 + .../gnu-make/source/tests/config-flags.pm.W32 | 9 + .../gnu-make/source/tests/config-flags.pm.in | 20 + .../gnu-make/source/tests/config_flags_pm.com | 54 + .../dev/gnu-make/source/tests/guile.supp | 31 + .../dev/gnu-make/source/tests/mkshadow | 57 + .../dev/gnu-make/source/tests/run_make_tests | 2 + .../gnu-make/source/tests/run_make_tests.bat | 21 + .../gnu-make/source/tests/run_make_tests.pl | 730 + .../source/tests/scripts/features/archives | 242 + .../source/tests/scripts/features/comments | 35 + .../tests/scripts/features/conditionals | 162 + .../tests/scripts/features/default_names | 44 + .../source/tests/scripts/features/dircache | 31 + .../tests/scripts/features/double_colon | 230 + .../source/tests/scripts/features/echoing | 64 + .../source/tests/scripts/features/errors | 118 + .../source/tests/scripts/features/escape | 103 + .../source/tests/scripts/features/exec | 72 + .../source/tests/scripts/features/export | 210 + .../tests/scripts/features/grouped_targets | 207 + .../tests/scripts/features/implicit_search | 483 + .../source/tests/scripts/features/include | 465 + .../source/tests/scripts/features/jobserver | 160 + .../source/tests/scripts/features/load | 150 + .../source/tests/scripts/features/loadapi | 228 + .../source/tests/scripts/features/mult_rules | 88 + .../tests/scripts/features/mult_targets | 46 + .../source/tests/scripts/features/order_only | 118 + .../source/tests/scripts/features/output-sync | 371 + .../source/tests/scripts/features/override | 45 + .../source/tests/scripts/features/parallelism | 248 + .../tests/scripts/features/patspecific_vars | 148 + .../tests/scripts/features/patternrules | 676 + .../source/tests/scripts/features/quoting | 31 + .../source/tests/scripts/features/recursion | 67 + .../source/tests/scripts/features/reinvoke | 180 + .../source/tests/scripts/features/rule_glob | 37 + .../source/tests/scripts/features/se_explicit | 504 + .../source/tests/scripts/features/se_implicit | 506 + .../source/tests/scripts/features/se_statpat | 232 + .../tests/scripts/features/shell_assignment | 65 + .../tests/scripts/features/statipattrules | 311 + .../source/tests/scripts/features/suffixrules | 99 + .../source/tests/scripts/features/targetvars | 439 + .../source/tests/scripts/features/temp_stdin | 118 + .../source/tests/scripts/features/utf8 | 11 + .../source/tests/scripts/features/varnesting | 27 + .../source/tests/scripts/features/vpath | 114 + .../source/tests/scripts/features/vpathgpath | 66 + .../source/tests/scripts/features/vpathplus | 88 + .../source/tests/scripts/functions/abspath | 84 + .../source/tests/scripts/functions/addprefix | 44 + .../source/tests/scripts/functions/addsuffix | 36 + .../source/tests/scripts/functions/andor | 50 + .../source/tests/scripts/functions/basename | 44 + .../source/tests/scripts/functions/call | 92 + .../source/tests/scripts/functions/dir | 44 + .../source/tests/scripts/functions/error | 71 + .../source/tests/scripts/functions/eval | 169 + .../source/tests/scripts/functions/file | 222 + .../source/tests/scripts/functions/filter-out | 58 + .../source/tests/scripts/functions/findstring | 47 + .../source/tests/scripts/functions/flavor | 44 + .../source/tests/scripts/functions/foreach | 93 + .../source/tests/scripts/functions/guile | 116 + .../source/tests/scripts/functions/if | 33 + .../source/tests/scripts/functions/intcmp | 72 + .../source/tests/scripts/functions/join | 44 + .../source/tests/scripts/functions/let | 111 + .../source/tests/scripts/functions/notdir | 44 + .../source/tests/scripts/functions/origin | 49 + .../source/tests/scripts/functions/realpath | 92 + .../source/tests/scripts/functions/shell | 214 + .../source/tests/scripts/functions/sort | 51 + .../source/tests/scripts/functions/strip | 57 + .../tests/scripts/functions/substitution | 38 + .../source/tests/scripts/functions/suffix | 57 + .../source/tests/scripts/functions/value | 30 + .../source/tests/scripts/functions/warning | 83 + .../source/tests/scripts/functions/wildcard | 163 + .../source/tests/scripts/functions/word | 175 + .../gnu-make/source/tests/scripts/misc/bs-nl | 230 + .../source/tests/scripts/misc/close_stdout | 9 + .../source/tests/scripts/misc/fopen-fail | 22 + .../source/tests/scripts/misc/general1 | 51 + .../source/tests/scripts/misc/general2 | 50 + .../source/tests/scripts/misc/general3 | 347 + .../source/tests/scripts/misc/general4 | 146 + .../gnu-make/source/tests/scripts/misc/utf8 | 14 + .../source/tests/scripts/options/dash-B | 87 + .../source/tests/scripts/options/dash-C | 66 + .../source/tests/scripts/options/dash-I | 116 + .../source/tests/scripts/options/dash-W | 91 + .../source/tests/scripts/options/dash-d | 9 + .../source/tests/scripts/options/dash-e | 15 + .../source/tests/scripts/options/dash-f | 162 + .../source/tests/scripts/options/dash-k | 115 + .../source/tests/scripts/options/dash-l | 51 + .../source/tests/scripts/options/dash-n | 100 + .../source/tests/scripts/options/dash-q | 86 + .../source/tests/scripts/options/dash-r | 44 + .../source/tests/scripts/options/dash-s | 26 + .../source/tests/scripts/options/dash-t | 58 + .../source/tests/scripts/options/eval | 44 + .../source/tests/scripts/options/general | 30 + .../tests/scripts/options/print-directory | 70 + .../source/tests/scripts/options/shuffle | 128 + .../source/tests/scripts/options/symlinks | 62 + .../scripts/options/warn-undefined-variables | 25 + .../source/tests/scripts/targets/DEFAULT | 35 + .../tests/scripts/targets/DELETE_ON_ERROR | 22 + .../source/tests/scripts/targets/FORCE | 19 + .../source/tests/scripts/targets/INTERMEDIATE | 108 + .../tests/scripts/targets/NOTINTERMEDIATE | 119 + .../source/tests/scripts/targets/ONESHELL | 143 + .../source/tests/scripts/targets/PHONY | 42 + .../source/tests/scripts/targets/POSIX | 57 + .../source/tests/scripts/targets/SECONDARY | 189 + .../source/tests/scripts/targets/SILENT | 33 + .../source/tests/scripts/targets/WAIT | 193 + .../source/tests/scripts/targets/clean | 31 + .../source/tests/scripts/test_template | 29 + .../source/tests/scripts/variables/CURDIR | 16 + .../tests/scripts/variables/DEFAULT_GOAL | 87 + .../tests/scripts/variables/EXTRA_PREREQS | 151 + .../tests/scripts/variables/GNUMAKEFLAGS | 54 + .../tests/scripts/variables/INCLUDE_DIRS | 94 + .../tests/scripts/variables/LIBPATTERNS | 38 + .../source/tests/scripts/variables/MAKE | 24 + .../tests/scripts/variables/MAKECMDGOALS | 52 + .../source/tests/scripts/variables/MAKEFILES | 47 + .../source/tests/scripts/variables/MAKEFLAGS | 158 + .../source/tests/scripts/variables/MAKELEVEL | 33 + .../tests/scripts/variables/MAKE_RESTARTS | 57 + .../source/tests/scripts/variables/MFILE_LIST | 40 + .../source/tests/scripts/variables/SHELL | 110 + .../source/tests/scripts/variables/automatic | 146 + .../source/tests/scripts/variables/define | 305 + .../source/tests/scripts/variables/flavors | 200 + .../source/tests/scripts/variables/negative | 60 + .../source/tests/scripts/variables/private | 122 + .../source/tests/scripts/variables/special | 149 + .../source/tests/scripts/variables/undefine | 91 + .../gnu-make/source/tests/scripts/vms/library | 73 + .../dev/gnu-make/source/tests/test_driver.pl | 1546 ++ .../dev/gnu-make/source/tests/thelp.pl | 118 + .../source/vms_export_symbol_test.com | 37 + local/recipes/libs/freetype2/recipe.toml | 9 +- .../libs/freetype2/source/.clang-format | 16 + .../freetype2/source/.redbear-src-version | 1 + .../libs/freetype2/source/CMakeLists.txt | 722 + local/recipes/libs/freetype2/source/ChangeLog | 11795 +++++++++ .../recipes/libs/freetype2/source/LICENSE.TXT | 47 + .../recipes/libs/freetype2/source/MSBuild.rsp | 4 + .../recipes/libs/freetype2/source/MSBuild.sln | 66 + local/recipes/libs/freetype2/source/Makefile | 34 + local/recipes/libs/freetype2/source/README | 110 + .../recipes/libs/freetype2/source/README.git | 102 + .../recipes/libs/freetype2/source/autogen.sh | 199 + .../libs/freetype2/source/builds/amiga/README | 110 + .../builds/amiga/include/config/ftconfig.h | 55 + .../builds/amiga/include/config/ftmodule.h | 158 + .../freetype2/source/builds/amiga/makefile | 293 + .../source/builds/amiga/makefile.os4 | 297 + .../freetype2/source/builds/amiga/smakefile | 299 + .../source/builds/amiga/src/base/ftdebug.c | 348 + .../source/builds/amiga/src/base/ftsystem.c | 530 + .../freetype2/source/builds/ansi/ansi-def.mk | 77 + .../libs/freetype2/source/builds/ansi/ansi.mk | 21 + .../freetype2/source/builds/atari/ATARI.H | 20 + .../freetype2/source/builds/atari/FNames.SIC | 37 + .../source/builds/atari/FREETYPE.PRJ | 32 + .../freetype2/source/builds/atari/README.TXT | 51 + .../source/builds/atari/deflinejoiner.awk | 181 + .../source/builds/atari/gen-purec-patch.sh | 40 + .../freetype2/source/builds/beos/beos-def.mk | 79 + .../libs/freetype2/source/builds/beos/beos.mk | 19 + .../freetype2/source/builds/beos/detect.mk | 41 + .../source/builds/cmake/FindBrotliDec.cmake | 52 + .../source/builds/cmake/FindHarfBuzz.cmake | 203 + .../freetype2/source/builds/cmake/iOS.cmake | 270 + .../source/builds/cmake/testbuild.sh | 157 + .../source/builds/compiler/ansi-cc.mk | 80 + .../source/builds/compiler/bcc-dev.mk | 86 + .../freetype2/source/builds/compiler/bcc.mk | 86 + .../freetype2/source/builds/compiler/emx.mk | 77 + .../source/builds/compiler/gcc-dev.mk | 97 + .../freetype2/source/builds/compiler/gcc.mk | 77 + .../source/builds/compiler/intelc.mk | 85 + .../source/builds/compiler/unix-lcc.mk | 83 + .../source/builds/compiler/visualage.mk | 76 + .../source/builds/compiler/visualc.mk | 82 + .../source/builds/compiler/watcom.mk | 81 + .../source/builds/compiler/win-lcc.mk | 81 + .../libs/freetype2/source/builds/detect.mk | 128 + .../freetype2/source/builds/dos/detect.mk | 152 + .../freetype2/source/builds/dos/dos-def.mk | 48 + .../freetype2/source/builds/dos/dos-emx.mk | 21 + .../freetype2/source/builds/dos/dos-gcc.mk | 21 + .../freetype2/source/builds/dos/dos-wat.mk | 20 + .../libs/freetype2/source/builds/exports.mk | 80 + .../libs/freetype2/source/builds/freetype.mk | 385 + .../libs/freetype2/source/builds/link_dos.mk | 42 + .../libs/freetype2/source/builds/link_std.mk | 42 + .../builds/mac/FreeType.m68k_cfm.make.txt | 209 + .../builds/mac/FreeType.m68k_far.make.txt | 208 + .../builds/mac/FreeType.ppc_carbon.make.txt | 212 + .../builds/mac/FreeType.ppc_classic.make.txt | 213 + .../libs/freetype2/source/builds/mac/README | 393 + .../freetype2/source/builds/mac/ascii2mpw.py | 24 + .../source/builds/mac/freetype-Info.plist | 36 + .../freetype2/source/builds/mac/ftlib.prj.xml | 1194 + .../libs/freetype2/source/builds/mac/ftmac.c | 1542 ++ .../builds/meson/extract_freetype_version.py | 117 + .../builds/meson/extract_libtool_version.py | 115 + .../builds/meson/generate_reference_docs.py | 89 + .../source/builds/meson/parse_modules_cfg.py | 177 + .../source/builds/meson/process_ftoption_h.py | 115 + .../libs/freetype2/source/builds/modules.mk | 79 + .../freetype2/source/builds/os2/detect.mk | 81 + .../freetype2/source/builds/os2/os2-def.mk | 48 + .../freetype2/source/builds/os2/os2-dev.mk | 30 + .../freetype2/source/builds/os2/os2-gcc.mk | 26 + .../freetype2/source/builds/symbian/bld.inf | 72 + .../source/builds/symbian/freetype.mmp | 146 + .../libs/freetype2/source/builds/toplevel.mk | 319 + .../freetype2/source/builds/unix/aclocal.m4 | 9200 +++++++ .../source/builds/unix/ax_compare_version.m4 | 177 + .../builds/unix/ax_prog_python_version.m4 | 66 + .../source/builds/unix/ax_pthread.m4 | 522 + .../freetype2/source/builds/unix/config.guess | 1818 ++ .../freetype2/source/builds/unix/config.sub | 2364 ++ .../freetype2/source/builds/unix/configure | 20160 ++++++++++++++++ .../freetype2/source/builds/unix/configure.ac | 1239 + .../source/builds/unix/configure.raw | 1239 + .../freetype2/source/builds/unix/detect.mk | 99 + .../source/builds/unix/freetype-config.in | 211 + .../freetype2/source/builds/unix/freetype2.in | 14 + .../freetype2/source/builds/unix/freetype2.m4 | 194 + .../freetype2/source/builds/unix/ft-munmap.m4 | 32 + .../source/builds/unix/ftconfig.h.in | 52 + .../freetype2/source/builds/unix/ftsystem.c | 436 + .../freetype2/source/builds/unix/install-sh | 541 + .../freetype2/source/builds/unix/install.mk | 102 + .../freetype2/source/builds/unix/ltmain.sh | 11524 +++++++++ .../libs/freetype2/source/builds/unix/pkg.m4 | 199 + .../freetype2/source/builds/unix/unix-cc.in | 134 + .../freetype2/source/builds/unix/unix-def.in | 163 + .../freetype2/source/builds/unix/unix-dev.mk | 26 + .../freetype2/source/builds/unix/unix-lcc.mk | 24 + .../libs/freetype2/source/builds/unix/unix.mk | 62 + .../freetype2/source/builds/unix/unixddef.mk | 46 + .../source/builds/vms/apinames_vms.bash | 2 + .../freetype2/source/builds/vms/ftconfig.h | 58 + .../freetype2/source/builds/vms/ftsystem.c | 328 + .../source/builds/vms/patch_ftcalc.sed | 4 + .../freetype2/source/builds/wince/ftdebug.c | 353 + .../builds/wince/vc2005-ce/freetype.sln | 157 + .../builds/wince/vc2005-ce/freetype.vcproj | 878 + .../source/builds/wince/vc2005-ce/index.html | 47 + .../builds/wince/vc2008-ce/freetype.sln | 157 + .../builds/wince/vc2008-ce/freetype.vcproj | 3517 +++ .../source/builds/wince/vc2008-ce/index.html | 47 + .../freetype2/source/builds/windows/detect.mk | 202 + .../freetype2/source/builds/windows/ftdebug.c | 698 + .../source/builds/windows/ftsystem.c | 500 + .../builds/windows/vc2010/freetype.user.props | 68 + .../builds/windows/vc2010/freetype.vcxproj | 525 + .../windows/vc2010/freetype.vcxproj.filters | 149 + .../source/builds/windows/vc2010/index.html | 40 + .../builds/windows/visualc/freetype.dsp | 354 + .../builds/windows/visualc/freetype.dsw | 29 + .../builds/windows/visualc/freetype.sln | 25 + .../builds/windows/visualc/freetype.vcproj | 587 + .../source/builds/windows/visualc/index.html | 38 + .../builds/windows/visualce/freetype.dsp | 391 + .../builds/windows/visualce/freetype.dsw | 29 + .../builds/windows/visualce/freetype.vcproj | 3706 +++ .../source/builds/windows/visualce/index.html | 47 + .../source/builds/windows/w32-bcc.mk | 28 + .../source/builds/windows/w32-bccd.mk | 26 + .../source/builds/windows/w32-dev.mk | 32 + .../source/builds/windows/w32-gcc.mk | 31 + .../source/builds/windows/w32-icc.mk | 28 + .../source/builds/windows/w32-intl.mk | 28 + .../source/builds/windows/w32-lcc.mk | 24 + .../source/builds/windows/w32-mingw32.mk | 33 + .../source/builds/windows/w32-vcc.mk | 28 + .../source/builds/windows/w32-wat.mk | 28 + .../source/builds/windows/win32-def.mk | 51 + local/recipes/libs/freetype2/source/configure | 137 + .../libs/freetype2/source/devel/ft2build.h | 41 + .../libs/freetype2/source/devel/ftoption.h | 1061 + .../libs/freetype2/source/docs/CHANGES | 5902 +++++ .../recipes/libs/freetype2/source/docs/CMAKE | 2 + .../libs/freetype2/source/docs/CUSTOMIZE | 152 + .../recipes/libs/freetype2/source/docs/DEBUG | 310 + .../libs/freetype2/source/docs/DOCGUIDE | 298 + .../libs/freetype2/source/docs/FTL.TXT | 169 + .../libs/freetype2/source/docs/GPLv2.TXT | 340 + .../libs/freetype2/source/docs/INSTALL | 114 + .../libs/freetype2/source/docs/INSTALL.ANY | 157 + .../libs/freetype2/source/docs/INSTALL.CROSS | 177 + .../libs/freetype2/source/docs/INSTALL.GNU | 181 + .../libs/freetype2/source/docs/INSTALL.MAC | 32 + .../libs/freetype2/source/docs/INSTALL.UNIX | 139 + .../libs/freetype2/source/docs/INSTALL.VMS | 69 + .../recipes/libs/freetype2/source/docs/MAKEPP | 5 + .../libs/freetype2/source/docs/PROBLEMS | 90 + .../recipes/libs/freetype2/source/docs/README | 33 + local/recipes/libs/freetype2/source/docs/TODO | 40 + .../libs/freetype2/source/docs/VERSIONS.TXT | 142 + .../libs/freetype2/source/docs/formats.txt | 227 + .../freetype2/source/docs/freetype-config.1 | 146 + .../freetype2/source/docs/freetype-web.txt | 42 + .../source/docs/oldlogs/ChangeLog.20 | 2613 ++ .../source/docs/oldlogs/ChangeLog.21 | 9438 ++++++++ .../source/docs/oldlogs/ChangeLog.210 | 7815 ++++++ .../source/docs/oldlogs/ChangeLog.22 | 2837 +++ .../source/docs/oldlogs/ChangeLog.23 | 7948 ++++++ .../source/docs/oldlogs/ChangeLog.24 | 6360 +++++ .../source/docs/oldlogs/ChangeLog.25 | 5161 ++++ .../source/docs/oldlogs/ChangeLog.26 | 5711 +++++ .../source/docs/oldlogs/ChangeLog.27 | 2106 ++ .../source/docs/oldlogs/ChangeLog.28 | 3136 +++ .../source/docs/oldlogs/ChangeLog.29 | 2352 ++ .../libs/freetype2/source/docs/raster.txt | 635 + .../freetype2/source/docs/reference/404.html | 1993 ++ .../docs/reference/assets/images/favicon.png | Bin 0 -> 1870 bytes .../assets/javascripts/bundle.c8b220af.min.js | 16 + .../javascripts/bundle.c8b220af.min.js.map | 7 + .../javascripts/lunr/min/lunr.ar.min.js | 1 + .../javascripts/lunr/min/lunr.da.min.js | 18 + .../javascripts/lunr/min/lunr.de.min.js | 18 + .../javascripts/lunr/min/lunr.du.min.js | 18 + .../javascripts/lunr/min/lunr.el.min.js | 1 + .../javascripts/lunr/min/lunr.es.min.js | 18 + .../javascripts/lunr/min/lunr.fi.min.js | 18 + .../javascripts/lunr/min/lunr.fr.min.js | 18 + .../javascripts/lunr/min/lunr.he.min.js | 1 + .../javascripts/lunr/min/lunr.hi.min.js | 1 + .../javascripts/lunr/min/lunr.hu.min.js | 18 + .../javascripts/lunr/min/lunr.hy.min.js | 1 + .../javascripts/lunr/min/lunr.it.min.js | 18 + .../javascripts/lunr/min/lunr.ja.min.js | 1 + .../javascripts/lunr/min/lunr.jp.min.js | 1 + .../javascripts/lunr/min/lunr.kn.min.js | 1 + .../javascripts/lunr/min/lunr.ko.min.js | 1 + .../javascripts/lunr/min/lunr.multi.min.js | 1 + .../javascripts/lunr/min/lunr.nl.min.js | 18 + .../javascripts/lunr/min/lunr.no.min.js | 18 + .../javascripts/lunr/min/lunr.pt.min.js | 18 + .../javascripts/lunr/min/lunr.ro.min.js | 18 + .../javascripts/lunr/min/lunr.ru.min.js | 18 + .../javascripts/lunr/min/lunr.sa.min.js | 1 + .../lunr/min/lunr.stemmer.support.min.js | 1 + .../javascripts/lunr/min/lunr.sv.min.js | 18 + .../javascripts/lunr/min/lunr.ta.min.js | 1 + .../javascripts/lunr/min/lunr.te.min.js | 1 + .../javascripts/lunr/min/lunr.th.min.js | 1 + .../javascripts/lunr/min/lunr.tr.min.js | 18 + .../javascripts/lunr/min/lunr.vi.min.js | 1 + .../javascripts/lunr/min/lunr.zh.min.js | 1 + .../assets/javascripts/lunr/tinyseg.js | 206 + .../assets/javascripts/lunr/wordcut.js | 6708 +++++ .../workers/search.f8cc74c7.min.js | 42 + .../workers/search.f8cc74c7.min.js.map | 7 + .../assets/stylesheets/main.4af4bdda.min.css | 1 + .../stylesheets/main.4af4bdda.min.css.map | 1 + .../stylesheets/palette.06af60db.min.css | 1 + .../stylesheets/palette.06af60db.min.css.map | 1 + .../docs/reference/ft2-auto_hinter.html | 2097 ++ .../docs/reference/ft2-basic_types.html | 3395 +++ .../source/docs/reference/ft2-bdf_fonts.html | 2329 ++ .../docs/reference/ft2-bitmap_handling.html | 2461 ++ .../source/docs/reference/ft2-bzip2.html | 2142 ++ .../docs/reference/ft2-cache_subsystem.html | 3377 +++ .../source/docs/reference/ft2-cff_driver.html | 2105 ++ .../docs/reference/ft2-character_mapping.html | 2719 +++ .../source/docs/reference/ft2-cid_fonts.html | 2259 ++ .../docs/reference/ft2-color_management.html | 2412 ++ .../docs/reference/ft2-computations.html | 3015 +++ .../docs/reference/ft2-debugging_apis.html | 2285 ++ .../docs/reference/ft2-error_code_values.html | 2341 ++ .../reference/ft2-error_enumerations.html | 2174 ++ .../docs/reference/ft2-face_creation.html | 3146 +++ .../docs/reference/ft2-font_formats.html | 2140 ++ .../reference/ft2-font_testing_macros.html | 2629 ++ .../source/docs/reference/ft2-gasp_table.html | 2197 ++ .../docs/reference/ft2-glyph_management.html | 2909 +++ .../docs/reference/ft2-glyph_retrieval.html | 2978 +++ .../docs/reference/ft2-glyph_stroker.html | 3093 +++ .../docs/reference/ft2-glyph_variants.html | 2341 ++ .../docs/reference/ft2-gx_validation.html | 2437 ++ .../source/docs/reference/ft2-gzip.html | 2209 ++ .../reference/ft2-header_file_macros.html | 3375 +++ .../docs/reference/ft2-header_inclusion.html | 2100 ++ .../docs/reference/ft2-incremental.html | 2475 ++ .../source/docs/reference/ft2-index.html | 3215 +++ .../reference/ft2-information_retrieval.html | 2469 ++ .../docs/reference/ft2-layer_management.html | 3772 +++ .../docs/reference/ft2-lcd_rendering.html | 2362 ++ .../docs/reference/ft2-library_setup.html | 2304 ++ .../docs/reference/ft2-list_processing.html | 2603 ++ .../source/docs/reference/ft2-lzw.html | 2142 ++ .../docs/reference/ft2-mac_specific.html | 2434 ++ .../docs/reference/ft2-module_management.html | 3197 +++ .../docs/reference/ft2-multiple_masters.html | 3180 +++ .../docs/reference/ft2-ot_svg_driver.html | 2096 ++ .../docs/reference/ft2-ot_validation.html | 2265 ++ .../docs/reference/ft2-other_api_data.html | 2319 ++ .../reference/ft2-outline_processing.html | 3247 +++ .../docs/reference/ft2-parameter_tags.html | 2329 ++ .../source/docs/reference/ft2-pcf_driver.html | 2096 ++ .../source/docs/reference/ft2-pfr_fonts.html | 2263 ++ .../source/docs/reference/ft2-preamble.html | 2097 ++ .../source/docs/reference/ft2-properties.html | 2980 +++ .../docs/reference/ft2-quick_advance.html | 2244 ++ .../source/docs/reference/ft2-raster.html | 2696 +++ .../source/docs/reference/ft2-sfnt_names.html | 2357 ++ .../docs/reference/ft2-sizes_management.html | 2223 ++ .../reference/ft2-sizing_and_scaling.html | 2793 +++ .../source/docs/reference/ft2-svg_fonts.html | 2450 ++ .../docs/reference/ft2-system_interface.html | 2518 ++ .../docs/reference/ft2-t1_cid_driver.html | 2099 ++ .../docs/reference/ft2-truetype_engine.html | 2182 ++ .../docs/reference/ft2-truetype_tables.html | 4176 ++++ .../source/docs/reference/ft2-tt_driver.html | 2111 ++ .../docs/reference/ft2-type1_tables.html | 3120 +++ .../docs/reference/ft2-user_allocation.html | 2095 ++ .../docs/reference/ft2-winfnt_fonts.html | 2344 ++ .../source/docs/reference/images/favico.ico | Bin 0 -> 5430 bytes .../source/docs/reference/index.html | 2240 ++ .../docs/reference/javascripts/extra.js | 54 + .../docs/reference/search/search_index.json | 1 + .../source/docs/reference/sitemap.xml | 247 + .../source/docs/reference/sitemap.xml.gz | Bin 0 -> 699 bytes .../docs/reference/stylesheets/extra.css | 177 + .../libs/freetype2/source/docs/release | 241 + .../libs/freetype2/source/include/dlg/dlg.h | 290 + .../freetype2/source/include/dlg/output.h | 172 + .../source/include/freetype/config/ftconfig.h | 51 + .../source/include/freetype/config/ftheader.h | 836 + .../source/include/freetype/config/ftmodule.h | 33 + .../source/include/freetype/config/ftoption.h | 1061 + .../source/include/freetype/config/ftstdlib.h | 185 + .../include/freetype/config/integer-types.h | 277 + .../include/freetype/config/mac-support.h | 51 + .../include/freetype/config/public-macros.h | 138 + .../source/include/freetype/freetype.h | 5284 ++++ .../source/include/freetype/ftadvanc.h | 188 + .../source/include/freetype/ftbbox.h | 101 + .../freetype2/source/include/freetype/ftbdf.h | 218 + .../source/include/freetype/ftbitmap.h | 329 + .../source/include/freetype/ftbzip2.h | 102 + .../source/include/freetype/ftcache.h | 1087 + .../source/include/freetype/ftchapters.h | 168 + .../freetype2/source/include/freetype/ftcid.h | 167 + .../source/include/freetype/ftcolor.h | 1676 ++ .../source/include/freetype/ftdriver.h | 1320 + .../source/include/freetype/fterrdef.h | 283 + .../source/include/freetype/fterrors.h | 296 + .../source/include/freetype/ftfntfmt.h | 93 + .../source/include/freetype/ftgasp.h | 143 + .../source/include/freetype/ftglyph.h | 750 + .../source/include/freetype/ftgxval.h | 354 + .../source/include/freetype/ftgzip.h | 151 + .../source/include/freetype/ftimage.h | 1293 + .../source/include/freetype/ftincrem.h | 348 + .../source/include/freetype/ftlcdfil.h | 317 + .../source/include/freetype/ftlist.h | 296 + .../source/include/freetype/ftlogging.h | 184 + .../freetype2/source/include/freetype/ftlzw.h | 100 + .../freetype2/source/include/freetype/ftmac.h | 289 + .../freetype2/source/include/freetype/ftmm.h | 890 + .../source/include/freetype/ftmodapi.h | 807 + .../source/include/freetype/ftmoderr.h | 204 + .../source/include/freetype/ftotval.h | 206 + .../source/include/freetype/ftoutln.h | 588 + .../source/include/freetype/ftparams.h | 215 + .../freetype2/source/include/freetype/ftpfr.h | 179 + .../source/include/freetype/ftrender.h | 244 + .../source/include/freetype/ftsizes.h | 159 + .../source/include/freetype/ftsnames.h | 272 + .../source/include/freetype/ftstroke.h | 773 + .../source/include/freetype/ftsynth.h | 104 + .../source/include/freetype/ftsystem.h | 350 + .../source/include/freetype/fttrigon.h | 350 + .../source/include/freetype/fttypes.h | 617 + .../source/include/freetype/ftwinfnt.h | 275 + .../include/freetype/internal/autohint.h | 234 + .../include/freetype/internal/cffotypes.h | 107 + .../include/freetype/internal/cfftypes.h | 416 + .../freetype/internal/compiler-macros.h | 343 + .../source/include/freetype/internal/ftcalc.h | 476 + .../include/freetype/internal/ftdebug.h | 442 + .../source/include/freetype/internal/ftdrv.h | 289 + .../include/freetype/internal/ftgloadr.h | 147 + .../source/include/freetype/internal/fthash.h | 158 + .../include/freetype/internal/ftmemory.h | 401 + .../include/freetype/internal/ftmmtypes.h | 91 + .../source/include/freetype/internal/ftobjs.h | 1228 + .../include/freetype/internal/ftpsprop.h | 47 + .../include/freetype/internal/ftrfork.h | 245 + .../source/include/freetype/internal/ftserv.h | 495 + .../include/freetype/internal/ftstream.h | 570 + .../include/freetype/internal/fttrace.h | 174 + .../include/freetype/internal/ftvalid.h | 160 + .../source/include/freetype/internal/psaux.h | 1447 ++ .../include/freetype/internal/pshints.h | 699 + .../freetype/internal/services/svbdf.h | 66 + .../freetype/internal/services/svcfftl.h | 90 + .../freetype/internal/services/svcid.h | 69 + .../freetype/internal/services/svfntfmt.h | 55 + .../freetype/internal/services/svgldict.h | 72 + .../freetype/internal/services/svgxval.h | 72 + .../freetype/internal/services/svkern.h | 51 + .../freetype/internal/services/svmetric.h | 131 + .../include/freetype/internal/services/svmm.h | 214 + .../freetype/internal/services/svotval.h | 55 + .../freetype/internal/services/svpfr.h | 65 + .../freetype/internal/services/svpostnm.h | 65 + .../freetype/internal/services/svprop.h | 66 + .../freetype/internal/services/svpscmap.h | 145 + .../freetype/internal/services/svpsinfo.h | 86 + .../freetype/internal/services/svsfnt.h | 88 + .../freetype/internal/services/svttcmap.h | 90 + .../freetype/internal/services/svtteng.h | 53 + .../freetype/internal/services/svttglyf.h | 56 + .../freetype/internal/services/svwinfnt.h | 50 + .../source/include/freetype/internal/sfnt.h | 1099 + .../include/freetype/internal/svginterface.h | 46 + .../include/freetype/internal/t1types.h | 307 + .../include/freetype/internal/tttypes.h | 1730 ++ .../include/freetype/internal/wofftypes.h | 312 + .../freetype2/source/include/freetype/otsvg.h | 336 + .../source/include/freetype/t1tables.h | 735 + .../source/include/freetype/ttnameid.h | 1235 + .../source/include/freetype/tttables.h | 859 + .../source/include/freetype/tttags.h | 124 + .../libs/freetype2/source/include/ft2build.h | 42 + .../recipes/libs/freetype2/source/meson.build | 529 + .../libs/freetype2/source/meson_options.txt | 61 + .../recipes/libs/freetype2/source/modules.cfg | 253 + .../recipes/libs/freetype2/source/objs/README | 2 + .../freetype2/source/src/autofit/afadjust.c | 1621 ++ .../freetype2/source/src/autofit/afadjust.h | 130 + .../freetype2/source/src/autofit/afblue.c | 779 + .../freetype2/source/src/autofit/afblue.cin | 39 + .../freetype2/source/src/autofit/afblue.dat | 1121 + .../freetype2/source/src/autofit/afblue.h | 432 + .../freetype2/source/src/autofit/afblue.hin | 149 + .../libs/freetype2/source/src/autofit/afcjk.c | 2370 ++ .../libs/freetype2/source/src/autofit/afcjk.h | 141 + .../freetype2/source/src/autofit/afcover.h | 105 + .../freetype2/source/src/autofit/afdummy.c | 77 + .../freetype2/source/src/autofit/afdummy.h | 40 + .../freetype2/source/src/autofit/aferrors.h | 42 + .../freetype2/source/src/autofit/afglobal.c | 537 + .../freetype2/source/src/autofit/afglobal.h | 182 + .../freetype2/source/src/autofit/afgsub.c | 696 + .../freetype2/source/src/autofit/afgsub.h | 38 + .../freetype2/source/src/autofit/afhints.c | 1811 ++ .../freetype2/source/src/autofit/afhints.h | 476 + .../freetype2/source/src/autofit/afindic.c | 157 + .../freetype2/source/src/autofit/afindic.h | 41 + .../freetype2/source/src/autofit/aflatin.c | 5102 ++++ .../freetype2/source/src/autofit/aflatin.h | 203 + .../freetype2/source/src/autofit/afloader.c | 708 + .../freetype2/source/src/autofit/afloader.h | 91 + .../freetype2/source/src/autofit/afmodule.c | 537 + .../freetype2/source/src/autofit/afmodule.h | 61 + .../freetype2/source/src/autofit/afranges.c | 1101 + .../freetype2/source/src/autofit/afranges.h | 47 + .../freetype2/source/src/autofit/afscript.h | 408 + .../freetype2/source/src/autofit/afshaper.c | 780 + .../freetype2/source/src/autofit/afshaper.h | 68 + .../freetype2/source/src/autofit/afstyles.h | 487 + .../freetype2/source/src/autofit/aftypes.h | 515 + .../freetype2/source/src/autofit/afws-decl.h | 33 + .../freetype2/source/src/autofit/afws-iter.h | 31 + .../freetype2/source/src/autofit/autofit.c | 38 + .../source/src/autofit/ft-hb-decls.h | 203 + .../freetype2/source/src/autofit/ft-hb-ft.c | 117 + .../freetype2/source/src/autofit/ft-hb-ft.h | 46 + .../source/src/autofit/ft-hb-types.h | 129 + .../libs/freetype2/source/src/autofit/ft-hb.c | 197 + .../libs/freetype2/source/src/autofit/ft-hb.h | 82 + .../source/src/autofit/hb-script-list.h | 484 + .../freetype2/source/src/autofit/module.mk | 23 + .../freetype2/source/src/autofit/rules.mk | 92 + .../libs/freetype2/source/src/base/ftadvanc.c | 194 + .../libs/freetype2/source/src/base/ftbase.c | 41 + .../libs/freetype2/source/src/base/ftbase.h | 82 + .../libs/freetype2/source/src/base/ftbbox.c | 542 + .../libs/freetype2/source/src/base/ftbdf.c | 90 + .../libs/freetype2/source/src/base/ftbitmap.c | 1130 + .../libs/freetype2/source/src/base/ftcalc.c | 1048 + .../libs/freetype2/source/src/base/ftcid.c | 117 + .../libs/freetype2/source/src/base/ftcolor.c | 157 + .../libs/freetype2/source/src/base/ftdbgmem.c | 970 + .../libs/freetype2/source/src/base/ftdebug.c | 644 + .../libs/freetype2/source/src/base/fterrors.c | 45 + .../libs/freetype2/source/src/base/ftfntfmt.c | 54 + .../libs/freetype2/source/src/base/ftfstype.c | 61 + .../libs/freetype2/source/src/base/ftgasp.c | 60 + .../libs/freetype2/source/src/base/ftgloadr.c | 383 + .../libs/freetype2/source/src/base/ftglyph.c | 902 + .../libs/freetype2/source/src/base/ftgxval.c | 141 + .../libs/freetype2/source/src/base/fthash.c | 434 + .../libs/freetype2/source/src/base/ftinit.c | 263 + .../libs/freetype2/source/src/base/ftlcdfil.c | 190 + .../libs/freetype2/source/src/base/ftmac.c | 1099 + .../libs/freetype2/source/src/base/ftmm.c | 719 + .../libs/freetype2/source/src/base/ftobjs.c | 5900 +++++ .../libs/freetype2/source/src/base/ftotval.c | 90 + .../libs/freetype2/source/src/base/ftoutln.c | 1120 + .../libs/freetype2/source/src/base/ftpatent.c | 50 + .../libs/freetype2/source/src/base/ftpfr.c | 152 + .../libs/freetype2/source/src/base/ftpsprop.c | 284 + .../libs/freetype2/source/src/base/ftrfork.c | 928 + .../libs/freetype2/source/src/base/ftsnames.c | 185 + .../libs/freetype2/source/src/base/ftstream.c | 872 + .../libs/freetype2/source/src/base/ftstroke.c | 2410 ++ .../libs/freetype2/source/src/base/ftsynth.c | 180 + .../libs/freetype2/source/src/base/ftsystem.c | 338 + .../libs/freetype2/source/src/base/fttrigon.c | 517 + .../libs/freetype2/source/src/base/fttype1.c | 126 + .../libs/freetype2/source/src/base/ftutil.c | 441 + .../libs/freetype2/source/src/base/ftver.rc | 61 + .../libs/freetype2/source/src/base/ftwinfnt.c | 52 + .../libs/freetype2/source/src/base/md5.c | 291 + .../libs/freetype2/source/src/base/md5.h | 45 + .../libs/freetype2/source/src/base/rules.mk | 108 + .../libs/freetype2/source/src/bdf/README | 152 + .../libs/freetype2/source/src/bdf/bdf.c | 34 + .../libs/freetype2/source/src/bdf/bdf.h | 224 + .../libs/freetype2/source/src/bdf/bdfdrivr.c | 1027 + .../libs/freetype2/source/src/bdf/bdfdrivr.h | 72 + .../libs/freetype2/source/src/bdf/bdferror.h | 45 + .../libs/freetype2/source/src/bdf/bdflib.c | 1778 ++ .../libs/freetype2/source/src/bdf/module.mk | 34 + .../libs/freetype2/source/src/bdf/rules.mk | 84 + .../libs/freetype2/source/src/bzip2/ftbzip2.c | 535 + .../libs/freetype2/source/src/bzip2/rules.mk | 64 + .../libs/freetype2/source/src/cache/ftcache.c | 31 + .../freetype2/source/src/cache/ftcbasic.c | 598 + .../freetype2/source/src/cache/ftccache.c | 584 + .../freetype2/source/src/cache/ftccache.h | 359 + .../freetype2/source/src/cache/ftccback.h | 85 + .../libs/freetype2/source/src/cache/ftccmap.c | 323 + .../freetype2/source/src/cache/ftcerror.h | 42 + .../freetype2/source/src/cache/ftcglyph.c | 204 + .../freetype2/source/src/cache/ftcglyph.h | 314 + .../freetype2/source/src/cache/ftcimage.c | 158 + .../freetype2/source/src/cache/ftcimage.h | 106 + .../freetype2/source/src/cache/ftcmanag.c | 677 + .../freetype2/source/src/cache/ftcmanag.h | 175 + .../libs/freetype2/source/src/cache/ftcmru.c | 341 + .../libs/freetype2/source/src/cache/ftcmru.h | 242 + .../freetype2/source/src/cache/ftcsbits.c | 413 + .../freetype2/source/src/cache/ftcsbits.h | 91 + .../libs/freetype2/source/src/cache/rules.mk | 85 + .../libs/freetype2/source/src/cff/cff.c | 28 + .../libs/freetype2/source/src/cff/cffcmap.c | 230 + .../libs/freetype2/source/src/cff/cffcmap.h | 67 + .../libs/freetype2/source/src/cff/cffdrivr.c | 1223 + .../libs/freetype2/source/src/cff/cffdrivr.h | 35 + .../libs/freetype2/source/src/cff/cfferrs.h | 42 + .../libs/freetype2/source/src/cff/cffgload.c | 750 + .../libs/freetype2/source/src/cff/cffgload.h | 62 + .../libs/freetype2/source/src/cff/cffload.c | 2570 ++ .../libs/freetype2/source/src/cff/cffload.h | 124 + .../libs/freetype2/source/src/cff/cffobjs.c | 1175 + .../libs/freetype2/source/src/cff/cffobjs.h | 82 + .../libs/freetype2/source/src/cff/cffparse.c | 1550 ++ .../libs/freetype2/source/src/cff/cffparse.h | 144 + .../libs/freetype2/source/src/cff/cfftoken.h | 150 + .../libs/freetype2/source/src/cff/module.mk | 23 + .../libs/freetype2/source/src/cff/rules.mk | 75 + .../libs/freetype2/source/src/cid/ciderrs.h | 41 + .../libs/freetype2/source/src/cid/cidgload.c | 643 + .../libs/freetype2/source/src/cid/cidgload.h | 58 + .../libs/freetype2/source/src/cid/cidload.c | 937 + .../libs/freetype2/source/src/cid/cidload.h | 52 + .../libs/freetype2/source/src/cid/cidobjs.c | 543 + .../libs/freetype2/source/src/cid/cidobjs.h | 154 + .../libs/freetype2/source/src/cid/cidparse.c | 311 + .../libs/freetype2/source/src/cid/cidparse.h | 130 + .../libs/freetype2/source/src/cid/cidriver.c | 274 + .../libs/freetype2/source/src/cid/cidriver.h | 36 + .../libs/freetype2/source/src/cid/cidtoken.h | 115 + .../libs/freetype2/source/src/cid/module.mk | 23 + .../libs/freetype2/source/src/cid/rules.mk | 73 + .../libs/freetype2/source/src/cid/type1cid.c | 28 + .../libs/freetype2/source/src/dlg/dlg.c | 803 + .../libs/freetype2/source/src/dlg/dlgwrap.c | 32 + .../libs/freetype2/source/src/dlg/rules.mk | 70 + .../libs/freetype2/source/src/gxvalid/README | 532 + .../freetype2/source/src/gxvalid/gxvalid.c | 46 + .../freetype2/source/src/gxvalid/gxvalid.h | 107 + .../freetype2/source/src/gxvalid/gxvbsln.c | 334 + .../freetype2/source/src/gxvalid/gxvcommn.c | 1747 ++ .../freetype2/source/src/gxvalid/gxvcommn.h | 581 + .../freetype2/source/src/gxvalid/gxverror.h | 51 + .../freetype2/source/src/gxvalid/gxvfeat.c | 339 + .../freetype2/source/src/gxvalid/gxvfeat.h | 173 + .../freetype2/source/src/gxvalid/gxvfgen.c | 484 + .../freetype2/source/src/gxvalid/gxvjust.c | 721 + .../freetype2/source/src/gxvalid/gxvkern.c | 920 + .../freetype2/source/src/gxvalid/gxvlcar.c | 224 + .../freetype2/source/src/gxvalid/gxvmod.c | 288 + .../freetype2/source/src/gxvalid/gxvmod.h | 46 + .../freetype2/source/src/gxvalid/gxvmort.c | 301 + .../freetype2/source/src/gxvalid/gxvmort.h | 99 + .../freetype2/source/src/gxvalid/gxvmort0.c | 152 + .../freetype2/source/src/gxvalid/gxvmort1.c | 260 + .../freetype2/source/src/gxvalid/gxvmort2.c | 312 + .../freetype2/source/src/gxvalid/gxvmort4.c | 126 + .../freetype2/source/src/gxvalid/gxvmort5.c | 234 + .../freetype2/source/src/gxvalid/gxvmorx.c | 199 + .../freetype2/source/src/gxvalid/gxvmorx.h | 73 + .../freetype2/source/src/gxvalid/gxvmorx0.c | 112 + .../freetype2/source/src/gxvalid/gxvmorx1.c | 278 + .../freetype2/source/src/gxvalid/gxvmorx2.c | 331 + .../freetype2/source/src/gxvalid/gxvmorx4.c | 56 + .../freetype2/source/src/gxvalid/gxvmorx5.c | 226 + .../freetype2/source/src/gxvalid/gxvopbd.c | 218 + .../freetype2/source/src/gxvalid/gxvprop.c | 330 + .../freetype2/source/src/gxvalid/gxvtrak.c | 288 + .../freetype2/source/src/gxvalid/module.mk | 23 + .../freetype2/source/src/gxvalid/rules.mk | 98 + .../freetype2/source/src/gzip/README.freetype | 22 + .../libs/freetype2/source/src/gzip/adler32.c | 168 + .../libs/freetype2/source/src/gzip/crc32.c | 1061 + .../libs/freetype2/source/src/gzip/crc32.h | 9446 ++++++++ .../libs/freetype2/source/src/gzip/ftgzip.c | 805 + .../libs/freetype2/source/src/gzip/ftzconf.h | 543 + .../libs/freetype2/source/src/gzip/gzguts.h | 214 + .../libs/freetype2/source/src/gzip/inffast.c | 320 + .../libs/freetype2/source/src/gzip/inffast.h | 11 + .../libs/freetype2/source/src/gzip/inffixed.h | 94 + .../libs/freetype2/source/src/gzip/inflate.c | 1534 ++ .../libs/freetype2/source/src/gzip/inflate.h | 131 + .../libs/freetype2/source/src/gzip/inftrees.c | 299 + .../libs/freetype2/source/src/gzip/inftrees.h | 67 + .../src/gzip/patches/freetype-zlib.diff | 451 + .../libs/freetype2/source/src/gzip/rules.mk | 81 + .../libs/freetype2/source/src/gzip/zlib.h | 1972 ++ .../libs/freetype2/source/src/gzip/zutil.c | 305 + .../libs/freetype2/source/src/gzip/zutil.h | 260 + .../libs/freetype2/source/src/lzw/ftlzw.c | 415 + .../libs/freetype2/source/src/lzw/ftzopen.c | 429 + .../libs/freetype2/source/src/lzw/ftzopen.h | 174 + .../libs/freetype2/source/src/lzw/rules.mk | 72 + .../freetype2/source/src/otvalid/module.mk | 23 + .../freetype2/source/src/otvalid/otvalid.c | 31 + .../freetype2/source/src/otvalid/otvalid.h | 77 + .../freetype2/source/src/otvalid/otvbase.c | 345 + .../freetype2/source/src/otvalid/otvcommn.c | 1099 + .../freetype2/source/src/otvalid/otvcommn.h | 468 + .../freetype2/source/src/otvalid/otverror.h | 42 + .../freetype2/source/src/otvalid/otvgdef.c | 303 + .../freetype2/source/src/otvalid/otvgpos.c | 1051 + .../freetype2/source/src/otvalid/otvgpos.h | 36 + .../freetype2/source/src/otvalid/otvgsub.c | 627 + .../freetype2/source/src/otvalid/otvjstf.c | 259 + .../freetype2/source/src/otvalid/otvmath.c | 453 + .../freetype2/source/src/otvalid/otvmod.c | 281 + .../freetype2/source/src/otvalid/otvmod.h | 38 + .../freetype2/source/src/otvalid/rules.mk | 81 + .../libs/freetype2/source/src/pcf/README | 96 + .../libs/freetype2/source/src/pcf/module.mk | 34 + .../libs/freetype2/source/src/pcf/pcf.c | 35 + .../libs/freetype2/source/src/pcf/pcf.h | 251 + .../libs/freetype2/source/src/pcf/pcfdrivr.c | 838 + .../libs/freetype2/source/src/pcf/pcfdrivr.h | 44 + .../libs/freetype2/source/src/pcf/pcferror.h | 41 + .../libs/freetype2/source/src/pcf/pcfread.c | 1731 ++ .../libs/freetype2/source/src/pcf/pcfread.h | 44 + .../libs/freetype2/source/src/pcf/pcfutil.c | 119 + .../libs/freetype2/source/src/pcf/pcfutil.h | 55 + .../libs/freetype2/source/src/pcf/rules.mk | 82 + .../libs/freetype2/source/src/pfr/module.mk | 23 + .../libs/freetype2/source/src/pfr/pfr.c | 29 + .../libs/freetype2/source/src/pfr/pfrcmap.c | 188 + .../libs/freetype2/source/src/pfr/pfrcmap.h | 45 + .../libs/freetype2/source/src/pfr/pfrdrivr.c | 212 + .../libs/freetype2/source/src/pfr/pfrdrivr.h | 36 + .../libs/freetype2/source/src/pfr/pfrerror.h | 41 + .../libs/freetype2/source/src/pfr/pfrgload.c | 849 + .../libs/freetype2/source/src/pfr/pfrgload.h | 49 + .../libs/freetype2/source/src/pfr/pfrload.c | 1062 + .../libs/freetype2/source/src/pfr/pfrload.h | 123 + .../libs/freetype2/source/src/pfr/pfrobjs.c | 599 + .../libs/freetype2/source/src/pfr/pfrobjs.h | 96 + .../libs/freetype2/source/src/pfr/pfrsbit.c | 808 + .../libs/freetype2/source/src/pfr/pfrsbit.h | 37 + .../libs/freetype2/source/src/pfr/pfrtypes.h | 331 + .../libs/freetype2/source/src/pfr/rules.mk | 76 + .../freetype2/source/src/psaux/afmparse.c | 1094 + .../freetype2/source/src/psaux/afmparse.h | 88 + .../freetype2/source/src/psaux/cffdecode.c | 2411 ++ .../freetype2/source/src/psaux/cffdecode.h | 63 + .../libs/freetype2/source/src/psaux/module.mk | 23 + .../libs/freetype2/source/src/psaux/psarrst.c | 240 + .../libs/freetype2/source/src/psaux/psarrst.h | 99 + .../libs/freetype2/source/src/psaux/psaux.c | 40 + .../freetype2/source/src/psaux/psauxerr.h | 42 + .../freetype2/source/src/psaux/psauxmod.c | 190 + .../freetype2/source/src/psaux/psauxmod.h | 57 + .../libs/freetype2/source/src/psaux/psblues.c | 571 + .../libs/freetype2/source/src/psaux/psblues.h | 185 + .../libs/freetype2/source/src/psaux/psconv.c | 610 + .../libs/freetype2/source/src/psaux/psconv.h | 70 + .../libs/freetype2/source/src/psaux/pserror.c | 52 + .../libs/freetype2/source/src/psaux/pserror.h | 120 + .../libs/freetype2/source/src/psaux/psfixed.h | 94 + .../libs/freetype2/source/src/psaux/psfont.c | 566 + .../libs/freetype2/source/src/psaux/psfont.h | 134 + .../libs/freetype2/source/src/psaux/psft.c | 895 + .../libs/freetype2/source/src/psaux/psft.h | 167 + .../libs/freetype2/source/src/psaux/psglue.h | 144 + .../libs/freetype2/source/src/psaux/pshints.c | 1952 ++ .../libs/freetype2/source/src/psaux/pshints.h | 288 + .../libs/freetype2/source/src/psaux/psintrp.c | 3050 +++ .../libs/freetype2/source/src/psaux/psintrp.h | 83 + .../libs/freetype2/source/src/psaux/psobjs.c | 2563 ++ .../libs/freetype2/source/src/psaux/psobjs.h | 312 + .../libs/freetype2/source/src/psaux/psread.c | 112 + .../libs/freetype2/source/src/psaux/psread.h | 68 + .../libs/freetype2/source/src/psaux/psstack.c | 329 + .../libs/freetype2/source/src/psaux/psstack.h | 122 + .../libs/freetype2/source/src/psaux/pstypes.h | 77 + .../libs/freetype2/source/src/psaux/rules.mk | 89 + .../libs/freetype2/source/src/psaux/t1cmap.c | 393 + .../libs/freetype2/source/src/psaux/t1cmap.h | 104 + .../freetype2/source/src/psaux/t1decode.c | 2172 ++ .../freetype2/source/src/psaux/t1decode.h | 73 + .../freetype2/source/src/pshinter/module.mk | 23 + .../freetype2/source/src/pshinter/pshalgo.c | 1995 ++ .../freetype2/source/src/pshinter/pshalgo.h | 233 + .../freetype2/source/src/pshinter/pshglob.c | 783 + .../freetype2/source/src/pshinter/pshglob.h | 196 + .../freetype2/source/src/pshinter/pshinter.c | 27 + .../freetype2/source/src/pshinter/pshmod.c | 125 + .../freetype2/source/src/pshinter/pshmod.h | 38 + .../freetype2/source/src/pshinter/pshnterr.h | 41 + .../freetype2/source/src/pshinter/pshrec.c | 1224 + .../freetype2/source/src/pshinter/pshrec.h | 171 + .../freetype2/source/src/pshinter/rules.mk | 75 + .../freetype2/source/src/psnames/module.mk | 23 + .../freetype2/source/src/psnames/psmodule.c | 621 + .../freetype2/source/src/psnames/psmodule.h | 37 + .../freetype2/source/src/psnames/psnamerr.h | 42 + .../freetype2/source/src/psnames/psnames.c | 24 + .../freetype2/source/src/psnames/pstables.h | 4238 ++++ .../freetype2/source/src/psnames/rules.mk | 73 + .../libs/freetype2/source/src/raster/ftmisc.h | 118 + .../freetype2/source/src/raster/ftraster.c | 2732 +++ .../freetype2/source/src/raster/ftraster.h | 47 + .../freetype2/source/src/raster/ftrend1.c | 209 + .../freetype2/source/src/raster/ftrend1.h | 37 + .../freetype2/source/src/raster/module.mk | 23 + .../libs/freetype2/source/src/raster/raster.c | 25 + .../freetype2/source/src/raster/rasterrs.h | 42 + .../libs/freetype2/source/src/raster/rules.mk | 72 + .../libs/freetype2/source/src/sdf/ftbsdf.c | 1363 ++ .../libs/freetype2/source/src/sdf/ftsdf.c | 3933 +++ .../libs/freetype2/source/src/sdf/ftsdf.h | 97 + .../freetype2/source/src/sdf/ftsdfcommon.c | 104 + .../freetype2/source/src/sdf/ftsdfcommon.h | 140 + .../libs/freetype2/source/src/sdf/ftsdferrs.h | 37 + .../libs/freetype2/source/src/sdf/ftsdfrend.c | 603 + .../libs/freetype2/source/src/sdf/ftsdfrend.h | 118 + .../libs/freetype2/source/src/sdf/module.mk | 29 + .../libs/freetype2/source/src/sdf/rules.mk | 78 + .../libs/freetype2/source/src/sdf/sdf.c | 29 + .../libs/freetype2/source/src/sfnt/module.mk | 23 + .../libs/freetype2/source/src/sfnt/pngshim.c | 459 + .../libs/freetype2/source/src/sfnt/pngshim.h | 50 + .../libs/freetype2/source/src/sfnt/rules.mk | 87 + .../libs/freetype2/source/src/sfnt/sfdriver.c | 1379 ++ .../libs/freetype2/source/src/sfnt/sfdriver.h | 35 + .../libs/freetype2/source/src/sfnt/sferrors.h | 41 + .../libs/freetype2/source/src/sfnt/sfnt.c | 41 + .../libs/freetype2/source/src/sfnt/sfobjs.c | 1555 ++ .../libs/freetype2/source/src/sfnt/sfobjs.h | 58 + .../libs/freetype2/source/src/sfnt/sfwoff.c | 426 + .../libs/freetype2/source/src/sfnt/sfwoff.h | 43 + .../libs/freetype2/source/src/sfnt/sfwoff2.c | 2378 ++ .../libs/freetype2/source/src/sfnt/sfwoff2.h | 78 + .../libs/freetype2/source/src/sfnt/ttbdf.c | 261 + .../libs/freetype2/source/src/sfnt/ttbdf.h | 49 + .../libs/freetype2/source/src/sfnt/ttcmap.c | 3902 +++ .../libs/freetype2/source/src/sfnt/ttcmap.h | 126 + .../libs/freetype2/source/src/sfnt/ttcmapc.h | 56 + .../libs/freetype2/source/src/sfnt/ttcolr.c | 1910 ++ .../libs/freetype2/source/src/sfnt/ttcolr.h | 83 + .../libs/freetype2/source/src/sfnt/ttcpal.c | 310 + .../libs/freetype2/source/src/sfnt/ttcpal.h | 48 + .../libs/freetype2/source/src/sfnt/ttgpos.c | 992 + .../libs/freetype2/source/src/sfnt/ttgpos.h | 52 + .../libs/freetype2/source/src/sfnt/ttkern.c | 316 + .../libs/freetype2/source/src/sfnt/ttkern.h | 49 + .../libs/freetype2/source/src/sfnt/ttload.c | 1516 ++ .../libs/freetype2/source/src/sfnt/ttload.h | 111 + .../libs/freetype2/source/src/sfnt/ttmtx.c | 338 + .../libs/freetype2/source/src/sfnt/ttmtx.h | 54 + .../libs/freetype2/source/src/sfnt/ttpost.c | 484 + .../libs/freetype2/source/src/sfnt/ttpost.h | 46 + .../libs/freetype2/source/src/sfnt/ttsbit.c | 1715 ++ .../libs/freetype2/source/src/sfnt/ttsbit.h | 62 + .../libs/freetype2/source/src/sfnt/ttsvg.c | 423 + .../libs/freetype2/source/src/sfnt/ttsvg.h | 43 + .../freetype2/source/src/sfnt/woff2tags.c | 119 + .../freetype2/source/src/sfnt/woff2tags.h | 41 + .../freetype2/source/src/smooth/ftgrays.c | 2151 ++ .../freetype2/source/src/smooth/ftgrays.h | 50 + .../freetype2/source/src/smooth/ftsmerrs.h | 42 + .../freetype2/source/src/smooth/ftsmooth.c | 692 + .../freetype2/source/src/smooth/ftsmooth.h | 37 + .../freetype2/source/src/smooth/module.mk | 23 + .../libs/freetype2/source/src/smooth/rules.mk | 73 + .../libs/freetype2/source/src/smooth/smooth.c | 25 + .../libs/freetype2/source/src/svg/ftsvg.c | 353 + .../libs/freetype2/source/src/svg/ftsvg.h | 35 + .../libs/freetype2/source/src/svg/module.mk | 23 + .../libs/freetype2/source/src/svg/rules.mk | 70 + .../libs/freetype2/source/src/svg/svg.c | 24 + .../libs/freetype2/source/src/svg/svgtypes.h | 42 + .../libs/freetype2/source/src/tools/afblue.pl | 551 + .../freetype2/source/src/tools/apinames.c | 569 + .../freetype2/source/src/tools/chktrcmp.py | 119 + .../libs/freetype2/source/src/tools/cordic.py | 32 + .../source/src/tools/ftrandom/Makefile | 45 + .../source/src/tools/ftrandom/README | 69 + .../source/src/tools/ftrandom/ftrandom.c | 720 + .../freetype2/source/src/tools/glnames.py | 5533 +++++ .../src/tools/make_distribution_archives.py | 208 + .../freetype2/source/src/tools/no-copyright | 66 + .../freetype2/source/src/tools/test_afm.c | 156 + .../freetype2/source/src/tools/test_bbox.c | 187 + .../freetype2/source/src/tools/test_trig.c | 257 + .../source/src/tools/update-copyright | 14 + .../source/src/tools/update-copyright-year | 157 + .../source/src/tools/vms_shorten_symbol.c | 250 + .../freetype2/source/src/truetype/module.mk | 23 + .../freetype2/source/src/truetype/rules.mk | 75 + .../freetype2/source/src/truetype/truetype.c | 29 + .../freetype2/source/src/truetype/ttdriver.c | 704 + .../freetype2/source/src/truetype/ttdriver.h | 35 + .../freetype2/source/src/truetype/tterrors.h | 42 + .../freetype2/source/src/truetype/ttgload.c | 2644 ++ .../freetype2/source/src/truetype/ttgload.h | 61 + .../freetype2/source/src/truetype/ttgxvar.c | 4902 ++++ .../freetype2/source/src/truetype/ttgxvar.h | 458 + .../freetype2/source/src/truetype/ttinterp.c | 7546 ++++++ .../freetype2/source/src/truetype/ttinterp.h | 487 + .../freetype2/source/src/truetype/ttobjs.c | 1378 ++ .../freetype2/source/src/truetype/ttobjs.h | 337 + .../freetype2/source/src/truetype/ttpload.c | 665 + .../freetype2/source/src/truetype/ttpload.h | 74 + .../libs/freetype2/source/src/type1/module.mk | 23 + .../libs/freetype2/source/src/type1/rules.mk | 76 + .../libs/freetype2/source/src/type1/t1afm.c | 413 + .../libs/freetype2/source/src/type1/t1afm.h | 53 + .../freetype2/source/src/type1/t1driver.c | 807 + .../freetype2/source/src/type1/t1driver.h | 35 + .../freetype2/source/src/type1/t1errors.h | 41 + .../libs/freetype2/source/src/type1/t1gload.c | 608 + .../libs/freetype2/source/src/type1/t1gload.h | 52 + .../libs/freetype2/source/src/type1/t1load.c | 2755 +++ .../libs/freetype2/source/src/type1/t1load.h | 126 + .../libs/freetype2/source/src/type1/t1objs.c | 655 + .../libs/freetype2/source/src/type1/t1objs.h | 160 + .../libs/freetype2/source/src/type1/t1parse.c | 487 + .../libs/freetype2/source/src/type1/t1parse.h | 137 + .../freetype2/source/src/type1/t1tokens.h | 143 + .../libs/freetype2/source/src/type1/type1.c | 29 + .../freetype2/source/src/type42/module.mk | 23 + .../libs/freetype2/source/src/type42/rules.mk | 73 + .../freetype2/source/src/type42/t42drivr.c | 248 + .../freetype2/source/src/type42/t42drivr.h | 36 + .../freetype2/source/src/type42/t42error.h | 41 + .../freetype2/source/src/type42/t42objs.c | 699 + .../freetype2/source/src/type42/t42objs.h | 123 + .../freetype2/source/src/type42/t42parse.c | 1351 ++ .../freetype2/source/src/type42/t42parse.h | 91 + .../freetype2/source/src/type42/t42types.h | 56 + .../libs/freetype2/source/src/type42/type42.c | 26 + .../freetype2/source/src/winfonts/fnterrs.h | 42 + .../freetype2/source/src/winfonts/module.mk | 23 + .../freetype2/source/src/winfonts/rules.mk | 68 + .../freetype2/source/src/winfonts/winfnt.c | 1219 + .../freetype2/source/src/winfonts/winfnt.h | 164 + .../source/subprojects/harfbuzz.wrap | 10 + .../freetype2/source/subprojects/libpng.wrap | 14 + .../freetype2/source/subprojects/zlib.wrap | 14 + .../libs/freetype2/source/tests/README.md | 22 + .../freetype2/source/tests/issue-1063/main.c | 48 + .../libs/freetype2/source/tests/meson.build | 14 + .../tests/scripts/download-test-fonts.py | 302 + .../libs/freetype2/source/vms_make.com | 2213 ++ 1289 files changed, 927111 insertions(+), 10 deletions(-) create mode 100644 local/recipes/dev/gnu-make/source.tar create mode 100644 local/recipes/dev/gnu-make/source/.redbear-src-version create mode 100644 local/recipes/dev/gnu-make/source/ABOUT-NLS create mode 100644 local/recipes/dev/gnu-make/source/AUTHORS create mode 100644 local/recipes/dev/gnu-make/source/Basic.mk create mode 100644 local/recipes/dev/gnu-make/source/COPYING create mode 100644 local/recipes/dev/gnu-make/source/ChangeLog create mode 100644 local/recipes/dev/gnu-make/source/INSTALL create mode 100644 local/recipes/dev/gnu-make/source/Makefile.am create mode 100644 local/recipes/dev/gnu-make/source/Makefile.in create mode 100644 local/recipes/dev/gnu-make/source/NEWS create mode 100644 local/recipes/dev/gnu-make/source/README create mode 100644 local/recipes/dev/gnu-make/source/README.Amiga create mode 100644 local/recipes/dev/gnu-make/source/README.DOS create mode 100644 local/recipes/dev/gnu-make/source/README.OS2 create mode 100644 local/recipes/dev/gnu-make/source/README.VMS create mode 100644 local/recipes/dev/gnu-make/source/README.W32 create mode 100644 local/recipes/dev/gnu-make/source/README.customs create mode 100644 local/recipes/dev/gnu-make/source/SCOPTIONS create mode 100644 local/recipes/dev/gnu-make/source/aclocal.m4 create mode 100644 local/recipes/dev/gnu-make/source/autom4te.cache/output.0 create mode 100644 local/recipes/dev/gnu-make/source/autom4te.cache/output.1 create mode 100644 local/recipes/dev/gnu-make/source/autom4te.cache/output.2 create mode 100644 local/recipes/dev/gnu-make/source/autom4te.cache/output.3 create mode 100644 local/recipes/dev/gnu-make/source/autom4te.cache/requests create mode 100644 local/recipes/dev/gnu-make/source/autom4te.cache/traces.0 create mode 100644 local/recipes/dev/gnu-make/source/autom4te.cache/traces.1 create mode 100644 local/recipes/dev/gnu-make/source/autom4te.cache/traces.2 create mode 100644 local/recipes/dev/gnu-make/source/autom4te.cache/traces.3 create mode 100755 local/recipes/dev/gnu-make/source/build-aux/compile create mode 100755 local/recipes/dev/gnu-make/source/build-aux/config.guess create mode 100755 local/recipes/dev/gnu-make/source/build-aux/config.guess~ create mode 100755 local/recipes/dev/gnu-make/source/build-aux/config.rpath create mode 100755 local/recipes/dev/gnu-make/source/build-aux/config.sub create mode 100755 local/recipes/dev/gnu-make/source/build-aux/config.sub~ create mode 100755 local/recipes/dev/gnu-make/source/build-aux/depcomp create mode 100755 local/recipes/dev/gnu-make/source/build-aux/install-sh create mode 100755 local/recipes/dev/gnu-make/source/build-aux/mdate-sh create mode 100755 local/recipes/dev/gnu-make/source/build-aux/missing create mode 100644 local/recipes/dev/gnu-make/source/build-aux/texinfo.tex create mode 100644 local/recipes/dev/gnu-make/source/build.cfg.in create mode 100755 local/recipes/dev/gnu-make/source/build.sh create mode 100644 local/recipes/dev/gnu-make/source/build_w32.bat create mode 100644 local/recipes/dev/gnu-make/source/builddos.bat create mode 100755 local/recipes/dev/gnu-make/source/configure create mode 100644 local/recipes/dev/gnu-make/source/configure.ac create mode 100755 local/recipes/dev/gnu-make/source/configure~ create mode 100644 local/recipes/dev/gnu-make/source/doc/Makefile.am create mode 100644 local/recipes/dev/gnu-make/source/doc/Makefile.in create mode 100644 local/recipes/dev/gnu-make/source/doc/fdl.texi create mode 100644 local/recipes/dev/gnu-make/source/doc/make-stds.texi create mode 100644 local/recipes/dev/gnu-make/source/doc/make.1 create mode 100644 local/recipes/dev/gnu-make/source/doc/make.info create mode 100644 local/recipes/dev/gnu-make/source/doc/make.info-1 create mode 100644 local/recipes/dev/gnu-make/source/doc/make.info-2 create mode 100644 local/recipes/dev/gnu-make/source/doc/make.info-3 create mode 100644 local/recipes/dev/gnu-make/source/doc/make.texi create mode 100644 local/recipes/dev/gnu-make/source/doc/stamp-vti create mode 100644 local/recipes/dev/gnu-make/source/doc/version.texi create mode 100644 local/recipes/dev/gnu-make/source/lib/Makefile.am create mode 100644 local/recipes/dev/gnu-make/source/lib/Makefile.in create mode 100644 local/recipes/dev/gnu-make/source/lib/alloca.c create mode 100644 local/recipes/dev/gnu-make/source/lib/alloca.in.h create mode 100644 local/recipes/dev/gnu-make/source/lib/concat-filename.c create mode 100644 local/recipes/dev/gnu-make/source/lib/concat-filename.h create mode 100644 local/recipes/dev/gnu-make/source/lib/filename.h create mode 100644 local/recipes/dev/gnu-make/source/lib/findprog-in.c create mode 100644 local/recipes/dev/gnu-make/source/lib/findprog.h create mode 100644 local/recipes/dev/gnu-make/source/lib/fnmatch.c create mode 100644 local/recipes/dev/gnu-make/source/lib/fnmatch.in.h create mode 100644 local/recipes/dev/gnu-make/source/lib/getloadavg.c create mode 100644 local/recipes/dev/gnu-make/source/lib/glob.c create mode 100644 local/recipes/dev/gnu-make/source/lib/glob.in.h create mode 100644 local/recipes/dev/gnu-make/source/lib/intprops.h create mode 100644 local/recipes/dev/gnu-make/source/lib/stdbool.in.h create mode 100644 local/recipes/dev/gnu-make/source/lib/warn-on-use.h create mode 100644 local/recipes/dev/gnu-make/source/m4/00gnulib.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/acinclude.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/alloca.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/asm-underscore.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/codeset.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/dospaths.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/eaccess.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/extensions.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/extern-inline.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/fcntl-o.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/findprog-in.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/getloadavg.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/gettext.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/glibc2.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/glibc21.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/gnulib-cache.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/gnulib-common.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/gnulib-comp.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/host-cpu-c-abi.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/iconv.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/intdiv0.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/intl.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/intldir.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/intlmacosx.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/intmax.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/inttypes-pri.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/inttypes_h.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/largefile.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/lcmessage.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/lib-ld.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/lib-link.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/lib-prefix.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/lock.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/longlong.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/nls.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/po.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/printf-posix.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/progtest.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/sig_atomic_t.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/size_max.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/stdbool.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/stdint_h.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/threadlib.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/uintmax_t.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/visibility.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/warn-on-use.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/wchar_t.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/wint_t.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/xsize.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/year2038.m4 create mode 100644 local/recipes/dev/gnu-make/source/m4/zzgnulib.m4 create mode 100644 local/recipes/dev/gnu-make/source/makefile.com create mode 100644 local/recipes/dev/gnu-make/source/mk/Amiga.mk create mode 100644 local/recipes/dev/gnu-make/source/mk/VMS.mk create mode 100644 local/recipes/dev/gnu-make/source/mk/Windows32.mk create mode 100644 local/recipes/dev/gnu-make/source/mk/msdosdjgpp.mk create mode 100644 local/recipes/dev/gnu-make/source/po/LINGUAS create mode 100644 local/recipes/dev/gnu-make/source/po/Makefile.in.in create mode 100644 local/recipes/dev/gnu-make/source/po/Makevars create mode 100644 local/recipes/dev/gnu-make/source/po/Makevars.template create mode 100644 local/recipes/dev/gnu-make/source/po/POTFILES.in create mode 100644 local/recipes/dev/gnu-make/source/po/Rules-quot create mode 100644 local/recipes/dev/gnu-make/source/po/be.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/be.po create mode 100644 local/recipes/dev/gnu-make/source/po/bg.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/bg.po create mode 100644 local/recipes/dev/gnu-make/source/po/boldquot.sed create mode 100644 local/recipes/dev/gnu-make/source/po/cs.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/cs.po create mode 100644 local/recipes/dev/gnu-make/source/po/da.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/da.po create mode 100644 local/recipes/dev/gnu-make/source/po/de.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/de.po create mode 100644 local/recipes/dev/gnu-make/source/po/en@boldquot.header create mode 100644 local/recipes/dev/gnu-make/source/po/en@quot.header create mode 100644 local/recipes/dev/gnu-make/source/po/es.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/es.po create mode 100644 local/recipes/dev/gnu-make/source/po/fi.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/fi.po create mode 100644 local/recipes/dev/gnu-make/source/po/fr.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/fr.po create mode 100644 local/recipes/dev/gnu-make/source/po/ga.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/ga.po create mode 100644 local/recipes/dev/gnu-make/source/po/gl.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/gl.po create mode 100644 local/recipes/dev/gnu-make/source/po/he.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/he.po create mode 100644 local/recipes/dev/gnu-make/source/po/hr.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/hr.po create mode 100644 local/recipes/dev/gnu-make/source/po/id.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/id.po create mode 100644 local/recipes/dev/gnu-make/source/po/insert-header.sin create mode 100644 local/recipes/dev/gnu-make/source/po/it.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/it.po create mode 100644 local/recipes/dev/gnu-make/source/po/ja.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/ja.po create mode 100644 local/recipes/dev/gnu-make/source/po/ko.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/ko.po create mode 100644 local/recipes/dev/gnu-make/source/po/lt.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/lt.po create mode 100644 local/recipes/dev/gnu-make/source/po/make.pot create mode 100644 local/recipes/dev/gnu-make/source/po/nl.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/nl.po create mode 100644 local/recipes/dev/gnu-make/source/po/pl.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/pl.po create mode 100644 local/recipes/dev/gnu-make/source/po/pt.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/pt.po create mode 100644 local/recipes/dev/gnu-make/source/po/pt_BR.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/pt_BR.po create mode 100644 local/recipes/dev/gnu-make/source/po/quot.sed create mode 100644 local/recipes/dev/gnu-make/source/po/remove-potcdate.sin create mode 100644 local/recipes/dev/gnu-make/source/po/ro.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/ro.po create mode 100644 local/recipes/dev/gnu-make/source/po/ru.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/ru.po create mode 100644 local/recipes/dev/gnu-make/source/po/sr.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/sr.po create mode 100644 local/recipes/dev/gnu-make/source/po/stamp-po create mode 100644 local/recipes/dev/gnu-make/source/po/sv.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/sv.po create mode 100644 local/recipes/dev/gnu-make/source/po/tr.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/tr.po create mode 100644 local/recipes/dev/gnu-make/source/po/uk.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/uk.po create mode 100644 local/recipes/dev/gnu-make/source/po/vi.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/vi.po create mode 100644 local/recipes/dev/gnu-make/source/po/zh_CN.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/zh_CN.po create mode 100644 local/recipes/dev/gnu-make/source/po/zh_TW.gmo create mode 100644 local/recipes/dev/gnu-make/source/po/zh_TW.po create mode 100644 local/recipes/dev/gnu-make/source/src/amiga.c create mode 100644 local/recipes/dev/gnu-make/source/src/amiga.h create mode 100644 local/recipes/dev/gnu-make/source/src/ar.c create mode 100644 local/recipes/dev/gnu-make/source/src/arscan.c create mode 100644 local/recipes/dev/gnu-make/source/src/commands.c create mode 100644 local/recipes/dev/gnu-make/source/src/commands.h create mode 100644 local/recipes/dev/gnu-make/source/src/config.ami create mode 100644 local/recipes/dev/gnu-make/source/src/config.h-vms create mode 100644 local/recipes/dev/gnu-make/source/src/config.h.W32 create mode 100644 local/recipes/dev/gnu-make/source/src/config.h.in create mode 100644 local/recipes/dev/gnu-make/source/src/config.h.in~ create mode 100644 local/recipes/dev/gnu-make/source/src/configh.dos create mode 100644 local/recipes/dev/gnu-make/source/src/debug.h create mode 100644 local/recipes/dev/gnu-make/source/src/default.c create mode 100644 local/recipes/dev/gnu-make/source/src/dep.h create mode 100644 local/recipes/dev/gnu-make/source/src/dir.c create mode 100644 local/recipes/dev/gnu-make/source/src/expand.c create mode 100644 local/recipes/dev/gnu-make/source/src/file.c create mode 100644 local/recipes/dev/gnu-make/source/src/filedef.h create mode 100644 local/recipes/dev/gnu-make/source/src/function.c create mode 100644 local/recipes/dev/gnu-make/source/src/getopt.c create mode 100644 local/recipes/dev/gnu-make/source/src/getopt.h create mode 100644 local/recipes/dev/gnu-make/source/src/getopt1.c create mode 100644 local/recipes/dev/gnu-make/source/src/gettext.h create mode 100644 local/recipes/dev/gnu-make/source/src/gmk-default.h create mode 100644 local/recipes/dev/gnu-make/source/src/gmk-default.scm create mode 100644 local/recipes/dev/gnu-make/source/src/gnumake.h create mode 100644 local/recipes/dev/gnu-make/source/src/guile.c create mode 100644 local/recipes/dev/gnu-make/source/src/hash.c create mode 100644 local/recipes/dev/gnu-make/source/src/hash.h create mode 100644 local/recipes/dev/gnu-make/source/src/implicit.c create mode 100644 local/recipes/dev/gnu-make/source/src/job.c create mode 100644 local/recipes/dev/gnu-make/source/src/job.h create mode 100644 local/recipes/dev/gnu-make/source/src/load.c create mode 100644 local/recipes/dev/gnu-make/source/src/loadapi.c create mode 100644 local/recipes/dev/gnu-make/source/src/main.c create mode 100644 local/recipes/dev/gnu-make/source/src/makeint.h create mode 100644 local/recipes/dev/gnu-make/source/src/misc.c create mode 100644 local/recipes/dev/gnu-make/source/src/mkconfig.h create mode 100644 local/recipes/dev/gnu-make/source/src/os.h create mode 100644 local/recipes/dev/gnu-make/source/src/output.c create mode 100644 local/recipes/dev/gnu-make/source/src/output.h create mode 100644 local/recipes/dev/gnu-make/source/src/posixos.c create mode 100644 local/recipes/dev/gnu-make/source/src/read.c create mode 100644 local/recipes/dev/gnu-make/source/src/remake.c create mode 100644 local/recipes/dev/gnu-make/source/src/remote-cstms.c create mode 100644 local/recipes/dev/gnu-make/source/src/remote-stub.c create mode 100644 local/recipes/dev/gnu-make/source/src/rule.c create mode 100644 local/recipes/dev/gnu-make/source/src/rule.h create mode 100644 local/recipes/dev/gnu-make/source/src/shuffle.c create mode 100644 local/recipes/dev/gnu-make/source/src/shuffle.h create mode 100644 local/recipes/dev/gnu-make/source/src/signame.c create mode 100644 local/recipes/dev/gnu-make/source/src/strcache.c create mode 100644 local/recipes/dev/gnu-make/source/src/variable.c create mode 100644 local/recipes/dev/gnu-make/source/src/variable.h create mode 100644 local/recipes/dev/gnu-make/source/src/version.c create mode 100644 local/recipes/dev/gnu-make/source/src/vms_exit.c create mode 100644 local/recipes/dev/gnu-make/source/src/vms_export_symbol.c create mode 100644 local/recipes/dev/gnu-make/source/src/vms_progname.c create mode 100644 local/recipes/dev/gnu-make/source/src/vmsdir.h create mode 100644 local/recipes/dev/gnu-make/source/src/vmsfunctions.c create mode 100644 local/recipes/dev/gnu-make/source/src/vmsify.c create mode 100644 local/recipes/dev/gnu-make/source/src/vmsjobs.c create mode 100644 local/recipes/dev/gnu-make/source/src/vpath.c create mode 100644 local/recipes/dev/gnu-make/source/src/w32/compat/dirent.c create mode 100644 local/recipes/dev/gnu-make/source/src/w32/compat/posixfcn.c create mode 100644 local/recipes/dev/gnu-make/source/src/w32/include/dirent.h create mode 100644 local/recipes/dev/gnu-make/source/src/w32/include/dlfcn.h create mode 100644 local/recipes/dev/gnu-make/source/src/w32/include/pathstuff.h create mode 100644 local/recipes/dev/gnu-make/source/src/w32/include/sub_proc.h create mode 100644 local/recipes/dev/gnu-make/source/src/w32/include/w32err.h create mode 100644 local/recipes/dev/gnu-make/source/src/w32/pathstuff.c create mode 100644 local/recipes/dev/gnu-make/source/src/w32/subproc/misc.c create mode 100644 local/recipes/dev/gnu-make/source/src/w32/subproc/proc.h create mode 100644 local/recipes/dev/gnu-make/source/src/w32/subproc/sub_proc.c create mode 100644 local/recipes/dev/gnu-make/source/src/w32/subproc/w32err.c create mode 100644 local/recipes/dev/gnu-make/source/src/w32/w32os.c create mode 100644 local/recipes/dev/gnu-make/source/tests/README create mode 100644 local/recipes/dev/gnu-make/source/tests/config-flags.pm.W32 create mode 100644 local/recipes/dev/gnu-make/source/tests/config-flags.pm.in create mode 100755 local/recipes/dev/gnu-make/source/tests/config_flags_pm.com create mode 100644 local/recipes/dev/gnu-make/source/tests/guile.supp create mode 100755 local/recipes/dev/gnu-make/source/tests/mkshadow create mode 100755 local/recipes/dev/gnu-make/source/tests/run_make_tests create mode 100644 local/recipes/dev/gnu-make/source/tests/run_make_tests.bat create mode 100644 local/recipes/dev/gnu-make/source/tests/run_make_tests.pl create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/archives create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/comments create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/conditionals create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/default_names create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/dircache create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/double_colon create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/echoing create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/errors create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/escape create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/exec create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/export create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/grouped_targets create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/implicit_search create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/include create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/jobserver create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/load create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/loadapi create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/mult_rules create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/mult_targets create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/order_only create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/output-sync create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/override create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/parallelism create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/patspecific_vars create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/patternrules create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/quoting create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/recursion create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/reinvoke create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/rule_glob create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/se_explicit create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/se_implicit create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/se_statpat create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/shell_assignment create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/statipattrules create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/suffixrules create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/targetvars create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/temp_stdin create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/utf8 create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/varnesting create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/vpath create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/vpathgpath create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/features/vpathplus create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/abspath create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/addprefix create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/addsuffix create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/andor create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/basename create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/call create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/dir create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/error create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/eval create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/file create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/filter-out create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/findstring create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/flavor create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/foreach create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/guile create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/if create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/intcmp create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/join create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/let create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/notdir create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/origin create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/realpath create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/shell create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/sort create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/strip create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/substitution create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/suffix create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/value create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/warning create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/wildcard create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/functions/word create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/misc/bs-nl create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/misc/close_stdout create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/misc/fopen-fail create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/misc/general1 create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/misc/general2 create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/misc/general3 create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/misc/general4 create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/misc/utf8 create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-B create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-C create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-I create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-W create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-d create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-e create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-f create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-k create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-l create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-n create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-q create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-r create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-s create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/dash-t create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/eval create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/general create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/print-directory create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/shuffle create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/symlinks create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/options/warn-undefined-variables create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/targets/DEFAULT create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/targets/DELETE_ON_ERROR create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/targets/FORCE create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/targets/INTERMEDIATE create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/targets/NOTINTERMEDIATE create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/targets/ONESHELL create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/targets/PHONY create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/targets/POSIX create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/targets/SECONDARY create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/targets/SILENT create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/targets/WAIT create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/targets/clean create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/test_template create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/CURDIR create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/DEFAULT_GOAL create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/EXTRA_PREREQS create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/GNUMAKEFLAGS create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/INCLUDE_DIRS create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/LIBPATTERNS create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKE create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKECMDGOALS create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKEFILES create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKEFLAGS create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKELEVEL create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKE_RESTARTS create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/MFILE_LIST create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/SHELL create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/automatic create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/define create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/flavors create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/negative create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/private create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/special create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/variables/undefine create mode 100644 local/recipes/dev/gnu-make/source/tests/scripts/vms/library create mode 100644 local/recipes/dev/gnu-make/source/tests/test_driver.pl create mode 100755 local/recipes/dev/gnu-make/source/tests/thelp.pl create mode 100644 local/recipes/dev/gnu-make/source/vms_export_symbol_test.com create mode 100644 local/recipes/libs/freetype2/source/.clang-format create mode 100644 local/recipes/libs/freetype2/source/.redbear-src-version create mode 100644 local/recipes/libs/freetype2/source/CMakeLists.txt create mode 100644 local/recipes/libs/freetype2/source/ChangeLog create mode 100644 local/recipes/libs/freetype2/source/LICENSE.TXT create mode 100644 local/recipes/libs/freetype2/source/MSBuild.rsp create mode 100644 local/recipes/libs/freetype2/source/MSBuild.sln create mode 100644 local/recipes/libs/freetype2/source/Makefile create mode 100644 local/recipes/libs/freetype2/source/README create mode 100644 local/recipes/libs/freetype2/source/README.git create mode 100755 local/recipes/libs/freetype2/source/autogen.sh create mode 100644 local/recipes/libs/freetype2/source/builds/amiga/README create mode 100644 local/recipes/libs/freetype2/source/builds/amiga/include/config/ftconfig.h create mode 100644 local/recipes/libs/freetype2/source/builds/amiga/include/config/ftmodule.h create mode 100644 local/recipes/libs/freetype2/source/builds/amiga/makefile create mode 100644 local/recipes/libs/freetype2/source/builds/amiga/makefile.os4 create mode 100644 local/recipes/libs/freetype2/source/builds/amiga/smakefile create mode 100644 local/recipes/libs/freetype2/source/builds/amiga/src/base/ftdebug.c create mode 100644 local/recipes/libs/freetype2/source/builds/amiga/src/base/ftsystem.c create mode 100644 local/recipes/libs/freetype2/source/builds/ansi/ansi-def.mk create mode 100644 local/recipes/libs/freetype2/source/builds/ansi/ansi.mk create mode 100644 local/recipes/libs/freetype2/source/builds/atari/ATARI.H create mode 100644 local/recipes/libs/freetype2/source/builds/atari/FNames.SIC create mode 100644 local/recipes/libs/freetype2/source/builds/atari/FREETYPE.PRJ create mode 100644 local/recipes/libs/freetype2/source/builds/atari/README.TXT create mode 100644 local/recipes/libs/freetype2/source/builds/atari/deflinejoiner.awk create mode 100755 local/recipes/libs/freetype2/source/builds/atari/gen-purec-patch.sh create mode 100644 local/recipes/libs/freetype2/source/builds/beos/beos-def.mk create mode 100644 local/recipes/libs/freetype2/source/builds/beos/beos.mk create mode 100644 local/recipes/libs/freetype2/source/builds/beos/detect.mk create mode 100644 local/recipes/libs/freetype2/source/builds/cmake/FindBrotliDec.cmake create mode 100644 local/recipes/libs/freetype2/source/builds/cmake/FindHarfBuzz.cmake create mode 100644 local/recipes/libs/freetype2/source/builds/cmake/iOS.cmake create mode 100755 local/recipes/libs/freetype2/source/builds/cmake/testbuild.sh create mode 100644 local/recipes/libs/freetype2/source/builds/compiler/ansi-cc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/compiler/bcc-dev.mk create mode 100644 local/recipes/libs/freetype2/source/builds/compiler/bcc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/compiler/emx.mk create mode 100644 local/recipes/libs/freetype2/source/builds/compiler/gcc-dev.mk create mode 100644 local/recipes/libs/freetype2/source/builds/compiler/gcc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/compiler/intelc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/compiler/unix-lcc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/compiler/visualage.mk create mode 100644 local/recipes/libs/freetype2/source/builds/compiler/visualc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/compiler/watcom.mk create mode 100644 local/recipes/libs/freetype2/source/builds/compiler/win-lcc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/detect.mk create mode 100644 local/recipes/libs/freetype2/source/builds/dos/detect.mk create mode 100644 local/recipes/libs/freetype2/source/builds/dos/dos-def.mk create mode 100644 local/recipes/libs/freetype2/source/builds/dos/dos-emx.mk create mode 100644 local/recipes/libs/freetype2/source/builds/dos/dos-gcc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/dos/dos-wat.mk create mode 100644 local/recipes/libs/freetype2/source/builds/exports.mk create mode 100644 local/recipes/libs/freetype2/source/builds/freetype.mk create mode 100644 local/recipes/libs/freetype2/source/builds/link_dos.mk create mode 100644 local/recipes/libs/freetype2/source/builds/link_std.mk create mode 100644 local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_cfm.make.txt create mode 100644 local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_far.make.txt create mode 100644 local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_carbon.make.txt create mode 100644 local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_classic.make.txt create mode 100644 local/recipes/libs/freetype2/source/builds/mac/README create mode 100755 local/recipes/libs/freetype2/source/builds/mac/ascii2mpw.py create mode 100644 local/recipes/libs/freetype2/source/builds/mac/freetype-Info.plist create mode 100644 local/recipes/libs/freetype2/source/builds/mac/ftlib.prj.xml create mode 100644 local/recipes/libs/freetype2/source/builds/mac/ftmac.c create mode 100644 local/recipes/libs/freetype2/source/builds/meson/extract_freetype_version.py create mode 100644 local/recipes/libs/freetype2/source/builds/meson/extract_libtool_version.py create mode 100644 local/recipes/libs/freetype2/source/builds/meson/generate_reference_docs.py create mode 100644 local/recipes/libs/freetype2/source/builds/meson/parse_modules_cfg.py create mode 100644 local/recipes/libs/freetype2/source/builds/meson/process_ftoption_h.py create mode 100644 local/recipes/libs/freetype2/source/builds/modules.mk create mode 100644 local/recipes/libs/freetype2/source/builds/os2/detect.mk create mode 100644 local/recipes/libs/freetype2/source/builds/os2/os2-def.mk create mode 100644 local/recipes/libs/freetype2/source/builds/os2/os2-dev.mk create mode 100644 local/recipes/libs/freetype2/source/builds/os2/os2-gcc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/symbian/bld.inf create mode 100644 local/recipes/libs/freetype2/source/builds/symbian/freetype.mmp create mode 100644 local/recipes/libs/freetype2/source/builds/toplevel.mk create mode 100644 local/recipes/libs/freetype2/source/builds/unix/aclocal.m4 create mode 100644 local/recipes/libs/freetype2/source/builds/unix/ax_compare_version.m4 create mode 100644 local/recipes/libs/freetype2/source/builds/unix/ax_prog_python_version.m4 create mode 100644 local/recipes/libs/freetype2/source/builds/unix/ax_pthread.m4 create mode 100755 local/recipes/libs/freetype2/source/builds/unix/config.guess create mode 100755 local/recipes/libs/freetype2/source/builds/unix/config.sub create mode 100755 local/recipes/libs/freetype2/source/builds/unix/configure create mode 100644 local/recipes/libs/freetype2/source/builds/unix/configure.ac create mode 100644 local/recipes/libs/freetype2/source/builds/unix/configure.raw create mode 100644 local/recipes/libs/freetype2/source/builds/unix/detect.mk create mode 100644 local/recipes/libs/freetype2/source/builds/unix/freetype-config.in create mode 100644 local/recipes/libs/freetype2/source/builds/unix/freetype2.in create mode 100644 local/recipes/libs/freetype2/source/builds/unix/freetype2.m4 create mode 100644 local/recipes/libs/freetype2/source/builds/unix/ft-munmap.m4 create mode 100644 local/recipes/libs/freetype2/source/builds/unix/ftconfig.h.in create mode 100644 local/recipes/libs/freetype2/source/builds/unix/ftsystem.c create mode 100755 local/recipes/libs/freetype2/source/builds/unix/install-sh create mode 100644 local/recipes/libs/freetype2/source/builds/unix/install.mk create mode 100644 local/recipes/libs/freetype2/source/builds/unix/ltmain.sh create mode 100644 local/recipes/libs/freetype2/source/builds/unix/pkg.m4 create mode 100644 local/recipes/libs/freetype2/source/builds/unix/unix-cc.in create mode 100644 local/recipes/libs/freetype2/source/builds/unix/unix-def.in create mode 100644 local/recipes/libs/freetype2/source/builds/unix/unix-dev.mk create mode 100644 local/recipes/libs/freetype2/source/builds/unix/unix-lcc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/unix/unix.mk create mode 100644 local/recipes/libs/freetype2/source/builds/unix/unixddef.mk create mode 100644 local/recipes/libs/freetype2/source/builds/vms/apinames_vms.bash create mode 100644 local/recipes/libs/freetype2/source/builds/vms/ftconfig.h create mode 100644 local/recipes/libs/freetype2/source/builds/vms/ftsystem.c create mode 100644 local/recipes/libs/freetype2/source/builds/vms/patch_ftcalc.sed create mode 100644 local/recipes/libs/freetype2/source/builds/wince/ftdebug.c create mode 100644 local/recipes/libs/freetype2/source/builds/wince/vc2005-ce/freetype.sln create mode 100644 local/recipes/libs/freetype2/source/builds/wince/vc2005-ce/freetype.vcproj create mode 100644 local/recipes/libs/freetype2/source/builds/wince/vc2005-ce/index.html create mode 100644 local/recipes/libs/freetype2/source/builds/wince/vc2008-ce/freetype.sln create mode 100644 local/recipes/libs/freetype2/source/builds/wince/vc2008-ce/freetype.vcproj create mode 100644 local/recipes/libs/freetype2/source/builds/wince/vc2008-ce/index.html create mode 100644 local/recipes/libs/freetype2/source/builds/windows/detect.mk create mode 100644 local/recipes/libs/freetype2/source/builds/windows/ftdebug.c create mode 100644 local/recipes/libs/freetype2/source/builds/windows/ftsystem.c create mode 100644 local/recipes/libs/freetype2/source/builds/windows/vc2010/freetype.user.props create mode 100644 local/recipes/libs/freetype2/source/builds/windows/vc2010/freetype.vcxproj create mode 100644 local/recipes/libs/freetype2/source/builds/windows/vc2010/freetype.vcxproj.filters create mode 100644 local/recipes/libs/freetype2/source/builds/windows/vc2010/index.html create mode 100644 local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.dsp create mode 100644 local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.dsw create mode 100644 local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.sln create mode 100644 local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.vcproj create mode 100644 local/recipes/libs/freetype2/source/builds/windows/visualc/index.html create mode 100644 local/recipes/libs/freetype2/source/builds/windows/visualce/freetype.dsp create mode 100644 local/recipes/libs/freetype2/source/builds/windows/visualce/freetype.dsw create mode 100644 local/recipes/libs/freetype2/source/builds/windows/visualce/freetype.vcproj create mode 100644 local/recipes/libs/freetype2/source/builds/windows/visualce/index.html create mode 100644 local/recipes/libs/freetype2/source/builds/windows/w32-bcc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/windows/w32-bccd.mk create mode 100644 local/recipes/libs/freetype2/source/builds/windows/w32-dev.mk create mode 100644 local/recipes/libs/freetype2/source/builds/windows/w32-gcc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/windows/w32-icc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/windows/w32-intl.mk create mode 100644 local/recipes/libs/freetype2/source/builds/windows/w32-lcc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/windows/w32-mingw32.mk create mode 100644 local/recipes/libs/freetype2/source/builds/windows/w32-vcc.mk create mode 100644 local/recipes/libs/freetype2/source/builds/windows/w32-wat.mk create mode 100644 local/recipes/libs/freetype2/source/builds/windows/win32-def.mk create mode 100755 local/recipes/libs/freetype2/source/configure create mode 100644 local/recipes/libs/freetype2/source/devel/ft2build.h create mode 100644 local/recipes/libs/freetype2/source/devel/ftoption.h create mode 100644 local/recipes/libs/freetype2/source/docs/CHANGES create mode 100644 local/recipes/libs/freetype2/source/docs/CMAKE create mode 100644 local/recipes/libs/freetype2/source/docs/CUSTOMIZE create mode 100644 local/recipes/libs/freetype2/source/docs/DEBUG create mode 100644 local/recipes/libs/freetype2/source/docs/DOCGUIDE create mode 100644 local/recipes/libs/freetype2/source/docs/FTL.TXT create mode 100644 local/recipes/libs/freetype2/source/docs/GPLv2.TXT create mode 100644 local/recipes/libs/freetype2/source/docs/INSTALL create mode 100644 local/recipes/libs/freetype2/source/docs/INSTALL.ANY create mode 100644 local/recipes/libs/freetype2/source/docs/INSTALL.CROSS create mode 100644 local/recipes/libs/freetype2/source/docs/INSTALL.GNU create mode 100644 local/recipes/libs/freetype2/source/docs/INSTALL.MAC create mode 100644 local/recipes/libs/freetype2/source/docs/INSTALL.UNIX create mode 100644 local/recipes/libs/freetype2/source/docs/INSTALL.VMS create mode 100644 local/recipes/libs/freetype2/source/docs/MAKEPP create mode 100644 local/recipes/libs/freetype2/source/docs/PROBLEMS create mode 100644 local/recipes/libs/freetype2/source/docs/README create mode 100644 local/recipes/libs/freetype2/source/docs/TODO create mode 100644 local/recipes/libs/freetype2/source/docs/VERSIONS.TXT create mode 100644 local/recipes/libs/freetype2/source/docs/formats.txt create mode 100644 local/recipes/libs/freetype2/source/docs/freetype-config.1 create mode 100644 local/recipes/libs/freetype2/source/docs/freetype-web.txt create mode 100644 local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.20 create mode 100644 local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.21 create mode 100644 local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.210 create mode 100644 local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.22 create mode 100644 local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.23 create mode 100644 local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.24 create mode 100644 local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.25 create mode 100644 local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.26 create mode 100644 local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.27 create mode 100644 local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.28 create mode 100644 local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.29 create mode 100644 local/recipes/libs/freetype2/source/docs/raster.txt create mode 100644 local/recipes/libs/freetype2/source/docs/reference/404.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/images/favicon.png create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/bundle.c8b220af.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/bundle.c8b220af.min.js.map create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.el.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.he.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.hy.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.kn.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.sa.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.te.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/tinyseg.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/lunr/wordcut.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/workers/search.f8cc74c7.min.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/javascripts/workers/search.f8cc74c7.min.js.map create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/stylesheets/main.4af4bdda.min.css create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/stylesheets/main.4af4bdda.min.css.map create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/stylesheets/palette.06af60db.min.css create mode 100644 local/recipes/libs/freetype2/source/docs/reference/assets/stylesheets/palette.06af60db.min.css.map create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-auto_hinter.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-basic_types.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-bdf_fonts.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-bitmap_handling.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-bzip2.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-cache_subsystem.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-cff_driver.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-character_mapping.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-cid_fonts.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-color_management.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-computations.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-debugging_apis.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-error_code_values.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-error_enumerations.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-face_creation.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-font_formats.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-font_testing_macros.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-gasp_table.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-glyph_management.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-glyph_retrieval.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-glyph_stroker.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-glyph_variants.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-gx_validation.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-gzip.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-header_file_macros.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-header_inclusion.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-incremental.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-index.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-information_retrieval.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-layer_management.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-lcd_rendering.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-library_setup.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-list_processing.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-lzw.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-mac_specific.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-module_management.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-multiple_masters.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-ot_svg_driver.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-ot_validation.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-other_api_data.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-outline_processing.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-parameter_tags.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-pcf_driver.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-pfr_fonts.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-preamble.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-properties.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-quick_advance.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-raster.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-sfnt_names.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-sizes_management.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-sizing_and_scaling.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-svg_fonts.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-system_interface.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-t1_cid_driver.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-truetype_engine.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-truetype_tables.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-tt_driver.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-type1_tables.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-user_allocation.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/ft2-winfnt_fonts.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/images/favico.ico create mode 100644 local/recipes/libs/freetype2/source/docs/reference/index.html create mode 100644 local/recipes/libs/freetype2/source/docs/reference/javascripts/extra.js create mode 100644 local/recipes/libs/freetype2/source/docs/reference/search/search_index.json create mode 100644 local/recipes/libs/freetype2/source/docs/reference/sitemap.xml create mode 100644 local/recipes/libs/freetype2/source/docs/reference/sitemap.xml.gz create mode 100644 local/recipes/libs/freetype2/source/docs/reference/stylesheets/extra.css create mode 100644 local/recipes/libs/freetype2/source/docs/release create mode 100644 local/recipes/libs/freetype2/source/include/dlg/dlg.h create mode 100644 local/recipes/libs/freetype2/source/include/dlg/output.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/config/ftconfig.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/config/ftheader.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/config/ftmodule.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/config/ftoption.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/config/ftstdlib.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/config/integer-types.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/config/mac-support.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/config/public-macros.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/freetype.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftadvanc.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftbbox.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftbdf.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftbitmap.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftbzip2.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftcache.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftchapters.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftcid.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftcolor.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftdriver.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/fterrdef.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/fterrors.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftfntfmt.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftgasp.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftglyph.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftgxval.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftgzip.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftimage.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftincrem.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftlcdfil.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftlist.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftlogging.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftlzw.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftmac.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftmm.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftmodapi.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftmoderr.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftotval.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftoutln.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftparams.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftpfr.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftrender.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftsizes.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftsnames.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftstroke.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftsynth.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftsystem.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/fttrigon.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/fttypes.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ftwinfnt.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/autohint.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/cffotypes.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/cfftypes.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/compiler-macros.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/ftcalc.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/ftdebug.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/ftdrv.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/ftgloadr.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/fthash.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/ftmemory.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/ftmmtypes.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/ftobjs.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/ftpsprop.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/ftrfork.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/ftserv.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/ftstream.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/fttrace.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/ftvalid.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/psaux.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/pshints.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svbdf.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svcfftl.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svcid.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svfntfmt.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svgldict.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svgxval.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svkern.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svmetric.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svmm.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svotval.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svpfr.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svpostnm.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svprop.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svpscmap.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svpsinfo.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svsfnt.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svttcmap.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svtteng.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svttglyf.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/services/svwinfnt.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/sfnt.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/svginterface.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/t1types.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/tttypes.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/internal/wofftypes.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/otsvg.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/t1tables.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/ttnameid.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/tttables.h create mode 100644 local/recipes/libs/freetype2/source/include/freetype/tttags.h create mode 100644 local/recipes/libs/freetype2/source/include/ft2build.h create mode 100644 local/recipes/libs/freetype2/source/meson.build create mode 100644 local/recipes/libs/freetype2/source/meson_options.txt create mode 100644 local/recipes/libs/freetype2/source/modules.cfg create mode 100644 local/recipes/libs/freetype2/source/objs/README create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afadjust.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afadjust.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afblue.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afblue.cin create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afblue.dat create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afblue.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afblue.hin create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afcjk.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afcjk.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afcover.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afdummy.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afdummy.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/aferrors.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afglobal.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afglobal.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afgsub.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afgsub.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afhints.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afhints.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afindic.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afindic.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/aflatin.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/aflatin.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afloader.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afloader.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afmodule.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afmodule.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afranges.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afranges.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afscript.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afshaper.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afshaper.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afstyles.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/aftypes.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afws-decl.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/afws-iter.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/autofit.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/ft-hb-decls.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/ft-hb-ft.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/ft-hb-ft.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/ft-hb-types.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/ft-hb.c create mode 100644 local/recipes/libs/freetype2/source/src/autofit/ft-hb.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/hb-script-list.h create mode 100644 local/recipes/libs/freetype2/source/src/autofit/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/autofit/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/base/ftadvanc.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftbase.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftbase.h create mode 100644 local/recipes/libs/freetype2/source/src/base/ftbbox.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftbdf.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftbitmap.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftcalc.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftcid.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftcolor.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftdbgmem.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftdebug.c create mode 100644 local/recipes/libs/freetype2/source/src/base/fterrors.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftfntfmt.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftfstype.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftgasp.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftgloadr.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftglyph.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftgxval.c create mode 100644 local/recipes/libs/freetype2/source/src/base/fthash.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftinit.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftlcdfil.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftmac.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftmm.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftobjs.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftotval.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftoutln.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftpatent.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftpfr.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftpsprop.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftrfork.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftsnames.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftstream.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftstroke.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftsynth.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftsystem.c create mode 100644 local/recipes/libs/freetype2/source/src/base/fttrigon.c create mode 100644 local/recipes/libs/freetype2/source/src/base/fttype1.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftutil.c create mode 100644 local/recipes/libs/freetype2/source/src/base/ftver.rc create mode 100644 local/recipes/libs/freetype2/source/src/base/ftwinfnt.c create mode 100644 local/recipes/libs/freetype2/source/src/base/md5.c create mode 100644 local/recipes/libs/freetype2/source/src/base/md5.h create mode 100644 local/recipes/libs/freetype2/source/src/base/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/bdf/README create mode 100644 local/recipes/libs/freetype2/source/src/bdf/bdf.c create mode 100644 local/recipes/libs/freetype2/source/src/bdf/bdf.h create mode 100644 local/recipes/libs/freetype2/source/src/bdf/bdfdrivr.c create mode 100644 local/recipes/libs/freetype2/source/src/bdf/bdfdrivr.h create mode 100644 local/recipes/libs/freetype2/source/src/bdf/bdferror.h create mode 100644 local/recipes/libs/freetype2/source/src/bdf/bdflib.c create mode 100644 local/recipes/libs/freetype2/source/src/bdf/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/bdf/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/bzip2/ftbzip2.c create mode 100644 local/recipes/libs/freetype2/source/src/bzip2/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftcache.c create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftcbasic.c create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftccache.c create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftccache.h create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftccback.h create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftccmap.c create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftcerror.h create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftcglyph.c create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftcglyph.h create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftcimage.c create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftcimage.h create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftcmanag.c create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftcmanag.h create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftcmru.c create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftcmru.h create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftcsbits.c create mode 100644 local/recipes/libs/freetype2/source/src/cache/ftcsbits.h create mode 100644 local/recipes/libs/freetype2/source/src/cache/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/cff/cff.c create mode 100644 local/recipes/libs/freetype2/source/src/cff/cffcmap.c create mode 100644 local/recipes/libs/freetype2/source/src/cff/cffcmap.h create mode 100644 local/recipes/libs/freetype2/source/src/cff/cffdrivr.c create mode 100644 local/recipes/libs/freetype2/source/src/cff/cffdrivr.h create mode 100644 local/recipes/libs/freetype2/source/src/cff/cfferrs.h create mode 100644 local/recipes/libs/freetype2/source/src/cff/cffgload.c create mode 100644 local/recipes/libs/freetype2/source/src/cff/cffgload.h create mode 100644 local/recipes/libs/freetype2/source/src/cff/cffload.c create mode 100644 local/recipes/libs/freetype2/source/src/cff/cffload.h create mode 100644 local/recipes/libs/freetype2/source/src/cff/cffobjs.c create mode 100644 local/recipes/libs/freetype2/source/src/cff/cffobjs.h create mode 100644 local/recipes/libs/freetype2/source/src/cff/cffparse.c create mode 100644 local/recipes/libs/freetype2/source/src/cff/cffparse.h create mode 100644 local/recipes/libs/freetype2/source/src/cff/cfftoken.h create mode 100644 local/recipes/libs/freetype2/source/src/cff/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/cff/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/cid/ciderrs.h create mode 100644 local/recipes/libs/freetype2/source/src/cid/cidgload.c create mode 100644 local/recipes/libs/freetype2/source/src/cid/cidgload.h create mode 100644 local/recipes/libs/freetype2/source/src/cid/cidload.c create mode 100644 local/recipes/libs/freetype2/source/src/cid/cidload.h create mode 100644 local/recipes/libs/freetype2/source/src/cid/cidobjs.c create mode 100644 local/recipes/libs/freetype2/source/src/cid/cidobjs.h create mode 100644 local/recipes/libs/freetype2/source/src/cid/cidparse.c create mode 100644 local/recipes/libs/freetype2/source/src/cid/cidparse.h create mode 100644 local/recipes/libs/freetype2/source/src/cid/cidriver.c create mode 100644 local/recipes/libs/freetype2/source/src/cid/cidriver.h create mode 100644 local/recipes/libs/freetype2/source/src/cid/cidtoken.h create mode 100644 local/recipes/libs/freetype2/source/src/cid/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/cid/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/cid/type1cid.c create mode 100644 local/recipes/libs/freetype2/source/src/dlg/dlg.c create mode 100644 local/recipes/libs/freetype2/source/src/dlg/dlgwrap.c create mode 100644 local/recipes/libs/freetype2/source/src/dlg/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/README create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvalid.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvalid.h create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvbsln.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvcommn.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvcommn.h create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxverror.h create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvfeat.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvfeat.h create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvfgen.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvjust.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvkern.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvlcar.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmod.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmod.h create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmort.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmort.h create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmort0.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmort1.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmort2.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmort4.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmort5.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmorx.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmorx.h create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmorx0.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmorx1.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmorx2.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmorx4.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvmorx5.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvopbd.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvprop.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/gxvtrak.c create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/gxvalid/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/gzip/README.freetype create mode 100644 local/recipes/libs/freetype2/source/src/gzip/adler32.c create mode 100644 local/recipes/libs/freetype2/source/src/gzip/crc32.c create mode 100644 local/recipes/libs/freetype2/source/src/gzip/crc32.h create mode 100644 local/recipes/libs/freetype2/source/src/gzip/ftgzip.c create mode 100644 local/recipes/libs/freetype2/source/src/gzip/ftzconf.h create mode 100644 local/recipes/libs/freetype2/source/src/gzip/gzguts.h create mode 100644 local/recipes/libs/freetype2/source/src/gzip/inffast.c create mode 100644 local/recipes/libs/freetype2/source/src/gzip/inffast.h create mode 100644 local/recipes/libs/freetype2/source/src/gzip/inffixed.h create mode 100644 local/recipes/libs/freetype2/source/src/gzip/inflate.c create mode 100644 local/recipes/libs/freetype2/source/src/gzip/inflate.h create mode 100644 local/recipes/libs/freetype2/source/src/gzip/inftrees.c create mode 100644 local/recipes/libs/freetype2/source/src/gzip/inftrees.h create mode 100644 local/recipes/libs/freetype2/source/src/gzip/patches/freetype-zlib.diff create mode 100644 local/recipes/libs/freetype2/source/src/gzip/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/gzip/zlib.h create mode 100644 local/recipes/libs/freetype2/source/src/gzip/zutil.c create mode 100644 local/recipes/libs/freetype2/source/src/gzip/zutil.h create mode 100644 local/recipes/libs/freetype2/source/src/lzw/ftlzw.c create mode 100644 local/recipes/libs/freetype2/source/src/lzw/ftzopen.c create mode 100644 local/recipes/libs/freetype2/source/src/lzw/ftzopen.h create mode 100644 local/recipes/libs/freetype2/source/src/lzw/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otvalid.c create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otvalid.h create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otvbase.c create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otvcommn.c create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otvcommn.h create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otverror.h create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otvgdef.c create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otvgpos.c create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otvgpos.h create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otvgsub.c create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otvjstf.c create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otvmath.c create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otvmod.c create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/otvmod.h create mode 100644 local/recipes/libs/freetype2/source/src/otvalid/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/pcf/README create mode 100644 local/recipes/libs/freetype2/source/src/pcf/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/pcf/pcf.c create mode 100644 local/recipes/libs/freetype2/source/src/pcf/pcf.h create mode 100644 local/recipes/libs/freetype2/source/src/pcf/pcfdrivr.c create mode 100644 local/recipes/libs/freetype2/source/src/pcf/pcfdrivr.h create mode 100644 local/recipes/libs/freetype2/source/src/pcf/pcferror.h create mode 100644 local/recipes/libs/freetype2/source/src/pcf/pcfread.c create mode 100644 local/recipes/libs/freetype2/source/src/pcf/pcfread.h create mode 100644 local/recipes/libs/freetype2/source/src/pcf/pcfutil.c create mode 100644 local/recipes/libs/freetype2/source/src/pcf/pcfutil.h create mode 100644 local/recipes/libs/freetype2/source/src/pcf/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/pfr/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfr.c create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrcmap.c create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrcmap.h create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrdrivr.c create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrdrivr.h create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrerror.h create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrgload.c create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrgload.h create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrload.c create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrload.h create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrobjs.c create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrobjs.h create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrsbit.c create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrsbit.h create mode 100644 local/recipes/libs/freetype2/source/src/pfr/pfrtypes.h create mode 100644 local/recipes/libs/freetype2/source/src/pfr/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/psaux/afmparse.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/afmparse.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/cffdecode.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/cffdecode.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psarrst.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psarrst.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psaux.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psauxerr.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psauxmod.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psauxmod.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psblues.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psblues.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psconv.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psconv.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/pserror.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/pserror.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psfixed.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psfont.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psfont.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psft.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psft.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psglue.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/pshints.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/pshints.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psintrp.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psintrp.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psobjs.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psobjs.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psread.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psread.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psstack.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/psstack.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/pstypes.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/psaux/t1cmap.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/t1cmap.h create mode 100644 local/recipes/libs/freetype2/source/src/psaux/t1decode.c create mode 100644 local/recipes/libs/freetype2/source/src/psaux/t1decode.h create mode 100644 local/recipes/libs/freetype2/source/src/pshinter/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/pshinter/pshalgo.c create mode 100644 local/recipes/libs/freetype2/source/src/pshinter/pshalgo.h create mode 100644 local/recipes/libs/freetype2/source/src/pshinter/pshglob.c create mode 100644 local/recipes/libs/freetype2/source/src/pshinter/pshglob.h create mode 100644 local/recipes/libs/freetype2/source/src/pshinter/pshinter.c create mode 100644 local/recipes/libs/freetype2/source/src/pshinter/pshmod.c create mode 100644 local/recipes/libs/freetype2/source/src/pshinter/pshmod.h create mode 100644 local/recipes/libs/freetype2/source/src/pshinter/pshnterr.h create mode 100644 local/recipes/libs/freetype2/source/src/pshinter/pshrec.c create mode 100644 local/recipes/libs/freetype2/source/src/pshinter/pshrec.h create mode 100644 local/recipes/libs/freetype2/source/src/pshinter/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/psnames/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/psnames/psmodule.c create mode 100644 local/recipes/libs/freetype2/source/src/psnames/psmodule.h create mode 100644 local/recipes/libs/freetype2/source/src/psnames/psnamerr.h create mode 100644 local/recipes/libs/freetype2/source/src/psnames/psnames.c create mode 100644 local/recipes/libs/freetype2/source/src/psnames/pstables.h create mode 100644 local/recipes/libs/freetype2/source/src/psnames/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/raster/ftmisc.h create mode 100644 local/recipes/libs/freetype2/source/src/raster/ftraster.c create mode 100644 local/recipes/libs/freetype2/source/src/raster/ftraster.h create mode 100644 local/recipes/libs/freetype2/source/src/raster/ftrend1.c create mode 100644 local/recipes/libs/freetype2/source/src/raster/ftrend1.h create mode 100644 local/recipes/libs/freetype2/source/src/raster/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/raster/raster.c create mode 100644 local/recipes/libs/freetype2/source/src/raster/rasterrs.h create mode 100644 local/recipes/libs/freetype2/source/src/raster/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/sdf/ftbsdf.c create mode 100644 local/recipes/libs/freetype2/source/src/sdf/ftsdf.c create mode 100644 local/recipes/libs/freetype2/source/src/sdf/ftsdf.h create mode 100644 local/recipes/libs/freetype2/source/src/sdf/ftsdfcommon.c create mode 100644 local/recipes/libs/freetype2/source/src/sdf/ftsdfcommon.h create mode 100644 local/recipes/libs/freetype2/source/src/sdf/ftsdferrs.h create mode 100644 local/recipes/libs/freetype2/source/src/sdf/ftsdfrend.c create mode 100644 local/recipes/libs/freetype2/source/src/sdf/ftsdfrend.h create mode 100644 local/recipes/libs/freetype2/source/src/sdf/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/sdf/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/sdf/sdf.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/pngshim.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/pngshim.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/sfdriver.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/sfdriver.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/sferrors.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/sfnt.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/sfobjs.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/sfobjs.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/sfwoff.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/sfwoff.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/sfwoff2.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/sfwoff2.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttbdf.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttbdf.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttcmap.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttcmap.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttcmapc.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttcolr.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttcolr.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttcpal.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttcpal.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttgpos.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttgpos.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttkern.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttkern.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttload.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttload.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttmtx.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttmtx.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttpost.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttpost.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttsbit.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttsbit.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttsvg.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/ttsvg.h create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/woff2tags.c create mode 100644 local/recipes/libs/freetype2/source/src/sfnt/woff2tags.h create mode 100644 local/recipes/libs/freetype2/source/src/smooth/ftgrays.c create mode 100644 local/recipes/libs/freetype2/source/src/smooth/ftgrays.h create mode 100644 local/recipes/libs/freetype2/source/src/smooth/ftsmerrs.h create mode 100644 local/recipes/libs/freetype2/source/src/smooth/ftsmooth.c create mode 100644 local/recipes/libs/freetype2/source/src/smooth/ftsmooth.h create mode 100644 local/recipes/libs/freetype2/source/src/smooth/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/smooth/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/smooth/smooth.c create mode 100644 local/recipes/libs/freetype2/source/src/svg/ftsvg.c create mode 100644 local/recipes/libs/freetype2/source/src/svg/ftsvg.h create mode 100644 local/recipes/libs/freetype2/source/src/svg/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/svg/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/svg/svg.c create mode 100644 local/recipes/libs/freetype2/source/src/svg/svgtypes.h create mode 100644 local/recipes/libs/freetype2/source/src/tools/afblue.pl create mode 100644 local/recipes/libs/freetype2/source/src/tools/apinames.c create mode 100755 local/recipes/libs/freetype2/source/src/tools/chktrcmp.py create mode 100644 local/recipes/libs/freetype2/source/src/tools/cordic.py create mode 100644 local/recipes/libs/freetype2/source/src/tools/ftrandom/Makefile create mode 100644 local/recipes/libs/freetype2/source/src/tools/ftrandom/README create mode 100644 local/recipes/libs/freetype2/source/src/tools/ftrandom/ftrandom.c create mode 100644 local/recipes/libs/freetype2/source/src/tools/glnames.py create mode 100755 local/recipes/libs/freetype2/source/src/tools/make_distribution_archives.py create mode 100644 local/recipes/libs/freetype2/source/src/tools/no-copyright create mode 100644 local/recipes/libs/freetype2/source/src/tools/test_afm.c create mode 100644 local/recipes/libs/freetype2/source/src/tools/test_bbox.c create mode 100644 local/recipes/libs/freetype2/source/src/tools/test_trig.c create mode 100755 local/recipes/libs/freetype2/source/src/tools/update-copyright create mode 100755 local/recipes/libs/freetype2/source/src/tools/update-copyright-year create mode 100644 local/recipes/libs/freetype2/source/src/tools/vms_shorten_symbol.c create mode 100644 local/recipes/libs/freetype2/source/src/truetype/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/truetype/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/truetype/truetype.c create mode 100644 local/recipes/libs/freetype2/source/src/truetype/ttdriver.c create mode 100644 local/recipes/libs/freetype2/source/src/truetype/ttdriver.h create mode 100644 local/recipes/libs/freetype2/source/src/truetype/tterrors.h create mode 100644 local/recipes/libs/freetype2/source/src/truetype/ttgload.c create mode 100644 local/recipes/libs/freetype2/source/src/truetype/ttgload.h create mode 100644 local/recipes/libs/freetype2/source/src/truetype/ttgxvar.c create mode 100644 local/recipes/libs/freetype2/source/src/truetype/ttgxvar.h create mode 100644 local/recipes/libs/freetype2/source/src/truetype/ttinterp.c create mode 100644 local/recipes/libs/freetype2/source/src/truetype/ttinterp.h create mode 100644 local/recipes/libs/freetype2/source/src/truetype/ttobjs.c create mode 100644 local/recipes/libs/freetype2/source/src/truetype/ttobjs.h create mode 100644 local/recipes/libs/freetype2/source/src/truetype/ttpload.c create mode 100644 local/recipes/libs/freetype2/source/src/truetype/ttpload.h create mode 100644 local/recipes/libs/freetype2/source/src/type1/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/type1/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1afm.c create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1afm.h create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1driver.c create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1driver.h create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1errors.h create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1gload.c create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1gload.h create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1load.c create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1load.h create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1objs.c create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1objs.h create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1parse.c create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1parse.h create mode 100644 local/recipes/libs/freetype2/source/src/type1/t1tokens.h create mode 100644 local/recipes/libs/freetype2/source/src/type1/type1.c create mode 100644 local/recipes/libs/freetype2/source/src/type42/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/type42/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/type42/t42drivr.c create mode 100644 local/recipes/libs/freetype2/source/src/type42/t42drivr.h create mode 100644 local/recipes/libs/freetype2/source/src/type42/t42error.h create mode 100644 local/recipes/libs/freetype2/source/src/type42/t42objs.c create mode 100644 local/recipes/libs/freetype2/source/src/type42/t42objs.h create mode 100644 local/recipes/libs/freetype2/source/src/type42/t42parse.c create mode 100644 local/recipes/libs/freetype2/source/src/type42/t42parse.h create mode 100644 local/recipes/libs/freetype2/source/src/type42/t42types.h create mode 100644 local/recipes/libs/freetype2/source/src/type42/type42.c create mode 100644 local/recipes/libs/freetype2/source/src/winfonts/fnterrs.h create mode 100644 local/recipes/libs/freetype2/source/src/winfonts/module.mk create mode 100644 local/recipes/libs/freetype2/source/src/winfonts/rules.mk create mode 100644 local/recipes/libs/freetype2/source/src/winfonts/winfnt.c create mode 100644 local/recipes/libs/freetype2/source/src/winfonts/winfnt.h create mode 100644 local/recipes/libs/freetype2/source/subprojects/harfbuzz.wrap create mode 100644 local/recipes/libs/freetype2/source/subprojects/libpng.wrap create mode 100644 local/recipes/libs/freetype2/source/subprojects/zlib.wrap create mode 100644 local/recipes/libs/freetype2/source/tests/README.md create mode 100644 local/recipes/libs/freetype2/source/tests/issue-1063/main.c create mode 100644 local/recipes/libs/freetype2/source/tests/meson.build create mode 100755 local/recipes/libs/freetype2/source/tests/scripts/download-test-fonts.py create mode 100644 local/recipes/libs/freetype2/source/vms_make.com diff --git a/local/recipes/dev/gnu-make/recipe.toml b/local/recipes/dev/gnu-make/recipe.toml index 365a663d8f..e58657b5d3 100644 --- a/local/recipes/dev/gnu-make/recipe.toml +++ b/local/recipes/dev/gnu-make/recipe.toml @@ -1,12 +1,12 @@ [source] -tar = "http://ftp.gnu.org/gnu/make/make-4.4.tar.gz" -blake3 = "1a0e5353205e106bd9b3c0f4a5f37ee1156a1e1c8feb771d1b4842c216612cba" -patches = [ - "redox.patch" -] -script = """ -autotools_recursive_regenerate -""" +# Vendored local fork (full-fork model): builds from the committed source/ +# tree (offline, reproducible). source/ = pristine upstream + the patches below +# BAKED IN. .patch files kept tracked so a version bump can re-apply them via +# sync-recipe-source.sh. +# upstream: http://ftp.gnu.org/gnu/make/make-4.4.tar.gz +# blake3: 1a0e5353205e106bd9b3c0f4a5f37ee1156a1e1c8feb771d1b4842c216612cba +# patch (baked): redox.patch +path = "source" [build] template = "custom" diff --git a/local/recipes/dev/gnu-make/source.tar b/local/recipes/dev/gnu-make/source.tar new file mode 100644 index 0000000000000000000000000000000000000000..0fc6a5c9b71fd3749d3df498953cd5071c92e3d1 GIT binary patch literal 2307891 zcmV)pK%2iGiwFP!000021MK~KTjN-kCkofU=u_;WvJOyXJAfc=WK>QNKtzy900Tru z<#gpZWm~qD*pf?N}%f>x(`gxkJ&H!85*R|JPx8GW0|1M}A zv<{yA=|Apg7k*y7ctQWdPw`*+eedA;{;QWS4_>|6gU?^>zkK;8_2N(eiGGTc`%m&S z*86|-{_@Lh^WyyGKW1rO9vqbK|NhHYd(WTS{Xcm5r`^5XgBQ>Lr2h0@`~M&Qv!^cN zEJ#%xscaai4@nTH+r*F3k)MU|;Z+j<9&|JBul0UBk6K9Me)ixefeKSKh{I^0!YB)p zh}!f=|4pgeIi0~K>`EqtG?SsLuJxJoTLrqM?E!7@j-ty z^0F9S9|lPS9*6n)S^i!15ROJ_kodhRJpHITK{p-;%I}N<>^hwU{vC84J$fTQ8ch8` zkhYXMQvKjTP5ka1egOR>f!}*nlO(^+Omy7^T>puXdqQy%#X!h8JdOFzPG+-VaAKZ)gs>NK_QS0;L(f>L=Y{cn|9q zW&td~`zbvG&8v14XKgPEpi@{d7;*;97P^}xA+AEKx^dJG2h#-Tp`o8e+JJATDg5Hm zLg>LigxOH(RWqv^^kf0~b=+v$#C`}12|JCO3(EqN?oUT*2vfx^18Rd+h=|htQ5t)} zx5)?yN)6)&A(wO*Pe(o6#V*bUHx6fjm5f-IC`z%ASctv zvm-)I5ChKvlH=*qJcUacPTWwxnOC-GdvLisFj})SOwIu=M2hTw8jdpR&kp9dQP=_U z8f_`~CGitrwD3JGLJxL;sU0^Y%v!|8fvFg#Ec6VrU=PEvJ2Z>V^Cq4|*WX@iUwxrvyhToS z#gi^${lxu`;C;H};L`2$vC%EV#-+S(c1kR=SPn_l?Zwf^k~hqn*5SAFql=GQ<;#nN zoxiqVozC0G$6K&6V>k=6uq`7B4dKav&Vy$9(EM>5?zSxy5a?EqakoAE_}jN{<^86- zjo6}W#x#=Qj$x)Sxxh>1UgzOAxY>u053JJP!UoCw==8%mHzV_4vqHFSRM77OUqN!i z6Z;#EHLN;UX3cT0Nl^8E!_}}aJl}iyGJg`MASXQ13(&_0Scc%6KL%l7!fPV>p0(wvMJKsQav{{5Hwj@2|J$i}#8DM>sMUv^(S=L4FNq1EqW*&S{tq zMe67A@B*MxMS>m3y8al67?{vKa&o?<|w1ZF{(JzRNRl<6WqVfrCiSvs-I){z$?C8S+Ar2%p~50|S!0;2*J z^_y@3oX~XcLb}f@~KqA6L#WGK85mJOF}6q*p^^ zBoGOBNt?djC+)0!;;|9oEPPCKLtVV1h_=P8WuYdO*k^HD)+$UUSnY^F&-JWQWrUv_^Mbm_3>c z$qtZDCj5_1Wj0LW>0n5@sHXWc=G#zRzL|+}emVMhiaV5-`&jfqDG1x?(nVn(S20}L z!goDUp4DWU5SO!ZCM&>VEjj)|gg;CjYQWQFo!7^?@mf#BB1dkaP3JYg8VjI1hB znh0>-q>||dVSI25t-jfyJ#y9+GZXjD%0K3H;=8f`*AeR*$lH*0{}#pETh!TtHSGd*z_o%re}8xP z`3@}G3F-f|sI(R#F(=SG!?@Rw(bH<`tp-Nz!&Q)4!NjsDU=&txA=>Ajk^Wg?7~y9? z!>Rc?2L2bq<%z?C6CS|FJ+EX1w4hU1=BRUsbJX^v4iF1!A<#75=-l6o%!=GhOYl~5 z;zr945|TBF9HI04mRJ64iCkrFRln0gg@@!$VWb}3Bgof-oM^w5lATRoDMbqZ4T%dD zAJ54>JP~Es&Tslw*CGe-tx0@G0;QHYcFa}BD+pKK)$NwIeFbcJI+&tmCifbD?vHkO z@+cvIC=JYmMBnGuVu%88fR>30!S{pkk4ifuj0TqoubD1T8<1bX9E1!E0UY_Br>!?b zQ~>T=Yeeq0d;ms@N+C2c8u5hj6&Bpn*fTc8$0$e!pt|uL%&f+-V6p_KZ`{;(M39zu z>ce&DYTjrFA{jnJRs~~%9VC+)a&(p?fYmp%xY!YhH#!H zs1JC*4YO==`0SZ8k_kW7ij%=JJYP(;o3uTfxC*{&_uT5qTE^-=9)VC11f+Ad(Gu3C zu{e9IZ40c3h*Ymlwean@gGZeBbnZP`9CORNJBHUAEbg?Eb`w;~2fzq>u-|kOkV(_7 zzMopLf{mrfK5)@NfyG+`$Ye{A@&b%x=3c3F|my zE>4F)Kii3WkJ@gdrx4KJKLsG0z|xOHGAiRT;u7!*F(U$j9JYz?NW9>}Za6{JtPK(` zT+C?U3G;@?2FhK~R2q+XEcQFNKu{hCyCB8Do!IdBqT|aXwQA!_y$Br_wZBs?@S zP$QcosYX2pWRCIhK1XvY9heM;i5#2;!U`<&)F?&ckl#Vm&;!jjMw2u=g;v)r_E03G z*HM&&?Eu+S&MB^UH;$7YvdcJmS5C>uuJG3G4n_PmFBp-|o?M!cBZuqDoaPy(+JGm< zL!fiA;e}%|3E~2w<01;7;c@r}8^h7i3x7p1Tz_bm#cKrKha(9xy&AC|09&ZiJCJ>N zgC~g}qNXv96H*H!PXtp^2l&AT8On*99;hQ@X%Ra@T4_i)&)Fkr+y2EyCo5#5!2_jX zX-jxeKStvP&T8y~^7D;^TRvFbX+rWOnm$OxD>v@?bcBAKMuE4#ySFRtx~&n{NrHi& z^zc#IHe#WC=B$@{bSCqRA6h6sL%<_FTGyI&`aQM2#=;JoiTY2NrrTIF1syG2)5uadbZeU?G}Z*wpKR1mo#tp7 z{L!3*kvp=&+w~g*i9U`%db{tfVVcuF{>YF!u4B!*ee{s6X#=`&Q%=^_7~FgXLaWo5 zyC?Q+b|+!Hw&T>DOu}_GHVQjWYRs8t@;Cw6Hk(e?FtT3XPrB=xCTgScV2Q?N&z7BL zFYK;wH&OImfzGN%7Tv9HWO3XZ1#4<7*zcz(Lat?+L4@kcBwGv7g3i!i+nV)*tUE;Q zc^xCeV3a4aAZKKw;M)_Y>5L5Y`vR@4zGeeIU7xHm@E;bQfZ8I}pzDv;wq}EFca76z zJ9twp1Zhq2p!{~yjX9#r>Q|j^EQ@1JxKC&-oUF2Dl@i<8o^~Z zio18q5N$?H2TkC!Bz28uX@WZ6kZC;F4=B3bM5})*NJa>uD?-txMk= z#G~H&PQWB+`au#pEb?iMbO#uGr%CF^P|eu&^eMg4dkq@g2I*D|v74h7o| z1`@8JvFVfKvwUNjpWe+QjpZ5x@h2Sy`YL#0V{y+FIG)^Cye6U@##y|-t`m^N{k2I! zleCv$oY`7NmiS}87l+Au8Ve@tyEl_*XMGw<>ZhZ%jVxWKB9>;&$!H4PF>QAI-V;e9 z*H{{?t+7EI_tw_fbTE2+YGVlqK|zja7qf{9-6;#ZcWc|t>@FvqspY*pxyIsTg5KSA zaEfY!6T0QejTKaZ zCp8u#;$uC>2^#A~YvQz{upf-VC`i}U7>L{TM>fwVJPJpTlQ`}NE?DCUXvTxm?pVhma$_@MO$iDRkO$2y1dtqYY9Qjf6-&|w%zq&!EF}BYpy(Z@ideT)_ z^0PXutMq4Wa5MOMsno7gdrIvq^<3?t=V4Fn?b3JTH`srzf7?^fUwd=f>Lx?gO;yiV z3gy#aq(G_+qV~u4_}~9|q=Hz1A_C+YOjUoKAh<;sIH3h+^Yf(d3Rg8Ca4r$eC5jpd zIDCALwYa3MY5?5aah0`Ig@1F_tCUrg%&`*wHg`Y;srISpx3ae8fZvwg$Ca^frESfJ zzSY{x8pyW--B%B79`LRF3@zTrIk>mFR@8;Cw^>?U*w#GM+tO{#0lii7n+lq!#Jts* zV{sqX0(n~};;jbYZQ1j<2=BJcKF))?EjzAxXt(ON%o*bUt`qFG2Pf(ldVE|qDs!0X{!q4wgO*WgmGJD z?dL(73f#~fds z2W_jdkNLJ1AlsHXLzTd`70%;4T-(xZEr7Kxqr+69+GIf3mb8~|*8QsnsBMwzQPS32 zOxsdtXdRHY8i=-K<>*R4+u|VI*|t{2vz4t^6`XAm-B+|#ie_82tqL&P(r0K6mTl>M ztb($wILA^X+bTR~4v=k?aaG~iRvA|njBS;1m7>^IT>B~z+bVM`#jve7t||!IDs7b_ z*j5}@DS&Oowo379tF~1JUt6`UGW6Q&ZN+PmSF5mVj@~iHUYM7e=0Mk$A6GSUt+x5G z25@bzyjpf1t8iEI_R-*VY<9Yl|>z_2@oNUsaH`C$^PCtj)EXEN&|Y zSX-^FS-je+bDRTLtM*Y;V#3PNYO{P|vCdZoR+~G=C9rDs?O*xzngdl^);2T`skW?+ zya=ea%-LRqQ(J~d&x5Hg%fBj7YKv&X{7a$6

WEBGJh;n0@m6LVl_%kulRpwJe9&{l|fsKlTx;?X7JS_=g2sR*=^eVhkC zTb3r)f~WY=!%AE#R|tV$W(q&z8~M7a`AkGS*gRfLfNf>H(QoZtOahiPPExN z!DfrFW-G+|Rzl6@%1o{S#%XH~(rnQ_&bGA%pji!^*<2a3Y`qr1%$AX(S3{XqwN(u= zTlNes!k8^{cg%yB)sW+IJh~ELR)gOc?S+c~X3N||i|}R3$i8cVm#q_Bwg_Cdf-E-= zTjsSqDUeWCXDUa7s;ge_CA={rP~?Y~y9 z-{9v6HQSvBC+mk81&k55YA{lRsTu|fZuViKhVc8N3VY~5z$%Wv`|1w<7p)V2Hy>11 z+cHrfS61V2F9R)GwYd^>SNhttx-z6$P54z^u-Q{a zSAsXI4Gt@Bt_V4+KiOKSvl=Y7LZ~eTo-ONGR8K3pR=swm@G}RLylit-2(%?9Tmytw z31h1!<5C>j>U38MMXT)tDr;^w;(PT&RtZR3jeVA4(rQk28CaSlmXx+ruC=eH4BLEg znnNgslU}5|+0j+t(^eytxe&Elx@fMsMJTl;>8=u}RzfU=6)bJ8469b>RFo6SJh)no zQ!&$A8DeejT`~8Nm4eo4dy8h9E5og=&QU6%YpXW*P<<+@D8r(1W`bp_0BoxrvXx4- z&6#Xfk+yn-GBepSB-`pDPbHXbwNp`wXPaT4wPoW{NZaZXR4J;hwwu1Bxe{PowFFhT zI%b=z!nVyDor6`IZEhCcHe;VMe-uBR*@`NJ+iFrkDadWnsi?M@tfzF_VyN4S9AyF8 zZP~Re1H3J2Y7X6%Vcwo_SCqltR#%Tpk#998TSh2l;J5m_TH0I@|5iI7sl2%&1ny~T zH-mzET5~f%xcYQg*4zvhuDZE8Yc~Ujd)ijaAmW}j*%?sW(?&Ogi+kGWW}tCTBa|6* zTy+|nI+L9N$USZCW-xN~Z2_gt6=8DKB2TT+6_IjJ+1V1XT+OvBWuGN@xz+6`i;BI? z6Bo-a#wyg@ilZw7&egmtN=H|MovX?3%9<;K&#i9gEk)2hrMVIi-4p1p3`e(~<_wf> zJt+*W%#<9V3KlJ z+$_Xyb(?!B%5HTt^hyQcsz+CfwOidnRtmSPdCyiL$Yv0Ci);aNMpp&8lPp-X|64e^ zQrz7<0POtH%|P!K;c4fOt`vP|Q+~~+&Mh{VuY*@wAg+d4#Qs93vFR9<~sz)W*xz`WIk*-~uYOmmg4BSY-- z;CXX%dCpY?mM9xnN0?nt;kdQn^vXv!3)QQC&z7v+T(sUQqbmdK)oZSFbY+;m)tj4v z?X4~@mLm67_g9pH_f`)Ls>JWD<`Gx~;ak$GU5escUA`*?^360=%v)bg#%n1l_cS=) z9Bw=Z(YJ!gQwr)^-LbWv(sGNTeXGeRrRctjAc*3{R`EBFIg>4e`K@kU zEJgaQ&Y;#)Xl_2qgxf2&JSi%@?{-WBU9I5!{rS4ROYk4Gtm|E=zJTSM8o zTys?*z|}@qi341*xiTnV{V1)O=E~53i=Z49DOi-;S1LeP%~948=tzxZ>!l0EDa2-FiyYErt=U7Fk(}BwXFsQwb(4 zzk14Jx71=h;c8p4Qn9+~Yr7IvSVP+`nQSSraP{cGQfy(xA**4+FNGJbF5i_R4D-#+ zs%6zS_jw@0N>4>mm|al1Zgrb`$X@?GNxLLDy(^~)#9RcOV4iQl6A8!%_&${(|hyO za&;vw%`aA0pEBo^sw+2tR#HJ#p*ojG)?BAKW$Kn(r&WN0r7g`XQMY7Ea|+Zg*-{lU zu)dtLzT$N2D@|9UFx`?ZEhtM@zomIa=~TU?Ux58{Ej9Jd-5Owji^|b0&FSV9qg!%J z3rf+|Z>bXEw|q-;%Fr#@QdJQ;Rr?$-!t^aYrpf|z%eSA9IP z%_}^&WJ{}-ohxanyRO+)mzvIx zRZ+R+DYL4i+-faV6qKuOsg%>rDJQr5m`cHP%X8l<9NlVTDud9i)KXO$x#e401e~ki zQYmI`B`T;YAh-OOO3TMBe@oQ>$<-fIDL!tsmZqgEKA*;CWx5JfocnD3(^6VAZlx73 zEg84c39c#_H+RKL)~TXg+zNcWx>($jcgq6Y+Y)1%Qz&lPmV&1Skklv=w`5BTO2jSG z(%Lkjs`7BE(uPs|a8Yr%xh*XkQ?4}J@_f9iFr1oap{bZ%d0DvSSA0%UxMf?az^*N? zQCGp%YTO9&`J!@gWwz*oH?GjqoMLdxtdqC#*>jA<2gT4_u3ioh+|QdJ4K znq{52=29XOO@r@mT&3lAg`yEZYyc2 z0@}4gOHVG_w!Wfmi%PaFEf=hzVB7i-Ts4ce)ewSfmTId%rb@`x@-00bt+fcKwY2T9 zvP9eRV|qF~t44XYg#<+wv`~g2F0qX}YfX%r%r`TVFx8MdjFP z@=O~9URjK7`7zBY#kOoqPcFn(qYT@UEiEX*R{xe-tpr>7n5qk~E!om!UGmes;%m$4 z=9Q(_mWG`zD!f*I?-rF^t3ReS0H)Sga&1w;wWV8{S8i>|md5M45mv%Qm9{jm(AttM zEhw|LL`zjg)>Q2?v%V5*i{MYHwpnZe@~IGmT$->c?{BFDJII;Ko(yNTvT$X|h&W*rJkZB@zz*TIz|L2XE5z zqN~SN27FpnV{+D&xu}}jGFR%;08o`Pom)$7X%@B;5Nei@EUKio(w^T1In@9AQI)KY+?GLY2rg&pPrrRMIbQq_A}SwU?jdRq*b zS`NrnQ9o@ZQKJ+%wQ_5V!Bfl3v=l%!_hil6g~cGM<;GS~I&JZ(cR!v7rdl#9pPCP- zT4qmkRdq{2Rg2C-<=9GrRdXeWdAzr>YFg#kOzzRLvSeidt7T4oZrv(trj>Cdr513c z%93eI(3@IZF>R$iT?61M*IEhaYSB!qTYEb2D%aYR!B@_yuPl~UNg?wjhq<-VR&H&k zRNB0gRoz-urL@H-t0d?38UR`Do>tXKt0lk9wl=3s+I(H6Y^G)4thq<1#PX)d!G*6a$Bpaj#jqv3#|l|#nD!8 zt!{0!>LpwP$W<*{mW{0f%(ZByW!$m`pleZUYCfoIk#%M6Oy`$HtCjI-wW?@~PW?iF z*D{*;QZ>56D`cVQ9WYq@ip*0~pI&$P50+Ul*9RYP07wX$MpPid`Q zEwmaOsiG8GnfIVVs&QMZsD!qXg|-wBwzB1?6co0yO?7b@w8fIDTA~WtGIpfOB4~@* zP}!a?1c{YM_|@xHRRV3Xt;YTDq6%nrTdN#ft^nGTTg%lytJPZV@@K1!t*ZLjN>=w$ z0NGp~vY@qD5ZUVbLRIOr#Ws95+vB3jXDe}}#elMT=d?&6i$P_}@Q_kq*~+_6S@mos zt5jvtvn4d~e4(wXkZMy|uDRXUn%%21r|3Gg=Hv zTZX@_0hs2tHm}NA=`AyR*W0tO7@)R{Y*`9Yt7fQoU}|Me)7M?7|uVbZ%=;2hrtQD=%GEmHMv4;IIHpw|K5K6KLg&Ib-|PouG)XKO0lvz4XQVDAbbn;zL^Ky z1{b0D3bU>n;ogg-E10>btYi&$m&Wof7~%dZaK3q)@^S&9Z#fehjPT{spuYK2RgvU)cpQ!=Yi9-_%9-saYOf*5LD3t5iOlw}uC+6hNET;H#zUpjE74;ViGA z9GdL%Ze6fn%@OYJ*TwslahsA|-g~}ujkEXRKou% z0aH~+Z+Gc3YI9R7D79Y~1Xy!Z>pMH!9^VJ}7r*4>oX zbAW=iw4@4-U5XW4*kIW;`l>Emu$pX~{{pu;Sgvf_!UnalRJVHDLVl?4<;A$cMQ6F# z;8M`RdHnEsUG!jGet56~fNH^24e3wdcicm_Bou!&2qm=CChw zQWk;*M01NAoO`wK!V4ER_+|x! z;oJtF&jA@Ob(Rb2ZC#w9C7X%{_g^mwHC!}8EsE4BAy;n=U)2R1)@^Wq70lthO?g?r zu3WuMd9ecWaPE}%mIEJF3rqSMeX$Duu;xjr1wmZYpi75!P>2gR<@xS%K*Ytn{AM{U z;!>MZ2aZ@h!h$xs6e4l%NqJQZlvv|l)>A%M4wtxC`g*YnG_lUnTMC_6tHBzT>t-BU z^Dg>@7{$6HJg5s(tSPkH22-`35$@FmE7nvV_g~hyGfCE^4vv2;bBN zE-q<QlGEDEoTWADvD zGd{&2xm=~Z8k*E%OyiQ~zQwS{C9T8@%jX##yGjAq4EE&$aHIRCsidb7j_v}8M*rgZ z62zRz8db2Iwkq)ahu&a0LYbm0edwI^wnlx&zGyy zSNl#`u3VpPXyypoJ7qaAWDRrQVmxF`I@J7dF(h(H!Y)NcK6!-oD*Dxn6VCxtjl0u zudR?^{w$ZmDOU={d$~$k!5VkUx$Ue$$JE-7QLp&ViUq?Cd!S2AL}T)H^nf=zi-7jjvbeZ8K8x?CYcy*YY| zftQQcu%M?bQMhoy8Xl|{erYcHT{V zth0t?fXt^DBo|{c>uU5bm#cfYI5O?^9AxH7!6$E)17|KC;q&^%5bG&EFX}=xYZ@{3 zpVvic)-|TRT3dz0Jo{P~R?~3ob-^`F`1E4LW=%asJ7`Klo3*k5RB-I&iYV5&Qs(x0WX)XvsllvRHxixEzr>OmkYq0ssgq-vjEcI%jb3R zoHeJcuhEj9CqX)2zW|Qtk6jUVRpjK}tJkU*gF+wK*7o+^Ac_-fEyDkH5#IUog?h0E z{QZSOuh5&<^c?wz4)*ZB`!Dxi6R`6p9tWxmS6&vtW&oGXhJl)ZfQ%9D15l&0B>blQ zBv8X}FoYX1Lk}-L6ivq+_&e@<_hA}#MuF;J>|LrxK+zzs2j3<^H)|<%3qpy4|8;_{ z5Bsis)ejyNnUK}hrNU^l6npTdC}8#DM1>f^Jr1G_hmZt=Fpl7AzxR{SkFpfHR3kqc zOi{6KASzb>`$mSPgw>p%Z}2AL8moen#UA|A1NeQ4a=_LRXzBYN$TEioT%E zBea&HK_<%J|AU0qCxGQ0!}4Z08d%=AgPOb#YwC^s0eqM}U^g^;d=_q3;A>GgaHa=6 zQqvD1Xg2=6ACCM^I0~~zoVafX17qaXIqRz*r%?dc1JFwfqIW9G5s!Ke^%zfKl#dMW zfNsVy^owK>Wk4>IN8I-eH}Wf#C7Zjx1blmD#2aQg++mp^-(lae&+o)%(BVhvuASI z;-n@?{5#THoD7~3Z9U_LTf=NT+JY(XwO*(%DN@vL5{bWsOA`St%8sYr-xvRQ9xNQL z4xWjJBqSR32@^7U)C)htGZbTV6Ya|bkS&r^kxr1ZOjE(Ai)Rt`01pYSUT&Q5T;j<< zVI?p7cxn@P5*r{=gg28Q#Y0Dwf-Rhfoy1Qb)yDux4UW*&v@;63-Z@AD5xmOe-G!3? zXCL3ep5b)q*X;mC+>k!a;{etjrb7mpusa?3#27La+yk9Pan!{1&}+c^hi(6cHv1?W zZQ+6NN&g9Yo;2Qo@u0aJ4tNAhNiC#tKYPICscHe_V3?4!fV==78pm)=hj8q0VzAi6 zGR&Jy{+D=saH1gZ1HBOkQgGEp13a!182SX*O-7pvTS!k59uP+YkM-biI!k7k3O}R? z!0|v18m2^a*gSsakgS{t?*q>C)_$(8n3j=g5~s0L)u$W)Os%qg*l-kQUJurO6i;CE za5o?m(7UKlhH#pGEF(b)JsES4gAg~4n4+h79d(TzLc_SW8M1#G>y6%(E7SBbM>TuD zb>ldJtHaOY{}Fxc!q3Zt1Ns+!3jglyK0kQ%r@e#c`!C@C4qn3Nd%ODwFaD(dQ!Qk1 za{ozwYKX_4hurBiG6LaUDDojoPv}x5iNHMay!GlOh);(k2VeQqkveIqn=wA~7H#6$ z@ZBJqB7gaTGnO3ndLiGmb(%kDJvXi6&k3}M7iS#7osh)$>TPeJe}9MCOWI2NttiM= z>g{>!^4L$X1l&@tI$Wn0rs?Z=gqPRn?#IN( zg-YmeXQ51kUtmgGDg2IBG78X9((pdOPNi^3N?Ih&tqG)&c`4aL+(5fZx(X zoZ1xzRlqX;{Q1V&xSvKiq@Vm?Jn5^qcX#y5I~04uwABlKkjFj&5sasqdLNKc@vZ#b z;=kVwCoK^D^utG5W}Z%PAkW@U2XH%ngWJ(1m>=U|q`tP)DO|L$6Td$M?>fPK-0BX4 z)%J!{q<|;7;=h)Dhq5@CfKWQYYa61au$H z0{`-^KWyHC9FzIcAH^0v-!#95Q7?W-)i#Q}_rbHzVf69qj#YkoP6wx>Q2kF3DYEn~ z4AooM<3DnwD%82?|vUl@7za@q8>@S?}KTC zB=^?m4_cjRfFHbzf^UP^A*EA4iD2~a z2lC$VAx`d6cP>9pVUTdLKTd-r36dCw3ZJwF^5?t3_#1C;onv%Kaw4MKNZ*VTK0xPF zI9W$PG)eCfB=5H)_}kZiLJuJL=^-5{mcB)@lEKS=$g6^yc=H6-dj@$bVP zE(W&POFQp6@gwYqZs@1r9;p8P6h!j~>HZG??z{t?19TPr(2qWXSC9Q9rGtcjwY&6J zVb?#!56A(Jhg0=-_}G1i1`%Xv=`_-hoKJi4eb@zQc$#GYzyCMIY4&25E`E#yb)5K* zpm@KHhb@XAZ~Yz@R^UgF)5niMt00wAIM>_X>62DZf0BRxD#!vjok0e>J%QhQ_-pt2owcaqW*`$v^r@H}us9)QqEE@CTeb{Jb@w z&s+WcG%jKv?$LPEOS1r`^LC(rZ9TN2!i;eYpFpRX0)x7PJ=4GDANv4@^GX9gH|$xkDAEYSM%RyjZ}owbzUxM<{`B`SOQ&`oaP`7D{xOcx>XX~0AAvoE z&=v9@xO3jc2`aFyenM0fj^PN5_<{(>?K}FtK-E9_f2f}xN5kN5iZlA--5vj-zvm-% zKJ9c8>}NXkAKxW^w18bT@BCzxCR4a^c+R)b-)Dai;!U1~tL9I1gGAnQ4GvH>!dw9gLn+A|2hnM zxM1{GE5X0sr6HO>Q_G@&ey?%MI?|Cw}IubC8X?>O35ysEAM9#+?ucl*Mr9K&-@_q>tXE<|Dmi zH$gH8LcHDj;TSnBoYpk-@$>;ljN`$`rLnI1B7!QM)9&omCu`PMUtv1bR`-E_GdCWv z2NV&Y4Uj+)&h@tcK))0&5k4hHE%kL61S5Q|_rSls)4%9P-vgu5qV!kT?SSXpdC2%S)8yL5e@bVx+K>};AH_QJ+6&3Z(3E_vwggE$1t7*Y^a4vJs_j* zkOi|p9W@j@slJ}we!Bc}tBx*y@xC5iUmsoE{_;I3uklo@yJR{Xqlpj=+X;%c=nYVx zPp^+Z!ShG&&(6<#y}3~zF0Z{Kb#-)odv^Tg{ODR;eYw86yg6;*i4GPm zWuLYpG2Q@}<}a{u;))^DH##PO^YoB@**URre@3xrTxkD$@26q6HNN}bZ~xohd$C9MzgI6`9=v*afcC!^ zFZch;{`bG*=g*2Zo{nJiuTA7h$fMy`@-j|CIJ)>9(uwzH@6YPu^7ix){uS>U9qTAo zTlm11^`-%H2CfB7z$e`xMYk3DqojFkK&ii~OT0D77SK@1G*X+be^QqZ&-Ys$Kii}+ z#Bl};(x0d}f_uWe$QFkDd%ZZVd=K6vUy>QMZzg7j-36Ho*l@$#IOsJZ7L0y>cLvZJ z^npQ(bnlR958b3H?2AwKPP?h_HU{1L&op%WycK*4RI{)2k)yBjx9a}xUcFoO&uYQF zifym$YQz~ycuh%~-bHNs8{nR`5&uVSAEYA7zT0Q-qg@(*ci}PLUW&3CK zl`DTwxeSMc9w==p_T;lIy356?jR=JLz+@#zhG_}w-IKq~O)Gav}G-;{ha ziPP{~zZ>PgOQ#*YrJm(>!~FvOZR0PcU&8M}0tD#YkJFjK<7dG)hfeqd)a2Ufxuj30gF31yHHV*^TSzM#soLqLY1AphI z4R5^va&~@eU*Xvu-}2i)6|j?_OaG?%#@K?tJ|~73;ZZn-@OBZy!ffj zUzyKH`l3Zv1S`f5zT57i0DFA-`ReTawACH=8gF4merUYS2H6igp7Vv?x$2?WZ)7Lv zJLmV?qw9~Sx9ua48FrZP?a=92nHl`P=Zp>~!$XTZ7_|eE7LHASOanVVvE9om?$E~- zo$t|?u#^0lU9KJO`1sT5F}1#9{_vAQ3M-<&fNr}zWho^K(kxZ~*Z-wj&p=jh({bg` znj|H|sX>D>zw{P{3y)47dOOeHuMfIi>_h$czdMuv{1dd!vxnm*Q#T*NAjWri44aeu znq7b9cTh5rm-r)iBN?Muo_qZGN*+(*F>Zd0dw->;IidC12huw~J-WELIwIoB_hk71 zvAWBT_-~FSF?%?NThg5Gl#V`f3l4zQS2l=x!djt`ewd`$L!98cfdJd<`iZ;l<2zWv zk#8PhHrH$@7}DpXpHADKE^lskc0d6k2KDpR(d{Q1y)?j5oF262$uEZvXY)3Sl=$8M zq9^qOhpLRF9wM_f@49E~ySIhc|DAh7c00Rn@+f_IXxg)c@!dOkq>D}>`nHmEz3wRR zBYwtgB()Ay0-6O3ci5QOG@Qjy;eSD*8=CI*w!gEhBSiGwTOLvC>eJ=LFNdTd)94iS zk3>+gwW^cTtJ8~<(~IM?Q&1d=E9jElkJb$HKSC zoUcd7s{7 znyq|hI%mhU`c(P7s8f~SYxSz?0i$kJJ|OB><@Z{NnE!yQRLpzQC>e7evP#FChfoQr z{F+oq=iC1>wf}$H{(pRV^~>4C$N%l|zk9m}FZMA0ckjikSNkva4qkHn@4c!nD z`qkOYOGbK(=?e+S5yj-Xh#!JpYhFo3rLHh@EMg!$229N{tRg^!Ebk2(@hIqLW;7t^ zdj>v(Q(*wdT?oPz4xK|GbSK)%Dpp_+=u6(6VA8h`OTo~~1U&(r0xq(kM~DqnyL^lf zAWJ&c$%)6fo@9cdme_YeDhQ82srQc@E(j_`!^;-V7*SMFkN0UX_0cpQ1jQb`nI2Ip zcJV;IHbOU>8jq4r6LM0Z{D1&UY|gGBt_(JUC_9b-SL&-^2CHdr%GMcgq2ZmwE^rps zi{c;;35^5uLbn9(1}+~Ab%X(EJ*GrldVv`F(`*>i7=IC047Nlr7ifi6OT)8Z3UN%7 z@O2nO>H!vF68LvGoSavufnWKA1MH(Z3A7C>Cu`my5Yi-pIUzg^nlGPio@!KX>B(yX zL-QEV2J7mOkaH6G0M3k0ZOe8i115iHVXPfz4`DjoX_zjw7enA*iW0)0RSXsiA=!9n z=|zvgdtv4PQ9!Q0yo%2_WNf+@^cjq;%cH|a2w~{u;BXB=lu2`UQT$-q?Gf&YXa*w( z`FxVMGeble?HlpEly)Nucnv2BdW|xs42k9G1<@n!5l({J})-cXZuNx#7yG=+#I7lI3OmQ=0nM-%cT_tk1g?*2lnc53@INM$U&8P_hj|k0? zRt6EiQt+uUcLW5!H7A~shS-V+e`O)92%T=#4`j0ADV)cNpCTAh2^bAXCWHnNf=n|4 zS=W86k7`^iCuJU(eRf$|ka+PrJn(cd+^mv485+Go7Ze$F{p9_}4T{0$J}_ zKxzk(=*b;H!##nWHh33#SRwIe5Cg_3dy!FqKzMj&9L|`IGz#KrieS@Nj|9mb*+B?j znEq(p2EQp%eU zrU)5+V7em7j{)xyuIeNsg+0ew9|FGa>}KGC=vW2qTnCckpqC-A$V{>{kTezuy~c37 z^ibKaPBSw^sRMaEj7@=#V;WC=+rL8HO%dkPIKNLHArA&7d$ZI8(wG)s(0=w(?6 zn(9w+cMWlPcI+6bLU)zEt(e^u7&{A9bi%_3$JY?(u@0jN@iaQ2Mqwz3~Wq*QSe z9S$EyfiF{Fw3$C+%7;%sE{^qT7 z$855An&v=}i-T0SA){7qvcOG=4(xr`93iG;asF3lmwol`gDs(2x~2*=OJ^;IpX5MIMNNU6x9O)5E-{ zBgWn0;6kMJ(TGBpHj9_ori{r$`5@GK6-k5i+h&LKD|`?;cAuifI8vLGK?4J|;ImCx z3W+(R6cLf>Q#RXao?7=rj*_p~S29l|1o1;z^m4~pcD=M>MpNC{>NoC+l($0|4N zQKA%9YiJixq7n_1wUicuok@a%%m!t`y)Eu#L7p5bM%NhWtqq817D z!b!JFOriVNd&4fE`v^3*1#BY7Ro|S-8Fh- zVGJR#14qN9X%lA^_M)4xdvrtUjpTd^@q(w@QMj@dBXppLzCPq`^~~K$Pf>cMhhaPl zgz~rj9k#yG+a}yO!W=>)z3GynikbXp|94n~V_;WtWX$45SwgO4MFQx69`~Hb>5O-F z6a}qGRwz_Rh_Sl4s%XHXB*Ie8^ovJ7wprz1XtRVv8zvc*BF{W4cTzfYp>PCxm+um5 zLd11Ii;cHg7{#WL4Ia5T!c@KKc2NHHT0PcM1fcc7&PBV_RiXAl*Zmj=XB zj8oStI8$C%A-VW;3G>6=c8Fx~xPvz`PmmdRo+?1U=VW?(!Gs866tzIqN^7*|=P*y5 zIktS-fC*&wJ%Uh(&4wuSI8NBkN4W)=(d5`km~WGaN)~A}@(PAAN1{OZHX+42gPDpX|$X^kUMCG$`LyOV`pw`;J>#!FG zOz8T|>1MZ5uXtQ(QHx3@r$V(~DwS$30jEq}NqXPhLYqgxui zbdQlgM#t3X(ZiA^$hRqsnwLgP1x6dthlLi@wStM+uHotH6ul{MD90#;^bo&{moMh} zWyTOorVAj2KH3&+szx-&xMOgdoW6YFpK-Rt5Y(PEXQ<()}fx~*e>w#abPl*>i*GSjKNiS z^gwDrqX(JEr_qQ(>|Wl6t$E9=)+fp-M?Uecz{8aH1vMqBLz2QOe-pgP84lfoA#WhJ z)R63bVU`kKqAQP#V_`PUL>9M=7v~2Tb`(F1FiA4c%+qe7J}BoQ`?OHfBm%m`vliFro>tQkxr=<3Rz{7JZ2lEvW*6jJ zNyze<+z`CNo+yRHy3EcIZLkq@ni?C6JIKPOc`{XYO_51Iw-PZYE(N|g^hf=MoNxMw zZ4j__p4bp^C=EKuG&eSlItK4C9~rISvyF`Xd+g6P(+GNY;y^jtC4oM%KvHiG!wFwO z@Fvmfu~|1Ub{IcI0;v(!43Gumj zknhn3L)XdPE*W`K21Z8cM^4eQivxV#LO!DX9$(n+!AkixAJ`ALJV$U_HIHe?Xa~kt z&*eB?#JSDGtCZ1+y#Qq0p1Jl>V$vpN*o^Klibt5W1JorD#>kCn*T^vn!Li2-zHpn5 zh;CrQ134Y?JSsyVgzfF=E9mRl)uqEYuxK*q>V6N@TC%yR{atke%Rs57_ujmDiD$}7 zf$^eBMTS^SBAQgiq)(Q_+%kx-N6#U(5f6O8h%4lICHsOOd|U{^gR;*OHjOljKIW^3 zJEYi6Zq1bLPvuP}Bw^%UMIDeAo*62Ltw}c|f)SQnay=3e8&7%c6^|%ih2j|Rj?jaK zGoc`wOs*`t$h6`>Qcd1e@2Xj(7qUza9|xF2wo6JRuyho@T@jaLlZL=*Y1|1@8JyZJ zSxlLkS*se;%0^DS_>V9vvfNDN&jzA6P1CCKS7l1cLY! zz;=%zR+!~Lyn&sS`XX<;$MwA=D6UMM;FICr)O;TJSy?M;=9LzeMJpuRk<2EQh#>m~ zDnxpraRaf1&5DDwDHHAP*cc%#!_pN2%r7yTuw#jHJb(DUo)r5G(Uu6$p{&SiIGl?( zO@mZN68P3fR%n1COfr)moLE4^J&%Q}-f#=14V(Oyh_0cz2aVdjK14B-C`!^s8?t3s zKW&6@Cn#%k5Yr=@;5pxUuc){nV?jBJ-p}h`?pkVX)d`&RAH`>HEi_D=5vVpHrQ6`x z3EODsq$Np%2_~gPer|Fhh?z^N-VTOdn2v{jI>*%lD@FW@rDt}2a5~{C$IJJ)Hez4O zU0%hWWJ1O=Enx{HcS=vyz3`n)P0%ci4ML}FA4~WS+u_+@Xk>-F48`=rE3a2hyl}l> zf&m9nrXA*aGZbg`0I5A+}O`PQ_iCHappsU`!{$0Ms71ZAexl zhu-ipB^g-4yr_|FYoB(WD524v2FZKli64a~Z4Nb2Zt4rav9#i=-ZWwRnQomM*igjvS=xhpIPgh}!T77kz)#q8>pa3Y zr(=K8!sLW+tAsTAllWpa!c3)cBmpPv0M~t@ zF6H_(M4qwMFC!LncBlOvC#+S}gL%}?$uK3tLP=p|A0UW<}{~GN(DO= zRGykC*###-kYFV>{FlSOOvs;JVQL3Q&h?(OBQT(#5?;F!Pk7!psHjpPQE1KY;3ab)-M-jo?u=!7AmF&_0WyhAr>D9#N{v4iP!%t{75q7@wz>EvaI z6{T4RSb2cu9r!(abOUBE(#E}4^}}$N`eV3p8wevB#_&Dp-97ERO6?7(J;%o7O_%dX zsxHFK057l&*dy}+FawN&#IQkB5-=|ystl2wI}VyO(nBa=f4Rvvyk0!*Wc}%g;-ymS zb%3pjNB6wWeg8hDutkzQxWwIuLIjmYH`wcmVzrzQD^z%yii3Q!C4KIXeT#7 zUz886LLMc7qx(L0&4{xx3!^DA14*kPg0D3w;}IvOQ9Y=BKgJTDH- zA=jo9ZO!|GkaDQ->DZSbQOVk?mGo$aRl25F&Gbd%!|vFv=SJo91x?Fppu4&@Hpr3o z8My_znQ>zBb?ED^oRcUKBYoF8YC%6F1LSrS!&)S=+PUM5XeaSilOUU7xm7KfdaOZH zsLFP!c{4x4lrBg33nbw`B;YvkO0O`Uciz6O7nMwjoxs(5JxP&Ub;b~aKNSa(Ytc5A z9dQ{caXCw4{uh4`(Wo~m?rAOJ3!qK(&hzNQ*K@&2^Mu_i+&a6E) zW*rh|DzZz4t{Os0-pukCY7Q4QiWh}ZfP7Eu1S0PD0y2v{40Ul~_mBgl3PybsNTJ=C zJ>+Ep2Sd?qMeN?Xj+y)Dj$kbJVLT!r9!+jK;*dSUaK>GXZq&&rZB(7#P2x0l8 zIcI^nLghYdX_yRhuHUot@GvroUN$xnmSy1_=rkX&a+GjD{3EImGh7`o>=gs&M0cg$ zwdM#+T4MzfhEBQmV4>hPBbt~-=oTTzI~ph@_(3!+TCGe{%Uy}}-V4s+F zcaRtf+<;?7802Q*#vnE`n8poOcMVy&SPX*&XNMEp`eras7}Z8MonJb3k1gLiO5Kg2 zHGW%xdnTDafh5XXf0CyeI;uBL+w86?Sp}V`1grEU3}5hO!b324jxQiR?eZB^2E?$j zsw^}Hr;$&bPT7GaT&BDm?a%fzfhZxHBZCh*^?BJma!YJiP>C#_wwl?vUGW#i4>AmR z50yB{S;6|pgPvd^(z~@|oegAS@hXOod_tIFLwv_#7a@%)?~}^M-I4oHr+OfJZ)x0z z?M>pgGTcT&qUg{!osdW4v5S5OPAa2=;4qE_Mp`mJvx|fh5W(4AMs`f7Q3jMSJwG)A^}OHO`06{3H!VVCKGBQ!q}vAII}j?6oVX6wfBOU>E6rY7`{gt zQ#&E94cwH}mgL@CUlzjSn4j6@X2M?BHOk9nGBQx_S{<F~jgce3O33PNlcQmB6%tWh&W__^QN>*ES3s3?>((U)a4*xh~wDFgm&( zudqp zRD?-+;!yNVikHiytTLHEkjtW_p#jc`ccT}Gl~6diNx)cyLIrGLLBp00-%W-&wzbEm zk55ie7zytf|Hvs1N&PMr5i^m56VK#~WWTFpsxAtEiflw=Utk4z$1_4GJCwyTOa?Vj zRz{_AWDZpo^}IeO{IQFe2liMjFjB40X#^TJwn`fJr13r$FT$+p1aL=kEG? z67d1UnHa^H2gSxc%OCLDnKPC*3hXIOl^@x&h*`r(2LC7YKHbwe!q z{+P>_G8=M8)_f9~#S7tU7Z;34BMlZfz&&SJG9FCcL`>dLhc+AdW|bTOH;NbJEzPAK zas!Z&Q}c<;haZ>SARKdEfMEuL#AeNr6Ye-?UuU#rv|h<3X9XG>SVr? zHrv52dvbkw<1FyvY>CKPA9;`bEPpA`}l3*^sS^+CUnAy+eEv*_E% zc}i5MRD0e8W@vn$1xP+#`Gk9~5~OpfAw((k-2Ux}#q7FC{OFIwQx-cRbd27zWAPTI z2C!0wnK5RYz!Q#PW=yYME?AfxOHGDB^8QmqD*a7PAB2=n(Nu!&vw>FPJx5TNhb_bI zSuaR~ZzZf|Nl`Nm8`((d*!_{@KOR$blUTjnq;S}e4SW(*$=+T|UFo!zI^|r%R>wHm z)PXkzkrB_7vFH*ephS%?T+&Wrx?HxHE1Q9nU~GKxcyivRsm)Djfe<=GL52yZ(H*r( zzh^KcxhHKh9Cz8pONIO`_pt{TPtbF+ag1COwrRLwgO)~|-_-AlkORAe7b%PS`qPHK zDKL2+xdojaCxIJ;xd_Ew0}1zLL#F#h;vjP&W2D6`R$P>ZhgKO82(@RLr&>8Aay(H2 zu!5kZ&wd%Cx1?`A(VlB~r3u+&E)Chpc(iE~zS+PEZC;f;qj>KaK22wg7mZDJDLrBW zUUQ}bay1lg&r^nX+EF_~m``>MlYRiR9wwt6X4NuWr^z{Uaw@mO`tw9sL4znBMVEGV*L*HcOOJP z139T!!&L14{Dhl(a);B}Zqhz)nndpT9i-p}mM%eDiVuMTxcva;z=>dc_h0lUJTjHkx^xlMTRCkV$vL2-2z6wcrWSgc~!eGr`x%e^|zcNGx!p zgM(C**RljUMnE&Eg>i-)KpS#G*Wko|98;WAY#j>HLoO?Yq^8mKRY?-~ z$btF7Rth=#-2RGfvuxJTDa{S5wuV>cB-&0lb2_x)wL!2Xmwbv0pR$wAa)mq+FUQhM z5Um97Y;*ivNU42$#=OL-{_*1-zC6$g0plQuBZqiKy|S*&5jFKASoF{^?Nswb^3IkV zU~#12*aET<^f;%35U6EqUYsi=VAkZpH`;T&Q z$>fr$@$rc|?S$%(f=p#dDL132mRfcI)xnr)a(TriFa>y<5s@);*^QhuW_Q=qsV6Fl zt@id?nB3~dlre(+zNBn!TU42=7mv04R>=3qCW@ZqDO1~8KcsYaQ_2j(?hHqMw1eHz zQEV9a&p{0VRZeNq@WyUV=ntx<~Si_8xpR~&BHPOf{iH;K_*wc8>FAhKtX{z20}NR zGepPL>R9Vpalgjw8lG{yJ*Rk}Zjf-;o|DYqXkA9d;vfQNw6ZP|KhEeXrk8`3x(;B6 zVcb9GYA+ScBe!#E5pra!Bp^$qH7T%#9!57{Y(W)9K4<98!GXiSl;9B7IM)u&4NSU&tf63Tx#R)@oDCx(I@>R!>vck#gYM zQ%b|&NNTd(IX0e(k~^Ys>wqdfLeGpa(RtZ&BhZv!4W&7{@hsiU2F4kgo!1Ga-TaDb zQLmbWZ1`Ar7;7(uZiMVlW_(`R_#C>{SGzmHnGFPr`S!>a7U3IIGl(Z}$ttf{&uk9q zV-pg%-!SPszCCWGVob@0edV31cA4Ce564EYuRC56YF)pfb$<66Ij0TP;+B~NuIfN+ zCT_GOip;{R!;iI@#)pA`ugegLS16>U(aq% z)y?e@zHoM-zFwc*o?U#T2C0%;2%x%Z7)&$+Nn391OJo`Skku6a0Df{_Ok=)(gvO zeK@Idk@4n{c}7m&-4BMZmnzPjZWb3w5eaPCuL;-=6(^+Q28Fo0~76Pi4JtZlO`{ z==@w=oF2n?kFI}FH>cM>pB>XWT%TSYon7N99baBwV=I>zOhzwT99(W39_Ko0nK{M< zQqbwoNFQG=&T%EKPyfdkm@86=%2NrpfAsPClor~d3GeF}3=DVA5QbvHXwWP0g(Zw% zfW$7<=gX6`54bHtILDV4KcD_`>ugE(==~)w%zGHf8I1=gMY7_zZu6?|~kH0M2=-E^c71xV7+sG@_1RkFfcr{Uq|tFsT#)$u3U zHkCWdzo<{J74J{sv7?ip&*(TxKQPEMSreEYwIJ)r)c2~zwMDQbhM~Zl8IX#5dG&Hk z&mdy(!BLKoZTP)O^1+d|wxS;kKBE|u9WZ!>GYd<6vv6UCOL2&>hazF{zy{DMrf^~X zp9NHD$$!vb5zNXtiWv!tz?N@RBO&$BrqxN~5#r}5aWab^D5Hn>;m8?#iOs~3!E7LD z4jW{F1^I=raA)>_&V-*SDq0M;eKDpC6L5^*@!tqv{!1+Tmd z5LRUXspCPCx;~@}JlLwlI-EgDPK$>`<}o0gV+uESEdG~iTELbz#50m+oWlqM_l9Iq zH({XS7Yj2lUpkw`Au6|trctgZkuSunE2|p+QtF1B-%5;F1B0r4F$P-kRYRwYmJnTq)U4bNYnB6h5iVau1#cfKC-U5VaY4!g_PgCh6g`XAch#twA(x z#mV5Aj`w)>1B~bhWA_ksduTk&y0lFXAsN_AXmRs;ve%&-|HZscsIZpL2BTqBs(x6aM*pZ2_jT(2DK%a=m~2a%R&XOC1Lq(3Fe~Y7-oYZPNr!%8)78 z6k{!^*8mQ7{D>h9Vz9Pl5OhhuAladyE>v)Vb8x*ia(iJ4Bu)XQ$;AqJo7RtS^15S+ z6;t%%gK?_o4-S`hcIry9h=w1CT5V1@mfnU_>McH{Y&)F8YmCu{W8K_zVZbKb4dUEk zPGxHSMe3j>9M0@xh*%P%Co_=3UXKE|i9=kq0I{AFs8ibj7hV-71 zpP-dn%1YR5N1)Pedj(c{f*ASf^!)r#oy5@=rlUeZhgJ1C zuj_1a>9bJ)GrdK95n-@c-zdw!m?qt4pl^oX;JkCdml2*rW-Y7Gj6h0kEawd2ZZei_bP4U47 zEAb{srzgUO)S;DC_BM{+?AqG2+i(bBgHyc+qc{^aA3d+>4kh~)fTco#1K##FG`EmC z?F75wBOZWEIGvDP=z&I0F)`vl>L!T13nOL|?iMfHF+Q0nPK@Gs(xk)bZRkTr9?avv z{f#7A#&<{uC@NqN0nm0Ec^4k2iuTNzO_$rMzrqd!iMG<=A*S0ve+-wbX%1ozNu|Bu zs7QJ=U8;RzJJ2*ygwF2*oAd#ua(H+PC%pLsoSj~nZ0~p*q}X80lBrL16(l3|qV<~e za0;yClEzs02eoyI-_SYv$nOLztG!@4GF=*Z2?X&K2@97G78is1DC;j7Jsv3&!3NFe zbT9zbNWBf{-*?@#HH90X74)V*;OPe~GU#dH5%@mS1anxvK%5JPO>P*|q&ixD#YIh` zR`s250%udMr|)i0KVO}kUC(9b0hLF=cE*!-n)SlykfKYz!w)7tYz~U;x~XMJWabKJ z`w^(@;|UPszuo+-UOwM{{pweBiF<*-dv)2q{e1P|?EF-rXCCi&Su?m9PoRB}&OgF8 zLmxIyz3mP3@9(H;Nh|HQq9FUh9p>wW!=!=igT(hM#u%Z3kLNMI7=Bd7=z ziyI^fp&mio8U(BY}_xn~B;QC4X22)5wB z;zxXoazRmVgK;z&->fLVkm0xE!?jKr3`xH55OBtm{GPcq@~S2&6XVvDyZ8FVuMS5I z`!Ge`@lQuTpSDjGbuYMqd?Y6r};p#4|F~V-v@Uu5=*6FXSNCf5Qcn z4qvyEg?Iq%g}aVlKKFC+4C=p;3=69FU3F^xX@1cm$Z% zwr|pnp$X>J2!mp21N!_c41>3dxhN7H8mRexz?t!^TT3m~S=3EPtY-UiiiyKOkYi|J zI1XZ6EBQsrNjYGZ&QR73Or}aFDTR_rk)PiuRRvQT_b+ zMt73x*flZ%J>nHJ?~*{2*k}}t!gPF?Z=bLg_lP&=!Xw^>9C$OGTFv8%MU?0D5F{|l zQH4?$r)v-~r?uo^`YiHK%O9gy4MKl22?hxxu;Cs$>Y;5rfwciTAx8U+jh_Nchgacp zmry_bsSZg*SUjGTIC+!`k|~z-mHetSSyTzbK@_9s$NSrGxqy?hbeTPrF1K*aL%9}y48+l~@M)`KUW!9OrUvxsS!O?4Dsxv>BaCoK=bX=!pPWl5rM zBrJ_bU>X3b!3OYOZD^QCZU9V(hR9sB5$j_g<|T>eYL&aF7YX5JJDLn<6W<2;)+KD*BC?<%6F6Akg@G(tEzC`w-3-{)I%fy<-$iz5aRfgRT-~W|OB=B?_U!%#`@#A?Sm9~xcL-U5dQu8K2VlnLwiXLr}7|I{V zRPA@fvT@tnV-%_@9({PekN-b&nG~L0hKgCv+kNx;S9KZ+%v8l^S!NM`X^ZePZGzQoXP;G^$?4=3s{-i5t5?8)ZEV zA!@TgXvx;p zOU*MQT8=V~1zU%r$<&4t*{UE`(~`>-pLE=1Xl`T$OrxM;W8j&2xm8Dj3#79I4ZQu#tst7wTI-O z3HuY{>WMzjg`cg}qNwge$9ubqUrJkZEr+M%_HiK#P37OcoP zPni`tT?+_%cj3eYmr6;-Qj-J6|H0pnW4z!~EnS%WnEbgC(*)dG+(|=$kZBS+x`okr z)olq&UhQgIhd!$9G(cemB&jIxrP%DlsSGx~4Gt^QSl@nohE8#aNUoBV4}_8wCc^i>JU7S&3=+57KxMWU6f3a7l=r~xH{*W zIB#$t4FTwihhnt@Ssl&tUoOu6u}PM64yBc*w3B8UnVN?s{h z&<}|ZH2nz(J%~CO#Qe738k)b}^@mLi32gO(oUMO8MVw(Suilh$G^Ioxs2c^DtQ~9c zxM;Znk{81vc9g~}X>+XxOnSGW=bK{eIZi~*0kHhwTU~!vnaH!!c07OitHPL#0s3;_ z0NvvqHKHWFx#=M#9i9Dy6cYH?eI7lev=|ZE*(rEcN0E|#-*Di|=)nMDj|bDj^6_?( z6jO96V?XUIj@!d1Id!fJm zE%oo3H#JrB_kGp8RR4bHiFQ6h>2iv>3s|)?79E{?p9BD@cTROVCDFtkCB7#W9Ez~$oc9*x6+U-J3M{(EUN^RHkNNlW?>ja66aV_-k>RX=4^Uiv;TB)7^u6HVQjk6DKos z%b21GK>LfrAz%${gJ{R+y3ZNse2wm!lp;X75_34N;P{TCy9hmjLI*_#J#gYLb`)Vm zzTZbH`u2k)>R=0k+?RL#upe*lpetI3mxO6Pl!w(!S%MaY>QO8%DIAPQ^U=qu**~Qq z$#D{f3VkzyUZ6LkEnOHngLWhuS#$N!F<^*VNn#{rZIlQBZSp1)rioy8ESWZ)g{1n$ z%Nb_oPXz7;HwyAyv@9YkgKd{QB5V-C$-=coQ46jK4GnJEA{xc$%$uf`TvAzjW32{} zSca_N zkmP0)R}(oYeG)Bt4wd6uINZNVm#p-g5JKtG+tBV4cMkk)zlUO^d6dV%J-|39h36y? z`v75IBJnp<;)2A@ScGIHt@L8bKw*yrHHf1pIXlvg@+SB75Nx?`G_PU(gi;G}&O3s& zt;i9QnZi{##|NW2Rr*yv3rt3m7f`1NH0`4CLY~BN;}Jn$3h6xJp3E1#bY4Ik9U7L| z#!m)m4ur8wo=MRKMmZ950!dSt5^ud`El$G}IQmhqsB;)e*EFVZ{j@~P5ieJ4=Vn5O zQ@Q!j`I`i|Wm+&blt?mwlm?(zD6~{ZNp5T2fttNwHEonB+~~ui3rH^%Cpk6uzNlAu zi2%0<1VPTf*(P6P&aK1DbC#upl0z#&tcEXX6P?J|yR#3M93z{{`F3@7f@{Vii0;m; z_x6r3GxGDMvFK*ZL)lqIY>|w{161A2@BL5 z_>8+iXjW=Z-;mnIdvkkv)xJ5sm7CRK2Wc3kd`yoO z4|4=Rt!EniYp0fczQ7PJaA&bv4tF=uqY<_>&Ix*RzY0%da=j_sts=0N#FpPdYxRdFMf9 zAL44_{V;N82aRjrAh4E5Y8_{pREvR^oz^8T^H@vo5-Og5h^exM#Zyx%nW0u92Ww2G zEVzQTPRZu7n<5j7KuJ(v5shtP-dNNvEJH%RA=drP%PChW zN1tkEQNU+<2!Sf87qz|?Lb`}9shLn@wENde8_jlj9cm?QsT*teCuw+MrzVN zlT3IKXJmL~&DD5uVR2Ap(x_)Q*`uRgN&atlyyETK_>!8>@sggVCf#JhvaxYxQV01- z(>P)IIef2lcd-wN+w?iiovZl%e0qIzc6p&KM|#!t$HvK10%UZJZb%@;iYLAp3{ORa z18#Y%;Ek<(xmC2)2{k7HU2l@0#agIZnp|e0V8t%hm)w!$-wQ>Me($Gns>XNbZPSlj z0;K1(Z!W)FAD`aPipz>LbS$MioN1H}!^tGTeR+08D$@9_;6`Q-G+hy9?@U<=IQFz{ z%3u;ZahxGHnDAA09k3BNzwf9Pnh)5B2&`ClYUUJUwj;vpjZu`{XQP=e?lS4zt=sV-eIMBST>_u1nl zCWk8MMnKXnv_Bw)l5QihGU&Kz#coP)N%a+B!rN1-?d5GySe#a*Tby{roG>?WG*g2% zzm=`NoW}vsE>F>@=WrIXcr+3dT*`N=x4}uo@O%dmnP@e*jxy9_d2u;+5$w_a>=t%r zMSzZ`yYx|<-uHOADOX0&3wq0SBCf7IXg3#ft-%9<6vs@5(|&)%XgzO(7F;2$z_pM6 zNKVdA;b;`1A@l9;_;+h4fA0aIp{@@bjF$3KM(REwx0QY=!A-6NkUI)^(%f!*`FI=d zsF0*|Y8_ufW^M9OV0f_CCi^tDXyr0#hJxMsSJLmWRlz7TA?WBS9#$%?6zqxQI>9GU zsEesk70B?@Nm^x9xfv4DR7d}^;oRXy&UnqnE=Gyq$=pVZ*iOzj!?Cj_R=-Db+n>@s`kV zms*AwmS}Y>ex`SM<_iNR9hRs@FKQm4y%(=AmXP7+MZXCl zE%AEnvBMaHR{arTn9710mH{wse8u*RXUi8WFn3_#@Uvs0SOkhDFyY(A%&O3vL%%J}E(glS0^}P*TyM`u2ZPvGBNM)nk|$HI=tz=<@sVd{n>-a}IY{T_ zm6qfr+R)4alf@)Y`@GRb6t-qCQ-_Oo~# zcH0>@ONM8%T_0%E_l$-oXTpt%x9mmJR-2ELIY@dA+zZQm5*=4Oh*eD#8UF6;@QZg!B=yNl67$2oVt@esoO{51rj1TJPtOkonm zq+OplE!&x4L3ecI9c%oYPMw^~;&Fm$vf^o-B*w(2D+mw(fiV;tn1=>?aWc?k_c-Z7dYfrmO*@<;vG#eMgloXmW>31~B zVqbqp0%u3dO*s$VnFMnw{~bjAcs=>*BUlZ03^&qncF`BaEuZ@;zQ z+EaMGc3W4|d}d7>K@&A&U*riYead+v}IAdD6Z;`+VAde|CHG_m>AdY@40iH}7)( zI#Jtvm7xBGAQ=I)6K;zEDrjDoX^J(HU8~R}+|A=jDrqu)+24KsnsckB+3Zr3+(IXe z<05Fw(Q*6cmz(za(e=ku^wl@Ct$MGg*ci7eSS?}}FKN<>tnbI#e z#~1jC15;#_nN(w@gahP4+RmUEVbZ)d`AlHe76pAF=LGGiK|{Iy#QEnAwNL(GIXiII&J@sXPzwabS#tY?P`OA=ka+cBxp~ z?2GL^VH$jaFi*w`8XV}rhF5$C6SA}^NM*(qYPrSFpKnYuvxaj2YQs@(=&NMM_+Z1x zeoDW{&_MEZ|Kw{5A*K{C(Fx=Wx**twPQ)(Psh-P>3!GfOhGyF-bIQUBJe!)e5Z!|o zA3J!Kzk*nHBmWhL_v%PGebUOw`;mOL=Ou=kO?{TA(rU1B%B&mqL@~D&e&agt&-#0RRhlHB%~ zRF*TCF#b;aHQ0TJ_CFjUw6?du`|34UIHuI?e)kUeL$9erFQmi)CJ2*qkQDoAltc~) zrRsuGZ53oq_8W2Hl6Yj(_Cq5L87$t>n2?T#Yswt!Od;LJF1jY1bmoapf~T{ddmB;k zEz7?_qp={6e8jGhqE0a={%|^#zF@T(l9*pQok~XsoJu&ppcmbpJ&Ga_u(~>xK0*J? zf}*3tS<=~bo^a7fw=@O1T$oKsH3Z&4G5Yu{Ky%SJUPK8ibh)v_y z<=OWnwAJ`3WreHorpJ1<(2!(g`znm7v_R~2k1y9CDF8_=x)wy)aAebJQH$P&?$Az% zZ5i7>MJW@RlY@7se)b=7co2q9k~86K?96Wj>8DYp&cSLeb-HH>!f}JCTTrD^QAuCC z-bI!4SQ5I@@sr?idsP8XLh&U`+f*pUPaaJWlHK@C{T;=Sat*v$(kbqY2KkYFFdq_E z{nE8jOF#n%qUl)Y?raz*%j{9=3AYq@H}F#q>ydjwk>95Zu!0-M)_F0V;f$@Ri2|b0 z*wQLDRTXSc#>d>lY7gj|aGK6rfLJU+AWE5`0x01q>LFfL-E@Z!eg~)_rC;8qK%nT; zQy@BqSjm!(_Kr1H@9i05wPQF$A&rcZ91fcVP0C`%;f|7~$J@AwrRq)LO|gRMFiMFk zrOfb@9M|5ChWi{s6sT{Y zUk}562C5rsZsHRZe79U8D3Y*E0PD?CL|x=YURS)twykL*-y4Tw14F0G4WFV(m3)w# z*2a9M0rlvr2C@>BTPMx2z397Nrx+&9$km=y}EVqt;sIPNt}R5{`#>A=vQ z>Q(qFCjQZX{Ef4Lm8CJ!-WM{h;NZoZZQPSiHtC%42A_3It2A%60qN+d>x+*qZL|?b zr!Zwc#or2>WL-4u$n`avBSRFru{niO9-vjzE$ig9V1x=gt0e@004@nHFC28nR)EG7 zV8Um%n@gK;H>7RhZ})**OYXAKV9k8IUlAA+Gpz zC}tlxm-3fR`6HIc!s;w1+?dEK%81n`8-bN^kzfZ&JjGzCoS^N-d>I)*Q~+C)OJbXw zI%@?6Q!h1Go$AXKTXV5?q_}GXG6vG2)v+qK428^HpXmgwj?Gz;fH$SgYuDSzTU~Ye z*96NxQPd>ac{%|pY zQJ}mAwe#|z?HVc2!oP{nZxXqnwd~~q85`&bZ;pBtI-s#U93)m)SgAfwOZ#uyI`V6N zm31s|7W89VxMVRiB{Q|lO{elnYpyZ;!WpaN{K7e;lxs{6P;zETh8Alo=5&V2 z<+Ea^krbUlGwwH0>MOUVvo$bpFfu04qQ`_p2XvYUdO)jRY2bMBQ;E01@I=Ph4t2@~ zUSBj8BWa~WO#m6N!<50L{74bNLR5uejv6Q0` zZGj>$?+dE9iFkI$5(Q=PyfKB~9;SBw67Hw>|gVR#Sf z4yXnc0#?lOKsi2f_&O-ws!AAl^-OP%=+3+px!mAv5ST@sk=3!X2{$`(gF;K(?cUy* zTQG!>KRVqLrHG*oPki`7<2yx`<8TH zx{MCF)CvYuDWOx?i_=l4{wEM^mfnRSIsie8b2kHrYzl&y&;a2mpKqGE2!X2XdboXv z(+Pqbi<9$H)(P*i+90liZ#NJJ zK;gm}+-Num_y86LIubAL?3}1rowuKM?ve|rW52lRc91=afclZh$aM&QFX_a$5V97V)dG0)SmrC<(56AAz;jpFu0ujSo zWpPHw!#Eb3ApwR6osU;7Gmchy)v9zh_ftOaJ6CVO*a-GEuz}9+2F2Mfue!Ye{=4_9 z`hak8Duk#JJ}f&j@_+zZoq!G|khOVO;XUXRHd*6>I3+EoO^(ewTz6H{Q(!g>{0xiE zN~K`Gpawa$dfCL_Hcvt~r<22w!>TMkJU*F%wr~(@ku<4~Z5(GXH))&n>lnx9q_*q9 zwc5NpR5uycil!S>kDL3I9Ei)2Xyw=_@dF+_vESo%?!9`BMOE}@y$x3n?!{A}MPT70 z%!^BDBXT~Vl+>=}M)z;p2hdPd)8+N<8;sQF`4)6rCa_26mZba~_z}^7glo^dWgb^# z4Ks>#LlV+Jv%1a(DT2wPK<#)GYy+Ui&@HDw48|yL+DLy>b2|}Jk`APq8IY4^PnM6< zrIzXPv$^hn1hS=2_m2q(eIxbu_xK%b1|}A5^@95!YPcAVh_*;lU`6pUzmFL8f;NJL zP#}3fk(orq=OBtHP8la7_zbN#A5%`95WFI7Yj zo5u)3ZV_2xg5Y{hDwidS#N?b5EGeyxgXm{UE3EOXIbR&#X)S~d-Up5c3{STvozpNuz0C!zB;usZl;3)_O0tpvmR^1wQ28gwZ7Z_eDu@lhx4P4H@P*c z7hkaV{PoNIU!7bpxUnr<7G0o4jtU#R$ZD)b4pGn~VUtdb#Bv&4YCK_9^T;Q~7DlO| zSJe}qLF7StNE`#e<#O;AbgHGreUpoj3ry#7`{?|w=%D~PD;ZH%T53b&ZCk4zStguy zor{FBYhf3|5VMYE4*{kX)|^;pbir)%7^e*!&z}s@B_M$g#*UUf#O5_g1y9jBkzF2+ z+@adP0Y>zuXcn}d;MC?sGI3tKYGzo1oHh=>2ZOwmCn+0NmW21T$g!9*oIREh!pd;Qpqs-y63~kDTg-jL(Gtw8IRYWf+C&8)ZKIW- zG${!_4=ZqU`r)Qc%aY5X!z*RzHgpiPI@&D-mY=nGKU1wqISrCWCh{lbj$!#Sx9XVm zJ4X!-x?Xb>t2ef<+OUUV($2p@6C)F&9R|*e%B#W25t2c5h#uo2+W7{Gx|vy4xO8OX z#$;z!mRB^d!I?Z<#f6Xozy{d<1+J9~C?Y6r>h804^>9>-oGn|N2A!8^0iukfhX!`Z zvYfXuHD(H`=_?ueiW&71H0DCnL2o*-5jfJ9lg?fEL#hD-DJL99E}R2hHJhl4c7tY< zL0xv6sTQa~aG>8U=wcv0-BQ{tJlj2GK0_+t-b#rX#+O@hJesrP8isLg4Yd;+4 z|Dzql0-;n9CL*shqu)@Enw92JMyIvgN-M~}s@M)5rk3UoMfRPaNr`V)j*rxC7G!T} zE2NSLcc#mY;HZ3+>B0r`1v5uhB{|ZD4vH9A5O`Mc+3p??s2bg#Op%ftnf;>Z1VPV8 zPyC=ro--M00IX%9-I63{t)zJl|2r0KD_>F=PSWV)OX5=AJN>EvB6?$t(?j}7REO%=%Jt(Uo>vrvU$s(+| zpcH)T1{3W_C{FfJeGVg%`sj??gOA!mb3cl6f>=2#qhEs(&+oAymf4~mPi)T zY{<`mIMWf8uFp_*Ho2TR%i0}R*<+tF0_6%R7Ut@fWy2}cC~r-hA4KleK}GQ3)Xg?L zC#&%d>R!6+PcDWY6X+N#Bvz;|7K40b;Z^1+2zEAY=W^>*usajWoD;c#IXPS7?(c5R z(&n!byK*8cz^XJt#c*A;O@VT_TBxaw6DnEd4>~S~l!}{2Sk-Ulc1Wik_#ft#;#!P^ zrXb_G6mfAn1o;kaKxmP1f<0keJ&oVXkEJm8)x^w$U+G#j&a~F~<7W?~r@ zo*bNxIkT`{Skfz z&?wBxVuBMJO&M!HqJ+AeC~_X(R&Ib8`ATkcZ6+ge)aO!wWM8rTiU%{EWRId55zXbk z2ThShMF|S9v*f{W*3eEM35#?^Nby3juQWu)?vI)eaWd+;W3>sAybaT?W`OLP)NzU> zGtI3L%|eIIQUwtm`d6Z`yiG@s@UN5fP4u&Xb0nb0v*2;jfL~W|(n2KJW^!pY3s?9J z?XAAZ9s8=e6vC(z={Am%5}ql`ep>#2l&x#N-Ab&O&>4U%Yv)p}lriRymRk7__^l zSxi=JCawdsF{2$Cg5Cb8Y^Mm4k}iqNtTN|vd(QIK z2058l>99%PKv9eC+olHz)s~>%oNS(Z50jUXO|k7z0b62idf{P^XKWOOo1ed7@*x(V z97{;59gi(2%>2kWUF;69RGwpQwA^%SFG=UQMBn_Jr0uj_<;L%x0qK->2F}9-Em{;- zOE!Orfb5`ZrSlxJ-7C*x-01N7k+KOR(lo%{WDg865Pe%Ey7AC^hNP3*dR|b|YH`N;-Q9yqLrUa~lTO~k9*`y)G)Cts@ z5R3jmv@jt!yhid1Y7;MWQ$mJJjd-7!R?)(OE#n;lQg$r$O+dEPVds>tSxEpM$;p^8 zQ}A@ghzTkb#&NL9-rtWnnVGf6!`qx<*n*tB5z*u|Lk`!IiNFDIu|U52Xn^5|`SFH>v?v+vuw#w$*+?-lSin7Wc%iNsYr#U1|kNY2@O)+WOwmQpcF!^gj@+PV6m5~_jLmEp0AT7(tSyA*FyBa|UK?zMT=4xh1+`e~*jakwxHYy6o>W zTiOc)N)xPOv5Y*6=oRT3t@*5>41%(;(s5<)uz z86LXVjgl(ua6{})o*=aV%jaZjMDT4UQLKN6^Pqi@d?a1L5{3-9#727@LDZrQXh`;L zXWi-MAyloitfm?vBZ-l|noXoIC*|@Px6VR~Gbo*RR)rvW^>EnG0q+SBu)FwNW(|{8 zxwNK)S8$g^)RrWOYl)SoSJDTm^mMlAz{*4^5KlT494^HK&=GZ(PY!dVyy3eDl%j`V zOEOb&Y>rJ~t~X%YX-jXB?NsaV%q6O})Olc;D@!l2QjQ}HEuBsQ4E4SHe0tF^z~4iFLY?a&}YPUm+~Y^g;5(rj28)}BHadlJM=LVB`UuZ z8Pey<6>KSd)(h^Rfvh^(5tc4!S|90sVB(JXj=~HjCL;hNpcN$n(!mr* z*OMG;5kl_#9${|>xW*FGhlUz9OVRaa>tr?*55zbFWf{oMLIMRF%sEjctPQ;S72&ig zU!0VITI5AuznDSFobOFZE?S*HK%){Lf?Opd9)m0$=MSP7NQV|3eU3>k7*7TDW|IPp zLiD$Fqin<4M4B`!0rcgw;S*X@*9j(QW76lcii)b67RSZPixKKCZ%kqa zHjr?>9;fapmHcD~X3lBMF}kr^yvD{;9i5+JZOMGHO|q^d=~K{OkQE9dP_%0(x{1lk z&58CYi$YZk~%)0Bg)hsE!1pfbC;y7$AQyfK_Lzk>E=f!P3p?M4Ff512V}c8pk1D; zyCtZJ@jB$}`MQ#?iOr`&tt%&C*cCHVwb_rxhnt*-6Uou30$i2oN>m}0bY&p7$`oeThYs5m4R6aS^LPT)UV zHp6xz$@z6Gqwg@pe4qKUy7IPQTsej@(0R3MHqqzmqZAF*6N&Zc>gx33#ME#0D=Yds zXzxRH1&j|T%&`jm5AON)$J=c5k1w$+um_I&0yF~#d^ z%b#7`oa8e!rV%X{mT=M;ajE7@+ja?cLMi>8Q{0zJk-O{dlw1&btm?Hqv*Y)4NryBT z`;%du%|*kt)5Yi z7v{)G!0eFG7@+p?u9|z_pJbBWkC}2#ltmMwULeQou4OGLZz#33rLG7_<6%$AjBq-^ zSQ1Q#7>ByXx3Ds3*f0QGA9Baaz{xO4)N0B;V{X_7<#2XTCZ5fvM8LYz=F;2N747IN zKEZAF1~?U&oh`~WL`qc{lqM?7o#B}iXDA^LRio>a#2-*YFw%uE6x6JAsf%0Mzq!`c z7mff1`U_iM@>~pr^B}jI{}c8QK5Jk|zdu zn_}Ijym)7t>14nhvP5qP#Ej+Yhd?m7bhY93Y941gBcMc|2#iapn@9nTR?``(9G3!I zs313zNsb(KoTrV0$|dOw%6Udea92yjdnf9tYzdMKfod3wDzh}}3Qb2`WNw($r znXDr2GwdylbbEitc&j;b2B{TCct`bJoK z^l-PgDie(}rkpsftWvJCdP`|CjK~yWQIt%&3Zzc1Q5}kh36u0^4v*V^vyjI*wSEpA ztLZ4{XL$78L&WADhNMx-2+kj?g-a*W*76FDUW{3+#I%n386&3V8>NT|$^O8g0@FRE z-geV&6CPO>>@WwC5oU+37mdP4YqC>4uxBc>ajdZELsD!~)`yI&V8rz$BdZQIaRBDb zvr~*|VsombTn#v2txJmbJ;n;@Vvt`nJ%9>&1q^);L zA)1R)tADhQso|}y%Gyp2L4J38%JJn!Z6hWbnq-4zA=PkB)39fA9TW%w8H6bwrQWl( znT(w}8wJm|n>!VSh;0owWXp)-fh;~<7JZv)3rxsa)wnoLoB7L*Q>$DAYLn8uFcD&r zFklv>c>B3vH^KH$#>|sj&FDrEby&pK@+ONKoV(qWoDP9^V=f3|D#d|H^{v@yyG&p; z)ZhM_-Pb123Lz-yfNgUj@&~lUN!@IA8tI~BwGxM;wCuDN6DJq;f?X{Uho1)>@nmcG zwR3f%iCvjbCgKcq+}v(Vf(_&2BnA`##F-pXg%}~SMqJk7q|OCj7=Mm{JMauh6?H5I zf5=oM8U#|SRH}4b1NP~Z-7~q#0Htyd zL3rewv-#*?SG3G$YjyK=$&X2`-`4o9q1?hJ{LEl{*VL~4p+kSU3@a&dOgXa0*XJK{ z1!-A$?GEFK7N`iOjL|q0)%sCP>@W;6Y{Qko7#$G>bp(`k{7V7A`fNnU=aZpBa`VBy zdK)*lCubLu#O-XA_`4_MY#)r0gyUt{|d$jz6D#ygWL;(V&5RXHQH#e~rL* z%JQo7)acCfdoTB&b3!gWhU4%LQhS}wS4gRIJR}2%x}Lfny}=5~4Tes|U<{2ICX@zD31K8u*Se=yQZkp>0fltvcF9Oa^W4O=A{l z2Xr=LW*k(_Hjt#L#>I+k>eZfP&U^7{|3EG+I;YRyyh0zVj&|hz;|AFO=}-8NNYsqfP9%l2stJp>vwZa_?kO>~PQItnU<^ZK z*VdjgI}x^)G1cg9U^P)=;C!kMW&uWwZh8BOsjNbl{X_$XNR)wgHgUYDaS(}bN=%hL z4ki^9CFr=1*=;@TG?4@1;+&!;D^6lF5A=^A+@+|mYxj?#5}RAkV{;;{~ z8c5Y}!$3G3nZvX#`@mcgHl4sGC}U01#x^C`K$n0f>jI~xFBUJ;p?9uNyTgEU6l?O3 zVE+j_hO(oD!EcWhrRL(HGjl$96Ey4`931v}piMoMOuqkmycJ2u$|7bQ% zGtD%6v;hz!HsFbh?!u&VT)qN)& zk@Hs@03^&0b6sl5#o=<>m`w|nD=JV|GPyIa=qaQQ?o73~q#Y14^syDTB8de;A64q(q&=uW@78 zGv%}nCT;GRndz@*%uA_pIvIiEdD6aF>#s#_f=I9``2q+H0vE+Na(iP~ttH8YmWjjNYSc!D+#j_>d>Eo0csCB}=1i9^YPmF@-YbxK#Bdk?LZ%>a3Z4EstcB;Y4I|XbcvZq`V3)37T2u5L++6j3V3K_n1l`ubd z@OY67P#qb~%o6!FTWLOpSOUXKhZ>vx8PhB*7=-Yfe@%U|GbEC&sio!r!pm;T-5jfm zCt`P*aF8I{t(}>qnxXobSJWirUzn%#rnnlVDW1t*jtYEYvi;YF4$iA2v3B6!t2zNu zk_@^a&4p2gg$421_kI-l!%~aZ{=t6EjKxkT{D0(Euz*0MN6^6gpExGH z8A{w!?p-u&ae{G3YpkR>UUFJbY7@T8KgR%vzN9Ob%txf)%f-&DyYrX-_LeP(wM?bP!=2LBbtvi0#uIE(FuWi0#-C} zsIKLI{*qduOKUELHFEQulqQ-WGZ`F#(7o>qsclj@wS^O_C>nF-AlFZF@!3RiXz3Hr z#`)>br{_`x(_BWb&$t&$mTakr5JY&F9Z^+F5?%3#H=MXE%RrENKg&tBUT*T)gJz|( z(&^Y@R`!j>+FgK|sS~Gba48B>;hc7;PJ;E_=cs9B!z-$g(bDRgm^Zm(FU&#Me}HI4 zJ1Ff)*d_gQW(yoE*qkzqnnFy(wc+cSqQ`c|nYch8pwm0AGi?|=W#6=8g8-_A18U=w zi?y=}`OGeDGWdN-b2T^}_N9}4$u%NimFnyVhDM6Hm%ejcuFG8eZvH|`fRdY?*2)l8 zJ^@py9?7<$#KaCdf`ssCu5FG2R62??PN_@U70Jsz#_OU*mqIi8;xZ=o4_!xy#2E?9 zo63pN5RcB!H7+167s86>5A;dfnTfxoP~)=RHr#60wYgoLWds&psGGULNF41$rW!7w zX>})$V(3US{-Xp;$6pm31i8|W@{SL>l#ko;`SFzXa#MAWr551nBVFiKdaQY-wHV4@ zQGl2(D;|t_7PJjn!hg{IXc#f07qQ4?@kE={c=|-Q;bh*oDUv&)MC4Q}Q`V-+j9~^> zLPB|ygv<09hb^q&-toiaX5~(VrT@ZA+(hjN#UX8?q`ATrY|1PBY@2b@I*_qA^zy{b zg=d^S^gF58KFsoPR8qTN%tKdJIi#W_$V&T{qjV7CIGZC9^K_Jj7()R=MTJ0nH50aX zqZ5Gd65Pz0-4}pACM0t}{`n43$7Q$n<_ihTrZkj>$fj%HQO! z`gnSaXUXr;iHq&<8$Y8s^n~<_VEk>BLzC84DI)WZGw6-3&1#4JbF%CzBW4M zeQd}*!i;@eybfynVfe^yXk9+frqTKDJGs5altxi6~I zWWF3d8y|3x!(fD(rVZpa2^Q_EZYY6FLPow(fQeD~J(+*T2haSjWUOmJ--Km9c-D)F z*QNMT#zl>gB5*v^VoKL(lSk?V$WzgF&a3OJJ}$H^|tSm;%lfE$>3!hxJ_7C1>O$tk&DjyikQOi(9D2nWyTkVo=b&kf#RX{-AY zm79Eqa%{2M94SJu(6D{~p*t^Q_$!C@!a)8iXBJ*IBPic?d|JC)BpVUst3S*YBZJqM z+6L@+?ml3H>)D7ok;|u;?P;%&-&GRYlwAU1Mm;)ifB157j5!*9e*fhIrr0~ZzBxV7 zsJSuIZ)$ROAL3;^O@lrRlmmkVEKeD;IQfZ>Zo?#4m?TEVV6!B{{*??Q7t2w+J|s~h z+*MpnWd7ULm&W37k$J%?S}@I(-OJZ~7tvkU^v*O8KqntqjuI@FH;bSHRdGBMtadmG z2ILshyhpb5!33hQnB`m;0(tDY@B5U8?R&m#P?hfHN@ZJUYA0}#FOhHoQt%+80MbF? zk3kQ9FKAb9189cJNh6+8hsID|%;GJEi%Q9K_ILO8SVQ7?G;c#hL$s)v_+E_UNKJX{ zQm?DpMr&o8C${4dk%L>%@-xNwz(F$)8yTA2o-?1j+ddENj5o($<@N2IoX2vWhZYA( z3r^XqII1o&%@n0_O8uI}aeEjJhPDxtf$IOJs6A}r|8d)(I#Z5m#d*zy1<&@0OP&SI zZkmnV6tJeV9H0iBmAvtU-|{w$_s`azm842CVG6>boJ)hjV-tgIB*a>rRfb?Sh6;VR zOgWO&lZdU8#F)^DErndv?u^PdQJ{v~qYm}axQY&^KJ+D0q~!XO7C4?XpDm(-wa6M- z3AcT9efIO&`RT{g6Xt3waj-m-TtQ2jN&k5yDffZlb^8OU{DwLerfDRz%~xI}dmcG9 z81DKp=nHZ4!KYO6sYypKc2kNm#bVW*awV0lavS+Ns?;L@y!IGF%;4uTImo&>1};G%Q_ousAC`lt+rkoSZlpH`ChCM%#D7- zw!Mu`7>R|o6KFV@iSp>a*`?18^(?h$|Xzsrr{9)Y2Jc@o2QYBi9|K z(WT7K=$t3yEignio>Ca&wC_Yr;IX#}#;~d}NV1eQ!KzE{ib}|!&YR7JhwOA^lS;G( z(}B{LUye?YCsGnQ6M+7tC6=Xd3Sk>NOL5V$ z++3D~n2|5yoLRW!I+G{Gia&&@y8{hLV89$Yj)Ero@e*6c)TFq(=Tg;_tHd~MYixnc zLdIN9&GIE4Q4o=jKb;=`M1u0oQcHI|jVP6~sg2p=*nP4-=uFg<0MhVJw`i+VkVuyp z!0fXFOh;-GPNoX&x~;MXIB(!%`V6r+Aonn;prLd5bu>q%oCM^NqUQ>$cBnoIBNIb| z$@V*|Q;_(``n1Ie_D&Iaj`$q%+J-dO2 zG2os4`h0eA_K(VUKAj$&oL;wYZcmOI&fm9ZpHJ!U+h49u+c#$)FOD!11)HCR4^qGk zRoc-0n=W}-@jzqrSgB38?}Kd27V|c5A{ym+x7=N}J6dRCSZaGM`*2tl<6ivKxZw2{ z?7-f~9s4No+%VJVEP|L?Nli{>&Vi;g$)GuFaXl$vW%&`ae}tyWf%vEdK5*>G z^Zho)Fk^goiG$ba@X!%}F~0?~aFbinnB1<8Za-NnBf;!`vQ*`o(h5dy{TI$)g;5cb zGMN|OtZu_neBc((;goq-=;JAbpNQ*7QuGiWO&|*rM!a&tqyj5iCA{|Ki``$<4F=bB z<0PRX!>nxSvSVXVIBd8>IzN6B;o16qr{3`FL#C`NTCy`KJC!?*wTdW6DT;Y7pnH&N zxThxHtP~|)!|J`*JNQ+7in*k#6FFv6=#q!f)FSThzk0Rj`!DwnEI5&}u}=qryCs;o z_C#{hBFwp@2)>#_$6IZK%13F_g?^Wl8yZM8JOB%kQk@#uhfInaV2t_{my;v(OKx{# zXhpxYNe^BW4z}~(@63CzV3yLRp|U4u)31M^vF8U~aP3+)aLC?t$-ssVb!eeRzcoTP zehzH9m%>08Hm$+&idP%MuBJJXdsQ#b;EeY#|3$&gm;cgQLLEomtnZF!H_Y_dUN-j@ z%QYv)|NimfOD=qMrX<)|KmW{wgzZT2tdgPyCSZbswE_$}v;O|PUA82IXiPZ)aNxOa zr_l(%2&E|C{GE2+G;um*73yHIUf1@$6q9V3EK2?z)yob+zXk1zjN96vQOp#i{_X48 z#jkw3vv44p0<6U;bp}_1$|$x6le!5`QF8Cg8dA)m#xA8O7qjRoCW26?YJyyxYEgX* zQ@ERd_M>2|-VW~Z-*+)$?SfVm|1h(4NZD-+`oL2t<{iFicVMc|_kTTP%quHR?F>z@ zx;hUTWH99(9K}O7ly%H0iz(d=r3FFRQ)tS>*_pT#lrMb5EMuH(8j*O~XSt?>zLCU9 zMxob93WJa@a`f1=fFNGHTm&zGputh<#a@6Zp@XRV zh(VS>0p7-53;o4X;*=jxF`PBS)Y>vbL_fpxRNyuA)fP0<{2>ayWn13Hev9-Z`zo)a z?wbm+lMj&J!mqbT(#P@OXImPFL6$MH=wsfdnT6y}+?@(-UFHVDj0GZ{9{@5Ge{?66 zf&Ix)vko*vF(SmGCZq^~E_q{`EG!2W2Z9|KBQ1!OmG=QiBoQ(U84g!X$bB-j_T6Ic zI9ufnzv#tj@pEk_KzepRpTy6uE^je$@J$O3xc#P3ejA6FOGqI_ZuH=aDJ}B07T7lQ zot~Ut?bzTKd{t-Mt%ptn$)Rnw3uUcYIaI#ZDbGK0)HH#@tWryl$SK&^b_*jhTu47* zlQp=7m$VmGgbvJF==N$$zs~?l3=xohN%xW`+OSWqbekuz6mEtj-=-spi4`=xnzb2G z)nm6P-V9DHzd?q^;I`!>lCK0p&I5V|58Q0Uz8vMcHVom82oTZf5Zt$Iqb1^)c>8q2 zB8TNSM=Fu@f~BuJH^hPiV&Z9N5-a%1Aa*D(172I8_)}0sR%QehXrz;u9ooS()EGva zwDDIbJ-VO8AxIeP;3h%J41wI@pBc49+92)%aH5go(j+XEV33Sf*%!O+>vg&)F1o0T zIl(P6i#Z9Yazhy!ijuaTozz>zg;sFN0j+fcU}xuN7azYInc^}4WLi}vy5=c}XZQ(KR27Cs=xQV`ejvo4u*Yjr}w0hUGxg(xcq z=(}dOw=TCAqlBMqONDYuXyqq8n@pY^d-^GpT!O11NkRw4${@54t?!bch2EgpE6&o1 zD#oE;w&E<0+mdP&dWZ-|qR|P+_L)6vZ*lgbBW zKrA>drI0n)HFeDbAJ5O;A7eM56TsP5x9HtKH$pOq@W`Z4->{$hV`ul4HHD}46F%Qvmv7kl_Dj+5r@ z3}Nr}>%G^lH?OGOSGzA;FArYmXK4wYXQAI0Z(0XDh8OVc^Su}5EF!g_)Z;D|UDTIj zs!o_A8KmLdgZndx0;bnhjGFtqlHv0&&2-uUNk5xPn9?jjo+MiWd2n2hw{gPhpBFx9 zvodhrPW>g~o=Dc;q%zl=WG>>|3}!SGYjN5dv~*;lk#7%)SXwuy$Cno;r~kM*y1=5( zhq5Dws7{UI);Ik7FRgEf>bviVg^|3p*HCZXG~n|+`2WAO_IK3x>bvbQ>c{H4ckBlE z?tksztK7<-{QFOMR{axSga6z>P8xA#$dfVp$imVQA4O-#f-gB|Vef zuCl`hCf36Db5r#;PmpEYvMuO~|XPWG4V~3=4S- zgHg|^P_4ZVxT@ix$#gIRJ~axO0W6^JrX8iSHJC1wb3@75F^y3MtC-SOlPS{LzHG6S zT5HIy*z%C<*&_UGTHEzhC#A+r0*>4sEmTk(6M<9~Y$l)x0Ex3lTkuc6vx$hV)zQSO zR-<~bYt6nSdxjhC^{-MvjDS1Sp)xTzl9?(6@9qsyD=)iy#V;Pzm|gyu?^KZ)$i2pymymYQ|WE^clSVk~0M z=|66-kJ=}2ck95)ryg4nP<}zuf?CDuf&E4T5TrejNvCK`C+M*BIH!qnE9ib zAd`9kzWu$emE&!2DLo87VjVoxjT(=AF0)F>pel6`jsuF~Hf2Z(BdavD$%w<%ASAmY z*IT89Y%QSs#3+QW=l2QAzJKtmb?wipIB2JrbTxYJ$mhI`D=Bk3dUR@KPdR%wi@?nv z2pYqfaG&F#=@Yz3W_#M+`CemQDPu0h`x<9{K!tKCHy;yyi21rX1cM@WuoI4Dr~VC7 z_frXgkWf{Q+d%B6Q_-6OHb;^^gj4x!yJ^j}ACChIduAD^c^^6ew$?MrQ84O0)Keh! z;>hs#iuDw1lu>_lsdsa0U{;#ZRC0ZH0v9r~VJ}k{{=IhSx`nqEsu&}SK*F>-uIZ`i}Jfv_ee^$ zG>}SxE&VSWa<3>3DHnJ8i`EqmP0D?(SrnENq!4ntV@P+4^*mokmyJ-3G1>glmnXr9TzfK= zs`YG=OoI7pNYR;#Cb!o0>G9ds>DBe=hqHfBYqv-5rIt1#_>xfaBNC5g2Fo&-pGnrf zf=z&?&DFvsA8Ofdk_pr?Cc6Pn%L>`WC}}wud(VGWA7Z-Znvx)O}W#g5jk?rVs-*_RVgXH>ur3|o*EQSHC(eHp*%KVsAqCVbOIPJdakiPIvH_~ zu33;oLoS5`X-ZL>&CPjL?8s}$1LV~ylpr^GRpV4rj$fgilfa68#~-0=ONLUsNyG+p zxj5*6-Gc7=_=%2EgN51rLJ7!CX^oQA5c{dT^aNHvS1cY`>f8r;_AZ=gJe3)nSG4(a zQ922#OC9>&L;C@)lin{X%%EC?s#t@8;(!bkTn$?3x`|>zy2RvD)*Vk>} zJ@7I~WY6$#{G%5pb*q(0n4OMSA6e$zl&E&Z~Mt=Vs=ChPA=3eBb=PW=W22TK|N4mIUwdx8Lw z=C&x)7w42VZE!SzsoEpi7o?J;FINR!#Izs{k{6P|V(shSAe=Wf9C6Vu2`0x*&p5;p z^V<_-s52cL8vUNB@PTM+5KC714&PvuFWpZa>ZQ^zEIo4FSMdm+Nd{&*zkR$f+0~TV z@>rN+F~&zwEdOU zX%l{^%~E7w(VMH&QPMh4U2|($ZuXxwi8P+gP=!uA@Ap!NRfz-G9mn6_>X6|djMD6| z%B@}wqKP9zH!2pd!pqRjcJ6EnVJ8rQErvPXgs*O<1s$R3>tLJMOj-Lt^21=%Gj(oY z{ciVW0Z4zry-6iQ6($vKaSbe;zN?Y5(DNcz9j}b*@%gNQbD?XJItYT>>^lo+&n{K! z!k`VYfS7y@3D@;y|I`<%0PNb_@;}!?{_Z3AUbFa9c&}OVL+|yAPZr;E34=ED2kwtn zq`CBaeR#)NQol96Tl5~hgpb*7|6Y8{zHXoFS3XpH^183)J*&T$XXmb0^SXTI#T%Et zZO8pS$V7~H2q=Rkc?RiIWm3QzLniu1(oB<$bGVA)hq9=3>?RshoSLA`B#|Bm>+BS= zRk?%LTuK+wqr|RqJLCsOL1l%)MR{ww$u%Z(60;sz`P@>qx}LGA4lG>XbET?1j8oN{8l2Sw!4-c~7>PVBM0|&&vPU3VyA_zV!{^cW?=% zeqnh`mR37l+T-v?PVas0V9v1Sagw`Zk8X}GmKu|EMY&L;0LzD9kA4?Jdj%_qVQM5ofT$%P&=%Kpr<)JZb$iB3LPkFOPXNY-K)H6NgWwf%Dy3++9vPc`MaUeyB_e zT2d)tv$Z+D@rqzU{u1L5^T_f1b_%5MS)tVIp_G?}^O`YiYT_WLY7$N^39~6$HKR3B z227S1x$@H^g`(#AT18hS|0R1bG;`<10#Is7E6S@_V8zsG zv>9e7HFfb$z^E9!!<71tan^mcg^@2Nl!byYcDB^Nb1%&l?rP7%dQi460Y;SLA~r~4 z18S~s9W4-yW>;e>`Krqcl<20dTF&DV7hf%Up@wxXo}8-7Fd&XI(Eg`ppM+WsQ%0GU zv&fmf;hT>wWtg*L6LwOIwi9sxTIb~^xvj&#dui&dfQUr~fm$+igc-F5%!ANK3}Wz| z`;u}7Y^rSwmuvQSTJzHXv3uKm#3<<;q49_)7>S0Y)A^fA&x+28bUAOgByR}1da29} zPt%%SVzmhzv7`lzFMdYOeKZ&VTd3wNMc3~Ndb^N>u?Onl1L7SnR?%EaRU|%?@KeKe zxZs3NuqfH4Vy9%ogwh(S+s{|xe7!xzUroH%$WPIV0N{+FB6>#OTa zM0{vz10@Z@7MIS7%c1ZhxGVT_Wz?gtx6Kh6Nx)b>23ox5U{eiU5@EvvZ26rMhqSD4 zN+m>4^J41;EiLiR<{d_DxDX&SEs?ZSRt2GNR{2tQx_foA;p@FkO=KmLw*GEA-~}x_y3n@$vQ(8u~bK5LG@d?FX-h$3JBV{z=xWCr*1k2_g~@hMw% z&NntJSgs};=!j1>_`ZU^F^G`x|#3(b+h zrA_tHJ33sr3GJxVe1fA$q;|F&UW-@=n>&OOHsU&E0l9ziac+_MAh~tKs+n*20b1cg zZMf7Km3P3pHE0T(CTTFbXQs%GJXYEUv0eH9=G9Bja)eOLo-CWJC6%QJ#c{^pXd4i3 z(|n8kNv`%Q=bO^y0I4=AF~`F0reQYqYuEmC^Bx%1O@$z6w=n2M=0b)*^0f!nLLKJI zEJ?8B91;>yEU1crT%L=mn-s{~LznV+zU(=YC2OUO@ z9?;g!r_=Lu$##G!NibqBpiY8A9F>8LoLbL`gV%9GSVE1fI_jjx&I?%Q*ffj550qL@ z3Pj?W=;TTSYA~jZYjHqreh+MGQl!}o)kSvYs5Lt?B>EZ z@&Vf`#ah=7Whn|7PogIb0G54Do$bd`<+<&)WKt{Y4fW(OH6dwy-ZepyYL@HEFLr0` zNprgq2KVxSqf0nJ+l&FG25(@~2a)V3@Udorm>+heId9{JLOaaICh}A+b<8#{*Ef6S zKrq!=;~Bw9_ZexbY?Ly{6fui6IB>%xg+}Hfjg#mmen(=boE?D#9AM3KnMahB1%pPj zhk%VQ<5s~^LaT5(7@+y~Z9xCN>!z(~cjUK%-t-4Ft3y-%gZO|r$vSlIZJYxSS7)FA zcR)JLQt06AFv}+C;j?G3=xIw9^Vy5%&tJU$p;awZ=sHR?7AIvI8kZ=dRwBsG&|GAt zH%@75mfe8^<`#_Qn~vcBOtw!ydgLPZu`OB`eDlefLy4>s5c_Rr zv7uw=U(*#d!*ZM>N=00zleFfU_`l_sH$Sj2* zxL4o3HAJ;X36Xw`r*~-3fsMY$lMS2HdeDEB?UH-uxcVgw0mNRkmVM$-jxds-G!%Vz zjlersq=t98-+zgrQsh?RB_v^3G9T*lZ#sjoKvBv~()m1f z6&W}WbyjyEEa0cpL|7!*uo?H5?@Y?0hooZx+nACktp~g^Zb)QrrsFJ9)?@@0PiWA- zBw&2xAQ&l)qN7;|z?Y)u9;IrGJnV(>ScfLE3g90!pkE)E@ z+CwG3l+LYAW)DoJ$vUO}n6ivj6z63lF16D2BRmrz*1;rFNdU;19?&F5Gsjj=srVj~ z35HRQ!c_usW=_$W$tinDtV9Et&vRfnsQ-c&pAqh+lS*^o%fm<1I#^ed3 zqyrDwj9+X>ZKJdL<5Vo>`0Wn5n=#2yEjVMs$3;#%VbP0Z}<}dYYXR z%*83B2fOFKjiPRDpnX{+cQ2OP)qMPF2J9%10DP32fDut;j;&`~nzeA?C1<5sc$wp! zM#dvQD|m3Eg0?Q2`zeT$@D5b^Wc06l^!~pccHbPlo4`h(Y?%f>h>cPjGgv4^0y7OV zWE2EafGh&6z#G&MJti)}-RBtD-SavAdox2iAlEL{$*S}x_ zGQ4OGp1*wcN@D%GR?F7;_Y4AnBN%khAk|OKYs4mQmwXy|ty}U9k?t*WzgUFi*1!yU z3CPZ=YPn0IAz6$q)y$phgm@blIxCB=nuvP3qo#4-MWkockPKnIk;-ezpw|Y?#Cg~H zc2!ygDYSl!T%q=vv2apfyy7_65w@6}9Wum*jz}THgVLI&?wBilyQ{8~aMeby^Btxh zu(FqO7rHKmx{V<9<=V)R=*mjGT~Hc9lR}63PUbfX*PS6h6rn0#V2Ed|t7h6t9j)vHc<$r!=YRrrV~uAyR-(P?=H%g3YtY1Cevp4tTx;1zIyW- zA;}{uhxhULcyG@}wu@qrf2I=;Kr6&2cWGS;?^NIiI60c+3bBifw)O;Xs6K&>Ois8(}nbEG;nBXojCMAka_z}y_~z1UKjt&6^6%h@>ff+#{x z3eZt@ONqvybQi)cgKtA0BrF8RW2RuVr36VUzjF)7LyX<|Oo@^xSE9XjGt+YeYrkQwStWw+~^z4 z+aRBNGMn~_kM;58)i0p?I~MHO1I7KIIqZ;fppspzI8T~D)x=8EQI=LTDJfW{EAK^| zJqxC~)H2PawZkM?7{ir!r<*j9=uH>L!`T1U2LAgQtA6DyN~b+kyVciV)QLed4bt+qswA>@hD z;Z79Id|Zffprm4yCM+;E)Wv3%4J+0v@LDrd&fDy`_8C z^HBKhR6>Cln`dr~s6j!WO^)h-v2;w5<=X6lm?!4bXrh8BAwXJV5Ce5H?l)=XR%0~g z(dwm>wb^mYeX(sr5=m%BKEvWrkj5oGy*|45c*>e3*JVNXy%`#p1=q!k%!)fPB0ie| zVOKWs(Lo%8iY_JJYy}AO7D@s;=I9mn&m71~54XC5>r=^NoeGJN#AF>?j&#_t_i}&lR|iW@ z$jbK3)zQ}rjD|kFJv$MPGu4!8rxX7n!juRU@J{w7M9{D)pKGiY((X%~EDFb*5s7`; z6l;oP+9mKVLTgZNWq{{2O5wH-w)b|_HW2H_i!aZ}Y`sH1O)jk1!RU3&hpBfBSqz8- zBlYF%M5J96^!ow1t?5IP37_mhF@<^|A}u#H4l}^u2%h)p*~QOTbPI@F`!gu*KYESH z9661&vG4b|lNy7!pvbXb&9=yv$uTd!T{P^aQR>!U!xL*nML&ND?2~s9=T^Fl(vGH( z-4`|P9k+V)8CR*97yyZ7ReR0-*Ghfa|B&`R{(Se3J!oyZ-%opk`@3&@u3-ahCDEf; zkaxVAIa%G*_J0{oi4&cCy}UjtjXNtT6{H);izqzmg=@f01UcaBtD0uR7?FV)VpLSWhLGCElJ`Z5c5EFcu* zat)<9wZuxX7+?*dBKJ{g2>g%9S4^kHc@DWBiwLtaL7@ecKfu(q!Oss-4AEOePlu^J zt#mAb^&WtT1PdjpUyKd*!H;Z>FRtE7;fva%YmuHPc%rJ7mREh$K0d0BDV0n);ET#> z$|tQlm$TFYvYe?aLFEy+q`GsC9phrgpcsZ45eJD67vIOeo# zWWwNLeYe-Qm*?k&*NTPr7QRp{!dLM^rCfkUcu-pg69VO`-O9wFqKbvLHGIzAJXF;G!Idl6QSwBgk>8C5$7sfCa{p5SQYz zhG@O!Gv|*){tr{su`gI`CxclRU2UAxW1Dk$;>(SaN)M@)c)X48wh?=Fe){w2IhJL? zw@c&Z8|d3%Xb#13O5}-YM}q=&SZ?rbl2HHRVlPa{XaX4Gm{ReY9+^8}erQo)XBS#- zVMVBJ9cYbq2^<4ksiz$U7rvm%iYb0D932<-*mj+hb+>rHTh-y^hUEwx6$wGVHS1-n zubeGvXI1jD%o_8z+nb3K=~Lc1`7Xt4j$)yYU%z1{0Yd3$#6FwUg-c2St~n7sd4Hd<5*NB|=^9(QF{W_amo-jO zVJBnlS7Pkferz^EqMsi~Z9-GZg<0srJ?;{&?BqC&hLos%W;AxR91;TKF{~yxli61# zGb8r8h4Bp$rbq6guWl6hwlY^2Gw`wlY7*l$U{ZxqNt0m4M6Z*(Q92I2WwCL+aV|6@ zjqxOtntt)&+(JLW4G-F9ck3D(S4YZ1$FcbbqKX=2Pb zKA_)RN6X|ku_1m;mQhI;hW(C5oMc_=qo{lOqd}a&kr=BYcF^4iR@!H_f{Snk!I+aF^*oRg3w8Dh^iKFF9*l24hCNDrs&5lG)BC~BoHHtN4@)=>>+3rfN zwFS7(Gox)$778N-V!mj&jB;^E#q53Eac>`9l(-pz?emyOP4*3vhV!=&a!Pt)`y1;V z2oK52*d+j54moo&dJ*VDh9LEo$&bk4&hnhr2PA9o%nAvyyV2XQCA*Y5YZchb?!msj zG)D1YAdv`V6yR-~&wqf@Pp9l^AWNiilpMdmEk`4$+o^?SgkNC9(2ap5VH zXzB1Go=ca)MP-vY?B+$x&*?i!qxvMrzrov+jgoR3Q5vtTqzHSR#Ku(J(hK_JqXRb#y0a~|{7dCb*gIIJ>1SVLv)NFa zA7ntAc!2`VXJ&}*dd!Xi>s7czC=~3l)%ozxVs4|nkmwLqzT^ky-NfI~cTcI`#Z5Zf zgs&UeMkNeW@oT9>x_1H>3vc6kpcjmiFEXDkylaulNf5|qAF!N#z9oEumPo&+E4SuF zv541^vI#; z5>$~+O+du!OayLSNf%SV0Bz`0*!-~}WP*y6ivswHRv&aM`ut=em?X`F(@s+z8*cs1 zvmmN)V#Km`xnWlaiZF_3Jn2s0Qsmm%1)Ht|w3i2WY`r@DYB6@G+6?Z5`YecuWE<_!$s&gF@)dd-g(|q2rrj!vpqnOa zbxQ(FWYOK*+uvtUYRiPlYCKE6|GIH%6e}aP zh+~t~F;{Vz+ueQB+~2KLlU}ko8(S{MywDG{Sfx*z?^4S<0WlA1Nu~kk8a8oom=72ve$xh)Nx3ILAZ}G(;@lN~x?C6?1r6{gD7i^f4f4Qe zO~GzC)72@fXsu|K9QTL`G?I|KLxaxOY1uIFFcnw&G-~R+eKI>qT!M}scj3rsNFW7F z3g2(r?`YOCX1ct|6IVV{9rZ5Y9MtwCMVGO-=#xWuxhRSsMIa2mWoS=83P6J0vT}m% z%EoV-si&n=pQaigSvma*i!o;vtlJT$jaszMH48w?8Ldv#$G*Z`)OMeo@pSzye4WX5 zrtsOq_q0Q;{6)j?b{8{J6WvR9g(*QLL9&Z(TnpsXZy2K`Uywjt_@t?tK(ZCrYwGED z4%NZl^Ib%V4#=6q?2U_Spxqctf{|g_m^x5OjxsALK0M!l#zv-R6g|`LQUD}@)vaV> z%Ssr~+c5BZP7E)$lTJH?MumUd_>0Z(r_`Bwm3SSkh|ZH%SoRf65W5G@U;L`G`Q?;0 z$w?qdL488-kQ;(*ZewJ{lTlC-u}{yEW)3HK5O5x9Ne_>#p7ob8S9+H=CE=8grb0H7 z4#}~59HZpViF5)7NoF)}`it~4jWnWGq^5x{@%FkOCmYQFpS^!wYa`3jMdAKyT}2e- zYJp1AsM;(-zpjYa zK~BjK=F7mJ?Z0yV%vOV4iiy^M_7=Od;>moKhvTleyz4pk>-vUWkjT z)5+3!6c$J*iTP%oZvqM-m@bPa_NadO{reM93VHU4V`9Mkdov3&I7${NxST%EkH-BX zD2w)v_?psKn`6^YrXwzu9Uv zT7@q?_KXmwTPUO)Rl@>{yBLWYNzQac($FjMMj>SJ ze6h!;=!kSyy{(_7oK2~@fP!R|!VlS~l%=e+tty~ohL@1>1id52#1xZJ^2b@@ZyujC zkI!pS(q~shI*JU;Yaxuxc@%Xsr_#mdwj}{Qw?Pt_6pgOa;a%BK@tFx$B8e$+X0Tl@&XYQ5RX@(&wMa+;`9O7TQ>rsGsY|skDeb7jF6oHTx8{K%ofvAe$v}0@&=?*>P}8=%6&jG zNN;+h5$b)F#!M`87OYIfLNUlWGk)Po?Q_K@u(Dp=)-IfKRt3m}(A@tF0CesL?tz7!Cc%9Q6*taKliUdhS`AT>0b z=23fFVLCN^=$hMJUT&>_aZ}3W_mRd!T`aLev*qk-+{T#_cS}h-Yg@jg*)9BWb=RZq zr?;)WVKbO-`F^tN6UC^wGdZx?lU+|aDt{9 zSD3TR2gT8O5bA_YkvtM=^jEt4Z5jhZLH}x8C%e7jWrGe~zcoVoj9jkkARe`+Lq=J2 z2}iCLaC8FIB^h99uxCWxf{qfr=3P9c>9e^!15C!}k6%cqp*Q#(@GZ`yySBaag^oac zG>A?=oE-mT0C6+;vfkK0{~3wf_1mN|W6w2)#g2(CCUInz-!N6Xpi2fc5eSHk1~M+{+46XH)lv_5}mo;Cl(=;jj* zxs{j>j*52KY&a{To_uD6RSpMEMvy}Q3r8sl!aB=bt^Ra?w9dmaa@OF*F{B)|uEnP1D(xCq3%x;%mBrjkV|b+NXa49CG?9efLF$3XLVp2U z;gU-rD$NOH&V_0gf>TdvJMCrHG74@zXd;HLl4STbxI;%*#Bj?>x)=JW!$CW4vgsBN zZ}T-Mx_b^07uFleB`d5;7GOCrkF;-?-B<+%wZn=)Et+9SuStH~ujxfQ>!%Y3ly$4* zL4HmMt!986p?!v6m0PiTgdMcvdv4i?m6^U3!Rn??^~4A707!HPVUr|t-SEF?nH_)P zY>pDCw0~b0>g49PH2b$?#O|r8M;zjg&?B`~-!Dd|@-W)0`sqw{Ydmx|EN0(YBXS4K zC(GrnT#+qc%*PTp_!#@f;qm^_r-Nqu;P9-a16z3#Gln#iFq6o3sTVGM!FeyrYccB! z!l`&VGICE$E%O5vg;h;V#e5ht&LJHG)5+^13B;$R-?%r6=OYbR9YGu%OXZnmbvy#+ z#Qk&+mR{f#Z^N&tkA>~+tnm=J5H~fnmvA$skVA#=gvQ=0u(ALpG1ElWP-;I`y+DEW ztL{Z(bSK+A4drBVSC=TAu_&A!-Le5gX=EJv=M=~3+oV29=iR zv6x)YJ*;Ylox8c95#;#}v&pjQo%d&k*kPJ0&#_lK=)#zMp&YRI|)#j8Y(<#5E87D{$Xq+pU z(_tlOa{_^4(6QZsbgro;0}Cf4oYt4qK5tJ$#fBGl06M&9HRpAqbG}r`=C(4fB7@wh zDiLVH4q>AL8nHb~9D2)GF;XkT=rtU#DWc>1Q)Ul~v&lS*N|A|2ZCW%<(8pKAycosgz-DN~HQTj@#_>J>wl157YKa*62#ijL7N zXBKFdi&PFmxi$E=B%P_8dx z@F^j--lByF>tb7oeH60nV zit3(PV()%b%2R7fD+0EX%jiTpc%>vlU`AJ(uk<*jsamgENH<5S)+$eY2N*Nv{0?Y5 zoD-0rJ~Vds>H?wKRr;>ZoEP$2${y1mI{ZB2`<-i&xOs3FEaFSoyJ*a!Ft_7A?iMX;*o3qg5V5d zy?~Lykca`s-@BMPC)VDl^A9K1;jA{4KKU>A{l?A6UCDlj4O10-<3GMp5D7pr@3)SE_JeDFDVP zZ19rpN{x5Tz4K3J%~t+2_h8t_Y=I6nGz=LTrtKW{3gSlM@eQLVQE!wrof%8@OSV8C zSjjx6uusR{OMB@jtk;5Re}jpJ9WpazV$uXl45c)Rl`9K@2^+{+9r+7B2868>QVKN2 znVyjivrvFQygCSD5Xgz0MB)*pCJTqk6bpBFb?ku9S02Oa>O+V)_=FP--3Ic!zPYyG zvDkS+<8ILr`iD1)-=393*JcHNwlkz8bfXVxO4{v3N`myeGyh|^H|{2rl=IvRwftSX z{Bzpn8KvaucL5#N&=5a3PE}wa%_4;-XQ3#VhK~{H7(3ov-frr!XqBQM*K!W@Mk$07 zEPXTEzt}VxN#9Wsr~#z%qzXu_DmDl|WBpfqVan@$oINI()yz^>mU`M3CjWW3pvTNN zj%j(h34f>naSrRGeSGb445ouZ5=0O-7_H?d{FeQDvWxB}$BW_cgH zC4~i=>p()^;sJ|#-t~K|AcO%9oaJ}P_7XWx@QF8Zv4#>0Es<3~K+9HUq9OXeWy_=> zNak5C)78yGhnEdk5O)8sJ)w=!T|Czcw_`-nAmku5P|Bc=-X!{DY(+l2~OBXOCf{eN$ z=$XEwQhmj5A%#$^Guqvm7G+hN4-aD*G3B8jG3&0kvyK%%7%&F2^l+n5>S#D~Gr`%u zvF>aa57r$$(?jHzOqgtrecu*tu>i&@^%FxpSv_IPu9_7qOD6vfvVYSD#ldIpr;|e` zR`d~ntgSpbNX)da$iEJWPy(x`d^DJVI3iza-agP9=2n#%f%J8PF+3~SeS8qKtDtv7H zurHo@5{6ZnHLGmP(?~2B8AOqj0=O^<#Hu{mc>fl0?40G)#;e;~RTtzTU}QIzux=Bk zXpU{2@16S$MLsbD2-tC1041)od*aR5An9?0Y~9d~G*#*LXDMp^*9s7fd19Kj1zW+&uw;>q87ea*zgdqpDy~o#&YGY4mFkmFUFj zuZ>HZa=V>j<8u0IZ<0;tqM;U};IMAqc`BQ|5u#Pul#>BIMqxZyiOzlgG@;$#pqEVg zn2oT{;O_;XSnt7?RZF*^jd5f(3ClJEYN$s&Ux$x9+F#y{@32XeJcz#g8jpI(c$dyY zG^}%nqR<6KdU;9(=OfLj zaRMuQPRGR7AqxlygAg+40BJC|*2px24#^w3YuSw&Gh@$3nl4&7G$*N!>Gpsfv6d@iOx*$i5Nf+Dk7$VmK6Z~U*K;%f0y5Fi` zg%PD%Mg|$-_xFL1CYi+_2;7M7by=}K8qY}}O~~&&@Y-1zyEivJ!q22ay=S}&#Vpex zX0vRrur@0}tC>KUxX~$e4DXVn5L__YT33_-N03+$u6d7mA-lBrkZHK2!GW5^3*_Ii z>{)->dHHhvi*eQ>&Yu&?8Ohpdsr@^|Cv(P>m}~-j8L(auPSzd(T^95UfNL{8xgSsv z`}=U0_CAAuD5w;;YaNpYQ_C;2M*k49K0+%`)N7X)Y=Y9!NI(pPWUp3)UU*AasH@*Fk+E>QFMpndYL zeSY$N^Vs9{YP1|Y_Yx@w-c1C=ap2AjLQq1@NH3+ua2ur>3C!=KMl(|=KP1?!Z+fEu zdptl7yXeQmn;Od;&a{*OT?H;yHY_>uLL7wc5fs91(&=&bNMgCS8sx(7g}Ly-%-mXZ zX1-YaqPP&N7VMvQU$_MM68gBT*ewq3qwT?EB&13WARJIpC@B!` zjAU*$3h6#PjQgIpFXf*vp{x>d#wNms@a|sqCiM@^y@RO1DJOnF)*c7&{E;D&gjpM@ zm*!pOxzkBUY@u~E4j4FS1}$N~=`V#A9ElXy^5_9NG-5pN>ReWLsSJAL%n%Oy$z&Dg zWT4Y|Xm-$jrbUqRu(glM<(Y)M$4p-#GRDOzPEuI>r$a`I1xN?vhS0Bcd*eD+C2J&o zcLG-`RcgXf>r~CB{JaNCDE0ALaO%={5DA2zxvbH;HD-l*@%T(7lC|`XgiZ*9h-NB1 zf4RN6Bc?`kN+YhM{7I{<8pHR)no88;*P1 zZz9drt-xNxLq zZZcz;Y0orDX%oHO8dYg1@hY!Q_}HR@x9!uj!{c-A9s2S4!%vO5!~lX|iiR_&#cU{% zS~OYo!IBxmB6HA-jHP^t{6yAzUI%Do zPe>!Xb|+Hyj5ycD;}`LZ?H5$Gg>1RtaSI&B{-Ajj?61ERLLD{7)y;{?)?aMPk%0Cv zVHHR9bI2&RZPFb*s31qzSbR{=o)y(j`0g3{X*OoQ`!FO3)eK1vePor2qYhHw_~f|x z<6-N(Npl1rvp@&=+8Rt75@uj&2vK~6iMlAXK!D>@f(jx-vhi5L(uk38+hQ%q1!rr< zVI;RIb57+VrnlFydAL^xaUa_+h|t_r_8`u zD>?E)Qz2X_b%P$aTx-V4=B{2|TX}Gp7^pt(j8kP9Phu&mEv2`m^oR2oVG>bfF5D7x z$33=*0L*HoD18wm=6^@YWGr$n?yNjiV7&YVcf+pmhl42t`np0vF=@D_)A|B#P*eN=eJtrrRS%Lse zxxLo@;h{0#89JXvo){Ocmn_sOs;xh|3J>l%gW@W;)|?WaEK_swa^57C>k7^GM>-z{ z*nI*?27zrx`gt{GYN5vrA}7MHZ@k$268NBfdJAJMsDxEsWwFmRah4N#nJC9*kWI)b z^P@DAz%sJ}bHIAX0TC&>*d48RM8zo?!kD_`*0MWGmO4OPl4`KLjBn zU|sR;fpq|p-xIYB58^u|3x$zHFhkaIr{8Iou(R6a; zqp>a{kMkq|ny*?(BPI&x$_P_hXN>dcqZ9j)S;RGHa}E5ND>m-}Uk}W}wq+IH%L_Tx zMX9V&n_cYVMCs+x0u!m&=bX@ z#W3AgrsVN@uzeA!92I<7PKQX#9jp&}voO`36HBRj zKlrRRQHUvJy9g44=S{`TCn+0@7?dIYB&JJf%|+FjmboWplz8qUa9qDEF}g@;l;HSc z2u5UGC>l3MFt$E4kB&SX8&(L{FrGMqFbh?TRMK`!&bjr$P^F zsn8vzn_3R=pwLh+3mQu$hMn{L<3+2EmfUz4FJ3-k)(}=L-L?r3vzZfvZUA2;aGW$y zjUXy3HV;-rBER>w*F{dfdcm?BGJD=tbL!AT0h`C&) zyERp|038)%*2+}!og~N1USZwogoCNj&$cJa`i&$9vIn|IuRX*UFp4?B+PF7710}01 zSbnTp$B5ht)`s^+8O$-~w;{M{QF3xIFhIzU6I$w=OJ%HZO4}v~!j2UV(?vGK!d%u$ zt~!BsuQ7{PXO2J{Rc!p{{ zCid7UI32Ro7b-wjVFU`}aRZ~iz(=0ZvAb+c<}&BWsnoonuK;Dv`wje)%eES6+=TxT*77V8!hsP*>8Cl#zQz&cCJB5 z8Pnd^N4N;;>{brFR1#Yw;M2%xabmTHs62=fzoq6nUN$K4vNGTFT#oOunRU;!(44Yx zc9@@kar51S$lB4*dxt-MF&pCAj;22Bow0E{pTD{IIMx&uTHUtJEK@V1A1x*BtEN>w3s_mBc3Q~dD@b@Ta)^_&GYpT|rpY&`Dw zu(iHF{v@7%PVa(fx*9qVt>Rm8=9BsrP?09bTMZktFpxM853COg9#7&}3gkoDkH|bL ze$4T2@k?IaqE8$*e>`Wslea=20wf#>RV?o`>YMw#v?-Q(*ARN4WYTGDl1R!RgBmjt?)h&ryIF z)jkbhBAwapxOr4mZ=puMCM|c^PpK&M+L=?B)Eu6(BmI8Dg{Ff1JlIp z%2JR{fwYNvx3wu@g4~y@j6>{`_NraP_f}wsV?K*~Z&~$heE~*^wS3pI;@3*Z8n}cI zrd*~<&2smfKc4O#w+>H^6*;kSa@>@oL3#N_8H%8-)r+h?>^t`+ju)CAC7D_@gLQ&( z0?|DQ^ZZnxc9m#64+_{ur_<-C;7o#;`mv+FO~kj9P0ZhEbhTm(_a9o{Tu_r(+u8i$ zsFSGAX|Px2KlN0iwIx4D356#yt*|M4nfDpS5T+^rNjYd>PlHxT5RDb&_Bw?kU~-#} zfgFDp1bF0fJ1jgA0S8G}5b&aOXaJS5hT+|l+@MWT-P@%l2(guR+}a{}WwYe*;?DE= zI!;!x*Gy4w@*YzC;@XS)`p&|jJDNVT$&PhV`o1p z3w{CK8(97;bY&2vfvC=!T0q<}I`F7^Y#MOdH)ha`I4?o4&@8CJUY&_BlNcPT1ZR7k z$Y;4nYk8C(0XEDJ1lvu1H_e5i-1FBO!K7MytV5e7|K8chFOk7Hyl~mrB$289bki(n zEQ5>Lb<^Pm$spPbdP2hT2Y$-Rd$C1QkhRq8Za9g*8C8Z>`1v9cur`;t6zDn=pa@`I zUX5b}@HBjJ3nJ7#f3bsu9>ZKiCk{d7-37rcW~h26?+g_hFNWBLU1T!HeKy##H;DtJ zUolLy=x390e09~&IW^(i5rDF|+jbu2c~zQ;hNdEMyy^@_pn4e(^+z}eg%Bn2mV6y# zZAAtD`G=3K;#0Uy$G9u@!z%&`ep6q!aqXVh0M5WZTF|Jq#d6jC`^*dZ`)R+=CW68< zf}W02JA>}*?XslK+#`>f68q|x{uwcp(HFyt=U+gf5vp);bi?BI^Ac~DmOWw{kt)t7 zEg0~aNq6KZAuLJ=OwRJLCH)#hNG;j-mdfIneMhU1=%k}NA?_68ygqY}H1PU8h?0|w@){NW&E)PgGcMwnq=M^w4ugCiKFhfZw`Y;fSpmYMJ1z$D^bKwRe4 zL`{ED)ErFv3=AU+{f=j-oxsc9r131n3t(hm=T7AeB5A;|+}ZUIKtaawCzn*u<@SE7 zjk35~f?k26c{=PqZlqZ1zlvIta7hAbno+m)ev6IB{7=o}AMy-TIydRBKQV9yJ)q%6 znY#Z}Gq!$`BE(W+!0@;hwZ+QQ7QZH{QqvGqXAGw28K<}ML}8rxMF}A2Ghn8nc}rLW z{NYkI8&ra#!%#&0yWJhrc#RoMUkwrx{pXwIK$qxm=d}h; zn`ef5A?Qr$fkj+drYHoRo@&?5eb=q$hxd8p`t|z>on{8VM=7|+CIGY70*`63(gIHk zgY(=6+0rDw_Wst~r*cro^Yx&D!D-G@^CHwAd|cgkImK$TzDeu$uL!U^ORh6mf}-!T zVY)j^CKp-vUZ5Azs`wb^@qy&<_2MNk9Uw>y=A<*6^ckDp5cN2cEq^x)@b;D&lBhR) z|9Nv`B@#^c++le@*=GUtGnGpj(TgL+^oy0kxrGB^ z7%gcf-&(;Vg14v+591}|i5l)2wl(qR41>eN->8q{+OS|h?)?Y>d(=FRM*V4qJo-j{ zm=@XyU&1$|Ij$k#m>RjAyU=gH*r;hM^m+8gAYb2if!49u+gS)&+-EJ|vEf8(+JxBT z7#RFG23PVVY7Q`!|G8Y;@yGPLlF~w&N2~$;J7(q?P4tlds-LV3$UEB)@i<^ z9D1A9*i7B(SIPH;R1?5) z=5y<1ZWXdUF^0L7Yp28p%Q9|CiIr0&q*ej}m}#8MI9U;D9fp?CI^}$2fQk-)Dlv0% ztPq8OVSz*r<4^aLLrIP>>yA+@Z4^zG#m4@*)$K*7RBWH)EBU zv}UIvr)!Zatj6Bu0Lv4#MG@`v@>0_oXD4ng4-VnUU2&@IUG&Opg)e!Ql+t=T^jit} zhcK!s)=NAo?LrYy)H^j}KG5Ld+*9i7w^;tllRAl^`o4G%%s!9_PV*c^c%E)mzjd|* zK6K>Hd-L_ZLXQ@CDio=ghpBw&W`P*nSlp+iE-RRscrPrZST|aSN636zjq1)EzOfMU zWtj(@fx|l;AK92IasPUZP%D~2f1URGJ9_s;h}v_GC4G}|Y~M?bY$$F`VFVUY+9 zr>MU)C9uqTnof&0FKas@FFGCP4|Kh}Uf+1w?;?1I*(ebj6V|(ckx^Ff)%fToFwSq_ap}eaJZ)8!TH|1Sf!yO z4Zf2&>=4@4X?k>XoT?`+KcI%%Sk{V0@Xik(TSZCkLDgsP@YIP1z2G}#k6bspX*Ty6 zHl~zaye`KVnjhHus>HPcg=*d%%$Ig{H@Haq<&SuGO37V!%q_huE|ua9oU3qb$tHB{ z$={wQOP#cweYj{G$$L;1n%owSnno_*iUeO{XRYW8maC4Pm*I5e-4>lYhr{@qg9$&K z9Th$6(emDY`|$Yi+`|W%`JO(jUvqU{z`Kr`vWT!^sEir$ZHGk5kezY&A2YDG6d;^k zB_J($C=r2W56w33YFZ@8lswzb#u`V;(KZ(=wNC*K;2J(M2Tk!}d*k^R7crq($=P+% z?+02W;FevAtuRW4>{Kd0N@FtUlrf%;92CaZ_PT_+NK_6x&NU!fAtXvVgkRj**xo2m zpvRp_88?GOATh;&0cSA6Or2D2VWMHgzs94+pX;!;{rm+g&mBAwQrTRTNk%KI_f7fb zc`q=2>L(Jpl(~$`+@lJe$zF|ITWXR&dd)FqC}S9NpJQ1xibDzDJM1u+a+w4^p= zIv;eGBqmVV_mcjdf}-c+GZ--=?)62q!->{V`<5%UMqj1#7hfh-&qMu>3Y@z*zw6N< zz$VjF7kF^g^a5>L&bXT6C}c%32MOa8Ds%_n%A7DVq6XI(t)X^D%x55N2fLlLf>joo`-*Wgo~uqn=78^sB_Th9xxe=O_ky<x4lqV7+ifFwOWN%k@>oRfux%%^)|%?al~xCqwhYR0lg?D_w}_&v4HPvl$cYpR7Y-Cn z(~<8qS;n*YJB;|-It+m-G?=qD;f9+lkzBRhZUw$VK9E;n? z*x-K1kuw<|T&~)Ua%gD!Wr5)^ix`Nq5CkZ;H9$(s*xVFYlb;RIQ_t@NP7#7YVCbW~4Co=`t9P&nQVo8jSE|eM<8KM^ZPSatcXbl`h z+7r+M_c@M3zzf%sF5$qg6wE0{Jhztzsp~A{ z&_pDZVXXpBc7YPCR^W|8&EkHRR-P0(HzH+!NZVJ`>5Z8y2u-IwCmD9wHA5Qc)i52a z>wn-{Vi2{Avsh9yP2|wjSo+KnvI^kCMq-x{^yQb3z~E;YgBpPof}=#N-~3SIzz*(( zC(k8%hO;*_Ps%KC`T3Z-5UrYh-e>*sbm68LremlH<%Keq6&hhRZI7o$aln~vj89Ow z%dY;Cx0GVw7KVviaA65gjPMamhm%H8t1JKVUMAqw{Trqr2C=1aJUil1ezsg%UVmPvZgcB4Y$`_^`%SUO0pvMQI-(*F97suZ&C4 zct~A3+tP6=e;a$SGuAI*og=r5lVz8h-$=BsZ@gH-8R3NEM`jfibpqwgFoF^mxJ4^Z zK7w9uNYiFa$Aa$${HxK$uia}HGzHJ~fsc%fY$mx+Jc8Gx!}-9 ze`zM`&(2LbH>igH8?2Ne37VT))6LZSpbymOi#V<$f(2o6bavt;*LZMAVs*{*P%eL- zHi_%xf}=ZW@+eP$K#OJJ%Gh3PWo&Ohe{N`8wxM}KO!aSqr+{Nc@^n_AJCZlc)4j7+ z^IfZbLd*K(?4TTNn^{DKh2-$E_zHuNK&`6@I(sfF9GTn$r9S6CJl4jTF*6FOW*=m( zW!m!MmpQ)HC21OOGOr3b#%@$|$$n)3+1GD}ziryw*y!w^>PZ!B>_ZENqS)EI6 z81c?`LN8dL4@>M;KS?-1)Juy@F6EDC;>9awH~E_kkH3+2p|`nb&K zy8fIbtwt_6IBavKb=ycI$$#<@P|^H_t#u#{a}rEJ1x6=4ea0ikP63YUlJq@NM?`JQ zB*FXI=CzQ3dsnA}!H)$o4qa4>{3(EoEB|iKSdViSTl=hgK&`6w+5||Y9DwfU$m5{s7bLFs&2{JyJYB5g0_q_bfy2);8Dh{?x3p7S zX-E{{S{t+bl6PdVu@6QNQ|^kJnhXa0J7yLTz>N{dvycev}W16dc*0rg0d*6a<`hQ7T8hr9Ixj0SLnsNbZUwS<8{Ve)eXU%6OdoZ zLEoKUXznBm@93iMB{B-3&jP22ngcw+q7xB?CJ7__PQr2AZ2i?Rs068R0HqU3SM0(4 zcren)e6gA68Z6WV%aJWC$+*X+9|^da)Fi>+^z3B6{qBIBha9Z40kI-I%Zx>Jtrtrg zvpM+%j970-!nPcVMtzBa!-2GI1iLGKvkB(W_QFS|vTrbZ3tyCtAK&1N97Us8C8g6* zNajLWjT?-aA=17&R8*s>{!&%N8<$DkLx-oiV1VzOCOjQlu8n%R;6FqVn;Md+5N0o3 ztyZ1{JeE-;WsEa6Xb84k$E42twj7x zy^aV>X=3Qf)|Z^cLBPiNo)yk9XBLnqa6G|Mb zqR^uQ_l`MIZeu~WW~@;<@ZB>3LS5>QADTy}&9gu1)~K21r89)X%7D*Z|NArsrIuK1 zuERcEG%LVcxs?G+-!{BSR88y+K{rJf=_kX--4gULZPo0P@NN-#!o`Q&Q#lD0tm8a0 zzjDD~3arLAb$)AcjTzxh!c<)rg=v)IX30$=TjOg!0oF*m zQ!MmT4ytk~4N@hZ#nggU3SU>W5!`FN5VXe2^eX;T1@4j$#dMrD~Bw9W*8v7u9-{F69mLeMt8SOM|{`1Fe@rou> z_lHznYqTtn1k^}$S7DUrJ}>hYlD6dEfLmawU|a&a-MCjExLjIw@d?eEkZ2%t4dYzD zErnorlgQ3=N`)o*oIh_1+9>Rw4WBILGLiOAj^7==Z@bz9;7vw(dBuNJuGEJ%Ijm=qv6jr?%job z6FqWr=+n4QUKvJ~CSZoW6?%9q6rRZLiac|Ts<*!6%G#yERz*|K$xST6oMEVozi z59*p<+o^ACE_l$Nf!;w1Fg8&K!Df6dVN9^EL{JaWWmVJB`ou4%ryyq%1(ui*ay5Ceb`UKm6D{d3Uh)(~7Z0fboret6kpz@&r$h?Dm{^k!|K&Q+x zYRW}`9`uh|NSbvN2LpLjO#|Pf6HveF;h{LG3;X|l8}TYfd%lW(FxrjWH&|`sprnP8 z#T^WoPi&+C`5GO6Iy!n>M~ZEHXZ__D=WGLRf7VaMV*wQdwlHHIGPT`7PTeN{F@Uf?!4+eMw}iLat(1vk#mG|udLXSi6fXep|GDi z>Y`+lBT$W9!^+vUa8jcOwTGR1U68GDM3y}}SIi6oquX^qUYSLnKe~5QwNzO z#x4V2wU7UEkt+bLGt31RH#R?H>@-?MgWZNmIqs`R+;e~6aXq~Utgf+>!1rnrjOYM2 zrP^^qw5nie7BcAM&PMz%rvK1r#(LkuRo<`bD?Ox+kAxPZD^+P;{o!NlahS+j1|m&@ zlkmf-^p9)*S#n9AzYYK$7!~_+91jFuKJOl-I=oL^XvRfKrOply&xBkofTWWtR4_wD zB;%oxrt^7M`rOV-2=h^YEa%bkAP3RazXi z4z^GA-+81?VLucP#sz0G;Hz2!ireCxy-o7<%B3x?YNbarrfCZ#O? zR*+z&L&Y1^Fafj9(l1M8FAwN!F6{OBm!hS?-4fTjSjOYFqH=o-pj0sJKed|e)=#bT z=EwH?qm#Fd;u}Ke*`_yWlNEHmoLM0BW{KkXa_6~6*$E@NnJ;c@? z{VeIDCjx)OUl(*G33rn{1M!0fCE*l`al)rwb~&)d#(+$*h*nshh2b2Z`NRD%L8A7F zXoHAcQu)7Bpah#A;KGQP<_(o!^GaC|7>WuRrXozsps4Ok?K3JEl_MybJFIZXeYiQ6 z&MyYTveFiAj_`jQ3=K61idX<9WPAj_?f8%^-V02#aQsDW6ei(Der~ zq&mP0vj+`{V`w?a5zwTxg-;lV28L(BJqz0`@788=k5CKdCJ`M7VhJH$q%n2t9Gj#O zoWW47?JS@uvO37$XAo)$C~s-sa(Q$4-Q-BKFXn_Tz5@ecwtL?zQ4Rumg=MhyUP1lf=)ljSXu+J zYYkSDG;eB`_W5u|h z18%7Z_iE#3* zf>S4BPL<7&?-DhSPnthAfl`wB&eD)p$f1Ch3S9O+a3PF1#4OR!`RgRtP~F<3y#>62 zL&w)G&o{0`W2rh5Q_vcrn4Bel59s4V(ZU^A{|jvojNDwCgPUy90hvCS*0~gxyeS6B z5<|CD>U5E44$!^{_NO8m)# zhZ_!sc4+UsvI4fR#$yl;YXRX^cu4bW{>9@N4bB9Tw#of3UMoFb)8ZD2Bn@bIy8PYG z2k*YDROZFiS-^KdIXbjdEr~Z3J7@t#kN)H6OeH2+z?Rz~Mib65_@+d|SDqM1%cuQw zMsqo)|FqA4I?X4l=F-n4Y=EYHr>@*Li1o0yMX~21cu;^w!cOOo_{f9%j$gd&`;Gg9 zbEBW>*B4oop*d2)2sJD>0M$^?eM2kMQ165D_A?{VE_r=9Hv~o>FjKYxAx;GdQK$## z9gWP)6&e62g--IwCD&$+c}XgGomP#cr_eF0&8zVb9#tp6BlkhfLCAyvvZ~DTfI=mi z+-lNvzNZ43FsVgLOb&p9&ZE}NUZ0k1G$X5`c#txfp!qaWHImpawjlHdTsRErND+YO zO0Sctd)hsxc(NQhqXKN^!`M05pvVBO0{_n&i6%};cvZ|a=B{9$AI7Zlh4dK{&-u?V zj+-XWK(RG(n9Vpo_CFjR9lYIZHA6yYM{&;va&0qj)hzs$i~YkHnsO2K3}VAw@x|9v zO1S$QD1@d&&dwsiy-F2=zLF$cs4K3DGJ zrSoJwz*OjTlF?*l5tY6F`}#vYvU8y*U_xS4%P#9s^Vl?!18}4zs%wK0=f)fPR3AjPKNbq*Yk^SN8vC zxdmHjZ^BzYEs0BEC>JS8djp$Fv5kt1xbBT+Y$&rUzzlPyM_^5b1X&ALmV+IrmoDik zHB(7$(2O?CcnyHH7e0*q11{Mc>=+nKaS-@jB2Xw;W9@9JW6n^Krk^ z*>voj@U@m={=~yYgxSdu>5TyXt%Z!%i7UU%%Y33;K`pN_@Pn@nyU7HPCTtmV%#V|# zZB2MbKZ0*OZjOg`-~)r-dB4BUUw6TyVSYo2ap4pc8;nH{j6oQl4XMCEUV6X@;g`6x z{a7&^yU9?D&IxVw5~fguPHj{caw)+(=R64F-YNwPwp7! zSS|u!;a2mUj&XbY-?v+b|Fh}BM>&U#6H?GDKB;ilNxOBr_xZT7fE&RwyRwAYqkq@_ zH^*j+D5fDG!4SV|Iac}8QKjUJ%{&%uOnBy`W91klr<4;{ec=9P3&!H|xh@xLYVZsW zdq;*LdmQ&~&_5dsrZL1FC@Ux9xI<#0HJNsMDX0z$=sE|@)0J0c>Z^gs=%qIMi`q0+ zfSKlCJkNU88>%|!uFzICMhg088aiPU>}3*OSd&U{#s`QzqyOvw{Qqc3$18ZJjN=*r zS9OUG!$JA~`al1_4NK0r8mCh_I=3yDaiQc4+dB#`i@c#aFr@HhRISpNa=9sVFX>#9 zqB*2H%%7Ws6J(JIJa;3&2{^iECVQ8$tw6g`^r$KWZOI$uy@-JAaAemv8rxB>QoAqXb=I{B@y;O<$%Ws{W!9|E}KF8o!*d7k!=IXE*_wAH}&8X%VAs+ z_SyBvkoJ7y~P|p{h&6zc-APB#wYiQ+(wN$=sE#27O+Vm|AOp8335J$p3Jn92U z%@7_ze1GZ9QWRd}`r*z)y)qN*r|Q1WuRp@JWBC+EZ_l2#KOCH$pM5&sr-Chii6Non z;UP>zGtWUIo>u`i?ennSI9N6nWBB|9>9*_`;0PjSPJ;rAP@s_Wu>n(7aR4F#CoW7c zYpZp8*y$M38))?6DdNecNeALc2k39 z804xX(Jqoc(nU3P`V=}y1Op`MKnjH;MRqIFfoRSo`9#Y{$KRiPI#={II~&wgE20wN zpZ19vytNdrvQiWG`>emd+Lw=diWKO%F4B)f;rq;{d{bt8jeZVHth7E)$LS;$D?Bx| zIvvE>O%>-ZexMdHT>1G*9{#W~gM)#Pn8{$|sBc;0f;~}-;lH`?8b`u}{ikS{3dc%+ z1~v5EKA*S&-^JnZsCSb9*>tvc{Na^i(=i^yv`(8qkf3otPJFwKV5E@VGHjiyJP_b=!66616qXOqHc z`qhvVB9D$pRw-RKMC->Cr9~71x!7%MNGA#4yE)C7w>$J14-cK=M?IW11hXe#nPR11 z+sI)qh2k3wP$4Wi1!hnz#*kj<&JjeK!%6*~o*z@PjXh@Hr9h@q#rugS806Wr^G)q# zj`h-~y_?W6vpo%*OT)U=bp4^~cdOpH=8~_{P1^f5W}Hhqn{sxM@{bs z%{hXfvx(qD3%$UChtVY-mzjh@ukxnG2s8Yk%ai4Fh}8!Fhx0XqIzL}9f5XnR&;@ZS zGCN=!$vZ1Wl0vcTc9TV->flct^}1@vPKPt7VACLag=)O@yU=ghkT4JX_CB&=rhOv` z(a-9FXfD}bOeoaXh#*0^AEm2DBw;`8IRXKM!)ASt!1s3Azrx<{0|j3&skrAn;S+5} zt?KZRHrtKI;~t=A=kR^~3sHk5!2G1*XYFoktn&PBW)e!y?LfU3+JFaVMVn6$Lq61b zcpVf<6#;-E_uD%KueepUF>tYAY1f#hivtl@y;i7t5cyNQs7#=w!Z^NrSi$K@p9|A)9}^ooJ3E*lTB=xx_A|aiN9u=qeLOR(XHp# zNkAm+GA?Cvt7f5ZB#eGRY5p#aju~o0m{D4R{f2NfMGXywmz_;chp|+O1^$qf3!MU} zBuigvg^Qn7RHqzR@zY%yRXXq`@lB?1V2GD;P`q&d_844OaUdnlO`_TY*w`#o2#pse z`WdJ?Jc=&d=1Yzq94r?K({(?*7F9{%waz`W^I~{h=LIA#oih*l&e$qpU6vPys?+f) zSYQ&$V#e%=AWEz}gw&o>ilA`6bq|S&+kdoR=)aeFM~kqKo95Zs$yrf*uYVn650LfD zz~tp~$(}F5&{0Yo@_c;qnhang@IBtz0XzoUxpcEfvn?=k%*v@C1un}%@ddE?y*H{qr1Qw}~Qul|-i9y4{PvAE|M=_N9C$bgwl zu*gsw!OKij;*d{E9du75ca*m3Of&AzXk|u6DE>Pd6*@KCBxTrlruvG!W1k%R5q0Mc zDxq81m@`34&{du|NoPCmeW_VNDjD}cIt&N$apPsVqSR%5Oy4{yH`_rQolZYCx$`ThjJ+(qjwU8xI{Hv(l~I0 zOm{CDBc;y+Z#^FfoY8MGxvLu$r1xfu2BRj1d(}aD<>>HjyLGmIaCl}M>q-q(cdtBt z89d*54sA~JhT!Gq9SJ*4pARA3=~&or#~_N~U~Bws$2pqFd-}gJQ7R!jFu*;f8dn~bU_}&F4vn(W1|lcO8^>xnsFNjG#A38 zAx~fi>_nhbbXcD5q@%6|k^N^a`KmEe;sP*Qq`MrRn{G zw&b+0x%uG-L(W&XcNVT+nLMw@&L!H!ta-KCM1jpde5wyq5$992tD0v7` zL*DgTsD614sSJH?Qx=wI+vk4Ymi#b5%lb}G;6@aEAO9A8f7icGZl+Y?P5j&Ljr(dPB6>8l46!FwrP}9_h#{Ff?1buN*P?NZdRJF>bwv0E@$7LQ z=gm8peO=%LQ^6P70`*Y01amX%BO+Hrx-!N!3z%UgRkkn~Wdt}M4W0K~o>`eKi~fJM zpygAo^dZbGY-PF>pQNSz88;&&yyPziWZVi5ejihXO{Kb>Rxc2~F z6F+5b{JW&6{QIj{sK0Y*chV~d`QRT3CYOYcY7m_}jYB)*<7LH|Ji85Gf*Fylt^lF-9Noe3x zO5z3d;(a?R%RWcfqNCPnB-sdMitm|3RDt*s(`A6XXthJ)W!@#TQ5{C@VrpXGM|pn^ zq(06Jptnk*&Mdx(bK0&YMA4iTJ)Pc?9LcPD>n|5h?SII(q{{CmodH{ubQJxv#wqV& z6E{M*ii6`(mmepANKzgDc`?1@+y|y-h`anVgxw8o{q{o59`%_CibZ_sLAZ?c3BtIK zDRUeCI<*wB>Pdbka-dWm{DL z6~&bdM+$0czVOCXi1i%Edk9E9XaP zeg*uxc>a45?v!FR#D|qwjg1$yHjcse29o(U?M>%UB7SW^%>$2yb6*S&EX{S*)4ZXA7g z$Ny~%^!jd=cIfl8cd$aJm`2WU!m!+ILYiLjQ3axj;|KX@$L1@#*t#Y~8=N+m$z5Pn zX)Fp6owr?4&q#ttZ@%$u>*daiwJ$;PSZHGYk6DOc=f2yfw?5MejJk4(#vz5TkQ6Es zUsJ)`SNO2uH10QYfv|=&f61!1=m8|{V+6>uaOlJ%3Co5|)(`=teuI%t;-G0ZW~sPd zW8pZ)!2)R`SaDY=Tk)y98hX}pUqA;& z5<8BKty9*!M5Q=U;ry~b5b{@^H?nu1zmoW}io-|sY-n~2gu_+sS z*ws!JywvM7|pL@IM?eJOu~IF^ibm$$YUx93brJ`~LLQ0{&i z18G3X88V;pIRkLNxdr4_$U_`X>;jwhJ}f@(?}-tV;7W)W_6rVI5gM3Jw0bxkUSlnR zQp$BLCcG5t`<9w^jliytjp%ca`i?r4DX4Dk$8JVDf@7myG|scd+NRbjAKiG2eOa^iTigM=?Y6YVSodN&mu~po%-X7 zp5a5POwT>fnhp~?BYa+Bs)Se-U?(VxN`BiqsEcPKXiR*Cuwx}#6BS=Rfs7Y91oGKV z%fOO&hOCWb^333ogF-7$W=f4_3N@n>=c58$2x*T&l@RrJft~4BPCiqhH8xjBfv^my z{{U_lE*dnts3?~vk_VOaRq3(6JQQTI6ER>r<8LU#kCle3gK58C7qqaL^~q--Y46{0 zn)$chU^+02S*i{lmf9cpeiY+}+9FZajMEiFtF2$$y^2mr6!b=;=yTf7ZhEvNqGX4t-gn%pXbl%+BcGKBX*u=u+4&&;2Zb?(?eEW+Ta|Y9_pVO-s%;#}FgMtPUne(Snl8*#cyIxmsU!5bm>Jrf< zCjS!iL&1nGgf?LWfST{s2*5u7XZaX@U5wOKh|mqvvKEO$bA%N+B2j0M%@6V3n0nzY zY4A

#8OMJydhv0LanNoltC3Z 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

X=9T4!O6Iqbr`+mV{tA&Fp?T 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⪚G1k&ts{NC;ev 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

$Iq&I@gMlW$uA*pJpynCKyY-hx_OYgIEz&R&} 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 z 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

nF?i(!>RSXopU2CZJ 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 z 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

T7=~aRcfIDeh`pad>aNR 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≤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

>5UPBGzJ%!qT0C*y&3F(z;SRr+au?E893 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%0AXy9ajJL2@!W2k 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

D0IVgma@S*998g}C1`KKS|n4CQVvET$a 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 z z&WZ($hqr*sABN}8;XEzi@%a4(4EMqU9^dc7^T*-&xrID0tqYkhmWt=S3z@$hfM+Z6 zy@fnZzr2Wlw=Cjynp?!{;?yD@zc&{#9sac__Y+-AFAKXEZhsf!|4tbGCrxx@0y}Ovl<98P`zJIrv;rz%F zZtv%oaQmNL!g#eT;c@F*!gO-q66P0&#QS4Qcszf13HR@BmoVM_!mUgXb8lrht8QiZ z#akKQ`)}oT4vF7qZe@JGek-^0-)`mk|Cw%Xud$oqeZHINc}+L-sebW$q?_k+w42-8 zE6Tsp&GY+P-Hg{?bTeJdxQ+1uT|lD0o_!mS`>nU}dd%I%>tg$DjMvHAm~KD1jp_Lx zZezaiQ@4wK>2}8N3%4_zFW%1k+W74Z@8s>=&ev||`JT9)*WssnxZVvtjDJH9M`9tyi!KFN}ZA-cTcP{02HZNto?_bK}a0H&f>JwjH z%J^Si%6QJ`<$ivum+7awm-}&FFT;Pnm*@98y-YVhu#C(9$}-0H_GP@T?_I|Ao?XUx z{x&>+0O@@h!@anS=k@28GhS`WdH-9rocEXg%b5aqZUcR@S$Kw~j zz~gz{7nlz2`~tT>AfAtZf!E7dzQFtA_r&k^6-;;ctl;q-U%}-M!t;mV`PCJ?pZ(4X z9S-xt^L ze2uPQd>#?yURuL&zb>ACxrX6=Pr|v2;V!s~*F*nZ40r4(=o&uUg0Rf8RQupQGz|ou6LEbo|~r zo|iva$Mf`e>v;Tsc|DK+b?X`b#`Qc8ee0QChSqcci|ctDcdqC54zFjt&#z~CxwM|? z?x(-V{2=*7-oJXk$m`vKXFJmC7kNFtEq-7ABI9@62Cjee2JXkY4Ltti8yL=$8yK(G zH}E`v4W756+^~W1>AIWSz2|PGkKK2R{r+x-d*N=Tml-zCOM}htm)YFEVVmoX+dMz7 z*gU?MZKm^2^)o%z^z%6M^fR5T>*sa5xu552XFucnQ9skcpY`+j{Lg+KhwIbKm*%E< z9BxkYdUnO{XT|StirF_vgba>pKbol$*4%6L5hw1be2DqKN0d9Zw0FV3T0p{bU2e{tF0p<^%802U3AdlPX zK`{@5T<^_6o{zsDd5c7xp5aYFDi1B@Kh}-|p5ZC+1A?ACZ&hk91 z%`zW9B!2%EGK4wr9a{C95T@qb0U|BH>x zUw=Nw^tUv}^Ka*Po!tx1op6Tz^&HdRkL9`j&*hmftjqKI+L7n=eOP>dAH*`F42Th3j{O$K}ij_v>#* z`26{k_wqQbfaim_-@)^Xxc&;n3KLu5xf1CXo~w|r!(nwB;^Fc6^hb+)j_fY-_m|=M z5S~wpeExh04vqT}uT3y6@O%QEzm9aj8E6;xb9nY4zl7&$gtLY5`TiFEK7SNw4A1GK zT<^#4<8$fm`xvk9z|+C;{Z+`_w(+jQJOuwHS6X(`3ac&)BI@meJ^&b+@IkFr9Sn;c;5Chw1Dw@%&Bk{=0j4{nqZ~ z`OEC(aX+w^+xxnB{=;6Lr(b%Q`#1k#roSg2W;!_z&;JO|a}P7$-oKB><+t|ne)Mnm z^L~)r&vd?SKhM+HewGJb-Oug+;eMWn#3M|1H$1}Yr~MIbZ|@`g{mDld-Up8`UH<(e zyk2V`W&X17QO5hqqa^YrKJgf@>+EB^?ml>o>GF3Txfdf1r?;c?M{^S6|`}u=R54RoU^>gPz z?!R}C*Y|;gOn+Y%<$miR&*y(Q$m9PH2bn+q@*&3Su0ssxp+h{c&xz+B9^!WYN&N17 zg6U-FiT{Vae}RwVx(=K0SxRgY>v_)4`B1)7@(ojrWlubnxMM;z`IS)&D^_BGfNSiiE)0P0+ zeqYnaKmD5TJCA#3?wz?avjC<1e)<23AHl)S-h0luuXE2m_dK{?zHpk`@y*i==aP8- zzIguV6TE-)J;8L%KEZGvc!KGA{s~?ezw!k4%YPK_|L-T5zoedIdEsqOGQ1By$#BM= z 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


XX4GyNSI)A@LE_B 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%0AAs!?32 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
  • ur@!O=t5PnTFQh5(W3j?pY^?t*S3 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

    me{>3;L*u(^MHe01DEh@n%&(aRGACWYdo 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

    l5%usF2z)yr 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

    #AjSw)fH`#~W2YY;ZNA#i9a;MyssV!HY^| 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 wpWDyv=k{~^x&7RJZa=r5+t2Oi_H+BW{oH + + Additional development starting with GNU Make 4.3 by: + Dmitry Goncharov + + Additional development starting with GNU Make 3.81 by: + Boris Kolpackov + +GNU Make development up to version 3.75 by: + Roland McGrath + +GNU Make User's Manual + Written by: + Richard M. Stallman + + Edited by: + Roland McGrath + Bob Chassell + Melissa Weisshaus + Paul D. Smith + +----------------------------------- +GNU Make porting efforts: + + Port to VMS by: + Klaus Kaempf + Hartmut Becker + Archive support/Bug fixes by: + John W. Eaton + Martin Zinser + + Port to Amiga by: + Aaron Digulla + + Port to MS-Windows (native/MinGW) maintained by: + Eli Zaretskii + + Port to MS-DOS (DJGPP), OS/2, and MS-Windows (native/MinGW) by: + DJ Delorie + Rob Tulloh + Eli Zaretskii + Jonathan Grant + Andreas Beuning + Earnie Boyd + Troy Runkel + Juan M. Guerrero + +----------------------------------- +Other contributors: + + Luke Allardyce + Aron Barath + David Boyce + Kevin Buettner + Janet Carson + Howard Chu + Ludovic Courtès + Joe Crayne + Jeremy Devenport + Pete Dietl + Martin Dorey + Christian Eggers + Paul Eggert + Mike Frysinger + Ramon Garcia Fernandez + Noah Goldstein + Mike Haboustak + Frank Heckenbach + Klaus Heinz + Ben Hutchings + Cao jin + Michael Joosten + Christian Jullien + Jim Kelton + Kaz Kylheku + David Lubbren + Tim Magill + Markus Mauhart + Greg McGary + Thien-Thi Nguyen + Han-Wen Nienhuys + Enrique Olaizola + Ola Olsson + Jens Rehsack + Thomas Riedl + Jaak Ristioja + Christoph Schulz + Andreas Schwab + spagoveanu + Carl Staelin (Princeton University) + Ian Stewartson (Data Logic Limited) + Tobias Stoeckmann + Sergei Trofimovich + Marc Ullman + Christof Warlich + Florian Weimer + David A. Wheeler + Bernhard M. Wiedemann + Ben Wijen + Jouke Witteveen + +With suggestions/comments/bug reports from a cast of ... well ... +hundreds, anyway :) + +------------------------------------------------------------------------------- +Copyright (C) 1997-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 . diff --git a/local/recipes/dev/gnu-make/source/Basic.mk b/local/recipes/dev/gnu-make/source/Basic.mk new file mode 100644 index 0000000000..683f377aa8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/Basic.mk @@ -0,0 +1,249 @@ +# Basic GNU -*-Makefile-*- to build GNU make +# +# NOTE: +# If you have no 'make' program at all to process this makefile: +# * On Windows, run ".\buildw32.bat" to bootstrap one. +# * On MS-DOS, run ".\builddos.bat" to bootstrap one. +# +# Once you have a GNU make program created, you can use it with this makefile +# to keep it up to date if you make changes, as: +# +# make.exe -f Basic.mk +# +# Copyright (C) 2017-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 . + +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)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 +w32_SOURCES = $(src)w32/pathstuff.c $(src)w32/w32os.c $(src)w32/compat/dirent.c $(src)w32/compat/posixfcn.c $(src)w32/subproc/misc.c $(src)w32/subproc/sub_proc.c $(src)w32/subproc/w32err.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 + +remote_SOURCES = $(src)remote-stub.c + +OUTDIR = +SRCDIR = . + +OBJEXT = o +EXEEXT = + +PREFIX = /usr/local +INCLUDEDIR = $(PREFIX)/include +LIBDIR = $(PREFIX)/lib +LOCALEDIR = $(PREFIX)/share + +PROG = $(OUTDIR)make$(EXEEXT) + +prog_SOURCES = $(make_SOURCES) $(remote_SOURCES) + +BUILT_SOURCES = + +OBJECTS = $(patsubst %.c,$(OUTDIR)%.$(OBJEXT),$(prog_SOURCES)) + +OBJDIRS = $(addsuffix .,$(sort $(dir $(OBJECTS)))) + +# Use the default value of CC +LD = $(CC) + +# Reserved for command-line override +CPPFLAGS = +CFLAGS = -g -O2 +LDFLAGS = + +extra_CPPFLAGS = -DHAVE_CONFIG_H -I$(OUTDIR)src -I$(SRCDIR)/src -I$(OUTDIR)lib -I$(SRCDIR)/lib \ + -DLIBDIR=\"$(LIBDIR)\" -DINCLUDEDIR=\"$(INCLUDEDIR)\" -DLOCALEDIR=\"$(LOCALDIR)\" +extra_CFLAGS = +extra_LDFLAGS = $(extra_CFLAGS) $(CFLAGS) + +C_SOURCE = -c +OUTPUT_OPTION = -o $@ +LINK_OUTPUT = -o $@ + +# Command lines + +# $(call COMPILE.cmd,,) +COMPILE.cmd = $(CC) $(extra_CFLAGS) $(CFLAGS) $(extra_CPPFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $(OUTPUT_OPTION) $(C_SOURCE) $1 + +# $(call LINK.cmd,) +LINK.cmd = $(LD) $(extra_LDFLAGS) $(LDFLAGS) $(TARGET_ARCH) $1 $(LDLIBS) $(LINK_OUTPUT) + +# $(CHECK.cmd) $(CHECK.args) +CHECK.cmd = cd $(SRCDIR)/tests && ./run_make_tests -make $(shell cd $() +MKDIR.cmd = mkdir -p $1 + +# $(call RM.cmd,) +RM.cmd = rm -f $1 + +# $(call CP.cmd,,) +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))) + +VPATH = $(SRCDIR) + +all: $(PROG) + +$(PROG): $(OBJECTS) + $(call LINK.cmd,$^) + +$(OBJECTS): $(OUTDIR)%.$(OBJEXT): %.c + $(call COMPILE.cmd,$<) + +$(OBJECTS): | $(OBJDIRS) $(BUILT_SOURCES) + +$(OBJDIRS): + $(call MKDIR.cmd,$@) + +check: + $(CHECK.cmd) $(CHECK.args) + +clean: + $(CLEANSPACE) + +$(filter %.h,$(BUILT_SOURCES)): %.h : %.in.h + $(call RM.cmd,$@) + $(call CP.cmd,$<,$@) + +.PHONY: all check clean + +# --------------- DEPENDENCIES +# + +$(OBJECTS): $(SRCDIR)/src/mkconfig.h + +# src/.deps/amiga.Po +# dummy + +# src/.deps/ar.Po +# dummy + +# src/.deps/arscan.Po +# dummy + +# src/.deps/commands.Po +# dummy + +# src/.deps/default.Po +# dummy + +# src/.deps/dir.Po +# dummy + +# src/.deps/expand.Po +# dummy + +# src/.deps/file.Po +# dummy + +# src/.deps/function.Po +# dummy + +# src/.deps/getopt.Po +# dummy + +# src/.deps/getopt1.Po +# dummy + +# src/.deps/guile.Po +# dummy + +# src/.deps/hash.Po +# dummy + +# src/.deps/implicit.Po +# dummy + +# src/.deps/job.Po +# dummy + +# src/.deps/load.Po +# dummy + +# src/.deps/loadapi.Po +# dummy + +# src/.deps/main.Po +# dummy + +# src/.deps/misc.Po +# dummy + +# src/.deps/output.Po +# dummy + +# src/.deps/posixos.Po +# dummy + +# src/.deps/read.Po +# dummy + +# src/.deps/remake.Po +# dummy + +# src/.deps/remote-cstms.Po +# dummy + +# src/.deps/remote-stub.Po +# dummy + +# src/.deps/rule.Po +# dummy + +# src/.deps/shuffle.Po +# dummy + +# src/.deps/signame.Po +# dummy + +# src/.deps/strcache.Po +# dummy + +# src/.deps/variable.Po +# dummy + +# src/.deps/version.Po +# dummy + +# src/.deps/vms_exit.Po +# dummy + +# src/.deps/vms_export_symbol.Po +# dummy + +# src/.deps/vms_progname.Po +# dummy + +# src/.deps/vmsfunctions.Po +# dummy + +# src/.deps/vmsify.Po +# dummy + +# src/.deps/vpath.Po +# dummy diff --git a/local/recipes/dev/gnu-make/source/COPYING b/local/recipes/dev/gnu-make/source/COPYING new file mode 100644 index 0000000000..e60008693e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public 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. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/local/recipes/dev/gnu-make/source/ChangeLog b/local/recipes/dev/gnu-make/source/ChangeLog new file mode 100644 index 0000000000..59f71f55be --- /dev/null +++ b/local/recipes/dev/gnu-make/source/ChangeLog @@ -0,0 +1,5893 @@ +2022-10-31 Paul Smith + + Release GNU Make 4.4 + * NEWS: Update the version and date. + * configure.ac: Update the version. + * doc/make.texi: Update the EDITION. + + * README.git: Update and clarify release operations + + Fix issues found by ASAN and Coverity + * tests/test_driver.pl: Preserve the LSAN_OPTIONS variable. + * tests/scripts/targets/ONESHELL: Don't set a local variable. + * tests/scripts/functions/let: Test empty let variable. + * src/posixos.c (osync_parse_mutex): Free existing osync_tmpfile. + * src/misc.c (get_tmpfd): Set umask() before invoking mkstemp(). + * src/ar.c (ar_parse_name): Check invalid name (shouldn't happen). + * src/function.c (define_new_function): Free previous function entry + when replacing it with a new one. + * src/job.c (child_execute_job): Initialize pid for safety. + (construct_command_argv_internal): In oneshell mode ensure that the + returned argv has the right format (0th element is a pointer to the + entire buffer). + +2022-10-29 Paul Smith + + Avoid C99 constructs + Although gnulib requires C99, most of the code does compile with a + C90 compiler (perhaps with a lot of warnings). Reinstate our C90 + configuration test, and clean up a few C99 things that crept in. + + * src/job.c (construct_command_argv_internal): Don't use loop-local + variables or C++ comments. + * src/read.c (eval_makefile): Don't use loop-local variables. + +2022-10-29 Paul Smith + + * build.sh: Allow a "keep-going" mode during builds + +2022-10-29 Paul Smith + + tests: Avoid the use of File::Temp->newdir() + This was added in Perl 5.8 but some systems still only provide older + versions such as Perl 5.6. We don't really need it anyway. + Paul Eggert reported this issue. + + * tests/README: Update this to be a bit more modern. + * tests/test_driver.pl: Delete the $TEMPDIR variable. + * tests/scripts/features/temp_stdin: Use $temppath not $TEMPDIR. + +2022-10-29 Paul Smith + + * src/posixos.c (os_anontmp): [SV 63287] Only fail O_TMPFILE once + Reported by Dmitry Goncharov . + +2022-10-28 Paul Smith + + [SV 62174] Force locale to be "C" before retrieving error messages + We attempt to do this with POSIX::setlocale() but apparently on some + systems (AIX) this isn't sufficient. So, in addition force the LC + environment variables to use "C". + Reported by Dmitry Goncharov . + + * tests/run_make_tests.pl: Move the global setup into set_default(). + Force the %ENV locale variables to use the ones we'll use when running + make, then reset them back again after we find error messages. + +2022-10-27 Paul Smith + + * src/job.c: [SV 63185] Don't use ifdef with HAVE_DECL_* macros + +2022-10-25 Paul Smith + + * tests/scripts/features/exec: Don't test with C shells + Using C shells (csh, tcsh) with make is known to be problematic due + to incorrect ways it handles open file descriptors, at least. If + the user's shell is *csh then don't try it during exec tests. + +2022-10-25 Paul Smith + + Increase the test framework timeout from 5s to 60s + It seems that some of the test environments hit the 5s timeout on + some tests. Since it doesn't really matter, as long as we don't + hang forever, increase the timeout to 60s. + + * tests/test_driver.pl: Increase $test_timout to 60. We don't need + to handle VMS timeouts specially anymore. + * tests/scripts/features/parallelism: We don't need to override the + default timeout anymore. + * tests/scripts/features/patternrules: Remove confusing comment. + +2022-10-25 Paul Smith + + * Makefile.am (check-regression): Add a random suffix to results file + Put the results into a subdirectory for easy unpacking. + * .gitignore: Ignore it. + +2022-10-24 Paul Smith + + Release GNU Make 4.3.92 + * configure.ac: Modify the release version. + * NEWS: Update the version and date. + +2022-10-24 Paul Smith + + [SV 63260] Don't recurse forever if setup_tmpfile() fails + If we fail during setup_tmpfile() we'll try to write an error, which + will invoke setup_tmpfile() again, etc. Avoid infinite recursion. + Original patch by Dmitry Goncharov + + * src/output.c (setup_tmpfile): Remember we're in this function and + return immediately if we enter it during recursion. + (message): Remember the starting location and use that instead of + fmtbuf.buffer. + (error): Ditto. + (fatal): Ditto. + +2022-10-24 Paul Smith + + * src/output.c (_outputs): Don't use invalid output sync FDs + Just write to stdout/stderr in this situation. + + * src/misc.c (get_tmpdir): Report errors if tmpdirs are invalid + * src/main.c (main): Set up initial temporary directories. + +2022-10-23 Dmitry Goncharov + + * src/posixos.c (os_anontmp): If O_TMPFILE fails try dup() method. + +2022-10-23 Paul Smith + + * src/rule.c (get_rule_defn): Don't use STRING_SIZE_TUPLE in mempcpy + If mempcpy() is a macro then STRING_SIZE_TUPLE won't compile. + +2022-10-23 Paul Smith + + Provide a maintainer-only debug method + Generating debug logs to stdout or stderr makes it impossible to + run tests etc. so create a dumb DBG facility to log to a temp file. + This exists only in maintainer mode and the DBG macro gives a + compile error if it's used in non-maintainer mode. + + * src/makeint.h (DBG): Call dbg() in maintainer mode, else error. + (dbg): Define it in maintainer mode. + * src/misc.c (dbg): Open a log file for append, write, then close. + +2022-10-22 Paul Smith + + * configure.ac: Check that we can link with Guile + On multi-arch systems we may be able to find the header file but + not successfully link the library. + +2022-10-22 Paul Smith + + Set PATH_MAX on systems without a default value + Some systems (HURD) use fully-dynamic pathnames, with no limit. + We can't support this without significant effort so for now set + PATH_MAX to a large value. + + * src/makeint.h: Set PATH_MAX to 4096 if not set and MAXPATHLEN + is also not set. Remove MAXPATHLEN setting: we won't use it. + * src/misc.c (get_path_max): If we can't get the path max via + pathconf() use the default PATH_MAX. + * src/dir.c (find_directory) [W32]: Use MAX_PATH not MAXPATHLEN. + (local_stat) [W32]: Ditto. + * src/job.c (create_batch_file) [W32]: Ditto. + * src/remake.c (name_mtime) [W32]: Ditto. + * src/w32/w32os.c (os_anontmp) [W32]: Ditto. + +2022-10-22 Paul Smith + + [SV 63098] Enhance detection of missing peer also-make targets + The previous attempt to detect missing peer targets for implicit + rules had some holes. Move the detection to notice_finished_file(). + + * src/remake.c (check_also_make): If we don't have the current mtime + for the file, obtain it. + (update_goal_chain): Don't call check_also_make() here. + (check_dep): Ditto. + (notice_finished_file): If we finished running an implicit rule that + has also_make targets, invoke check_also_make(). + +2022-10-22 Paul Smith + + Collect failure details when the regression tests fail + * README.in: Add a section on running regression tests. + * Makefile.am (check-regression): Capture the test run output, and + on failure collect configure and test results into a tar file. + +2022-10-22 Paul Smith + + Enhance tests to work on different systems + The GNU platform testers reported a number of test errors on + different systems; try to address them. + + * tests/thelp.pl: A number of tests timed out with a 4-second + timeout. Increase the default timeout to 10 seconds. + * tests/run_make_tests.pl: Executing directories on cygwin behaves + differently in Perl than make so skip these tests there. + * tests/scripts/options/symlinks: Check for the symlink feature + in make, rather than whether the system supports them. + * tests/scripts/features/implicit_search: On some systems "false" + exits with a different exit code. Use the helper instead. + * tests/scripts/features/loadapi: Ditto. + * tests/scripts/features/output-sync: Sleep before make -f bar in + the first test as well as the second one. + * tests/scripts/features/exec: Skip on cygwin, which seems to + be "UNIX" but where scripts don't run normally. + * tests/scripts/misc/fopen-fail: Skip on cygwin, where make + eventually exits with exit code 0 and no error messages. + +2022-10-22 Dmitry Goncharov + + [SV 63243] tests: Avoid SIGTERM racing with make error messages + Original patch from Frank Heckenbach . + + * tests/scripts/features/output-sync: Introduce a sleep to let make + write its error message. Some systems use different names for + SIGTERM so match with a regex. + * tests/scripts/features/temp_stdin: Ditto. + +2022-10-22 Dmitry Goncharov + + [SV 63236] Fix getloadavg related error message on AIX + On AIX getloadavg keeps errno intact when it fails, resulting in a + bogus error message from make. + + * src/job.c (load_too_high): Reset errno before calling getloadavg. + +2022-10-22 Dmitry Goncharov + + [SV 63248] Ignore SIGPIPE + Don't terminate when make's output is redirected to a pipe and the + reader exits early; e.g.: + $ echo 'all:; sleep 2' | make -f- -j2 -O |: + + This lets us unlink temporary files, and tell the user that make was + not able to write its output. + Reported by Frank Heckenbach . + + * src/main.c (main): Ignore SIGPIPE. + * src/posixos.c (osync_clear): Fix a memory leak. + +2022-10-18 Paul Smith + + * NEWS: Release GNU make 4.3.91 + + * AUTHORS: Update the authors list. + + * NEWS: Use GNU Make instead of GNU make + * README.git: Ditto. + * README.Amiga: Ditto. + * README.DOS: Ditto. + * README.OS2: Ditto. + * README.VMS: Ditto. + * README.W32: Ditto. + * README.customs: Ditto. + * make-gdb.py: Ditto. + * tests/run_make_tests.pl: Ditto. + + Update URLs to use https rather than http + * (all): Change http:// to https:// + * README.W32: Remove invalid link to mingw.org. + +2022-10-18 Paul Smith + + Rework temp file handling to avoid GNU libc warnings + Original patch provided by Paul Eggert . + GNU libc will generate a link-time warning if we use mktemp() even + though we are using it safely (we only use it with mkfifo()). + Avoid this and clean up some handling. + + First, check all calls related to temporary files and exit with a + fatal error and a useful message if we can't obtain them. In some + situations it might be possible to continue with reduced capability + but it's not worth the effort. + + On POSIX systems we can create anonymous temp files using O_TMPFILE + if it's supported, else if we're using the default location and we + have dup(2), we can use standard tmpfile() and get an FD from it. + + If we need a named temp file and FILE* and we have mkstemp() we can + use that, else if we have fdopen() we can get a temp FD and open it. + If none of those are available all we can do is generate a temp name + then open it with fopen() which is not secure. + + * src/makeint.h (get_tmpdir): Declare it for use elsewhere. + * src/misc.c (get_tmpdir): Make it public not static. + (get_tmptemplate): Simplify the implementation. + (get_tmppath): Only define this if we have to have it to avoid + warnings from GNU libc. + (get_tmpfd): Generate fatal errors on error. + (get_tmpfile): Ditto. Open files in "wb+" mode to match tmpfile(). + Require a filename pointer (all callers want it). + * src/os.h (os_anontmp): Implement for posixos.c as well. + * src/posix.c (jobserver_setup): Don't use mktemp to avoid GNU libc + errors. Instead construct the FIFO name based on the PID. + (osync_setup): get_tmpfd() can't fail so don't check it. + (os_anontmp): If the system supports O_TMPFILE use it. If not, and + we want to create the temporary file in the default directory, we + can use tmpfile() then use dup() to copy the file descriptor. + * src/main.c (main): get_tmpfile() can't fail. + * src/vmsjobs.c (child_execute_job): get_tmpfile() can't fail. + +2022-10-18 Paul Smith + + Add ISDIRSEP() helper macro and use it + Create a ISDIRSEP() macro to check for directory separator chars + using the stopchar_map, and replace inline checks and explicit + STOP_SET calls with this macro. + + * src/makeint.h (ISDIRSEP): Create the macro using MAP_DIRSEP. + * src/dir.c (find_directory): Replace inline checks with ISDIRSEP. + (file_exists_p): Ditto. + (file_impossible): Ditto. + (file_impossible_p): Ditto. + (local_stat): Ditto. + * src/file.c (lookup_file): Ditto. + * src/function.c (abspath): Ditto. + * src/job.c (_is_unixy_shell): Ditto. + (is_bourne_compatible_shell): Ditto. + (construct_command_argv): Ditto. + * src/main.c (find_and_set_default_shell): Ditto. + (main): Ditto. + * src/read.c (eval): Ditto. + (parse_file_seq): Ditto. + * src/remake.c (name_mtime): Ditto. + * src/vpath.c (construct_vpath_list): Ditto. + +2022-10-18 Paul Smith + + Add preprocessor macros for different platforms + * configure.ac: MK_CONFIGURE shows config.h was generated by configure. + * src/config.ami: Define MK_AMIGAOS. + * src/config.h-vms: Define MK_VMS. + * src/configh.dos: Define MK_DJGPP. + * src/config.h.W32: Define MK_W32 and WINDOWS32. + * src/build_w32.bat: Let WINDOWS32 be defined by config.h. Remove + unused setting of WIN32. + * src/job.c: Clean up use of WIN32. + * src/main.c: Ditto. + * tests/scripts/features/default_names: Ditto. + +2022-10-18 Paul Smith + + Check for recipe line count overflow before it overflows + awk 'BEGIN { + print "x:" + for (i = 0; i < 65536; i++) + printf "\techo %d\n", i} + ' | make -f - + + Outputs only "make: 'x' is up to date." Larger values run only the + lines above 65536. Reported by Paul Eggert . + + * src/commands.c (chop_commands): Check the line count before it has + a chance to overflow. Use size_t for max count so it can't overflow. + Remove stray 'd' in diagnostic. + +2022-10-18 Paul Smith + + Remove template files to simplify distribution creation + The README templates were not useful since the replacement step + didn't have anything to replace: rename them. + + Rather than creating template files for the config variants, create + mkconfig.h.in containg PACKAGE_* variables to be replaced, and have + config variant header files include it. Note on POSIX we don't use + this, and continue to generate a single config.h.in file. + + Use config.status to convert the README.in and mkconfig.h.in files + during distribution creation. + + Modify all users of VERSION to use PACKAGE_VERSION instead. + + * configure.ac: Use GNU Make not GNU make as the package name. + * README.in: Use GNU Make not GNU make. + * README.git: Remove references to README.W32.template. + * .gitignore: Update for new behavior. + * Basic.mk.template: Remove unused posix_SOURCES and VERSION, and + references to unshipped mk/Posix.mk + * Makefile.am: Add src/mkconfig.h as an extra dist file. + * bootstrap.bat: Rewrite mkconfig.h.in to mkconfig.h + * maintMakefile: Remove obsolete template files; add mkconfig.h.in. + * prepare_vms.com: Rewrite mkconfig.h.in to mkconfig.h + * mk/VMS.mk: Fix incorrect header file prerequisite. + * src/mkconfig.h.in: New file containing PACKAGE variables. + * src/config.ami: Include mkconfig.h. + * src/config.h.W32: Ditto. + * src/configh.dos: Ditto. + * src/config.h-vms: Ditto. + * src/version.c: Use PACKAGE_VERSION not VERSION. + +2022-10-16 Juan M. Guerrero + + Support building with DJGPP 2.05 + * builddos.bat: Use env var settings for paths. Fix a typo in + expand.o. Add the missing load.o compilation and link. Enable + Guile support. Copy Basic.mk from the correct location. + * src/configh.dos.templage: DJGPP supports strtoll() and ssize_t + given new enough versions. Set preprocessor variables to 1 not 0. + +2022-10-16 Paul Smith + + * src/job.c: [SV 63185] Include sys/loadavg.h if needed. + +2022-10-16 Paul Smith + + [SV 63215] Remember the random seed for shuffle mode + Basic fix provided by James Hilliard . + Ensure we remember and propagate the random seed we generate during + shuffle mode. Also add a debug statement displaying the seed. + + * src/shuffle.c (shuffle_set_mode): Init and save the randoms seed. + * src/misc.c (make_rand): Code cleanups. + * src/main.c (main): Show a debug message containing the seed. + +2022-10-15 Paul Smith + + Use (void) rather than () in function declarations + In C, a function declaration with () allows any set of arguments. + Use (void) to mean "no arguments". + + * src/dep.h: Switch () to (void) for functions with no arguments. + * src/makeint.h: Ditto. + * src/os.h: Ditto. + * src/shuffle.h: Ditto. + * src/variable.h: Ditto. + +2022-10-15 Paul Smith + + [SV 63157] Ensure temporary files are removed when signaled + Original patch from Dmitry Goncharov . + When handling a fatal signal ensure the temporary files for + stdin and the jobserver fifo (if in use) are deleted. + + * src/makeint.h (temp_stdin_unlink): Declare a new method. + * src/main.c (temp_stdin_unlink): Delete the stdin temporary file + if it exists. If the unlink fails and we're not handling a signal + then show an error. + (main): Call temp_stdin_unlink() instead of unlinking by hand. + * src/commands.c (fatal_error_signal): Invoke cleanup methods if + we're handling a fatal signal. + * tests/scripts/features/output-sync: Test signal handling during + output sync and jobserver with FIFO. + * tests/scripts/features/temp_stdin: Test signal handling when + makefiles are read from stdin. + +2022-10-15 Paul Smith + + * src/posixos.c (job_root): Remember root jobserver instances + (jobserver_setup): Set job_root to true. + (jobserver_clear): if we're the root instance and we're using a + FIFO, unlink it. If we're not in a signal handler, free memory. + (jobserver_acquire_all): Call jobserver_clear(). + (sync_root): Rename from sync_parent for consistency. + + Set the proper type for variables set in signal handlers + * bootstrap.conf: Get gnulib's sig_atomic_t type checking M4 macro. + * configure.ac: Invoke it. + * src/makeint.h (handling_fatal_signal): Set the type correctly. + * src/commands.c (handling_fatal_signal): Ditto. + +2022-10-08 Dmitry Goncharov + + * tests/test_driver.pl (toplevel): [SV 63156] Keep temp env vars + +2022-10-03 Paul Smith + + Clean up some warnings on Windows builds + * src/arscan.c (parse_int): Avoid conversion from int to char and + check for overflow given a max value. + (ar_scan): Check intmax sizes then cast to the proper type. + (ar_member_touch): Get proper return type from ar_scan and cast it + to off_t. + * src/function.c (a_word_hash_cmp): Don't cast from size_t to int. + (func_filter_filterout): Count using unsigned long to avoid casts. + (construct_include_path): Explicitly cast to void*. + * src/shuffle.c (reverse_shuffle_array): Use size_t index. + * src/w32/subproc/sub_proc.c (process_wait_for_multiple_objects): + Initialize the return value in case the count is 0. + + * src/misc.c (make_lltoa): Use printf format macro from makeint.h + (make_ulltoa): Ditto. + + * src/arscan.c (ar_scan): Avoid sign comparison warnings + Pacify 12.2.1 20220819 (Red Hat 12.2.1-2) -Wsign-compare by checking + the readbuf() return explicitly for errors then casting from ssize_t. + Initial patch provided by Paul Eggert . + +2022-10-03 Paul Eggert + + Support systems with 32-bit long and 64-bit time_t + Don't assume that time_t fits in long, as some hosts (e.g., + glibc x86 -D_TIME_BITS=64) have 32-bit long and 64-bit time_t. + + * bootstrap.conf (gnulib_modules): Add largefile, to support files + with timestamps after Y2038 on hosts with 32-bit long. + * configure.ac: Do not call AC_SYS_LARGEFILE, as the largefile module + does that for us. + * src/makeint.h (PRIdMAX, PRIuMAX, SCNdMAX): Define if not already + defined (taken from gnulib). + * src/ar.c: Include intprops.h, for TYPE_MAXIMUM, as + INTEGER_TYPE_MAXIMUM does not work on time_t without issuing a bunch + of warnings. + (ar_member_date): Check that result is in time_t range. + (ar_member_date_1): Use intmax_t to hold the date. + (ar_glob_match): Ditto. + * src/arscan.c (VMS_function, VMS_function_ret, ar_scan) + (parse_int, ar_scan, ar_member_pos, ar_member_touch) + (describe_member): Convert long int to intmax_t. + * src/file.c (file_timestamp_sprintf): Use intmax_t/uintmax_t instead + of long/unsigned long for values that might be time_t. + * src/arscan.c (ar_member_touch): Fix buffer overrun if the timestamp + is too large. + +2022-10-03 Paul Smith + + Add support for intmax_t + * configure.ac: Ask autoconf to detect it. + * src/config.ami.template: Add #define intmax_t for AmigaOS. + * src/config.h-vms.template: Add #define intmax_t for VMS. + * src/config.h.W32.template: Add #define intmax_t for Windows. + * src/configh.dos.template: Add #define intmax_t for MS-DOS/DJPP. + + * NEWS: Deprecate Xenix + +2022-10-02 Paul Smith + + [SV 63098] Temporarily revert the change to pattern rule behavior + The fix for SV 12078 caused a backward-compatibility issue with some + makefiles. In order to allow users to resolve this issue, revert + that change for this release cycle: it will be reinstated in the + next release cycle. Introduce a warning if we detect that the recipe + of a multi-target pattern rule doesn't create all the targets. + + * NEWS: Announce the future backward-incompatibility. + * doc/make.texi (Pattern Intro): Describe the behavior and that it + will change in the future. + * src/remake.c (check_also_make): Check for also_make targets that + were not created and generate a warning. + (update_goal_chain): Call the new function. + (check_dep): Ditto. + (update_file_1): Defer implicit rule detection until after we check + all the also_make files (as it used to be). + * tests/scripts/features/patternrules: Add tests of the new warning. + Skip the tests for SV 12078. + +2022-10-02 Paul Smith + + * doc/make.texi (Prerequisite Types): [SV 58056] Clarify ordering. + + * src/filedef.h (is_ordinary_mtime): Check for "ordinary" mod time. + * src/remake.c (update_file_1): Use the new macro. + + * src/remake.c (update_file_1): Return valid enum element, not 0. + + * NEWS: Announce deprecation of OS/2 and AmigaOS ports + + * src/main.c (main): Add debug output for jobserver and osync. + * src/posixos.c (jobserver_setup): Remove redundant debug output. + (jobserver_parse_auth): Ditto. + +2022-10-02 Andreas Schwab (tiny change) + + [SV 63111] Ensure output-sync is cleaned on re-exec and recursion + Now that output-sync is using a separate file as a mutex rather than + stdout, ensure the new file descriptor is closed before re-exec and + not inherited by children. + + * src/main.c (main): Call osync_clear() before re-exec. + * src/posixos.c (osync_setup): Reset output-sync handle inheritance. + (osync_parse_mutex): Ditto. + +2022-10-01 Paul Smith + + * src/function.c: Change int to uint to align with gmk_func_ptr + +2022-10-01 Dmitry Goncharov + + * doc/make.texi (Loaded Object API): [SV 63126] Fix typos and examples + +2022-10-01 Paul Smith + + Implement a simple xorshift 32bit random number generator + Avoid relying on the system random number generator for our random + shuffle, so that the same seed gives the same results on all systems. + This generator doesn't need to be amazing, just pretty good, so don't + bother with xorshift* or xorshift+, etc. + + * src/makeint.h: Declare make_seed() and make_rand(). + * src/misc.c (make_seed): Set the seed value for the RNG. + (make_rand): Return the next random number. If the seed was not set + initialize it first. + * src/shuffle.c (shuffle_set_mode): If we don't get a seed from the + user just leave it unset (0). + (shuffle_deps_recursive): Use make_seed() not srand(). + (random_shuffle_array): Use make_rand() not rand(). + +2022-09-25 Dmitry Goncharov + + [SV 63100] Set the floc of every created goal dep struct + * src/read.c (eval): Initialize the goaldep floc pointer. + * tests/scripts/features/loadapi: Verify that the floc is set after + unloading and reloading dynamic objects. + +2022-09-25 Paul Smith + + * doc/make.texi: Update out of date behavior for grouped targets. + + * README.git: Announce releases to the platform-testers list + +2022-09-25 Paul Smith + + Provide new functions to convert long long to string + The previous attempt to use PRI* macros to avoid compiler-specific + printf format specifiers didn't work because we are using raw + long long type, not the uintX_t types. On systems where long and + long long are the same size, uint64_t might be type "long" and PRId64 + is just "ld". + + Instead write new functions that convert [unsigned] long long to a + string and call those instead. + + * src/makeint.h: Declare make_lltoa() and make_ulltoa(). + * src/misc.c (make_lltoa): New function that writes a long long value + into a provided buffer. Return the buffer for ease-of-use. + (make_ulltoa): Ditto, for unsigned long long. + * src/function.c (func_wordlist): Call these new methods. Also + rework the error strings so we share the translated string. + * src/dir.c (print_dir_data_base): Call the new methods instead of + using MSVC macros. + +2022-09-25 Paul Smith + + Always restore global environ if we use vfork + We may change the global environ variable in the child; when using + vfork() this also sets it in the parent. Preserve the parent's + environ in child_execute_job() so it takes effect for all callers. + + Reported by Denis Excoffier + Root cause found by Martin Dorey + + * src/job.c (start_job_command): Remove save/restore of the parent + environment. + (child_execute_job): Add save/restore of the parent environment, + if we use vfork(). + * tests/scripts/functions/shell: Add a test the crashes if we don't + reset environ after we run $(shell ...). + +2022-09-25 Dmitry Goncharov + + * configure.ac: [SV 63070] Clean up the test program for posix_spawn. + +2022-09-25 Paul Smith + + * src/posixos.c (osync_clear): Don't close invalid FDs. + + * maintMakefile: Use gnulib ncftpput-ftp if ncftpput is missing. + + * src/misc.c (strncasecmp): Use size_t for length to match std. + * src/misc.h (strncasecmp): Fix the declaration. + + * configure.ac: Update to GNU make 4.3.91 + * NEWS: Update the version and clarify some backward-compat issues. + +2022-09-25 Eli Zaretskii + + Fix compiler warnings in the MS-Windows build. + * src/w32/w32os.c (osync_get_mutex, osync_parse_mutex): Cast to + DWORD_PTR when converting integers to HANDLEs and vice versa. + + * src/w32/pathstuff.c (w32ify): Pacify compiler warnings about + 'strncpy'. + + * src/makeint.h (PRId64) [!HAVE_INTTYPES_H]: Define if undefined. + * src/function.c (func_wordlist): Use PRId64 instead of %lld. + +2022-09-24 Eli Zaretskii + + Avoid compilation warnings + * src/implicit.c: (pattern_search): + * src/main.c: (main): Avoid compilation warnings for variables + only used when compiling a debug version with assertions. + +2022-09-20 Paul Smith + + Release GNU make 4.3.90 + * NEWS: Update for the prerelease. + * bootstrap.conf: Choose the latest stable gnulib. + * README.git: Updates. + + * tests/script/parallelism: Force wait to remove races. + +2022-09-20 Dmitry Goncharov + + [SV 56301] Fail if an included makefile can't be built + Fail if a mandatory include file fails to be built even if it's + built as part of a grouped target where the other include file + is optional. + + * src/main.c (main): If a makefile doesn't build set any_failed. + * tests/scripts/features/include: Add tests. + * tests/scripts/options/dash-k: Stop after include build failure. + +2022-09-20 Paul Smith + + * tests/scripts/features/statipattrules: [SV 17374] Add test + Verify that double-colon static pattern rules work. + +2022-09-20 Paul Smith + + [SV 12078, SV 62809] Rebuild grouped targets if any is missing + If any of a set of grouped targets is missing or out of date, even + if make is not trying to build that target, rebuild them all. + Ensure this is true for explicit grouped targets as well as pattern + rule grouped targets. + + Original patch by Jonathan Gravel + + * src/remake.c (update_file_1): After matching any pattern rules, + go through the also_make targets and set noexist as needed. Also + compute the oldest this_mtime. + * tests/scripts/features/grouped_targets: Add regression tests. + * tests/scripts/features/patternrules: Ditto. + * tests/features/vpath: Rewrite to use modern run_make_test(). + Add a test that we check for VPATH before implicit rule search. + Move the tests in vpath2 and vpath3 into this suite. + * tests/features/vpathplus: Rewrite to use modern run_make_test(). + +2022-09-17 Dmitry Goncharov + + * tests/scripts/targets/WAIT: [SV 63071] Remove possible test races. + +2022-09-13 Paul Smith + + * doc/make.texi (Parallel Disable): Add clarifications. + * NEWS: Suggest how to change makefiles that use $(MAKEFLAGS). + +2022-09-12 Paul Smith + + [SV 13862] Implement the .WAIT special target + The next version of the POSIX standard defines parallel execution + and requires the .WAIT special target as is implemented in some other + versions of make. + + This implementation behaves similarly to others in that it does not + create a relationship between targets in the dependency graph, so + that the same two targets may be run in parallel if they appear as + prerequisites elsewhere without .WAIT between them. + + Now that we support .WAIT it's trivial to also support prerequisites + of the .NOTPARALLEL special target, which forces the prerequisites of + those targets to be run serially (as if .WAIT was specified between + each one). + + * NEWS: Announce the new .WAIT and .NOTPARALLEL support. + * doc/make.texi (Parallel Disable): A new section to discuss ways in + which parallel execution can be controlled. Modify cross-refs to + refer to this section. + * src/dep.h (struct dep): Add a new wait_here boolean. + (parse_file_seq): Add PARSEFS_WAIT to check for .WAIT dependencies. + * src/file.c (split_prereqs): Use PARSEFS_WAIT. + (snap_deps): If .NOTPARALLEL has prerequisites, set .WAIT between + each of _their_ prerequisites. + (print_prereqs): Add back in .WAIT when printing prerequisites. + * src/implicit.c (struct patdeps): Preserve wait_here. + (pattern_search): Ditto. Use PARSEFS_WAIT when parsing prereqs for + pattern rule expansion. + * src/read.c (check_specials): Don't give up early: remembering to + update these options is not worth the rare speedup. + (check_special_file): If .WAIT is given as a target show an error-- + once--if it has prereqs or commands. + (record_files): Call check_special_file on each target. + (parse_file_seq): If PARSEFS_WAIT is given, look for .WAIT prereqs. + If we see one assume that we are building a struct dep chain and set + the wait_here option while not putting it into the list. + * src/remake.c (update_file_1): If wait_here is set and we are still + running, then stop trying to build this target's prerequisites. + * src/rule.c (get_rule_defn): Add .WAIT to the prerequisite list. + * src/shuffle.c (shuffle_deps): Don't shuffle the prerequisite list + if .WAIT appears anywhere in it. + * tests/scripts/targets/WAIT: Add a test suite for this feature. + +2022-09-12 Dmitry Goncharov + + [SV 63045] Reload each intact unloaded shared object + If makefile rules do not update an unloaded shared object, load it + again. Avoid double loading of the same object if the setup function + returns -1. + + * src/filedef.h (struct file): Add "unloaded" flag. + * src/makeint.h (load_file): Take struct file *. + (unload_file): Return int. + * src/main.c (main): Reload unloaded shared objects if they weren't + updated. + * src/commands.c (execute_file_commands): Set "unloaded" and reset + "loaded" when a shared object is unloaded. + * src/read.c (eval): Set "loaded" and reset "unloaded" when a shared + object is loaded. Add successfully loaded files to the db. + * src/load.c (load_file): Check "loaded" to avoid double loading the + same object. Fix a memory leak of string loaded. Return -1, rather + than 1, if the object is already loaded. This fixes double loading of + the same object when the setup routine returns -1. + (load_object): Add a log message. + (unload_file): Return an error on dlclose failure. Log a message. + * tests/scripts/features/loadapi: Add new tests. + +2022-09-12 Sergei Trofimovich + + [SV 63047] Fix shuffle of SECONDEXPANSION prerequisites + Commit 07eea3aa4 `make --shuffle` prevented shuffling prerequisites + that use .SECONDEXPANSION, since shuffle happens before expansion. + This has two problems: + 1. No shuffling happens for such prerequisites. + 2. Use-after-free when outdated '->shuf' links are used. + + Add a reshuffle into expansion phase right after dependency changes. + + * src/file.c (expand_deps): Add reshuffle if dependencies change. + * src/shuffle.c (identity_shuffle_array): Fix comment typo. + * tests/scripts/options/shuffle: Add new SECONDEXPANSION test. + +2022-09-11 Paul Smith + + * doc/make.texi (How Make Works): Clarify default goal exceptions. + + * src/shuffle.c: Minor coding changes. + +2022-09-11 Paul Smith + + Support the MAKE_TMPDIR environment variable + Allow build systems to choose an alternative location for make to + store its temporary files. + + * NEWS: Announce the new environment variable. + * doc/make.texi (Temporary Files): Provide documentation. + * src/misc.c (get_tmpdir): Split into a new function. Compute the + temporary directory and store it in a static location. + * tests/scripts/features/jobserver: Add a test of MAKE_TMPDIR. + +2022-09-10 Paul Smith + + [SV 62898] Document ways to hide special chars from make functions + * doc/make.texi (Function Call Syntax): Add a subsubheading describing + which special characters may need to be hidden from make functions. + +2022-09-10 Dmitry Goncharov + + [SV 63044] load: Update .LOADED if the setup function returns -1 + * src/load.c (load_file): Update .LOADED if setup returns non-0. + * tests/scripts/features/load: Change the return value based on an + environment variable. Ensure that returning -1 still adds to + .LOADED. Also add a test that verifies that make doesn't try to + rebuild the loaded file if -1 is returned. + +2022-09-10 Paul Smith + + Enhance the make.texi formatting + Notes provided by Tzvetelin Katchov . + + * doc/make.texi: Remove obsolete @refill statements. Add some breaks + to overfull lines. Fix up some example text. + +2022-09-10 Paul Smith + + Clean up maintMakefile + Notes provided by Tzvetelin Katchov + + * maintMakefile (git-very-clean): Add -x to git clean. + (GNULIBDIR): Use GNULIB_SRCDIR, or the local module if not set. + +2022-09-10 Paul Smith + + [SV 63037] Fix tests for newer OS / compiler + * tests/scripts/features/load: Add function prototypes. + * tests/scripts/features/temp_stdin: Only set user execute bits. + Some configurations don't allow changing the group bits...?? + +2022-09-10 Paul Smith + + [SV 63040] shell: Fall back to the callers environment + If we detect a recursive variable reference when constructing the + environment for the shell function, return the original value from the + caller's environment. Other options such as failing, returning the + empty string, or returning the unexpanded make variable value have + been shown to not behave well in real-world environments. If the + variable doesn't exist in the caller's environment, return the empty + string. + + Found by Sergei Trofimovich when testing older + versions of autoconf. + + * NEWS: Clarify this behavior. + * doc/make.texi (Shell Function): Ditto. Also add info about !=. + * src/expand.c (recursively_expand_for_file): Search the caller's + environment if we detect a recursive variable expansion. + * tests/scripts/functions/shell: Add tests for this behavior. + +2022-09-08 Paul Smith + + [SV 63016] Don't fail exporting to $(shell ...) + The fix for SV 10593 caused recursive expansion errors when exporting + a variable that contains a $(shell ...) invocation. If we see this + type of recursion, ignore it and expand to the empty string rather + than failing. + + * src/variable.h (env_recursion): New global variable. + * src/variable.c (target_environment): If creating the environment + for a $(shell ...) function increment env_recursion. Remove the + check for expansion in a shell function context. + * src/expand.c (recursively_expand_for_file): Check for recursive + expansion in a $(shell ...) environment context and if present, + show the verbose message and return the empty string. + * tests/scripts/functions/shell: Add a test for this situation. + +2022-09-08 Paul Smith + + Ensure debug output ends in newline + * src/load.c (load_object): Debug output strings must include \n. + * src/variable.c (target_environment): Ditto. + * src/posixos.c: Remove extra newlines. + +2022-09-08 Paul Smith + + Sanitize tar file ownership, mode, and order + For reproducibility ensure all files in the dist tar file are owned by + root, and sorted by name. Force the mode on all files to be writable + by the owner and not writable by group or user, by default. + + Remove unnecessary execute permissions from build_w32.bat. + + Recommended by Tzvetelin Katchov . + +2022-09-08 Paul Smith + + bootstrap: Update to the latest gnulib bootstrap model + * README.git: Document the changes. + * bootstrap.conf: Set GNULIB_REVISION to avoid random updates. + * configure.ac: Set the minimum autoconf version back to 2.69: + that's the most common version deployed today, and it still works. + * bootstrap: Copy the latest from gnulib. + * autogen.sh: Ditto. + * autopull.sh: Ditto. + * bootstrap-funclib.sh: Ditto. + +2022-08-30 Paul Smith + + Fix tests for MacOS and Windows + * maintMakefile: Remove the template headers as prerequisites. + * tests/scripts/features/jobserver: Only test fifo if enabled. + * tests/scripts/variables/INCLUDE_DIRS: On MacOS none of the default + directories exist so .INCLUDE_DIRS is empty by default. + * tests/scripts/features/se_explicit: Fail via exit. cp will show + different error messages on different systems. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/se_statpat: Ditto. + +2022-08-30 Paul Smith + + [SV 62840] Don't change IO buffering before printing version + If users run 'make --version | head -n1' they expect make to exit + with a success (0) code. This works because the pipe forces the + default buffering on stdout to be fully buffered so all the output + is printed to the pipe in a single write(2) and won't fail. However + due to output sync we forcibly set stdout to line buffered, which + means if the reader closes the pipe fast enough make will exit with + an error code because the write to stdout failed. + + Move the setup done in output_init() back into main() where it can + be done in a proper order. Rework the order of operations during + startup so that we check for help and version flags before we change + the buffering. Clean up the behavior of print_usage(). + + Original changes from Dmitry Goncharov . + + * src/main.c (switches): Don't send --version in the environment. + (print_usage): Add a blank line after the version before the usage. + Move the die() into this function since we always die() afterward. + Note the die will flush so no need to do it explicitly. + (print_version): The caller will fflush when appropriate. + (close_stdout): Move from output.c so it is installed early. + (decode_switches): Only call print_usage on error, not for --help. + (main): Install the close_stdout handler immediately after start. + Move the calls to print_usage() due to --help and --version to be + called immediately after we decode the switches. Move the buffer set + here from output_init(), immediately after we know we'll be running. + * src/output.c (output_init): Move buffer setting to main(). + (close_stdout): Move to main(). + +2022-08-30 Paul Smith + + Rework output sync to lock a temp file on POSIX + Some POSIX systems do not allow locks to be taken on non-files, such + as pipes. This is a problem since very often make is invoked with + its stdout redirected to a pipe. Also, if stdout is redirected to a + file that already has a lock on it for some other reason (perhaps a + shared file such as /dev/null) it can cause a hang. + + This means our previous method of locking stdout, although it had some + nice advantages, is not portable enough. Instead, use a temporary + file and take the lock on that. We pass the name of the file to child + make processes. On Windows we continue to use a shared mutex for + output sync. + + Remove POSIX emulation functions like fcntl from Windows; instead + follow the lead of the jobserver and create an interface in os.h for + output sync, and move the OS-specific content to posixos.c and + w32os.c. + + * NEWS: Add a note. + * src/makeint.h (ALL_SET): Check that all bits are set. + * src/os.h: Add bits for checking the state of stdin/stdout/stderr. + Add prototypes for OS-specific output sync methods. + * src/posixos.c (check_io_state): Determine the status of stdin, + stdout, stderr an return a suite of bits describing them. + (osync_enabled): If the global variable holding the FD of the lock + file (osync_handle) is valid return true. + (osync_setup): Create a temporary file and remember its name in a + global variable (osync_tmpfile), and set osync_handle. + (osync_get_mutex): If output sync is enabled, return the filename + of the lock file prefixed with "fnm:" to denote a filename. + (osync_parse_mutex): If the provided filename has the wrong format + disable output sync. Else open the lock file and set osync_handle. + (osync_clear): Close osync_handle. If we're the parent make, then + also unlink the temporary file. + (osync_acquire): Take a lock on the osync_handle descriptor. + (osync_release): Release the lock on the osync_handle descriptor. + (fd_set_append): Add APPEND mode to a file descriptor. + * src/w32/w32os.c: Perform the same actions as posixos.c, copying + the details from src/w32/compat/posixfcn.c. Use a mutex rather + than locking a temporary file. + * src/output.h: Remove all the OS-specific content. + * src/output.c: Remove all the OS-specific content. + (set_append_mode): Remove and replace with fd_set_append(). + (sync_init): Remove and replace with check_io_state(). + (acquire_semaphore): Remove and replace with osync_acquire(). + (release_semaphore): Remove and replace with osync_release(). + (setup_tmpfile): If the IO state is not obtained, get it. If stdout + and/or stderr are valid, set up a tempfile to capture them. + (output_init): Set io_state if not set already, and check it when + deciding whether to close stdout on exit. + * src/main.c (main): If we're syncing, set up the mutex using the + new osync_setup() / osync_parse_mutex() methods. + (prepare_mutex_handl_string): Replace with osync_parse_mutex(). + (die): Call osync_clear(). + * src/w32/compat/posixfcn.c: Remove implementations of fcntl(), + record_sync_mutex(), create_mutex(), and same_stream(). + +2022-08-30 Paul Smith + + Add get_tmpfd() and allow anonymous temp files + The output sync feature wants a file descriptor not a FILE*. We were + using tmpfile() but this returns FILE* which means we needed to dup() + the descriptor then fclose() the original, which is just unnecessary + overhead for every command we run. + + Create a get_tmpfd() method that returns a file descriptor directly + by using mkstemp() if available, else do the best we can. + + Also allow anonymous temp files if the filename pointer is NULL. + This causes the file to be unlinked. On Windows this requires a + special open so add an os_anontmp() method to handle this. + + * src/makeint.h: Add prototype for get_tmpfd(). + * src/misc.c (get_tmpfd): If we have mkstemp() use that, else just + open(2). If we don't want to keep the filename, unlink the file. + (get_tmpfile): Use get_tmpfd() if we have fdopen(), else use fopen(). + * src/output.c (output_tmpfd): Call get_tmpfd() with NULL. + * src/os.h (os_anontmp): On Windows make this a function, else fails. + * src/w32/compat/posixcfn.c (tmpfile): Move to w32os.c:os_anontmp(). + * src/w32/w32os.c (os_anontmp): Create a temp file that will be deleted + when the process exits, and return a file descriptor to it. + +2022-08-29 Paul Smith + + test_driver: check for leftover temp files after each test + Reset the temp directory for every test to a local directory, then + after each test see if any new temp files were created and not + deleted: if they were then fail the test. Rather than delete the + temp files we leave them there and avoid reporting files that were + seen before, so the user can investigate them. + + Rewrite the temp_stdin tests to rely on this built-in behavior + rather than implementing the checks directly. + + * tests/test_driver.pl: Create a $TEMPDIR variable pointing to a + temporary directory outside the test temp directory. + (toplevel) Before starting any tests create a temp directory and set + the POSIX and Windows temp directory environment variables to use it. + (compare_output) Check the contents of the temp directory. If any + new files have appeared, fail the test. + * tests/scripts/features/temp_stdin: Remove check_tempfile() and + all users of it, plus setting of temp environment variables. + +2022-08-22 Dmitry Goncharov + + [SV 62908] Don't free fifo_name twice during error handling + * src/posixos.c (jobserver_setup): Set fifo_name to NULL after free. + * tests/scripts/features/jobserver: Add tests. + +2022-08-22 Paul Smith + + Fix bootstrap.bat for bootstrapping on Windows + * README.git: Clarify that these methods are lightly tested. + * build_w32.bat: Don't support any config step: fail if not completed. + Move the config steps into bootstrap.bat. Don't print compile lines + by default and add a --verbose option to show them. + * bootstrap.bat: Ensure we have curl and sed before we do anything. + Pull the latest necessary files from gnulib. Create a convert.sed + script that can update the various template files, and update + Basic.mk, config.h.W32, and gmk-default.h. + * tests/run_make_tests.pl: Remove CRLF rather than using chop. If we + run perl in Git for Bash it seems to handle newlines differently. + * tests/scripts/features/temp_stdin: Remove the make copy and close + STDIN so we can delete the temp file on Windows. + * .gitignore: Ignore the convert.sed script. + +2022-08-14 Paul Smith + + * doc/make.texi (Variables/Recursion): [SV 56446] Clarify export docs + +2022-08-07 Paul Smith + + * doc/make.texi (Goals): [SV 51306] Improve MAKECMDGOALS example + +2022-08-07 Dmitry Goncharov + + * doc/make.texi (Remaking Makefiles): [SV 61623] Add optimization + +2022-08-03 Paul Smith + + * doc/make.texi (Chained Rules): [SV 61957] Clarify NOTINTERMEDIATE + + [SV 62496] Fix example of testing MAKEFLAGS + * doc/make.texi (Options/Recursion): Define the layout of MAKEFLAGS. + (Testing Flags): Fix the example to test the first word. + +2022-08-02 Paul Smith + + Support implementing the jobserver using named pipes + Using anonymous pipes for jobserver support has some advantages: + for example there is nothing on disk that needs to be cleaned up. + However it has many obscure problems, related to the fact that in + order for it to work we need to ensure these resources are properly + passed through to child processes that want to use the jobserver. + At the same time we don't want to pass the pipe to process which + DON'T know about the jobserver. + + Other processes can open file descriptors which we then think are + our jobserver, but aren't. And, we open the pipe file descriptors + in blocking mode which doesn't work for all users. + + See issues such as SV 57178, SV 57242, and SV 62397 + + To avoid these issues, use named pipes (on systems where they are + available) instead of anonoymous pipes. This simplifies many things: + we never need to pass open file descriptors to our children; they + can open the jobserver named pipe. We don't need to worry about + recursive vs. non-recursive children. Users don't have to "pass + through" the resources if they are invoking sub-makes. Each child + can open its own file descriptor and set blocking as needed. + + The downside is the named pipe exists on disk and so must be cleaned + up when the "top-level" make instance exits. + + In order to allow make to continue to be used in build systems where + older versions of GNU make, or other tools that want to use the + jobserver, but don't understand named pipes, introduce a new option + --jobserver-style that allows the user to choose anonymous pipes. + + * NEWS: Announce the change and the --jobserver-style option. + * doc/make.1: Add --jobserver-style documentation. + * doc/make.texi (Special Variables): Add missing items to .FEATURES. + (Options Summary): Add --jobserver-style. + (POSIX Jobserver): Named pipes, changes to --jobserver-auth, and the + --jobserver-style option. + (Windows Jobserver): Document --jobserver-style for Windows. + * configure.ac: Check for mkfifo. + * src/config.h-vms.template: Undefined HAVE_MKFIFO. + * src/config.h.W32.template: Ditto. + * src/main.c: Add jobserver-style as a new command line option. + (main): Add jobserver-fifo to .FEATURES if supported. Pass the style + option to jobserver_setup(). + * src/os.h (jobserver_setup): Accept a style string option. + * src/posixos.c (enum js_type): Enumeration of the jobserver style. + (js_type): Which style we are currently using. + (fifo_name): The path to the named pipe (if in use). + (jobserver_setup): If no style is given, or "fifo" is given, set up a + named pipe: get a temporary file and use mkfifo() on it, then open it + for reading and writing. If something fails fall back to anonymous + pipes. + (jobserver_parse_auth): Parse jobserver-auth to determine the style. + If we are using a named pipe, open it. If we're using anonymous pipes + ensure they're valid as before. + (jobserver_get_invalid_auth): Don't invalidate the jobserver when + using named pipes. + (jobserver_clear): Clean up memory used for named pipes. + (jobserver_acquire_all): Unlink the named pipe when done. + * src/w32/w32os.c (jobserver_setup): Check the style argument. + * tests/scripts/features/jobserver: Use --jobserver-style to test + the anonymous pipe behavior, and also test named pipe/semaphore + behavior. Check invalid jobserver-style options. + * tests/scripts/functions/shell: Use --jobserver-style to test the + anonymous pipe behavior, and also test named pipe/semaphore + behavior. + +2022-08-02 Paul Smith + + Enhance get_tmpfile() and add get_tmppath() + Move all the logic on creating temporary files into misc.c, and add + a new function get_tmppath() that returns the pathname to a temporary + file without creating or opening it. + + * src/makeint.h: Add a declaration for get_tmppath(). Remove the + template argument from get_tmpfile(): it will compute its own. + * src/main.c (main): Remove the logic for computing templates. + * src/vmsjobs.c (child_execute_job): Ditto. + * src/misc.c (get_tmptemplate): New function to return an allocated + template string for use with various mktemp-style functions. + (get_tmppath): Return an allocated path to a temporary file, but do + not create it. Generally this should be avoided due to TOCTOU issues. + (get_tmpfile): Use get_tmptemplate() to generate a template rather + than using one passed in. If we don't have mkstemp() then use + get_tmppath() to compute the path of a temp file. + +2022-07-30 Dmitry Goncharov + + [SV 62706] Only second-expand targets that might be built + Second-expand only the prerequisites of the targets being built. + Defer second-expanding the prerequisites of targets until we need + to decide if they should be built. + + * NEWS: Mention the change in behavior. + * doc/make.texi (Secondary Expansion): Document the new behavior. + * src/filedef.h (struct file): Add flag snapped. + (expand_deps): Declare a function to second expand the + prerequisites of a target. + * src/file.c (rehash_file): Merge flag snapped. + (expand_deps): Remove qualifier static. Check flag snapped. + (snap_deps): Remove the loop which performed second expansion for all + targets. + * src/remake.c (update_file_1): Second expand the prerequisites of + the considered target. + * tests/scripts/features/se_explicit: Add tests. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/se_statpat: Ditto. + +2022-07-30 Paul Smith + + Disable the jobserver in non-recursive children + Savannah issues such as SV 57242 and SV 62397 show how passing + references to closed file descriptors via the --jobserver-auth option + in MAKEFLAGS can lead to problematic outcomes. + + When computing the child environment for a non-recursive shell, add + an extra option to MAKEFLAGS to disable the file descriptors for the + jobserver. + + Unfortunately this doesn't modify the value of the make variable + MAKEFLAGS, it only modifies the value of the sub-shell environment + variable MAKEFLAGS. This can lead to confusion if the user is not + considering the distinction. + + * src/makeint.h: Publish the jobserver-auth value. Add a global + definition of the name of the command line option. + * src/os.h (jobserver_get_invalid_auth): New function to return a + string invalidating the jobserver-auth option. + * src/w32/w32os.c (jobserver_get_invaid_auth): Implement it. On + Windows we use a semaphore so there's no need to invalidate. + * src/posixos.c (jobserver_parse_auth): If we parse the invalid + auth string, don't set up the jobserver. + (jobserver_get_invalid_auth): Return an invalid option. + * src/variable.h (target_environment): Specify if the target + environment is for a recursive shell or non-recursive shell. + * src/variable.c (target_environment): Move checking for MAKELEVEL + into the loop rather than doing it at the end. + Along with this, check for MAKEFLAGS and MFLAGS, and update them + based on whether we're invoking a recursive or non-recursive child, + and also on whether it's necessary to invalidate the jobserver. + * src/function.c (func_shell_base): Shell functions can never be + recursive to pass 0 to target_environment(). + * src/job.c (start_job_command): Specify whether the child is + recursive when calling target_environment(). + * src/main.c: Export jobserver_auth. sync_mutex doesn't need to + be exported. Use the global definition for the option name. + * tests/scripts/variables/MAKEFLAGS: Add tests for $MAKEFLAGS. + +2022-07-30 Paul Smith + + Ensure that MAKEFLAGS is set when invoking $(shell ...) + * src/main.c (main): Don't reset the jobserver if the number of + slots has not changed. + (define_makeflags): Add all normal flags even when ALL is not set. + * tests/scripts/functions/shell: Test invoking make in $(shell ...). + * tests/scripts/variables/MAKEFLAGS: Test the value of MAKEFLAGS in + $(shell ...). + + Take advantage of mempcpy() and stpcpy() + * src/makeint.h (stpcpy): Add missing declaration. + * src/amiga.c (MyExecute): Avoid extra strlen using stpcpy. + * src/function.c (func_shell_base): Ditto. + (func_error): Use memcpy() not strcpy() when we know the length. + * src/job.c (construct_command_argv_internal): Use stpcpy(). + * src/main.c (main): Ditto. + (define_makeflags): Ditto. + * src/variable.c (print_target_variables): Use memcpy() when we know + the length. + * src/commands.c (set_file_variables): Use mempcpy(). + * src/expand.c (variable_buffer_output): Ditto. + * src/file.c (expand_deps): Ditto. + * src/function.c (abspath): Ditto. + (handle_function): Ditto. + * src/implicit.c (pattern_search): Ditto. + * src/job.c (construct_command_argv_internal): Use mempcpy() and + don't add multiple spaces when there are no shell flags. + * src/main.c (decode_env_switches): Use mempcpy() to simplify. + (define_makeflags): Ditto. + * src/variable.c (selective_vpath_search): Ditto. + +2022-07-09 Paul Smith + + Convert HAVE_GETLOADAVG to HAVE_DECL_GETLOADAVG + We want to know if getloadavg() is declared, not if we have it. + + * configure.ac: Add it as a define (why is this not the default?) + * src/job.c: Conditionalize declaration on HAVE_DECL_GETLOADAVG. + * config.ami.template: Rename HAVE_GETLOADAVG to HAVE_DECL_GETLOADAVG. + * config.h-vms.template: Ditto. + * config.h.W32.template: Ditto. + Clean up and add new elements from latest config.h. + +2022-07-09 Paul Smith + + Merge in the latest gnulib findprog-in module + + Merge in the latest gnulib concat-filename module + + Merge in the latest gnulib getloadavg module + + Initial merge of the gnulib-port branch + +2022-07-09 Paul Smith + + Move our local m4 macros to gl/m4 + The gl subdirectory contains our local versions of gnulib module + implementations, so move m4/acinclude.m4 and m4/dospaths.m4 there. + + * gl/modules/make-macros: Create a new module to handle the macros. + * bootstrap.conf: Add the new module. + * configure.ac: Macro invocation is moved to make-macros. + * m4/.gitignore: Delete unnecessary ignore file: m4 is empty. + * .gitignore: Add m4/ as an ignored directory. + +2022-07-09 Paul Smith + + Move our fnmatch/glob implementation into gl/lib + The gl subdirectory contains our local versions of gnulib module + implementations, so move fnmatch* and glob* from lib to gl/lib. + + * gl/modules/make-glob: Add a proper Files: section. + * lib/.gitignore: Delete unnecessary ignore file: lib is empty. + * .gitignore: Add lib/ as an ignored directory. + +2022-07-09 Paul Smith + + * tests/run_make_tests.pl: Exit 1 if we detect an error. + + * configure.ac: Remove AC_FUNC_SETVBUF_REVERSED. + This macro is obsolete: no useful system has this problem anymore. + * src/output.c (output_init): Remove reference to SETVBUF_REVERSED. + * src/config.ami.template: Remove undef of SETVBUF_REVERSED. + * src/config.h-vms.template: Ditto. + * src/config.h.W32.template: Ditto. + + * configure.ac: Check for stpcpy() support. + * src/misc.c (stpcpy): Define it if not provided. + +2022-07-09 Paul Smith + + getloadavg: Remove support for privileged invocation + This was needed when getloadavg required privileged access; in this + case GNU make needed to be installed as a setgid program. But this + hasn't been supported by gnulib getloadavg() since 2011 and systems + are no longer using it, so remove it. + + * src/makeint.h (user_access): Remove unnecessary function. + (make_access): Ditto. + (child_access): Ditto. + * src/misc.c: Remove implementations of the *_access() functions. + * src/main.c (main): Remove unneeded call to user_access(). + * src/job.c (load_too_high): Remove calls to {make,user}_access(). + (exec_command): Remove call to child_access(). + * src/remote-cstms.c: Remove calls to these methods. I suppose it + might be possible this is needed and was piggy-backing on the + privileged setting but since that's been broken for a while I doubt + this is needed. If so we can bring back the implementation into + this source file. + * src/config.h.W32.template: Remove GETLOADAVG_PRIVILEGED undef. + * src/config.h-vms.template: Ditto. + * src/config.ami.template: Ditto. + +2022-07-09 Paul Smith + + * maintMakefile: Allow checkcfg rules to succeed. + We can no longer pass our mondo-warnings options to the builds, + as these will impact all the code including gnulib code, and this + won't work. Also allow the caller to disable either the build.sh + or makefile invocation, for testing. + * Makefile.am: Allow the caller to reset the path to the make + binary to be tested. Remove c90 test: gnulib doesn't support it. + + * build.sh: Manage libgnu_a-prefixed source files + + bootstrap: Remove strerror() + * bootstrap.conf: Remove strerror module + * configure.ac: Add a check for strerror + * src/misc.c: Add a default strerror() if not found + +2022-07-09 Paul Smith + + bootstrap: Remove strtoll() + This pulls in entirely too much stuff we don't need. Instead grab + just the gnulib source file, then include it in src/misc.c. + + * bootstrap.conf: Add just the lib/strtol.c source file. + * configure.ac: Check for strtoll. + * src/misc.c: Include strtol.c, with QUAD set, if needed. + +2022-07-09 Paul Smith + + bootstrap: Remove gnulib version of mempcpy() + This pulls in a metric ton of stuff that we otherwise don't need, just + for a one-liner that we already have a replacement for in src/misc.c. + + * bootstrap.conf: Remove mempcpy + * configure.ac: Add mempcpy to AC_CHECK_FUNCS + +2022-07-09 Paul Smith + + Run autoupdate and clean up autoconf usage + We can assume that the return type of a signal handler is void. + We can assume that, if sys/time.h exists, it can be included + with time.h. + + * bootstrap: Get the latest version + * configure.ac: Require a newer version of autoconf. + Remove unnecessary AC_PROG_CC_C99 (already have AC_PROC_CC). + Remove unnecessary AC_AIX, AC_ISC_POSIX, AC_MINIX. + Remove unnecessary AC_HEADER_STDC, AC_HEADER_TIME, AC_TYPE_SIGNAL. + Use strerror to search for the cposix library. + * src/commands.c (fatal_error_signal): Assume return type is void. + * src/commands.h: Ditto. + * src/job.c: Ditto. + * src/job.h: Ditto. + * src/main.c: Ditto. + * src/makeint.h: Ditto. + Don't bother with TIME_WITH_SYS_TIME. + * src/remote-cstms.c: Check HAVE_SYS_TIME_H. + * src/config.ami.template: Remove RETSIGTYPE. + * src/config.h-vms.template: Ditto. + * src/config.h.W32.template: Ditto. + Remove TIME_WITH_SYS_TIME. + +2022-07-09 Paul Smith + + [SV 10593] Export variables to $(shell ...) commands + Export all variables, including exported makefile variables, when + invoking a shell for the $(shell ...) function. If we detect a + recursive variable expansion, silently ignore that variable and do + not export it. We do print a debug message. + + * NEWS: Announce the potential backward-incompatibility. + * doc/make.texi (Shell Function): Document the export behavior. + * src/main.c (main): Add "shell-export" to .FEATURES. + * src/job.h: New function to free struct childbase. + * src/job.c (free_childbase): Implement it; call from free_child. + * src/function.c (func_shell_base): Use target_environment() to + obtain the proper environment for the shell function. + Use free_childbase() to free memory. + (windows32_openpipe): Don't reset the environment: the caller + already provided a proper PATH variable in envp. + * src/variable.c (target_environment): If we detect a recursive + expansion and we're called from func_shell, ignore the variable. + (sync_Path_environment): Simplify and reduce memory allocation. + * tests/scripts/functions/shell: Add tests for this. + +2022-07-09 Dmitry Goncharov + + [SV 62650] Show correct warning when combining targets + * src/file.c (rehash_file): Fix warning message. + (rehash_file): Fix comment to match the behavior. + * tests/scripts/features/se_explicit: Fix test. + * tests/scripts/features/mult_rules: Add a new test. + +2022-07-09 Dmitry Goncharov + + [SV 62514] Honor command line interface flags + Commit f2771aa614 introduced a bug where some switches were left out + of MAKEFLAGS. Instead of resetting switches, get the same results by + filtering out duplicates. + + * src/makeint.h: Remove reset_switches. + * src/main.c: (reset_switches): Remove reset_switches. + * (main): Remove call to reset_switches. + * (decode_switches): Filter out duplicate flags. + * src/variable.c: (set_special_var): Remove call to reset_switches. + * tests/scripts/variables/MAKEFLAGS: Verify that duplicate flags are + properly filtered out. + +2022-07-07 Paul Smith + + Add gnulib findprog-in + + Add gnulib concat-filename + + Add gnulib getloadavg + + Initial gnulib-port branch commit + +2022-06-19 Paul Smith + + Don't add GNUMAKEFLAGS to the environment + If GNUMAKEFLAGS was not present in the environment when we started, + don't add it. + + * src/main.c (main): Don't mess with GNUMAKEFLAGS unless it exists. + * tests/scripts/variables/GNUMAKEFLAGS: Test this behavior. + +2022-06-18 Paul Smith + + * tests/test_driver.pl: Don't freak if diff can't be found + + * build_w32.bat [WIN]: Use call for all invocations + +2022-06-17 Paul Smith + + Avoid overwriting buffers with long pathnames + Reported, with initial patch, by Gisle Vanem + + * src/main.c (find_and_set_default_shell) [W32]: Pass search_token + directly to w32ify: no need to make a copy first. When we need to + construct a path, use snprintf() to be sure we don't overwrite + the locally-allocated buffer. + * src/w32/pathstuff.c (w32ify) [W32]: Use the malloc version of + _fullpath(), followed by strncpy(), to avoid overwriting buffers. + +2022-06-04 Paul Smith + + * tests/scripts/features/temp_stdin: Remove nested "my" + * tests/scripts/features/statipattrules: Remove unset variable refs. + +2022-06-04 Dmitry Goncharov + + * tests/scripts/features/archives: Fix typo + +2022-06-04 Sergei Trofimovich + + [SV 62100] Add '--shuffle' option support + Introduce non-deterministic ordering into goal and prerequisite + traversal to help tease out inconsistent failures that may happen + when running in parallel build mode. + + Introduce second order into each dependency chain: + 1. Existing order is syntactic order reachable via 'dep->next' + 2. New order is shuffled order stored as 'dep->shuf' in each 'dep' + + When updating goals and prerequisites and '--shuffle' is provided, + use the shuffled order to walk the graph. When automatic variable + are set always use the syntactic order of parameters. + + * Makefile.am: Add new src/shuffle.c and src/shuffle.h file. + * build_w32.bat: Ditto. + * builddos.bat: Ditto. + * makefile.com: Ditto. + * po/POTFILES.in: Ditto. + * doc/make.texi: Add documentation for --shuffle. + * doc/make.1: Ditto. + * src/dep.h (DEP): Add the shuf pointer. + * src/filedef.h (struct file): Add was_shuffled flag. + * src/main.c: (shuffle_mode): Global flag for the shuffle mode. + (usage): Add the --shuffle option. + (switches): Ditto. + (main): Set shuffle_mode based on the command line parameter. + Reshuffle prerequisites if requested. + * src/remake.c (update_goal_chain): Walk the shuffled list if enabled. + (update_file_1): Ditto. + * src/shuffle.h: Provide an interface for shuffling prerequisites. + * src/shuffle.c: Implement option parsing and prerequisite shuffling. + * tests/scripts/options/shuffle: Test shuffle option and modes. + +2022-06-04 Paul Smith + + * src/misc.c (make_toui): Parse a string into an unsigned int + * src/makeint.h: Declare it. + * src/arscan.c (ar_scan): Replace atoi() calls with make_toui(). + Modify some integral types to be more correct. + * src/job.c (load_too_high): Replace atoi() calls with make_toui(). + * src/main.c (main): Ditto. + (decode_switches): Ditto. + + * src/misc.c (make_pid): A function to return the PID + * src/makeint.h: Declare it. + * src/commands.c (fatal_error_signal): Call it. + + * po/LINGUAS: Add a translation for Romanian + +2022-04-24 Noah Goldstein + + Replace strcmp() with memcmp() where possible + memcmp() is always faster than strcmp(). In places where we already + know that both buffers have sufficient size, replace strcmp() with + memcmp(). + + * src/main.c (main): Replace strncmp() with memcmp()==0. + * src/read.c (word1eq): Ditto. + * src/commands.c (set_file_variables): Ditto. + * src/function.c (func_filter_filterout): Ditto. + (a_word_hash_cmp): Use STRING_N_COMPARE since we know the length. + (func_sort): Replace strcmp() with memcmp(). + +2022-04-24 Noah Goldstein + + hash: Remove unnecessary isupper() check before tolower() + The standard requires that tolower() returns its argument if there's + no valid lowercase conversion: it's not necessary to check isupper() + before invoking tolower(). + + Comparing the performance of the old ISTRING_HASH to the new one + on all the files present in GLIBC. + + Data Type Old Time New Time + Alternating case 24985.754 13883.422 + random case 35211.777 13569.051 + all lower 18818.974 13706.645 + all upper 38859.454 13506.315 + + * src/hash.h (ISTRING_HASH_1): Omit isupper() check. + (ISTRING_HASH_2): Ditto. + +2022-04-24 Dmitry Goncharov + + [SV 62206] Fix %-substitution in second expansion of pattern rules + During second expansion of pattern rules only the first pattern in + each "group" was being substituted. E.g. in this makefile: + + .SECONDEXPANSION: + all: hello.x + %.x: $$(wordlist 1, 99, %.1 %.%.2) ; $(info $@ from $^) + hello.1 hello.\%.2 \%.1 \%.\%.2: ; + + the output would build "hello.1" and "%.%.2" because each function + is considered a single "word" and only the first pattern is replaced. + + Fix the expansion so each whitespace-separated string is considered a + word and the first pattern is replaced, giving "hello.1" and + "hello.%.2". + + * src/rule.c (snap_implicit_rules): Keep enough space to replace % + with $(*F) if necessary. + * src/implicit.c (pattern_search): During second expansion break each + get_next_word result into individual words and replace the first % in + each with $* or $(*F) as needed. + * tests/scripts/features/patternrules: Add tests for variations. + +2022-04-24 Dmitry Goncharov + + [SV 62175] Rework secondary expansion tests + The hash function we use can yield different results on big- and + little-endian systems which makes test output different. Choose + names to avoid this. + + * tests/scripts/features/patternrules: Choose portable target names. + * tests/scripts/features/se_explicit: Ditto. + * tests/scripts/features/se_implicit: Ditto. + +2022-04-24 Paul Smith + + * Makefile.am (check-regression): Rename jhelp to thelp + + * tests/scripts/options/dash-f: [SV 62118] Close STDIN + On Windows we can't delete open files, so close STDIN before + removing the temporary input file. + + * tests/scripts/features/reinvoke: [SV 62088] Close STDIN + On Windows we can't delete open files, so close STDIN before + removing the temporary input file. + + * tests/test_driver.pl (run_all_tests): Keep one copy of STDIN + + * Makefile.am: Add INSTALL to the EXTRA_DIST files + +2022-04-24 Dmitry Goncharov + + [SV 62356] If -R is set in the makefile, disable -r + If -R is given on the command line it implies -r as well; make this + same assumption if -R is provided in MAKEFLAGS set in the makefile. + + * src/main.c (main): Check no_builtin_variables_flag after reading + makefiles. + * tests/scripts/options/dash-r: Add a test. + +2022-04-24 Dmitry Goncharov + + [SV 62324] Simplify set_file_variables by passing in the stem + Previously we always used the file->stem value as our stem in + set_file_variables(); when that wasn't correct we had to temporarily + set that value while the function was called, then reset it afterward. + This led to issues (for example when we assumed the stem was a cached + string but it wasn't). + + Avoid this by passing in the stem as an argument so that different + values can be provided. + + Add tests to verify this. + + * src/commands.c (set_file_variables): Take second parameter stem to + relieve the callers of set_file_variables() from setting/restoring + file->stem. + * src/commands.h (set_file_variables): Ditto. + (execute_file_commands): Pass file->stem to set_file_variables(). + * src/file.c (expand_deps): Pass d->stem to set_file_variables() and + remove set and restore of file->stem. + * src/implicit.c (pattern_search): Pass stem to set_file_variables() + and remove set and restore of file->stem. + * tests/scripts/features/se_explicit: Add new tests. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/se_statpat: Ditto. + * tests/scripts/variables/automatic: Ditto. + +2022-04-24 Dmitry Goncharov + + [SV 62278] Only expand the first pattern during secondary expansion + During normal pattern rule expansion only the first pattern (%) is + expanded; however during secondary expansion all patterns were + expanded. Modify secondary expansion to match the behavior of normal + expansion. + + Implementation tweaked by Paul Smith + + * src/file.c (expand_deps): Don't use subst_expand() which replaces + all % with $*: instead replace only the first one, by hand. + Fix a memory leak where the dep structure was not always freed. + * tests/scripts/features/statipattrules: Use .RECIPEPREFIX not TAB. + Add a series of tests verifying that static pattern rules with and + without secondary expansion both return the same results. + +2022-04-24 Paul Smith + + * src/commands.h: [SV 62213] Forward-declare struct file / child + + * tests/test_driver.pl (toplevel): [SV 62174] Enforce the C locale + +2022-04-24 Paul Smith + + [SV 62173] Fix archive tests for non-GNU systems + Original patch from Dmitry Goncharov + + Fix the ar flags to match the default values in make. If the + U option is supported, add it to the end not the beginning, + since ARFLAGS now starts with a "-". + + * tests/test_driver.pl: Add defaults for global variables. + (get_osname): Preserve $osname if it's set from $^O + * tests/scripts/features/archive: Set the default arflags. + If "U" is available add it to the end of the flags. + +2022-04-24 Dmitry Goncharov + + * tests/scripts/options/dash-l: [SV 62172] Skip if not available + + * src/read.c (check_specials): [SV 62171] Reset ARFLAGS under .POSIX + +2022-04-24 Dmitry Goncharov + + [SV 62145] Remove a stdin temp file on re-exec failure. + If the re-exec fails, be sure to remove a temp makefile that was + created to read from stdin. + + * src/job.c (exec_command): Return on failure. + (child_execute_job): Call exit if exec_command returns. + * src/job.h (exec_command): Don't mark as NORETURN. + * src/main.c (main): Unlink stdin temporary file if re-exec fails. + * tests/run_make_tests.pl: Get value for ERR_nonexe_file/ERR_exe_dir. + * tests/scripts/features/temp_stdin: Test that temp file unlink works. + +2022-04-18 Paul Smith + + * tests/scripts/features/errors: Fix Perl warnings + * tests/scripts/options/dash-f: Ditto. + +2022-02-27 Paul Smith + + [SV 62118] Correctly handle -f- options on re-exec + The -f, -file, and --makefile options were not properly handled when + re-exec'ing due to makefile updates. This problem, plus a patch and + tests, was reported by Dmitry Goncharov . + + While examining this I found another bug: after re-exec we forgot the + batch file was temporary and never deleted it. + + I decided to fix all these problems at once using a different fix + than Dmitry's: I created a new internal-only command-line option, + --temp-stdin. When reconstructing the make options for a re-exec, + replace the -f/--file/--makefile option that reads from stdin with + --temp-stdin= so that the re-exec'd version of make knows + it's a temporary batch file and will delete it. + + We no longer need to add the -o options because the re-exec'd make + knows this is a temporary makefile and treats it as such. + + To simplify, replace the --file and --makefile options taking a + filename, with just -f on re-exec. + + Some examples of the rewrite: + + User command line Re-exec command line + ----------------- -------------------- + -f- --temp-stdin= + --file - --temp-stdin= + -f - --makefile a.mk --temp-stdin= -fa.mk + --file=a.mk -fa.mk + -fa.mk -fa.mk + -Rf a.mk -Rf a.mk + -Rf- -R --temp-stdin= + + * src/main.c (stdin_offset): Remember the offset into the makefiles + list of the batch file read from stdin. Remove stdin_nm. + (struct command_switch): Create a new --temp-stdin option, which + also updates the makefiles list. + (main): Add the temporary filename to the string cache. + Move the tempfile handling after checking makefile arguments for "-" + so that files provided via --temp-stdin are also handled specially. + When rewriting re-exec options, we may need one more than we had + originally so create a new argv list. Walk through the original + list and convert it to the new list, following the above process. + (decode_switches): Set the stdin_offset flag if we see --temp-stdin. + * tests/scripts/options/dash-f: Add many more tests, provided by + Dmitry Goncharov . + +2022-02-27 Paul Smith + + * tests/scripts/variables/MAKE_RESTARTS: Remove TAB chars + + * README.git: Fix compiler options for ASAN + +2022-02-27 Paul Smith + + Remove extraneous characters from fatal() calls + The fatal() method adds ". Stop.\n" to every message. + + * src/amiga.c (MyExecute): Remove newline from fatal() message. + * src/job.c (): Ditto. + * src/file.c (snap_deps): Remove "." from fatal() message. + * src/main.c (main): Ditto. + * src/load.c: Ditto. + * tests/scripts/targets/NOTINTERMEDIATE: Fix expected output. + +2022-02-27 Paul Smith + + * src/main.c: Ensure the stdin temp file is deleted when dying. + +2022-02-27 Dmitry Goncharov + + [SV 62088] Avoid re-exec due to stdin. + The fix for SV 60595 causes make to re-execute when the makefile is + read from stdin. E.g. + $ printf 'all:; $(info hello)' | make -sf - + + Reported by Sergei Trofimovich + Test added by Paul Smith + + * src/main.c (main): Set the mtime of the stdin temporary file. + * tests/scripts/features/reinvoke: Add a test. + +2022-02-27 Paul Smith + + tests: Allow run_make_test() to avoid passing -f + We already use undef makefile strings to mean "re-use the previous + makefile", so if the string is empty we'll assume it means "don't + use a makefile at all" (don't add -f). + + * tests/run_make_tests.pl (run_make_test): If the makefile string + is empty, don't create a makefile or add -f. + * tests/scripts/features/include: Change empty makefile to "\n". + * tests/scripts/misc/close_stdout: Ditto. + * tests/scripts/options/dash-r: Ditto. + +2022-02-27 Paul Smith + + tests: Preserve Windows temp environment variables + * src/main.c (main): Show the temp filename on error. Also on + Windows prefer TMP, then TEMP, and only lastly TMPDIR. + * tests/test_driver.pl: Add TMP, TEMP, and USERPROFILE to the list + of environment variables to preserve. + +2022-02-26 Paul Smith + + * tests/test_driver.pl: Support STDIN redirection. + Before running tests, duplicate STDIN then reset it after the test + completes. Also when -keep is provided, preserve the base and run + files. + +2022-02-21 Paul Smith + + Ensure buffers are large enough for integer values + Issue raised by Sergei Trofimovich + + * src/makeint.h (INTSTR_LENGTH): Update for unsigned values. + * src/function.c (func_lastword): Use INTSTR_LENGTH as buffer size. + (shell_function_completed): Ditto. + (func_call): Ditto. + * src/remote-cstms.c (start_remote_job): Ditto. + +2022-02-10 Paul Smith + + * : Update copyright notices. + +2022-02-06 Paul Smith + + * doc/make.1: Use "target" from the SYNOPSIS. + Reported by Helge Kreutzmann + +2022-02-06 Paul Smith + + Don't write $(shell ...) stdout to stderr on failure + If a $(shell ...) invocation failed due to a command-not-found error, + make wrote the stdout of that shell to our stderr for some reason. + That seems very wrong. + + If the command's stderr was not redirected then its output would have + already been written to its stderr, and if it was redirected then we + shouldn't take it upon ourselves to force it to go to stderr! + + * src/function.c (func_shell_base): Append shell stdout even if the + shell command failed. + * tests/run_make_tests.pl: Determine the error generated for + command-not-found situations. + * tests/scripts/functions/shell: Verify that redirecting stderr to + stdout will behave properly if the command is not found. + +2022-02-06 Paul Smith + + * Basic.mk.template: Allow arguments to the check target. + +2022-02-06 Dmitry Goncharov + + [SV 61805] Support quoted whitespace in .SHELLFLAGS with .ONESHELL + * src/job.c (construct_command_argv_internal): Call recursively to + parse .SHELLFLAGS when .ONESHELL is active. + * tests/scripts/targets/ONESHELL: Add tests. + +2022-02-06 Paul Smith + + * tests/scripts/features/double_colon: Update for modern tests. + + * tests/scripts/features/implicit_search: Add -r for safety. + +2022-02-06 Dmitry Goncharov + + [SV 48643] Add more tests of intermediates and unrelated targets + If a prereq of a pattern is explicitly mentioned as a prereq of an + unrelated rule, it should not be considered an intermediate file. + + * tests/scripts/features/double_colon: Add tests mentioning unrelated + explicit targets. + * tests/scripts/features/grouped_targets: Ditto. + * tests/scripts/features/implicit_search: Ditto. + * tests/scripts/features/patternrules: Ditto. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/statipattrules: Ditto. + +2022-02-06 Dmitry Goncharov + + [SV 48643] Make prereqs mentioned in unrelated rules explicit + * src/implicit.c (pattern_search): Set is_explicit when a prereq + is mentioned in an unrelated rule. + + * src/implicit.c (pattern_search): [SV 61864] Fix debug output. + +2022-02-06 Paul Smith + + Avoid interleaved $(info ) output + Since $(info ) function output is written using two system calls for + the message and the newline, it's possible for output from another + parallel make job to sneak in between them. + + Reported by Paul Eggert , who saw the report from + Lars Ingebrigtsen . + + * src/function.c (func_error): Paul provided a fix but instead I + rewrote the entire function: it's not possible for it to be invoked + with anything other than exactly one argument so don't worry about + re-combining the arguments. + +2022-02-06 Paul Smith + + * tests/scripts/features/implicit_search: [SV 48643] Cleanups. + + * src/implicit.c (pattern_search): Use const ptrs when possible. + Change suggested by Joe Filion + + * src/job.c (load_too_high): Re-enable Linux /proc/loadavg checks. + Further experimentation shows that my previous thinking that there + was a problem using this was woefully mistaken. The value generated + by the kernel shows runn*ABLE* processes not runn*ING* processes. + * NEWS: Announce the change. + + * doc/make.texi (Using One Shell): Correct example to use $<. + +2022-01-17 Jouke Witteveen + + * src/function.c (parse_textint): Handle ints without 0 properly. + * tests/scripts/functions/intcmp: Add tests for values without 0. + +2022-01-17 Paul Smith + + [SV 61226] Revert changes to detect missing included files + The fix for SV 60595 introduced a backward-incompatibility: rules that + purported to rebuild included files, but didn't actually do so, were + treated as errors whereas before they were ignored. This breaks a + common idiom in makefiles where an empty recipe is created for an + included makefile so make doesn't complain if it doesn't exist. + + Unfortunately this means make cannot diagnose some types of errors. + + Extra tests supplied by Dmitry Goncharov . + + * doc/make.texi (Including Other Makefiles): Clarify this behavior. + * src/main.c (main): Don't run the new check-for-errors behavior. + * tests/scripts/features/reinvoke: Reset tests of the "old" behavior + and add new tests for this situation. + +2022-01-17 Paul Smith + + Ensure that loaded functions increment the command count + Since we don't know what a loaded function (via Guile or load) may + do, increment the command count just in case. + + * src/function.c (struct file_table_entry): New adds_command bool. + (FT_ENTRY): Initialize it to 0 for built-in functions. + (expand_builtin_function): If adds_command, increment the count. + (define_new_function): Set adds_command for loaded functions. + +2022-01-17 Paul Smith + + * src/read.c (tilde_expand): Put back '/' before returning. + Joe Filion noted that the string is modified, + and Henrik Carlqvist noticed that it wasn't put + back in all cases. + +2021-12-29 Paul Smith + + * tests/scripts/targets/INTERMEDIATE: Rewrite for new test method + +2021-12-29 Paul Smith + + Do not force targets to be SECONDARY + In SV 43677 we forced targets to be secondary if we found an + intermediate file that was listed as a prerequisite of another + target. This overrides .INTERMEDIATE settings, so doesn't work. + Now that we have an is_explicit flag in targets, use that instead. + + * src/implicit.c (pattern_search): Remove setting of secondary. + Preserve the value of the is_explicit flag when creating a new + file target, and consider it when setting the intermediate flag. + * tests/scripts/features/patternrules: Add a test w/out INTERMEDIATE + * tests/scripts/targets/INTERMEDIATE: Add a test with INTERMEDIATE + +2021-12-29 Dmitry Goncharov + + [SV 48643] Preserve target-specific variables on intermediate files + Target-specific variables used to define the target as "ought to + exist" so they could never be intermediate. Now they can be, so + merge the target-specific variables from the intermediate target + so they're not lost. + + * src/implicit.c (pattern_search): Use merge_variable_set_lists + to merge target-specific variables. + * tests/scripts/features/implicit_search: Add tests of target- + specific variable assignments and implicit rules. + +2021-12-29 Paul Smith + + * README.template: Clean up patch submission information + +2021-12-19 Jouke Witteveen + + * src/read.c (find_percent_cached): [SV 60798] Silence GCC11 warnings + + [SV 60798] Silence bogus GCC10 and GCC11 warnings + * src/main.c (main): Use a separate variable to track final character. + * src/read.c (eval): Track the semicolon position not one beyond it. + * src/variable.c (do_variable_definition): Include a default switch + case to ease the work of the exhaustiveness prover. + +2021-12-19 Paul Smith + + Update documentation with instructions for patch submission + * README.template: Add notes on how to submit patches. + * README.git: Point to the README. + * doc/make.texi: Ditto. + +2021-12-19 Paul Smith + + Change HTTP URLs to use HTTPS instead + Also remove unnecessary tests/COPYING file. + + * README.template: Change http: to https: + * README.git: Ditto + * doc/make.texi: Ditto + * doc/make.1: Ditto + * src/main.c: Ditto + * maintMakefile: Remove invalid URL + +2021-12-19 Paul Smith + + * src/makeint.h: Compute INTSTR_LENGTH based on size of intmax_t + Math suggested by Edward Welbourne + +2021-12-19 Paul Eggert + + Remove arbitrary limits on intcmp integers + We don't need to parse strings into C integer values to compare them. + + * src/function.c (parse_textint): Find boundaries of a numeric string. + (func_intcmp): Use parse_textint() to compare integers textually. + * tests/scripts/functions/intcmp: Test with extra-large numbers. + +2021-12-19 Paul Smith + + Use a well-known error string for out-of-bound function arguments + * src/function.c (parse_numeric): Check for empty value and error. + If we find ERANGE just print our own error, not strerror. + (func_word): Use a generic "not good" error message. + (func_wordlist): Ditto + (func_intcmp): Ditto + * tests/run_make_tests.pl: Remove code to find strerror(ERANGE) + * tests/scrips/functions/intcmp: Update the error message. + * tests/scrips/functions/word: Ditto. + + * doc/make.text (Wildcards): Document that glob results are sorted. + +2021-12-19 Paul Smith + + [SV 61621] Don't use POSIX_SPAWN_RESETIDS with posix_spawn() + When make is invoked in a environment where the user namespace is + restricted, such as under unshare(1) (on GNU/Linux), it won't be able + to find its real UID so the effective UID can't be set to it and + posix_spawn() will fail with EINVAL. + + It's not less safe to run recipe jobs using the same UID values that + make was invoked with, so don't worry about this flag. + + * src/job.c (child_execute_job): Don't set POSIX_SPAWN_RESETIDS flag. + +2021-12-05 Paul Smith + + * .gitignore: Ignore patch files. + +2021-11-28 U2FsdGVkX1 (tiny change) + + * src/commands.c (fatal_error_signal) [W32]: Use %lu for DWORD. + * src/function.c (windows32_openpipe) [W32]: Ditto. + +2021-11-28 Paul Smith + + * NEWS: Update with author details + + Special-case Windows error results + * tests/scripts/features/errors: Match Windows-specific errors. + * tests/scripts/features/targetvars: Match Windows-specific errors. + * tests/scripts/misc/general4: Match Windows-specific errors. + +2021-11-28 Paul Smith + + Convert word, wordlist, and intcmp functions to use long long + Modify make functions that parse integer values to use long long + values instead of long: on Windows long is the same as int (4 bytes) + and we don't want behavior to differ between different platforms. + + * bootstrap.conf: Change strtol module to strtoll module. + * src/function.c (parse_numeric): Use strtoll() and return long long. + (func_word): Use long long. + (func_wordlist): Use long long. Verify second argument is >= 0. + (func_intcmp): Use long long. + * src/config.ami.template: Don't define HAVE_STRTOLL. + * src/config-vms.template: Define HAVE_STRTOLL. + * src/config.W32.template: Define HAVE_STRTOLL. + * tests/run_make_tests.pl: Set $ERR_out_of_range to the proper string. + * tests/scripts/functions/word: Rework to use the new style and avoid + TAB characters. Verify trailing whitespace is ignored. Add a test + for a negative second argument to wordlist. Add tests for max signed + integer values. Use $ERR_out_of_range for the error string. + * tests/scripts/functions/intcmp: Add tests for min and max signed + integer values. Use $ERR_out_of_range for the error string. + +2021-11-28 Jouke Witteveen + + Introduce $(intcmp ...) for numerical comparison + Numbers can come from $(words ...), automatic variables such as + $(MAKELEVEL), from environment variables, or from shell output such as + through $(shell expr ...). The $(intcmp ...) function allows + conditional evaluation controlled by numerical variables. + + * NEWS: Announce this feature. + * doc/make.texi (Functions for Conditionals): Document 'intcmp'. + * src/function.c (func_intcmp): Create the 'intcmp' built-in function. + * tests/scripts/functions/intcmp: Test the 'intcmp' built-in function. + +2021-11-28 Jouke Witteveen + + Use strtol() instead of atoi() + strtol() is part of C89 and a fallback is provided by gnulib. + + * src/function.c (func_word, func_wordlist): Change atoi to strtol. + * test/scripts/functions/word: Add out-of-range verification testing. + +2021-11-27 Jouke Witteveen + + * src/makeint.h: Removed unused atol declaration + +2021-11-27 Paul Smith + + * src/implicit.c (pattern_search): Fix text for easier translation. + + [SV 48643] Update the implicit rule search docs + * NEWS: Announce the change. + * doc/make.texi (Implicit Rule Search): Update the definition of + "ought to exist" and add the extra step for compatibility mode. + +2021-11-27 Dmitry Goncharov + + [SV 48643] Enhance "ought to exist" definition + The traditional definition of "ought to exist" in the user's manual can + lead to make choosing a poor series of chained implicit rules. Modify + that rule so that we first attempt to resolve implicit rules by + considering targets which are only (a) targets or (b) explicit + prerequisites of the current target. + + For backward-compatibility, if we don't find a solution using that + algorithm use the previous definition where "ought to exist" means + "mentioned as a prerequisite of any target". + + * src/implicit.c (pattern_search): An extra argument controls whether + to perform the backward-compatible rule search or not. If a prereq is + a target, or if it's a prerequisite of THIS target, then choose it. + If we get to the end and haven't found a match, but we have found a + potential compatibility rule, then retry with compat rules enabled. + If we're searching with compat rules enabled and we find a file + mentioned as a prerequisite of ANY target, then use it. + * tests/features/implicit_search: Provide a large suite of tests for + different steps of implicit rule search. + +2021-11-27 Paul Smith + + tests: Enhance output to contain filename/line number info + * tests/scripts/options/dash-I: Use string comparison operator. + * tests/test_driver.pl (cmd2str): New method to convert a + command line to a string with proper quoting. + * tests/run_make_tests.pl (create_command): Call cmd2str() to format + the command. Add the filename/line number to the output. + +2021-10-18 Dmitry Goncharov + + [SV 61042] Enhance logging of implicit rule search + Logging of implicit rule search gives limited information as to why a + given implicit rule was rejected, and if no implicit rule is found we + get the confusing "No rule to make target" result when the real issue + is that some prerequisite of some implicit rule could not be built. + + Enhance logging around implicit rule search as follows: + 1. The messages which refer to a rule print a description (the targets + and prerequisites) of the rule. + 2. A new message tells when a rule is rejected, along with the reason. + 3. The 'Looking for an implicit rule...' message is printed for every + prerequisite, not just the top-level target. + 4. "Trying harder" message is printed, when intermediate prerequisites + are going to be searched. + 5. The 'No rule found...' and 'Found implicit rule...' messages are + printed for every prerequisite, not just the top-level target. + 6. "Ought to exist...", "Found..." or "Not found..." message is + printed for each prerequisite. + + * src/rule.h (struct rule): Remember the definition of the rule. + * src/rule.c (get_rule_defn): Compute the definition of a rule. + (install_pattern_rule): Initialize the definition to empty. + (create_pattern_rule): Ditto. + (freerule): Free the definition. + (print_rule): Use the definition when printing rules. + * src/remake.c (update_file_1): Push debug output down into + try_implicit_rule(). + * src/implicit.c (try_implicit_rule): Add debugging + (pattern_search): Show the rule definition in various debug output. + Add new debug messages for implicit rule search. + + Additional changes by Paul Smith : + + Since we usually don't need the rule definition, defer computing it + until we do. + + * bootstrap.conf: Include the mempcpy Gnulib module. + * src/makeint.h (mempcpy): Declare mempcpy if not available. + * src/misc.c (mempcpy): Define mempcpy if not available. + * src/config.h-vms.template: Don't set HAVE_MEMPCPY. + * src/config.h.W32.template: Ditto. + * src/rule.h (get_rule_defn): Return the definition of a rule. + * src/rule.c (get_rule_defn): If we don't have a definition compute + it; either way return it. + * src/implicit.c (pattern_search): Rework the handling of explicit + prerequisites to pattern rules to be more clear. There is no change + in behavior. + +2021-10-17 Dmitry Goncharov + + * doc/make.texi (Special Targets): [SV 61122] Add .SECONDARY example + +2021-10-17 Paul Smith + + * README.git: Update C version prerequisite + +2021-09-20 Paul Smith + + Add support for the POSIX :::= assignment operator. + POSIX Issue 8 will require a new assignment operator, :::=. + This operator behaves similarly to the BSD make := operator: the + right-hand side is expanded immediately, but then the value is + re-escaped (all '$' are converted to '$$') and the resulting variable + is considered a recursive variable: the value is re-expanded on use. + + * src/variable.h (enum variable_flavor): Add f_expand flavor. + * src/variable.c (do_variable_definition): When defining f_expand, + post-process the result to re-escape '$' characters. + Remove default: to the compiler warns about un-handled enum values. + Set recursive values for both f_recursive and f_expand. + (parse_variable_definition): Rewrite this method. + The previous version was annoying to extend to ':::='. + (print_variable): Remove default: so the compiler warns us about + un-handled enum values. + * src/function.c (func_origin): Remove default: so the compiler warns + us about un-handled enum values. + * doc/make.texi: Add documentation for :::=. + * tests/scripts/variables/define: Add a test for define :::=. + * tests/scripts/variables/flavors: Add tests for :::=. + * tests/scripts/variables/negative: Add tests for :::=. + +2021-09-07 Paul Smith + + Clean up more Windows warnings. + * src/config.h.W32.template: Re-enable warnings that we don't violate. + Add a new disabled warning: 4130 (logical operation on address of + string constant). + * src/w32/compat/posixfcn.c: Make makeint.h the first included header. + * src/w32/subproc/sub_proc.c: Ditto. It includes config.h already. + +2021-09-07 Dmitry Goncharov + + [SV 60435] Ensure intermediate grouped files are removed + If multiple intermediate files are built together be sure all of them + are removed after make is finished. Continue to ensure that targets + that exist before make starts are not removed even if they appear to be + intermediate. + + Add a number of tests to pattern rules to verify this behavior. + + * src/filedef.h (struct file): Add a new is_explicit bitfield. + * src/file.c (rehash_file): Merge the is_explicit bit. + (enter_prereqs): Set is_explicit if the file is explicitly mentioned. + * src/implicit.c (pattern_search): Set intermediate on the file if it's + not explicit. + (record_files): Set is_explicit if a file is mentioned as a target. + * src/remake.c (update_file_1): Set secondary on files that already + exist so they won't be removed. + * tests/scripts/features/double_colon: Add a test for double-colon + pattern rules. + * tests/scripts/features/patternrules: Update KGO for tests where more + files are removed. + Add new tests to verify handling removal of intermediate files in the + context of grouped pattern targets. + +2021-09-06 Paul Smith + + * src/default.c (default_variables): Use CPP in PREPROCESS.S. + +2021-09-06 Dmitry Goncharov + + * src/main.c (decode_debug_flags): [SV 607777] Preserve -d options + * tests/scripts/options/dash-d: Test that -d --trace keeps -d. + +2021-09-06 Dmitry Goncharov + + [SV 57778] Don't ignore included makefiles that can't be read + If we find an included makefile but it's not readable, stop + immediately with an error rather than continuing to look in other + directories. + + * src/read.c (eval_makefile): Only keep searching if the fopen error + is ENOENT, else stop and fail. + * tests/scripts/features/include: Add tests to verify this behavior. + +2021-09-06 Paul Smith + + [SV 60795] Don't remake phony included makefiles and show errors + Change the handling of included makefiles which are phony targets to + be similar to double-colon rules with no prerequisites: simply don't + build them at all during the remake a makefile phase. + + Ensure that any included makefile which is needed but not built + results in an error. + + Update the documentation to make this clear. + Add tests to verify this behavior. + + * doc/make.texi (Remaking Makefiles): Clarify double-colon exception. + Document that phony targets are handled the same way. + (Phony Targets): Ditto. + * src/main.c (main): Check for phony targets when skipping goals. + Rather than throwing out skipped but failed goals keep them + separately then report them as errors. + * src/read.c (eval): Set the file location on included makefiles even + when there's no error. + * tests/scripts/features/include: Add tests for handling included + makefiles with both phony and double-colon rules to rebuild them. + +2021-09-06 Paul Smith + + * doc/make.texi (Environment): [SV 60841] Clarify variable exporting. + + * doc/make.texi (Chained Rules): [SV 60904] Clarify intermediate files. + +2021-09-06 Paul Smith + + Remove UBSAN issues discovered via fuzzing tests. + The arithmetic conversions in C say that if a binary operator has an + unsigned and signed type as operands and the unsigned type has a greater + rank then the signed value is converted to unsigned. This is bad if the + signed value is negative. + + There are a few places in the code which have this situation; convert + the signed value to positive and add instead of subtracting. + + Reported by He Jingxuan + + * src/read.c (find_map_unquote): Use a positive int in memmove(). + (find_char_unquote): Ditto. + (find_percent_cached): Ditto. + +2021-09-05 Paul Smith + + * doc/make.texi (Prerequisite Types): [SV 61069] Mention PHONY prereqs + + * doc/make.1: Clean up man page text. + + * README.git: Add a section on ways to test. + + * src/main.c (decode_switches): Fix memory leak. + + Clean up a few Windows build warnings (not all!) + * build_w32.bat: Quote uses of %VSWHERE% so it can contain spaces + * src/hash.c (hash_init): Avoid use of an undefined struct. + (hash_rehash): Ditto. + * src/vpath.c (construct_vpath_list): Cast explicitly to void*. + +2021-09-05 Paul Smith + + [SV 45211] Parse MAKEFLAGS immediately when it's reset + When MAKEFLAGS is set in a makefile, reparse it immediately rather + than waiting until after all makefiles have been read and parsed. + This change doesn't actually fix the SV bug referenced because, even + though we do reparse MAKEFLAGS, we don't handle the -r or -R options + immediately. Doing this will require more effort. + + * NEWS: Announce the change. + * src/makeint.h: Publish reset_switches() and decode_env_switches() + from main.c + * src/main.c (main): Don't call construct_include_path(); it will be + invoked decode_switches(). + Preserve the old values of builtin_rules, builtin_variables, and + job_slots before we read makefiles since they can be changed now. + (reset_switches): Publish (remove static). Set the initial value of + the stringlist list to NULL. + (decode_switches): Call construct_include_path() after decoding. + (decode_env_switches): Publish (remove static). + (define_makeflags): Set the MAKEFLAGS variable for special handling. + * src/read.c (eval_makefile): Check for empty include_directories. + (construct_include_path): Clear any old value of .INCLUDE_DIRS before + appending new values. Free the previous include_directories. + * src/variable.c (lookup_special_var): When MAKEFLAGS is set, first + reset the switches then re-parse the variable. + * tests/run_make_tests.pl: Memo-ize some default variable values. + * tests/scripts/options/dash-r: Create tests for setting -r and -R. + * tests/scripts/variables/MAKEFLAGS: Test that resetting -I from + within the makefile takes effect immediately. + +2021-09-05 Paul Smith + + * make-gdb.py: Add pretty-printers and clean up. + Create a pretty-printer for next-pointer lists. + Create a pretty-printer for stringlists. + Change showargv from a function to a command (easier to use). + + Clean up some Python PEP violations. Add support for testing null + pointers and caching gdb.Types. + +2021-09-03 Paul Smith + + [SV 60595] Restart whenever any makefile is rebuilt + Previously if an included makefile was rebuilt as a prerequisite of + another included makefile which didn't need to be rebuilt, make would + not realize that it needed to re-exec itself. + + Ensure that if any included makefile target is rebuilt we re-exec. + Also ensure that if an included makefile is not readable, and our rule + for rebuilding it doesn't actually change it, we will still fail. + + * src/remake.c (update_goal_chain): If a goal's update was successful + then check its status, even if no actual commands were run because it + was already up to date. + (show_goal_error): Remove superfluous cast. + * src/main.c (main): If the makefile remake did nothing, check that we + were able to successfully include all the makefiles we care about; if + not fail. When generating error messages about included makefiles be + sure to show the filename/linenumber information. + * test/scripts/features/reinvoke: Add tests for this behavior. + * test/scripts/options/dash-k: Update error messages. + +2021-09-03 Paul Smith + + [SV 60412] Allow -I- to throw out the current directory path + Accept a "-" directory value to the -I option to clear the set of + directories to be searched up to that point, including the default + directories. + + * NEWS: Announce the change. + * doc/make.texi (Summary of Options): Add documentation. + * src/read.c (construct_include_path): Check for '-' and if found, + clear the list of directories to be searched. + * tests/scripts/options/dash-I: Add tests for -I-. + * tests/scripts/variables/INCLUDE_DIRS: Add tests for -I-. + +2021-07-25 Dmitry Goncharov + + [SV 60699] Avoid calling strlen() repeatedly in a loop + * src/variable.c (lookup_pattern_var): Accept target length parameter. + (initialize_file_variables): Pass computed target length to lookup. + +2021-07-25 Paul Smith + + * NEWS: Add a few missing attributions + * AUTHORS: Add some missing attributions + +2021-07-25 Dmitry Goncharov + + [SV 60297] Add .NOTINTERMEDIATE special target + Support a new special target, .NOTINTERMEDIATE. Any file or pattern + prerequisite of this target will never be considered intermediate. + This differs from .SECONDARY in that .SECONDARY files won't be deleted + but they will still not be built if they are missing. + + .NOTINTERMEDIATE files are treated the same way as a target which is + explicitly mentioned in the makefile. This is mostly useful with + patterns; obviously mentioning a target explicitly here is enough in + and of itself to make something not intermediate. + + Some adjustments made by psmith@gnu.org + + * NEWS: Announce the new feature. + * doc/make.texi (Special Targets): Document .NOTINTERMEDIATE. + (Chained Rules): Describe how to use .NOTINTERMEDIATE. + * src/main.c (main): Add "notintermediate" to the .FEATURES variable. + * src/filedef.h (struct file): Add "notintermediate" flag. + * src/file.c (no_intermediates): Mark global .NOTINTERMEDIATE. + (snap_file): Support .NOTINTERMEDIATE special target. Throw an error + if the same target is marked both .NOTINTERMEDIATE and .SECONDARY or + .INTERMEDIATE. + (rehash_file): Merge intermediate, notintermediate, secondary flags. + (remove_intermediates): Check notintermediate flag before removing. + (print_file): + * src/implicit.c (pattern_search): Set notintermediate based on the + pattern. + * tests/scripts/targets/NOTINTERMEDIATE: Add a new test suite. + +2021-05-30 Paul Smith + + * make.texi (Reading Makefiles): != creates recursive variables. + Reported by Ronald Hoogenboom . + +2021-05-30 Dmitry Goncharov + + [SV 60659] Set $$< properly in second expansion + Set the $$< automatic variable as best we can during secondary + expansion of prerequisites. + + * src/commands.c (set_file_variables): Don't break without setting + 'less' if secondary expansion is enabled. + * tests/scripts/features/se_explicit: Test secondary expansion results. + * tests/scripts/features/se_implicit: Test secondary expansion results. + +2021-05-30 Paul Smith + + [SV 58341] Add non-trivial options to $(MAKEFLAGS) + Previously only trivial (single-letter) options were available in + $(MAKEFLAGS) when it is examined from inside a makefile (the full + value was set before expanding recipes). + + Ensure that all options (but, not command line variable overrides!) + are visible in the $(MAKEFLAGS) variable. In order to do this + reset the default values of options, particularly options which are + lists, before re-reading MAKEFLAGS after makefiles have been read. + Otherwise we'll get duplicate values for options such as -I. + + Unfortunately there are complications here as well: sometimes (for + jobserver options in particular) we modify the values of these + options while running: we must not reset these modifications. + + * NEWS: Announce this change + * src/main.c (main): Call new reset_switches() before re-parsing + MAKEFLAGS. + (reset_switches): Reset the value of non-special options to their + defaults. + (define_makeflags): Add non-special options into MAKEFLAGS even + if 'all' is not set. + +2021-05-30 Dmitry Goncharov + + [SV 60378] Don't add duplicate default search directories + Depending on how make was configured it may add duplicate + directories in the default include search path: avoid this. + + (Tweaked by psmith@gnu.org) + + * configure.ac: Set AM variable KNOWN_PREFIX if --prefix is known + * Makefile.am: Only set INCLUDEDIR if prefix is not known + * read.c [default_include_directories]: Only add INCLUDEDIR if set + +2021-05-30 Dmitry Goncharov + + * tests/scripts/targets/INTERMEDIATE: [SV 60188] Add one more test + +2021-05-29 Eli Zaretskii + + [SV 58656] Fix mtime for large files on MS-Windows + In MSVC builds, 'stat' fails when called on files larger than + 2GB. Call '_stat64' instead to work around this. + + * src/remake.c (STAT): Define to '_stat64' for MSVC builds. + (name_mtime) [WINDOWS32]: Use STAT instead of 'stat'. + Suggested by Makoto Kato . + +2021-03-28 Paul Smith + + Fix build and test issues on Windows + * src/dep.h (DEP): Remove extraneous semicolon. + * src/dir.c (find_directory) [W32]: Replace removed variable. + * tests/scripts/features/include: Allow the extra default makefile + searched for on Windows. + * tests/scripts/functions/file: Use $(info ...) to avoid "command + too long" errors on Windows. + +2021-03-28 Tobias Stoeckmann (tiny change) + + * src/remake.c (name_mtime): Reserve space for nul in readlink result + +2021-03-25 Cao jin (tiny change) + + * doc/make.texi (Call Function): Apply consistent formatting + +2021-03-25 Pete Dietl (tiny change) + + * src/job.c (child_execute_job): Update gnulib find_in_given_path() + +2021-03-25 Mike Frysinger (tiny change) + + * doc/make.texi (Automatic Variables): Relocate the $? example + +2021-03-15 Paul Smith + + [SV 58497] Ensure $(file <) newline removal succeeds + Keep a count of bytes read rather than comparing pointers since the + variable_buffer might get reallocated. + + Bug and patch by Ken Tossell + Regression tests by Dmitry Goncharov + Tweaked by Paul Smith + + * src/function.c (func_file): Use bytes read rather than a pointer. + * tests/scripts/functions/file: Provide various tests for reading + empty files, files with/without newlines, and large files. + +2021-03-15 Dmitry Goncharov + + [SV 60188] Explicit prereqs cannot be intermediate files + If a prereq of a pattern is an explicit target, it should not be + considered an intermediate file. + + (Minor tweaks by Paul Smith ) + + * src/dep.h (struct nameseq): Add is_explicit flag. + * src/implicit.c (struct patdeps): Ditto. + (pattern_search): Set the is_explicit flag appropriately for each + prerequisite, based on whether it contained a pattern or not. + Update the help output to note implicit vs. explicit prereqs. + * tests/scripts/features/double_colon: Add tests. + * tests/scripts/features/grouped_targets: Ditto. + * tests/scripts/features/patternrules: Ditto. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/statipattrules: Ditto. + +2021-03-15 Paul Smith + + * tests/scripts/features/exec: Small cleanup + +2021-03-15 Paul Smith + + Ensure variable_buffer is always set. + Initialize the global variable_buffer in main() so that it is never + a null pointer. Then invoking variable_expand("") is never needed: + simply use the variable_buffer pointer when we want to restart the + variable buffer. The main point of this simplification is not to + keep a separate pointer to the beginning of the buffer: this is + dangerous because the buffer may be re-allocated. Instead always + use the variable_buffer pointer itself. + + * src/variable.h (initialize_variable_output): Publish. + * src/expand.c (initialize_variable_output): Remove static. + * src/main.c (main): Initialize variable_buffer. + * src/file.c (enter_prereqs): Don't call variable_expand("") and + don't save a separate buffer pointer than might be outdated. + (expand_deps): Ditto. + * src/read.c (record_files): Ditto. + * src/remake.c (library_search): Ditto. + +2021-03-15 Paul Smith + + [SV 59881] Handle vertical TAB consistently + While parsing makefiles get_next_mword() was treating VTAB as a word + character rather than a word separator. However, when using + find_next_token(), for example in patsubst_expand_pat(), we treated + VTAB as a word separator causing multiple words to appear where we + didn't expect them. + + * src/makeint.h (END_OF_TOKEN): Change from a loop to a boolean check. + * src/misc.c (end_of_token): Move the loop here. + * src/read.c (get_next_mword): Skip whitespace, not just blank, to + find the start of the word and use END_OF_TOKEN() to decide when the + current word is finished. + +2021-03-14 Paul Smith + + [SV 59870] define/undefine prerequisites are not target-specific vars + * src/read.c (parse_var_assignment): If called in a target-specific + variable context don't allow define/undefine as variable assignments. + * test/scripts/variables/define: Add a test. + * test/scripts/variables/undefine: Add a test. + + * maintMakefile: Don't make .check-git-HEAD .PHONY + +2021-03-07 Jouke Witteveen + + More correctly describe the scope of variables + * NEWS: Use "local" instead of the incorrect "lexically-scoped". + * doc/make.texi: Refer to let/foreach variables as local variables. + +2021-03-07 Paul Smith + + * doc/make.text: Clarify that patsubst doesn't touch unmatched words + + * .dir-locals.el: Update for newer LSP config + + * file.c (remove_intermediates): Restart "rm ..." on error + +2020-12-07 Paul Smith + + * doc/make.texi (How Patterns Match): [SV 58639] Fix chaining info. + +2020-12-06 Jouke Witteveen + + Create $(let ...) providing lexically scoped variables + Add a new function $(let ...) which allows lexically scoped variables. + + * NEWS: Add information on this feature. + * doc/make.texi (Let Function): Document the 'let' function. + * src/function.c (func_let): Create the 'let' built-in function. + * tests/scripts/functions/let: Test the 'let' built-in function. + +2020-12-06 Paul Smith + + * doc/make.texi (Phony Targets): [SV 58961] Clarify pattern handling + + * doc/make.texi (Synchronized Terminal Output): [SV 58960] Fix link + +2020-12-05 Paul Smith + + [SV 59169] Add --debug=why and --debug=print options + Add debug options to print recipes even if they would otherwise be + silent, and to print the reason that a target was considered out of + date. + + Modify --trace to simply be a shorthand for --debug=print,why. + + * NEWS: Announce changes. + * doc/make.texi (Summary of Options): Document the new options. + * doc/make.1: Ditto. + * src/debug.h: Add new flags DB_PRINT and DB_WHY. + * src/makeint.h: Remove the trace_flag variable. + * src/job.c (start_job_command): Check debug flags not trace_flag. + (new_job): Ditto. + * src/main.c (trace_flag): Make a static variable for switches. + (decode_debug_flags): Set DB_PRINT and DB_WHY if trace_flag is set. + * tests/scripts/variables/GNUMAKEFLAGS: Update known-good messages. + * tests/scripts/variables/MAKEFLAGS: Ditto. + +2020-12-05 Paul Smith + + * configure.ac: [SV 58836] Copy build.sh to the build directory + +2020-12-05 Paul Smith + + [SV 57676] Support included files being built after failing + If a -include file does not exist, then some subsequent operation + creates it, then allow it to be successfully included. + + * src/read.c (eval_makefile): If our last mtime was NONEXISTENT then + reset it to 0 so we'll check it again. + * tests/scripts/features/include: Add a test for this behavior. + +2020-12-02 Paul Smith + + * src/makeint.h (free_alloca): Check for builtin alloca + + * src/main.c (main): [SV 59601] Check for malformed env. variables + +2020-11-29 Paul Smith + + * maintMakefile: [SV 58794] Check for file existence in the release + + * Makefile.am (HAVE_GUILE): Only use Guile options if HAVE_GUILE. + + * tests/scripts/features/vpathgpath: Avoid duplicate function name. + + Resolve unused-result warnings for alloca(0) + * src/makeint.h (free_alloca): New macro to defeat warn_unused_result. + * src/read.c (eval_makefile): Call it. + (eval_buffer): Ditto. + * src/remake.c (update_file): Ditto. + +2020-11-29 Paul Smith + + Avoid some valgrind warnings + Using sscanf() to parse archive header values (struct ar_hdr) can lead + to valgrind warnings which are probably bogus but are annoying. + To be safer, create a local method to convert the ASCII integer + strings into integers. + + * src/arscan.c (parse_int): Turn integer strings into integers. + (ar_scan): Initialize struct ar_hdr memory. + Call parse_int() rather than sscanf/atol. + +2020-11-29 Paul Smith + + [SV 41273] Allow the directory cache to be invalidated + Each time we invoke a command it's possible that it will change the + filesystem in ways that were not described by the target. If that + happens but we have cached previous directory contents then we may + make decisions or report results based on obsolete information. + + Keep a count of how many commands we've invoked, and remember the + current command count every time we load the contents of a directory. + If we request the directory and the current command count has changed + we know the cache is outdated so reload from scratch. + + * NEWS: Announce the change. + * src/makeint.h (command_count): Create a global counter. + * src/main.c (command_count): Ditto. + * src/job.c (reap_children): Increment the counter on job completion. + * src/function.c (func_file): Increment if we write a file. + * src/dir.c (clear_directory_contents): Clear the current contents of + a cached directory. + (struct directory_contents): Remember the counter value. + (struct directory): Remember the counter value for non-existing dirs. + (find_directory): If we have a cached directory and the count hasn't + changed then return it. Else, clear the previous contents and re-read + from scratch. + * tests/scripts/features/dircache: Add tests of the directory cache. + +2020-11-29 Paul Smith + + Support "unexport" in target-specific variables. + Rewrite the environment variable algorithm to correctly inherit + export settings from parent variable sets. The new algorithm + for computing the table of environment variables is: + + - Start with the most local variable set and proceed to global. + - If the variable already exists in the table and we don't know + its export status, update it with the current variable's status. + - If the variable is not in the table and it's not global, add it + regardless of its status so if it's unexported we remember that. + - If the variable is not in the table and is global, check its + export status and don't add it if we won't export it. + + Then when generating the environment variables, check the export + status of each variable in case it was a target-specific variable + and we have determined it should not be exported. + + Rework SHELL handling to check at the end whether we added it or + not and if we didn't, add the value from the environment. + + * NEWS: Announce support for target-specific "unexport"." + * doc/make.texi (Target-specific): Document the support. + * src/variable.h (enum variable_export): Make into a global type. + * src/read.c (struct vmodifiers): Use enum variable_export rather + than individual booleans. + (parse_var_assignment): Parse the "unexport" keyword. + (eval): Remember the vmodifier value in the variable. + (record_target_var): Ditto. + * src/variable.c (should_export): Check if the variable should be + exported. + (target_environment): Implement the above algorithm. + * tests/scripts/features/export: Test export/unexport with variable + assignments on the same line. + * tests/scripts/features/targetvars: Add a comprehensive suite of + tests for different types of target-specific export / unexport. + * tests/scripts/variables/SHELL: Update the comment. + +2020-11-29 Dmitry Goncharov + + [SV 59230] Preserve export settings for target-specific vars + * src/read.c (record_target_var): Don't overwrite pre-existing export + flag unless we're changing it. + * tests/scripts/features/targetvars: Add a test. + +2020-11-29 Paul Smith + + [SV 59230] Ensure environment variables are exportable + When checking for invalid environment variable names we searched the + entire name string instead of just the first LENGTH chars; this could + cause us to incorrectly decide the variable was not exportable. + + Dmitry Goncharov found this bug and + provided a test case and sample fix: I used the test but chose a + slightly different fix. + + * src/variable.c (define_variable_in_set): check the variable name + not the input string. + * tests/scripts/features/targetvars: Ensure environment variable + values are exported. + +2020-11-29 Paul Smith + + * src/default.c (default_variables) [AIX]: [SV 59096] Fix ARFLAGS + Reported by Dmitry Goncharov , with a patch + changing the pattern rule for building archives. I decided to + change the default value of ARFLAGS on AIX instead. + +2020-11-29 Paul Smith + + [SV 35711] Check for special targets earlier + GNU make must recognize some special targets as they are defined. + Because of the way targets are defined, we were not recognizing these + special targets until we were handling the NEXT statement. However + that's too late for some special targets such as .POSIX etc. which can + change the behavior of make during parsing. + + Check for special targets earlier, as soon as we've finished parsing + the target introduction line (before we've even parsed the recipe). + + * NEWS: Mention the change. + * src/read.c (check_specials): New function to look for special + targets. Move checks from eval() and record_files() to this new + function. + (eval): Call check_specials() after we've completed parsing the target + introduction line. Move default goal detection to check_specials(). + (record_files): Move handling of .POSIX, .SECONDEXPANSION, and + .ONESHELL to check_specials(). + * tests/scripts/misc/bs-nl: Remove workaround for late .POSIX issue. + * tests/scripts/targets/POSIX: Add a comment. + +2020-11-29 Paul Smith + + * .ccls: Disable clang compare against static string warning + +2020-11-13 Paul Smith + + [SV 59093] Rewrite filter/filter-out to avoid large stack usage + * src/function.c (func_filter_filterout): Allocate arrays to hold + pattern and word information rather than creating linked lists on + the stack. + * tests/scripts/functions/filter-out: Test large filters. + +2020-10-28 Paul Smith + + * doc/make.texi (Include): Update behavior for missing included files + +2020-07-19 Paul Smith + + * NEWS: [SV 58435] Document minimum C compiler version requirement + * configure.ac: Require c99 via AC_PROG_CC_C99 + +2020-07-19 Paul Smith + + [SV 58735] Define the order that makefiles are rebuilt. + Ensure that makefiles are rebuilt in the order in which make first + considered them, and document this behavior in the manual. + + * NEWS: Add a note about the new behavior + * doc/make.text (How make Processes a Makefile): Document it. + * main.c (main): Inverse the list of makefile goals. + * read.c (read_all_makefiles): Add default makefiles to the list at + the front in reverse order, the same way other makefiles are added. + * tests/scripts/features/include: Add tests to verify rebuild order. + +2020-07-10 Paul Smith + + * src/makeint.h: [ARM] [SV 58347] Don't assume ARM is not POSIX + + * src/job.c (unblock_sigs): [!POSIX] [SV 58743] Fix syntax errors + +2020-05-14 Paul Smith + + * NEWS: Fix some tortured grammar. + +2020-05-03 Paul Smith + + [SV 57930] Cast char to unsigned char to call ctype functions + This cast was already done almost everywhere: fix some stragglers. + + * src/load.c (load_file): Cast char to unsigned char. + * src/misc.c (strcasecmp, strncasecmp): [!POSIX] Ditto. + * src/dir.c (vms_hash): [VMS] Ditto. + * src/vms_progname.c (set_program_name): [VMS] Ditto. + * src/vms_jobs.c (posix_parse_dq): [VMS] Ditto. + (posix_parse_dollar): [VMS] Ditto. + (build_vms_cmd): [VMS] Ditto. + (child_execute_job): [VMS] Ditto. + +2020-05-03 Paul Smith + + Convert [ ... ] to test ... in scripting. + The "[" link may be missing during OS boostrapping. + + * build.sh: Convert "[ ... ]" to "test ..." + * maintMakefile: Ditto. + * scripts/copyright-update: Ditto + * tests/scripts/features/reinvoke: Ditto + * tests/scripts/features/targetvars: Ditto + +2020-05-03 Paul Smith + + * maintMakefile: Clean up output + + * mainMakefile: Check that INSTALL exists in the dist file + For some reason the INSTALL file symlinked to gnulib was omitted from + the 4.3 release package: I can't reproduce this but check for it. + +2020-05-02 Kevin Buettner (tiny change) + + [SV 58232] Disable inheritance of jobserver FDs for recursive make + A parent make will invoke a sub-make with close-on-exec disabled for + the jobserver pipe FDs. Force close-on-exec to be to be enabled in + the sub-make so the pipe is not always passed to child jobs. + + I have a test case which, when invoked with a suitable -j switch, + will hang if the recipe inherits the jobserver pipe. This test case + was inspired by a real world case in which testing GDB on Fedora + would hang due to some poorly written test GDB cases having been + passed the jobserver file descriptors. + + * src/posixos.c (jobserver_parse_auth): Call fd_noinherit() for + jobserver pipe descriptors. + +2020-04-01 Paul Smith + + [SV 57674] Use the system default PATH if $PATH is not set + When using execvp() if $PATH is not present in the environment + it will automatically search the system default PATH string. Emulate + this by passing the system default PATH to find_in_given_path() if + we don't find PATH in the environment. + + * src/job.c (child_execute_job): Use confstr(_CS_PATH) if PATH is not + found. + +2020-04-01 Paul Smith + + tests: Simplify customization of %ENV + Rather than having an %extraENV that is added to the default %ENV + and resetting %ENV _before_ each test, allow the test setup to + modify %ENV directly as needed then reset %ENV _after_ each test. + + * tests/test_driver.pl: Remove unused %extraENV. + (resetENV): Don't add in %extraENV. + (_run_command): Reset after we run the command rather than before. + * tests/scripts/features/export: Convert %extraENV to %ENV + * tests/scripts/features/jobserver: Ditto + * tests/scripts/features/parallelism: Ditto + * tests/scripts/features/targetvars: Ditto + * tests/scripts/functions/eval: Ditto + * tests/scripts/functions/foreach: Ditto + * tests/scripts/functions/origin: Ditto + * tests/scripts/misc/general4: Ditto + * tests/scripts/options/dash-e: Ditto + * tests/scripts/targets/POSIX: Ditto + * tests/scripts/variables/GNUMAKEFLAGS: Ditto + * tests/scripts/variables/SHELL: Ditto + +2020-03-31 Jens Rehsack (tiny change) + + * src/output.h: [WINDOWS32] [SV 57888] Use gnulib fcntl if available + If gnulib fcntl is available (for MinGW32) use it rather than our + homegrown version. + + * src/w32/compat/dirent.c: [SV 57888] Use gnulib opendir on MinGW32 + + * src/dir.c (local_stat): [WINDOWS32] Fix buffer-overflow warning. + [SV 57888] Provide space for the path to use MAXPATHLEN plus nul. + +2020-03-31 Paul Smith + + [SV 57896] Change directories before checking jobserver auth + We want to process -C options as early as possible, before we might + write informational messages, so that Entering/Leaving messages have + the correct directory. + + * src/main.c (main): Move code dealing with changing directories + before parsing of the jobserver auth flag. + * tests/scripts/features/jobserver: Test the order of enter/leave. + +2020-03-31 Paul Smith (tiny change) + + [SV 57967] Only set APPEND mode for regular files + APPEND is a permanent mode shared by all users of a file. If we + set it on a tty, pipe, etc. it will stay in effect even after make + exits, which can cause problems. + + Patch provided by 0xef967c36@gmail.com + + * src/output.c (set_append_mode): Check for a regular file. + +2020-03-31 Paul Smith + + Obey order of multiple print/no-print directory options + Previously if --no-print-directory was seen anywhere even once + (environment, command line, etc.) it would always take precedence + over any --print-directory option. Change this so that the last + seen option (which will be the command line, if present there) takes + precedence. + + * NEWS: Mark this change in behavior. + * src/makeint.h (print_directory): A new variable to control printing. + * src/output.c (output_dump): Use the new variable. + (output_start): Ditto. + * src/main.c: Add a new variable print_directory. Use -1 for + print_directory_flag so we know of the option was seen or not. Add a + new default_print_directory_flag set to -1 to keep options from being + added. + (switches): Use flag_off for --no-print-directory, rather than a + separate inhibit_print_directory_flag. + (main): If print_directory_flag was set by the user, use that for + print_directory. If not, compute the print_directory value based on + -s, -C, and sub-makes as before. + * tests/scripts/variables/GNUMAKEFLAGS: -w is not added automatically + * tests/scripts/options/print-directory: Add tests for overriding + print-directory options. + +2020-03-29 Paul Smith + + * NEWS: Update 4.3 with information on .SILENT / -s + +2020-02-29 Eli Zaretskii + + * NEWS: Mention the new tcc support. + +2020-02-29 Christian Jullien + + Add support for building with Tiny C for MS-Windows + * src/config.h.W32.template (HAVE_DIRECT_H, HAVE_STRCASECMP) + (HAVE_STRNCASECMP, HAVE_UMASK): Add __TINYC__ to MinGW condition. + (BATCH_MODE_ONLY_SHELL): Make this the default for Tiny C. + + * build_w32.bat: Support building with Tiny C's tcc compiler. + +2020-01-20 Paul Smith + + Apply spelling corrections from Fossies spellcheck + See https://fossies.org/features.html#codespell + Spelling issues in Git commit messages or lib/* source are not applied. + + * README.OS2.template: Apply spelling corrections. + * README.VMS: Ditto. + * src/commands.c: Ditto. + * src/config.ami.template: Ditto. + * src/configh.dos.template: Ditto. + * src/job.c: Ditto. + * src/job.h: Ditto. + * src/read.c: Ditto. + * src/variable.c: Ditto. + * src/vms_exit.c: Ditto. + * src/vms_export_symbol.c: Ditto. + * src/vms_progname.c: Ditto. + * src/vmsfunctions.c: Ditto. + * src/vmsjobs.c: Ditto. + * src/w32/pathstuff.c: Ditto. + * tests/scripts/variables/automatic: Ditto. + * tests/test_driver.pl: Ditto. + +2020-01-20 Paul Smith + + Update to GNU make 4.3.90 + * NEWS: Add a 4.3.90 section and update Savannah bug URL + * configure.ac (AC_INIT): Change release to 4.3.90 + +2020-01-19 Paul Smith + + GNU Make release 4.3 + * NEWS: Update for the release + * configure.ac: New release number + * doc/make.texi: New edition number + + * configure.ac (guile): Check for Guile 3.0 installations + + * src/job.c (sh_cmds): [SV 57625] Update builtin shell command list + + Resolve some documentation issues + * doc/make.texi (Interrupts): [SV 46193] Recommend defensive recipes + * doc/make.texi: [SV 49262] Clarify interaction of prerequisites and + non-terminal match-anything rules. + +2020-01-19 Paul Smith + + [SV 40657] Reinstate old behavior for suffix rules with prereqs + POSIX says that suffix rules cannot have prerequisites, but after + making this change we observed a number of makefiles "in the wild" + that were relying on this behavior and failed. + + For .POSIX: makefiles, obey POSIX. Otherwise preserve the old + behavior. However, generate a warning so users know this is a + problem. In a future version we will change all behavior to be + POSIX-conforming. + + * NEWS: describe the change + * src/rule.c (convert_to_pattern): If posix_pedantic don't make a + pattern rule if prereqs exist. Otherwise show a warning. + * tests/scripts/features/suffixrules: Add tests for the new behavior + including .POSIX vs. non-.POSIX. + +2020-01-05 Dmitry Goncharov + + * tests/test_driver.pl: Enhance error messages + +2020-01-04 Paul Smith + + * doc/make.texi: Change the GFDL to an Appendix + + * NEWS: Clarify authorship of new features. + + Enable compilation with C90 compilers + * configure.ac: Try compiling Guile headers: they don't work with C90. + * maintMakefile: Simplify config checks via target-specific variables. + * src/makeint.h: Use ATTRIBUTE rather than defining __attribute__, + as that causes compile issues with system headers. + (ENUM_BITFIELD): Don't use enum bitfields in ANSI mode. + * src/main.c: Use ATTRIBUTE instead of __attribute__. + * src/job.h: Ditto. + * src/file.c: Don't define variables inside for loops. + * src/rule.c: Ditto. + * src/dep.h (SI): Only use static inline in non-ANSI mode. + +2020-01-03 Paul Smith + + * bootstrap: Update to the latest gnulib version + + Release GNU make 4.2.93 + * NEWS: Update the release and date + * configure.ac: Update the release number + + Update copyright statements for 2020 + +2020-01-03 Paul Smith + + Support the .EXTRA_PREREQS special variable + Initial implementation by Christof Warlich + + * NEWS: Announce the new feature. + * doc/make.texi (Other Special Variables): Document .EXTRA_PREREQS. + * src/dep.h (struct dep): New flag to note extra prereq deps. + * src/filedef.h (expand_extra_prereqs): Declare a function to expand + the value of .EXTRA_PREREQS. + * src/file.c (expand_extra_prereqs): Given a struct variable lookup + of .EXTRA_PREREQS, convert it into a list of deps and for each one + make sure it has a struct file and has the new flag set. + (snap_file): A new function invoked by hash_map that will perform + per-file operations: set up second expansion, intermediate, and also + .EXTRA_PREREQS. Manage circular dependencies by ignoring them. + (snap_deps): Defer per-file operations until the end. Look up the + global .EXTRA_PREREQS and pass it along to snap_file for each file. + * src/implicit.c (struct patdeps): Remember the extra prereqs flag. + (pattern_search): Transfer extra prereqs flag settings into the + matched pattern rule. + * src/rule.h (snap_implicit_rules): Rename count_implicit_rules to + snap_implicit_rules since we now do more than count. + * src/rule.c (snap_implicit_rules): As we walk through all the pattern + rules, add in any global .EXTRA_PREREQS to the dep list. Ensure we + take them into account for the max number of prereqs and name length. + * src/main.c (main): Add extra-prereqs to .FEATURES. + Call the renamed snap_implicit_rules. + * tests/scripts/variables/EXTRA_PREREQS: Add tests. + +2020-01-03 Paul Smith + + * tests/scripts/features/patternrules: Use Windows-compatible quoting + + * tests/test_driver.pl: Compute full path to Perl interpreter + + * tests/scripts/features/exec: Don't use $ENV in the description + + * src/makeint.h: Add a declaration for memrchr() + +2019-12-27 Paul Smith + + * NEWS: Remove info about disabled /proc/loadavg usage. + +2019-12-27 Paul Smith + + [SV 57022] Avoid posix_spawn which fails asynchronously + Avoid using posix_spawn implementations that fail asynchronously when + the spawned program can't be invoked: this means instead of getting + an error such as "No such file or directory" we get just "Exit 127". + + Original implementation of the configure.ac macro provided by + Martin Dorey + + Original implementation of the regression tests provided by + Dmitry Goncharov + + * configure.ac: Test whether posix_spawn fails asynchronously. In a + cross-compilation environment, assume that it does not. If we detect + that it does, fall back to fork/exec. + * tests/scripts/features/exec: Add regression tests for different + shebang invocation methods. + +2019-12-26 Paul Smith + + [SV 56655] Allow pattern expansion to contain spaces + * src/dep.h: Add a new flag PARSEFS_ONEWORD + * src/read.c (parse_file_seq): If PARSEFS_ONEWORD is given, treat the + entire incoming string as a single pattern. + * src/implicit.c (pattern_search): Pass PARSEFS_ONEWORD when parsing + patterns for wildcards. + * tests/scripts/features/patternrules: Add a new test. + +2019-12-18 Ben Wijen + + * src/misc.c (spin): On WINDOWS32 use Sleep() instead of sleep() + + * bootstrap.bat: Fix typo in batch file name + +2019-12-18 Paul Smith + + * src/config.h.W32.template: [SV 57152] MinGW32 doesn't support d_type + +2019-12-18 Jouke Witteveen + + [SV 54161] Fix second expansion of $* for paths + If the stem matches a path containing a directory not just a + filename, make sure the second expansion of $* in the + prerequisites matches $* in the recipe. This requires using + $(*F) when replacing % in the first expansion to preserve the + simple filename. + + * src/implicit.c (pattern_search): If lastslash is set prepend + the directory onto the stem. Then use $(*F) when expanding %. + * tests/scripts/features/se_implicit: Add a test case + +2019-12-17 Jouke Witteveen + + * src/implicit.c (pattern_search): Set lastslash correctly + If filename contained multiple slashes lastslash is wrongly set to 0. + * configure.ac: Check for the GNU memrchr() extension function. + * src/misc.c (memrchr): Supply memrchr() if not available. + + * src/implicit.c (pattern-search): Remove unneeded 'dir' variable + +2019-12-17 Paul Smith + + * Makefile.am: Build lzip package instead of bzip2 + * README.git: Mention changed requirements. + + * src/job.c (load_too_high): Disable Linux /proc/loadavg for now + This new feature has a problem: if you provide a load which is + larger than the number of cores then it will always run every job. + Before we can enable it we need to at the least learn how to clamp + this value to the number of cores. To experiment with it, set + PROC_FD_INIT to -2 in job.c to re-enable the feature. + + * tests/run_make_tests.pl (set_more_defaults): Fix typo + +2019-12-16 Paul Smith + + * tests/run_make_tests.pl (subst_make_string): Force use of / + On Windows the path to the helper tool will contain '\': this will + fail if recipes are run with a POSIX shell. Convert '\' to '/' + on Windows. While here, escape any spaces in the path as well. + + Rename jhelp.pl to thelp.pl and make it a generic test helper. + * tests/thelp.pl: Rename from tests/jhelp.pl. + (op): Use names instead of options for the operations. + (op): Add new operations for sleep, mkdir, and rm. + (op): Enhance wait to time out + * tests/run_make_tests.pl: Add a new #HELPER# replacement + (subst_make_string): Use fully-qualified path to thelp.pl + * tests/scripts/features/parallelism: Update to use thelp.pl + and the new named operations. Use thelp.pl sleep instead of + system-specific sleep commands. + * tests/scripts/features/output-sync: Update to use thelp.pl + instead of complex shell scripts. + * Makefile.am: Distribute tests/thelp.pl instead of tests/jhelp.pl + +2019-10-10 Paul Eggert + + Port functions/shell test to Solaris 10 + * tests/scripts/functions/shell: Port exit-status calculation + to Solaris 10 with Perl 5.8.4. + +2019-10-08 Paul Smith + + Release GNU make 4.2.92 + * NEWS: Update the release and date + * configure.ac: Update the release number + +2019-10-06 Paul Smith + + * doc/make.text (Reading Makefiles): Rewrite to be more clear. + +2019-10-05 Paul Smith + + * Makefile.am (check-regression): Use PERLFLAGS when running Perl + * maintMakefile: Set PERLFLAGS to enable warnings. + * tests/run_make_tests.pl: Clean up issues pointed out by perl -w. + + * tests/scripts/functions/wildcard: Skip slash tests for local glob. + + tests: Convert %CONFIG_FLAGS to get_config() + * tests/config-flags.pm.W32: Create a predefined Windows file. + * Makefile.am (test_FILES): Add it to the distribution. + * build_w32.bat: Install tests/config-flags.pm if not existing. + * tests/run_make_tests.pl (get_config): Create new function. + * tests/scripts/features/archives: Call get_config() rather than + using %CONFIG_FLAGS directly. + * tests/scripts/features/load: Ditto. + * tests/scripts/features/loadapi: Ditto. + * tests/scripts/functions/wildcard: Ditto. + + * src/hash.c (jhash_string): Don't read past end of string. + Original patch from Dmitry Goncharov . + + * tests/run_make_tests.pl (valid_option): Add missing File::Spec + +2019-09-23 Paul Smith + + * src/function.c (func_realpath) [AIX]: Remove trailing slashes. + +2019-09-22 Paul Smith + + * tests/scripts/features/vpathplus: Fix output for big-endian systems. + Our hashing algorithm gives different ordering on LE vs BE systems. + Patch from Dmitry Goncharov . + +2019-09-22 Florian Weimer (tiny change) + + * configure.ac (HAVE_GETTIMEOFDAY): Avoid undeclared exit function. + +2019-09-22 Paul Smith + + * test/test_driver.el (_run_with_timeout): Show error message. + + * job.c (child_error): Modify error message string. + This reverts commit 6264deece3bb77798240a906ceed79097adbcf48. + Further investigation discovers that the real issue is that + GNU Emacs compile mode doesn't have a matching regex for GNU + make error messages generated when targets fail. I submitted + a patch to GNU Emacs adding a matcher for compile mode. + +2019-09-21 Paul Smith + + * tests: Convert from File::Spec::Functions to File::Spec. + Users report the Functions version doesn't work correctly for some + older versions of Perl. + + * tests/scripts/function/guile: Valgrind doesn't work with Guile. + + * src/job.c (child_execute_job): Allocate space for argv NULL. + +2019-09-21 Paul Smith + + [SV 56918] Compute job slots properly on failing command + Ensure we properly reduce job_slots_used if a command fails because + it doesn't exist/can't be started. + + * src/job.h (struct child): Add a field jobslot to be set when using + a job slot. + * src/job.c (start_waiting_job): Remember if we are using a job slot. + (reap_children): Reduce number of job slots used by jobslot. + +2019-09-21 Paul Smith + + * src/arscan.c (ar_scan): Restrict length for sscanf of ar_mode. + + * tests/scripts/functions/shell: Detect correct SHELLSTATUS code. + + * tests/run_make_test.pl: Fix support for valgrind. + Change the variable holding the make command to be a list that can + hold extra commands and options, not just a string. + + * tests/run_make_tests.pl (find_prog): Fix syntax error. + +2019-09-16 Paul Smith + + * NEWS: Update date and clarify -l change. + + * tests/run_make_tests.pl: Create $scriptsuffix for Windows/VMS. + * tests/scripts/features/targetvars: Add a suffix to scripts. + * tests/scripts/misc/general4: Ditto. + +2019-09-16 Paul Smith + + Refresh the test suite framework implementation. + Go through both run_make_tests.pl and test_driver.pl and slightly + modernize the Perl and clean up indentation etc. Fix a number of + warnings in the test scripts detected by running with -w. + + * tests/test_driver.pl: Move make error string detection out of the + base test driver. + (run_all_tests): Ensure that we always look for tests in the cwd. + * tests/run_make_tests.pl: Use File::Spec for path manipulations. + Correctly use setlocale() when detecting error strings. + Get configuration from the config-flags.pm file not config.status. + * tests/scripts/features/archives: Use new $cwddir variable. + * tests/scripts/features/reinvoke: Add missing semicolon. + * tests/scripts/features/vpath2: Avoid non-existent variable. + * tests/scripts/functions/foreach: Escape variables. + * tests/scripts/misc/bs-nl: Remove non-existing \v escape sequence. + * tests/scripts/misc/general4: Use handy create_file(). + * tests/scripts/options/dash-C: Use Cwd/$cwddir. + * tests/scripts/options/dash-I: Use subst_make_string() and #PWD#. + * tests/scripts/options/symlinks: Use File::Spec. + * tests/scripts/targets/DEFAULT: Use create_file and run_make_test. + * tests/scripts/variables/CURDIR: Use run_make_test. + * tests/scripts/variables/automatic: Remove extraneous "\". + * tests/scripts/vms/library: Remove extra "my" and extraneous "\". + +2019-09-16 Paul Smith + + * tests/config-flags.pm.in: Add USE_SYSTEM_GLOB. + * tests/config_flags_pm.com [VMS]: Ditto. + + * README.git: [SV 56895] Provide more info about "maintainer mode". + * src/read.c (get_next_mword) [HAVE_DOS_PATHS]: Don't fall through to + parsing variable references if we find a drivespec in a word! + + * tests/test_driver.pl: Remember error for "running" a directory. + * tests/scripts/features/errors: Check errors "running" a directory. + + * src/job.c (child_execute_job): Use errno from find_in_given_path(). + * tests/test_driver.pl: Determine non-executable error message. + * tests/scripts/features/errors: Use the local non-executable error. + + * src/job.c (child_execute_job): Use newer gnulib findprog version. + +2019-09-10 Eli Zaretskii + + Revert "[SV 56449] (Windows) Use slow path if '%' appears in the command" + This reverts commit 38e96eadea6e2cd42a0f414959bac327de9f468a. + Per discussion on Savannah, the modified behavior matches + the way % is handled in batch files, but not in cmd command + lines. And since Make mostly tries to emulate the command + line, the new behavior is unexpected and backward-incompatible. + +2019-09-09 Paul Smith + + Rework the creation of build.sh so it's not a template. + * build.sh: Rename from build.template. Get the list of objects + from the Makefile. Move configure-replaced variables ... + * build.cfg.in: to this new .in file. + * configure.ac: Remove special handling of build.sh.in and add + build.cfg as a generated file. + * Makefile.am (EXTRA_DIST): Remove build.sh.in and add build.sh + and build.cfg.in for build.sh.in. + * maintMakefile: Remove handling for build.template. Treat + build.sh as a source file, not a generated file. + * .gitignore: Ignore generated build.cfg file. + +2019-09-08 Paul Smith + + * gl/modules/make-glob: Move local glob configure.ac to here + * configure.ac: from here. + +2019-09-08 Paul Smith + + [SV 56834] Support local PATH search with posix_spawnp + When using exec we install the child's environment before invoking + execlp(), so commands are found on the child's PATH. posix_spawnp + searches on the parent's PATH, which we don't want. + + Import gnulib's findprog-in module and use it to search the child's + PATH, then use posix_spawn() to run it. + + Also, posix_spawn() does not fall back to trying sh on ENOEXEC, as + execlp() does, so implement that as well. + + * bootstrap.conf: Add the findprog-in gnulib module + * src/job.c: Include findprog.h if we're using posix_spawn. + (start_job_command): Remove the handling of child->cmd_name, + (child_execute_job): and add it here. Look up the command to be + run in the child's path and invoke it if found. If it fails with + ENOEXEC then retry it as an argument to the default shell. + * tests/scripts/misc/general4: Test makefile PATH assignments. + * tests/scripts/features/targetvars: Ditto, for target variables. + +2019-09-07 Paul Smith + + * doc/make.texi (Recipe Execution): Correct example to use $(<[DF]) + + * configure.ac: Check whether struct dirent has a d_type field + * src/dir.c (dir_contents_file_exists_p): Use the autoconf macro + HAVE_STRUCT_DIRENT_D_TYPE rather than relying on the GNU libc- + specific _DIRENT_HAVE_D_TYPE. + * lib/glob.c: Set HAVE_D_TYPE if HAVE_STRUCT_DIRENT_D_TYPE. + + * src/config.h.W32.template [W32]: Add support for dirent.d_type + * src/w32/include/dirent.h: Add DT_* values for dirent.d_type + (struct dirent): Add d_type + * src/w32/compat/durent.c (readdir): Set dirent.d_type based on + Windows file attributes. + + * src/makeint.h: Add typedef for mode_t if !HAVE_UMASK + + * build.template: Rewrite to allow gnulib support. + + * doc/make.texi: Clarify that the jobserver pipe is "blocking" + +2019-09-07 Paul Smith + + Align child_execute_job among different ports + Create a struct childbase which is the basics of struct child needed + to invoke child_execute_job(), and can be cast back and forth to a + struct child. Ensure all implementations of child_execute_job() take + the same arguments. + + * src/job.h (CHILDBASE): Create a macro to hold the base parts. + (struct childbase): A structure containing CHILDBASE. + (struct child): Use CHILDBASE as the initial part of child. + [VMS]: Remove declaration of VMS version of child_execute_job. + * src/job.c (start_job_command): Use new child_execute_job() call. + (child_execute_job) [__EMX__]: Implement new calling signature. + (child_execute_job): Implement new calling signature. + * src/main.c (main) [__EMX__]: Use new child_execute_job() call. + * src/function.c (func_shell_base): Use new child_execute_job() call. + * src/vmsjobs.c (vmsHandleChildTerm): Accept struct childbase. + * src/vmsjobs.c (child_execute_job): Implement new calling signature. + Modify the return value to be pid_t, not a boolean, and return the + PID rather than setting it in the child. This is OK because our only + caller immediately reset PID to -1 anyway if we return 0. + +2019-09-07 Paul Smith + + * doc/make.tex (Substitution Refs): Clarify patsubst relationship. + + * src/job.c (start_job_command) [VMS]: Correct VMS comment. + +2019-09-07 Paul Smith + + Show useful errors when posix_spawn() doesn't do so + The posix_spawn() function may not detect that the command to run is + invalid when it's invoked. Instead, it will run then exit with + error code 127. If that happens do our best to present the user + with a useful error message. + + * src/job.h (struct child): Add cmd_name to hold the command we ran. + * src/job.c (start_job_command): On success, remember the cmd_name. + (reap_children): On exit 127, stat cmd_name and show a useful error. + (free_child): Free cmd_name. + +2019-09-07 Paul Smith + + * README.git: Describe GCC and GNU make requirements + * maintMakefile: Put custom C flags into a separate variable + so they can be overridden more easily on the command line. + + * tests/scripts/features/archives: Fix expected long ar name output. + + * tetss/run_make_test.pl: Avoid 'sh -c' for Windows portability. + + Update to GNU make release candidate 4.2.91 + + * tests/scripts/functions/wildcard: Skip dangling symlink test. + The built-in glob implementation does not correctly handle dangling + symlinks. This needs to be fixed by switching to the latest glob + implementation from gnulib but that's a big job: for now avoid the + test if we know it will fail. + + * maintMakefile: Use check-local when testing build.sh. + Running 'make check' will rebuild 'make' so we're not testing the + build.sh-generated make binary. + +2019-09-07 Paul Smith + + Don't reset stack size when using posix_spawn() + There's no way to run setrlimit() from posix_spawn() so we can't reset + the stack limit in children; thus, don't change it in the parent. + + * src/makeint.h (SET_STACK_SIZE): Don't set this when HAVE_POSIX_SPAWN. + * src/job.c (child_execute_job): Remove useless comment. + +2019-09-07 Paul Smith + + * configure.ac: Remove redundant getloadavg gnulib support + + * src/dir.c (dir_setup_glob): Initialize unused gl_offs. + * tests/scripts/functions/wildcard: Add trailing slash tests. + Initial changes by Dmitry Goncharov + +2019-09-02 Paul Eggert + + Pacify Oracle Studio c99 + * src/dep.h (DEP): + * src/function.c (struct function_table_entry): + Use unsigned int, not unsigned short. Without this patch, c99 + complains ‘warning: nonportable bit-field type’. + + Port grouped_targets test to Solaris 10 + * tests/scripts/features/grouped_targets: Use ‘printf ''’ + instead of ‘echo -n’, as POSIX says the latter is not portable. + + Remove useless code in eval + * src/read.c (eval): Remove useless code. Without this patch, + Oracle Studio 12.6 complains ‘"src/read.c", line 1405: warning: + loop not entered at top’. + + Pacify Oracle Studio 12.6 in init_switches + * src/main.c (init_switches): Use a cast to convert char const * + to char *. Without this patch, the compiler complains + ‘"src/main.c", line 2643: warning: assignment type mismatch: + pointer to char "=" pointer to const char’. + + Pacify Oracle Studio 12.6 + * src/arscan.c [VMS]: Use ‘#if !defined LBR$_HDRTRUNC’ instead + of ‘#ifndef LBR$_HDRTRUNC’ to pacify Oracle Studio 12.6, which + looks inside unused #if branches for preprocessor syntax errors. + Without this patch it complains ‘"src/arscan.c", line 43: warning: + tokens ignored at end of directive line’. + +2019-09-02 Paul Smith + + * NEWS: Fix incorrect notes. + + * src/read.c (parse_file_seq): [SV 52076] Don't reverse glob() results. + +2019-08-28 Eli Zaretskii + + Fix MS-Windows MinGW build + * src/w32/subproc/sub_proc.c (process_wait_for_multiple_objects): + Fix format specifier for GetLastError's value. + + * src/job.c (reap_children): Define the 'remote_status_lose' label + only for Posix platforms, to avoid compiler warning. + + * build_w32.bat (LNKOUT): New variable, using forward slashes. + Use forward slashes in calls to :Compile, so that linking with GNU + ld works. + + * src/makeint.h [!HAVE_UMASK]: Prototype for 'umask'. + (UMASK, MODE_T): Don't define. + + * src/misc.c (get_tmpfile): Don't call UMASK, call umask, to + avoid compilation warning on !HAVE_UMASK platforms. + * src/output.c (output_tmpfd): Likewise. + + * src/misc.c (umask) [!HAVE_UMASK]: New no-op function. + + * src/config.h.W32.template (__USE_MINGW_ANSI_STDIO) + [__MINGW32__]: Define to 1, to force Make use ANSI-compatible + stdio functions, which also support the non-standard 'Id' and 'Ix' + specifiers. + (HAVE_UMASK) [__MINGW32__]: Define to 1. + + * src/arscan.c (ar_member_touch): Type-cast argument of strlen to + avoid compiler warnings. + +2019-08-26 Paul Smith + + * NEWS: Update for pre-release + +2019-08-26 Paul Smith + + Update maintainer mode to support debug wait points. + Make a spin() method available when compiled in maintainer mode. + If a file exists in the working directory with a specific name, + make will sleep until the file is deleted. + + Ensure that maintainer mode is enabled on Windows, using the same + algorithm we use on POSIX / autoconf systems. + + * build_w32.bat: If maintMakefile exists, enable maintainer mode. + * src/main.c (main): Replace Windows-only suspend flag with spin(). + * src/makeint.h: A SPIN() macro calls spin() in maintainer mode. + * src/misc.c (spin): If a spin file exists sleep until it's deleted. + +2019-08-26 Paul Smith + + * tests/scripts/features/archives: [SV 54395] Support non-GNU ar. + + * tests/scripts/misc/general3: Add more tests for SHELL/.SHELLFLAGS + +2019-08-25 Paul Smith + + * src/job.c (construct_command_argv): Remove unused VMS code + + * src/job.c (child_execute_job): Set pid to -1 on posix_spawn failure. + +2019-08-24 Paul Smith + + * bootstrap: Update from latest gnulib version + + * scripts/copyright-update: Use git ls-files for controlled files + + * po/LINGUAS: Add a translation for Bulgarian. + +2019-07-14 Christian Eggers (tiny change) + + [SV 56449] (Windows) Use slow path if '%' appears in the command + * src/job.c (sh_chars_dos): Add '%' as a special character + * src/job.c (construct_command_argv_internal): Check for '%' in quotes + + For the windows version of make, a recipe line cannot be executed + diretly by make (without a shell) if a '%' character is present. This + character starts a cmd.exe escape sequence. + +2019-07-14 Paul Smith + + * src/read.c (parse_file_seq): Update comments. + +2019-07-13 Mike Haboustak (tiny change) + + [SV 28456] Don't override $< when no default rule has been defined + The check for matching a file's command to the default rule's command + does not account for null. If no .DEFAULT is defined a rule with no + recipe has it's $< variable set to the value of $@. This breaks second + expansion, particularly when used with pattern rules. + + * src/commands.c [set_file_variables]: Check that cmds is set + * tests/scripts/features/se_explicit: Test case + * tests/scripts/features/se_implicit: Test case + +2019-07-13 Paul Smith + + Switch to the gnulib version of strerror() + * bootstrap.conf: Add strerror module + * configure.ac: Remove strerror check + * src/misc.c: Remove local strerror() implementation + * src/config.ami.template: Remove HAVE_STRERROR + * src/config.h-vms.template: Ditto. + * src/config.h.W32.template: Ditto. + +2019-05-19 Paul Smith + + * doc/make.texi: [SV 51974] Clarify makefile parsing operations. + + * doc/make.texi: [SV 54116] Document whitespace removal trick. + Discovered and explained by Michael Henry + * tests/scripts/variables/flavors: Add a test to preserve the behavior. + +2019-05-19 Paul Smith + + [SV 46013] Allow recursive variable overrides from Makefiles + Ensure that variable overrides are passed to recursive make instances + even if no overrides were provided on the command line. + Fix suggested by Rici Lake + + * src/main.c (define_makeflags): Add overrides without respect to the + value of command_variables. + * tests/scripts/features/recursion: Add a test. + +2019-05-19 Paul Smith + + Update developer customizations + * .ccls: Remove -std=c99: it disables __attribute__ causing warnings. + * .dir-locals.el: Force the C coding style to "gnu". + * make-gdb.py: Add GDB macros for pretty-printing GNU make structs. + * scripts/copyright-update: Use GNULIB_SRCDIR to find update-copyright. + +2019-05-19 Paul Smith + + [SV 54549] Don't free used set_lists during merge + When merging the variable_set_lists for two targets it could be + that the "from" set list is a subset of the "to" set list: check + for this situation to avoid freeing used memory. + + * src/variable.c (merge_variable_set_lists): Walk the "to" list and + if the "from" list is contained in it, nothing to do. + * tests/scripts/features/se_explicit: Add a test. + +2019-05-19 Paul Smith + + * src/hash.c (jash_string): [SV 54980] Avoid ASAN error + +2019-05-19 Paul Smith + + [SV 54740] Ensure .SILENT settings do not leak into sub-makes + Create a new variable run_silent to hold the current instance's global + silence setting, allowing silent_flag to represent only whether the -s + option was provided on the command line. + + * src/makeint.h: Change silent_flag variable to run_silent. + * src/job.c: Ditto. + * src/remake.c: Ditto. + * src/file.c: Ditto. + * src/main.c: Add a new global variable run_silent. + (decode_switches): After switches are decoded, initialize run_silent. + * tests/scripts/targets/SILENT: Add a test for recursive behavior. + +2019-05-19 Paul Smith + + Update copyright statements for 2019 + +2019-05-12 Kaz Kylheku + + [SV 8297] Implement "grouped targets" for explicit rules. + This patch allows "grouped targets" using the &: syntax: + + tgt1 tgt2 ... tgtn &: pre1 pre2 ... + recipe + + When the &: separator is used (in single or double colon forms), all + the targets are understood to be built by a single invocation of the + recipe. This is accomplished by piggy-backing on the already-existing + pattern rule feature, using the file's "also_make" list. + + * NEWS: Add information about grouped targets. + * doc/make.texi (Multiple Targets): Add information on grouped targets. + (Pattern Intro): Refer to the new section to discuss multiple patterns. + * src/main.c (main): Add "grouped-targets" to .FEATURES + * src/read.c (make_word_type): Add new types for &: and &::. + (eval): Recognize the &: and &:: separator and remember when used. + (record_files): Accept an indicator of whether the rule is grouped. + If so, update also_make for each file to depend on the other files. + (get_next_mword): Recognize the &: and &:: word types. + * tests/scripts/features/grouped_targets: New test script. + * AUTHORS: Add Kaz Kylheku + +2019-05-12 Paul Smith + + * variable.c (define_variable_in_set): Clear new structs + + * po/LINGUAS: Add Portuguese translation + + Add developer customizations + * .ccls: Configure the ccls LSP server + * .dir-locals.el: Reset some parameters for ccls and lsp-mode + * .gitignore: Update for GTAGS and ccls + * maintMakefile: Don't search hidden directories for sources + +2018-09-16 Paul Smith + + * src/arscan.c (ar_member_touch): [SV 54533] Stop \0 in archive headers + + Change output_write() to writebuf(), add readbuf() helper. + * src/misc.c (writebuf, readbuf): Create helper functions that will + reliably write a buffer to a file descriptor in the face of EINTR + causing short writes, and read from a file descriptor into a buffer + in the face of EINTR causing short reads. + * src/makeint.h: Declare these functions. + * src/output.c: Remove output_write() and replace with writebuf(). + (_outputs, out_of_memory): Call writebuf(), not output_write(). + * src/arscan.c (ar_scan): Call readbuf() instead of read(2). + (ar_member_touch): Remove duplicate header write, call writebuf() + instead of output_write(), and readbuf() instead of read(2). + +2018-09-15 Paul Smith + + * doc/make.texi (Remaking Makefiles): [SV 52273] Note MAKE_RESTARTS + + * src/main.c (main): Set jobserver permissions before re-execing + Fixes an issue seen in the Linux kernel build system, reported by + Masahiro Yamada . Fix suggested + on the bug-make mailing list by Mike Shal . + * tests/scripts/features/parallelism: Add a test to verify this. + + * doc/make.texi: [SV 48970] Clarify the value of $? + + * doc/make.text: [SV 54360] Weaken "obsolete" language in the manual. + There's no need to frighten users away from capabilities which are + perfectly reasonable and definitely not going away, by calling them + obsolete or discouraged in the manual. + + [SV 40657] Don't create pattern rules for suffix rules with deps. + * NEWS: Update with a backward-compatibility warning. + * src/rule.c (convert_to_pattern): If a suffix rule has dependencies, + do not create a pattern rule for it. According to the manual suffix + rules with prerequisites are treated as normal targets. + * tests/scrips/features/suffixrules: Create some regression tests for + .SUFFIXES and suffix rules. + +2018-08-04 Paul Smith + + * NEWS: Update for the latest changes. + +2018-08-04 Paul Smith + + [SV 54233] Preserve higher command_state values on also_make targets. + If multiple pattern rules have the same pattern as also-make targets + and we attempt to run them at the same time, we might downgrade the + command state from 'running' to 'deps_running'; this will prevent + that also_make from being considered complete causing make to wait + forever for it to finish. + + Ensure that set_command_state never downgrades the state of a target. + + * src/file.c (set_command_state): Don't downgrade command_state. + * src/filedef.h (struct file): Document the order prerequisite. + * test/scripts/features/patternrules: Test the behavior. + +2018-08-04 Paul Smith + + * src/job.c (reap_children): Fix inverted win/lose message. + + * tests/scripts/functions/wildcard: [SV 52018] Test dangling symlink. + +2018-08-04 Bernhard M. Wiedemann + + * src/read.c (parse_file_seq): [SV 52076] Sort wildcard results. + +2018-08-04 Paul Smith + + * tests/scripts/features/archives: [SV 54395] Test long archive names. + +2018-08-04 Ben Hutchings + + * src/arscan.c (ar_scan): [SV 54395] Allow long names in archives. + Commit bc9d72beb0cb "Resolve issues discovered by static code + analysis." added range checks on archive member name length. However, + on non-AIX systems it also checked BSD-style long names against the + short name limits and and checked the *offset* for GNU-style long + names against the short name limits. This caused valid long names to + be rejected. + + * Record the size of the GNU name map and validate offsets against it + * Ensure that the last entry in the name map is null-terminated + * Apply a maximum length of INT_MAX for element sizes + + Reported-by: Philipp Wolski + +2018-08-04 Paul Smith + + * lib/glob.c (glob_in_dir): [SV 53465] Allow symlinks to directories. + Fix from Rich Felker on the musl mailing list. + * tests/scripts/functions/wildcard: Create a regression test for this. + + * configure.ac: Add --disable-posix-spawn option + * maintMakefile: Add a test for the option + * src/job.c: Change HAVE_* preprocessor checks to USE_POSIX_SPAWN + + * src/job.c (child_execute_job): Clean up posix_spawn invocation + +2018-08-04 Aron Barath + + * job.c (child_execute_job): Prefer posix_spawn() over fork()/exec() + +2018-08-04 Paul Smith + + Clean up errors for invalid commands and add regression tests. + * src/function.c (func_shell_base): Use error() instead of recreating + the error output. + * src/job.c (exec_command): Show more standard error messages. + * src/load.c (unload_file): Fix whitespace in the error message. + * tests/scripts/features/errors: Add tests for starting non- + existent commands and new error message formats. + * tests/scripts/features/output-sync: New error message formats. + * tests/scripts/functions/shell: Ditto. + +2018-08-04 Paul Smith + + Queue failed fork() (etc.) to be handled like any other failed job. + If we failed to fork() we were essentially exiting make immediately + without respect to ignore flags, etc. On one hand that makes sense + because if you can't fork you're in real trouble, but it doesn't + work so well on systems where we don't fork at all. Instead, treat + a fork error like any other error by delaying the handling until + the next call to reap_children(). Any child with a PID of -1 is + considered to have died before starting so check these first without + waiting for them. + + * src/commands.c (fatal_error_signal): Don't kill children that + never started. + * src/function.c (func_shell_base): Handle cleanup properly if the + child doesn't start. + * src/job.c (reap_children): Check for children that died before + starting and handle them without waiting for the PID. + (start_job_command): Free memory when the child doesn't start. + (start_waiting_job): Don't manage children who never started. + (child_execute_job): If the fork fails return PID -1. + * src/vmsjobs.c: Check for children that never started. + * tests/run_make_tests.pl: Parse config.status to get all options. + +2018-08-02 Aron Barath + + * configure.ac: Check for posix_spawnattr_setsigmask + + * configure.ac: Check for spawn.h and posix_spawn() + + * src/makeint.h: Use pid_t to store PIDs, of int. + * src/commands.c (getpid): Ditto. + * src/job.h (*): Ditto. + * src/job.c (*): Ditto. + * src/main.c (main): Ditto. + * src/remote-cstms.c (start_remote_job): Ditto. + * src/remote-stub.c (start_remote_job): Ditto. + +2018-08-02 spagoveanu@gmail.com (tiny change) + + * src/dir.c: Preserve glob d_type field + When using GNU make on a system with glibc glob a pattern ending in + a slash is also matching regular files, but only in subdirectories: + + $ mkdir -p dir/subdir + $ cd dir + $ touch file1 subdir/file2 + $ echo 'test:; @echo $(wildcard */ */*/)' | make -f - + subdir/ subdir/file2 + $ echo 'test: */ */*/; @echo "$?" != */ */*/' | make -f - + subdir/ subdir/file2 != subdir/ */*/ + + It happens because in the gl->gl_readdir callback supplied to glob(), + dirent->d_type is set to DT_UNKNOWN, and the glob() implementation + in glibc assumes that such a directory entry *cannot* possibly be a + regular file. + + Pass the actual d_type down to glob(); this is the right thing to do + even if glibc is fixed, because it saves an extra stat() syscall for + each dirent. + +2018-08-02 Paul Smith + + * src/read.c(unescape_char): Use C comments not C++ comments. + * src/posixos.c(set_blocking): Ditto. + * src/w32/subproc/sub_proc.c(process_init): Ditto + + Enhance the Basic.mk environment to work with Gnulib + * maintMakefile: Omit generated headers from Basic.mk prerequisites. + * Basic.mk.template: Rework commands to use with $(call ...) macros. + * mk/Amiga.mk: Ditto. + * mk/VMS.mk: Ditto. + * mk/Windows32.mk: Ditto, plus P2W to convert POSIX to Windows paths. + * mk/msdosdjgpp.mk: Ditto. + +2018-07-02 Paul Smith + + Resolve most of the Windows Visual Studio warnings. + * Convert integer types to size_t where necessary. + * Align other integral types to avoid casts and type warnings. + +2018-07-02 Paul Smith + + Update regression tests for Windows. + * tests/scripts/features/jobserver: Windows doesn't use pipes + * tests/scripts/functions/shell: Don't test kill -2 on Windows + * tests/scripts/misc/bs-nl: Windows doesn't handle single quotes + * tests/scripts/misc/general3: Ditto. + + * maintMakefile: Preserve comments during compilation + + * function.c(abspath): Use memcpy() to avoid GCC 8.1 warnings + +2018-07-02 Paul Smith + + Convert GNU make to use the gnulib portability library + Move content from glob/* and config/* into standard GNU directory + locations lib/* and m4/*. + + Install the gnulib bootstrap script and its configuration file, and + create a bootstrap.bat file for Windows. Update the README.git file + with new requirements and instructions for building from Git. + + At this point we only install the alloca, getloadavg, and FDL modules + from gnulib. We keep our old glob/fnmatch implementation since the + gnulib versions require significant amounts of infrastructure which + doesn't exist on Windows yet. Further work is required here. + + Due to a problem with gnulib's version of getloadavg, we need to bump + the minimum required version of automake to 1.16.1 unfortunately. + + * README.git: Update instructions + * NEWS: Move developer news to a separate section + * configure.ac: Update for use with gnulib modules + + * bootstrap: Bootstrap from Git workspace (import from gnulib) + * bootstrap.conf: Bootstrap configuration for GNU make + * bootstrap.bat: Bootstrap from Git workspace for Windows + * gl/modules/make-glob: Support our local fnmatch/glob implementation + + * config/acinclude.m4: Move to m4/ + * config/dospaths.m4: Move to m4/ + * glob/fnmatch.c: Move to lib/ + * glob/fnmatch.h.in: Move to lib/ + * glob/glob.c: Move to lib/ + * glob/glob.h.in: Move to lib/ + + * Makefile.am: Update for new directories + * build.template: Update for new directories + * build_w32.bat: Update for new directories + * builddos.bat: Update for new directories + * maintMakefile: Update for new directories + * makefile.com: Update for new directories + * mk/Amiga.mk: Update for new directories + * mk/Posix.mk.in: Update for new directories + * mk/VMS.mk: Update for new directories + * mk/Windows32.mk: Update for new directories + * mk/msdosdjgpp.mk: Update for new directories + + * po/LINGUAS: One language per line (needed by gnulib) + + * INSTALL: Remove (obtained from gnulib) + * src/alloca.c: Remove (obtained from gnulib) + * src/getloadavg.c: Remove (obtained from gnulib) + * po/Makevars: Remove (created by bootstrap) + * config/*: Remove leftover files + * glob/*: Remove leftover files + +2018-07-01 Paul Smith + + * Makefile.ami, glob/Makefile.ami: Remove obsolete files + +2018-07-01 Ola Olsson + + * doc/make.texi: Updated language + +2018-07-01 Paul Smith + + * all: Update Copyright statements for 2018 + + * scripts/copyright-update: Maintainer's script for copyright mgmt + +2018-02-10 Paul Smith + + * build_w32.bat: Support Visual Studio 17. + +2017-11-19 Paul Smith + + * configure.ac: Support GLIBC glob interface version 2 + +2017-11-19 Paul Smith + + Rework directory structure to use GNU-recommended "src" directory. + Move the source code (other than glob) into the "src" subdirectory. + Update all scripting and recommendations to support this change. + + * *.c, *.h, w32/*: Move to src/ + * configure.ac, Makefile.am, maintMakefile: Locate new source files. + * Basic.mk.template, mk/*: Update for new source file locations. + * NEWS, README.DOS.template: Update for new locations. + * build.template, build_w32.bat, builddos.bat: Ditto. + * po/POTFILES.in: Ditto + * tests/run_make_tests.pl, tests/scripts/features/load*: Ditto. + * make.1: Move to doc. + * mk/VMS.mk: Add support for building on VMS (hopefully). + * makefile.vms, prepare_w32.bat: Remove. + * SCOPTIONS: Update to define HAVE_CONFIG_H + +2017-11-18 Paul Smith + + * job.c: Add "command" as a known shell built-in. + This is not a POSIX shell built-in but it's common in UNIX shells. + Reported by Nick Bowler . + + * tests/scripts/features/output-sync: Revert bad change in 0c5a9f9b92a + +2017-11-18 Paul Smith + + Remove unsupported build facilities. + Over time the non-standard build and install systems (nmake files, + smake files, Visual Studio project files, etc.) have atrophied and + maintaining them is not worth the effort, for such a simple utility + as make. Remove all the non-standard build tool support and unify + OS-specific build rules under a basic set of (GNU make) makefiles. + + Preserve the existing bootstrapping scripts (for POSIX, Windows, + and MS-DOS). Also the existing VMS build scripts are left unchanged: + I don't have enough experience with VMS to venture into this area. + Perhaps one of the VMS maintainers might like to determine whether + conversion would be appropriate. + + Rather than create libraries for w32 and glob (non-POSIX), simply + link the object files directly to remove the complexity. + + * NEWS: Update with user-facing notes. + * Makefile.am: Clean up to use the latest automake best practices. + Build Windows code directly from the root makefile to avoid recursion. + * README.Amiga, README.DOS.template, README.W32.template: Updated. + * INSTALL: Point readers at the README.git file. + * maintMakefile: Remove obsolete files. Create Basic.mk file. + * Basic.mk.template, mk/*.mk: Create basic GNU make-based makefiles. + * build_w32.bat: Copy Basic.mk to Makefile + * configure.ac: We no longer need AM_PROG_AR. + * dosbuild.bat: Rename to builddos.bat. Incorporate configure.bat. + * Makefile.DOS.template: Remove. + * NMakefile.template, w32/subproc/NMakefile: Remove. + * SMakefile.template, glob/SMakefile, glob/SCOPTIONS, make.lnk: Remove. + * configure.bat, glob/configure.bat: Remove. + * w32/Makefile.am: Remove. + * make_msvc_net2003.sln, make_msvc_net2003.vcproj: Remove. + +2017-11-11 Paul Smith + + * Makefile.am: Add jhelp.pl to remote test setup. + +2017-11-11 Paolo Bonzini + + Do not use STOP_SET for singleton compares. + Compare against '$' directly rather than using MAP_VARIABLE. + This saves ~10% for find_map_function, which is the top hotspot in + QEMU's no-op build. The build is sped up overall by about 1.5% + more (from 11.1s to 10.95s). + + * read.c (find_map_function): Do not compare against singleton sets. + +2017-11-11 Paolo Bonzini + + Speedup parsing of functions. + Use the stopchar map to quickly jump over everything that is + not an open/close brace, an open/close parenthesis or a comma. + + This saves 1% on QEMU's noop build (from 11.23s to 11.1s). + + * function.c (find_next_argument, handle_function): Check + with STOP_SET before comparing against individual characters. + * main.c (initialize_stopchar_map): Initialize MAP_VARSEP + mappings in stopchar_map. + * makeint.h (MAP_VARSEP): New. + +2017-11-11 Paolo Bonzini + + Remove MAP_PERCENT as strchr is faster. + * read.c (find_percent_cached): Use strchr instead of STOP_SET + to find % or nul. + * makeint.h (MAP_PERCENT): Remove. + * main.c (initialize_stopchar_map): Remove. + +2017-11-11 Paolo Bonzini + + Use Jenkins hash. + This is about twice as fast as the current hash, and removes the + need for double hashing (improving locality of reference). The + hash function is based on Bob Jenkins' design, slightly adapted + wherever Make needs to hash NUL-terminated strings. The old hash + function is kept for case-insensitive hashing. + + This saves 8.5% on QEMU's no-op build (from 12.87s to 11.78s). + + * configure.ac: Check endianness. + * hash.c (rol32, jhash_mix, jhash_final, JHASH_INITVAL, + sum_get_unaligned_32, jhash): New. + * hash.h (STRING_HASH_1, STRING_N_HASH_1): Use jhash. + (STRING_HASH_2, STRING_N_HASH_2): Return a dummy value. + (STRING_N_COMPARE, return_STRING_N_COMPARE): Prefer memcmp to strncmp. + +2017-11-11 Paolo Bonzini + + Use strchr for simple case of find_char_unquote. + In most cases, find_char_unquote has a single stopchar. In that + case we can look for it using strchr's optimized implementation. + + This saves 3.5% on QEMU's noop build (from 11.78s to 11.37s). + + * read.c (find_char_unquote): Rename to find_map_unquote. Replace + with an implementation optimized for the case where the stopchar + is a singleton. Adjust all callers. + +2017-11-11 Paolo Bonzini + + Use strchr/memmove in collapse_continuations. + collapse_continuations is already using strchr to speed up the + common case of no backslash-newline sequence, but on modern + processors it is faster to scan the string twice with + strchr+memmove (or strlen+memmove) than to move bytes manually. + + Saves about 1.5% on QEMU's no-op build (from 11.37s to 11.23s). + + * misc.c (collapse_continuations): Rewrite the scanning of LINE. + +2017-10-31 Paul Smith + + * main.c (main): [SV 48274] Allow -j in makefile MAKEFLAGS variable. + * tests/jhelp.pl: New file to allow testing parallelism without sleep. + * tests/scripts/features/parallelism: Test this. + * tests/scripts/features/jobserver: Update tests. + * tests/scripts/features/output-sync: Remove useless rm command. + +2017-10-30 Paul Smith + + * job.c (child_error): Modify error message string. + Ensure Emacs compile-mode's next-error doesn't match target failure + messages. Syntax errors in makefiles are still matched. + + * function.c (func_if): Check the first character of condition. + Reported by Rob W + +2017-10-30 Paul Eggert + + glob: Do not assume glibc glob internals. + It has been proposed that glibc glob start using gl_lstat, + which the API allows it to do. GNU 'make' should not get in + the way of this. See: + https://sourceware.org/ml/libc-alpha/2017-09/msg00409.html + + * dir.c (local_lstat): New function, like local_stat. + (dir_setup_glob): Use it to initialize gl_lstat too, as the API + requires. + +2017-10-30 Paul Smith + + Compute load from number of running processes. + * job.c (load_too_high): If /proc/loadavg is available, compare the + maximum load against the number of processes currently running. If + we can't parse /proc/loadavg, use the previous algorithm. + + Concept and initial patch from Sven C. Dack + +2017-09-30 Eli Zaretskii + + Fix checking existence of directories on MS-Windows + * remake.c (name_mtime) [WINDOWS32]: Emulate Posix behavior of + 'stat' with the likes of "foo/" and "foo/.". + +2017-07-09 Paul Smith + + Update copyright statements for 2017. + + Remove uses of unnecessary "register" keyword. + + * variable.c (create_pattern_var): [SV 51266] Create with xcalloc(). + Reported by Chris Metcalf + + [SV 51400] Only unblock fatal signals after child invocation + * job.c (unblock_sigs): Only unblock fatal signals not all signals. + (unblock_all_sigs): Unblock all signals not just fatal signals. + (child_execute_job): Call unblock_all_sigs() in child process. + * job.h: Remove unused function definitions. + * remote-cstms.c (start_remote_job): Call unblock_all_sigs() in + child process. + Reported by Koen Van Hoof + +2017-07-01 Paul Smith + + * function.c (shell_completed): [SV 51014] Add signal to .SHELLSTATUS + * tests/scripts/functions/shell: Verify that .SHELLSTATUS contains + a non-0 value when the shell exits due to a signal. + +2017-06-07 Eli Zaretskii + + Avoid crashes when SHELL=abcde is specified on the command line + * variable.c (do_variable_definition): If $SHELL was not found, + process "SHELL=foo" as any other variable definition. This avoids + segfaults when SHELL=foo is specified on the Make command line. + Reported by Orgad Shaneh . + +2017-06-04 Paul Smith + + [SV 51159] Use a non-blocking read with pselect to avoid hangs. + * posixos.c (set_blocking): Set blocking on a file descriptor. + (jobserver_setup): Set non-blocking on the jobserver read side. + (jobserver_parse_auth): Ditto. + (jobserver_acquire_all): Set blocking to avoid a busy-wait loop. + (jobserver_acquire): If the non-blocking read() returns without + taking a token then try again. + + [SV 50823] Support filenames containing '$' in MAKEFILE_LIST + * variable.h (enum variable_flavor: Add a new flavor for appended + values that shouldn't be expanded. + * variable.c (do_variable_definition): If given this new flavor, + do not expand the value before appending it. + * read.c (eval_makefile): Use this new flavor for MAKEFILE_LIST + * tests/scripts/variables/MFILE_LIST: Test filenames containing '$'. + + * tests/test_driver.pl: Useful error if given an invalid test name. + + * NEWS: Do not insert a space during '+=' if the value is empty. + * doc/make.texi (Appending): Document this behavior. + * variable.c (do_variable_definition): Only add a space if the variable + value is not empty. + * tests/scripts/variables/flavors: Test this behavior. + +2017-06-04 Enrique Olaizola (tiny change) + + * read.c (read_all_makefiles): [SV 50909] Add MAKEFILES to strcache + +2017-06-04 Paul Smith + + * po/LINGUAS: Add support for traditional Chinese (zh_TW) + + Rename output_tmpfile() to a misc function get_tmpfile() + * output.c: Remove output_tmpfile() and umask handling. + * output.h: Ditto. + * misc.c: Add get_tmpfile() and umask handling. + * makeint.h: Ditto. + * function.c: Rename output_tmpfile() to get_tmpfile(). + * main.c: Ditto. + * vmsjobs.c: Ditto. + + [SV 13651] Handle out-of-memory conditions slightly more gracefully. + * makeint.h: Change OUT_OF_MEM() macro to out_of_memory() function. + * output.h, job.h: Move FD_* macros from job.h to output.h. + * output.c (output_write): Write a buffer to an FD directly. + (out_of_memory): Use output_write() to avoid allocating more + memory while writing the error, and call exit() instead of die(). + This does mean we can't translate the error string, though. + * misc.c (xmalloc, xcalloc, xrealloc, xstrdup, xstrndup): Call new + out_of_memory() rather than OUT_OF_MEM(). + * read.c (parse_file_seq): Ditto. + + Clean up close-on-exec, particularly with jobserver pipes. + * configure.ac: Check sys/file.h and assume fileno() always exists. + * output.h: Move output-specific content from job.h to output.h. + * os.h (fd_inherit, fd_noinherit): New functions manage FD inheritance. + * posixos.c (fd_inherit, fd_noinherit): Implement for POSIX systems. + (jobserver_setup): Force jobserver FDs to not be inherited by default. + (jobserver_pre_child): Enable inheritance in recursive invocations. + (jobserver_post_child): Disable inheritance after recursive invocations. + * w32/w32os.c (fd_inherit, fd_noinherit): Implement for W32 systems. + * job.h (CLOSE_ON_EXEC): Remove macro in deference to new fd_noinherit. + * function.c (func_shell_base): Convert CLOSE_ON_EXEC to fd_noinherit. + * job.c (child_execute_job): Ditto. + * output.c (setup_tmpfile): Ditto. + * read.c (eval_makefile): Ditto, plus remove HAVE_FILENO check. + * w32/include/sub_proc.h: Remove process_noinherit for fd_noinherit. + * w32/subproc/sub_proc.c: Ditto. + + [SV 50300] Use CFLAGS value of "-O1" in POSIX mode. + * read.c (record_files): Use "-O1" not "-O" for CFLAGS and FFLAGS. + * tests/scripts/targets/POSIX: Test for the new value. + + * configure.ac: [SV 50648] Detect Guile 2.2 packages. + + * doc/make.texi: [SV 50304] Add missing close parenthesis. + + Add test suite support to Windows + * main.c (main): Sanitize program name detection on Windows. + * makeint.h: 'program' is a const string on all platforms now. + * tests/run_make_tests.bat: Windows bat file to invoke tests + * tests/test_driver.pl: Obtain system-specific error messages. + (get_osname): Compute the $port_type here. Add more $osname checks + for different Windows Perl ports. + (_run_command): Rewrite the timeout capability to work properly + with Windows. Don't use Perl fork/exec; instead use system(1,...) + which allows a more reliable/proper kill operation. + Also, allow options to be given as a list instead of a string, to + allow more complex quoting of command-line arguments. + * tests/run_make_tests.pl (run_make_with_options): Allow options + to be provided as a list in addition to a simple string. + (set_more_defaults): Write sample makefiles and run make on them + instead of trying to run echo and invoking make with -f-, to avoid + relying on shell and echo to get basic configuration values. Also + create a $sh_name variable instead of hard-coding /bin/sh. + * tests/scripts/features/archives: Skip on Windows. + * tests/scripts/features/escape: Use list method for passing options. + * tests/scripts/features/include: Use system-specific error messages. + * tests/scripts/features/output-sync: "Command not found" errors + generate very different / odd output on Windows. This needs to be + addressed but for now disable these tests on Windows. + * tests/scripts/functions/abspath: Disable on Windows. + * tests/scripts/functions/file: Use system-specific error messages. + * tests/scripts/functions/shell: "Command not found" errors generate + very different / odd output on Windows. This needs to be addressed + but for now disable these tests on Windows. + * tests/scripts/misc/close_stdout: Disable on Windows. + * tests/scripts/options/dash-k: Use system-specific error messages. + * tests/scripts/options/dash-l: Disable on Windows. + * tests/scripts/options/eval: Use list method for passing options. + * tests/scripts/options/general: Skip some non-portable tests. + * tests/scripts/targets/ONESHELL: Skip some non-portable tests. + * tests/scripts/targets/POSIX: Skip some non-portable tests. + * tests/scripts/variables/MAKEFILES: Skip some non-portable tests. + * tests/scripts/variables/SHELL: Use a makefile not -f- for testing. + +2017-06-04 Enrique Olaizola + + * tests/run_make_tests.pl: [SV 50902] Find Perl modules + +2017-01-11 Eli Zaretskii + + [SV 50021] Avoid infloop on MS-Windows with short scripts + * job.c (reap_children) [WINDOWS32]: Avoid recursive call to + reap_children when the argument passed to + map_windows32_error_to_string is negative or too large. + +2016-12-28 Paul Smith + + * main.c (switches): Add -E as an alias for --eval. + * make.1: Document the -E and --eval options. + * doc/make.texi: Document the -E option. + * tests/scripts/options/eval: Test the -E option and MAKEFILES. + * NEWS: Add information about the new option. + + * main.c (switches): Add --no-silent to undo -s options. + * make.1: Document the new flag. + * doc/make.texi: Document the new flag. Remove suggestions that the + .SILENT special target is deprecated or should not be used. + * tests/scripts/options/dash-s: Test the -s and --no-silent options. + * NEWS: Add information about the new option. + +2016-12-26 Martin Dorey + + * job.c (child_execute_job): [SV 49938] Avoid spurious GCC warning. + + * main.c (main): [SV 49935] Fix uninitialized variable. + +2016-12-26 Paul Smith + + [SV 40236] Handle included file open failures properly. + * read.c (eval_makefile): Set deps->error if we discovered any + error reading makefiles, and set NONEXISTENT_MTIME so we know + it needs to be rebuilt. + * main.c (main): Clean up management of makefile_mtimes. + * tests/scripts/features/include: Add open failure testcases. + + Portability changes for the test suite. + * tests/test_driver.pl: Save error strings for later comparison. + * tests/run_make_tests.pl: Create portable commands for later use. + * tests/*: Use these new variables. + + [SV 20513] Un-escaped # are not comments in function invocations + * NEWS: Document the change, as a backward-incompatible change. + * main.c (main): Add 'nocomment' to the .FEATURES variable. + * read.c (remove_comments): Skip variable references during remove. + (find_char_unquote): Fix comments for new STOPMAP support. + * tests/scripts/features/escape: Test new escape syntax. + * tests/scripts/functions/guile: Ditto. + * tests/scripts/functions/shell: Ditto. + + * main.c (main): [SV 40234] Show correct error message. + +2016-12-26 Christoph Schulz + + * main.c (switches): [SV 48809] Accept obsolete jobserver flag. + +2016-12-26 Paul Smith + + * read.c (get_next_mword): [SV 49865] Make fallthrough explicit. + + [SV 49114] Remove support for the NO_FLOAT compile flag. + * makeint.h (max_load_average): Always a double. + * main.c (max_load_average, default_load_average): Always doubles. + (switches): -l option is a "floating" format. + (decode_switches, define_makeflags): Support "floating" format. + * remake.c (f_mtime): Show time skew as double. + * rule.c (print_rule_data_base): Show percentages as double. + * Makefile.ami, README.DOS.template, SMakefile.template: Remove + references to NO_FLOAT. + * SCOPTIONS, glob/SCOPTIONS: Remove NO_FLOAT settings. + + [SV 45477] [SV 49115] Parse DOS/Windows drivespecs correctly. + * read.c (parse_file_seq) [WINDOWS32]: Only consider a colon part of + a path if it's in a valid Windows drivespec. + +2016-12-25 Paul Smith + + [SV 49116] Check potential null pointer dereference. + * w32/subproc/sub_proc.c (make_command_line): Simplify cygwin shell + check for correctness. + +2016-12-25 Jaak Ristioja + + * expand.c (variable_append): [SV 49113] Possible null ptr deref + + * w32/*/dirent.*: [SV 49111] Remove unused telldir() + +2016-12-25 Paul Smith + + Add more GCC warnings to the maintainer build. + * arscan.c: [SV 49112] Correct TEST printf() formatting. + Recommended by Jaak Ristioja + * hash.c: Correct fprintf() formatting. + * maintMakefile: Add extra GCC warning flags. + + * po/Makevars, makeint.h, debug.h: Add xgettext C format flags. + + * po/LINGUAS: Added Serbian translation. + + * README.template: Clarify some items in the README + + * doc/make.texi: [SV 48951] Fix documentation typo. + + * maintMakefile: Update default GPG ID for new key. + +2016-12-14 Paul Smith + + Resolve issues discovered by static code analysis. + * maintMakefile: Add a rule to submit code for analysis. + * configure.ac: Check for availability of the umask() function. + * output.c (output_tmpfd, output_tmpfile): Use umask on temp files. + * makeint.h (PATH_VAR): Reserve an extra character for nul bytes. + * function.c (func_error): Initialize buffer to empty string. + * job.c (child_execute_job): Verify validity of fdin. + * main.c (main): Simplify code for makefile updating algorithm. + * arscan.c (ar_scan): Verify member name length before reading. + * read.c (readline): Cast pointer arithmetic to avoid warnings. + * remake.c (update_file): Remove unreachable code. + (name_mtime): Verify symlink name length. + +2016-11-12 Eli Zaretskii + + * NEWS: Mention the extended support for -jN on MS-Windows. + +2016-11-12 Marc Ullman + + Support more than 63 jobs on MS-Windows + * job.c (start_waiting_job, load_too_high): + * w32/w32os.c (jobserver_setup, jobserver_acquire): Abstracted out + MAXIMUM_WAIT_OBJECTS. Call process_table_full instead. + * w32/include/sub_proc.h: Update and add prototypes. + * w32/subproc/sub_proc.c (GMAKE_MAXIMUM_WAIT_OBJECTS): New macro. + (process_wait_for_multiple_objects): Drop-in replacement for Windows + API WaitForMultipleOjects. + (process_wait_for_any_private): Replaced MAXIMUM_WAIT_OBJECTS with + GMAKE_MAXIMUM_WAIT_OBJECTS. + (process_table_full): Replacement for process_used_slots. + (process_used_slots): Removed, as no longer needed. + (process_table_usable_size): Returns maximum usable size of process + table. + (process_table_actual_size): Returns actual size of process table. + (process_register): Added assertion. + (process_easy): Abstracted out MAXIMUM_WAIT_OBJECTS. + +2016-10-09 Eli Zaretskii + + Only include strings.h in MinGW builds + * main.c: + * job.c: Include strings.h only if HAVE_STRINGS_H is defined. + + * config.h.W32.template (HAVE_STRINGS_H): Define only for MinGW, + as MSVC doesn't have this header. + +2016-10-06 Eli Zaretskii + + Update the Guile version tested with the MS-Windows build. + + Avoid compiler warnings with MinGW runtime 3.22.2 + * main.c: + * job.c: Include strings.h, to get the prototypes of strcasecmp + and strncasecmp with latest MinGW runtime versions. + * config.h.W32.template (HAVE_STRINGS_H): Define. + +2016-06-24 Paul Smith + + * README.W32.template: Update the build documentation. + * build_w32.bat: Fix issues with Visual Studio builds. Fix an error + that always created Debug builds. Support 32bit and 64bit builds. + + * Update to pre-release version 4.2.90. + +2016-06-10 Paul Smith + + GNU Make release 4.2.1. + +2016-06-06 Paul Smith + + * maintMakefile: TP recommends rsync for retrieving PO files. + +2016-05-31 Jeremy Devenport (tiny change) + + * main.c (main): [SV 48009] Reset stack limit for make re-exec. + +2016-05-31 Paul Smith + + [SV 47995] Ensure forced double-colon rules work with -j. + The fix for SV 44742 had a side-effect that some double-colon targets + were skipped. This happens because the "considered" facility assumed + that all targets would be visited on each walk through the dependency + graph: we used a bit for considered and toggled it on each pass; if + we didn't walk the entire graph on every pass the bit would get out + of sync. The new behavior after SV 44742 might return early without + walking the entire graph. To fix this I changed the considered value + to an integer which is monotonically increasing: it is then never + possible to incorrectly determine that a previous pass through the + graph already considered the current target. + + * filedef.h (struct file): make CONSIDERED an unsigned int. + * main.c (main): No longer need to reset CONSIDERED. + * remake.c (update_goal_chain): increment CONSIDERED rather than + inverting it between 0<->1. + (update_file_1): Reset CONSIDERED to 0 so it's re-considered. + (check_dep): Ditto. + * tests/scripts/features/double_colon: Add a regression test. + +2016-05-31 Paul Smith + + * DELETE_ON_ERROR: [SV 48061] Use "exit 1" for portability. + Reported by Joel Fredrikson + + * w32/pathstuff.c: [SV 47996] Use ISBLANK() not isblank(). + +2016-05-28 Eli Zaretskii + + Fix printing time stamps on MS-Windows + * dir.c (print_dir_data_base) [WINDOWS32]: Use %I64u format for + printing unsigned 64-bit data types, as %ull is not universally + supported. + +2016-05-27 Luke Allardyce (tiny change) + + [SV 48037] Fix MinGW build with Posix configury tools + * w32/Makefile.am (libw32_a_CPPFLAGS): Add -I$(srcdir)/glob. + +2016-05-22 Paul Smith + + GNU Make release 4.2. + +2016-05-21 Joe Crayne (tiny change) + + [SV 44742] Fix double-colon rules plus parallel builds. + * remake.c (update_file): Don't update double-colon target status + if we're still building targets. + (ftime_t): Don't propagate timestamps for double-colon targets that + we've not examined yet. + * tests/scripts/features/double_colon: Add parallel build tests. + +2016-05-21 Paul Smith + + * read.c (eval): [SV 47960] Skip record waiting files when ignoring. + * tests/scripts/features/conditionals: Test this scenario. + + Separate the GNU make load ABI from internal types. + Create an internal type "floc" and convert all users to that type. + * gnumake.h (gmk_floc): Remove the offset field from this type. + * loadapi.c (gmk_eval): Convert gmk_floc to internal floc. + +2016-05-21 Paul Eggert + + Fixes for enhanced GCC warnings. + Move function prototypes into header files and out of .c files. + Use void argument lists for functions that accept no args. + Remove unused macros. Make private functions static. Align + types with printf format characters. + +2016-05-21 Paul Smith + + Fix compile issues with Windows and VMS. + * main.c (initialize_stopchar_map): isblank() is not part of C89. + Install bits for space and tab directly. + * makeint.h: Don't define vfork; autoconf handles this for us. + * vmsjobs.c: Rename NEXT_TOKEN to V_NEXT_TOKEN to avoid conflicts. + * dir.c (print_dir_data_base): Visual Studio C doesn't have int64_t. + * w32/subproc/sub_proc.c (process_begin): Missing arg to memset(). + * build_w32.bat: Don't use obsolete Visual Studio flags. + + Allow compiling with an ISO C 1989/1990 compiler. + * posixos.c (jobserver_post_child): Use C89 for loop syntax. + * remake.c (update_goal_chain): Ditto. + * variable.c (parse_variable_definition): Ditto. + +2016-05-17 Eli Zaretskii + + [SV 47942] Avoid random crashes in subordinate programs on MS-Windows + * w32/subproc/sub_proc.c (process_begin): Zero out startInfo + before using it. Fixes crashes in Intel Fortran compiler invoked + by Make. + +2016-04-24 Eli Zaretskii + + Fix the MS-Windows MinGW build + * build_w32.bat (GccCompile): Use -std=gnu99, as some code uses + C99 features ('for' loop initial declarations). + + * dir.c (print_dir_data_base) [WINDOWS32]: Cast 'mtime' to + 'int64_t', and use %I64d to print it, to avoid compile-time + warning about printing a 'time_t' value, which could be either + a 32-bit or a 64 bit integral type. + +2016-04-23 Paul Smith + + * tests/scripts/features/output-sync: increase test timeout. + I'm getting random failures with a timeout of 10s; increase to 30s. + +2016-04-11 Paul Smith + + * NEWS: Update for pre-release + + * dep.h, makeint.h (show_goal_error): Move to makeint.h. + +2016-04-11 Paul Smith + + [SV 46433] Show recipe line offsets in line number messages. + While displaying line numbers, show the relevant line number inside + the recipe not just the first line of the entire recipe. + Sample changes suggested by Brian Vandenberg + + * gnumake.h (gmk_floc): Add an 'offset' to track the recipe offset. + * read.c (eval, eval_makefile, eval_buffer): Initialize 'offset'. + (record_files, install_pattern_rule): Ditto. + * job.c (new_job, job_next_command): Update 'offset' based on the + line of the recipe we're expanding or invoking. + (child_error): Add 'offset' when showing the line number. + * function.c (func_shell_base): Ditto. + * output.c (error, fatal): Ditto. + * NEWS: Mention the new ability. + * tests/scripts/features/errors: Check the line number on errors. + * tests/scripts/functions/warning: Check the line number on warnings. + * tests/scripts/features/output-sync, + tests/scripts/features/parallelism, tests/scripts/functions/shell, + tests/scripts/functions/error: Update line numbers. + +2016-04-09 Paul Smith + + * maintMakefile: Add a rule for storing preprocessor output. + + [SV 102] Don't show unnecessary include file errors. + Delay the generation of error messages for included files until we + are sure that we can't rebuild that included file. + * dep.h (struct dep): Don't reuse "changed"; make a separate field + to keep "flags". Get rid of dontcare and use the flag. + (struct goaldep): Create a new structure for goal prereqs + that tracks an errno value and the floc where the include happened. + Rework the structures to ensure they are supersets as expected. + In maintainer mode with GCC, use inline to get type checking. + * read.c (eval_makefile): Return a struct goaldep for the new + makefile. Ensure errno is set properly to denote a failure. + (read_all_makefiles): Switch to goaldep and check errno. + (eval): Don't show included file errors; instead remember them. + * remake.c (update_goal_chain): Set global variables to the current + goaldep we're building, and the entire chain. + (show_goal_error): Check if the current failure is a consequence + of building an included makefile and if so print an error. + (complain): Call show_goal_error() on rule failure. + * job.c (child_error): Call show_goal_error() on child error. + * main.c (main): Switch from struct dep to goaldep. + * misc.c (free_dep_chain): Not used; make into a macro. + * tests/scripts/features/include: Update and include new tests. + * tests/scripts/options/dash-B, tests/scripts/options/dash-W, + tests/scripts/options/print-directory, + tests/scripts/variables/MAKE_RESTARTS: Update known-good-output. + + * job.c (child_error): Add filename length to output length. + Reported by Dale Stimson + +2016-04-04 Paul Smith + + Preserve the real value of -jN in MAKEFLAGS using jobserver. + Previously if the jobserver was active, MAKEFLAGS would contain only + the -j option but not the number (not -j5 or whatever) so users + could not discover that value. Allow that value to be provided in + MAKEFLAGS without error but still give warnings if -jN is provided + on the command line if the jobserver is already activated. + + * NEWS: Discuss the new behavior. + * os.h, posixos.c, w32/w32os.c: Return success/failure from + jobserver_setup() and jobserver_parse_auth(). + * main.c (main): Separate the command line storage of job slots (now + in arg_job_slots) from the control storage (in job_slots). Make a + distinction between -jN flags read from MAKEFLAGS and those seen + on the command line: for the latter if the jobserver is enabled then + warn and disable it, as before. + * tests/scripts/features/jobserver: Add new testing. + +2016-04-04 Paul Smith + + * tests/run_make_tests.pl: Add file/lineno info to .run file. + + * maintMakefile: Fix logging of check-alt-config target. + + * job.c (child_execute_job): Fix $(shell...) under NO_OUTPUT_SYNC. + * main.c (decode_output_sync_flags): Use NONE for NO_OUTPUT_SYNC. + + * main.c (main): Restrict disabling debugging for MAKEFILES. + + * Makefile.am, w32/Makefile.am: Fix *os.c for Windows builds. + Original change provided by Luke Allardyce + + * make.texi: Confirm that CURDIR contains an absolute path. + + * docs/make.texi: [SV 47392] Add "Integrating make" chapter. + + Change --jobserver-fds to more generic --jobserver-auth. + * NEWS: Mention the change. + * main.c: Rename jobserver_fds variable to jobserver_auth and + --jobserver-fds option to --jobserver-auth. + * os.h, posixos.c, w32/w32os.c: Rename jobserver_parse_arg() and + jobserver_get_arg() to jobserver_parse_auth()/jobserver_get_auth(). + +2016-03-23 Paul Smith + + * tests/run_make_tests.pl: Preserve $make_command + * tests/scripts/options/dash-n: Use $make_command. This fixes + a spurious failure when running tests with valgrind enabled. + + * variable.c: Clean up some memory leaks. + + [SV 46995] Strip leading/trailing space from variable names + * makeint.h: Change MAP_SPACE to MAP_NEWLINE, and add MAP_PATHSEP + and MAP_SPACE which is now MAP_BLANK|MAP_NEWLINE. Create + NEW_TOKEN(), END_OF_TOKEN(), ISBLANK(), ISSPACE() macros. + * main.c (initialize_stopchar_map): Set MAP_NEWLINE only for + newline characters. + * Convert all uses of isblank() and isspace() to macros. + * Examine all uses of isblank() (doesn't accept newlines) and + change them wherever possible to ISSPACE() (does accept newlines). + * function.c (func_foreach): Strip leading/trailing space. + * variable.c (parse_variable_definition): Clean up. + * tests/scripts/functions/foreach: Test settings and errors. + * tests/scripts/functions/call: Rewrite to new-style. + * tests/scripts/misc/bs-nl: Add many more tests for newlines. + +2016-03-21 Paul Smith + + * function.c (func_file): Support reading from files. + * NEWS: Add information about reading files. + * make.texi (File Function): Describe reading files. + * tests/scripts/functions/file: Test new features for $(file ...) + +2016-03-20 Paul Smith + + * doc/make.texi (Setting Variables): Fix typo (add comma). + + * job.c (child_error): Combine file info with error message. + * tests/scripts/...: Update error message matches. + +2016-03-19 Paul Smith + + * variable.c: Align type of variable_changenum. + +2016-03-13 Paul Smith + + [SV 45728] Detect changes in .VARIABLES more accurately. + For performance, we only recompute .VARIABLES when (a) it's expanded + and (b) when its value will change from a previous expansion. To + determine (b) we were checking the number of entries in the hash + table which used to work until we started undefining entries: now if + you undefine and redefine the same number of entries in between + expanding .VARIABLES, it doesn't detect any change. Instead, keep + an increasing change number. + * variables.c: Add variable_changenum. + (define_variable_in_set, merge_variable_sets): Increment + variable_changenum if adding a new variable to the global set. + (undefine_variable_in_set): Increment variable_changenum if + undefining a variable from the global set. + (lookup_special_var): Test variable_changenum not the hash table. + * tests/scripts/variables/special: Test undefining variables. + + * main.c(main): Disable output sync without parallel builds. + + [SV 46581] Pre-define .LOADED to avoid warnings. + * main.c (main): Pre-define .LOADED as a default-level variable. + * load.c (load_file): Set the value rather than append it. Avoid + adding an extra initial whitespace. + * tests/scripts/features/load: Run with --warn-undefined-variables. + +2016-03-13 Paul Smith + + [SV 44555] Use vfork() instead of fork() where available. + Testing has shown that vfork() is actually significantly + more efficient on systems where it's supported, even for + copy-on-write implementations. If make is big enough, + duplicating the page tables is significant overhead. + + * configure.ac: Check for fork/vfork. + * makeint.h: Include vfork.h and set up #define for it. + * os.h, posixos.c (get_bad_stdin): For children who can't use + the normal stdin file descriptor, get a broken one. + * job.c (start_job_command): Avoid so many ifdefs and simplify + the invocation of child_execute_job() + (child_execute_job): move the fork operation here so it can + return early for the parent process. Switch to use vfork(). + * function.c (func_shell_base): Use new child_execute_job() and + simplify ifdefs. + * job.h, main.c, remote-cstms.c, vmsjobs.c, w32os.c: Update + declarations and calls. + +2016-03-09 Paul Smith + + * job.c (exec_command): [SV 47365] Show error on exec failure. + +2016-03-08 Paul Smith + + [SV 46261] Use pselect() for jobserver where supported. + * Makefile.am, configure.ac: Check for pselect() and sys/select.h. + * main.c (main): Block SIGCHLD if we have pselect() support. + * posixos.c (jobserver_acquire): If we support pselect() then use + it to query the jobserver pipe, while also listening for SIGCHLD. + Also pselect() supports a timeout so avoid alarm() calls. + + Clean up some compiler warnings. + * commands.c, commands.h: Use unsigned char for flags. + * dir.c: Use time_t and size_t, and char for a boolean value. + * job.c: Use unsigned and char. + * read.c: Return a signed type since -1 is a valid return code. + + Extract jobserver implementation into OS-specific files. + * os.h, posixos.c, w32/w32os.c: New files implementing jobserver. + * job.c, job.h, main.c, makeint.h: Move content to new files. + * w32/include/sub_proc.h, w32/subproc/sub_proc.c: Ditto. + * Makefile.am: Build and package OS-specific files. + * build_w32.bat, make_msvc_net2003.vcproj, README.W32.template: + Update for new files, and clean up the build. + * POTFILES.in, maintMakefile, NMakefile.template: Ditto. + * w32/subproc/build.bat: Delete as unused. + + [SV 46261] Add more EINTRLOOP wrappers. + This cannot be a perfect solution because there are always other + possible places EINTR can happen, including external libraries + such as gettext, Guile etc. + +2016-02-29 Paul Smith + + * strcache.c (add_hugestring): [SV 46832] Support huge strings. + The strcache was limited to strings of length 65535 or less, + because the length is kept in an unsigned short. To support + huge strings add a new simple linked list, which we don't try + to hash. + + * strcache.c (add_string): [SV 47071] Handle huge initial string. + If the very first string added to the string cache is more than + half the maximum size, we failed when moving the only strcache + buffer to the full list. + + [SV 47151] Exit with 1 when checking recursive make -q + * job.h (struct child): New bit to mark recursive command lines. + * job.c (start_job_command): Set the recursive command line bit. + (reap_children): If the child is a recursive command and it exits + with 1 during question mode, don't print an error and exit with 1. + * tests/scripts/options/dash-q: Add a regression test. + + * main.c (define_makeflags): Add parens to avoid GCC warning. + +2016-02-29 Paul Smith + + * tests/scripts/features/archives: Handle deterministic archives. + Newer versions of binutils allow ar to be compiled to generate + "deterministic archives" by default: in this mode no timestamp + information is generated in the static archive, which utterly + breaks GNU make's archive updating capability. Debian and Ubuntu + have turned this feature on by default in their distributions + which causes the regression tests to fail. + + Update the regression tests to check for the availability of the + "U" option to ar which disables deterministic archives and allows + GNU make's archive support to work properly again. + +2016-02-28 Paul Smith + + Update Copyright statements for the new year. + + * doc/make.texi: [SV 47163] Fix typo in 'ifdef' documentation. + + * doc/make.texi: [SV 35455] Add more uses for Empty Recipes. + +2015-11-07 Gisle Vanem + + Fix diagnostics on MS-Windows when environment is too large + * w32/subproc/sub_proc.c (process_begin): Fix test of the error + cause when the environment block is too large. + +2015-10-27 Eli Zaretskii + + Update README.W32.template + * README.W32.template: Update for latest developments. Make it + clear we don't recommend using HAVE_CASE_INSENSITIVE_FS in + general. + + [SV 46304] Don't invoke C++ compiler on C sources on MS-Windows + * default.c (default_variables) [HAVE_CASE_INSENSITIVE_FS]: Make + COMPILE.C and LINK.C be synonyms for COMPILE.c and LINK.c, + respectively. + +2015-09-23 Eli Zaretskii + + [SV 45838] When invoking w32 programs, don't use free'd memory. + * w32/subproc/sub_proc.c (process_begin): Freeing argv[0] makes + the other argv[i] pointers invalid, so need to allocate a new + array and copy argv[i] for i != 0 first, replacing argv[0] with + the batch file name, before we can free argv[0]. + +2015-07-13 Paul Smith + + * implicit.c (pattern_search): [SV 43677] Mark files secondary. + In order to fix SV 12267 we were marking the prerequisites of + implicit (pattern) targets that existed elsewhere in the makefile + as precious to keep them from being deleted as intermediate files. + However this also keeps them from being deleted on error. Instead + mark them as secondary. + * tests/scripts/targets/DELETE_ON_ERROR: Test DELETE_ON_ERROR. + +2015-07-12 Paul Smith + + [SV 28092] Preserve the exit status of the $(shell...) function. + Add a new variable .SHELLSTATUS which holds the exit status of the + last-invoked shell function or != assignment. + + * NEWS, doc/make.texi: Document the change. + * function.c (shell_completed, msdos_openpipe, func_shell_base): Add + shell_completed() to handle the completion of the shell, by setting + .SHELLSTATUS. Call it where needed. + * job.c (child_handler): Call shell_completed(). + * tests/scripts/functions/shell: Add tests for .SHELLSTATUS. + +2015-07-12 Paul Smith + + * tests/scripts/misc/fopen-fail: [SV 42390] Increase test timeout. + * Makefile.am (check-regression): Force ulimit -n for fopen-fail test. + + * job.c: [SV 43936] Check sigaction for error return. + + [SV 45049] Check for '$' being the last character in a string. + * expand.c (variable_expand_string): Add a single '$' if '$' ends the + string. + * read.c (find_char_unquote, get_next_mword): Stop if '$' ends the + string. + * variable.c (parse_variable_definition): Ditto. + + * read.c (unescape_char): [SV 45050] Handle final backslashes. + If the last thing in the string to be unescaped is a backslash, + stop without reading beyond the end of the string. + + * strcache.c: [SV 45275] Handle very long strings. + Our previous behavior for handling too-long strings involved + increasing the size of the default string cache buffer, but the + implementation was incomplete. Instead, create a one-off large + string cache entry and add it directly to the full cache list + without changing the default buffer size. + +2015-07-12 Duncan Moore (tiny change) + + * job.c [RISCOS]: Remove logic that is no longer required. + +2015-07-12 Paul Smith + + * remake.c (update_file): [SV 44742] Keep double-colon rule status. + Fix suggested by Everett Boyer + +2015-07-10 James Johnston (tiny change) + + [SVN 45515] Check exit status of sub-make in subproc.bat + * subproc.bat: Exit when sub-make invocation fails. + +2015-07-10 Eli Zaretskii + + [SV 45515] Ignore Windows-specific build artifacts + * .gitignore: Ignore *.exe, *.dll.a, *.lib, *pdb, and a few more MSVC + specific artifacts. + Suggested by James Johnston + +2015-02-28 Eli Zaretskii + + [SV 44348] Fix handling of shell widlcards on MS-Windows. + * job.c (construct_command_argv_internal): If shell wildcard + characters are found inside a string quoted with "..", give up the + fast route and go through the shell. Fixes Savannah bug #44348. + +2015-01-27 John Malmberg + + Fix bs-nl handling, exit and Environment for VMS. + This fix required a complete rewrite of the command parser vmsjobs.c + child_execute_job. The old parser had too many incorrect assumptions + about DCL commands and could not be repaired to extended. + + The parser now more closely parses VMS commands and handles quoted + commands and redirection. Command File mode has been improved, but can + not fully support bs-nl syntax. + + VMS Unix shell simulation has been improved. + + * commands.c: vms_comma_separator is now a run-time setting. + * function.c: vms_comma_separator is now a run-time setting. + * function.c(func_basename_dir) now reports "[]" or "./" based on + VMS crtl runtime setting. + * job.c(start_job_command): VMS Handle empty commands propery. + * main.c: Add VMS environment variables for run-time settings. + * vms_legacy_behavior - Force older behavior. + * vms_comma_separator - Commas or spaces for separators. + * vms_unix_simulation - Enhanced Posix shell simulation features. + * Detect if VMS CRTL is set to report Unix paths instead of VMS. + * ':' and '>' are also MAP_DIRSEP on VMS. + * makeint.h: Add VMS run-time option variables. + * readme.vms: Update to current behavior. + * variable.c(define_variable_in_set): Fix VMS Environment variable + lookup. + * variable.c(define_automatic_variables): Remove some VMS specific + automatic variables and use the Unix ones instead. + * vms_export_symbol.c: Set max symbol size correctly. + * vmsjobs.c: child_execute_job() complete rewrite of VMS comand + parsing. + * vmsjobs.c(build_vms_cmd): VMS commmand building with shell simulation. + +2014-12-27 Christian Boos (tiny change) + + Fix $(shell) on hosts with 64-bit pid_t. + * function.c: Use pid_t for shell_function_pid. + * job.c: Likewise. + +2014-10-20 Paul Smith + + * main.c (main): [SV 43434] Handle NULL returns from ttyname(). + +2014-10-20 Benedikt Morbach (tiny change) + + * tests/scripts/features/archives: [SV 43405] override AR variable. + +2014-10-20 John Malmberg + + Fix VMS implicit rules and UNIX paths. + This fixes VMS implicit rules and UNIX style pathname handling. + It also fixes some of the VMS style pathname handling, more work + there will be needed later. + TODO: There are other case insensitive platforms besides VMS. + We need to find out why there is extra VMS code for this. This + indicates either the extra VMS code is not needed, or the case + insensitive support may not be complete on the other case + insensitive platforms. + + * default.c: Add missing definitions to default_suffix_rules[] and + default_variables[]. + TODO: As it is important that VMS DCL mode definitions must always + be a superset of UNIX definitions, a better way of maintaining the + VMS DCL mode definitions should be devised. + * dir.c (downcase_inplace): Add a reentrant downcase() routine. + Add future support for VMS 8.2+ _USE_STD_STAT macro which will + disable a lot of VMS specific code from compiling. + (dir_file_exists_p): vmsify filename only if directory name has VMS + directory delimiters. + (file_exists_p): Handle both VMS and UNIX directories. + (file_impossible): Handle both VMS and Unix directories. Track + whether a VMS format path is needed for the return value. + * file.c (lookup_file): Check if vmsify is needed; handle UNIX paths. + * implicit.c (pattern_search): Enable UNIX paths. + * read.c (parse_file_seq): Enable UNIX paths. + * remake.c (f_mtime): Fix gpath_search call for VMS paths. + * rule.c (count_implicit_rule): Enable UNIX paths, Fix VMS paths. + * vpath.c (selective_vpath_search): Enable UNIX paths. + +2014-10-20 John Malmberg + + Update README.VMS and move news to the NEWS file + * NEWS: Merge in VMS history. + * README.VMS: Remove VMS history, document current behavior and + known issues. + +2014-10-20 John Malmberg + + [SV 41758]: Fix archive support for VMS. + Upated to match change to run_make_tests and some future fixes to + make on VMS. + + * arscan.c: Use ANSI compatible pragmas instead of VAX C extensions. + * tests/scripts/features/archives: Fix tests to use VMS rules and + answers when running on VMS and using DCL as a shell. + * tests/scripts/features/vpath3: Fix epected answer on test when + run on VMS. + * tests/scripts/vms/library: (New) Test the VMS library rules that + are not tested by existing tests. + +2014-10-20 John Malmberg + + [SV 42447]: VMS simulate exporting symbols + This also includes fixing the most of the exit handling code for VMS. + + Self tests: + Previously about 94 Tests in 36 categories fail. + Now about 45 tests in 22 categories fail. + + Because some tests do not properly clean up, the number of tests that + fail can vary by one or two test cases between consecutive runs. + + * Makefile.am: Add new VMS files. + * job.c: add prototype for vms_strsignal(). + * job.c: (child_error): Remove VMS specific code as no longer needed. + * job.c: (reap_children): The VMS specific code was setting the + status to 0 instead of setting it to the proper exit status. + * job.h: Add vms_launch_status to struct child. + * main.c: (main): Use environment variables for options to use MCR + * instead of a foreign command, and to always use command files for + subprocesses. + For VMS use (set_program_name) routine which is common to ports of + other GNU packages to VMS to set the program name used internally. + Use (vms_putenv_symbol) to set up symbols to be visible in child + programs, including recursive make launched by execve() + Start of Bash shell detection code for VMS. + * makefile.com: Need nested_include=none for building on VMS search + lists. Add vms_progname, vms_exit, and vms_export_symbol. + * makefile.vms: Need nested_include=none for building on VMS search + lists. Add vms_progname, vms_exit, vms_export_symbol. + * makeint.h: Make sure non-standard "VMS" macro is defined. Add + prototypes for new VMS routines. Remove VMS-specific failure codes. + * vmsjobs.c: Add VMS POSIX exit code constants. + (_is_unixy_shell): Detect Bash shell. + (vms_strsignal): simulate strsignal() on VMS. + (vmsHandleChildTerm): fix to properly report failed LIB$SPAWN() exit + status codes. Remove code that duplicated code in job.c. + (child_execute_job): Export environment symbols before spawning a + child and restore afterward unless option to use command files for + subprocesses is set. Improve handling of UNIX null commands ":". + * vms_exit.c: Provides vms_exit() to detect if an exit code is UNIX + or VMS, and converts the UNIX code into a VMS exit code. + * vms_export_symbol.c: Routines to create DCL symbols that work like + shell aliases or exported shell symbols and clean them up on exit. + * vms_export_symbol_test.com: Unit test for vms_export_symbol.c + * vms_progname.c: New file: VMS specific replace for progname.c that + is used in some GNU projects. + +2014-10-20 John Malmberg + + Set up for running tests on VMS. + * run_make_tests.pl: set $port_type to be 'VMS-DCL' when the test are + run from the VMS DCL Interpreter. When the tests are run from GNV + on VMS, the $port_type will be 'UNIX'. + * run_make_tests.com: VMS search list support. This is needed for + using a search list such as prj_root = lcl_root:,vms_root:,src_root: + for building and testing. + +2014-10-09 Paul Smith + + * configure.ac, NEWS, README.git: Set up for the next release. + +2014-10-05 Paul Smith + + GNU Make release 4.1. + +2014-10-02 Eli Zaretskii + + Fix Cygwin compilation error. + * job.c (construct_command_argv_internal) [HAVE_DOS_PATHS]: Fix + initializer for sh_chars_sh. + Reported by Denis Excoffier. + +2014-10-01 Gisle Vanem + + Fix last commit. + + * makeint.h (ftruncate): Define also for __WATCOMC__. + +2014-10-01 Eli Zaretskii + + Avoid compilation warnings. + * main.c (find_and_set_default_shell, main) [WINDOWS32]: Declare + variables 'const char *' to avoid compiler warnings. + * job.c (construct_command_argv_internal) [!NDEBUG]: Declare 'end' + and set it only if NDEBUG is not defined, to avoid compiler + warnings. + + Treat redirection of standard handles on Windows as it is done on Unix. + * job.c (start_job_command) [WINDOWS32]: Compute outfd and errfd + as on Posix platforms, and pass the results to process_easy. + * function.c (windows32_openpipe) [WINDOWS32]: Accept an + additional argument ERRFD and use it for redirecting the standard + error handle passed to the subprocess. + (func_shell_base) [WINDOWS32]: Pass the computed errfd to + windows32_openpipe. + +2014-09-30 Paul Smith + + Update Copyright statements for 2014. + + * tests/scripts/features/load: Avoid unused variable warnings. + + * loadapi.c (gmk_eval): Use C90 syntax. + +2014-09-30 Hartmut Becker + + * job.c: fix make action continuation lines. + * vmsjobs.c: fix writing DCL command files when trimming (white + spaces and $ signs) especially after a split (command continuation). + +2014-09-15 Bernhard Reutner-Fischer (tiny change) + + * configure.ac: Fix spacing in helptext of customs + +2014-09-15 Eli Zaretskii + + Support MAKE_TERMOUT and MAKE_TERMERR on MS-Windows. + * w32/compat/posixfcn.c (isatty, ttyname): New functions. + * config.h.W32.template (HAVE_TTYNAME): Define. Add a prototype + for ttyname. + +2014-09-15 Paul Smith + + * loadapi.c (gmk_eval): [SV 43221] Preserve var buff content for eval. + + * main.c, NEWS, doc/make.text: Rename MAKE_TTY* to MAKE_TERM* + +2014-09-14 Paul Smith + + * main.c (main): Set MAKE_TTYOUT and MAKE_TTYERR. + * configure.ac: Test for isatty() and ttyname() + * makeint.h: provide a substitute for ttyname() if it's not available. + * config.ami.template, config.h-vms.template, config.h.W32.template: + define/undefine HAVE_ISATTY/HAVE_TTYNAME macros. + * NEWS, doc/make.texi: Document these new variables. + +2014-09-07 Paul Smith + + * tests/config-flags.pm.in, tests/scripts/features/archives: [SV 43046] + Use the "ar" program detected by configure when running the test suite. + + * doc/make.texi: Clarify implicit rule lookup of phony targets + Reported by Frank Heckenbach + +2014-09-07 Hartmut Becker + + Fix and enhance VMS library support. + * ar.c: fix VMS library search for members, which do not have + suffixes, aka filename extensions. + * arscan.c: fix time conversion and library callback routines. + * default.c: more suffixes and automatically create the VMS library + if it doesn't exists. + + Enhance VMS exporting make environment variables. + * config.h-vms.template: add feature macro USE_DCL_COM_FILE to always + write a DCL command file, enabled by default. + * vmsjobs.c: with USE_DCL_COM_FILE enabled write make variables as DCL + symbol assignments into the command file. This enables printing + directory and make level info for recursive use of make. This also + enables forced DCL symbol substitution in the actions. + + Fix VMS automatic variable expansion + * function.c: add VMS code to func_notdir_suffix and func_basename_dir + to work on comma separated lists; this fixes the expansion of + $(^D), $(+D) and the F variants for VMS. + + * main.c [VMS]: Say that parallel jobs (-j) are not supported on VMS + + Enhance/fix VMS ONESHELL implementation and command execution + * job.c, vmsjobs.c: fix some double quote and new line handling; + implement ONESHELL with writing multiple lines into one DCL command + procedure; in ONESHELL allow VMS/make internal redirection only on the + first line; fix the created DCL command procedure, which didn't abort + on errors; return correct exit status from the DCL command procedure; + preserve current procedure verification; make the generated command + procedure more robust. + + Enhance/fix VMS setting of program name, MAKE/MAKE_COMMAND variables + * default.c, main.c, makeint.h, vmsfunctions.c: prefix argv[0] with + "mcr " for MAKE/MAKE_COMMAND and set the program name to the image + filename (without the .exe;version) + * vmsfunctions.c: remove obsolete code + * vmsify: use xmalloc + + Enhance/fix VMS exit code handling. + * commands.c, function.c, hash.c, job.c, main.c, output.c: + use MAKE exit codes. + * makeint.h: encode make exit codes so that they are VMS compatible. + * job.c: check child exit code for VMS style exit codes. + * vmsjobs.c: save and return VMS style exit code. + + Enhance/fix VMS multi-line support. + * job.c: split the command line at a newline. + * default.c, vmsjobs.c: change ECHO variable to a pseudo builtin, + which ensures that the VMS/DCL ECHO ("write sys$output") is used + and is correctly quoted. + * vmsjobs.c: remove unused builtin 'rm'. + + * config_flags_pm.com, [RENAMED test_make.com] run_make_tests.com: + Moved into tests directory. + + Enhance/fix VMS build environment + * config.h-vms.template: make sure the CRTL version is known + * makefile.com: always compile/link the guile module, remove VAXCRTL + parameter, new LIST parameter + * makefile.vms: always compile/link the guile module, use more + complete dependencies + * prepare_vms.com: helper to create a VMS config file when building + from a snapshot of the repository + +2014-09-07 Paul Smith + + * configure.ac, maintMakefile, w32/Makefile.am: Fix autotools issues. + Reported by Paul Eggert + +2014-08-30 Eli Zaretskii + + Change the order of "makefile" and "Makefile" to match the manual. + + Fix regression with "makefile" not being found on MS-Windows. + * read.c (read_all_makefiles) [WINDOWS32]: Recognize "makefile", + all-lowercase, as a makefile. Reported by Michael Waeber + . + +2014-07-16 Eli Zaretskii + + Fix compilation on MS-Windows. + * makeint.h [WINDOWS32]: Don't declare 'program' as 'const char *', + since it is modified in 'main'. + +2014-07-12 Eli Zaretskii + + [SV 42695] Fix compilation error on MS-Windows. + * main.c [WINDOWS32]: Don't declare 'program' as 'const char *', + since it is modified in 'main'. + +2014-07-12 Jonny Grant (tiny change) + + Fix defalt_makefiles[] for MS-Windows. + * read.c (read_all_makefiles) [WINDOWS32]: Remove the redundant + "makefile" and add "makefile.mak". + +2014-07-07 Fredrik Fornwall (tiny change) + + * arscan.c [ANDROID]: Android has no ar.h but supports archives. + +2014-07-07 Paul Smith + + * read.c (eval): [SV 41677] Correct test for TAB vs. 8 spaces. + +2014-07-07 Piotr Jaroszynski (tiny change) + + * output.c (pump_from_tmp): [SV 42378] Flush the output file regularly. + +2014-07-07 John Malmberg + + Update the regression test harness to support VMS. + * config_flags_pm.com, test_make.com: set up and run the regression + test environment on VMS. + * tests/run_make_tests.pl [VMS]: Use an alternate rmdir() + implementation on VMS. + (run_make_with_options) [VMS]: Provide VMS-specific quoting and shell + invocations. + (set_more_defaults) [VMS]: Set default values when running on VMS. + * tests/test_driver.pl (vms_get_process_logicals) [VMS]: Retrieve the + proper values from %ENV on VMS. + (resetENV) [VMS]: Use it. + (toplevel) [VMS]: Fix a bug with opendir() on some logical_devices. + (compare_output) [VMS]: Convert VMS test output to a "standard" format. + (_run_command) [VMS]: Handle signals and exit codes the VMS way. + (remove_directory_tree_inner) [VMS]: Unlink all versions of the file. + +2014-07-07 Paul Smith + + * various: Assume ISO C89-compliant free() implementation. + + * maintMakefile, various: Improve constification of the codebase. + + [SV 41983] Support omitting the text argument to $(file ...) + Reported by Tim Murphy + * function.c (func_file): Only write TEXT if it is not NULL. + * NEWS, doc/make.texi: Document the new feature + * tests/scripts/functions/file: Verify that the no-text version of + $(file ...) works and doesn't add a newline. + +2014-05-13 Jacques Germishuys + + NMakefile.template ($(OUTDIR)/posixfcn.obj): Fix a typo. + +2014-05-01 Paul Smith + + [SV 42249] Propagate correct rule status results. + * remake.c (update_file, update_file_1, check_dep): Return an enum + update_status value instead of an int, and keep the highest value we + find as we walk the graph so that the ultimate status is correct. + * tests/scripts/options/dash-q: Add a test for updating prerequisites. + +2014-02-08 Paul Smith + + * Rename MAP_PATHSEP to MAP_DIRSEP. + + * configure.ac: Fixup for newer autoconf/automake + +2014-02-08 Ray Donnelly (tiny change) + + * output.c: Ensure space for final nul byte in fmtbuf. + +2014-02-07 Gisle Vanem (tiny change) + + Improve error reporting in the Windows port when env size is too large. + w32/subproc/misc.c (arr2envblk): Compute and return the size of + the environment passed to child process. + + w32/subproc/sub_proc.c (process_begin): If the call to + CreateProcess failed with EINVAL, and the required environment + size was larger than 32KB, assume it's a Windows XP limitation, + and display an error message to that effect. + + w32/subproc/proc.h (arr2envblk): Update prototype. + +2014-02-01 Paul Smith + + * job.c (set_child_handler_action_flags): [SV 41341] + Ensure signal handler is in place before alarm(1). + +2014-01-20 Alan Hourihane (tiny change) + + * configure.ac: [SV 40790] Fix load autoconf variables. + +2014-01-17 Pavel Fedin (tiny change) + + Allow the EMX build to use output_sync. + job.c (start_job_command): Move the child output diversion out + of non-EMX branch. + [__EMX__]: Don't use fixed FD_STDOUT and FD_STDERR in the call to + child_execute_job. + +2014-01-12 Paul Smith + + * commands.c: [SV 40789] Remove unneeded header dlfcn.h + + * main.c (die): Close output_context AND make_sync. + die() can be invoked inside a separate output_context, if the + $(error ...) function is expanded as part of a recipe. + +2014-01-11 Pavel Fedin (tiny change) + + Fix .LIBPATTERNS for MS-Windows builds. + default.c (.LIBPATTERNS) [__CYGWIN__ || WINDOWS32]: Provide + library patterns for MS-Windows. + +2013-11-27 Paul Smith + + * w32/*: Remove TABs from the source code. + I know whitespace commits are annoying, but having these TABs is + causing me to miss things when I search through the code. This + doesn't try to change the w32 code to meet GNU coding standards. + + * main.c (decode_env_switches): Ensure we have enough space. + Reported (with patch) by Gerte Hoogewerf + +2013-11-27 Stephan T. Lavavej (tiny change) + + Solve some Windows build issues. + * main.c (main): Use ONS(), not OSN(). + (prepare_mutex_handle_string) [WINDOWS32]: Use %Ix formatting to + support both 32bit and 64bit systems. + * job.c (free_child, new_job): Use ONS(), not OSN(). + * w32/subproc/w32err.c (map_windws32_error_to_string): Use O() when + calling fatal(). + +2013-11-24 Paul Smith + + * features/loadapi (test_expand): Allocate memory for the nul byte. + + * load.c (load_file): Reset the name length minus the symbol. + + * read.c (unescape_char): Use memmove() for overlapping memory. + + Fix memory leak during environment option decoding. + * main.c (decode_switches): Always make a copy of option arguments. + (decode_env_switches): Use a stack buffer to convert environment + switches for parsing. + + [SV 40226] Add a new type of switch: single-string options + * main.c (struct command_switch): Change the "string" types to "strlist" + and make "string" be a single-valued string instead. + (output_sync_option, jobserver_fds, sync_mutex): Change to string type. + (decode_output_sync_flags): Handle single strings instead of lists. + (prepare_mutex_handle_string): Ditto. + (main): Ditto. + (clean_jobserver): Ditto. + (init_switches): Handle the new type. + (decode_switches): Ditto. + (define_makeflags): Ditto. + +2013-11-23 Daniel Richard G (tiny change) + + * load.c: [SV 40515] Define RTLD_GLOBAL if not set. + +2013-11-23 Paul Smith + + [SV 40361] Don't use vsnprintf(), which is an ISO C99 function. + * output.c (error, fatal, message): Take an extra argument specifying + how many bytes are used by the formatted arguments. + (get_buffer): New function that allocates the requested buffer size. + Remove msc_vsnprintf(), vfmtconcat(), and fmtconcat() as unneeded. + * makeint.h: Declare various helper macros for generating output. + * *.c: Change all error(), fatal(), message() calls to use the macros, + or pass the extra length argument directly. + +2013-10-27 Paul Smith + + * makeint.h (STOP_SET): [SV 40371] Cast to unsigned char. + * tests/scripts/misc/utf8: Test variable names with characters >127. + Fix suggested by Robert Bogomip + +2013-10-24 Gerte Hoogewerf + + Fix MS Visual Studio NET2003 build. + * make_msvc_net2003.vcproj: Do not exclude guile.c from compilation. + +2013-10-23 Christian Boos + + Fix SV bug #40227 with respect to stack size set for the MSVC build. + * NMakefile.template (/STACK): Increase to 0x400000, mainly for + the 64-bit builds. Fixes SV bug #40227. + (guile): Uncomment. + +2013-10-23 Eli Zaretskii + + Fix the MS-Windows build: now guile.c must always be compiled in. + * build_w32.bat: Always compile guile.c and link against guile.o. + Reported by Alexey Pavlov . + + * makeint.h (guile_gmake_setup): Define prototype unconditionally, + to avoid compiler warnings. + +2013-10-22 Eli Zaretskii + + Fix Savannah bug #31150 with failures due to setting window title. + * sub_proc.c (process_begin): Don't set startInfo.lpTitle, it + reportedly causes SV bug #31150, and according to MSDN it's a + no-no. + + Fix Savannah bug 40241 with Unixy file names as commands to MSYS shell. + * sub_proc.c: Include filedef.h and variable.h. + (process_begin): If exec_path was not found, but its first + character is '/', assume there's some shell magic, and invoke the + command through '$(SHELL) -c "COMMAND"'. Fixes SV bug#40241. + (make_command_line): Kludgey feature: if full_exec_path is "-c", + assume that argv[0] is not to be skipped, as it holds the command + string to be passed to the shell. + +2013-10-20 Paul Smith + + * glob.c (glob) [SV 18123]: Cherry-pick glibc fix + Apply commit a471e96a5352a5f0bde6d32dd36d33524811a2b1 from + git://sourceware.org/git/glibc.git to fix + https://sourceware.org/bugzilla/show_bug.cgi?id=10278 + + * read.c (record_files): [SV 33034] Change fatal() to error() + Allows deprecated syntax. However we don't guarantee this syntax + will continue to be legal in the future. + Change suggested by David Boyce + + * README.git: Add some missing release steps. + +2013-10-19 Paul Smith + + [SV 40240] Use configure info to build load test shared libs + * tests/config-flags.pm.in: A new file containing variable assignments + for the test suite; these variables are set by configure to contain + the values detected there for compilers, flags, etc. + * tests/run_make_tests.pl: Require the config-flags.pm file + * tests/scripts/features/load, tests/scripts/features/loadapi: Use the + configure-provided values when building the shared test library. + * configure.ac: Replace tests/config-flags.pm.in + * Makefile.am: Make sure tests/config-flags.pm is up to date + + * maintMakefile (checkcfg.%): Add testing of build.sh + + [SV 40254] Modify build.sh to work properly with Guile support. + * guile.c (guile_gmake_setup) [HAVE_GUILE]: Define a stub function + when Guile support is not enabled. + * main.c (main) [HAVE_GUILE]: Always invoke guile_gmake_setup(). + * Makefile.am: Make guile.c standard, not optional. + * build.template: Add the Guile compiler and linker flags. + + * maintMakefile: Accept variable overrides from the environment. + + * NEWS: Fix version so we can build a distfile. + + * read.c (eval): Avoid GCC warning to add braces. + + * GNUMAKEFLAGS: Remove -O so it passes in NO_OUTPUT_SYNC mode. + +2013-10-18 Christian Boos + + Fix initialization of stringlist variables for jobserver_fds and sync_mutex. + (tiny change) + + main.c (prepare_mutex_handle_string, main): Initialize + stringlist variables with at least 2 members, as one member is not + currently supported. + +2013-10-18 Eli Zaretskii + + Fix MinGW64 problem with non-compliant vsnprintf. + makeint.h (__USE_MINGW_ANSI_STDIO) [__MINGW64_VERSION_MAJOR]: + Define for MinGW64, to force it to use an ANSI-compliant + implementation of vsnprintf. Reported by Christian Boos + . + + Fix the MSVC build on MS-Windows. + output.c (vsnprintf) [_MSC_VER]: Define, instead of defining + snprintf, which isn't used. Reported by Christian Boos + . + NMakefile.template (OBJS): Add load.obj and posixfcn.obj. + ($(OUTDIR)/pathstuff.obj): New dependency. + Suggested by Christian Boos . + +2013-10-13 Paul Smith + + [SV 40139] Modify "missing separator" for better translation + + Add support for updating the GNU make web pages. + Add makefile rules for updating the http://www.gnu.org/software/make + web pages, including the online GNU make manual. + + Convert to auto-generated ChangeLog files. + Rename existing ChangeLog files so they won't be distributed. + Add targets to maintMakefile to generate ChangeLog from the Git + repository. This will require a version of gnulib be available. + Because ChangeLog is auto-generated, we have to switch our + automake mode to "foreign" or it will complain and fail. + + Set up for the next release. diff --git a/local/recipes/dev/gnu-make/source/INSTALL b/local/recipes/dev/gnu-make/source/INSTALL new file mode 100644 index 0000000000..a093a3644b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/INSTALL @@ -0,0 +1,368 @@ +Installation Instructions +************************* + + Copyright (C) 1994-1996, 1999-2002, 2004-2017, 2020-2022 Free +Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell command './configure && make && make install' +should configure, build, and install this package. The following +more-detailed instructions are generic; see the 'README' file for +instructions specific to this package. Some packages provide this +'INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The 'configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a 'Makefile' in each directory of the package. +It may also create one or more '.h' files containing system-dependent +definitions. Finally, it creates a shell script 'config.status' that +you can run in the future to recreate the current configuration, and a +file 'config.log' containing compiler output (useful mainly for +debugging 'configure'). + + It can also use an optional file (typically called 'config.cache' and +enabled with '--cache-file=config.cache' or simply '-C') that saves the +results of its tests to speed up reconfiguring. Caching is disabled by +default to prevent problems with accidental use of stale cache files. + + If you need to do unusual things to compile the package, please try +to figure out how 'configure' could check whether to do them, and mail +diffs or instructions to the address given in the 'README' so they can +be considered for the next release. If you are using the cache, and at +some point 'config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file 'configure.ac' (or 'configure.in') is used to create +'configure' by a program called 'autoconf'. You need 'configure.ac' if +you want to change it or regenerate 'configure' using a newer version of +'autoconf'. + + The simplest way to compile this package is: + + 1. 'cd' to the directory containing the package's source code and type + './configure' to configure the package for your system. + + Running 'configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type 'make' to compile the package. + + 3. Optionally, type 'make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type 'make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the 'make install' phase executed with root + privileges. + + 5. Optionally, type 'make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior 'make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing 'make clean'. To also remove the + files that 'configure' created (so you can compile the package for + a different kind of computer), type 'make distclean'. There is + also a 'make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type 'make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide 'make + distcheck', which can by used by developers to test that all other + targets like 'make install' and 'make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the 'configure' script does not know about. Run './configure --help' +for details on some of the pertinent environment variables. + + You can give 'configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here is +an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU 'make'. 'cd' to the +directory where you want the object files and executables to go and run +the 'configure' script. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. This is known +as a "VPATH" build. + + With a non-GNU 'make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use 'make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple '-arch' options to the +compiler but only a single '-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the 'lipo' tool if you have problems. + +Installation Names +================== + + By default, 'make install' installs the package's commands under +'/usr/local/bin', include files under '/usr/local/include', etc. You +can specify an installation prefix other than '/usr/local' by giving +'configure' the option '--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option '--exec-prefix=PREFIX' to 'configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like '--bindir=DIR' to specify different values for particular +kinds of files. Run 'configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the default +for these options is expressed in terms of '${prefix}', so that +specifying just '--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to 'configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +'make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, 'make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +'${prefix}'. Any directories that were specified during 'configure', +but not in terms of '${prefix}', must each be overridden at install time +for the entire installation to be relocated. The approach of makefile +variable overrides for each directory variable is required by the GNU +Coding Standards, and ideally causes no recompilation. However, some +platforms have known limitations with the semantics of shared libraries +that end up requiring recompilation when using this method, particularly +noticeable in packages that use GNU Libtool. + + The second method involves providing the 'DESTDIR' variable. For +example, 'make install DESTDIR=/alternate/directory' will prepend +'/alternate/directory' before all installation names. The approach of +'DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of '${prefix}' +at 'configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving 'configure' the +option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. + + Some packages pay attention to '--enable-FEATURE' options to +'configure', where FEATURE indicates an optional part of the package. +They may also pay attention to '--with-PACKAGE' options, where PACKAGE +is something like 'gnu-as' or 'x' (for the X Window System). The +'README' should mention any '--enable-' and '--with-' options that the +package recognizes. + + For packages that use the X Window System, 'configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the 'configure' options '--x-includes=DIR' and +'--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of 'make' will be. For these packages, running './configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with 'make V=1'; while running './configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with 'make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC +is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + HP-UX 'make' updates targets which have the same timestamps as their +prerequisites, which makes it generally unusable when shipped generated +files such as 'configure' are involved. Use GNU 'make' instead. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its '' header file. The option '-nodtk' can be used as a +workaround. If GNU CC is not installed, it is therefore recommended to +try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put '/usr/ucb' early in your 'PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in '/usr/bin'. So, if you need '/usr/ucb' +in your 'PATH', put it _after_ '/usr/bin'. + + On Haiku, software installed for all users goes in '/boot/common', +not '/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features 'configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, 'configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +'--build=TYPE' option. TYPE can either be a short name for the system +type, such as 'sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file 'config.sub' for the possible values of each field. If +'config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option '--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with '--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for 'configure' scripts to share, +you can create a site shell script called 'config.site' that gives +default values for variables like 'CC', 'cache_file', and 'prefix'. +'configure' looks for 'PREFIX/share/config.site' if it exists, then +'PREFIX/etc/config.site' if it exists. Or, you can set the +'CONFIG_SITE' environment variable to the location of the site script. +A warning: not all 'configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to 'configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the 'configure' command line, using 'VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified 'gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an +Autoconf limitation. Until the limitation is lifted, you can use this +workaround: + + CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash + +'configure' Invocation +====================== + + 'configure' recognizes the following options to control how it +operates. + +'--help' +'-h' + Print a summary of all of the options to 'configure', and exit. + +'--help=short' +'--help=recursive' + Print a summary of the options unique to this package's + 'configure', and exit. The 'short' variant lists options used only + in the top level, while the 'recursive' variant lists options also + present in any nested packages. + +'--version' +'-V' + Print the version of Autoconf used to generate the 'configure' + script, and exit. + +'--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally 'config.cache'. FILE defaults to '/dev/null' to + disable caching. + +'--config-cache' +'-C' + Alias for '--cache-file=config.cache'. + +'--quiet' +'--silent' +'-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to '/dev/null' (any error + messages will still be shown). + +'--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + 'configure' can determine that directory automatically. + +'--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: for + more details, including other options available for fine-tuning the + installation locations. + +'--no-create' +'-n' + Run the configure checks, but stop before creating any output + files. + +'configure' also accepts some other, not widely useful, options. Run +'configure --help' for more details. diff --git a/local/recipes/dev/gnu-make/source/Makefile.am b/local/recipes/dev/gnu-make/source/Makefile.am new file mode 100644 index 0000000000..53ec73c2ee --- /dev/null +++ b/local/recipes/dev/gnu-make/source/Makefile.am @@ -0,0 +1,221 @@ +# This is a -*-Makefile-*-, or close enough +# +# 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 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 . + +AUTOMAKE_OPTIONS = dist-lzip silent-rules std-options subdir-objects nostdinc +ACLOCAL_AMFLAGS = -I m4 + +MAKE_HOST = @MAKE_HOST@ + +SUBDIRS = lib po doc + +bin_PROGRAMS = make +include_HEADERS = src/gnumake.h + +man_MANS = doc/make.1 + +make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \ + src/debug.h src/default.c src/dep.h src/dir.c src/expand.c \ + src/file.c src/filedef.h src/function.c src/getopt.c \ + src/getopt.h src/getopt1.c src/gettext.h src/guile.c \ + src/hash.c src/hash.h src/implicit.c src/job.c src/job.h \ + src/load.c src/loadapi.c src/main.c src/makeint.h src/misc.c \ + src/os.h src/output.c src/output.h src/read.c src/remake.c \ + src/rule.c src/rule.h src/shuffle.h src/shuffle.c \ + src/signame.c src/strcache.c src/variable.c src/variable.h \ + src/version.c src/vpath.c + +w32_SRCS = src/w32/pathstuff.c src/w32/w32os.c src/w32/compat/dirent.c \ + src/w32/compat/posixfcn.c src/w32/include/dirent.h \ + src/w32/include/dlfcn.h src/w32/include/pathstuff.h \ + src/w32/include/sub_proc.h src/w32/include/w32err.h \ + src/w32/subproc/misc.c src/w32/subproc/proc.h \ + src/w32/subproc/sub_proc.c src/w32/subproc/w32err.c + +vms_SRCS = src/vms_exit.c src/vms_export_symbol.c src/vms_progname.c \ + src/vmsdir.h src/vmsfunctions.c src/vmsify.c + +amiga_SRCS = src/amiga.c src/amiga.h + +glob_SRCS = lib/fnmatch.c lib/fnmatch.h lib/glob.c lib/glob.h + +alloca_SRCS = lib/alloca.c + +loadavg_SRCS = lib/getloadavg.c + +make_SOURCES = $(make_SRCS) +EXTRA_make_SOURCES = $(amiga_SRCS) $(vms_SRCS) + +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)\" -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) + +if WINDOWSENV + make_SOURCES += $(w32_SRCS) + AM_CPPFLAGS += -I $(top_srcdir)/src/w32/include +else + make_SOURCES += src/posixos.c +endif + +if USE_CUSTOMS + make_SOURCES += src/remote-cstms.c +else + make_SOURCES += src/remote-stub.c +endif + +# Extra stuff to include in the distribution. + +mk_FILES = Basic.mk mk/msdosdjgpp.mk mk/Amiga.mk mk/VMS.mk mk/Windows32.mk +# We don't need this, since the standard automake output will do. +#mk/Posix.mk.in + +m4_FILES = m4/gnulib-cache.m4 + +test_FILES = tests/run_make_tests tests/run_make_tests.bat \ + tests/run_make_tests.pl tests/test_driver.pl \ + tests/config-flags.pm.in tests/config_flags_pm.com \ + tests/config-flags.pm.W32 \ + tests/mkshadow tests/thelp.pl tests/guile.supp tests/README +# test/scripts are added via dist-hook below. + +EXTRA_DIST = ChangeLog INSTALL README build.sh build.cfg.in $(man_MANS) \ + src/mkconfig.h README.customs README.OS2 \ + README.Amiga SCOPTIONS src/config.ami \ + README.DOS builddos.bat src/configh.dos \ + README.W32 build_w32.bat src/config.h.W32 \ + README.VMS makefile.com src/config.h-vms src/vmsjobs.c \ + vms_export_symbol_test.com \ + src/gmk-default.scm src/gmk-default.h \ + $(mk_FILES) $(m4_FILES) $(test_FILES) + +# --------------- Generate the Guile default module content + +src/guile.$(OBJEXT): src/gmk-default.h +src/gmk-default.h: $(top_srcdir)/src/gmk-default.scm + (echo 'static const char *const GUILE_module_defn = " '\\ \ + && sed -e 's/;.*//' -e '/^[ \t]*$$/d' -e 's/"/\\"/g' -e 's/$$/ \\/' \ + $(top_srcdir)/src/gmk-default.scm \ + && echo '";') > src/gmk-default.h + +# --------------- Local DIST Section + +# Install the mk and tests subdirectories +# +dist-hook: + (cd $(top_srcdir); \ + sub=`find tests/scripts -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name \*.out -o -name Makefile \) -prune -o -type f -print`; \ + $(AMTAR) chf - $$sub) \ + | (cd $(distdir); $(AMTAR) xfBp -) + + +# --------------- Local CHECK Section + +check-local: check-regression + @banner=" Regression PASSED: $(PACKAGE_STRING) ($(MAKE_HOST)) built with $(CC) "; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes"; \ + echo + +# > check-regression +# +# Look for the make test suite, and run it if found and we can find perl. +# If we're building outside the tree, we use symlinks to make a local copy of +# the test suite. Unfortunately the test suite itself isn't localizable yet. +# +MAKETESTFLAGS = + +.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 \ + case `cd '$(top_srcdir)'; pwd` in `pwd`) : ;; \ + *) test -d tests || mkdir tests; \ + rm -f srctests; \ + if ln -s '$(top_srcdir)/tests' srctests; then \ + for f in run_make_tests run_make_tests.pl test_driver.pl scripts thelp.pl; do \ + rm -f tests/$$f; ln -s ../srctests/$$f tests; \ + done; fi ;; \ + esac; \ + echo "cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir $(abs_top_srcdir) -make $(GMK_OUTDIR)/make$(EXEEXT) $(MAKETESTFLAGS)"; \ + (cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir '$(abs_top_srcdir)' -make '$(GMK_OUTDIR)/make$(EXEEXT)' $(MAKETESTFLAGS); echo $$? >.test-result) 2>&1 | tee $(testlog); \ + er=$$(cat $(testresult)); if test "$$er" -ne 0; then \ + dirnm="$(errorpre)-$$($(rand_string))"; fnm="$$dirnm.tar.gz"; \ + rm -rf "$$dirnm"; mkdir "$$dirnm"; \ + $(AMTAR) chf - $(errordetails) | (cd "$$dirnm"; $(AMTAR) xf -); \ + $(AMTAR) chf - "$$dirnm" | eval GZIP= gzip $(GZIP_ENV) -c >"$$fnm"; \ + echo "*** Testing FAILED! Details: $$fnm"; \ + echo '*** Please report to <$(PACKAGE_BUGREPORT)>'; echo; \ + exit $$er; \ + fi; \ + else \ + echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \ + fi; \ + else \ + echo "Can't find the $(PACKAGE_NAME) test suite ($(top_srcdir)/tests)."; \ + fi + + +# --------------- Maintainer's Section + +# Tell automake that I haven't forgotten about this file and it will be +# created before we build a distribution (see maintMakefile in the Git +# distribution). + +README: + +@MAINT_MAKEFILE@ diff --git a/local/recipes/dev/gnu-make/source/Makefile.in b/local/recipes/dev/gnu-make/source/Makefile.in new file mode 100644 index 0000000000..3f5fcfbace --- /dev/null +++ b/local/recipes/dev/gnu-make/source/Makefile.in @@ -0,0 +1,1622 @@ +# Makefile.in generated by automake 1.18.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2025 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# This is a -*-Makefile-*-, or close enough +# +# Copyright (C) 1997-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 . + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = make$(EXEEXT) + +# If prefix is not a standard location, look in prefix as well +@KNOWN_PREFIX_FALSE@am__append_1 = -DINCLUDEDIR=\"$(includedir)\" +@WINDOWSENV_TRUE@am__append_2 = $(w32_SRCS) +@WINDOWSENV_TRUE@am__append_3 = -I $(top_srcdir)/src/w32/include +@WINDOWSENV_FALSE@am__append_4 = src/posixos.c +@USE_CUSTOMS_TRUE@am__append_5 = src/remote-cstms.c +@USE_CUSTOMS_FALSE@am__append_6 = src/remote-stub.c +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ + $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/alloca.m4 \ + $(top_srcdir)/m4/asm-underscore.m4 \ + $(top_srcdir)/m4/dospaths.m4 $(top_srcdir)/m4/eaccess.m4 \ + $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/findprog-in.m4 \ + $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gnulib-common.m4 \ + $(top_srcdir)/m4/gnulib-comp.m4 \ + $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/sig_atomic_t.m4 \ + $(top_srcdir)/m4/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) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(include_HEADERS) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/config.h +CONFIG_CLEAN_FILES = build.cfg tests/config-flags.pm +CONFIG_CLEAN_VPATH_FILES = build.sh +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ + "$(DESTDIR)$(includedir)" +PROGRAMS = $(bin_PROGRAMS) +am__make_SOURCES_DIST = src/ar.c src/arscan.c src/commands.c \ + src/commands.h src/debug.h src/default.c src/dep.h src/dir.c \ + src/expand.c src/file.c src/filedef.h src/function.c \ + src/getopt.c src/getopt.h src/getopt1.c src/gettext.h \ + src/guile.c src/hash.c src/hash.h src/implicit.c src/job.c \ + src/job.h src/load.c src/loadapi.c src/main.c src/makeint.h \ + src/misc.c src/os.h src/output.c src/output.h src/read.c \ + src/remake.c src/rule.c src/rule.h src/shuffle.h src/shuffle.c \ + src/signame.c src/strcache.c src/variable.c src/variable.h \ + src/version.c src/vpath.c src/w32/pathstuff.c src/w32/w32os.c \ + src/w32/compat/dirent.c src/w32/compat/posixfcn.c \ + src/w32/include/dirent.h src/w32/include/dlfcn.h \ + src/w32/include/pathstuff.h src/w32/include/sub_proc.h \ + src/w32/include/w32err.h src/w32/subproc/misc.c \ + src/w32/subproc/proc.h src/w32/subproc/sub_proc.c \ + src/w32/subproc/w32err.c src/posixos.c src/remote-cstms.c \ + src/remote-stub.c +am__dirstamp = $(am__leading_dot)dirstamp +am__objects_1 = src/ar.$(OBJEXT) src/arscan.$(OBJEXT) \ + src/commands.$(OBJEXT) src/default.$(OBJEXT) src/dir.$(OBJEXT) \ + src/expand.$(OBJEXT) src/file.$(OBJEXT) src/function.$(OBJEXT) \ + src/getopt.$(OBJEXT) src/getopt1.$(OBJEXT) src/guile.$(OBJEXT) \ + src/hash.$(OBJEXT) src/implicit.$(OBJEXT) src/job.$(OBJEXT) \ + src/load.$(OBJEXT) src/loadapi.$(OBJEXT) src/main.$(OBJEXT) \ + src/misc.$(OBJEXT) src/output.$(OBJEXT) src/read.$(OBJEXT) \ + src/remake.$(OBJEXT) src/rule.$(OBJEXT) src/shuffle.$(OBJEXT) \ + src/signame.$(OBJEXT) src/strcache.$(OBJEXT) \ + src/variable.$(OBJEXT) src/version.$(OBJEXT) \ + src/vpath.$(OBJEXT) +am__objects_2 = src/w32/pathstuff.$(OBJEXT) src/w32/w32os.$(OBJEXT) \ + src/w32/compat/dirent.$(OBJEXT) \ + src/w32/compat/posixfcn.$(OBJEXT) \ + src/w32/subproc/misc.$(OBJEXT) \ + src/w32/subproc/sub_proc.$(OBJEXT) \ + src/w32/subproc/w32err.$(OBJEXT) +@WINDOWSENV_TRUE@am__objects_3 = $(am__objects_2) +@WINDOWSENV_FALSE@am__objects_4 = src/posixos.$(OBJEXT) +@USE_CUSTOMS_TRUE@am__objects_5 = src/remote-cstms.$(OBJEXT) +@USE_CUSTOMS_FALSE@am__objects_6 = src/remote-stub.$(OBJEXT) +am_make_OBJECTS = $(am__objects_1) $(am__objects_3) $(am__objects_4) \ + $(am__objects_5) $(am__objects_6) +make_OBJECTS = $(am_make_OBJECTS) +am__DEPENDENCIES_1 = +@HAVE_GUILE_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) +make_DEPENDENCIES = $(LIBOBJS) $(am__DEPENDENCIES_2) lib/libgnu.a \ + $(am__DEPENDENCIES_1) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = src/$(DEPDIR)/amiga.Po src/$(DEPDIR)/ar.Po \ + src/$(DEPDIR)/arscan.Po src/$(DEPDIR)/commands.Po \ + src/$(DEPDIR)/default.Po src/$(DEPDIR)/dir.Po \ + src/$(DEPDIR)/expand.Po src/$(DEPDIR)/file.Po \ + src/$(DEPDIR)/function.Po src/$(DEPDIR)/getopt.Po \ + src/$(DEPDIR)/getopt1.Po src/$(DEPDIR)/guile.Po \ + src/$(DEPDIR)/hash.Po src/$(DEPDIR)/implicit.Po \ + src/$(DEPDIR)/job.Po src/$(DEPDIR)/load.Po \ + src/$(DEPDIR)/loadapi.Po src/$(DEPDIR)/main.Po \ + src/$(DEPDIR)/misc.Po src/$(DEPDIR)/output.Po \ + src/$(DEPDIR)/posixos.Po src/$(DEPDIR)/read.Po \ + src/$(DEPDIR)/remake.Po src/$(DEPDIR)/remote-cstms.Po \ + src/$(DEPDIR)/remote-stub.Po src/$(DEPDIR)/rule.Po \ + src/$(DEPDIR)/shuffle.Po src/$(DEPDIR)/signame.Po \ + src/$(DEPDIR)/strcache.Po src/$(DEPDIR)/variable.Po \ + src/$(DEPDIR)/version.Po src/$(DEPDIR)/vms_exit.Po \ + src/$(DEPDIR)/vms_export_symbol.Po \ + src/$(DEPDIR)/vms_progname.Po src/$(DEPDIR)/vmsfunctions.Po \ + src/$(DEPDIR)/vmsify.Po src/$(DEPDIR)/vpath.Po \ + src/w32/$(DEPDIR)/pathstuff.Po src/w32/$(DEPDIR)/w32os.Po \ + src/w32/compat/$(DEPDIR)/dirent.Po \ + src/w32/compat/$(DEPDIR)/posixfcn.Po \ + src/w32/subproc/$(DEPDIR)/misc.Po \ + src/w32/subproc/$(DEPDIR)/sub_proc.Po \ + src/w32/subproc/$(DEPDIR)/w32err.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(make_SOURCES) $(EXTRA_make_SOURCES) +DIST_SOURCES = $(am__make_SOURCES_DIST) $(EXTRA_make_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ + } +man1dir = $(mandir)/man1 +NROFF = nroff +MANS = $(man_MANS) +HEADERS = $(include_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir distdir-am dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/build.cfg.in \ + $(srcdir)/build.sh $(top_srcdir)/build-aux/compile \ + $(top_srcdir)/build-aux/config.guess \ + $(top_srcdir)/build-aux/config.rpath \ + $(top_srcdir)/build-aux/config.sub \ + $(top_srcdir)/build-aux/depcomp \ + $(top_srcdir)/build-aux/install-sh \ + $(top_srcdir)/build-aux/missing $(top_srcdir)/src/config.h.in \ + $(top_srcdir)/tests/config-flags.pm.in ABOUT-NLS AUTHORS \ + COPYING ChangeLog INSTALL NEWS README build-aux/compile \ + build-aux/config.guess build-aux/config.rpath \ + build-aux/config.sub build-aux/depcomp build-aux/install-sh \ + build-aux/mdate-sh build-aux/missing build-aux/texinfo.tex +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -700 -exec chmod u+rwx {} ';' \ + ; rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.lz +GZIP_ENV = -9 +DIST_TARGETS = dist-lzip dist-gzip +# Exists only to be overridden by the user if desired. +AM_DISTCHECK_DVI_TARGET = dvi +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = \ + find . \( -type f -a \! \ + \( -name .nfs* -o -name .smb* -o -name .__afs* \) \) -print +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +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@ +GUILE_CFLAGS = @GUILE_CFLAGS@ +GUILE_LIBS = @GUILE_LIBS@ +HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE__BOOL = @HAVE__BOOL@ +HOST_CPU = @HOST_CPU@ +HOST_CPU_C_ABI = @HOST_CPU_C_ABI@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ +LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKE_HOST = @MAKE_HOST@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +REMOTE = @REMOTE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STDBOOL_H = @STDBOOL_H@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ +am__tar = @am__tar@ +am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +gltests_WITNESS = @gltests_WITNESS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = $(datadir)/locale +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = dist-lzip silent-rules std-options subdir-objects nostdinc +ACLOCAL_AMFLAGS = -I m4 +SUBDIRS = lib po doc +include_HEADERS = src/gnumake.h +man_MANS = doc/make.1 +make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \ + src/debug.h src/default.c src/dep.h src/dir.c src/expand.c \ + src/file.c src/filedef.h src/function.c src/getopt.c \ + src/getopt.h src/getopt1.c src/gettext.h src/guile.c \ + src/hash.c src/hash.h src/implicit.c src/job.c src/job.h \ + src/load.c src/loadapi.c src/main.c src/makeint.h src/misc.c \ + src/os.h src/output.c src/output.h src/read.c src/remake.c \ + src/rule.c src/rule.h src/shuffle.h src/shuffle.c \ + src/signame.c src/strcache.c src/variable.c src/variable.h \ + src/version.c src/vpath.c + +w32_SRCS = src/w32/pathstuff.c src/w32/w32os.c src/w32/compat/dirent.c \ + src/w32/compat/posixfcn.c src/w32/include/dirent.h \ + src/w32/include/dlfcn.h src/w32/include/pathstuff.h \ + src/w32/include/sub_proc.h src/w32/include/w32err.h \ + src/w32/subproc/misc.c src/w32/subproc/proc.h \ + src/w32/subproc/sub_proc.c src/w32/subproc/w32err.c + +vms_SRCS = src/vms_exit.c src/vms_export_symbol.c src/vms_progname.c \ + src/vmsdir.h src/vmsfunctions.c src/vmsify.c + +amiga_SRCS = src/amiga.c src/amiga.h +glob_SRCS = lib/fnmatch.c lib/fnmatch.h lib/glob.c lib/glob.h +alloca_SRCS = lib/alloca.c +loadavg_SRCS = lib/getloadavg.c +make_SOURCES = $(make_SRCS) $(am__append_2) $(am__append_4) \ + $(am__append_5) $(am__append_6) +EXTRA_make_SOURCES = $(amiga_SRCS) $(vms_SRCS) +@HAVE_GUILE_FALSE@_GUILE_CFLAGS = +@HAVE_GUILE_TRUE@_GUILE_CFLAGS = $(GUILE_CFLAGS) +@HAVE_GUILE_FALSE@_GUILE_LIBS = +@HAVE_GUILE_TRUE@_GUILE_LIBS = $(GUILE_LIBS) +make_LDADD = $(LIBOBJS) $(_GUILE_LIBS) lib/libgnu.a $(GETLOADAVG_LIBS) \ + @LIBINTL@ + +AM_CPPFLAGS = -Isrc -I$(top_srcdir)/src -Ilib -I$(top_srcdir)/lib \ + -DLIBDIR=\"$(libdir)\" -DLOCALEDIR=\"$(localedir)\" \ + $(am__append_1) $(am__append_3) +AM_CFLAGS = $(_GUILE_CFLAGS) + +# Extra stuff to include in the distribution. +mk_FILES = Basic.mk mk/msdosdjgpp.mk mk/Amiga.mk mk/VMS.mk mk/Windows32.mk +# We don't need this, since the standard automake output will do. +#mk/Posix.mk.in +m4_FILES = m4/gnulib-cache.m4 +test_FILES = tests/run_make_tests tests/run_make_tests.bat \ + tests/run_make_tests.pl tests/test_driver.pl \ + tests/config-flags.pm.in tests/config_flags_pm.com \ + tests/config-flags.pm.W32 \ + tests/mkshadow tests/thelp.pl tests/guile.supp tests/README + +# test/scripts are added via dist-hook below. +EXTRA_DIST = ChangeLog INSTALL README build.sh build.cfg.in $(man_MANS) \ + src/mkconfig.h README.customs README.OS2 \ + README.Amiga SCOPTIONS src/config.ami \ + README.DOS builddos.bat src/configh.dos \ + README.W32 build_w32.bat src/config.h.W32 \ + README.VMS makefile.com src/config.h-vms src/vmsjobs.c \ + vms_export_symbol_test.com \ + src/gmk-default.scm src/gmk-default.h \ + $(mk_FILES) $(m4_FILES) $(test_FILES) + + +# > check-regression +# +# Look for the make test suite, and run it if found and we can find perl. +# If we're building outside the tree, we use symlinks to make a local copy of +# the test suite. Unfortunately the test suite itself isn't localizable yet. +# +MAKETESTFLAGS = +GMK_OUTDIR = .. +testlog = test-suite.log +testresult = tests/.test-result +errorpre = makeerror-$(PACKAGE_VERSION)-$(host_triplet) +testfiles = $(testlog) $(testresult) $(errorfile) +MOSTLYCLEANFILES = $(testfiles) +errordetails = config.status config.log src/config.h $(testlog) tests/work + +# Create a 4-letter random sequence +rand_value = c = "abcdefghijklmnopqrstuvwxyz0123456789" +rand_char = substr(c,int(rand()*36),1) +rand_string = $(AWK) 'BEGIN{srand(); $(rand_value); print $(rand_char) "" $(rand_char) "" $(rand_char) "" $(rand_char);}' +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +src/config.h: src/stamp-h1 + @test -f $@ || rm -f src/stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) src/stamp-h1 + +src/stamp-h1: $(top_srcdir)/src/config.h.in $(top_builddir)/config.status + $(AM_V_at)rm -f src/stamp-h1 + $(AM_V_GEN)cd $(top_builddir) && $(SHELL) ./config.status src/config.h +$(top_srcdir)/src/config.h.in: $(am__configure_deps) + $(AM_V_GEN)($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + $(AM_V_at)rm -f src/stamp-h1 + $(AM_V_at)touch $@ + +distclean-hdr: + -rm -f src/config.h src/stamp-h1 +build.cfg: $(top_builddir)/config.status $(srcdir)/build.cfg.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +tests/config-flags.pm: $(top_builddir)/config.status $(top_srcdir)/tests/config-flags.pm.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && $(am__rm_f) $$files + +clean-binPROGRAMS: + -$(am__rm_f) $(bin_PROGRAMS) + +installcheck-binPROGRAMS: $(bin_PROGRAMS) + bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ + case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ + *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ + esac; \ + f=`echo "$$p" | \ + sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + for opt in --help --version; do \ + "$(DESTDIR)$(bindir)/$$f" $$opt \ + >c$${pid}_.out 2>c$${pid}_.err &2; \ + cat c$${pid}_.err 1>&2; \ + bad=1; \ + else \ + if test -z "`cat c$${pid}_.out`"; then \ + echo "$$f does not support $$opt: no output" 1>&2; \ + bad=1; \ + else \ + if test $$xc != 0; then \ + echo "$$f does not support $$opt: exit code $$xc" 1>&2; \ + bad=1; \ + else \ + :; \ + fi; \ + fi; \ + fi; \ + done; \ + done; rm -f c$${pid}_.???; exit $$bad +src/$(am__dirstamp): + @$(MKDIR_P) src + @: >>src/$(am__dirstamp) +src/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/$(DEPDIR) + @: >>src/$(DEPDIR)/$(am__dirstamp) +src/ar.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/arscan.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/commands.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/default.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/dir.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/expand.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/file.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/function.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/getopt.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/getopt1.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/guile.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/hash.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/implicit.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/job.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/load.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/loadapi.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/main.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/misc.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/output.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/read.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/remake.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/rule.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/shuffle.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/signame.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/strcache.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/variable.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/version.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vpath.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/w32/$(am__dirstamp): + @$(MKDIR_P) src/w32 + @: >>src/w32/$(am__dirstamp) +src/w32/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/w32/$(DEPDIR) + @: >>src/w32/$(DEPDIR)/$(am__dirstamp) +src/w32/pathstuff.$(OBJEXT): src/w32/$(am__dirstamp) \ + src/w32/$(DEPDIR)/$(am__dirstamp) +src/w32/w32os.$(OBJEXT): src/w32/$(am__dirstamp) \ + src/w32/$(DEPDIR)/$(am__dirstamp) +src/w32/compat/$(am__dirstamp): + @$(MKDIR_P) src/w32/compat + @: >>src/w32/compat/$(am__dirstamp) +src/w32/compat/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/w32/compat/$(DEPDIR) + @: >>src/w32/compat/$(DEPDIR)/$(am__dirstamp) +src/w32/compat/dirent.$(OBJEXT): src/w32/compat/$(am__dirstamp) \ + src/w32/compat/$(DEPDIR)/$(am__dirstamp) +src/w32/compat/posixfcn.$(OBJEXT): src/w32/compat/$(am__dirstamp) \ + src/w32/compat/$(DEPDIR)/$(am__dirstamp) +src/w32/subproc/$(am__dirstamp): + @$(MKDIR_P) src/w32/subproc + @: >>src/w32/subproc/$(am__dirstamp) +src/w32/subproc/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/w32/subproc/$(DEPDIR) + @: >>src/w32/subproc/$(DEPDIR)/$(am__dirstamp) +src/w32/subproc/misc.$(OBJEXT): src/w32/subproc/$(am__dirstamp) \ + src/w32/subproc/$(DEPDIR)/$(am__dirstamp) +src/w32/subproc/sub_proc.$(OBJEXT): src/w32/subproc/$(am__dirstamp) \ + src/w32/subproc/$(DEPDIR)/$(am__dirstamp) +src/w32/subproc/w32err.$(OBJEXT): src/w32/subproc/$(am__dirstamp) \ + src/w32/subproc/$(DEPDIR)/$(am__dirstamp) +src/posixos.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/remote-cstms.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/remote-stub.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/amiga.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/vms_exit.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vms_export_symbol.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vms_progname.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vmsfunctions.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vmsify.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) + +make$(EXEEXT): $(make_OBJECTS) $(make_DEPENDENCIES) $(EXTRA_make_DEPENDENCIES) + @rm -f make$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(make_OBJECTS) $(make_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f src/*.$(OBJEXT) + -rm -f src/w32/*.$(OBJEXT) + -rm -f src/w32/compat/*.$(OBJEXT) + -rm -f src/w32/subproc/*.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/amiga.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ar.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/arscan.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/commands.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/default.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dir.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/expand.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/file.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/function.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/getopt.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/getopt1.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/guile.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/hash.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/implicit.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/job.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/load.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/loadapi.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/misc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/output.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/posixos.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/read.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/remake.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/remote-cstms.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/remote-stub.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/rule.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/shuffle.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/signame.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/strcache.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/variable.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/version.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vms_exit.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vms_export_symbol.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vms_progname.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vmsfunctions.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vmsify.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vpath.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/$(DEPDIR)/pathstuff.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/$(DEPDIR)/w32os.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/compat/$(DEPDIR)/dirent.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/compat/$(DEPDIR)/posixfcn.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/subproc/$(DEPDIR)/misc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/subproc/$(DEPDIR)/sub_proc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/subproc/$(DEPDIR)/w32err.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @: >>$@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + $(AM_V_at)$(MKDIR_P) "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-bzip3: distdir + tardir=$(distdir) && $(am__tar) | bzip3 -c >$(distdir).tar.bz3 + $(am__post_remove_distdir) +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-zstd: distdir + tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.bz3*) \ + bzip3 -dc $(distdir).tar.bz3 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + *.tar.zst*) \ + zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-local +check: check-recursive +all-am: Makefile $(PROGRAMS) $(MANS) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -$(am__rm_f) $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) + -$(am__rm_f) src/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) src/$(am__dirstamp) + -$(am__rm_f) src/w32/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) src/w32/$(am__dirstamp) + -$(am__rm_f) src/w32/compat/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) src/w32/compat/$(am__dirstamp) + -$(am__rm_f) src/w32/subproc/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) src/w32/subproc/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f src/$(DEPDIR)/amiga.Po + -rm -f src/$(DEPDIR)/ar.Po + -rm -f src/$(DEPDIR)/arscan.Po + -rm -f src/$(DEPDIR)/commands.Po + -rm -f src/$(DEPDIR)/default.Po + -rm -f src/$(DEPDIR)/dir.Po + -rm -f src/$(DEPDIR)/expand.Po + -rm -f src/$(DEPDIR)/file.Po + -rm -f src/$(DEPDIR)/function.Po + -rm -f src/$(DEPDIR)/getopt.Po + -rm -f src/$(DEPDIR)/getopt1.Po + -rm -f src/$(DEPDIR)/guile.Po + -rm -f src/$(DEPDIR)/hash.Po + -rm -f src/$(DEPDIR)/implicit.Po + -rm -f src/$(DEPDIR)/job.Po + -rm -f src/$(DEPDIR)/load.Po + -rm -f src/$(DEPDIR)/loadapi.Po + -rm -f src/$(DEPDIR)/main.Po + -rm -f src/$(DEPDIR)/misc.Po + -rm -f src/$(DEPDIR)/output.Po + -rm -f src/$(DEPDIR)/posixos.Po + -rm -f src/$(DEPDIR)/read.Po + -rm -f src/$(DEPDIR)/remake.Po + -rm -f src/$(DEPDIR)/remote-cstms.Po + -rm -f src/$(DEPDIR)/remote-stub.Po + -rm -f src/$(DEPDIR)/rule.Po + -rm -f src/$(DEPDIR)/shuffle.Po + -rm -f src/$(DEPDIR)/signame.Po + -rm -f src/$(DEPDIR)/strcache.Po + -rm -f src/$(DEPDIR)/variable.Po + -rm -f src/$(DEPDIR)/version.Po + -rm -f src/$(DEPDIR)/vms_exit.Po + -rm -f src/$(DEPDIR)/vms_export_symbol.Po + -rm -f src/$(DEPDIR)/vms_progname.Po + -rm -f src/$(DEPDIR)/vmsfunctions.Po + -rm -f src/$(DEPDIR)/vmsify.Po + -rm -f src/$(DEPDIR)/vpath.Po + -rm -f src/w32/$(DEPDIR)/pathstuff.Po + -rm -f src/w32/$(DEPDIR)/w32os.Po + -rm -f src/w32/compat/$(DEPDIR)/dirent.Po + -rm -f src/w32/compat/$(DEPDIR)/posixfcn.Po + -rm -f src/w32/subproc/$(DEPDIR)/misc.Po + -rm -f src/w32/subproc/$(DEPDIR)/sub_proc.Po + -rm -f src/w32/subproc/$(DEPDIR)/w32err.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-includeHEADERS install-man + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: installcheck-binPROGRAMS + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f src/$(DEPDIR)/amiga.Po + -rm -f src/$(DEPDIR)/ar.Po + -rm -f src/$(DEPDIR)/arscan.Po + -rm -f src/$(DEPDIR)/commands.Po + -rm -f src/$(DEPDIR)/default.Po + -rm -f src/$(DEPDIR)/dir.Po + -rm -f src/$(DEPDIR)/expand.Po + -rm -f src/$(DEPDIR)/file.Po + -rm -f src/$(DEPDIR)/function.Po + -rm -f src/$(DEPDIR)/getopt.Po + -rm -f src/$(DEPDIR)/getopt1.Po + -rm -f src/$(DEPDIR)/guile.Po + -rm -f src/$(DEPDIR)/hash.Po + -rm -f src/$(DEPDIR)/implicit.Po + -rm -f src/$(DEPDIR)/job.Po + -rm -f src/$(DEPDIR)/load.Po + -rm -f src/$(DEPDIR)/loadapi.Po + -rm -f src/$(DEPDIR)/main.Po + -rm -f src/$(DEPDIR)/misc.Po + -rm -f src/$(DEPDIR)/output.Po + -rm -f src/$(DEPDIR)/posixos.Po + -rm -f src/$(DEPDIR)/read.Po + -rm -f src/$(DEPDIR)/remake.Po + -rm -f src/$(DEPDIR)/remote-cstms.Po + -rm -f src/$(DEPDIR)/remote-stub.Po + -rm -f src/$(DEPDIR)/rule.Po + -rm -f src/$(DEPDIR)/shuffle.Po + -rm -f src/$(DEPDIR)/signame.Po + -rm -f src/$(DEPDIR)/strcache.Po + -rm -f src/$(DEPDIR)/variable.Po + -rm -f src/$(DEPDIR)/version.Po + -rm -f src/$(DEPDIR)/vms_exit.Po + -rm -f src/$(DEPDIR)/vms_export_symbol.Po + -rm -f src/$(DEPDIR)/vms_progname.Po + -rm -f src/$(DEPDIR)/vmsfunctions.Po + -rm -f src/$(DEPDIR)/vmsify.Po + -rm -f src/$(DEPDIR)/vpath.Po + -rm -f src/w32/$(DEPDIR)/pathstuff.Po + -rm -f src/w32/$(DEPDIR)/w32os.Po + -rm -f src/w32/compat/$(DEPDIR)/dirent.Po + -rm -f src/w32/compat/$(DEPDIR)/posixfcn.Po + -rm -f src/w32/subproc/$(DEPDIR)/misc.Po + -rm -f src/w32/subproc/$(DEPDIR)/sub_proc.Po + -rm -f src/w32/subproc/$(DEPDIR)/w32err.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \ + uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: $(am__recursive_targets) check-am install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--depfiles am--refresh check check-am check-local clean \ + clean-binPROGRAMS clean-cscope clean-generic cscope \ + cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-bzip3 dist-gzip dist-hook dist-lzip dist-shar dist-tarZ \ + dist-xz dist-zip dist-zstd distcheck distclean \ + distclean-compile distclean-generic distclean-hdr \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-includeHEADERS install-info \ + install-info-am install-man install-man1 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installcheck-binPROGRAMS \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-includeHEADERS \ + uninstall-man uninstall-man1 + +.PRECIOUS: Makefile + + +# --------------- Generate the Guile default module content + +src/guile.$(OBJEXT): src/gmk-default.h +src/gmk-default.h: $(top_srcdir)/src/gmk-default.scm + (echo 'static const char *const GUILE_module_defn = " '\\ \ + && sed -e 's/;.*//' -e '/^[ \t]*$$/d' -e 's/"/\\"/g' -e 's/$$/ \\/' \ + $(top_srcdir)/src/gmk-default.scm \ + && echo '";') > src/gmk-default.h + +# --------------- Local DIST Section + +# Install the mk and tests subdirectories +# +dist-hook: + (cd $(top_srcdir); \ + sub=`find tests/scripts -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name \*.out -o -name Makefile \) -prune -o -type f -print`; \ + $(AMTAR) chf - $$sub) \ + | (cd $(distdir); $(AMTAR) xfBp -) + +# --------------- Local CHECK Section + +check-local: check-regression + @banner=" Regression PASSED: $(PACKAGE_STRING) ($(MAKE_HOST)) built with $(CC) "; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes"; \ + echo + +.PHONY: check-regression + +check-regression: tests/config-flags.pm + @rm -f $(testfiles) + @if test -f '$(top_srcdir)/tests/run_make_tests'; then \ + ulimit -n 128; \ + if $(PERL) -v >/dev/null 2>&1; then \ + case `cd '$(top_srcdir)'; pwd` in `pwd`) : ;; \ + *) test -d tests || mkdir tests; \ + rm -f srctests; \ + if ln -s '$(top_srcdir)/tests' srctests; then \ + for f in run_make_tests run_make_tests.pl test_driver.pl scripts thelp.pl; do \ + rm -f tests/$$f; ln -s ../srctests/$$f tests; \ + done; fi ;; \ + esac; \ + echo "cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir $(abs_top_srcdir) -make $(GMK_OUTDIR)/make$(EXEEXT) $(MAKETESTFLAGS)"; \ + (cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir '$(abs_top_srcdir)' -make '$(GMK_OUTDIR)/make$(EXEEXT)' $(MAKETESTFLAGS); echo $$? >.test-result) 2>&1 | tee $(testlog); \ + er=$$(cat $(testresult)); if test "$$er" -ne 0; then \ + dirnm="$(errorpre)-$$($(rand_string))"; fnm="$$dirnm.tar.gz"; \ + rm -rf "$$dirnm"; mkdir "$$dirnm"; \ + $(AMTAR) chf - $(errordetails) | (cd "$$dirnm"; $(AMTAR) xf -); \ + $(AMTAR) chf - "$$dirnm" | eval GZIP= gzip $(GZIP_ENV) -c >"$$fnm"; \ + echo "*** Testing FAILED! Details: $$fnm"; \ + echo '*** Please report to <$(PACKAGE_BUGREPORT)>'; echo; \ + exit $$er; \ + fi; \ + else \ + echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \ + fi; \ + else \ + echo "Can't find the $(PACKAGE_NAME) test suite ($(top_srcdir)/tests)."; \ + fi + +# --------------- Maintainer's Section + +# Tell automake that I haven't forgotten about this file and it will be +# created before we build a distribution (see maintMakefile in the Git +# distribution). + +README: + +@MAINT_MAKEFILE@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/local/recipes/dev/gnu-make/source/NEWS b/local/recipes/dev/gnu-make/source/NEWS new file mode 100644 index 0000000000..c370b0a14a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/NEWS @@ -0,0 +1,1834 @@ +GNU Make NEWS -*-indented-text-*- + History of user-visible changes. + 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, +which is contained in this distribution as the file doc/make.texi. +See the README file and the GNU Make manual for instructions for +reporting bugs. + +Version 4.4 (31 Oct 2022) + +A complete list of bugs fixed in this version is available here: + +https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=109&set=custom + +* WARNING: Deprecation! + The following systems are deprecated in this release: + - OS/2 (EMX) + - AmigaOS + - Xenix + - Cray + In the NEXT release of GNU Make, support for these systems will be removed. + If you want to see them continue to be supported, contact . + +* WARNING: Future backward-incompatibility! + In the NEXT release of GNU Make, pattern rules will implement the same + behavior change for multiple targets as explicit grouped targets, below: if + any target of the rule is needed by the build, the recipe will be invoked if + any target of the rule is missing or out of date. During testing some + makefiles were found to contain pattern rules that do not build all targets; + this can cause issues so we are delaying this change for one release cycle + to allow these makefiles to be updated. GNU Make shows a warning if it + detects this situation: "pattern recipe did not update peer target". + +* WARNING: Backward-incompatibility! + GNU Make now uses temporary files in more situations than previous releases. + If your build system sets TMPDIR (or TMP or TEMP on Windows) and deletes the + contents during the build, or uses restrictive permissions, this may cause + problems. You can choose an alternative temporary directory only for use by + GNU Make by setting the new MAKE_TMPDIR environment variable before invoking + make. Note that this value CANNOT be set inside the makefile, since make + needs to find its temporary directory before the makefiles are parsed. + +* WARNING: Backward-incompatibility! + Previously each target in a explicit grouped target rule was considered + individually: if the targets needed by the build were not out of date the + recipe was not run even if other targets in the group were out of date. Now + if any of the grouped targets are needed by the build, then if any of the + grouped targets are out of date the recipe is run and all targets in the + group are considered updated. + +* WARNING: Backward-incompatibility! + Previously if --no-print-directory was seen anywhere in the environment or + command line it would take precedence over any --print-directory. Now, the + last setting of directory printing options seen will be used, so a command + line such as "--no-print-directory -w" _will_ show directory entry/exits. + +* WARNING: Backward-incompatibility! + Previously the order in which makefiles were remade was not explicitly + stated, but it was (roughly) the inverse of the order in which they were + processed by make. In this release, the order in which makefiles are + rebuilt is the same order in which make processed them, and this is defined + to be true in the GNU Make manual. + +* WARNING: Backward-incompatibility! + Previously only simple (one-letter) options were added to the MAKEFLAGS + variable that was visible while parsing makefiles. Now, all options are + available in MAKEFLAGS. If you want to check MAKEFLAGS for a one-letter + option, expanding "$(firstword -$(MAKEFLAGS))" is a reliable way to return + the set of one-letter options which can be examined via findstring, etc. + +* WARNING: Backward-incompatibility! + Previously makefile variables marked as export were not exported to commands + started by the $(shell ...) function. Now, all exported variables are + exported to $(shell ...). If this leads to recursion during expansion, then + for backward-compatibility the value from the original environment is used. + To detect this change search for 'shell-export' in the .FEATURES variable. + +* WARNING: New build requirement + GNU Make utilizes facilities from GNU Gnulib: Gnulib requires certain C99 + features in the C compiler and so these features are required by GNU Make: + https://www.gnu.org/software/gnulib/manual/html_node/C99-features-assumed.html + The configure script should verify the compiler has these features. + +* New feature: The .WAIT special target + If the .WAIT target appears between two prerequisites of a target, then + GNU Make will wait for all of the targets to the left of .WAIT in the list + to complete before starting any of the targets to the right of .WAIT. + This feature is available in some other versions of make, and it will be + required by an upcoming version of the POSIX standard for make. + Different patches were made by Alexey Neyman (2005) + and Steffen Nurpmeso (2020) that were useful but the + result is a different implementation (closer to Alexey's idea). + +* New feature: .NOTPARALLEL accepts prerequisites + If the .NOTPARALLEL special target has prerequisites then all prerequisites + of those targets will be run serially (as if .WAIT was specified between + each prerequisite). + +* New feature: The .NOTINTERMEDIATE special target + .NOTINTERMEDIATE disables intermediate behavior for specific files, for all + files built using a pattern, or for the entire makefile. + Implementation provided by Dmitry Goncharov + +* New feature: The $(let ...) function + This function allows user-defined functions to define a set of local + variables: values can be assigned to these variables from within the + user-defined function and they will not impact global variable assignments. + Implementation provided by Jouke Witteveen + +* New feature: The $(intcmp ...) function + This function allows conditional evaluation controlled by a numerical + comparison. + Implementation provided by Jouke Witteveen + +* New feature: Improved support for -l / --load-average + On systems that provide /proc/loadavg (Linux), GNU Make will use it to + determine the number of runnable jobs and use this as the current load, + avoiding the need for heuristics. + Implementation provided by Sven C. Dack + +* New feature: The --shuffle command line option + This option reorders goals and prerequisites to simulate non-determinism + that may be seen using parallel build. Shuffle mode allows a form of "fuzz + testing" of parallel builds to verify that all prerequisites are correctly + described in the makefile. + Implementation provided by Sergei Trofimovich + +* New feature: The --jobserver-style command line option and named pipes + A new jobserver method is used on systems where mkfifo(3) is supported. + This solves a number of obscure issues related to using the jobserver + and recursive invocations of GNU Make. This change means that sub-makes + will connect to the jobserver even if they are not marked as recursive. + It also means that other tools that want to participate in the jobserver + will need to be enhanced as described in the GNU Make manual. + You can force GNU Make to use the simple pipe-based jobserver (perhaps if + you are integrating with other tools or older versions of GNU Make) by + adding the '--jobserver-style=pipe' option to the command line of the + top-level invocation of GNU Make, or via MAKEFLAGS or GNUMAKEFLAGS. + To detect this change search for 'jobserver-fifo' in the .FEATURES variable. + +* Some POSIX systems (*BSD) do not allow locks to be taken on pipes, which + caused the output sync feature to not work properly there. Also multiple + invocations of make redirecting to the same output file (e.g., /dev/null) + would cause hangs. Instead of locking stdout (which does have some useful + performance characteristics, but is not portable) create a temporary file + and lock that. Windows continues to use a mutex as before. + +* GNU Make has sometimes chosen unexpected, and sub-optimal, chains of + implicit rules due to the definition of "ought to exist" in the implicit + rule search algorithm, which considered any prerequisite mentioned in the + makefile as "ought to exist". This algorithm has been modified to prefer + prerequisites mentioned explicitly in the target being built and only if + that results in no matching rule, will GNU Make consider prerequisites + mentioned in other targets as "ought to exist". + Implementation provided by Dmitry Goncharov + +* GNU Make was performing secondary expansion of all targets, even targets + which didn't need to be considered during the build. In this release + only targets which are considered will be secondarily expanded. + Implementation provided by Dmitry Goncharov + +* If the MAKEFLAGS variable is modified in a makefile, it will be re-parsed + immediately rather than after all makefiles have been read. Note that + although all options are parsed immediately, some special effects won't + appear until after all makefiles are read. + +* The -I option accepts an argument "-" (e.g., "-I-") which means "reset the + list of search directories to empty". Among other things this can be used + to prevent GNU Make from searching in its default list of directories. + +* New debug option "print" will show the recipe to be run, even when silent + mode is set, and new debug option "why" will show why a target is rebuilt + (which prerequisites caused the target to be considered out of date). + Implementation provided by David Boyce + +* The existing --trace option is made equivalent to --debug=print,why + +* Target-specific variables can now be marked "unexport". + +* Exporting / unexporting target-specific variables is handled correctly, so + that the attribute of the most specific variable setting is used. + +* Special targets like .POSIX are detected upon definition, ensuring that any + change in behavior takes effect immediately, before the next line is parsed. + +* When the pipe-based jobserver is enabled and GNU Make decides it is invoking + a non-make sub-process and closes the jobserver pipes, it will now add a new + option to the MAKEFLAGS environment variable that disables the jobserver. + This prevents sub-processes that invoke make from accidentally using other + open file descriptors as jobserver pipes. For more information see + https://savannah.gnu.org/bugs/?57242 and https://savannah.gnu.org/bugs/?62397 + +* A long-standing issue with the directory cache has been resolved: changes + made as a side-effect of some other target's recipe are now noticed as + expected. + +* GNU Make can now be built for MS-Windows using the Tiny C tcc compiler. + Port provided by Christian Jullien + + +Version 4.3 (19 Jan 2020) + +A complete list of bugs fixed in this version is available here: + +https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&set=custom + +* WARNING: Backward-incompatibility! + Number signs (#) appearing inside a macro reference or function invocation + no longer introduce comments and should not be escaped with backslashes: + thus a call such as: + foo := $(shell echo '#') + is legal. Previously the number sign needed to be escaped, for example: + foo := $(shell echo '\#') + Now this latter will resolve to "\#". If you want to write makefiles + portable to both versions, assign the number sign to a variable: + H := \# + foo := $(shell echo '$H') + This was claimed to be fixed in 3.81, but wasn't, for some reason. + To detect this change search for 'nocomment' in the .FEATURES variable. + +* WARNING: Backward-incompatibility! + Previously appending using '+=' to an empty variable would result in a value + starting with a space. Now the initial space is only added if the variable + 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 + prerequisites are ignored by the pattern rules. POSIX specifies that in + order to be a suffix rule there can be no prerequisites defined. In this + release if POSIX mode is enabled then rules with prerequisites cannot be + suffix rules. If POSIX mode is not enabled then the previous behavior is + preserved (a pattern rule with no extra prerequisites is created) AND a + warning about this behavior is generated: + warning: ignoring prerequisites on suffix rule definition + The POSIX behavior will be adopted as the only behavior in a future release + of GNU make so please resolve any warnings. + +* New feature: Grouped explicit targets + Pattern rules have always had the ability to generate multiple targets with + a single invocation of the recipe. It's now possible to declare that an + explicit rule generates multiple targets with a single invocation. To use + this, replace the ":" token with "&:" in the rule. To detect this feature + search for 'grouped-target' in the .FEATURES special variable. + Implementation contributed by Kaz Kylheku + +* New feature: .EXTRA_PREREQS variable + Words in this variable are considered prerequisites of targets but they are + not added to any of the automatic variable values when expanding the + recipe. This variable can either be global (applies to all targets) or + a target-specific variable. To detect this feature search for 'extra-prereqs' + in the .FEATURES special variable. + Implementation contributed by Christof Warlich + +* Makefiles can now specify the '-j' option in their MAKEFLAGS variable and + this will cause make to enable that parallelism mode. + +* GNU make will now use posix_spawn() on systems where it is available. + If you prefer to use fork/exec even on systems where posix_spawn() is + present, you can use the --disable-posix-spawn option to configure. + Implementation contributed by Aron Barath + +* Error messages printed when invoking non-existent commands have been cleaned + up and made consistent. + +* The previous limit of 63 jobs under -jN on MS-Windows is now + increased to 4095. That limit includes the subprocess started by + the $(shell) function. + +* A new option --no-silent has been added, that cancels the effect of the + -s/--silent/--quiet flag. + +* A new option -E has been added as a short alias for --eval. + +* All wildcard expansion within GNU make, including $(wildcard ...), will sort + the results. See https://savannah.gnu.org/bugs/index.php?52076 + +* Interoperate with newer GNU libc and musl C runtime libraries. + +* Performance improvements provided by Paolo Bonzini + +GNU make Developer News + +* Import the GNU standard bootstrap script to replace the hand-rolled + "make update" method for building code from a GNU make Git repository. + +* Rework the source distribution to move source files into the src/* + subdirectory. This aligns with modern best practices in GNU. + +* Replace local portability code with Gnulib content. Unfortunately due to a + problem with Gnulib support for getloadavg, this forces a requirement on + Automake 1.16 or above in order to build from Git. See README.git. + + +Version 4.2.1 (10 Jun 2016) + +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=107&set=custom + +This release is a bug-fix release. + + +Version 4.2 (22 May 2016) + +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=106&set=custom + +* New variable: $(.SHELLSTATUS) is set to the exit status of the last != or + $(shell ...) function invoked in this instance of make. This will be "0" if + successful or not "0" if not successful. The variable value is unset if no + != or $(shell ...) function has been invoked. + +* The $(file ...) function can now read from a file with $(file + +* The interface to GNU make's "jobserver" is stable as documented in the + manual, for tools which may want to access it. + + WARNING: Backward-incompatibility! The internal-only command line option + --jobserver-fds has been renamed for publishing, to --jobserver-auth. + +* The amount of parallelism can be determined by querying MAKEFLAGS, even when + the job server is enabled (previously MAKEFLAGS would always contain only + "-j", with no number, when job server was enabled). + +* VMS-specific changes: + + * Perl test harness now works. + + * Full support for converting Unix exit status codes to VMS exit status + codes. BACKWARD INCOMPATIBILITY Notice: On a child failure the VMS exit + code is now the encoded Unix exit status that Make usually generates, not + the VMS exit status of the child. + + +Version 4.1 (05 Oct 2014) + +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=105&set=custom + +* New variables: $(MAKE_TERMOUT) and $(MAKE_TERMERR) are set to non-empty + values if stdout or stderr, respectively, are believed to be writing to a + terminal. These variables are exported by default. + +* Allow a no-text-argument form of the $(file ...) function. Without a text + argument nothing is written to the file: it is simply opened in the + requested mode, then closed again. + +* Change the fatal error for mixed explicit and implicit rules, that was + introduced in GNU make 3.82, to a non-fatal error. However, this syntax is + still deprecated and may return to being illegal in a future version of GNU + make. Makefiles that rely on this syntax should be fixed. + See https://savannah.gnu.org/bugs/?33034 + +* VMS-specific changes: + + * Support for library files added, including support for using the GNV ar + utility. + + * Partial support for properly encoding Unix exit status codes into VMS exit + status codes. + + WARNING: Backward-incompatibility! These are different exit status codes + than Make exited with in the past. + + * Macros to hold the current make command are set up to translate the + argv[0] string to a VMS format path name and prefix it with "MCR " so that + the macro has a space in it. + + WARNING: Backward-incompatibility! This may break complex makefiles that + do processing on those macros. This is unlikely because so much in that + area was not and is still not currently working on VMS, it is unlikely to + find such a complex makefile, so this is more likely to impact + construction of a future makefile. + + * A command file is always used to run the commands for a recipe. + + WARNING: Backward-incompatibility! Running the make self tests has + exposed that there are significant differences in behavior when running + with the command file mode. It is unknown if this will be noticed by most + existing VMS makefiles. + +Version 4.0 (09 Oct 2013) + +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=101&set=custom + +* WARNING: Backward-incompatibility! + If .POSIX is specified, then make adheres to the POSIX backslash/newline + handling requirements, which introduces the following changes to the + standard backslash/newline handling in non-recipe lines: + * Any trailing space before the backslash is preserved + * Each backslash/newline (plus subsequent whitespace) is converted to a + single space + +* New feature: GNU Guile integration + This version of GNU make can be compiled with GNU Guile integration. + GNU Guile serves as an embedded extension language for make. + See the "Guile Function" section in the GNU Make manual for details. + Currently GNU Guile 1.8 and 2.0+ are supported. In Guile 1.8 there is no + support for internationalized character sets. In Guile 2.0+, scripts can be + encoded in UTF-8. + +* New command line option: --output-sync (-O) enables grouping of output by + target or by recursive make. This is useful during parallel builds to avoid + mixing output from different jobs together giving hard-to-understand + results. Original implementation by David Boyce . + Reworked and enhanced by Frank Heckenbach . + Windows support by Eli Zaretskii . + +* New command line option: --trace enables tracing of targets. When enabled + the recipe to be invoked is printed even if it would otherwise be suppressed + by .SILENT or a "@" prefix character. Also before each recipe is run the + makefile name and linenumber where it was defined are shown as well as the + prerequisites that caused the target to be considered out of date. + +* New command line option argument: --debug now accepts a "n" (none) flag + which disables all debugging settings that are currently enabled. + +* New feature: The "job server" capability is now supported on Windows. + Implementation contributed by Troy Runkel + +* New feature: The .ONESHELL capability is now supported on Windows. Support + added by Eli Zaretskii . + +* New feature: "!=" shell assignment operator as an alternative to the + $(shell ...) function. Implemented for compatibility with BSD makefiles. + Note there are subtle differences between "!=" and $(shell ...). See the + description in the GNU make manual. + WARNING: Backward-incompatibility! + Variables ending in "!" previously defined as "variable!= value" will now be + interpreted as shell assignment. Change your assignment to add whitespace + between the "!" and "=": "variable! = value" + +* New feature: "::=" simple assignment operator as defined by POSIX in 2012. + This operator has identical functionality to ":=" in GNU make, but will be + portable to any implementation of make conforming to a sufficiently new + version of POSIX (see https://austingroupbugs.net/view.php?id=330). It is + not necessary to define the .POSIX target to access this operator. + +* New feature: Loadable objects + This version of GNU make contains a "technology preview": the ability to + load dynamic objects into the make runtime. These objects can be created by + the user and can add extended functionality, usable by makefiles. + +* New function: $(file ...) writes to a file. + +* New variable: $(GNUMAKEFLAGS) will be parsed for make flags, just like + MAKEFLAGS is. It can be set in the environment or the makefile, containing + GNU make-specific flags to allow your makefile to be portable to other + versions of make. Once this variable is parsed, GNU make will set it to the + empty string so that flags will not be duplicated on recursion. + +* New variable: `MAKE_HOST' gives the name of the host architecture + make was compiled for. This is the same value you see after 'Built for' + when running 'make --version'. + +* Behavior of MAKEFLAGS and MFLAGS is more rigorously defined. All simple + flags are grouped together in the first word of MAKEFLAGS. No options that + accept arguments appear in the first word. If no simple flags are present + MAKEFLAGS begins with a space. Flags with both short and long versions + always use the short versions in MAKEFLAGS. Flags are listed in + alphabetical order using ASCII ordering. MFLAGS never begins with "- ". + +* Setting the -r and -R options in MAKEFLAGS inside a makefile now works as + expected, removing all built-in rules and variables, respectively. + +* If a recipe fails, the makefile name and linenumber of the recipe are shown. + +* A .RECIPEPREFIX setting is remembered per-recipe and variables expanded + in that recipe also use that recipe prefix setting. + +* In -p output, .RECIPEPREFIX settings are shown and all target-specific + variables are output as if in a makefile, instead of as comments. + +* On MS-Windows, recipes that use ".." quoting will no longer force + invocation of commands via temporary batch files and stock Windows + shells, they will be short-circuited and invoked directly. (In + other words, " is no longer a special character for stock Windows + shells.) This avoids hitting shell limits for command length when + quotes are used, but nothing else in the command requires the shell. + This change could potentially mean some minor incompatibilities in + behavior when the recipe uses quoted string on shell command lines. + + +Version 3.82 (28 Jul 2010) + +A complete list of bugs fixed in this version is available here: + +https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set=custom + +* Compiling GNU make now requires a conforming ISO C 1989 compiler and + standard runtime library. + +* WARNING: Backward-incompatibility! + The POSIX standard for make was changed in the 2008 version in a + fundamentally incompatible way: make is required to invoke the shell as if + the '-e' flag were provided. Because this would break many makefiles that + have been written to conform to the original text of the standard, the + default behavior of GNU make remains to invoke the shell with simply '-c'. + However, any makefile specifying the .POSIX special target will follow the + new POSIX standard and pass '-e' to the shell. See also .SHELLFLAGS + below. + +* WARNING: Backward-incompatibility! + The '$?' variable now contains all prerequisites that caused the target to + be considered out of date, even if they do not exist (previously only + existing targets were provided in $?). + +* WARNING: Backward-incompatibility! + Wildcards were not documented as returning sorted values, but the results + have been sorted up until this release.. If your makefiles require sorted + results from wildcard expansions, use the $(sort ...) function to request + it explicitly. + +* WARNING: Backward-incompatibility! + As a result of parser enhancements, three backward-compatibility issues + exist: first, a prerequisite containing an "=" cannot be escaped with a + backslash any longer. You must create a variable containing an "=" and + use that variable in the prerequisite. Second, variable names can no + longer contain whitespace, unless you put the whitespace in a variable and + use the variable. Third, in previous versions of make it was sometimes + not flagged as an error for explicit and pattern targets to appear in the + same rule. Now this is always reported as an error. + +* WARNING: Backward-incompatibility! + The pattern-specific variables and pattern rules are now applied in the + shortest stem first order instead of the definition order (variables + and rules with the same stem length are still applied in the definition + order). This produces the usually-desired behavior where more specific + patterns are preferred. To detect this feature search for 'shortest-stem' + in the .FEATURES special variable. + +* WARNING: Backward-incompatibility! + The library search behavior has changed to be compatible with the standard + linker behavior. Prior to this version for prerequisites specified using + the -lfoo syntax make first searched for libfoo.so in the current + directory, vpath directories, and system directories. If that didn't yield + a match, make then searched for libfoo.a in these directories. Starting + with this version make searches first for libfoo.so and then for libfoo.a + in each of these directories in order. + +* New command line option: --eval=STRING causes STRING to be evaluated as + makefile syntax (akin to using the $(eval ...) function). The evaluation + is performed after all default rules and variables are defined, but before + any makefiles are read. + +* New special variable: .RECIPEPREFIX allows you to reset the recipe + introduction character from the default (TAB) to something else. The + first character of this variable value is the new recipe introduction + character. If the variable is set to the empty string, TAB is used again. + It can be set and reset at will; recipes will use the value active when + they were first parsed. To detect this feature check the value of + $(.RECIPEPREFIX). + +* New special variable: .SHELLFLAGS allows you to change the options passed + to the shell when it invokes recipes. By default the value will be "-c" + (or "-ec" if .POSIX is set). + +* New special target: .ONESHELL instructs make to invoke a single instance + of the shell and provide it with the entire recipe, regardless of how many + lines it contains. As a special feature to allow more straightforward + conversion of makefiles to use .ONESHELL, any recipe line control + characters ('@', '+', or '-') will be removed from the second and + subsequent recipe lines. This happens _only_ if the SHELL value is deemed + to be a standard POSIX-style shell. If not, then no interior line control + characters are removed (as they may be part of the scripting language used + with the alternate SHELL). + +* New variable modifier 'private': prefixing a variable assignment with the + modifier 'private' suppresses inheritance of that variable by + prerequisites. This is most useful for target- and pattern-specific + variables. + +* New make directive: 'undefine' allows you to undefine a variable so that + it appears as if it was never set. Both $(flavor) and $(origin) functions + will return 'undefined' for such a variable. To detect this feature search + for 'undefine' in the .FEATURES special variable. + +* The parser for variable assignments has been enhanced to allow multiple + modifiers ('export', 'override', 'private') on the same line as variables, + including define/endef variables, and in any order. Also, it is possible + to create variables and targets named as these modifiers. + +* The 'define' make directive now allows a variable assignment operator + after the variable name, to allow for simple, conditional, or appending + multi-line variable assignment. + +* VMS-specific changes: + + * Michael Gehre (at VISTEC-SEMI dot COM) supplied a fix for a problem with + timestamps of object modules in OLBs. The timestamps were not correctly + adjusted to GMT based time, if the local VMS time was using a daylight + saving algorithm and if daylight saving was switched off. + + * John Eisenbraun (at HP dot COM) supplied fixes and and an enhancement to + append output redirection in action lines. + + * Rework of ctrl+c and ctrl+y handling. + + * Fix a problem with cached strings, which showed on case-insensitive file + systems. + + * Build fixes for const-ified code in VMS specific sources. + + * A note on appending the redirected output. With this change, a simple + mechanism is implemented to make ">>" work in action lines. In VMS + there is no simple feature like ">>" to have DCL command or program + output redirected and appended to a file. GNU make for VMS already + implements the redirection of output. If such a redirection is detected, + an ">" on the action line, GNU make creates a DCL command procedure to + execute the action and to redirect its output. Based on that, now ">>" + is also recognized and a similar but different command procedure is + created to implement the append. The main idea here is to create a + temporary file which collects the output and which is appended to the + wanted output file. Then the temporary file is deleted. This is all done + in the command procedure to keep changes in make small and simple. This + obviously has some limitations but it seems good enough compared with + the current ">" implementation. (And in my opinion, redirection is not + really what GNU make has to do.) With this approach, it may happen that + the temporary file is not yet appended and is left in SYS$SCRATCH. + The temporary file names look like "CMDxxxxx.". Any time the created + command procedure can not complete, this happens. Pressing Ctrl+Y to + abort make is one case. In case of Ctrl+Y the associated command + procedure is left in SYS$SCRATCH as well. Its name is CMDxxxxx.COM. + + * Change in the Ctrl+Y handling. The CtrlY handler now uses $delprc to + delete all children. This way also actions with DCL commands will be + stopped. As before the CtrlY handler then sends SIGQUIT to itself, + which is handled in common code. + + * Change in deleteing temporary command files. Temporary command files + are now deleted in the vms child termination handler. That deletes + them even if a Ctrl+C was pressed. + + * 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. + + +Version 3.81 (01 Apr 2006) + +* GNU make is ported to OS/2. + +* GNU make is ported to MinGW. The MinGW build is only supported by + the build_w32.bat batch file; see the file README.W32 for more + details. + +* WARNING: Future backward-incompatibility! + Up to and including this release, the '$?' variable does not contain + any prerequisite that does not exist, even though that prerequisite + might have caused the target to rebuild. Starting with the _next_ + release of GNU make, '$?' will contain all prerequisites that caused + the target to be considered out of date. + See https://savannah.gnu.org/bugs/?16051 + +* WARNING: Backward-incompatibility! + GNU make now implements a generic "second expansion" feature on the + prerequisites of both explicit and implicit (pattern) rules. In order + to enable this feature, the special target '.SECONDEXPANSION' must be + defined before the first target which takes advantage of it. If this + feature is enabled then after all rules have been parsed the + prerequisites are expanded again, this time with all the automatic + variables in scope. This means that in addition to using standard + SysV $$@ in prerequisites lists, you can also use complex functions + such as $$(notdir $$@) etc. This behavior applies to implicit rules, + as well, where the second expansion occurs when the rule is matched. + However, this means that when '.SECONDEXPANSION' is enabled you must + double-quote any "$" in your filenames; instead of "foo: boo$$bar" you + now must write "foo: foo$$$$bar". Note that the SysV $$@ etc. feature, + which used to be available by default, is now ONLY available when the + .SECONDEXPANSION target is defined. If your makefiles take advantage + of this SysV feature you will need to update them. + +* WARNING: Backward-incompatibility! + In order to comply with POSIX, the way in which GNU make processes + backslash-newline sequences in recipes has changed. If your makefiles + use backslash-newline sequences inside of single-quoted strings in + recipes you will be impacted by this change. See the GNU make manual + subsection "Splitting Recipe Lines" (node "Splitting Lines"), in + section "Recipe Syntax", chapter "Writing Recipe in Rules", for + details. + +* WARNING: Backward-incompatibility! + Some previous versions of GNU make had a bug where "#" in a function + invocation such as $(shell ...) was treated as a make comment. A + workaround was to escape these with backslashes. This bug has been + fixed: if your makefile uses "\#" in a function invocation the + backslash is now preserved, so you'll need to remove it. + +* New command line option: -L (--check-symlink-times). On systems that + support symbolic links, if this option is given then GNU make will + use the most recent modification time of any symbolic links that are + used to resolve target files. The default behavior remains as it + always has: use the modification time of the actual target file only. + +* The "else" conditional line can now be followed by any other valid + conditional on the same line: this does not increase the depth of the + conditional nesting, so only one "endif" is required to close the + conditional. + +* All pattern-specific variables that match a given target are now used + (previously only the first match was used). + +* Target-specific variables can be marked as exportable using the + "export" keyword. + +* In a recursive $(call ...) context, any extra arguments from the outer + call are now masked in the context of the inner call. + +* Implemented a solution for the "thundering herd" problem with "-j -l". + This version of GNU make uses an algorithm suggested by Thomas Riedl + to track the number of jobs started in the + last second and artificially adjust GNU make's view of the system's + load average accordingly. + +* New special variables available in this release: + - .INCLUDE_DIRS: Expands to a list of directories that make searches + for included makefiles. + - .FEATURES: Contains a list of special features available in this + version of GNU make. + - .DEFAULT_GOAL: Set the name of the default goal make will + use if no goals are provided on the command line. + - MAKE_RESTARTS: If set, then this is the number of times this + instance of make has been restarted (see "How Makefiles Are Remade" + in the manual). + - New automatic variable: $| (added in 3.80, actually): contains all + the order-only prerequisites defined for the target. + +* New functions available in this release: + - $(lastword ...) returns the last word in the list. This gives + identical results as $(word $(words ...) ...), but is much faster. + - $(abspath ...) returns the absolute path (all "." and ".." + directories resolved, and any duplicate "/" characters removed) for + each path provided. + - $(realpath ...) returns the canonical pathname for each path + provided. The canonical pathname is the absolute pathname, with + all symbolic links resolved as well. + - $(info ...) prints its arguments to stdout. No makefile name or + line number info, etc. is printed. + - $(flavor ...) returns the flavor of a variable. + - $(or ...) provides a short-circuiting OR conditional: each argument + is expanded. The first true (non-empty) argument is returned; no + further arguments are expanded. Expands to empty if there are no + true arguments. + - $(and ...) provides a short-circuiting AND conditional: each + argument is expanded. The first false (empty) argument is + returned; no further arguments are expanded. Expands to the last + argument if all arguments are true. + +* Changes made for POSIX compatibility: + - Only touch targets (under -t) if they have a recipe. + - Setting the SHELL make variable does NOT change the value of the + SHELL environment variable given to programs invoked by make. As + an enhancement to POSIX, if you export the make variable SHELL then + it will be set in the environment, just as before. + +* On MS Windows systems, explicitly setting SHELL to a pathname ending + in "cmd" or "cmd.exe" (case-insensitive) will force GNU make to use + the DOS command interpreter in batch mode even if a UNIX-like shell + could be found on the system. + +* On VMS there is now support for case-sensitive filesystems such as ODS5. + See the README.VMS file for information. + +* Parallel builds (-jN) no longer require a working Bourne shell on + Windows platforms. They work even with the stock Windows shells, such + as cmd.exe and command.com. + +* Updated to autoconf 2.59, automake 1.9.5, and gettext 0.14.1. Users + should not be impacted. + +* New translations for Swedish, Chinese (simplified), Ukrainian, + Belarusian, Finnish, Kinyarwandan, and Irish. Many updated + translations. + +A complete list of bugs fixed in this version is available here: + + https://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=103 + + +Version 3.80 (03 Oct 2002) + +* A new feature exists: order-only prerequisites. These prerequisites + affect the order in which targets are built, but they do not impact + the rebuild/no-rebuild decision of their dependents. That is to say, + they allow you to require target B be built before target A, without + requiring that target A will always be rebuilt if target B is updated. + Patch for this feature provided by Greg McGary . + +* For compatibility with SysV make, GNU make now supports the peculiar + syntax $$@, $$(@D), and $$(@F) in the prerequisites list of a rule. + This syntax is only valid within explicit and static pattern rules: it + cannot be used in implicit (suffix or pattern) rules. Edouard G. Parmelan + provided a patch implementing this feature; however, I + decided to implement it in a different way. + +* The argument to the "ifdef" conditional is now expanded before it's + tested, so it can be a constructed variable name. + + Similarly, the arguments to "export" (when not used in a variable + definition context) and "unexport" are also now expanded. + +* A new function is defined: $(value ...). The argument to this + function is the _name_ of a variable. The result of the function is + the value of the variable, without having been expanded. + +* A new function is defined: $(eval ...). The arguments to this + function should expand to makefile commands, which will then be + evaluated as if they had appeared in the makefile. In combination + with define/endef multiline variable definitions this is an extremely + powerful capability. The $(value ...) function is also sometimes + useful here. + +* A new built-in variable is defined, $(MAKEFILE_LIST). It contains a + list of each makefile GNU make has read, or started to read, in the + order in which they were encountered. So, the last filename in the + list when a makefile is just being read (before any includes) is the + name of the current makefile. + +* A new built-in variable is defined: $(.VARIABLES). When it is + expanded it returns a complete list of variable names defined by all + makefiles at that moment. + +* A new command line option is defined, -B or --always-make. If + specified GNU make will consider all targets out-of-date even if they + would otherwise not be. + +* The arguments to $(call ...) functions were being stored in $1, $2, + etc. as recursive variables, even though they are fully expanded + before assignment. This means that escaped dollar signs ($$ etc.) + were not behaving properly. Now the arguments are stored as simple + variables. This may mean that if you added extra escaping to your + $(call ...) function arguments you will need to undo it now. + +* The variable invoked by $(call ...) can now be recursive: unlike other + variables it can reference itself and this will not produce an error + when it is used as the first argument to $(call ...) (but only then). + +* New pseudo-target .LOW_RESOLUTION_TIME, superseding the configure + option --disable-nsec-timestamps. You might need this if your build + process depends on tools like "cp -p" preserving time stamps, since + "cp -p" (right now) doesn't preserve the subsecond portion of a time + stamp. + +* Updated translations for French, Galician, German, Japanese, Korean, + and Russian. New translations for Croatian, Danish, Hebrew, and + Turkish. + +* Updated internationalization support to Gettext 0.11.5. + GNU make now uses Gettext's "external" feature, and does not include + any internationalization code itself. Configure will search your + system for an existing implementation of GNU Gettext (only GNU Gettext + is acceptable) and use it if it exists. If not, NLS will be disabled. + See ABOUT-NLS for more information. + +* Updated to autoconf 2.54 and automake 1.7. Users should not be impacted. + +* VMS-specific changes: + + * In default.c define variable ARCH as IA64 for VMS on Itanium systems. + + * In makefile.vms avoid name collision for glob and globfree. + + * This is the VMS port of GNU Make done by Hartmut.Becker@compaq.com. + + It is based on the specific version 3.77k and on 3.78.1. 3.77k was done + by Klaus Kämpf , the code was based on the VMS port of + GNU Make 3.60 by Mike Moretti. + + It was ported on OpenVMS/Alpha V7.1, DECC V5.7-006. It was re-build and + tested on OpenVMS/Alpha V7.2, OpenVMS/VAX 7.1 and 5.5-2. Different + versions of DECC were used. VAXC was tried: it fails; but it doesn't + seem worth to get it working. There are still some PTRMISMATCH warnings + during the compile. Although perl is working on VMS the test scripts + don't work. The function $shell is still missing. + + There is a known bug in some of the VMS CRTLs. It is in the shipped + versions of VMS V7.2 and V7.2-1 and in the currently (October 1999) + available ECOs for VMS V7.1 and newer versions. It is fixed in versions + shipped with newer VMS versions and all ECO kits after October 1999. It + only shows up during the daylight saving time period (DST): stat() + returns a modification time 1 hour ahead. This results in GNU make + warning messages. For a just created source you will see: + + $ gmake x.exe + gmake.exe;1: *** Warning: File 'x.c' has modification time in the future + (940582863 > 940579269) + cc /obj=x.obj x.c + link x.obj /exe=x.exe + gmake.exe;1: *** Warning: Clock skew detected. Your build may be + incomplete. + + +A complete list of bugs fixed in this version is available here: + + https://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=102 + + +Version 3.79.1 (23 Jun 2000) + +* .SECONDARY with no prerequisites now prevents any target from being + removed because make thinks it's an intermediate file, not just those + listed in the makefile. + +* New configure option --disable-nsec-timestamps, but this was + superseded in later versions by the .LOW_RESOLUTION_TIME pseudo-target. + +Version 3.79 (04 Apr 2000) + +* GNU make optionally supports internationalization and locales via the + GNU gettext (or local gettext if suitable) package. See the ABOUT-NLS + file for more information on configuring GNU make for NLS. + +* Previously, GNU make quoted variables such as MAKEFLAGS and + MAKEOVERRIDES for proper parsing by the shell. This allowed them to + be used within make build scripts. However, using them there is not + proper behavior: they are meant to be passed to subshells via the + environment. Unfortunately the values were not quoted properly to be + passed through the environment. This meant that make didn't properly + pass some types of command line values to submakes. + + With this version we change that behavior: now these variables are + quoted properly for passing through the environment, which is the + correct way to do it. If you previously used these variables + explicitly within a make rule you may need to re-examine your use for + correctness given this change. + +* A new pseudo-target .NOTPARALLEL is available. If defined, the + current makefile is run serially regardless of the value of -j. + However, submakes are still eligible for parallel execution. + +* The --debug option has changed: it now allows optional flags + controlling the amount and type of debugging output. By default only + a minimal amount information is generated, displaying the names of + "normal" targets (not makefiles) that were deemed out of date and in + need of being rebuilt. + + Note that the -d option behaves as before: it takes no arguments and + all debugging information is generated. + +* The `-p' (print database) output now includes filename and linenumber + information for variable definitions, to aid debugging. + +* The wordlist function no longer reverses its arguments if the "start" + value is greater than the "end" value. If that's true, nothing is + returned. + +* Hartmut Becker provided many updates for the VMS port of GNU make. + See the README.VMS file for more details. + +* VMS-specific changes: + + * Fix a problem with automatically remaking makefiles. GNU make uses an + execve to restart itself after a successful remake of the makefile. On + UNIX systems execve replaces the running program with a new one and + resets all signal handling to the default. On VMS execve creates a child + process, signal and exit handlers of the parent are still active, and, + unfortunately, corrupt the exit code from the child. Fix in job.c: + ignore SIGCHLD. + + * Added some switches to reflect latest features of DECC. Modifications in + makefile.vms. + + * Set some definitions to reflect latest features of DECC. Modifications in + config.h-vms (which is copied to config.h). + + * Added extern strcmpi declaration to avoid 'implicitly declared' messages. + Modification in make.h. + + * Default rule for C++, conditionals for gcc (GCC_IS_NATIVE) or DEC/Digital/ + Compaq c/c++ compilers. Modifications in default.c. + + * Usage of opendir() and friends, suppress file version. Modifications in + dir.c. + + * Added VMS specific code to handle ctrl+c and ctrl+y to abort make. + Modifications in job.c. + + * Added support to have case sensitive targets and dependencies but to + still use case blind file names. This is especially useful for Java + makefiles on VMS: + + .SUFFIXES : + .SUFFIXES : .class .java + .java.class : + javac "$< + HelloWorld.class : HelloWorld.java + + * A new macro WANT_CASE_SENSITIVE_TARGETS in config.h-vms was introduced. + It needs to be enabled to get this feature; default is disabled. The + macro HAVE_CASE_INSENSITIVE_FS must not be touched: it is still enabled. + Modifications in file.c and config.h-vms. + + * Bootstrap make to start building make is still makefile.com, but make + needs to be re-made with a make to make a correct version: ignore all + possible warnings, delete all objects, rename make.exe to a different + name and run it. + + * Made some minor modifications to the bootstrap build makefile.com. + +Version 3.78 (22 Sep 1999) + +* Two new functions, $(error ...) and $(warning ...) are available. The + former will cause make to fail and exit immediately upon expansion of + the function, with the text provided as the error message. The latter + causes the text provided to be printed as a warning message, but make + proceeds normally. + +* A new function $(call ...) is available. This allows users to create + their own parameterized macros and invoke them later. Original + implementation of this function was provided by Han-Wen Nienhuys + . + +* A new function $(if ...) is available. It provides if-then-else + capabilities in a builtin function. Original implementation of this + function was provided by Han-Wen Nienhuys . + +* Make defines a new variable, .LIBPATTERNS. This variable controls how + library dependency expansion (dependencies like ``-lfoo'') is performed. + +* Make accepts CRLF sequences as well as traditional LF, for + compatibility with makefiles created on other operating systems. + +* Make accepts a new option: -R, or --no-builtin-variables. This option + disables the definition of the rule-specific builtin variables (CC, + LD, AR, etc.). Specifying this option forces -r (--no-builtin-rules) + as well. + +* A "job server" feature, suggested by Howard Chu . + + On systems that support POSIX pipe(2) semantics, GNU make can now pass + -jN options to submakes rather than forcing them all to use -j1. The + top make and all its sub-make processes use a pipe to communicate with + each other to ensure that no more than N jobs are started across all + makes. To get the old behavior of -j back, you can configure make + with the --disable-job-server option. + +* The confusing term "dependency" has been replaced by the more accurate + and standard term "prerequisite", both in the manual and in all GNU make + output. + +* GNU make supports the "big archive" library format introduced in AIX 4.3. + +* GNU make supports large files on AIX, HP-UX, and IRIX. These changes + were provided by Paul Eggert . (Large file + support for Solaris and Linux was introduced in 3.77, but the + configuration had issues: these have also been resolved). + +* The Windows 95/98/NT (W32) version of GNU make now has native support + for the Cygnus Cygwin release B20.1 shell (bash). + +* The GNU make regression test suite, long available separately "under + the table", has been integrated into the release. You can invoke it + by running "make check" in the distribution. Note that it requires + Perl (either Perl 4 or Perl 5) to run. + +Version 3.77 (28 Jul 1998) + +* Implement BSD make's "?=" variable assignment operator. The variable + is assigned the specified value only if that variable is not already + defined. + +* Make defines a new variable, "CURDIR", to contain the current working + directory (after the -C option, if any, has been processed). + Modifying this variable has no effect on the operation of make. + +* Make defines a new default RCS rule, for new-style master file + storage: ``% :: RCS/%'' (note no ``,v'' suffix). + + Make defines new default rules for DOS-style C++ file naming + conventions, with ``.cpp'' suffixes. All the same rules as for + ``.cc'' and ``.C'' suffixes are provided, along with LINK.cpp and + COMPILE.cpp macros (which default to the same value as LINK.cc and + COMPILE.cc). Note CPPFLAGS is still C preprocessor flags! You should + use CXXFLAGS to change C++ compiler flags. + +* A new feature, "target-specific variable values", has been added. + This is a large change so please see the appropriate sections of the + manual for full details. Briefly, syntax like this: + + TARGET: VARIABLE = VALUE + + defines VARIABLE as VALUE within the context of TARGET. This is + similar to SunOS make's "TARGET := VARIABLE = VALUE" feature. Note + that the assignment may be of any type, not just recursive, and that + the override keyword is available. + + COMPATIBILITY: This new syntax means that if you have any rules where + the first or second dependency has an equal sign (=) in its name, + you'll have to escape them with a backslash: "foo : bar\=baz". + Further, if you have any dependencies which already contain "\=", + you'll have to escape both of them: "foo : bar\\\=baz". + +* A new appendix listing the most common error and warning messages + generated by GNU make, with some explanation, has been added to the + GNU make User's Manual. + +* Updates to the GNU make Customs library support (see README.customs). + +* Updates to the Windows 95/NT port from Rob Tulloh (see README.W32), + and to the DOS port from Eli Zaretski (see README.DOS). + +* VMS-specific changes: + + * This is the VMS port of GNU Make. + It is based on the VMS port of GNU Make 3.60 by Mike Moretti. + This port was done by Klaus Kämpf + + * There is first-level support available from proGIS Software, Germany. + 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 + mcr sys$disk:[]program.exe < input.txt > output.txt &> error.txt + + * Makefile variables are looked up in the current environment. You can set + symbols or logicals in DCL and evaluate them in the Makefile via + $(). Variables defined in the Makefile + override VMS symbols/logicals ! + + * Functions for file names are working now. See the GNU Make manual for + $(dir ...) and $(wildcard ...). Unix-style and VMS-style names are + supported as arguments. + + * The default rules are set up for GNU C. Building an executable from a + single source file is as easy as 'make file.exe'. + + * The variable $(ARCH) is predefined as ALPHA or VAX resp. Makefiles for + different VMS systems can now be written by checking $(ARCH) as in + ifeq ($(ARCH),ALPHA) + $(ECHO) "On the Alpha" + else + $(ECHO) "On the VAX" + endif + + * Command lines of excessive length are correctly broken and written to a + batch file in sys$scratch for later execution. There's no limit to the + lengths of commands (and no need for .opt files :-) any more. + + * Empty commands are handled correctly and don't end in a new DCL process. + +Version 3.76.1 (19 Sep 1997) + +* Small (but serious) bug fix. Quick rollout to get into the GNU source CD. + +Version 3.76 (16 Sep 1997) + +* GNU make now uses automake to control Makefile.in generation. This + should make it more consistent with the GNU standards. + +* VPATH functionality has been changed to incorporate the VPATH+ patch, + previously maintained by Paul Smith . See the + manual. + +* Make defines a new variable, `MAKECMDGOALS', to contain the goals that + were specified on the command line, if any. Modifying this variable + has no effect on the operation of make. + +* A new function, `$(wordlist S,E,TEXT)', is available: it returns a + list of words from number S to number E (inclusive) of TEXT. + +* Instead of an error, detection of future modification times gives a + warning and continues. The warning is repeated just before GNU make + exits, so it is less likely to be lost. + +* Fix the $(basename) and $(suffix) functions so they only operate on + the last filename, not the entire string: + + Command Old Result New Result + ------- ---------- ---------- + $(basename a.b) a a + $(basename a.b/c) a a.b/c + $(suffix a.b) b b + $(suffix a.b/c) b/c + +* The $(strip) function now removes newlines as well as TABs and spaces. + +* The $(shell) function now changes CRLF (\r\n) pairs to a space as well + as newlines (\n). + +* Updates to the Windows 95/NT port from Rob Tulloh (see README.W32). + +* Eli Zaretskii has updated the port to 32-bit protected mode on MSDOS + and MS-Windows, building with the DJGPP v2 port of GNU C/C++ compiler + and utilities. See README.DOS for details, and direct all questions + concerning this port to Eli Zaretskii or DJ + Delorie . + +* VMS-specific changes: + + * John W. Eaton has updated the VMS port to support libraries and VPATH. + + * The cd command is supported if it's called as $(CD). This invokes + the 'builtin_cd' command which changes the directory. + Calling 'set def' doesn't do the trick, since a sub-shell is + spawned for this command, the directory is changed *in this sub-shell* + and the sub-shell ends. + + * Libraries are not supported. They were in GNU Make 3.60 but somehow I + didn't care porting the code. If there is enough interest, I'll do it at + some later time. + + * The variable $^ separates files with commas instead of spaces (It's the + natural thing to do for VMS). + + * See defaults.c for VMS default suffixes and my definitions for default + rules and variables. + + * The shell function is not implemented yet. + + * Load average routines haven't been implemented for VMS yet. + + * The default include directory for including other makefiles is + SYS$SYSROOT:[SYSLIB] (I don't remember why I didn't just use + SYS$LIBRARY: instead; maybe it wouldn't work that way). + + * The default makefiles make looks for are: makefile.vms, gnumakefile, + makefile., and gnumakefile. . + + * The stat() function and handling of time stamps in VMS is broken, so I + replaced it with a hack in vmsfunctions.c. I will provide a full rewrite + somewhere in the future. Be warned, the time resolution inside make is + less than what vms provides. This might be a problem on the faster Alphas. + + * You can use a : in a filename only if you precede it with a backslash ('\'). + E.g.- hobbes\:[bogas.files] + + * Make ignores success, informational, or warning errors (-S-, -I-, or -W-). + But it will stop on -E- and -F- errors. (unless you do something + to override this in your makefile, or whatever). + + * Remote stuff isn't implemented yet. + + * Multiple line DCL commands, such as "if" statements, must be put inside + command files. You can run a command file by using \@. + +Version 3.75 (27 Aug 1996) + +* The directory messages printed by `-w' and implicitly in sub-makes, + are now omitted if Make runs no commands and has no other messages to print. + +* Make now detects files that for whatever reason have modification times + in the future and gives an error. Files with such impossible timestamps + can result from unsynchronized clocks, or archived distributions + containing bogus timestamps; they confuse Make's dependency engine + thoroughly. + +* The new directive `sinclude' is now recognized as another name for + `-include', for compatibility with some other Makes. + +* Aaron Digulla has contributed a port to AmigaDOS. See README.Amiga for + details, and direct all Amiga-related questions to . + +* Rob Tulloh of Tivoli Systems has contributed a port to Windows NT or 95. + See README.W32 for details, and direct all Windows-related questions to + . + +* VMS-specific changes: + + * Lots of default settings are adapted for VMS. See default.c. + + * Long command lines are now converted to command files. + + * Comma (',') as a separator is now allowed. See makefile.vms for an example. + +Version 3.73 (05 Apr 1995) + +* Converted to use Autoconf version 2, so `configure' has some new options. + See INSTALL for details. + +* You can now send a SIGUSR1 signal to Make to toggle printing of debugging + output enabled by -d, at any time during the run. + +Version 3.72 (04 Nov 1994) + +* DJ Delorie has ported Make to MS-DOS using the GO32 extender. + He is maintaining the DOS port, not the GNU Make maintainer; + please direct bugs and questions for DOS to . + MS-DOS binaries are available for FTP from ftp.simtel.net in + /pub/simtelnet/gnu/djgpp/. + +* The `MAKEFLAGS' variable (in the environment or in a makefile) can now + contain variable definitions itself; these are treated just like + command line variable definitions. Make will automatically insert any + variable definitions from the environment value of `MAKEFLAGS' or from + the command line, into the `MAKEFLAGS' value exported to children. The + `MAKEOVERRIDES' variable previously included in the value of `$(MAKE)' + for sub-makes is now included in `MAKEFLAGS' instead. As before, you can + reset `MAKEOVERRIDES' in your makefile to avoid putting all the variables + in the environment when its size is limited. + +* If `.DELETE_ON_ERROR' appears as a target, Make will delete the target of + a rule if it has changed when its recipe exits with a nonzero status, + just as when the recipe gets a signal. + +* The automatic variable `$+' is new. It lists all the dependencies like + `$^', but preserves duplicates listed in the makefile. This is useful + for linking rules, where library files sometimes need to be listed twice + in the link order. + +* You can now specify the `.IGNORE' and `.SILENT' special targets with + dependencies to limit their effects to those files. If a file appears as + a dependency of `.IGNORE', then errors will be ignored while running the + recipe to update that file. Likewise if a file appears as a dependency + of `.SILENT', then the recipe to update that file will not be printed + before it is run. (This change was made to conform to POSIX.2.) + +Version 3.71 (21 May 1994) + +* The automatic variables `$(@D)', `$(%D)', `$(*D)', `$(. diff --git a/local/recipes/dev/gnu-make/source/README b/local/recipes/dev/gnu-make/source/README new file mode 100644 index 0000000000..43075d3e88 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README @@ -0,0 +1,221 @@ +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. + +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 +source distribution, see the README.git file for instructions. + +For source distribution building and installation instructions, see the file +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 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 +'build.sh' instead. + + +GNU Make is free software. See the file COPYING for copying conditions. +GNU Make is copyright by the Free Software Foundation. Copyright notices +condense sequential years into a range; e.g. "1987-1994" means all years +from 1987 to 1994 inclusive. + +Downloading +----------- + +GNU Make can be obtained in many different ways. See a description here: + + 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.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. + + https://www.gnu.org/ + https://www.gnu.org/doc/doc.html + https://www.gnu.org/manual/manual.html + + +Development +----------- + +GNU Make development is hosted by Savannah, the FSF's online development +management tool. Savannah is here: + + https://savannah.gnu.org + +And the GNU Make development page is here: + + https://savannah.gnu.org/projects/make/ + +You can find most information concerning the development of GNU Make at +this site. + + +Regression Tests +---------------- + +GNU Make contains a suite of regression tests. To run them use "make check" +after building GNU Make. If they fail a tar package will be created +containing useful information, which can be emailed (as an attachment) to +the mailing list. + +Please note that since these tests rely on known-good-output comparisons, +they can show spurious failures on some systems (particularly non-POSIX systems +such as Windows). + + +Bug Reporting +------------- + +If you need help using GNU Make, try asking on . + +If you found a bug, you can send a bug reports to . +Please see the section of the GNU Make manual entitled 'Problems and Bugs' +for information on submitting useful and complete bug reports. + +You do not need to subscribe to these lists first. + +You can also use the online bug tracking system in the Savannah GNU Make +project to submit new problem reports or search for existing ones: + + 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 + + * Send the patch via email to : be sure to add it as an + attachment to avoid interference by email processors. + +All non-trivial changes require FSF copyright paperwork to be completed +before they can be accepted. Contact for help. + + +Git Access +---------- + +The GNU Make source repository is available via Git from the GNU Savannah Git +server; look here for details: + + https://savannah.gnu.org/git/?group=make + +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 +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. + + +System-specific Notes +--------------------- + +It has been reported that the XLC 1.2 compiler on AIX 3.2 is buggy such +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 +bash or pdksh in order to run "configure". See this message for more +information: + 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.) + +Another potential source of porting problems is the support for large +files (LFS) in configure for those operating systems that provide it. +Please report any bugs that you find in this area. If you run into +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 +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" +and other similar tools (tar, etc.) may not exactly duplicate timestamps +with micro- and nano-second granularity on some systems. If your build +system contains rules that depend on proper behavior of tools like "cp +-p", you should consider using the .LOW_RESOLUTION_TIME pseudo-target to +force make to treat them properly. See the manual for details. + + +Ports +----- + + - See README.customs for details on integrating GNU Make with the + Customs distributed build environment from the Pmake distribution. + + - See README.VMS for details about GNU Make on OpenVMS. + + - See README.Amiga for details about GNU Make on AmigaDOS. + + - See README.W32 for details about GNU Make on Windows NT, 95, or 98. + + - See README.DOS for compilation instructions on MS-DOS and MS-Windows + using DJGPP tools. + + A precompiled binary of the MSDOS port of GNU Make is available as part + of DJGPP; see the WWW page https://www.delorie.com/djgpp/ for more + information. + + 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 + it you should start by asking on those mailing lists and forums. + +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-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 . diff --git a/local/recipes/dev/gnu-make/source/README.Amiga b/local/recipes/dev/gnu-make/source/README.Amiga new file mode 100644 index 0000000000..94fcc13d3b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README.Amiga @@ -0,0 +1,80 @@ +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 +anything. It has the following features (in addition to any features of +GNU Make): + +- Runs Amiga-Commands with SystemTags() (Execute) +- Can run multi-line statements +- Allows to use Device-Names in targets: + + c:make : make.o + + is ok. To distinguish between device-names and target : or ::, MAKE + looks for spaces. If there are any around :, it's taken as a target + delimiter, if there are none, it's taken as the name of a device. Note + that "make:make.o" tries to create "make.o" on the device "make:". +- Replaces @@ by a newline in any command line: + + if exists make @@\ + delete make.bak quiet @@\ + rename make make.bak @@\ + endif @@\ + $(CC) Link Make.o To make + + works. Note that the @@ must stand alone (i.e., "make@@\" is illegal). + Also be careful that there is a space after the "\" (i.e., at the + beginning of the next line). +- Can be made resident to save space and time +- Amiga specific wildcards can be used in $(wildcard ...) + +BUGS: +- The line + + dummy.h : src/*.c + +tries to make dummy.h from "src/*.c" (i.e., no wildcard-expansion takes +place). You have to use "$(wildcard src/*.c)" instead. + +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 +make files (including smakefiles) have been removed. If you have an existing +version of GNU Make available you _should_ be able to run: + + make -f Basic.mk + +However this is untested. + +If you have an Amiga system and would like to collaborate on getting +bootstrapping to work properly please contact bug-make@gnu.org. + +INSTALLATION + +Copy make somewhere in your search path (e.g., sc:c or sc:bin). +If you plan to use recursive makes, install make resident: + + Resident make Add + + +------------------------------------------------------------------------------- +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 +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 . diff --git a/local/recipes/dev/gnu-make/source/README.DOS b/local/recipes/dev/gnu-make/source/README.DOS new file mode 100644 index 0000000000..95c3388f74 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README.DOS @@ -0,0 +1,296 @@ +Port of GNU Make to 32-bit protected mode on MSDOS and MS-Windows. + +Builds with DJGPP v2 port of GNU C/C++ compiler and utilities. + + +New (since 3.74) DOS-specific features: + + 1. Supports long filenames when run from DOS box on Windows 9x. + + 2. Supports both stock DOS COMMAND.COM and Unix-style shells + (details in 'Notes' below). + + 3. Supports DOS drive letters in dependencies and pattern rules. + + 4. Better support for DOS-style backslashes in pathnames (but see + 'Notes' below). + + 5. The $(shell) built-in can run arbitrary complex commands, + including pipes and redirection, even when COMMAND.COM is your + shell. + + 6. Can be built without floating-point code (see below). + + 7. Supports signals in child programs and restores the original + directory if the child was interrupted. + + 8. Can be built without (a previous version of) Make. + + 9. The build process requires only standard tools. (Optional + targets like "check:" still need additional programs, though, + see below.) + + 10. Beginning with v3.78, the test suite works in the DJGPP + environment (requires Perl and auxiliary tools; see below). + + +To install a binary distribution: + + Simply unzip the makNNNb.zip file (where NNN is the version number) + preserving the directory structure (-d switch if you use PKUNZIP). + If you are installing Make on Windows 9X or Windows 2000, use an + unzip program that supports long filenames in zip files. After + unzipping, make sure the directory with make.exe is on your PATH, + and that's all you need to use Make. + + +To build from sources: + + 1. Unzip the archive, preserving the directory structure (-d switch + if you use PKUNZIP). If you build Make on Windows 9X or Windows + 2000, use an unzip program that supports long filenames in zip + files. + + If you are unpacking an official GNU source distribution, use + either DJTAR (which is part of the DJGPP development + environment), or the DJGPP port of GNU Tar. + + 2. If you have a working Make already, you can run: + + make -f Basic.mk + + 3. If you don't have a working Make already you can bootstrap one + by running: + + .\builddos.bat + + 4. If you are building from outside of the source directory, you + need to tell Make where the sources are, like this: + + make -f c:/djgpp/gnu/make/Basic.mk SRCDIR=c:/djgpp/gnu/make + + or: + + c:/djgpp/gnu/make/builddos.bat c:/djgpp/gnu/make + + 5. To run the test suite, type "make check". This requires a Unix + shell (I used the DJGPP port of Bash 2.03), Perl, Sed, Fileutils + and Sh-utils. + + 6. To install copy make.exe to the preferred location. + + 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. + + +Notes: +----- + + 1. The shell issue. + + This is probably the most significant improvement, first + introduced in the port of GNU Make 3.75. + + The original behavior of GNU Make is to invoke commands + directly, as long as they don't include characters special to + the shell or internal shell commands, because that is faster. + When shell features like redirection or filename wildcards are + involved, Make calls the shell. + + This port supports both DOS shells (the stock COMMAND.COM and its + 4DOS/NDOS replacements), and Unix-style shells (tested with the + venerable Stewartson's 'ms_sh' 2.3 and the DJGPP port of 'bash' by + Daisuke Aoyama ). + + When the $SHELL variable points to a Unix-style shell, Make + works just like you'd expect on Unix, calling the shell for any + command that involves characters special to the shell or + internal shell commands. The only difference is that, since + there is no standard way to pass command lines longer than the + infamous DOS 126-character limit, this port of Make writes the + command line to a temporary disk file and then invokes the shell + on that file. + + If $SHELL points to a DOS-style shell, however, Make will not + call it automatically, as it does with Unix shells. Stock + COMMAND.COM is too dumb and would unnecessarily limit the + functionality of Make. For example, you would not be able to + use long command lines in commands that use redirection or + pipes. Therefore, when presented with a DOS shell, this port of + Make will emulate most of the shell functionality, like + redirection and pipes, and shall only call the shell when a + batch file or a command internal to the shell is invoked. (Even + when a command is an internal shell command, Make will first + search the $PATH for it, so that if a Makefile calls 'mkdir', + you can install, say, a port of GNU 'mkdir' and have it called + in that case.) + + The key to all this is the extended functionality of 'spawn' and + 'system' functions from the DJGPP library; this port just calls + 'system' where it would invoke the shell on Unix. The most + important aspect of these functions is that they use a special + mechanism to pass long (up to 16KB) command lines to DJGPP + programs. In addition, 'system' emulates some internal + commands, like 'cd' (so that you can now use forward slashes + with it, and can also change the drive if the directory is on + another drive). Another aspect worth mentioning is that you can + call Unix shell scripts directly, provided that the shell whose + name is mentioned on the first line of the script is installed + anywhere along the $PATH. It is impossible to tell here + everything about these functions; refer to the DJGPP library + reference for more details. + + The $(shell) built-in is implemented in this port by calling + 'popen'. Since 'popen' calls 'system', the above considerations + are valid for $(shell) as well. In particular, you can put + arbitrary complex commands, including pipes and redirection, + inside $(shell), which is in many cases a valid substitute for + the Unix-style command substitution (`command`) feature. + + + 2. "SHELL=/bin/sh" -- or is it? + + Many Unix Makefiles include a line which sets the SHELL, for + those versions of Make which don't have this as the default. + Since many DOS systems don't have 'sh' installed (in fact, most + of them don't even have a '/bin' directory), this port takes + such directives with a grain of salt. It will only honor such a + directive if the basename of the shell name (like 'sh' in the + above example) can indeed be found in the directory that is + mentioned in the SHELL= line ('/bin' in the above example), or + in the current working directory, or anywhere on the $PATH (in + that order). If the basename doesn't include a filename + extension, Make will look for any known extension that indicates + an executable file (.exe, .com, .bat, .btm, .sh, and even .sed + and .pl). If any such file is found, then $SHELL will be + defined to the exact pathname of that file, and that shell will + hence be used for the rest of processing. But if the named + shell is *not* found, the line which sets it will be effectively + ignored, leaving the value of $SHELL as it was before. Since a + lot of decisions that this port makes depend on the gender of + the shell, I feel it doesn't make any sense to tailor Make's + behavior to a shell which is nowhere to be found. + + Note that the above special handling of "SHELL=" only happens + for Makefiles; if you set $SHELL in the environment or on the + Make command line, you are expected to give the complete + pathname of the shell, including the filename extension. + + The default value of $SHELL is computed as on Unix (see the Make + manual for details), except that if $SHELL is not defined in the + environment, $COMSPEC is used. Also, if an environment variable + named $MAKESHELL is defined, it takes precedence over both + $COMSPEC and $SHELL. Note that, unlike Unix, $SHELL in the + environment *is* used to set the shell (since on MSDOS, it's + unlikely that the interactive shell will not be suitable for + Makefile processing). + + The bottom line is that you can now write Makefiles where some + of the targets require a real (i.e. Unix-like) shell, which will + nevertheless work when such shell is not available (provided, of + course, that the commands which should always work, don't + require such a shell). More important, you can convert Unix + Makefiles to MSDOS and leave the line which sets the shell + intact, so that people who do have Unixy shell could use it for + targets which aren't converted to DOS (like 'install' and + 'uninstall', for example). + + + 3. Default directories. + + GNU Make knows about standard directories where it searches for + library and include files mentioned in the Makefile. Since + MSDOS machines don't have standard places for these, this port + will search ${DJDIR}/lib and ${DJDIR}/include respectively. + $DJDIR is defined automatically by the DJGPP startup code as the + root of the DJGPP installation tree (unless you've tampered with + the DJGPP.ENV file). This should provide reasonable default + values, unless you moved parts of DJGPP to other directories. + + + 4. Letter-case in filenames. + + If you run Make on Windows 9x, you should be aware of the + letter-case issue. Make is internally case-sensitive, but all + file operations are case-insensitive on Windows 9x, so + e.g. files 'FAQ', 'faq' and 'Faq' all refer to the same file, as + far as Windows is concerned. The underlying DJGPP C library + functions honor the letter-case of the filenames they get from + the OS, except that by default, they down-case 8+3 DOS filenames + which are stored in upper case in the directory and would break + many Makefiles otherwise. (The details of which filenames are + converted to lower case are explained in the DJGPP libc docs, + under the '_preserve_fncase' and '_lfn_gen_short_fname' + functions, but as a thumb rule, any filename that is stored in + upper case in the directory, is a valid DOS 8+3 filename and + doesn't include characters invalid on MSDOS FAT filesystems, + will be automatically down-cased.) User reports that I have + indicate that this default behavior is generally what you'd + expect; however, your input is most welcome. + + In any case, if you hit a situation where you must force Make to + get the 8+3 DOS filenames in upper case, set FNCASE=y in the + environment or in the Makefile. + + + 5. DOS-style pathnames. + + There are a lot of places throughout the program sources which + make implicit assumptions about the pathname syntax. In + particular, the directories are assumed to be separated by '/', + and any pathname which doesn't begin with a '/' is assumed to be + relative to the current directory. This port attempts to + support DOS-style pathnames which might include the drive letter + and use backslashes instead of forward slashes. However, this + support is not complete; I feel that pursuing this support too + far might break some more important features, particularly if + you use a Unix-style shell (where a backslash is a quote + character). I only consider support of backslashes desirable + because some Makefiles invoke non-DJGPP programs which don't + understand forward slashes. A notable example of such programs + is the standard programs which come with MSDOS. Otherwise, you + are advised to stay away from backslashes whenever possible. In + particular, filename globbing won't work on pathnames with + backslashes, because the GNU 'glob' library doesn't support them + (backslash is special in filename wildcards, and I didn't want + to break that). + + One feature which *does* work with backslashes is the filename- + related built-in functions such as $(dir), $(notdir), etc. + Drive letters in pathnames are also fully supported. + + + +Bug reports: +----------- + + Bugs that are clearly related to the MSDOS/DJGPP port should be + reported first on the comp.os.msdos.djgpp news group (if you cannot + post to Usenet groups, write to the DJGPP mailing list, + , which is an email gateway into the above news + group). For other bugs, please follow the procedure explained in + the "Bugs" chapter of the Info docs. If you don't have an Info + reader, look up that chapter in the 'make.i1' file with any text + browser/editor. + + + Enjoy, + Eli Zaretskii + + +------------------------------------------------------------------------------- +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 +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 . diff --git a/local/recipes/dev/gnu-make/source/README.OS2 b/local/recipes/dev/gnu-make/source/README.OS2 new file mode 100644 index 0000000000..82f496e016 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README.OS2 @@ -0,0 +1,176 @@ +Port of GNU Make to OS/2. + +Features of GNU Make that do not work under OS/2: + - remote job execution + - dynamic load balancing + + +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 +that is used to determine the shell: + + 1. The shell specified by the environment variable MAKESHELL. + 2. The shell specified by the SHELL variable within a Makefile. Like + Unix, SHELL is NOT taken from the environment. + 3. The shell specified by the COMSPEC environment variable. + 4. The shell specified by the OS2_SHELL environment variable. + 5. If none of the above is defined /bin/sh is used as default. This + happens e.g. in the make testsuite. + +Note: - Points 3 and 4 can be turned off at compile time by adding + -DNO_CMD_DEFAULT to the CPPFLAGS. + - DOS support is not tested for EMX and therefore might not work. + - The UNIXROOT environment variable is supported to find /bin/sh + if it is not on the current drive. + + +COMPILATION OF GNU MAKE FOR OS/2: + +I. ***** SPECIAL OPTIONS ***** + + - At compile time you can turn off that cmd is used as default shell + (but only /bin/sh). Simply set CPPFLAGS="-DNO_CMD_DEFAULT" and make + will not use cmd unless you cause it to do so by setting MAKESHELL to + 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 + the testsuite. + + +II. ***** REQUIREMENTS FOR THE COMPILATION ***** + +A standard Unix like build environment: + + - sh compatible shell (ksh, bash, ash, but tested only with pdksh 5.2.14 + 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 + 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 + to avoid confusion with X:\OS2\INSTALL\INSTALL.EXE) + - GNU shell utilities + - GNU text utilities + - gawk + - grep + - sed + - 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) + +If you want to recreate the configuration files (developers only!) +you need also: GNU m4 1.4, autoconf 2.59, automake 1.9.6 (or compatible) + + +III. ***** COMPILATION AND INSTALLATION ***** + + a) ** Developers only - Everyone else should skip this section ** + To recreate the configuration files use: + + export EMXSHELL=ksh + aclocal -I config + automake + autoconf + autoheader + + +b) Installation into x:/usr + + Note: Although it is possible to compile make using "./configure", + "make", "make install" this is not recommended. In particular, + you must ALWAYS use LDFLAGS="-Zstack 0x6000" because the default + stack size is far to small and make will not work properly! + +Recommended environment variables and installation options: + + export ac_executable_extensions=".exe" + export CPPFLAGS="-D__ST_MT_ERRNO__" + export CFLAGS="-O2 -Zomf -Zmt" + export LDFLAGS="-Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000" + export RANLIB="echo" + ./configure --prefix=x:/usr --infodir=x:/usr/share/info --mandir=x:/usr/share/man --without-included-gettext + make AR=emxomfar + make install + +Note: If you use gcc 2.9.x I recommend to set also LIBS="-lgcc" + +Note: You can add -DNO_CMD_DEFAULT and -DNO_CHDIR2 to CPPFLAGS. + See section I. for details. + + +IV. ***** NLS support ***** + +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. + +Therefore, if you wish to enable the internationalization features of +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: + + export LINGUAS="en de fr" + +If you don't specify LINGUAS all languages are installed. + +If you don't want NLS support (English only) use the option +--disable-nls for the configure script. Note if GNU gettext is not +installed then NLS will not be enabled regardless of this flag. + + +V. ***** Running the make test suite ***** + +To run the included make test suite you have to set + + CPPFLAGS="-D__ST_MT_ERRNO__ -DNO_CMD_DEFAULT -DNO_CHDIR2" + +before you compile make. This is due to some restrictions of the +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 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 +none. + +To run the testsuite do the following: + + export CPPFLAGS="-D__ST_MT_ERRNO__ -DNO_CMD_DEFAULT -DNO_CHDIR2" + export CFLAGS="-Zomf -O2 -Zmt" + export LDFLAGS="-Zcrtdll -s -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000" + export RANLIB="echo" + ./configure --prefix=x:/usr --disable-nls + make AR=emxomfar + make check + +All tests should work fine with the exception of one of the "INCLUDE_DIRS" +tests which will fail if your /usr/include directory is on a drive different +from the make source tree. + + +------------------------------------------------------------------------------- +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 +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 . diff --git a/local/recipes/dev/gnu-make/source/README.VMS b/local/recipes/dev/gnu-make/source/README.VMS new file mode 100644 index 0000000000..e9c03e5d2c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README.VMS @@ -0,0 +1,515 @@ +Overview: -*-text-mode-*- +--------- + + 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 + make scripts with a special syntax that is described below. It + likely will not be able to run unmodified Unix makefiles. + + 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 + GNU Make on Unix as possible. + + The descriptions below are for running GNU Make from DCL or equivalent. + +Recipe differences: +------------------- + + GNU Make for OpenVMS can not currently run native Unix make files because of + differences in the implementation. + + I am trying to document the current behavior in this section. This is based + on the information in the file NEWS. and running the test suite. + TODO: More tests are needed to validate and demonstrate the OpenVMS + expected behavior. + + In some cases the older behavior of GNU Make when run from DCL is not + compatible with standard makefile behavior. + + This behavior can be changed when running GNU Make from DCL by setting + either DCL symbols or logical names of the format GNV$. The settings + are enabled with a string starting with one of '1', 'T', or 'E' for "1", + "TRUE", or "ENABLE". They are disabled with a '0', 'F', or 'D' for "1", + "FALSE", or "DISABLE". If they are not explicitly set to one of these + values, then they will be set to their default values. + + The value of the setting DECC$FILENAME_UNIX_REPORT or + DECC$FILENAME_UNIX_ONLY will now cause the $(dir x) function to return + './' or '[]' as appropriate. + + The name GNV$MAKE_OLD_VMS when enabled will cause GNU Make to behave as + much as the older method as can be done with out disabling VMS features. + When it is disabled GNU Make have the new behavior which more closely + matches Unix Make behavior. + + The default is currently the old behavior when running GNU Make from DCL. + In the future this may change. When running make from GNV Bash the new + behavior is the default. + + This is a global setting that sets the default behavior for several other + options that can be individually changed. Many of the individual settings + are to make it so that the self tests for GNU Make need less VMS specific + modifications. + + The name GNV$MAKE_COMMA when enabled will cause GNU Make to expect a comma + for a path separator and use a comma for the separator for a list of files. + When disabled, it will cause GNU Make to use a colon for a path separator + and a space for the separator for a list of files. The default is to be + 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: + + * 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 + where 0 is success and non-zero is failure. + * The $ character will cause environment variable expansion. + * 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 + means that it is likely that nothing will notice if the default path + specifier is changed in the future. + + Currently the built in VMS specific macros and recipes depend on the comma + being used as a file list separator. + TODO: Remove this dependency as other functions in GNU Make depend on a + space being used as a separator. + + 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. + + 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 sub-process is used for the + recipe lines, allowing multiple line rules. + + The default makefile search order is "makefile.vms", "gnumakefile", + "makefile". TODO: See if that lookup is case sensitive. + + When Make is invoked from DCL, it will create a foreign command + using the name of executable image, with any facility prefix removed, + for the duration of the make program, so it can be used internally + to recursively run make(). The macro MAKE_COMMAND will be set to + this foreign command. + + When make is launched from an exec*() command from a C program, + the foreign command is not created. The macro MAKE_COMMAND will be + set to the actual command passed as argv[0] to the exec*() function. + + If the DCL symbol or logical name GNV$MAKE_USE_MCR exists, then + the macro MAKE_COMMAND will be set to be an "MCR" command with the + absolute path used by DCL to launch make. The foreign command + will not be created. + + The macro MAKE is set to be the same value as the macro MAKE_COMMAND + on all platforms. + + Each recipe command is normally run as a separate spawned processes, + except for the cases documented below where a temporary DCL command + file may be used. + + BUG: Testing has shown that the commands in the temporary command files + are not always created properly. This issue is still under investigation. + + Any macros marked as exported are temporarily created as DCL symbols + for child images to use. DCL symbol substitution is not done with these + commands. + Untested: Symbol substitution. + + When a temporary DCL command file is used, DCL symbol substitution + will work. + + For VMS 7.3-1 and earlier, command lines are limited to 255 characters + or 1024 characters in a command file. + For VMS 7.3-2 and later, command lines are limited to 4059 characters + or 8192 characters in a command file. + + VMS limits each token of a command line to 256 characters, and limits + a command line to 127 tokens. + + Command lines above the limit length are written to a command file + in sys$scratch:. + + In order to handle Unix style extensions to VMS DCL, GNU Make has + parsed the recipe commands and them modified them as needed. The + parser has been re-written to resolve numerous bugs in handling + valid VMS syntax and potential buffer overruns. + + The new parser may need whitespace characters where DCL does not require + it, and also may require that quotes are matched were DCL forgives if + they are not. There is a small chance that existing VMS specific makefiles + will be affected. + + The '<', '>' was previously implemented using command files. Now + GNU Make will check to see if the is already a VMS "PIPE" command and + if it is not, will convert the command to a VMS "PIPE" command. + + The '>>' redirection has been implemented by using a temporary command file. + This will be described later. + + The DCL symbol or logical name GNV$MAKE_USE_CMD_FILE when set to a + string starting with one of '1','T', or 'E' for "1", "TRUE", or "ENABLE", + then temporary DCL command files are always used for running commands. + + Some recipe strings with embedded new lines will not be handled correctly + when a command file is used. + + GNU Make generally does text comparisons for the targets and sources. The + make program itself can handle either Unix or OpenVMS format filenames, but + normally does not do any conversions from one format to another. + TODO: The OpenVMS format syntax handling is incomplete. + TODO: ODS-5 EFS support is missing. + BUG: The internal routines to convert filenames to and from OpenVMS format + do not work correctly. + + Note: In the examples below, line continuations such as a backslash may have + been added to make the examples easier to read in this format. + BUG: That feature does not completely work at this time. + + 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 + as it does on Unix. + + The variables $^ and $@ separate files with commas instead of spaces. + This is controlled by the name GNV$MAKE_COMMA as documented in the + previous section. + + While this may seem the natural thing to do with OpenVMS, it actually + causes problems when trying to use other make functions that expect the + files to be separated by spaces. If you run into this, you need the + following workaround to convert the output. + TODO: Look at have the $^ and $@ use spaces like on Unix and have + and easy to use function to do the conversions and have the built + in OpenVMS specific recipes and macros use it. + + Example: + +comma := , +empty := +space := $(empty) $(empty) + +foo: $(addsuffix .3,$(subs $(comma),$(space),$^) + + + Makefile variables are looked up in the current environment. You can set + symbols or logicals in DCL and evaluate them in the Makefile via + $(). Variables defined in the Makefile + override OpenVMS symbols/logicals. + + OpenVMS logical and symbols names show up as "environment" using the + 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 + 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 + 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 converted to + single dollar signs. + + The variable $(ARCH) is predefined as IA64, ALPHA or VAX respectively. + Makefiles for different OpenVMS systems can now be written by checking + $(ARCH). Since IA64 and ALPHA are similar, usually just a check for + VAX or not VAX is sufficient. + + You may have to update makefiles that assume VAX if not ALPHA. + +ifeq ($(ARCH),VAX) + $(ECHO) "On the VAX" +else + $(ECHO) "On the ALPHA or IA64" +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 + 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. + + Lexical functions can be used in pipes to simulate shell file test rules. + + Example: + + POSIX: +b : c ; [ -f $@ ] || echo >> $@ + + OpenVMS: +b : c ; if f$$search("$@") then pipe open/append xx $@ ; write xx "" ; close xx + + + You can also use pipes and turning messages off to silently test for a + failure. + +x = %x1035a00a + +%.b : %.c +pipe set mess/nofac/noiden/nosev/notext ; type $^/output=$@ || exit $(x) + + +Runtime issues: + + 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 + 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 + 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 + code. + + Make internally has two error codes, MAKE_FAILURE and MAKE_TROUBLE. These + 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. + + 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 + other platforms it does not. Also output that would be in double quotes + on some platforms may show up as single quotes on VMS. + + There may be extra blank lines in the output on VMS. + https://savannah.gnu.org/bugs/?func=detailitem&item_id=41760 + + 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. + + 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 + in the output of recipes. + + GNU Make uses sys$scratch: for the tempfiles that it creates. + + The OpenVMS CRTL library maps /tmp to sys$scratch if the TMP: logical name + does not exist. As the CRTL may use both sys$scratch: and /tmp internally, + if you define the TMP logical name to be different than SYS$SCRATCH:, + you may end up with only some temporary files in TMP: and some in SYS$SCRATCH: + + The default include directory for including other makefiles is + SYS$SYSROOT:[SYSLIB] (I don't remember why I didn't just use + SYS$LIBRARY: instead; maybe it wouldn't work that way). + TODO: A better default may be desired. + + If the device for a file in a recipe does not exist, on OpenVMS an error + message of "stat: : no such device or address" will be output. + + Make ignores success, informational, or warning errors (-S-, -I-, or + -W-). But it will stop on -E- and -F- errors. (unless you do something + to override this in your makefile, or whatever). + + +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 sub-process + spawned for that command. + + The 'builtin_cd' is generally expected to be on its own line. + The 'builtin_cd' either from the expansion of $(CD) or directly + put in a recipe line will be executed before any other commands in + that recipe line. DCL parameter substitution will not work for the + 'builtin_cd' command. + + Putting a 'builtin_cd' in a pipeline or an IF-THEN line should not be + done because the 'builtin_cd' is always executed + and executed first. The directory change is persistent. + + Unix shell style I/O redirection is supported. You can now write lines like: + "mcr sys$disk:[]program.exe < input.txt > output.txt &> error.txt" + + POSIX shells have ":" as a null command. These are now handled. + 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 + of ">>" by using a command procedure. + + The current algorithm creates the output file if it does not exist and + then uses the DCL open/append to extend it. SYS$OUTPUT is then directed + to that file. + + The implementation supports only one redirected append output to a file + and that redirection is done before any other commands in that line + are executed, so it redirects all output for that command. + + 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 + abort make is one case. + + 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 + actions with DCL commands will be stopped. As before the CtrlY handler + 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. + 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, + after the current action is terminated. If that doesn't happen or takes too + long, CTRL+Y should be used instead. + + +Build Options: + + Added support to have case sensitive targets and dependencies but to + still use case blind file names. This is especially useful for Java + makefiles on VMS: + +.SUFFIXES : +.SUFFIXES : .class .java +.java.class : +javac "$<" +HelloWorld.class : HelloWorld.java + + A new macro WANT_CASE_SENSITIVE_TARGETS in config.h-vms was introduced. + It needs to be enabled to get this feature; default is disabled. + TODO: This should be a run-time setting based on if the process + has been set to case sensitive. + + +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 + for OpenVMS does not support running multiple commands simultaneously. + + +Self test failures and todos: +----------------------------- + + The test harness can not handle testing some of the VMS specific modes + because of the features needed for to be set for the Perl to run. + 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 + Perl test script to compensate for it. This should be being handled + internally to Make. + TODO: Verify and update the Perl test script. + + The features/parallelism test was failing. OpenVMS is executing the rules + in sequence not in parallel as this feature was not implemented. + GNU Make on VMS no longer claims it is implemented. + TODO: Implement it. + + Symlink support is not present. Symlinks are supported by OpenVMS 8.3 and + later. + + 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 + names correctly. + + +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. + +Make a 1st version + $ @makefile.com ! ignore any compiler and/or linker warning + $ copy make.exe 1st-make.exe + + Use the 1st version to generate a 2nd version as a test. + $ mc sys$disk:[]1st-make clean ! ignore any file not found messages + $ mc sys$disk:[]1st-make + + Verify your 2nd version by building Make again. + $ copy make.exe 2nd-make.exe + $ mc sys$disk:[]2nd-make clean + $ mc sys$disk:[]2nd-make + + +Running the tests: +------------------ + + Running the tests on OpenVMS requires the following software to be installed + as most of the tests are Unix oriented. + + * Perl 5.18 or later. + https://sourceforge.net/projects/vmsperlkit/files/ + * GNV 2.1.3 + Updates including a minimum of: + * Bash 4.3.30 + * ld_tools 3.0.2 + * coreutils 8.21 + https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/ + 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 sub-process or + a dedicated login to run the tests. + + To get detailed information for running the tests: + + $ set default [.tests] + $ @run_make_tests help + + Running the script with no parameters will run all the tests. + + After the the test script has been run once in a session, assuming + that you built make in sys$disk:[make], you can redefined the + "bin" logical name as follows: + + $ define bin sys$disk:[make],gnv$gnu:[bin] + + Then you can use Perl to run the scripts. + + $ perl run_make_tests.pl + + +Acknowledgments: +---------------- + +See NEWS. for details of past changes. + + These are the currently known contributors to this port. + + Hartmut Becker + John Malmberg + Michael Gehre + John Eisenbraun + Klaus Kaempf + Mike Moretti + John W. Eaton diff --git a/local/recipes/dev/gnu-make/source/README.W32 b/local/recipes/dev/gnu-make/source/README.W32 new file mode 100644 index 0000000000..7802b7324f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README.W32 @@ -0,0 +1,363 @@ +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. + +It builds with the MinGW port of GCC (tested with GCC 3.4.2, 4.8.1, +and 4.9.3). + +It also builds with MSVC 2.x, 4.x, 5.x, 6.x, 2005, 2008, 2010, 2012, +2013, and 2015 as well as with .NET 7.x and .NET 2003. + +Building with Guile is supported (tested with Guile 2.0.x). To build +with Guile, you will need, in addition to Guile itself, its dependency +libraries and the pkg-config program. The latter is used to figure out +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: + + 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 +will be needed, and typically also GNU MP, libffi, libunistring, and +libtool's libltdl. Whoever built the port of Guile you have should +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. +It was originally made by Rob Tulloh. +It is currently maintained by Eli Zaretskii. + + +Do this first, regardless of the build method you choose: +--------------------------------------------------------- + + 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 +--------------------------------------------- + + 2. Open a W32 command prompt for your installed (MinGW-)GCC, setup a + correct PATH and other environment variables for it, then execute ... + + .\build_w32.bat gcc + + This produces gnumake.exe in the GccRel directory. + + 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 + gnumake.exe with Guile if it finds it. If you have Guile + installed, but want to build Make without Guile support, type + + .\build_w32.bat --without-guile gcc + + +Building with (MSVC++-)cl using build_w32.bat +--------------------------------------------- + + 2. Open a command shell, then execute ... + + .\build_w32.bat + + This produces a 64bit Release build of gnumake.exe in .\WinRel, using + the compiler found on the %Path%. If no compiler is found, the batch + 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 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 + --without-guile option. + + +Building with (MinGW-)GCC using GNU Make +---------------------------------------- + + 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 ... + + make -f Basic.mk TOOLCHAIN=gcc + + This produces GccRel\gnumake.exe. + 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 + + The makefile doesn't support Guile integration. Use build_w32.bat + if you want to build with Guile support. + + +Building with (MSVC++-)cl using GNU Make +---------------------------------------- + + 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 + cl-installation, or using a corresponding start menu entry from the + cl-installation), then execute ... + + make -f Basic.mk + + This produces an optimized WinRel/gnumake.exe. + 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 + + The makefile doesn't support Guile integration. Use build_w32.bat + if you want to build with Guile support. + + +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: + + make -f Basic.mk check + + Alternatively if you'd like to run tests by hand, use: + + cd tests + .\run_make_tests.bat -make + + I've found seems to want forward-slashes in the path. + For example if building with .\build_w32.bat non-debug, use: + + cd tests + .\run_make_tests.bat -make ../WinRel/gnumake.exe + + I've tested this with the MSYS2 shell and POSIX tools installation + that you get by installing Git for Windows. + + + +------------------- +-- Notes/Caveats -- +------------------- + +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, + Windows 95, and Windows 98). It does not rely on any 3rd party + software or add-on packages for building. The only thing + needed is a Windows compiler. Two compilers supported + 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 + and are not connected to this port effort. + +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 + MSDOS mode for launching programs (via a batch file). The + MSDOS mode style execution has not been tested that carefully + though (The author uses GNU bash as 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 (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. + +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 + to have a hard time handling quoted strings correctly. This can + be circumvented by writing commands to be executed to a batch + file and then executing the command by calling 'sh file'. + + To work around this difficulty, this version of make supports + a batch mode. When BATCH_MODE_ONLY_SHELL is defined at compile + time, make forces all command lines to be executed via script + files instead of by command line. In this mode you must have a + working sh.exe in order to use parallel builds (-j). + + A native Windows32 system with no Bourne shell will also run + in batch mode. All command lines will be put into batch files + and executed via $(COMSPEC) (%COMSPEC%). However, parallel + builds ARE supported with Windows shells (cmd.exe and + command.com). See the next section about some peculiarities + of parallel builds on Windows. + +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: + + 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: + + 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): + + There is a caveat that should be noted with respect to handling + single character pathnames on Windows systems. When colon is + used in PATH variables, make tries to be smart about knowing when + you are using colon as a separator versus colon as a drive + letter. Unfortunately, something as simple as the string 'x:/' + could be interpreted 2 ways: (x and /) or (x:/). + + Make chooses to interpret a letter plus colon (e.g. x:/) as a + drive letter pathname. If it is necessary to use single + character directories in paths (VPATH, vpath, Path, PATH), the + user must do one of two things: + + a. Use semicolon as the separator to disambiguate colon. For + example use 'x;/' if you want to say 'x' and '/' are + separate components. + + b. Qualify the directory name so that there is more than + one character in the path(s) used. For example, none + of these settings are ambiguous: + + ./x:./y + /some/path/x:/some/path/y + x:/some/path/x:x:/some/path/y + + Please note that you are free to mix colon and semi-colon in the + specification of paths. Make is able to figure out the intended + result and convert the paths internally to the format needed + when interacting with the operating system, providing the path + is not within quotes, e.g. "x:/test/test.c". + + You are encouraged to use colon as the separator character. + This should ease the pain of deciding how to handle various path + problems which exist between platforms. If colon is used on + both Unix and Windows systems, then no ifdef'ing will be + necessary in the makefile source. + +Pathnames and white space: + + Unlike Unix, Windows 95/NT systems encourage pathnames which + contain white space (e.g. C:\Program Files\). These sorts of + pathnames are valid on Unix too, but are never encouraged. + There is at least one place in make (VPATH/vpath handling) where + paths containing white space will simply not work. There may be + others too. I chose to not try and port make in such a way so + that these sorts of paths could be handled. I offer these + suggestions as workarounds: + + 1. Use 8.3 notation. i.e. "x:/long~1/", which is actually + "x:\longpathtest". Type "dir /x" to view these filenames + within the cmd.exe shell. + 2. Rename the directory so it does not contain white space. + + If you are unhappy with this choice, this is free software + and you are free to take a crack at making this work. The code + in w32/pathstuff.c and vpath.c would be the places to start. + +Pathnames and Case insensitivity: + + Unlike Unix, Windows 95/NT systems are case insensitive but case + preserving. For example if you tell the file system to create a + file named "Target", it will preserve the case. Subsequent access to + 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 + 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 + config.h.W32. + + For example, the following makefile will create a file named + Target in the directory subdir which will subsequently be used + to satisfy the dependency of SUBDIR/DepTarget on SubDir/TARGET. + Without HAVE_CASE_INSENSITIVE_FS configured, the dependency link + will not be made: + + subdir/Target: + touch $@ + + SUBDIR/DepTarget: SubDir/TARGET + cp $^ $@ + + 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 + same rule and will issue a warning. + +SAMBA/NTFS/VFAT: + + I have not had any success building the debug version of this + package using SAMBA as my file server. The reason seems to be + related to the way VC++ 4.0 changes the case name of the pdb + filename it is passed on the command line. It seems to change + the name always to to lower case. I contend that the VC++ + compiler should not change the casename of files that are passed + as arguments on the command line. I don't think this was a + problem in MSVC 2.x, but I know it is a problem in MSVC 4.x. + + The package builds fine on VFAT and NTFS filesystems. + + Most all of the development I have done to date has been using + NTFS and long file names. I have not done any considerable work + under VFAT. VFAT users may wish to be aware that this port of + make does respect case sensitivity. + +FAT: + + Version 3.76 added support for FAT filesystems. Make works + around some difficulties with stat'ing of files and caching of + filenames and directories internally. + +Bug reports: + + Please submit bugs via the normal bug reporting mechanism which + is described in the GNU Make manual and the base README. + +------------------------------------------------------------------------------- +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 +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 . diff --git a/local/recipes/dev/gnu-make/source/README.customs b/local/recipes/dev/gnu-make/source/README.customs new file mode 100644 index 0000000000..c6cf979499 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README.customs @@ -0,0 +1,112 @@ + -*-indented-text-*- + +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 +the Customs library. It is contained in the Pmake distribution, which +can be obtained at: + + ftp://ftp.icsi.berkeley.edu/pub/ai/stolcke/software/ + +This integration was tested (superficially) with Pmake 2.1.33. + + +BUILDING CUSTOMS +---------------- + +First, build pmake and Customs. You need to build pmake first, because +Customs require pmake to build. Unfortunately, this is not trivial; +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 +directly to Customs support have already been incorporated into this +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 +to try expanding -lfoo to libfoo.so). If you rely on these changes +you'll need to re-apply them by hand. + +Install the Customs library and header files according to the +documentation. You should also install the man pages (contrary to +comments in the documentation, they weren't installed automatically for +me; I had to cd to the 'pmake-2.1.33/doc' directory and run 'pmake +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. +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 +the INSTALL file. + +See the documentation for Customs for information on starting and +configuring Customs. + + +INVOKING CUSTOMS-IZED GNU MAKE +----------------------------- + +One thing you should be aware of is that the default build environment +for Customs requires root permissions. Practically, this means that GNU +make must be installed setuid root to use Customs. + +If you don't want to do this, you can build Customs such that root +permissions are not necessary. Andreas Stolcke +writes: + + > pmake, gnumake or any other customs client program is not required to + > be suid root if customs was compiled WITHOUT the USE_RESERVED_PORTS + > option in customs/config.h. Make sure the "customs" service in + > /etc/services is defined accordingly (port 8231 instead of 1001). + + > Not using USE_RESERVED_PORTS means that a user with programming + > skills could impersonate another user by writing a fake customs + > client that pretends to be someone other than himself. See the + > discussion in etc/SECURITY. + + +PROBLEMS +-------- + +SunOS 4.1.x: + The customs/sprite.h header file #includes the header + files; this conflicts with GNU Make's configuration so you'll get a + compile error if you use GCC (or any other ANSI-capable C compiler). + + I commented out the #include in sprite.h:107: + + #if defined(sun) || defined(ultrix) || defined(hpux) || defined(sgi) + /* #include */ + #else + + YMMV. + + +------------------------------------------------------------------------------- +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 +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 . diff --git a/local/recipes/dev/gnu-make/source/SCOPTIONS b/local/recipes/dev/gnu-make/source/SCOPTIONS new file mode 100644 index 0000000000..758f82f93e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/SCOPTIONS @@ -0,0 +1,13 @@ +ERRORREXX +OPTIMIZE +NOVERSION +OPTIMIZERTIME +OPTIMIZERALIAS +DEFINE HAVE_CONFIG_H +DEFINE INCLUDEDIR="include:" +DEFINE LIBDIR="lib:" +DEFINE NO_ALLOCA +DEFINE NO_ARCHIVES +IGNORE=161 +IGNORE=100 +STARTUP=cres diff --git a/local/recipes/dev/gnu-make/source/aclocal.m4 b/local/recipes/dev/gnu-make/source/aclocal.m4 new file mode 100644 index 0000000000..36981d7d12 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/aclocal.m4 @@ -0,0 +1,1747 @@ +# generated automatically by aclocal 1.18.1 -*- Autoconf -*- + +# Copyright (C) 1996-2025 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.73],, +[m4_warning([this file was generated for autoconf 2.73. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*- +# serial 16 (pkgconf) + +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, see . +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.2]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurrence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $2]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[A pkg-config implementation could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get a pkg-config implementation, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------ +dnl +dnl Prepare a "--with-" configure option using the lowercase +dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and +dnl PKG_CHECK_MODULES in a single macro. +AC_DEFUN([PKG_WITH_MODULES], +[ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],[$3],[$4])], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +])dnl PKG_WITH_MODULES + +dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ----------------------------------------------- +dnl +dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES +dnl check._[VARIABLE-PREFIX] is exported as make variable. +AC_DEFUN([PKG_HAVE_WITH_MODULES], +[ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +])dnl PKG_HAVE_WITH_MODULES + +dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------------------ +dnl +dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after +dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make +dnl and preprocessor variable. +AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], +[ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +])dnl PKG_HAVE_DEFINE_WITH_MODULES + +# Copyright (C) 2002-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.18' +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.18.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.18.1])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-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_COND_IF -*- Autoconf -*- + +# Copyright (C) 2008-2025 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-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking is enabled. +# This creates each '.Po' and '.Plo' makefile fragment that we'll need in +# order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) + + +# Copyright (C) 1996-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +AC_DEFUN([AM_WITH_DMALLOC], +[AC_MSG_CHECKING([if malloc debugging is wanted]) +AC_ARG_WITH([dmalloc], +[AS_HELP_STRING([--with-dmalloc], + [use dmalloc, as in http://www.dmalloc.com])], +[if test "$withval" = yes; then + AC_MSG_RESULT([yes]) + AC_DEFINE([WITH_DMALLOC], [1], + [Define if using the dmalloc debugging malloc package]) + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + AC_MSG_RESULT([no]) +fi], [AC_MSG_RESULT([no])]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +m4_ifdef([_$0_ALREADY_INIT], + [m4_fatal([$0 expanded multiple times +]m4_defn([_$0_ALREADY_INIT]))], + [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])], + [_AM_PROG_TAR([ustar])])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + +AC_REQUIRE([_AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +AC_REQUIRE([_AM_PROG_RM_F]) +AC_REQUIRE([_AM_PROG_XARGS_N]) + +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check whether make has an 'include' directive that can support all +# the idioms we need for our automatic dependency tracking code. +AC_DEFUN([AM_MAKE_INCLUDE], +[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +AC_SUBST([am__quote])]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2022-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_RM_F +# --------------- +# Check whether 'rm -f' without any arguments works. +# https://bugs.gnu.org/10828 +AC_DEFUN([_AM_PROG_RM_F], +[am__rm_f_notfound= +AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""']) +AC_SUBST(am__rm_f_notfound) +]) + +# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2025 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_SLEEP_FRACTIONAL_SECONDS +# ---------------------------- +AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl +AC_CACHE_CHECK([whether sleep supports fractional seconds], + am_cv_sleep_fractional_seconds, [dnl +AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes], + [am_cv_sleep_fractional_seconds=no]) +])]) + +# _AM_FILESYSTEM_TIMESTAMP_RESOLUTION +# ----------------------------------- +# Determine the filesystem's resolution for file modification +# timestamps. The coarsest we know of is FAT, with a resolution +# of only two seconds, even with the most recent "exFAT" extensions. +# The finest (e.g. ext4 with large inodes, XFS, ZFS) is one +# nanosecond, matching clock_gettime. However, it is probably not +# possible to delay execution of a shell script for less than one +# millisecond, due to process creation overhead and scheduling +# granularity, so we don't check for anything finer than that. (See below.) +AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl +AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS]) +AC_CACHE_CHECK([filesystem timestamp resolution], + am_cv_filesystem_timestamp_resolution, [dnl +# Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `[ls -t conftest.ts[12]]` && + { + test "$[]*" != "X conftest.ts1 conftest.ts2" || + test "$[]*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + _AS_ECHO_UNQUOTED( + ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""], + [AS_MESSAGE_LOG_FD]) + AC_MSG_FAILURE([ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment.]) +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$[]2" = conftest.ts3 && + test "$[]3" = conftest.ts2 && + test "$[]4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) +])]) + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION]) +# This check should not be cached, as it may vary across builds of +# different projects. +AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_RESULT([no]) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_RESULT([no]) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[]*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$[]2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +AC_MSG_RESULT([$am_build_env_is_sane]) +if test "$am_build_env_is_sane" = no; then + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl + ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! +]) +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SILENT_RULES +# ---------------- +# Enable less verbose build rules support. +AC_DEFUN([_AM_SILENT_RULES], +[AM_DEFAULT_VERBOSITY=1 +AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls +dnl to AM_SILENT_RULES to change the default value. +AC_CONFIG_COMMANDS_PRE([dnl +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +])dnl +]) + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Set the default verbosity level to DEFAULT ("yes" being less verbose, "no" or +# empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_REQUIRE([_AM_SILENT_RULES]) +AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])m4_newline +dnl We intentionally force a newline after the assignment, since a) nothing +dnl good can come of more text following, and b) that was the behavior +dnl before 1.17. See https://bugs.gnu.org/72267. +]) + +# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test x$am_uid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work]) + elif test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test x$gm_gid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work]) + elif test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +# Copyright (C) 2022-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_XARGS_N +# ---------------- +# Check whether 'xargs -n' works. It should work everywhere, so the fallback +# is not optimized at all as we never expect to use it. +AC_DEFUN([_AM_PROG_XARGS_N], +[AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl +AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])]) +AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl + am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }' +])dnl +AC_SUBST(am__xargs_n) +]) + +m4_include([m4/00gnulib.m4]) +m4_include([m4/acinclude.m4]) +m4_include([m4/alloca.m4]) +m4_include([m4/asm-underscore.m4]) +m4_include([m4/dospaths.m4]) +m4_include([m4/eaccess.m4]) +m4_include([m4/extensions.m4]) +m4_include([m4/findprog-in.m4]) +m4_include([m4/getloadavg.m4]) +m4_include([m4/gettext.m4]) +m4_include([m4/gnulib-common.m4]) +m4_include([m4/gnulib-comp.m4]) +m4_include([m4/host-cpu-c-abi.m4]) +m4_include([m4/iconv.m4]) +m4_include([m4/intlmacosx.m4]) +m4_include([m4/largefile.m4]) +m4_include([m4/lib-ld.m4]) +m4_include([m4/lib-link.m4]) +m4_include([m4/lib-prefix.m4]) +m4_include([m4/longlong.m4]) +m4_include([m4/nls.m4]) +m4_include([m4/po.m4]) +m4_include([m4/progtest.m4]) +m4_include([m4/sig_atomic_t.m4]) +m4_include([m4/stdbool.m4]) +m4_include([m4/warn-on-use.m4]) +m4_include([m4/year2038.m4]) +m4_include([m4/zzgnulib.m4]) diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/output.0 b/local/recipes/dev/gnu-make/source/autom4te.cache/output.0 new file mode 100644 index 0000000000..83bbf2e660 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/output.0 @@ -0,0 +1,17350 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.73 for GNU Make 4.4. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation, +@%:@ Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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 + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="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 + # contradicts POSIX and common usage. Disable this. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in @%:@( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in @%:@( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) 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 ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf '%s\n' "$0: This script requires a shell more modern than all" + printf '%s\n' "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later." + else + printf '%s\n' "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf '%s\n' "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_CONFIG_STATUS= +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Make' +PACKAGE_TARNAME='make' +PACKAGE_VERSION='4.4' +PACKAGE_STRING='GNU Make 4.4' +PACKAGE_BUGREPORT='bug-make@gnu.org' +PACKAGE_URL='https://www.gnu.org/software/make/' + +ac_unique_file="src/vpath.c" +ac_config_libobj_dir=lib +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_func_c_list= +ac_subst_vars='gltests_LIBOBJDEPS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LIBOBJDEPS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIB@&t@OBJS +KNOWN_PREFIX_FALSE +KNOWN_PREFIX_TRUE +WINDOWSENV_FALSE +WINDOWSENV_TRUE +MAKE_HOST +AM_LDFLAGS +USE_CUSTOMS_FALSE +USE_CUSTOMS_TRUE +REMOTE +HAVE_GUILE_FALSE +HAVE_GUILE_TRUE +GUILE_LIBS +GUILE_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +POSUB +LTLIBINTL +LIBINTL +INTLLIBS +LTLIBICONV +LIBICONV +INTL_MACOSX_LIBS +XGETTEXT_EXTRA_OPTIONS +MSGMERGE +XGETTEXT_015 +XGETTEXT +GMSGFMT_015 +MSGFMT_015 +GMSGFMT +MSGFMT +GETTEXT_MACRO_VERSION +USE_NLS +SED +PERL +LIBGNU_LTLIBDEPS +LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS +gltests_WITNESS +GL_GENERATE_STDBOOL_H_FALSE +GL_GENERATE_STDBOOL_H_TRUE +STDBOOL_H +HAVE__BOOL +USE_SYSTEM_GLOB +USE_SYSTEM_GLOB_FALSE +USE_SYSTEM_GLOB_TRUE +HOST_CPU_C_ABI +HOST_CPU +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE +GETLOADAVG_LIBS +GL_GNULIB_GETLOADAVG +HAVE_DECL_GETLOADAVG +GL_GENERATE_ALLOCA_H_FALSE +GL_GENERATE_ALLOCA_H_TRUE +ALLOCA_H +HAVE_ALLOCA_H +ALLOCA +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +RANLIB +ARFLAGS +AR +CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +ECHO_T +ECHO_N +ECHO_C +target_alias +host_alias +build_alias +LIBS +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='MAINT_MAKEFILE' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_largefile +enable_year2038 +enable_cross_guesses +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_guile +with_customs +enable_case_insensitive_file_system +enable_job_server +enable_load +enable_posix_spawn +with_dmalloc +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GUILE_CFLAGS +GUILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf '%s\n' "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf '%s\n' "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`printf '%s\n' $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +'configure' configures GNU Make 4.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print 'checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for '--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/make@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Make 4.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --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 + --enable-case-insensitive-file-system + assume file systems are case insensitive + --disable-job-server disallow recursive make communication during -jN + --disable-load disable support for the 'load' operation + --disable-posix-spawn disable support for posix_spawn() + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + --with-guile Support GNU Guile for embedded scripting + --with-customs=DIR enable remote jobs via Customs--see README.customs + --with-dmalloc use dmalloc, as in http://www.dmalloc.com + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + GUILE_CFLAGS + C compiler flags for GUILE, overriding pkg-config + GUILE_LIBS linker flags for GUILE, overriding pkg-config + +Use these variables to override the choices made by 'configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +GNU Make home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf '%s\n' "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Make configure 4.4 +generated by GNU Autoconf 2.73 + +Copyright (C) 2026 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +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.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES +@%:@ ------------------------------------------- +@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache +@%:@ variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) eval "$3=yes" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_type + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to run conftest.@S|@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 case e in @%:@( + e) 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 ;; +esac +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_func LINENO FUNC VAR +@%:@ ---------------------------------- +@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (void); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (void); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_func + +@%:@ ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +@%:@ ------------------------------------------------------------------ +@%:@ Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +@%:@ accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + ac_compile="$ac_save_ac_compile" + +} @%:@ ac_fn_check_decl + +@%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +@%:@ ---------------------------------------------------- +@%:@ Tries to find if the field MEMBER exists in type AGGR, after including +@%:@ INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) eval "$4=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$4 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf '%s\n' "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf '%s\n' "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# Dump the cache to stdout. It can be in a pipe (this is a requirement). +ac_cache_dump () +{ + # The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf '%s\n' "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) +} + +# Print debugging info to stdout. +ac_dump_debugging_info () +{ + echo + + printf '%s\n' "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + ac_cache_dump + echo + + printf '%s\n' "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf '%s\n' "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + fi + + if test -s confdefs.h; then + printf '%s\n' "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf '%s\n' "$as_me: caught signal $ac_signal" + printf '%s\n' "$as_me: exit $exit_status" +} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. +ac_exit_trap () +{ + exit_status= + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + ac_dump_debugging_info >&5 + eval "rm -f $ac_clean_CONFIG_STATUS core *.core core.conftest.*" && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +} + +trap 'ac_exit_trap $?' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf '%s\n' "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf '%s\n' "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf '%s\n' "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See 'config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf '%s\n' "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf '%s\n' "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C23 (global declarations) +ac_c_conftest_c23_globals=' +/* Does the compiler advertise conformance to C17 or earlier? + Although GCC 14 does not do that, even with -std=gnu23, + it is close enough, and defines __STDC_VERSION == 202000L. */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ <= 201710L +# error "Compiler advertises conformance to C17 or earlier" +#endif + +// Check alignas. +char alignas (double) c23_aligned_as_double; +char alignas (0) c23_no_special_alignment; +extern char c23_aligned_as_int; +char alignas (0) alignas (int) c23_aligned_as_int; + +// Check alignof. +enum +{ + c23_int_alignment = alignof (int), + c23_int_array_alignment = alignof (int[100]), + c23_char_alignment = alignof (char) +}; +static_assert (0 < -alignof (int), "alignof is signed"); + +int function_with_unnamed_parameter (int) { return 0; } + +void c23_noreturn (); + +/* Test parsing of string and char UTF-8 literals (including hex escapes). + The parens pacify GCC 15. */ +bool use_u8 = (!sizeof u8"\xFF") == (!u8'\''x'\''); + +bool check_that_bool_works = true | false | !nullptr; +#if !true +# error "true does not work in #if" +#endif +#if false +#elifdef __STDC_VERSION__ +#else +# error "#elifdef does not work" +#endif + +#ifndef __has_c_attribute +# error "__has_c_attribute not defined" +#endif + +#ifndef __has_include +# error "__has_include not defined" +#endif + +#define LPAREN() ( +#define FORTY_TWO(x) 42 +#define VA_OPT_TEST(r, x, ...) __VA_OPT__ (FORTY_TWO r x)) +static_assert (VA_OPT_TEST (LPAREN (), 0, <:-) == 42); + +static_assert (0b101010 == 42); +static_assert (0B101010 == 42); +static_assert (0xDEAD'\''BEEF == 3'\''735'\''928'\''559); +static_assert (0.500'\''000'\''000 == 0.5); + +enum unsignedish : unsigned int { uione = 1 }; +static_assert (0 < -uione); + +#include +constexpr nullptr_t null_pointer = nullptr; + +static typeof (1 + 1L) two () { return 2; } +static long int three () { return 3; } +' + +# Test code for whether the C compiler supports C23 (body of main). +ac_c_conftest_c23_main=' + { + label_before_declaration: + int arr[10] = {}; + if (arr[0]) + goto label_before_declaration; + if (!arr[0]) + goto label_at_end_of_block; + label_at_end_of_block: + } + ok |= !null_pointer; + ok |= two != three; +' + +# Test code for whether the C compiler supports C23 (complete). +ac_c_conftest_c23_program="${ac_c_conftest_c23_globals} + +int +main (int, char **) +{ + int ok = 0; + ${ac_c_conftest_c23_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Do not test the value of __STDC__, because some compilers define it to 0 + or do not define it, while otherwise adequately conforming. */ + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (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; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + 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 + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// 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, and "aND" is used instead of "and" to work around +// GCC bug 40564 which is irrelevant here. +#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) +{ + // 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; + const char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + static struct incomplete_array *volatile incomplete_array_pointer; + struct incomplete_array *ia = incomplete_array_pointer; + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + // Do not test for VLAs, as some otherwise-conforming compilers lack them. + // C code should instead use __STDC_NO_VLA__; see Autoconf manual. + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || ni.number != 58); +' + +# 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 case e in @%:@( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +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_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w= + for ac_val in x $ac_old_val; do + ac_old_val_w="$ac_old_val_w $ac_val" + done + ac_new_val_w= + for ac_val in x $ac_new_val; do + ac_new_val_w="$ac_new_val_w $ac_val" + done + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf '%s\n' "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf '%s\n' "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf '%s\n' "$as_me: former value: '$ac_old_val'" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf '%s\n' "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf '%s\n' "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf '%s\n' "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Autoconf setup + + +ac_config_headers="$ac_config_headers src/config.h" + + + + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +am__api_version='1.18' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in @%:@(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF/1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF/1 since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + ;; +esac +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf '%s\n' "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in @%:@( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf '%s\n' "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + printf '%s\n' ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf '%s\n' "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf '%s\n' "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in @%:@( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf '%s\n' "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf '%s\n' "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf '%s\n' "$STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf '%s\n' "$ac_ct_STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf '%s\n' "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk 'busybox awk' +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf '%s\n' "$AWK" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf '%s\n' "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @printf '%s\n' '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + SET_MAKE= +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +@%:@ Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if printf '%s\n' 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf '%s\n' "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in @%:@( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in @%:@( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf '%s\n' "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in @%:@( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='make' + VERSION='4.4' + + +printf '%s\n' "@%:@define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf '%s\n' "@%:@define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf '%s\n' "$am_cv_prog_tar_ustar" >&6; } + + + + + +# 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 + + + + + + + + +# Checks for programs. + + + + + + + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in @%:@( + '0:this is the am__doit target') : + case $s in @%:@( + BSD) : + am__include='.include' am__quote='"' ;; @%:@( + *) : + am__include='include' am__quote='' ;; +esac ;; @%:@( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf '%s\n' "${_am_result}" >&6; } + +@%:@ Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf '%s\n' "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in @%:@( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf '%s\n' "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in @%:@( + e) { { 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; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf '%s\n' "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf '%s\n' "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf '%s\n' "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +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 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 case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +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 case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +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 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf '%s\n' "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf '%s\n' "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else case e in @%:@( + e) ac_cv_safe_to_define___extensions__=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf '%s\n' "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf '%s\n' "$ac_cv_should_define__xopen_source" >&6; } + + printf '%s\n' "@%:@define _ALL_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _COSMO_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _GNU_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf '%s\n' "@%:@define _NETBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _OPENBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf '%s\n' "@%:@define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf '%s\n' "@%:@define _MINIX 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_1_SOURCE 2" >>confdefs.h + +else case e in @%:@( + e) MINIX= ;; +esac +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf '%s\n' "@%:@define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf '%s\n' "@%:@define _XOPEN_SOURCE 500" >>confdefs.h + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +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 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 case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +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 case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +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 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# 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 case e in @%:@( + e) 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 + ;; +esac +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=`printf '%s\n' "$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 case e in @%:@( + e) 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 + ;; +esac +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=`printf '%s\n' "$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 case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 case e in @%:@( + e) { { 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; } ;; +esac +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 egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_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_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "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_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + + if test "$ac_cv_path_EGREP_TRADITIONAL" +then : + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_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_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "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_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; 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_TRADITIONAL=$EGREP_TRADITIONAL +fi + ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf '%s\n' "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL + + + + + { 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 case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Amsterdam" >/dev/null 2>&1 +then : + gl_cv_c_amsterdam_compiler=yes +else case e in @%:@( + e) gl_cv_c_amsterdam_compiler=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +printf '%s\n' "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + : + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf '%s\n' "$ac_ct_AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + +@%:@ Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_y2038=yes +else case e in @%:@( + e) gl_cv_type_time_t_y2038=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_bits_macro=yes +else case e in @%:@( + e) gl_cv_type_time_t_bits_macro=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) # 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 + ;; +esac +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 alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + + + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: + + + + + + + + + + @%:@ Check whether --enable-cross-guesses was given. +if test ${enable_cross_guesses+y} +then : + enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 +printf '%s\n' "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} + enableval=conservative + fi + gl_cross_guesses="$enableval" +else case e in @%:@( + e) gl_cross_guesses=conservative ;; +esac +fi + + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ + + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else case e in @%:@( + e) ac_cv_working_alloca_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf '%s\n' "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_alloca_works=$ac_cv_working_alloca_h +if test "$ac_cv_func_alloca_works" != yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf '%s\n' "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + + + + + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf '%s\n' "@%:@define C_ALLOCA 1" >>confdefs.h + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else case e in @%:@( + e) ac_cv_c_stack_direction=-1 ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf '%s\n' "$ac_cv_c_stack_direction" >&6; } +printf '%s\n' "@%:@define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define eaccess access" >>confdefs.h + ;; +esac +fi + + + + HAVE_DECL_GETLOADAVG=1; + + + + + + + + + + + GL_GNULIB_GETLOADAVG=0 + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to detect undeclared functions" >&5 +printf %s "checking for $CC options to detect undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in @%:@( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to ignore future-version functions" >&5 +printf %s "checking for $CC options to ignore future-version functions... " >&6; } +if test ${ac_cv_c_future_darwin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_compile_saved="$ac_compile" + ac_compile="$ac_compile -Werror=unguarded-availability-new" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if ! (defined __APPLE__ && defined __MACH__) + #error "-Werror=unguarded-availability-new not needed here" + #endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_future_darwin_options='-Werror=unguarded-availability-new' +else case e in @%:@( + e) ac_cv_c_future_darwin_options='none needed' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$ac_compile_saved" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_future_darwin_options" >&5 +printf '%s\n' "$ac_cv_c_future_darwin_options" >&6; } + case $ac_cv_c_future_darwin_options in @%:@( + 'none needed') : + ac_c_future_darwin_options='' ;; @%:@( + *) : + ac_c_future_darwin_options=$ac_cv_c_future_darwin_options ;; +esac + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _MSC_VER +MicrosoftCompiler +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "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 case e in @%:@( + e) gl_asmext='s' + gl_c_asm_opt='-S' + ;; +esac +fi +rm -rf conftest* + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 +printf %s "checking host CPU and C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$host_cpu" in + + i[34567]86 ) + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=x86_64-x32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=x86_64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=i386 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __aarch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=arm64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=arm64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) # Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=hppa64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=hppa ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=ia64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=ia64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mips64 +else case e in @%:@( + e) # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mipsn32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=mips ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=powerpc64-elfv2 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cpu=riscv64 +else case e in @%:@( + e) cpu=riscv32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else case e in @%:@( + e) main_abi=ilp32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=d +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=f +else case e in @%:@( + e) float_abi='' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=s390x +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=s390 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=sparc64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=sparc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 +printf '%s\n' "$gl_cv_host_cpu_c_abi" >&6; } + + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + + + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <&5 +printf %s "checking for 64-bit off_t... " >&6; } +if test ${gl_cv_type_off_t_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_off_t_64=yes +else case e in @%:@( + e) gl_cv_type_off_t_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 +printf '%s\n' "$gl_cv_type_off_t_64" >&6; } + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 +printf %s "checking for 64-bit st_size... " >&6; } +if test ${gl_cv_member_st_size_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_member_st_size_64=yes +else case e in @%:@( + e) gl_cv_member_st_size_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 +printf '%s\n' "$gl_cv_member_st_size_64" >&6; } + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac + +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : + +printf '%s\n' "@%:@define HAVE__BOOL 1" >>confdefs.h + + +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C99 requires bool, true, and false to be macros, + C23 and C++11 overrule that, so do not test for that. + Although C99 requires __bool_true_false_are_defined and + _Bool, C23 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + +int +main (void) +{ + + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stdbool_h=yes +else case e in @%:@( + e) ac_cv_header_stdbool_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +printf '%s\n' "$ac_cv_header_stdbool_h" >&6; } + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 +printf %s "checking for C compiler option to allow warnings... " >&6; } +if test ${gl_cv_cc_wallow+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 +printf '%s\n' "$gl_cv_cc_wallow" >&6; } + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + + + + + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 + (eval $gl_command) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + + + + + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + + + + + + + + + + + + + gl_source_base='lib' + gl_source_base_prefix= + + + if test $ac_cv_func_alloca_works = no; then + : + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 +printf %s "checking for alloca as a compiler built-in... " >&6; } +if test ${gl_cv_rpl_alloca+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Need own alloca" >/dev/null 2>&1 +then : + gl_cv_rpl_alloca=yes +else case e in @%:@( + e) gl_cv_rpl_alloca=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 +printf '%s\n' "$gl_cv_rpl_alloca" >&6; } + if test $gl_cv_rpl_alloca = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + + + + + + + case "$GL_GENERATE_ALLOCA_H" in + false) ALLOCA_H='' ;; + true) + if test -z "$ALLOCA_H"; then + ALLOCA_H="${gl_source_base_prefix}alloca.h" + fi + ;; + *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_ALLOCA_H; then + GL_GENERATE_ALLOCA_H_TRUE= + GL_GENERATE_ALLOCA_H_FALSE='#' +else + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE= +fi +: + if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE='#' + fi + + + + + + + + + + + + + + + + + + +# Persuade glibc to declare getloadavg(). + + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + +else case e in @%:@( + e) gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +printf %s "checking for elf_begin in -lelf... " >&6; } +if test ${ac_cv_lib_elf_elf_begin+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char elf_begin (void); +int +main (void) +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_elf_elf_begin=yes +else case e in @%:@( + e) ac_cv_lib_elf_elf_begin=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +printf '%s\n' "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes +then : + LIBS="-lelf $LIBS" +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 +printf %s "checking for kvm_open in -lkvm... " >&6; } +if test ${ac_cv_lib_kvm_kvm_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkvm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kvm_open (void); +int +main (void) +{ +return kvm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kvm_kvm_open=yes +else case e in @%:@( + e) ac_cv_lib_kvm_kvm_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 +printf '%s\n' "$ac_cv_lib_kvm_kvm_open" >&6; } +if test "x$ac_cv_lib_kvm_kvm_open" = xyes +then : + LIBS="-lkvm $LIBS" +fi + + # Check for the 4.4BSD definition of getloadavg. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 +printf %s "checking for getloadavg in -lutil... " >&6; } +if test ${ac_cv_lib_util_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_util_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_util_getloadavg" >&6; } +if test "x$ac_cv_lib_util_getloadavg" = xyes +then : + LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes +fi + + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 +printf %s "checking for getloadavg in -lgetloadavg... " >&6; } +if test ${ac_cv_lib_getloadavg_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lgetloadavg $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_getloadavg_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_getloadavg_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_getloadavg_getloadavg" >&6; } +if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes +then : + LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes +else case e in @%:@( + e) LIBS=$gl_getloadavg_LIBS ;; +esac +fi + + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 +printf %s "checking for kstat_open in -lkstat... " >&6; } +if test ${ac_cv_lib_kstat_kstat_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kstat_open (void); +int +main (void) +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kstat_kstat_open=yes +else case e in @%:@( + e) ac_cv_lib_kstat_kstat_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 +printf '%s\n' "$ac_cv_lib_kstat_kstat_open" >&6; } +if test "x$ac_cv_lib_kstat_kstat_open" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBKSTAT 1" >>confdefs.h + + LIBS="-lkstat $LIBS" + +fi + + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 +printf %s "checking for perfstat_cpu_total in -lperfstat... " >&6; } +if test ${ac_cv_lib_perfstat_perfstat_cpu_total+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lperfstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char perfstat_cpu_total (void); +int +main (void) +{ +return perfstat_cpu_total (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_perfstat_perfstat_cpu_total=yes +else case e in @%:@( + e) ac_cv_lib_perfstat_perfstat_cpu_total=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 +printf '%s\n' "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } +if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBPERFSTAT 1" >>confdefs.h + + LIBS="-lperfstat $LIBS" + +fi + + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define DGUX 1" >>confdefs.h + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 +printf %s "checking for dg_sys_info in -ldgc... " >&6; } +if test ${ac_cv_lib_dgc_dg_sys_info+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldgc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dg_sys_info (void); +int +main (void) +{ +return dg_sys_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dgc_dg_sys_info=yes +else case e in @%:@( + e) ac_cv_lib_dgc_dg_sys_info=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 +printf '%s\n' "$ac_cv_lib_dgc_dg_sys_info" >&6; } +if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBDGC 1" >>confdefs.h + + LIBS="-ldgc $LIBS" + +fi + +fi + + fi + fi ;; +esac +fi + + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getloadavg" = xyes +then : + +else case e in @%:@( + e) HAVE_DECL_GETLOADAVG=0 ;; +esac +fi + + + if test $HAVE_GETLOADAVG = 0; then + GL_COND_OBJ_GETLOADAVG_TRUE= + GL_COND_OBJ_GETLOADAVG_FALSE='#' +else + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE= +fi +: + if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE='#' + fi + + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : + + +# Figure out what our getloadavg.c needs. + + + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + + for ac_func in pstat_getdynamic +do : + ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic" +if test "x$ac_cv_func_pstat_getdynamic" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSTAT_GETDYNAMIC 1" >>confdefs.h + gl_func_getloadavg_done=yes +fi + +done +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define SVR4 1" >>confdefs.h + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + + +printf '%s\n' "@%:@define UMAX4_3 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes; printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MACH_MACH_H 1" >>confdefs.h + +fi + +fi + + for ac_header in nlist.h +do : + ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" +if test "x$ac_cv_header_nlist_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_NLIST_H 1" >>confdefs.h + ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include +" +if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h + + +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +printf '%s\n' "@%:@define N_NAME_POINTER 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi + +done + +fi + + + + + + + + + + GL_GNULIB_GETLOADAVG=1 + + + + + +printf '%s\n' "@%:@define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h + + + + + + # Check the system to see if it provides GNU glob. If not, use our + # local version. + { 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "gnu glob" >/dev/null 2>&1 +then : + make_cv_sys_gnu_glob=yes +else case e in @%:@( + e) make_cv_sys_gnu_glob=no ;; +esac +fi +rm -rf conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 +printf '%s\n' "$make_cv_sys_gnu_glob" >&6; } + # Tell automake about this, so it can build the right .c files. + if test "$make_cv_sys_gnu_glob" = yes; then + USE_SYSTEM_GLOB_TRUE= + USE_SYSTEM_GLOB_FALSE='#' +else + USE_SYSTEM_GLOB_TRUE='#' + USE_SYSTEM_GLOB_FALSE= +fi + + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + + # Check for DOS-style pathnames. + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 +printf %s "checking whether system uses MSDOS-style paths... " >&6; } +if test ${ac_cv_dos_paths+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__ +neither MSDOS nor Windows nor OS2 +#endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_dos_paths=yes +else case e in @%:@( + e) ac_cv_dos_paths=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 +printf '%s\n' "$ac_cv_dos_paths" >&6; } + + if test x"$ac_cv_dos_paths" = xyes +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + +fi + + + + + + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + + + + + + + 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 + + + if $GL_GENERATE_STDBOOL_H; then + GL_GENERATE_STDBOOL_H_TRUE= + GL_GENERATE_STDBOOL_H_FALSE='#' +else + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE= +fi +: + 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 + + + + + + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + + + + gl_source_base='tests' + gl_source_base_prefix= + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gltests_WITNESS + + + + + + + + + + + + + LIBGNU_LIBDEPS="$gl_libdeps" + + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 case e in @%:@( + e) { { 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; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +# Perl is needed for the test suite (only) +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="perl" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl" +fi ;; +esac +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf '%s\n' "$PERL" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + +# Specialized system macros + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + int + main (int argc, char **argv) + { + /* Intimidate the compiler so that it does not + optimize the arrays away. */ + char *p = argv[0]; + ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; + ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; + return use_ascii (argc) == use_ebcdic (*p); + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else case e in @%:@( + e) ac_cv_c_bigendian=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf '%s\n' "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf '%s\n' "@%:@define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf '%s\n' "@%:@define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Enable gettext, in "external" mode. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf '%s\n' "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + @%:@ Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else case e in @%:@( + e) USE_NLS=yes ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf '%s\n' "$MSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf '%s\n' "$GMSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac + + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf '%s\n' "$XGETTEXT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + rm -f messages.po + + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf '%s\n' "$MSGMERGE" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +@%:@ Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else case e in @%:@( + e) with_gnu_ld=no ;; +esac +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 &5 +printf '%s\n' "$LD" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf '%s\n' "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf '%s\n' "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + @%:@ Check whether --enable-rpath was given. +if test ${enable_rpath+y} +then : + enableval=$enable_rpath; : +else case e in @%:@( + e) enable_rpath=yes ;; +esac +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _LP64 +sixtyfour bits +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "sixtyfour bits" >/dev/null 2>&1 +then : + gl_cv_solaris_64bit=yes +else case e in @%:@( + e) gl_cv_solaris_64bit=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf '%s\n' "$gl_cv_solaris_64bit" >&6; } + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else case e in @%:@( + e) gt_cv_func_CFPreferencesCopyAppValue=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf '%s\n' "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf '%s\n' "@%:@define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyCurrent=yes +else case e in @%:@( + e) gt_cv_func_CFLocaleCopyCurrent=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf '%s\n' "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +printf '%s\n' "@%:@define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + LIBINTL= + LTLIBINTL= + POSUB= + + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libc=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf '%s\n' "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + if test "$cross_compiling" = yes +then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + result |= 16; + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf '%s\n' "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +printf '%s\n' "@%:@define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf '%s\n' "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libintl=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + fi + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +printf '%s\n' "@%:@define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf '%s\n' "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf '%s\n' "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf '%s\n' "@%:@define HAVE_GETTEXT 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# Checks for libraries. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (void); +int +main (void) +{ +return strerror (); + ; + return 0; +} +_ACEOF +for ac_lib in '' cposix +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_strerror=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_strerror+y} +then : + break +fi +done +if test ${ac_cv_search_strerror+y} +then : + +else case e in @%:@( + e) ac_cv_search_strerror=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf '%s\n' "$ac_cv_search_strerror" >&6; } +ac_res=$ac_cv_search_strerror +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 +printf %s "checking for library containing getpwnam... " >&6; } +if test ${ac_cv_search_getpwnam+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getpwnam (void); +int +main (void) +{ +return getpwnam (); + ; + return 0; +} +_ACEOF +for ac_lib in '' sun +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_getpwnam=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getpwnam+y} +then : + break +fi +done +if test ${ac_cv_search_getpwnam+y} +then : + +else case e in @%:@( + e) ac_cv_search_getpwnam=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 +printf '%s\n' "$ac_cv_search_getpwnam" >&6; } +ac_res=$ac_cv_search_getpwnam +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf '%s\n' "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else case e in @%:@( + e) eval "$as_ac_Header=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$as_ac_Header + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +@%:@define `printf '%s\n' "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stat_broken=no +else case e in @%:@( + e) ac_cv_header_stat_broken=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf '%s\n' "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +printf '%s\n' "@%:@define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "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 + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timeb_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIMEB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Derived from code rejected by Sun C 1.0 and similar vintage. */ + int x[] = {25, 17}; + typedef int const *iptr; + iptr foo = &x[0]; + ++foo; + if (!*foo) return 0; + } + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else case e in @%:@( + e) ac_cv_c_const=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf '%s\n' "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf '%s\n' "@%:@define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default" +if test "x$ac_cv_type_uid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define uid_t int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default" +if test "x$ac_cv_type_gid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define gid_t int" >>confdefs.h + ;; +esac +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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else case e in @%:@( + e) ac_pid_type='__int64' ;; +esac +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 + + ;; +esac +fi + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define off_t long int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define ssize_t int" >>confdefs.h + ;; +esac +fi + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +printf '%s\n' "@%:@define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_long_long_int=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi + fi ;; +esac +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 case e in @%:@( + e) 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 + ;; +esac +fi + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_UINTMAX_T 1" >>confdefs.h + +else case e in @%:@( + e) test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf '%s\n' "@%:@define uintmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + +# Check for sig_atomic_t + + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include +" +if test "x$ac_cv_type_sig_atomic_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + + +else case e in @%:@( + e) +printf '%s\n' "@%:@define sig_atomic_t int" >>confdefs.h + ;; +esac +fi + + + +# Find out whether our struct stat returns nanosecond resolution timestamps. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 +printf %s "checking for nanoseconds field of struct stat... " >&6; } +if test ${ac_cv_struct_st_mtim_nsec+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # st_mtim.tv_nsec -- the usual case + # st_mtim._tv_nsec -- Solaris 2.6, if + # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 + # && !defined __EXTENSIONS__) + # st_mtim.st__tim.tv_nsec -- UnixWare 2.1.2 + # st_mtime_n -- AIX 5.2 and above + # st_mtimespec.tv_nsec -- Darwin (Mac OSX) + for ac_val in st_mtim.tv_nsec st_mtim._tv_nsec st_mtim.st__tim.tv_nsec st_mtime_n st_mtimespec.tv_nsec; do + CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main (void) +{ +struct stat s; s.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_st_mtim_nsec=$ac_val; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 +printf '%s\n' "$ac_cv_struct_st_mtim_nsec" >&6; } + + if test $ac_cv_struct_st_mtim_nsec != no; then + +printf '%s\n' "@%:@define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h + + fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 +printf %s "checking whether to use high resolution file timestamps... " >&6; } +if test ${make_cv_file_timestamp_hi_res+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) make_cv_file_timestamp_hi_res=no + if test "$ac_cv_struct_st_mtim_nsec" != no +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if HAVE_INTTYPES_H +# include +#endif +int +main (void) +{ +char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_file_timestamp_hi_res=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 +printf '%s\n' "$make_cv_file_timestamp_hi_res" >&6; } +if test "$make_cv_file_timestamp_hi_res" = yes +then : + val=1 +else case e in @%:@( + e) val=0 ;; +esac +fi + +printf '%s\n' "@%:@define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h + + +if test "$make_cv_file_timestamp_hi_res" = yes +then : + # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. + # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else case e in @%:@( + e) ac_cv_search_clock_gettime=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf '%s\n' "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "$ac_cv_search_clock_gettime" != no +then : + +printf '%s\n' "@%:@define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +fi + +fi + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 +printf %s "checking for standard gettimeofday... " >&6; } +if test ${ac_cv_func_gettimeofday+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_gettimeofday=no + if test "$cross_compiling" = yes +then : + ac_cv_func_gettimeofday="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return gettimeofday (&t, 0) != 0 + || t.tv_sec < 0 || t.tv_usec < 0; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_gettimeofday=yes +else case e in @%:@( + e) ac_cv_func_gettimeofday=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 +printf '%s\n' "$ac_cv_func_gettimeofday" >&6; } +if test "$ac_cv_func_gettimeofday" = yes +then : + +printf '%s\n' "@%:@define HAVE_GETTIMEOFDAY 1" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRTOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" +if test "x$ac_cv_func_strndup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf '%s\n' "@%:@define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktemp" "ac_cv_func_mktemp" +if test "x$ac_cv_func_mktemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopen" "ac_cv_func_fdopen" +if test "x$ac_cv_func_fdopen" = xyes +then : + printf '%s\n' "@%:@define HAVE_FDOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf '%s\n' "@%:@define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigsetmask" "ac_cv_func_sigsetmask" +if test "x$ac_cv_func_sigsetmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGSETMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" +if test "x$ac_cv_func_setrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf '%s\n' "@%:@define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf '%s\n' "@%:@define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf '%s\n' "@%:@define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf '%s\n' "@%:@define HAVE_ATEXIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty" +if test "x$ac_cv_func_isatty" = xyes +then : + printf '%s\n' "@%:@define HAVE_ISATTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf '%s\n' "@%:@define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnattr_setsigmask" "ac_cv_func_posix_spawnattr_setsigmask" +if test "x$ac_cv_func_posix_spawnattr_setsigmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h + +fi + + +# We need to check declarations, not just existence, because on Tru64 this +# function is not declared without special flags, which themselves cause +# other problems. We'll just use our own. +ac_fn_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h + + + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + + +if test "x$ac_cv_func_fork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +printf %s "checking for working fork... " >&6; } +if test ${ac_cv_func_fork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_fork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* By R. Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_fork_works=yes +else case e in @%:@( + e) ac_cv_func_fork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +printf '%s\n' "$ac_cv_func_fork_works" >&6; } + +else + ac_cv_func_fork_works=$ac_cv_func_fork +fi +if test "x$ac_cv_func_fork_works" = xcross; then + case $host in + *-*-amigaos* | *-*-msdosdjgpp*) + # Override, as these systems have only a dummy fork() stub + ac_cv_func_fork_works=no + ;; + *) + ac_cv_func_fork_works=yes + ;; + esac + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} +fi +ac_cv_func_vfork_works=$ac_cv_func_vfork +if test "x$ac_cv_func_vfork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +printf %s "checking for working vfork... " >&6; } +if test ${ac_cv_func_vfork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_vfork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#include +#ifdef HAVE_VFORK_H +# include +#endif + +static void +do_nothing (int sig) +{ + (void) sig; +} + +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. The compiler + is told about this with #include , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +sparc_address_test (int arg) +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} + +int +main (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + /* On Solaris 2.4, changes by the child to the signal handler + also munge signal handlers in the parent. To detect this, + start by putting the parent's handler in a known state. */ + signal (SIGTERM, SIG_DFL); + + child = vfork (); + + if (child == 0) { + /* Here is another test for sparc vfork register problems. This + test uses lots of local variables, at least as many local + variables as main has allocated so far including compiler + temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris + 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should + reuse the register of parent for one of the local variables, + since it will think that parent can't possibly be used any more + in this routine. Assigning to the local variable will thus + munge parent in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); + + /* Alter the child's signal handler. */ + if (signal (SIGTERM, do_nothing) != SIG_DFL) + _exit(1); + + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent + from child file descriptors. If the child closes a descriptor + before it execs or exits, this munges the parent's descriptor + as well. Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child munge the parent's signal handler? */ + || signal (SIGTERM, SIG_DFL) != SIG_DFL + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_vfork_works=yes +else case e in @%:@( + e) ac_cv_func_vfork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +printf '%s\n' "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +printf '%s\n' "@%:@define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + + +# Rumor has it that strcasecmp lives in -lresolv on some odd systems. +# It doesn't hurt much to use our own if we can't find it so I don't +# make the effort here. +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcmpi" "ac_cv_func_strcmpi" +if test "x$ac_cv_func_strcmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncmpi" "ac_cv_func_strncmpi" +if test "x$ac_cv_func_strncmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp" +if test "x$ac_cv_func_stricmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRICMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp" +if test "x$ac_cv_func_strnicmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNICMP 1" >>confdefs.h + +fi + + +# strcoll() is used by the GNU glob library +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_strcoll_works=yes +else case e in @%:@( + e) ac_cv_func_strcoll_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf '%s\n' "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +printf '%s\n' "@%:@define HAVE_STRCOLL 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +printf %s "checking whether closedir returns void... " >&6; } +if test ${ac_cv_func_closedir_void+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <$ac_header_dirent> + +int +main (void) +{ + + return closedir(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_closedir_void=no +else case e in @%:@( + e) ac_cv_func_closedir_void=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +printf '%s\n' "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +printf '%s\n' "@%:@define CLOSEDIR_VOID 1" >>confdefs.h + +fi + + +# dir.c and our glob.c use dirent.d_type if available + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + + + +# See if the user wants to add (or not) GNU Guile support + +@%:@ Check whether --with-guile was given. +if test ${with_guile+y} +then : + withval=$with_guile; +fi + + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf '%s\n' "$PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf '%s\n' "$ac_pt_PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$with_guile" != xno +then : + guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 +printf %s "checking for GNU Guile... " >&6; } + for v in $guile_versions; do + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + guile_version=$v; have_guile=yes; break +fi + done + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 +printf '%s\n' "$guile_version" >&6; } + if test "$have_guile" = yes +then : + +pkg_failed=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for guile-$guile_version" >&5 +printf %s "checking for guile-$guile_version... " >&6; } + +if test -n "$GUILE_CFLAGS"; then + pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GUILE_LIBS"; then + pkg_cv_GUILE_LIBS="$GUILE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-$guile_version" 2>&1` + else + GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (guile-$guile_version) were not met: + +$GUILE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "A pkg-config implementation could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get a pkg-config implementation, see . +See 'config.log' for more details" "$LINENO" 5; } +else + GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS + GUILE_LIBS=$pkg_cv_GUILE_LIBS + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +fi + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */ +" +if test "x$ac_cv_header_libguile_h" = xyes +then : + +printf '%s\n' "@%:@define HAVE_GUILE 1" >>confdefs.h + +else case e in @%:@( + e) have_guile=no ;; +esac +fi + + if test "$have_guile" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we can link GNU Guile" >&5 +printf %s "checking whether we can link GNU Guile... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} + +int +main (void) +{ + + scm_with_guile (guile_init, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_guile=yes +else case e in @%:@( + e) have_guile=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $have_guile" >&5 +printf '%s\n' "$have_guile" >&6; } +fi + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + +fi + +fi + + if test "$have_guile" = "yes"; then + HAVE_GUILE_TRUE= + HAVE_GUILE_FALSE='#' +else + HAVE_GUILE_TRUE='#' + HAVE_GUILE_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +# Check out the wait reality. +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAIT3 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 +printf %s "checking for union wait... " >&6; } +if test ${make_cv_union_wait+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +union wait status; int pid; pid = wait (&status); +#ifdef WEXITSTATUS +/* Some POSIXoid systems have both the new-style macros and the old + union wait type, and they do not work together. If union wait + conflicts with WEXITSTATUS et al, we don't want to use it at all. */ + if (WEXITSTATUS (status) != 0) pid = -1; +#ifdef WTERMSIG + /* If we have WEXITSTATUS and WTERMSIG, just use them on ints. */ + -- blow chunks here -- +#endif +#endif +#ifdef HAVE_WAITPID + /* Make sure union wait works with waitpid. */ + pid = waitpid (-1, &status, 0); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + make_cv_union_wait=yes +else case e in @%:@( + e) make_cv_union_wait=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 +printf '%s\n' "$make_cv_union_wait" >&6; } +if test "$make_cv_union_wait" = yes +then : + +printf '%s\n' "@%:@define HAVE_UNION_WAIT 1" >>confdefs.h + + +fi + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +if test "$PATH_SEPARATOR" = ';' +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + +fi + +# See if the user wants to use pmake's "customs" distributed build capability + REMOTE=stub +use_customs=false + +@%:@ Check whether --with-customs was given. +if test ${with_customs+y} +then : + withval=$with_customs; case $withval in @%:@( + n|no) : + : ;; @%:@( + *) : + make_cppflags="$CPPFLAGS" + case $withval in @%:@( + y|ye|yes) : + : ;; @%:@( + *) : + CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs" + make_ldflags="$LDFLAGS -L$with_customs/lib" ;; +esac + +cf_test_netlibs=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 +printf %s "checking for network libraries... " >&6; } +if test ${cf_cv_netlibs+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: working..." >&5 +printf '%s\n' "working..." >&6; } +cf_cv_netlibs="" +cf_test_netlibs=yes + + for ac_func in gethostname +do : + ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ 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 case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 +printf %s "checking for gethostname in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_socket_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_socket_gethostname" >&6; } +if test "x$ac_cv_lib_socket_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_main=yes +else case e in @%:@( + e) ac_cv_lib_inet_main=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf '%s\n' "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : + cf_cv_netlibs="-linet $cf_cv_netlibs" +fi + +# +if test "$ac_cv_func_lsocket" != no ; then + + for ac_func in socket +do : + ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket" +if test "x$ac_cv_func_socket" = xyes +then : + printf '%s\n' "@%:@define HAVE_SOCKET 1" >>confdefs.h + +else case e in @%:@( + e) + +{ 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 case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else case e in @%:@( + e) ac_cv_lib_socket_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf '%s\n' "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 +printf %s "checking for socket in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_socket+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_socket=yes +else case e in @%:@( + e) ac_cv_lib_bsd_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 +printf '%s\n' "$ac_cv_lib_bsd_socket" >&6; } +if test "x$ac_cv_lib_bsd_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +fi +# + + for ac_func in gethostbyname +do : + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ 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 case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (void); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostbyname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + + +cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + +done + ;; +esac +fi + +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 + + ac_fn_c_check_header_compile "$LINENO" "customs.h" "ac_cv_header_customs_h" "$ac_includes_default" +if test "x$ac_cv_header_customs_h" = xyes +then : + use_customs=true + REMOTE=cstms + LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags" +else case e in @%:@( + e) with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes ;; +esac +fi + + ;; +esac + +fi + + +# Tell automake about this, so it can include the right .c files. + if test "$use_customs" = true; then + USE_CUSTOMS_TRUE= + USE_CUSTOMS_FALSE='#' +else + USE_CUSTOMS_TRUE='#' + USE_CUSTOMS_FALSE= +fi + + +# See if the user asked to handle case insensitive file systems. + +@%:@ Check whether --enable-case-insensitive-file-system was given. +if test ${enable_case_insensitive_file_system+y} +then : + enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes +then : + printf '%s\n' "@%:@define HAVE_CASE_INSENSITIVE_FS 1" >>confdefs.h + +fi +fi + + +# See if we can handle the job server feature, and if the user wants it. +@%:@ Check whether --enable-job-server was given. +if test ${enable_job_server+y} +then : + enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" +else case e in @%:@( + e) make_cv_job_server="yes" ;; +esac +fi + + +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : + has_wait_nohang=no +else case e in @%:@( + e) has_wait_nohang=yes ;; +esac +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 +printf %s "checking for SA_RESTART... " >&6; } +if test ${make_cv_sa_restart+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return SA_RESTART; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sa_restart=yes +else case e in @%:@( + e) make_cv_sa_restart=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 +printf '%s\n' "$make_cv_sa_restart" >&6; } + +if test "$make_cv_sa_restart" != no +then : + +printf '%s\n' "@%:@define HAVE_SA_RESTART 1" >>confdefs.h + + +fi + +# Only allow jobserver on systems that support it +case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in @%:@( + */no/*) : + make_cv_job_server=no ;; @%:@( + *) : + ;; +esac + +# Also supported on OS2 and MinGW +case $host_os in @%:@( + os2*|mingw*) : + make_cv_job_server=yes ;; @%:@( + *) : + ;; +esac + +# If we support it and the user didn't disable it, build with jobserver +case /$make_cv_job_server/$user_job_server/ in @%:@( + */no/*) : + : no jobserver ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_JOBSERVER 1" >>confdefs.h + + ;; +esac + +# If dl*() functions are supported we can enable the load operation +ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlopen" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLOPEN $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlsym" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLSYM $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlerror" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h + + +@%:@ Check whether --enable-load was given. +if test ${enable_load+y} +then : + enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" +else case e in @%:@( + e) make_cv_load="yes" ;; +esac +fi + + +case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + ;; +esac + +# We might need -ldl +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dl +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_dlopen=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : + +else case e in @%:@( + e) ac_cv_search_dlopen=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf '%s\n' "$ac_cv_search_dlopen" >&6; } +ac_res=$ac_cv_search_dlopen +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else case e in @%:@( + e) make_cv_load= ;; +esac +fi + + +fi + +case /$make_cv_load/$user_load/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_LOAD 1" >>confdefs.h + + ;; +esac + +# If we want load support, we might need to link with export-dynamic. +# See if we can figure it out. Unfortunately this is very difficult. +# For example passing -rdynamic to the SunPRO linker gives a warning +# but succeeds and creates a shared object, not an executable! +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 +printf %s "checking If the linker accepts -Wl,--export-dynamic... " >&6; } + old_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-Wl,--export-dynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 +printf %s "checking If the linker accepts -rdynamic... " >&6; } + LDFLAGS="$old_LDFLAGS -rdynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-rdynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$old_LDFLAGS" + +fi + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : + +printf '%s\n' "@%:@define MAKE_SYMLINKS 1" >>confdefs.h + + +fi + +# Use posix_spawn if we have support and the user didn't disable it + +@%:@ Check whether --enable-posix-spawn was given. +if test ${enable_posix_spawn+y} +then : + enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" +else case e in @%:@( + e) make_cv_posix_spawn="yes" ;; +esac +fi + + +case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + ;; +esac + +if test "$make_cv_posix_spawn" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 +printf %s "checking for posix_spawn that fails synchronously... " >&6; } +if test ${make_cv_synchronous_posix_spawn+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no + if test "$cross_compiling" = yes +then : + make_cv_synchronous_posix_spawn="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + extern char **environ; + int main () { + char path[] = "./xxx-non-existent"; + char *argv[] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_synchronous_posix_spawn=yes +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 +printf '%s\n' "$make_cv_synchronous_posix_spawn" >&6; } +fi + +case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define USE_POSIX_SPAWN 1" >>confdefs.h + + ;; +esac + +# Find the SCCS commands, so we can include them in our default rules. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 +printf %s "checking for location of SCCS get command... " >&6; } +if test ${make_cv_path_sccs_get+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + if test -f /usr/sccs/get +then : + make_cv_path_sccs_get=/usr/sccs/get +else case e in @%:@( + e) make_cv_path_sccs_get=get ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf '%s\n' "$make_cv_path_sccs_get" >&6; } + +printf '%s\n' "@%:@define SCCS_GET \"$make_cv_path_sccs_get\"" >>confdefs.h + + +ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later. +if (/usr/sccs/admin -n s.conftest || admin -n s.conftest) >/dev/null 2>&1 && + test -f s.conftest +then : + # We successfully created an SCCS file. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 +printf %s "checking if SCCS get command understands -G... " >&6; } +if test ${make_cv_sys_get_minus_G+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 && + test -f conftoast +then : + make_cv_sys_get_minus_G=yes +else case e in @%:@( + e) make_cv_sys_get_minus_G=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 +printf '%s\n' "$make_cv_sys_get_minus_G" >&6; } + if test "$make_cv_sys_get_minus_G" = yes +then : + +printf '%s\n' "@%:@define SCCS_GET_MINUS_G 1" >>confdefs.h + + +fi + +fi +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + + +printf '%s\n' "@%:@define MAKE_HOST \"$host\"" >>confdefs.h + +MAKE_HOST="$host" + + +w32_target_env=no + if false; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + +case $host in @%:@( + *-*-mingw32) : + if true; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + w32_target_env=yes + +printf '%s\n' "@%:@define WINDOWS32 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + ;; @%:@( + *) : + ;; +esac + + +printf '%s\n' "@%:@define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'" >>confdefs.h + + + +printf '%s\n' "@%:@define HAVE_DECL_GETLOADAVG $HAVE_DECL_GETLOADAVG" >>confdefs.h + + +# Remember that we ran configure to generate config.h + + +printf '%s\n' "@%:@define MK_CONFIGURE 1" >>confdefs.h + + +# Include the Maintainer's Makefile section, if it's here. + +MAINT_MAKEFILE=/dev/null +if test -r "$srcdir/maintMakefile" +then : + MAINT_MAKEFILE="$srcdir/maintMakefile" + +fi + + +# Allow building with dmalloc +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 +printf %s "checking if malloc debugging is wanted... " >&6; } + +@%:@ Check whether --with-dmalloc was given. +if test ${with_dmalloc+y} +then : + withval=$with_dmalloc; if test "$withval" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +printf '%s\n' "@%:@define WITH_DMALLOC 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi + + + +# Forcibly disable SET_MAKE. If it's set it breaks things like the test +# scripts, etc. +SET_MAKE= + +# Sanity check and inform the user of what we found + +if test "x$make_badcust" = xyes +then : + +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo + +fi + +case $with_customs in @%:@( + ""|n|no|y|ye|yes) : + : ;; @%:@( + *) : + if test -f "$with_customs/lib/libcustoms.a" +then : + : +else case e in @%:@( + e) echo + echo "WARNING: '$with_customs/lib' does not appear to contain the" + echo " Customs library. You must build and install Customs" + echo " before compiling GNU make." + echo + ;; +esac +fi ;; +esac + +if test "x$has_wait_nohang" = xno +then : + echo + echo "WARNING: Your system has neither waitpid() nor wait3()." + echo " Without one of these, signal handling is unreliable." + echo " You should be aware that running GNU make with -j" + echo " could result in erratic behavior." + echo + +fi + +if test "x$make_cv_job_server" = xno && test "x$user_job_server" = xyes +then : + echo + echo "WARNING: Make job server requires a POSIX-ish system that" + echo " supports the pipe(), sigaction(), and either" + echo " waitpid() or wait3() functions. Your system doesn't" + echo " appear to provide one or more of those." + echo " Disabling job server support." + echo + +fi + +if test "x$make_cv_load" = xno && test "x$user_load" = xyes +then : + echo + echo "WARNING: 'load' support requires a POSIX-ish system that" + echo " supports the dlopen(), dlsym(), and dlerror() functions." + echo " Your system doesn't appear to provide one or more of these." + echo " Disabling 'load' support." + echo + +fi + +if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes +then : + echo + echo "WARNING: posix_spawn() is not supported on this system." + echo + +fi + +# autoconf initializes $prefix to NONE. + if test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr; then + KNOWN_PREFIX_TRUE= + KNOWN_PREFIX_FALSE='#' +else + KNOWN_PREFIX_TRUE='#' + KNOWN_PREFIX_FALSE= +fi + + +# Specify what files are to be created. +ac_config_files="$ac_config_files build.cfg tests/config-flags.pm Makefile lib/Makefile doc/Makefile po/Makefile.in" + +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +ac_config_links="$ac_config_links build.sh:build.sh" + + +# OK, do it! + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +ac_cache_dump | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf '%s\n' "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf '%s\n' "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf '%s\n' "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf '%s\n' "done" >&6; } +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi + + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + gl_LIBOBJDEPS=$gl_libobjdeps + + + + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + gltests_LIBOBJDEPS=$gltests_libobjdeps + + + +if test -z "${HAVE_GUILE_TRUE}" && test -z "${HAVE_GUILE_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GUILE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_CUSTOMS_TRUE}" && test -z "${USE_CUSTOMS_FALSE}"; then + as_fn_error $? "conditional \"USE_CUSTOMS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${KNOWN_PREFIX_TRUE}" && test -z "${KNOWN_PREFIX_FALSE}"; then + as_fn_error $? "conditional \"KNOWN_PREFIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +case $CONFIG_STATUS in @%:@( + -*) : + CONFIG_STATUS=./$CONFIG_STATUS ;; @%:@( + */*) : + ;; @%:@( + *) : + CONFIG_STATUS=./$CONFIG_STATUS ;; +esac + +ac_write_fail=0 +ac_clean_CONFIG_STATUS='"$CONFIG_STATUS"' +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf '%s\n' "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >"$CONFIG_STATUS" <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>"$CONFIG_STATUS" <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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 + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ------------------------------------- ## +## Main body of "$CONFIG_STATUS" script. ## +## ------------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x "$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Make home page: . +General help using GNU software: ." + +_ACEOF +ac_cs_config=`printf '%s\n' "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +GNU Make config.status 4.4 +configured by $0, generated by GNU Autoconf 2.73, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2026 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || { + awk '' >"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf '%s\n' "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf '%s\n' "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf '%s\n' "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf '%s\n' "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + printf '%s\n' "$ac_log" +} >&5 + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;; + "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "build.sh") CONFIG_LINKS="$CONFIG_LINKS build.sh:build.sh" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + +if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then + ac_cs_awk_getline=: + ac_cs_awk_pipe_init= + ac_cs_awk_read_file=' + while ((getline aline < (F[key])) > 0) + print(aline) + close(F[key])' + ac_cs_awk_pipe_fini= +else + ac_cs_awk_getline=false + ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" + ac_cs_awk_read_file=' + print "|#_!!_#|" + print "cat " F[key] " &&" + '$ac_cs_awk_pipe_init + # The final ':' finishes the AND list. + ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' +fi +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + +# Create commands to substitute file output variables. +{ + echo 'cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1' && + printf '%s\n' 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && + printf '%s\n' "$ac_subst_files" | sed 's/.*/F@<:@"&"@:>@="$&"/' && + echo "_ACAWK" && + echo "_ACEOF" +} >conf$$files.sh && +. ./conf$$files.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +rm -f conf$$files.sh + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | sed -n '$='` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | sed -n '$='` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >"$CONFIG_STATUS" || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + \$ac_cs_awk_pipe_init +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + if (nfields == 3 && !substed) { + key = field[2] + if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { + \$ac_cs_awk_read_file + next + } + } + print line +} +\$ac_cs_awk_pipe_fini +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >"$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + suffix = P[macro] D[macro] + while (suffix ~ /[\t ]$/) { + suffix = substr(suffix, 1, length(suffix) - 1) + } + # Preserve the white space surrounding the "#". + print prefix "define", macro suffix + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf '%s\n' "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf '%s\n' "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf '%s\n' "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf '%s\n' "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | +if $ac_cs_awk_getline; then + $AWK -f "$ac_tmp/subs.awk" +else + $AWK -f "$ac_tmp/subs.awk" | $SHELL +fi \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf '%s\n' "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf '%s\n' "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf '%s\n' "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +printf '%s\n' "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf '%s\n' "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in @%:@( + *\'*) : + eval set x "$CONFIG_FILES" ;; @%:@( + *) : + set x $CONFIG_FILES ;; @%:@( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf '%s\n' "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See 'config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_CONFIG_STATUS= + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + case $CONFIG_STATUS in @%:@( + -*) : + ac_no_opts=-- ;; @%:@( + *) : + ac_no_opts= ;; +esac + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $ac_no_opts "$CONFIG_STATUS" $ac_config_status_args || + ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/output.1 b/local/recipes/dev/gnu-make/source/autom4te.cache/output.1 new file mode 100644 index 0000000000..83bbf2e660 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/output.1 @@ -0,0 +1,17350 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.73 for GNU Make 4.4. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation, +@%:@ Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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 + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="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 + # contradicts POSIX and common usage. Disable this. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in @%:@( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in @%:@( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) 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 ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf '%s\n' "$0: This script requires a shell more modern than all" + printf '%s\n' "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later." + else + printf '%s\n' "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf '%s\n' "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_CONFIG_STATUS= +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Make' +PACKAGE_TARNAME='make' +PACKAGE_VERSION='4.4' +PACKAGE_STRING='GNU Make 4.4' +PACKAGE_BUGREPORT='bug-make@gnu.org' +PACKAGE_URL='https://www.gnu.org/software/make/' + +ac_unique_file="src/vpath.c" +ac_config_libobj_dir=lib +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_func_c_list= +ac_subst_vars='gltests_LIBOBJDEPS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LIBOBJDEPS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIB@&t@OBJS +KNOWN_PREFIX_FALSE +KNOWN_PREFIX_TRUE +WINDOWSENV_FALSE +WINDOWSENV_TRUE +MAKE_HOST +AM_LDFLAGS +USE_CUSTOMS_FALSE +USE_CUSTOMS_TRUE +REMOTE +HAVE_GUILE_FALSE +HAVE_GUILE_TRUE +GUILE_LIBS +GUILE_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +POSUB +LTLIBINTL +LIBINTL +INTLLIBS +LTLIBICONV +LIBICONV +INTL_MACOSX_LIBS +XGETTEXT_EXTRA_OPTIONS +MSGMERGE +XGETTEXT_015 +XGETTEXT +GMSGFMT_015 +MSGFMT_015 +GMSGFMT +MSGFMT +GETTEXT_MACRO_VERSION +USE_NLS +SED +PERL +LIBGNU_LTLIBDEPS +LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS +gltests_WITNESS +GL_GENERATE_STDBOOL_H_FALSE +GL_GENERATE_STDBOOL_H_TRUE +STDBOOL_H +HAVE__BOOL +USE_SYSTEM_GLOB +USE_SYSTEM_GLOB_FALSE +USE_SYSTEM_GLOB_TRUE +HOST_CPU_C_ABI +HOST_CPU +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE +GETLOADAVG_LIBS +GL_GNULIB_GETLOADAVG +HAVE_DECL_GETLOADAVG +GL_GENERATE_ALLOCA_H_FALSE +GL_GENERATE_ALLOCA_H_TRUE +ALLOCA_H +HAVE_ALLOCA_H +ALLOCA +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +RANLIB +ARFLAGS +AR +CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +ECHO_T +ECHO_N +ECHO_C +target_alias +host_alias +build_alias +LIBS +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='MAINT_MAKEFILE' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_largefile +enable_year2038 +enable_cross_guesses +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_guile +with_customs +enable_case_insensitive_file_system +enable_job_server +enable_load +enable_posix_spawn +with_dmalloc +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GUILE_CFLAGS +GUILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf '%s\n' "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf '%s\n' "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`printf '%s\n' $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +'configure' configures GNU Make 4.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print 'checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for '--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/make@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Make 4.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --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 + --enable-case-insensitive-file-system + assume file systems are case insensitive + --disable-job-server disallow recursive make communication during -jN + --disable-load disable support for the 'load' operation + --disable-posix-spawn disable support for posix_spawn() + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + --with-guile Support GNU Guile for embedded scripting + --with-customs=DIR enable remote jobs via Customs--see README.customs + --with-dmalloc use dmalloc, as in http://www.dmalloc.com + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + GUILE_CFLAGS + C compiler flags for GUILE, overriding pkg-config + GUILE_LIBS linker flags for GUILE, overriding pkg-config + +Use these variables to override the choices made by 'configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +GNU Make home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf '%s\n' "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Make configure 4.4 +generated by GNU Autoconf 2.73 + +Copyright (C) 2026 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +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.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES +@%:@ ------------------------------------------- +@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache +@%:@ variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) eval "$3=yes" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_type + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to run conftest.@S|@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 case e in @%:@( + e) 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 ;; +esac +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_func LINENO FUNC VAR +@%:@ ---------------------------------- +@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (void); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (void); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_func + +@%:@ ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +@%:@ ------------------------------------------------------------------ +@%:@ Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +@%:@ accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + ac_compile="$ac_save_ac_compile" + +} @%:@ ac_fn_check_decl + +@%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +@%:@ ---------------------------------------------------- +@%:@ Tries to find if the field MEMBER exists in type AGGR, after including +@%:@ INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) eval "$4=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$4 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf '%s\n' "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf '%s\n' "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# Dump the cache to stdout. It can be in a pipe (this is a requirement). +ac_cache_dump () +{ + # The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf '%s\n' "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) +} + +# Print debugging info to stdout. +ac_dump_debugging_info () +{ + echo + + printf '%s\n' "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + ac_cache_dump + echo + + printf '%s\n' "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf '%s\n' "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + fi + + if test -s confdefs.h; then + printf '%s\n' "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf '%s\n' "$as_me: caught signal $ac_signal" + printf '%s\n' "$as_me: exit $exit_status" +} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. +ac_exit_trap () +{ + exit_status= + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + ac_dump_debugging_info >&5 + eval "rm -f $ac_clean_CONFIG_STATUS core *.core core.conftest.*" && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +} + +trap 'ac_exit_trap $?' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf '%s\n' "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf '%s\n' "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf '%s\n' "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See 'config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf '%s\n' "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf '%s\n' "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C23 (global declarations) +ac_c_conftest_c23_globals=' +/* Does the compiler advertise conformance to C17 or earlier? + Although GCC 14 does not do that, even with -std=gnu23, + it is close enough, and defines __STDC_VERSION == 202000L. */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ <= 201710L +# error "Compiler advertises conformance to C17 or earlier" +#endif + +// Check alignas. +char alignas (double) c23_aligned_as_double; +char alignas (0) c23_no_special_alignment; +extern char c23_aligned_as_int; +char alignas (0) alignas (int) c23_aligned_as_int; + +// Check alignof. +enum +{ + c23_int_alignment = alignof (int), + c23_int_array_alignment = alignof (int[100]), + c23_char_alignment = alignof (char) +}; +static_assert (0 < -alignof (int), "alignof is signed"); + +int function_with_unnamed_parameter (int) { return 0; } + +void c23_noreturn (); + +/* Test parsing of string and char UTF-8 literals (including hex escapes). + The parens pacify GCC 15. */ +bool use_u8 = (!sizeof u8"\xFF") == (!u8'\''x'\''); + +bool check_that_bool_works = true | false | !nullptr; +#if !true +# error "true does not work in #if" +#endif +#if false +#elifdef __STDC_VERSION__ +#else +# error "#elifdef does not work" +#endif + +#ifndef __has_c_attribute +# error "__has_c_attribute not defined" +#endif + +#ifndef __has_include +# error "__has_include not defined" +#endif + +#define LPAREN() ( +#define FORTY_TWO(x) 42 +#define VA_OPT_TEST(r, x, ...) __VA_OPT__ (FORTY_TWO r x)) +static_assert (VA_OPT_TEST (LPAREN (), 0, <:-) == 42); + +static_assert (0b101010 == 42); +static_assert (0B101010 == 42); +static_assert (0xDEAD'\''BEEF == 3'\''735'\''928'\''559); +static_assert (0.500'\''000'\''000 == 0.5); + +enum unsignedish : unsigned int { uione = 1 }; +static_assert (0 < -uione); + +#include +constexpr nullptr_t null_pointer = nullptr; + +static typeof (1 + 1L) two () { return 2; } +static long int three () { return 3; } +' + +# Test code for whether the C compiler supports C23 (body of main). +ac_c_conftest_c23_main=' + { + label_before_declaration: + int arr[10] = {}; + if (arr[0]) + goto label_before_declaration; + if (!arr[0]) + goto label_at_end_of_block; + label_at_end_of_block: + } + ok |= !null_pointer; + ok |= two != three; +' + +# Test code for whether the C compiler supports C23 (complete). +ac_c_conftest_c23_program="${ac_c_conftest_c23_globals} + +int +main (int, char **) +{ + int ok = 0; + ${ac_c_conftest_c23_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Do not test the value of __STDC__, because some compilers define it to 0 + or do not define it, while otherwise adequately conforming. */ + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (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; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + 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 + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// 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, and "aND" is used instead of "and" to work around +// GCC bug 40564 which is irrelevant here. +#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) +{ + // 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; + const char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + static struct incomplete_array *volatile incomplete_array_pointer; + struct incomplete_array *ia = incomplete_array_pointer; + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + // Do not test for VLAs, as some otherwise-conforming compilers lack them. + // C code should instead use __STDC_NO_VLA__; see Autoconf manual. + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || ni.number != 58); +' + +# 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 case e in @%:@( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +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_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w= + for ac_val in x $ac_old_val; do + ac_old_val_w="$ac_old_val_w $ac_val" + done + ac_new_val_w= + for ac_val in x $ac_new_val; do + ac_new_val_w="$ac_new_val_w $ac_val" + done + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf '%s\n' "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf '%s\n' "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf '%s\n' "$as_me: former value: '$ac_old_val'" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf '%s\n' "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf '%s\n' "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf '%s\n' "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Autoconf setup + + +ac_config_headers="$ac_config_headers src/config.h" + + + + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +am__api_version='1.18' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in @%:@(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF/1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF/1 since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + ;; +esac +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf '%s\n' "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in @%:@( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf '%s\n' "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + printf '%s\n' ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf '%s\n' "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf '%s\n' "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in @%:@( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf '%s\n' "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf '%s\n' "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf '%s\n' "$STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf '%s\n' "$ac_ct_STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf '%s\n' "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk 'busybox awk' +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf '%s\n' "$AWK" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf '%s\n' "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @printf '%s\n' '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + SET_MAKE= +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +@%:@ Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if printf '%s\n' 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf '%s\n' "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in @%:@( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in @%:@( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf '%s\n' "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in @%:@( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='make' + VERSION='4.4' + + +printf '%s\n' "@%:@define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf '%s\n' "@%:@define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf '%s\n' "$am_cv_prog_tar_ustar" >&6; } + + + + + +# 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 + + + + + + + + +# Checks for programs. + + + + + + + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in @%:@( + '0:this is the am__doit target') : + case $s in @%:@( + BSD) : + am__include='.include' am__quote='"' ;; @%:@( + *) : + am__include='include' am__quote='' ;; +esac ;; @%:@( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf '%s\n' "${_am_result}" >&6; } + +@%:@ Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf '%s\n' "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in @%:@( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf '%s\n' "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in @%:@( + e) { { 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; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf '%s\n' "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf '%s\n' "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf '%s\n' "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +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 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 case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +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 case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +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 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf '%s\n' "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf '%s\n' "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else case e in @%:@( + e) ac_cv_safe_to_define___extensions__=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf '%s\n' "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf '%s\n' "$ac_cv_should_define__xopen_source" >&6; } + + printf '%s\n' "@%:@define _ALL_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _COSMO_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _GNU_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf '%s\n' "@%:@define _NETBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _OPENBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf '%s\n' "@%:@define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf '%s\n' "@%:@define _MINIX 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_1_SOURCE 2" >>confdefs.h + +else case e in @%:@( + e) MINIX= ;; +esac +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf '%s\n' "@%:@define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf '%s\n' "@%:@define _XOPEN_SOURCE 500" >>confdefs.h + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +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 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 case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +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 case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +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 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# 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 case e in @%:@( + e) 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 + ;; +esac +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=`printf '%s\n' "$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 case e in @%:@( + e) 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 + ;; +esac +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=`printf '%s\n' "$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 case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 case e in @%:@( + e) { { 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; } ;; +esac +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 egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_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_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "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_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + + if test "$ac_cv_path_EGREP_TRADITIONAL" +then : + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_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_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "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_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; 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_TRADITIONAL=$EGREP_TRADITIONAL +fi + ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf '%s\n' "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL + + + + + { 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 case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Amsterdam" >/dev/null 2>&1 +then : + gl_cv_c_amsterdam_compiler=yes +else case e in @%:@( + e) gl_cv_c_amsterdam_compiler=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +printf '%s\n' "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + : + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf '%s\n' "$ac_ct_AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + +@%:@ Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_y2038=yes +else case e in @%:@( + e) gl_cv_type_time_t_y2038=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_bits_macro=yes +else case e in @%:@( + e) gl_cv_type_time_t_bits_macro=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) # 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 + ;; +esac +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 alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + + + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: + + + + + + + + + + @%:@ Check whether --enable-cross-guesses was given. +if test ${enable_cross_guesses+y} +then : + enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 +printf '%s\n' "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} + enableval=conservative + fi + gl_cross_guesses="$enableval" +else case e in @%:@( + e) gl_cross_guesses=conservative ;; +esac +fi + + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ + + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else case e in @%:@( + e) ac_cv_working_alloca_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf '%s\n' "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_alloca_works=$ac_cv_working_alloca_h +if test "$ac_cv_func_alloca_works" != yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf '%s\n' "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + + + + + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf '%s\n' "@%:@define C_ALLOCA 1" >>confdefs.h + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else case e in @%:@( + e) ac_cv_c_stack_direction=-1 ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf '%s\n' "$ac_cv_c_stack_direction" >&6; } +printf '%s\n' "@%:@define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define eaccess access" >>confdefs.h + ;; +esac +fi + + + + HAVE_DECL_GETLOADAVG=1; + + + + + + + + + + + GL_GNULIB_GETLOADAVG=0 + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to detect undeclared functions" >&5 +printf %s "checking for $CC options to detect undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in @%:@( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to ignore future-version functions" >&5 +printf %s "checking for $CC options to ignore future-version functions... " >&6; } +if test ${ac_cv_c_future_darwin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_compile_saved="$ac_compile" + ac_compile="$ac_compile -Werror=unguarded-availability-new" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if ! (defined __APPLE__ && defined __MACH__) + #error "-Werror=unguarded-availability-new not needed here" + #endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_future_darwin_options='-Werror=unguarded-availability-new' +else case e in @%:@( + e) ac_cv_c_future_darwin_options='none needed' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$ac_compile_saved" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_future_darwin_options" >&5 +printf '%s\n' "$ac_cv_c_future_darwin_options" >&6; } + case $ac_cv_c_future_darwin_options in @%:@( + 'none needed') : + ac_c_future_darwin_options='' ;; @%:@( + *) : + ac_c_future_darwin_options=$ac_cv_c_future_darwin_options ;; +esac + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _MSC_VER +MicrosoftCompiler +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "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 case e in @%:@( + e) gl_asmext='s' + gl_c_asm_opt='-S' + ;; +esac +fi +rm -rf conftest* + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 +printf %s "checking host CPU and C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$host_cpu" in + + i[34567]86 ) + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=x86_64-x32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=x86_64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=i386 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __aarch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=arm64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=arm64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) # Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=hppa64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=hppa ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=ia64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=ia64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mips64 +else case e in @%:@( + e) # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mipsn32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=mips ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=powerpc64-elfv2 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cpu=riscv64 +else case e in @%:@( + e) cpu=riscv32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else case e in @%:@( + e) main_abi=ilp32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=d +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=f +else case e in @%:@( + e) float_abi='' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=s390x +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=s390 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=sparc64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=sparc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 +printf '%s\n' "$gl_cv_host_cpu_c_abi" >&6; } + + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + + + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <&5 +printf %s "checking for 64-bit off_t... " >&6; } +if test ${gl_cv_type_off_t_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_off_t_64=yes +else case e in @%:@( + e) gl_cv_type_off_t_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 +printf '%s\n' "$gl_cv_type_off_t_64" >&6; } + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 +printf %s "checking for 64-bit st_size... " >&6; } +if test ${gl_cv_member_st_size_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_member_st_size_64=yes +else case e in @%:@( + e) gl_cv_member_st_size_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 +printf '%s\n' "$gl_cv_member_st_size_64" >&6; } + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac + +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : + +printf '%s\n' "@%:@define HAVE__BOOL 1" >>confdefs.h + + +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C99 requires bool, true, and false to be macros, + C23 and C++11 overrule that, so do not test for that. + Although C99 requires __bool_true_false_are_defined and + _Bool, C23 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + +int +main (void) +{ + + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stdbool_h=yes +else case e in @%:@( + e) ac_cv_header_stdbool_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +printf '%s\n' "$ac_cv_header_stdbool_h" >&6; } + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 +printf %s "checking for C compiler option to allow warnings... " >&6; } +if test ${gl_cv_cc_wallow+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 +printf '%s\n' "$gl_cv_cc_wallow" >&6; } + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + + + + + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 + (eval $gl_command) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + + + + + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + + + + + + + + + + + + + gl_source_base='lib' + gl_source_base_prefix= + + + if test $ac_cv_func_alloca_works = no; then + : + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 +printf %s "checking for alloca as a compiler built-in... " >&6; } +if test ${gl_cv_rpl_alloca+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Need own alloca" >/dev/null 2>&1 +then : + gl_cv_rpl_alloca=yes +else case e in @%:@( + e) gl_cv_rpl_alloca=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 +printf '%s\n' "$gl_cv_rpl_alloca" >&6; } + if test $gl_cv_rpl_alloca = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + + + + + + + case "$GL_GENERATE_ALLOCA_H" in + false) ALLOCA_H='' ;; + true) + if test -z "$ALLOCA_H"; then + ALLOCA_H="${gl_source_base_prefix}alloca.h" + fi + ;; + *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_ALLOCA_H; then + GL_GENERATE_ALLOCA_H_TRUE= + GL_GENERATE_ALLOCA_H_FALSE='#' +else + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE= +fi +: + if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE='#' + fi + + + + + + + + + + + + + + + + + + +# Persuade glibc to declare getloadavg(). + + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + +else case e in @%:@( + e) gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +printf %s "checking for elf_begin in -lelf... " >&6; } +if test ${ac_cv_lib_elf_elf_begin+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char elf_begin (void); +int +main (void) +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_elf_elf_begin=yes +else case e in @%:@( + e) ac_cv_lib_elf_elf_begin=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +printf '%s\n' "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes +then : + LIBS="-lelf $LIBS" +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 +printf %s "checking for kvm_open in -lkvm... " >&6; } +if test ${ac_cv_lib_kvm_kvm_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkvm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kvm_open (void); +int +main (void) +{ +return kvm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kvm_kvm_open=yes +else case e in @%:@( + e) ac_cv_lib_kvm_kvm_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 +printf '%s\n' "$ac_cv_lib_kvm_kvm_open" >&6; } +if test "x$ac_cv_lib_kvm_kvm_open" = xyes +then : + LIBS="-lkvm $LIBS" +fi + + # Check for the 4.4BSD definition of getloadavg. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 +printf %s "checking for getloadavg in -lutil... " >&6; } +if test ${ac_cv_lib_util_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_util_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_util_getloadavg" >&6; } +if test "x$ac_cv_lib_util_getloadavg" = xyes +then : + LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes +fi + + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 +printf %s "checking for getloadavg in -lgetloadavg... " >&6; } +if test ${ac_cv_lib_getloadavg_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lgetloadavg $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_getloadavg_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_getloadavg_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_getloadavg_getloadavg" >&6; } +if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes +then : + LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes +else case e in @%:@( + e) LIBS=$gl_getloadavg_LIBS ;; +esac +fi + + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 +printf %s "checking for kstat_open in -lkstat... " >&6; } +if test ${ac_cv_lib_kstat_kstat_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kstat_open (void); +int +main (void) +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kstat_kstat_open=yes +else case e in @%:@( + e) ac_cv_lib_kstat_kstat_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 +printf '%s\n' "$ac_cv_lib_kstat_kstat_open" >&6; } +if test "x$ac_cv_lib_kstat_kstat_open" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBKSTAT 1" >>confdefs.h + + LIBS="-lkstat $LIBS" + +fi + + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 +printf %s "checking for perfstat_cpu_total in -lperfstat... " >&6; } +if test ${ac_cv_lib_perfstat_perfstat_cpu_total+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lperfstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char perfstat_cpu_total (void); +int +main (void) +{ +return perfstat_cpu_total (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_perfstat_perfstat_cpu_total=yes +else case e in @%:@( + e) ac_cv_lib_perfstat_perfstat_cpu_total=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 +printf '%s\n' "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } +if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBPERFSTAT 1" >>confdefs.h + + LIBS="-lperfstat $LIBS" + +fi + + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define DGUX 1" >>confdefs.h + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 +printf %s "checking for dg_sys_info in -ldgc... " >&6; } +if test ${ac_cv_lib_dgc_dg_sys_info+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldgc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dg_sys_info (void); +int +main (void) +{ +return dg_sys_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dgc_dg_sys_info=yes +else case e in @%:@( + e) ac_cv_lib_dgc_dg_sys_info=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 +printf '%s\n' "$ac_cv_lib_dgc_dg_sys_info" >&6; } +if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBDGC 1" >>confdefs.h + + LIBS="-ldgc $LIBS" + +fi + +fi + + fi + fi ;; +esac +fi + + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getloadavg" = xyes +then : + +else case e in @%:@( + e) HAVE_DECL_GETLOADAVG=0 ;; +esac +fi + + + if test $HAVE_GETLOADAVG = 0; then + GL_COND_OBJ_GETLOADAVG_TRUE= + GL_COND_OBJ_GETLOADAVG_FALSE='#' +else + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE= +fi +: + if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE='#' + fi + + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : + + +# Figure out what our getloadavg.c needs. + + + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + + for ac_func in pstat_getdynamic +do : + ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic" +if test "x$ac_cv_func_pstat_getdynamic" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSTAT_GETDYNAMIC 1" >>confdefs.h + gl_func_getloadavg_done=yes +fi + +done +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define SVR4 1" >>confdefs.h + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + + +printf '%s\n' "@%:@define UMAX4_3 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes; printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MACH_MACH_H 1" >>confdefs.h + +fi + +fi + + for ac_header in nlist.h +do : + ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" +if test "x$ac_cv_header_nlist_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_NLIST_H 1" >>confdefs.h + ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include +" +if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h + + +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +printf '%s\n' "@%:@define N_NAME_POINTER 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi + +done + +fi + + + + + + + + + + GL_GNULIB_GETLOADAVG=1 + + + + + +printf '%s\n' "@%:@define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h + + + + + + # Check the system to see if it provides GNU glob. If not, use our + # local version. + { 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "gnu glob" >/dev/null 2>&1 +then : + make_cv_sys_gnu_glob=yes +else case e in @%:@( + e) make_cv_sys_gnu_glob=no ;; +esac +fi +rm -rf conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 +printf '%s\n' "$make_cv_sys_gnu_glob" >&6; } + # Tell automake about this, so it can build the right .c files. + if test "$make_cv_sys_gnu_glob" = yes; then + USE_SYSTEM_GLOB_TRUE= + USE_SYSTEM_GLOB_FALSE='#' +else + USE_SYSTEM_GLOB_TRUE='#' + USE_SYSTEM_GLOB_FALSE= +fi + + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + + # Check for DOS-style pathnames. + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 +printf %s "checking whether system uses MSDOS-style paths... " >&6; } +if test ${ac_cv_dos_paths+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__ +neither MSDOS nor Windows nor OS2 +#endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_dos_paths=yes +else case e in @%:@( + e) ac_cv_dos_paths=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 +printf '%s\n' "$ac_cv_dos_paths" >&6; } + + if test x"$ac_cv_dos_paths" = xyes +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + +fi + + + + + + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + + + + + + + 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 + + + if $GL_GENERATE_STDBOOL_H; then + GL_GENERATE_STDBOOL_H_TRUE= + GL_GENERATE_STDBOOL_H_FALSE='#' +else + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE= +fi +: + 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 + + + + + + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + + + + gl_source_base='tests' + gl_source_base_prefix= + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gltests_WITNESS + + + + + + + + + + + + + LIBGNU_LIBDEPS="$gl_libdeps" + + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 case e in @%:@( + e) { { 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; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +# Perl is needed for the test suite (only) +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="perl" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl" +fi ;; +esac +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf '%s\n' "$PERL" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + +# Specialized system macros + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + int + main (int argc, char **argv) + { + /* Intimidate the compiler so that it does not + optimize the arrays away. */ + char *p = argv[0]; + ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; + ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; + return use_ascii (argc) == use_ebcdic (*p); + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else case e in @%:@( + e) ac_cv_c_bigendian=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf '%s\n' "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf '%s\n' "@%:@define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf '%s\n' "@%:@define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Enable gettext, in "external" mode. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf '%s\n' "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + @%:@ Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else case e in @%:@( + e) USE_NLS=yes ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf '%s\n' "$MSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf '%s\n' "$GMSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac + + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf '%s\n' "$XGETTEXT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + rm -f messages.po + + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf '%s\n' "$MSGMERGE" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +@%:@ Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else case e in @%:@( + e) with_gnu_ld=no ;; +esac +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 &5 +printf '%s\n' "$LD" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf '%s\n' "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf '%s\n' "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + @%:@ Check whether --enable-rpath was given. +if test ${enable_rpath+y} +then : + enableval=$enable_rpath; : +else case e in @%:@( + e) enable_rpath=yes ;; +esac +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _LP64 +sixtyfour bits +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "sixtyfour bits" >/dev/null 2>&1 +then : + gl_cv_solaris_64bit=yes +else case e in @%:@( + e) gl_cv_solaris_64bit=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf '%s\n' "$gl_cv_solaris_64bit" >&6; } + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else case e in @%:@( + e) gt_cv_func_CFPreferencesCopyAppValue=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf '%s\n' "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf '%s\n' "@%:@define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyCurrent=yes +else case e in @%:@( + e) gt_cv_func_CFLocaleCopyCurrent=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf '%s\n' "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +printf '%s\n' "@%:@define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + LIBINTL= + LTLIBINTL= + POSUB= + + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libc=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf '%s\n' "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + if test "$cross_compiling" = yes +then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + result |= 16; + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf '%s\n' "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +printf '%s\n' "@%:@define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf '%s\n' "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libintl=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + fi + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +printf '%s\n' "@%:@define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf '%s\n' "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf '%s\n' "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf '%s\n' "@%:@define HAVE_GETTEXT 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# Checks for libraries. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (void); +int +main (void) +{ +return strerror (); + ; + return 0; +} +_ACEOF +for ac_lib in '' cposix +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_strerror=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_strerror+y} +then : + break +fi +done +if test ${ac_cv_search_strerror+y} +then : + +else case e in @%:@( + e) ac_cv_search_strerror=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf '%s\n' "$ac_cv_search_strerror" >&6; } +ac_res=$ac_cv_search_strerror +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 +printf %s "checking for library containing getpwnam... " >&6; } +if test ${ac_cv_search_getpwnam+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getpwnam (void); +int +main (void) +{ +return getpwnam (); + ; + return 0; +} +_ACEOF +for ac_lib in '' sun +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_getpwnam=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getpwnam+y} +then : + break +fi +done +if test ${ac_cv_search_getpwnam+y} +then : + +else case e in @%:@( + e) ac_cv_search_getpwnam=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 +printf '%s\n' "$ac_cv_search_getpwnam" >&6; } +ac_res=$ac_cv_search_getpwnam +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf '%s\n' "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else case e in @%:@( + e) eval "$as_ac_Header=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$as_ac_Header + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +@%:@define `printf '%s\n' "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stat_broken=no +else case e in @%:@( + e) ac_cv_header_stat_broken=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf '%s\n' "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +printf '%s\n' "@%:@define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "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 + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timeb_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIMEB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Derived from code rejected by Sun C 1.0 and similar vintage. */ + int x[] = {25, 17}; + typedef int const *iptr; + iptr foo = &x[0]; + ++foo; + if (!*foo) return 0; + } + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else case e in @%:@( + e) ac_cv_c_const=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf '%s\n' "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf '%s\n' "@%:@define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default" +if test "x$ac_cv_type_uid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define uid_t int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default" +if test "x$ac_cv_type_gid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define gid_t int" >>confdefs.h + ;; +esac +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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else case e in @%:@( + e) ac_pid_type='__int64' ;; +esac +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 + + ;; +esac +fi + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define off_t long int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define ssize_t int" >>confdefs.h + ;; +esac +fi + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +printf '%s\n' "@%:@define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_long_long_int=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi + fi ;; +esac +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 case e in @%:@( + e) 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 + ;; +esac +fi + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_UINTMAX_T 1" >>confdefs.h + +else case e in @%:@( + e) test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf '%s\n' "@%:@define uintmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + +# Check for sig_atomic_t + + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include +" +if test "x$ac_cv_type_sig_atomic_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + + +else case e in @%:@( + e) +printf '%s\n' "@%:@define sig_atomic_t int" >>confdefs.h + ;; +esac +fi + + + +# Find out whether our struct stat returns nanosecond resolution timestamps. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 +printf %s "checking for nanoseconds field of struct stat... " >&6; } +if test ${ac_cv_struct_st_mtim_nsec+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # st_mtim.tv_nsec -- the usual case + # st_mtim._tv_nsec -- Solaris 2.6, if + # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 + # && !defined __EXTENSIONS__) + # st_mtim.st__tim.tv_nsec -- UnixWare 2.1.2 + # st_mtime_n -- AIX 5.2 and above + # st_mtimespec.tv_nsec -- Darwin (Mac OSX) + for ac_val in st_mtim.tv_nsec st_mtim._tv_nsec st_mtim.st__tim.tv_nsec st_mtime_n st_mtimespec.tv_nsec; do + CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main (void) +{ +struct stat s; s.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_st_mtim_nsec=$ac_val; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 +printf '%s\n' "$ac_cv_struct_st_mtim_nsec" >&6; } + + if test $ac_cv_struct_st_mtim_nsec != no; then + +printf '%s\n' "@%:@define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h + + fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 +printf %s "checking whether to use high resolution file timestamps... " >&6; } +if test ${make_cv_file_timestamp_hi_res+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) make_cv_file_timestamp_hi_res=no + if test "$ac_cv_struct_st_mtim_nsec" != no +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if HAVE_INTTYPES_H +# include +#endif +int +main (void) +{ +char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_file_timestamp_hi_res=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 +printf '%s\n' "$make_cv_file_timestamp_hi_res" >&6; } +if test "$make_cv_file_timestamp_hi_res" = yes +then : + val=1 +else case e in @%:@( + e) val=0 ;; +esac +fi + +printf '%s\n' "@%:@define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h + + +if test "$make_cv_file_timestamp_hi_res" = yes +then : + # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. + # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else case e in @%:@( + e) ac_cv_search_clock_gettime=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf '%s\n' "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "$ac_cv_search_clock_gettime" != no +then : + +printf '%s\n' "@%:@define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +fi + +fi + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 +printf %s "checking for standard gettimeofday... " >&6; } +if test ${ac_cv_func_gettimeofday+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_gettimeofday=no + if test "$cross_compiling" = yes +then : + ac_cv_func_gettimeofday="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return gettimeofday (&t, 0) != 0 + || t.tv_sec < 0 || t.tv_usec < 0; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_gettimeofday=yes +else case e in @%:@( + e) ac_cv_func_gettimeofday=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 +printf '%s\n' "$ac_cv_func_gettimeofday" >&6; } +if test "$ac_cv_func_gettimeofday" = yes +then : + +printf '%s\n' "@%:@define HAVE_GETTIMEOFDAY 1" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRTOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" +if test "x$ac_cv_func_strndup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf '%s\n' "@%:@define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktemp" "ac_cv_func_mktemp" +if test "x$ac_cv_func_mktemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopen" "ac_cv_func_fdopen" +if test "x$ac_cv_func_fdopen" = xyes +then : + printf '%s\n' "@%:@define HAVE_FDOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf '%s\n' "@%:@define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigsetmask" "ac_cv_func_sigsetmask" +if test "x$ac_cv_func_sigsetmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGSETMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" +if test "x$ac_cv_func_setrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf '%s\n' "@%:@define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf '%s\n' "@%:@define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf '%s\n' "@%:@define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf '%s\n' "@%:@define HAVE_ATEXIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty" +if test "x$ac_cv_func_isatty" = xyes +then : + printf '%s\n' "@%:@define HAVE_ISATTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf '%s\n' "@%:@define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnattr_setsigmask" "ac_cv_func_posix_spawnattr_setsigmask" +if test "x$ac_cv_func_posix_spawnattr_setsigmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h + +fi + + +# We need to check declarations, not just existence, because on Tru64 this +# function is not declared without special flags, which themselves cause +# other problems. We'll just use our own. +ac_fn_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h + + + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + + +if test "x$ac_cv_func_fork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +printf %s "checking for working fork... " >&6; } +if test ${ac_cv_func_fork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_fork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* By R. Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_fork_works=yes +else case e in @%:@( + e) ac_cv_func_fork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +printf '%s\n' "$ac_cv_func_fork_works" >&6; } + +else + ac_cv_func_fork_works=$ac_cv_func_fork +fi +if test "x$ac_cv_func_fork_works" = xcross; then + case $host in + *-*-amigaos* | *-*-msdosdjgpp*) + # Override, as these systems have only a dummy fork() stub + ac_cv_func_fork_works=no + ;; + *) + ac_cv_func_fork_works=yes + ;; + esac + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} +fi +ac_cv_func_vfork_works=$ac_cv_func_vfork +if test "x$ac_cv_func_vfork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +printf %s "checking for working vfork... " >&6; } +if test ${ac_cv_func_vfork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_vfork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#include +#ifdef HAVE_VFORK_H +# include +#endif + +static void +do_nothing (int sig) +{ + (void) sig; +} + +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. The compiler + is told about this with #include , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +sparc_address_test (int arg) +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} + +int +main (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + /* On Solaris 2.4, changes by the child to the signal handler + also munge signal handlers in the parent. To detect this, + start by putting the parent's handler in a known state. */ + signal (SIGTERM, SIG_DFL); + + child = vfork (); + + if (child == 0) { + /* Here is another test for sparc vfork register problems. This + test uses lots of local variables, at least as many local + variables as main has allocated so far including compiler + temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris + 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should + reuse the register of parent for one of the local variables, + since it will think that parent can't possibly be used any more + in this routine. Assigning to the local variable will thus + munge parent in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); + + /* Alter the child's signal handler. */ + if (signal (SIGTERM, do_nothing) != SIG_DFL) + _exit(1); + + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent + from child file descriptors. If the child closes a descriptor + before it execs or exits, this munges the parent's descriptor + as well. Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child munge the parent's signal handler? */ + || signal (SIGTERM, SIG_DFL) != SIG_DFL + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_vfork_works=yes +else case e in @%:@( + e) ac_cv_func_vfork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +printf '%s\n' "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +printf '%s\n' "@%:@define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + + +# Rumor has it that strcasecmp lives in -lresolv on some odd systems. +# It doesn't hurt much to use our own if we can't find it so I don't +# make the effort here. +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcmpi" "ac_cv_func_strcmpi" +if test "x$ac_cv_func_strcmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncmpi" "ac_cv_func_strncmpi" +if test "x$ac_cv_func_strncmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp" +if test "x$ac_cv_func_stricmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRICMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp" +if test "x$ac_cv_func_strnicmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNICMP 1" >>confdefs.h + +fi + + +# strcoll() is used by the GNU glob library +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_strcoll_works=yes +else case e in @%:@( + e) ac_cv_func_strcoll_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf '%s\n' "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +printf '%s\n' "@%:@define HAVE_STRCOLL 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +printf %s "checking whether closedir returns void... " >&6; } +if test ${ac_cv_func_closedir_void+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <$ac_header_dirent> + +int +main (void) +{ + + return closedir(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_closedir_void=no +else case e in @%:@( + e) ac_cv_func_closedir_void=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +printf '%s\n' "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +printf '%s\n' "@%:@define CLOSEDIR_VOID 1" >>confdefs.h + +fi + + +# dir.c and our glob.c use dirent.d_type if available + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + + + +# See if the user wants to add (or not) GNU Guile support + +@%:@ Check whether --with-guile was given. +if test ${with_guile+y} +then : + withval=$with_guile; +fi + + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf '%s\n' "$PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf '%s\n' "$ac_pt_PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$with_guile" != xno +then : + guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 +printf %s "checking for GNU Guile... " >&6; } + for v in $guile_versions; do + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + guile_version=$v; have_guile=yes; break +fi + done + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 +printf '%s\n' "$guile_version" >&6; } + if test "$have_guile" = yes +then : + +pkg_failed=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for guile-$guile_version" >&5 +printf %s "checking for guile-$guile_version... " >&6; } + +if test -n "$GUILE_CFLAGS"; then + pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GUILE_LIBS"; then + pkg_cv_GUILE_LIBS="$GUILE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-$guile_version" 2>&1` + else + GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (guile-$guile_version) were not met: + +$GUILE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "A pkg-config implementation could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get a pkg-config implementation, see . +See 'config.log' for more details" "$LINENO" 5; } +else + GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS + GUILE_LIBS=$pkg_cv_GUILE_LIBS + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +fi + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */ +" +if test "x$ac_cv_header_libguile_h" = xyes +then : + +printf '%s\n' "@%:@define HAVE_GUILE 1" >>confdefs.h + +else case e in @%:@( + e) have_guile=no ;; +esac +fi + + if test "$have_guile" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we can link GNU Guile" >&5 +printf %s "checking whether we can link GNU Guile... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} + +int +main (void) +{ + + scm_with_guile (guile_init, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_guile=yes +else case e in @%:@( + e) have_guile=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $have_guile" >&5 +printf '%s\n' "$have_guile" >&6; } +fi + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + +fi + +fi + + if test "$have_guile" = "yes"; then + HAVE_GUILE_TRUE= + HAVE_GUILE_FALSE='#' +else + HAVE_GUILE_TRUE='#' + HAVE_GUILE_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +# Check out the wait reality. +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAIT3 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 +printf %s "checking for union wait... " >&6; } +if test ${make_cv_union_wait+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +union wait status; int pid; pid = wait (&status); +#ifdef WEXITSTATUS +/* Some POSIXoid systems have both the new-style macros and the old + union wait type, and they do not work together. If union wait + conflicts with WEXITSTATUS et al, we don't want to use it at all. */ + if (WEXITSTATUS (status) != 0) pid = -1; +#ifdef WTERMSIG + /* If we have WEXITSTATUS and WTERMSIG, just use them on ints. */ + -- blow chunks here -- +#endif +#endif +#ifdef HAVE_WAITPID + /* Make sure union wait works with waitpid. */ + pid = waitpid (-1, &status, 0); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + make_cv_union_wait=yes +else case e in @%:@( + e) make_cv_union_wait=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 +printf '%s\n' "$make_cv_union_wait" >&6; } +if test "$make_cv_union_wait" = yes +then : + +printf '%s\n' "@%:@define HAVE_UNION_WAIT 1" >>confdefs.h + + +fi + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +if test "$PATH_SEPARATOR" = ';' +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + +fi + +# See if the user wants to use pmake's "customs" distributed build capability + REMOTE=stub +use_customs=false + +@%:@ Check whether --with-customs was given. +if test ${with_customs+y} +then : + withval=$with_customs; case $withval in @%:@( + n|no) : + : ;; @%:@( + *) : + make_cppflags="$CPPFLAGS" + case $withval in @%:@( + y|ye|yes) : + : ;; @%:@( + *) : + CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs" + make_ldflags="$LDFLAGS -L$with_customs/lib" ;; +esac + +cf_test_netlibs=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 +printf %s "checking for network libraries... " >&6; } +if test ${cf_cv_netlibs+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: working..." >&5 +printf '%s\n' "working..." >&6; } +cf_cv_netlibs="" +cf_test_netlibs=yes + + for ac_func in gethostname +do : + ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ 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 case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 +printf %s "checking for gethostname in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_socket_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_socket_gethostname" >&6; } +if test "x$ac_cv_lib_socket_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_main=yes +else case e in @%:@( + e) ac_cv_lib_inet_main=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf '%s\n' "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : + cf_cv_netlibs="-linet $cf_cv_netlibs" +fi + +# +if test "$ac_cv_func_lsocket" != no ; then + + for ac_func in socket +do : + ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket" +if test "x$ac_cv_func_socket" = xyes +then : + printf '%s\n' "@%:@define HAVE_SOCKET 1" >>confdefs.h + +else case e in @%:@( + e) + +{ 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 case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else case e in @%:@( + e) ac_cv_lib_socket_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf '%s\n' "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 +printf %s "checking for socket in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_socket+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_socket=yes +else case e in @%:@( + e) ac_cv_lib_bsd_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 +printf '%s\n' "$ac_cv_lib_bsd_socket" >&6; } +if test "x$ac_cv_lib_bsd_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +fi +# + + for ac_func in gethostbyname +do : + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ 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 case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (void); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostbyname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + + +cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + +done + ;; +esac +fi + +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 + + ac_fn_c_check_header_compile "$LINENO" "customs.h" "ac_cv_header_customs_h" "$ac_includes_default" +if test "x$ac_cv_header_customs_h" = xyes +then : + use_customs=true + REMOTE=cstms + LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags" +else case e in @%:@( + e) with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes ;; +esac +fi + + ;; +esac + +fi + + +# Tell automake about this, so it can include the right .c files. + if test "$use_customs" = true; then + USE_CUSTOMS_TRUE= + USE_CUSTOMS_FALSE='#' +else + USE_CUSTOMS_TRUE='#' + USE_CUSTOMS_FALSE= +fi + + +# See if the user asked to handle case insensitive file systems. + +@%:@ Check whether --enable-case-insensitive-file-system was given. +if test ${enable_case_insensitive_file_system+y} +then : + enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes +then : + printf '%s\n' "@%:@define HAVE_CASE_INSENSITIVE_FS 1" >>confdefs.h + +fi +fi + + +# See if we can handle the job server feature, and if the user wants it. +@%:@ Check whether --enable-job-server was given. +if test ${enable_job_server+y} +then : + enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" +else case e in @%:@( + e) make_cv_job_server="yes" ;; +esac +fi + + +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : + has_wait_nohang=no +else case e in @%:@( + e) has_wait_nohang=yes ;; +esac +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 +printf %s "checking for SA_RESTART... " >&6; } +if test ${make_cv_sa_restart+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return SA_RESTART; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sa_restart=yes +else case e in @%:@( + e) make_cv_sa_restart=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 +printf '%s\n' "$make_cv_sa_restart" >&6; } + +if test "$make_cv_sa_restart" != no +then : + +printf '%s\n' "@%:@define HAVE_SA_RESTART 1" >>confdefs.h + + +fi + +# Only allow jobserver on systems that support it +case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in @%:@( + */no/*) : + make_cv_job_server=no ;; @%:@( + *) : + ;; +esac + +# Also supported on OS2 and MinGW +case $host_os in @%:@( + os2*|mingw*) : + make_cv_job_server=yes ;; @%:@( + *) : + ;; +esac + +# If we support it and the user didn't disable it, build with jobserver +case /$make_cv_job_server/$user_job_server/ in @%:@( + */no/*) : + : no jobserver ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_JOBSERVER 1" >>confdefs.h + + ;; +esac + +# If dl*() functions are supported we can enable the load operation +ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlopen" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLOPEN $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlsym" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLSYM $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlerror" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h + + +@%:@ Check whether --enable-load was given. +if test ${enable_load+y} +then : + enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" +else case e in @%:@( + e) make_cv_load="yes" ;; +esac +fi + + +case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + ;; +esac + +# We might need -ldl +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dl +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_dlopen=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : + +else case e in @%:@( + e) ac_cv_search_dlopen=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf '%s\n' "$ac_cv_search_dlopen" >&6; } +ac_res=$ac_cv_search_dlopen +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else case e in @%:@( + e) make_cv_load= ;; +esac +fi + + +fi + +case /$make_cv_load/$user_load/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_LOAD 1" >>confdefs.h + + ;; +esac + +# If we want load support, we might need to link with export-dynamic. +# See if we can figure it out. Unfortunately this is very difficult. +# For example passing -rdynamic to the SunPRO linker gives a warning +# but succeeds and creates a shared object, not an executable! +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 +printf %s "checking If the linker accepts -Wl,--export-dynamic... " >&6; } + old_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-Wl,--export-dynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 +printf %s "checking If the linker accepts -rdynamic... " >&6; } + LDFLAGS="$old_LDFLAGS -rdynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-rdynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$old_LDFLAGS" + +fi + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : + +printf '%s\n' "@%:@define MAKE_SYMLINKS 1" >>confdefs.h + + +fi + +# Use posix_spawn if we have support and the user didn't disable it + +@%:@ Check whether --enable-posix-spawn was given. +if test ${enable_posix_spawn+y} +then : + enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" +else case e in @%:@( + e) make_cv_posix_spawn="yes" ;; +esac +fi + + +case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + ;; +esac + +if test "$make_cv_posix_spawn" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 +printf %s "checking for posix_spawn that fails synchronously... " >&6; } +if test ${make_cv_synchronous_posix_spawn+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no + if test "$cross_compiling" = yes +then : + make_cv_synchronous_posix_spawn="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + extern char **environ; + int main () { + char path[] = "./xxx-non-existent"; + char *argv[] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_synchronous_posix_spawn=yes +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 +printf '%s\n' "$make_cv_synchronous_posix_spawn" >&6; } +fi + +case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define USE_POSIX_SPAWN 1" >>confdefs.h + + ;; +esac + +# Find the SCCS commands, so we can include them in our default rules. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 +printf %s "checking for location of SCCS get command... " >&6; } +if test ${make_cv_path_sccs_get+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + if test -f /usr/sccs/get +then : + make_cv_path_sccs_get=/usr/sccs/get +else case e in @%:@( + e) make_cv_path_sccs_get=get ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf '%s\n' "$make_cv_path_sccs_get" >&6; } + +printf '%s\n' "@%:@define SCCS_GET \"$make_cv_path_sccs_get\"" >>confdefs.h + + +ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later. +if (/usr/sccs/admin -n s.conftest || admin -n s.conftest) >/dev/null 2>&1 && + test -f s.conftest +then : + # We successfully created an SCCS file. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 +printf %s "checking if SCCS get command understands -G... " >&6; } +if test ${make_cv_sys_get_minus_G+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 && + test -f conftoast +then : + make_cv_sys_get_minus_G=yes +else case e in @%:@( + e) make_cv_sys_get_minus_G=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 +printf '%s\n' "$make_cv_sys_get_minus_G" >&6; } + if test "$make_cv_sys_get_minus_G" = yes +then : + +printf '%s\n' "@%:@define SCCS_GET_MINUS_G 1" >>confdefs.h + + +fi + +fi +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + + +printf '%s\n' "@%:@define MAKE_HOST \"$host\"" >>confdefs.h + +MAKE_HOST="$host" + + +w32_target_env=no + if false; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + +case $host in @%:@( + *-*-mingw32) : + if true; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + w32_target_env=yes + +printf '%s\n' "@%:@define WINDOWS32 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + ;; @%:@( + *) : + ;; +esac + + +printf '%s\n' "@%:@define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'" >>confdefs.h + + + +printf '%s\n' "@%:@define HAVE_DECL_GETLOADAVG $HAVE_DECL_GETLOADAVG" >>confdefs.h + + +# Remember that we ran configure to generate config.h + + +printf '%s\n' "@%:@define MK_CONFIGURE 1" >>confdefs.h + + +# Include the Maintainer's Makefile section, if it's here. + +MAINT_MAKEFILE=/dev/null +if test -r "$srcdir/maintMakefile" +then : + MAINT_MAKEFILE="$srcdir/maintMakefile" + +fi + + +# Allow building with dmalloc +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 +printf %s "checking if malloc debugging is wanted... " >&6; } + +@%:@ Check whether --with-dmalloc was given. +if test ${with_dmalloc+y} +then : + withval=$with_dmalloc; if test "$withval" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +printf '%s\n' "@%:@define WITH_DMALLOC 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi + + + +# Forcibly disable SET_MAKE. If it's set it breaks things like the test +# scripts, etc. +SET_MAKE= + +# Sanity check and inform the user of what we found + +if test "x$make_badcust" = xyes +then : + +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo + +fi + +case $with_customs in @%:@( + ""|n|no|y|ye|yes) : + : ;; @%:@( + *) : + if test -f "$with_customs/lib/libcustoms.a" +then : + : +else case e in @%:@( + e) echo + echo "WARNING: '$with_customs/lib' does not appear to contain the" + echo " Customs library. You must build and install Customs" + echo " before compiling GNU make." + echo + ;; +esac +fi ;; +esac + +if test "x$has_wait_nohang" = xno +then : + echo + echo "WARNING: Your system has neither waitpid() nor wait3()." + echo " Without one of these, signal handling is unreliable." + echo " You should be aware that running GNU make with -j" + echo " could result in erratic behavior." + echo + +fi + +if test "x$make_cv_job_server" = xno && test "x$user_job_server" = xyes +then : + echo + echo "WARNING: Make job server requires a POSIX-ish system that" + echo " supports the pipe(), sigaction(), and either" + echo " waitpid() or wait3() functions. Your system doesn't" + echo " appear to provide one or more of those." + echo " Disabling job server support." + echo + +fi + +if test "x$make_cv_load" = xno && test "x$user_load" = xyes +then : + echo + echo "WARNING: 'load' support requires a POSIX-ish system that" + echo " supports the dlopen(), dlsym(), and dlerror() functions." + echo " Your system doesn't appear to provide one or more of these." + echo " Disabling 'load' support." + echo + +fi + +if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes +then : + echo + echo "WARNING: posix_spawn() is not supported on this system." + echo + +fi + +# autoconf initializes $prefix to NONE. + if test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr; then + KNOWN_PREFIX_TRUE= + KNOWN_PREFIX_FALSE='#' +else + KNOWN_PREFIX_TRUE='#' + KNOWN_PREFIX_FALSE= +fi + + +# Specify what files are to be created. +ac_config_files="$ac_config_files build.cfg tests/config-flags.pm Makefile lib/Makefile doc/Makefile po/Makefile.in" + +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +ac_config_links="$ac_config_links build.sh:build.sh" + + +# OK, do it! + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +ac_cache_dump | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf '%s\n' "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf '%s\n' "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf '%s\n' "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf '%s\n' "done" >&6; } +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi + + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + gl_LIBOBJDEPS=$gl_libobjdeps + + + + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + gltests_LIBOBJDEPS=$gltests_libobjdeps + + + +if test -z "${HAVE_GUILE_TRUE}" && test -z "${HAVE_GUILE_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GUILE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_CUSTOMS_TRUE}" && test -z "${USE_CUSTOMS_FALSE}"; then + as_fn_error $? "conditional \"USE_CUSTOMS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${KNOWN_PREFIX_TRUE}" && test -z "${KNOWN_PREFIX_FALSE}"; then + as_fn_error $? "conditional \"KNOWN_PREFIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +case $CONFIG_STATUS in @%:@( + -*) : + CONFIG_STATUS=./$CONFIG_STATUS ;; @%:@( + */*) : + ;; @%:@( + *) : + CONFIG_STATUS=./$CONFIG_STATUS ;; +esac + +ac_write_fail=0 +ac_clean_CONFIG_STATUS='"$CONFIG_STATUS"' +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf '%s\n' "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >"$CONFIG_STATUS" <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>"$CONFIG_STATUS" <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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 + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ------------------------------------- ## +## Main body of "$CONFIG_STATUS" script. ## +## ------------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x "$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Make home page: . +General help using GNU software: ." + +_ACEOF +ac_cs_config=`printf '%s\n' "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +GNU Make config.status 4.4 +configured by $0, generated by GNU Autoconf 2.73, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2026 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || { + awk '' >"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf '%s\n' "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf '%s\n' "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf '%s\n' "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf '%s\n' "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + printf '%s\n' "$ac_log" +} >&5 + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;; + "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "build.sh") CONFIG_LINKS="$CONFIG_LINKS build.sh:build.sh" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + +if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then + ac_cs_awk_getline=: + ac_cs_awk_pipe_init= + ac_cs_awk_read_file=' + while ((getline aline < (F[key])) > 0) + print(aline) + close(F[key])' + ac_cs_awk_pipe_fini= +else + ac_cs_awk_getline=false + ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" + ac_cs_awk_read_file=' + print "|#_!!_#|" + print "cat " F[key] " &&" + '$ac_cs_awk_pipe_init + # The final ':' finishes the AND list. + ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' +fi +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + +# Create commands to substitute file output variables. +{ + echo 'cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1' && + printf '%s\n' 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && + printf '%s\n' "$ac_subst_files" | sed 's/.*/F@<:@"&"@:>@="$&"/' && + echo "_ACAWK" && + echo "_ACEOF" +} >conf$$files.sh && +. ./conf$$files.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +rm -f conf$$files.sh + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | sed -n '$='` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | sed -n '$='` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >"$CONFIG_STATUS" || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + \$ac_cs_awk_pipe_init +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + if (nfields == 3 && !substed) { + key = field[2] + if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { + \$ac_cs_awk_read_file + next + } + } + print line +} +\$ac_cs_awk_pipe_fini +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >"$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + suffix = P[macro] D[macro] + while (suffix ~ /[\t ]$/) { + suffix = substr(suffix, 1, length(suffix) - 1) + } + # Preserve the white space surrounding the "#". + print prefix "define", macro suffix + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf '%s\n' "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf '%s\n' "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf '%s\n' "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf '%s\n' "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | +if $ac_cs_awk_getline; then + $AWK -f "$ac_tmp/subs.awk" +else + $AWK -f "$ac_tmp/subs.awk" | $SHELL +fi \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf '%s\n' "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf '%s\n' "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf '%s\n' "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +printf '%s\n' "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf '%s\n' "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in @%:@( + *\'*) : + eval set x "$CONFIG_FILES" ;; @%:@( + *) : + set x $CONFIG_FILES ;; @%:@( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf '%s\n' "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See 'config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_CONFIG_STATUS= + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + case $CONFIG_STATUS in @%:@( + -*) : + ac_no_opts=-- ;; @%:@( + *) : + ac_no_opts= ;; +esac + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $ac_no_opts "$CONFIG_STATUS" $ac_config_status_args || + ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/output.2 b/local/recipes/dev/gnu-make/source/autom4te.cache/output.2 new file mode 100644 index 0000000000..7270c150d4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/output.2 @@ -0,0 +1,17351 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.73 for GNU Make 4.4. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation, +@%:@ Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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 + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="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 + # contradicts POSIX and common usage. Disable this. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in @%:@( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in @%:@( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) 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 ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf '%s\n' "$0: This script requires a shell more modern than all" + printf '%s\n' "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later." + else + printf '%s\n' "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf '%s\n' "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_CONFIG_STATUS= +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Make' +PACKAGE_TARNAME='make' +PACKAGE_VERSION='4.4' +PACKAGE_STRING='GNU Make 4.4' +PACKAGE_BUGREPORT='bug-make@gnu.org' +PACKAGE_URL='https://www.gnu.org/software/make/' + +ac_unique_file="src/vpath.c" +ac_config_libobj_dir=lib +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_func_c_list= +ac_subst_vars='gltests_LIBOBJDEPS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LIBOBJDEPS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIB@&t@OBJS +KNOWN_PREFIX_FALSE +KNOWN_PREFIX_TRUE +WINDOWSENV_FALSE +WINDOWSENV_TRUE +MAKE_HOST +AM_LDFLAGS +USE_CUSTOMS_FALSE +USE_CUSTOMS_TRUE +REMOTE +HAVE_GUILE_FALSE +HAVE_GUILE_TRUE +GUILE_LIBS +GUILE_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +POSUB +LTLIBINTL +LIBINTL +INTLLIBS +LTLIBICONV +LIBICONV +INTL_MACOSX_LIBS +XGETTEXT_EXTRA_OPTIONS +MSGMERGE +XGETTEXT_015 +XGETTEXT +GMSGFMT_015 +MSGFMT_015 +GMSGFMT +MSGFMT +GETTEXT_MACRO_VERSION +USE_NLS +SED +PERL +LIBGNU_LTLIBDEPS +LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS +gltests_WITNESS +GL_GENERATE_STDBOOL_H_FALSE +GL_GENERATE_STDBOOL_H_TRUE +STDBOOL_H +HAVE__BOOL +USE_SYSTEM_GLOB +USE_SYSTEM_GLOB_FALSE +USE_SYSTEM_GLOB_TRUE +HOST_CPU_C_ABI +HOST_CPU +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE +GETLOADAVG_LIBS +GL_GNULIB_GETLOADAVG +HAVE_DECL_GETLOADAVG +GL_GENERATE_ALLOCA_H_FALSE +GL_GENERATE_ALLOCA_H_TRUE +ALLOCA_H +HAVE_ALLOCA_H +ALLOCA +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +RANLIB +ARFLAGS +AR +CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +ECHO_T +ECHO_N +ECHO_C +target_alias +host_alias +build_alias +LIBS +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='MAINT_MAKEFILE' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_largefile +enable_year2038 +enable_cross_guesses +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_guile +with_customs +enable_case_insensitive_file_system +enable_job_server +enable_load +enable_posix_spawn +with_dmalloc +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GUILE_CFLAGS +GUILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf '%s\n' "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf '%s\n' "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`printf '%s\n' $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +'configure' configures GNU Make 4.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print 'checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for '--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/make@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Make 4.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --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 + --enable-case-insensitive-file-system + assume file systems are case insensitive + --disable-job-server disallow recursive make communication during -jN + --disable-load disable support for the 'load' operation + --disable-posix-spawn disable support for posix_spawn() + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + --with-guile Support GNU Guile for embedded scripting + --with-customs=DIR enable remote jobs via Customs--see README.customs + --with-dmalloc use dmalloc, as in http://www.dmalloc.com + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + GUILE_CFLAGS + C compiler flags for GUILE, overriding pkg-config + GUILE_LIBS linker flags for GUILE, overriding pkg-config + +Use these variables to override the choices made by 'configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +GNU Make home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf '%s\n' "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Make configure 4.4 +generated by GNU Autoconf 2.73 + +Copyright (C) 2026 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +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.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES +@%:@ ------------------------------------------- +@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache +@%:@ variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) eval "$3=yes" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_type + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to run conftest.@S|@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 case e in @%:@( + e) 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 ;; +esac +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_func LINENO FUNC VAR +@%:@ ---------------------------------- +@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (void); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (void); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_func + +@%:@ ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +@%:@ ------------------------------------------------------------------ +@%:@ Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +@%:@ accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + ac_compile="$ac_save_ac_compile" + +} @%:@ ac_fn_check_decl + +@%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +@%:@ ---------------------------------------------------- +@%:@ Tries to find if the field MEMBER exists in type AGGR, after including +@%:@ INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) eval "$4=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$4 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf '%s\n' "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf '%s\n' "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# Dump the cache to stdout. It can be in a pipe (this is a requirement). +ac_cache_dump () +{ + # The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf '%s\n' "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) +} + +# Print debugging info to stdout. +ac_dump_debugging_info () +{ + echo + + printf '%s\n' "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + ac_cache_dump + echo + + printf '%s\n' "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf '%s\n' "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + fi + + if test -s confdefs.h; then + printf '%s\n' "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf '%s\n' "$as_me: caught signal $ac_signal" + printf '%s\n' "$as_me: exit $exit_status" +} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. +ac_exit_trap () +{ + exit_status= + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + ac_dump_debugging_info >&5 + eval "rm -f $ac_clean_CONFIG_STATUS core *.core core.conftest.*" && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +} + +trap 'ac_exit_trap $?' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf '%s\n' "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf '%s\n' "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf '%s\n' "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See 'config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf '%s\n' "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf '%s\n' "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C23 (global declarations) +ac_c_conftest_c23_globals=' +/* Does the compiler advertise conformance to C17 or earlier? + Although GCC 14 does not do that, even with -std=gnu23, + it is close enough, and defines __STDC_VERSION == 202000L. */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ <= 201710L +# error "Compiler advertises conformance to C17 or earlier" +#endif + +// Check alignas. +char alignas (double) c23_aligned_as_double; +char alignas (0) c23_no_special_alignment; +extern char c23_aligned_as_int; +char alignas (0) alignas (int) c23_aligned_as_int; + +// Check alignof. +enum +{ + c23_int_alignment = alignof (int), + c23_int_array_alignment = alignof (int[100]), + c23_char_alignment = alignof (char) +}; +static_assert (0 < -alignof (int), "alignof is signed"); + +int function_with_unnamed_parameter (int) { return 0; } + +void c23_noreturn (); + +/* Test parsing of string and char UTF-8 literals (including hex escapes). + The parens pacify GCC 15. */ +bool use_u8 = (!sizeof u8"\xFF") == (!u8'\''x'\''); + +bool check_that_bool_works = true | false | !nullptr; +#if !true +# error "true does not work in #if" +#endif +#if false +#elifdef __STDC_VERSION__ +#else +# error "#elifdef does not work" +#endif + +#ifndef __has_c_attribute +# error "__has_c_attribute not defined" +#endif + +#ifndef __has_include +# error "__has_include not defined" +#endif + +#define LPAREN() ( +#define FORTY_TWO(x) 42 +#define VA_OPT_TEST(r, x, ...) __VA_OPT__ (FORTY_TWO r x)) +static_assert (VA_OPT_TEST (LPAREN (), 0, <:-) == 42); + +static_assert (0b101010 == 42); +static_assert (0B101010 == 42); +static_assert (0xDEAD'\''BEEF == 3'\''735'\''928'\''559); +static_assert (0.500'\''000'\''000 == 0.5); + +enum unsignedish : unsigned int { uione = 1 }; +static_assert (0 < -uione); + +#include +constexpr nullptr_t null_pointer = nullptr; + +static typeof (1 + 1L) two () { return 2; } +static long int three () { return 3; } +' + +# Test code for whether the C compiler supports C23 (body of main). +ac_c_conftest_c23_main=' + { + label_before_declaration: + int arr[10] = {}; + if (arr[0]) + goto label_before_declaration; + if (!arr[0]) + goto label_at_end_of_block; + label_at_end_of_block: + } + ok |= !null_pointer; + ok |= two != three; +' + +# Test code for whether the C compiler supports C23 (complete). +ac_c_conftest_c23_program="${ac_c_conftest_c23_globals} + +int +main (int, char **) +{ + int ok = 0; + ${ac_c_conftest_c23_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Do not test the value of __STDC__, because some compilers define it to 0 + or do not define it, while otherwise adequately conforming. */ + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (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; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + 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 + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// 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, and "aND" is used instead of "and" to work around +// GCC bug 40564 which is irrelevant here. +#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) +{ + // 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; + const char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + static struct incomplete_array *volatile incomplete_array_pointer; + struct incomplete_array *ia = incomplete_array_pointer; + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + // Do not test for VLAs, as some otherwise-conforming compilers lack them. + // C code should instead use __STDC_NO_VLA__; see Autoconf manual. + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || ni.number != 58); +' + +# 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 case e in @%:@( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +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_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w= + for ac_val in x $ac_old_val; do + ac_old_val_w="$ac_old_val_w $ac_val" + done + ac_new_val_w= + for ac_val in x $ac_new_val; do + ac_new_val_w="$ac_new_val_w $ac_val" + done + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf '%s\n' "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf '%s\n' "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf '%s\n' "$as_me: former value: '$ac_old_val'" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf '%s\n' "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf '%s\n' "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf '%s\n' "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Autoconf setup + + +ac_config_headers="$ac_config_headers src/config.h" + + + + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +am__api_version='1.18' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in @%:@(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF/1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF/1 since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + ;; +esac +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf '%s\n' "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in @%:@( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf '%s\n' "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + printf '%s\n' ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf '%s\n' "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf '%s\n' "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in @%:@( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf '%s\n' "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf '%s\n' "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf '%s\n' "$STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf '%s\n' "$ac_ct_STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf '%s\n' "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk 'busybox awk' +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf '%s\n' "$AWK" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf '%s\n' "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @printf '%s\n' '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + SET_MAKE= +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +@%:@ Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if printf '%s\n' 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf '%s\n' "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in @%:@( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in @%:@( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf '%s\n' "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in @%:@( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='make' + VERSION='4.4' + + +printf '%s\n' "@%:@define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf '%s\n' "@%:@define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf '%s\n' "$am_cv_prog_tar_ustar" >&6; } + + + + + +# 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 + + + + + + + + +# Checks for programs. + + + + + + + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in @%:@( + '0:this is the am__doit target') : + case $s in @%:@( + BSD) : + am__include='.include' am__quote='"' ;; @%:@( + *) : + am__include='include' am__quote='' ;; +esac ;; @%:@( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf '%s\n' "${_am_result}" >&6; } + +@%:@ Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf '%s\n' "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in @%:@( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf '%s\n' "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in @%:@( + e) { { 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; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf '%s\n' "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf '%s\n' "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf '%s\n' "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +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 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 case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +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 case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +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 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf '%s\n' "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf '%s\n' "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else case e in @%:@( + e) ac_cv_safe_to_define___extensions__=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf '%s\n' "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf '%s\n' "$ac_cv_should_define__xopen_source" >&6; } + + printf '%s\n' "@%:@define _ALL_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _COSMO_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _GNU_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf '%s\n' "@%:@define _NETBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _OPENBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf '%s\n' "@%:@define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf '%s\n' "@%:@define _MINIX 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_1_SOURCE 2" >>confdefs.h + +else case e in @%:@( + e) MINIX= ;; +esac +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf '%s\n' "@%:@define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf '%s\n' "@%:@define _XOPEN_SOURCE 500" >>confdefs.h + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +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 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 case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +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 case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +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 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# 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 case e in @%:@( + e) 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 + ;; +esac +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=`printf '%s\n' "$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 case e in @%:@( + e) 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 + ;; +esac +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=`printf '%s\n' "$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 case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 case e in @%:@( + e) { { 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; } ;; +esac +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 egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_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_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "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_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + + if test "$ac_cv_path_EGREP_TRADITIONAL" +then : + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_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_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "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_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; 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_TRADITIONAL=$EGREP_TRADITIONAL +fi + ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf '%s\n' "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL + + + + + { 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 case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Amsterdam" >/dev/null 2>&1 +then : + gl_cv_c_amsterdam_compiler=yes +else case e in @%:@( + e) gl_cv_c_amsterdam_compiler=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +printf '%s\n' "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + : + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf '%s\n' "$ac_ct_AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + +@%:@ Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_y2038=yes +else case e in @%:@( + e) gl_cv_type_time_t_y2038=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_bits_macro=yes +else case e in @%:@( + e) gl_cv_type_time_t_bits_macro=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) # 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 + ;; +esac +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 alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + + + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: + + + + + + + + + + @%:@ Check whether --enable-cross-guesses was given. +if test ${enable_cross_guesses+y} +then : + enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 +printf '%s\n' "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} + enableval=conservative + fi + gl_cross_guesses="$enableval" +else case e in @%:@( + e) gl_cross_guesses=conservative ;; +esac +fi + + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ + + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else case e in @%:@( + e) ac_cv_working_alloca_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf '%s\n' "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_alloca_works=$ac_cv_working_alloca_h +if test "$ac_cv_func_alloca_works" != yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf '%s\n' "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + + + + + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf '%s\n' "@%:@define C_ALLOCA 1" >>confdefs.h + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else case e in @%:@( + e) ac_cv_c_stack_direction=-1 ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf '%s\n' "$ac_cv_c_stack_direction" >&6; } +printf '%s\n' "@%:@define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define eaccess access" >>confdefs.h + ;; +esac +fi + + + + HAVE_DECL_GETLOADAVG=1; + + + + + + + + + + + GL_GNULIB_GETLOADAVG=0 + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to detect undeclared functions" >&5 +printf %s "checking for $CC options to detect undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in @%:@( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to ignore future-version functions" >&5 +printf %s "checking for $CC options to ignore future-version functions... " >&6; } +if test ${ac_cv_c_future_darwin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_compile_saved="$ac_compile" + ac_compile="$ac_compile -Werror=unguarded-availability-new" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if ! (defined __APPLE__ && defined __MACH__) + #error "-Werror=unguarded-availability-new not needed here" + #endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_future_darwin_options='-Werror=unguarded-availability-new' +else case e in @%:@( + e) ac_cv_c_future_darwin_options='none needed' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$ac_compile_saved" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_future_darwin_options" >&5 +printf '%s\n' "$ac_cv_c_future_darwin_options" >&6; } + case $ac_cv_c_future_darwin_options in @%:@( + 'none needed') : + ac_c_future_darwin_options='' ;; @%:@( + *) : + ac_c_future_darwin_options=$ac_cv_c_future_darwin_options ;; +esac + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _MSC_VER +MicrosoftCompiler +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "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 case e in @%:@( + e) gl_asmext='s' + gl_c_asm_opt='-S' + ;; +esac +fi +rm -rf conftest* + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 +printf %s "checking host CPU and C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$host_cpu" in + + i[34567]86 ) + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=x86_64-x32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=x86_64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=i386 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __aarch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=arm64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=arm64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) # Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=hppa64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=hppa ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=ia64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=ia64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mips64 +else case e in @%:@( + e) # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mipsn32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=mips ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=powerpc64-elfv2 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cpu=riscv64 +else case e in @%:@( + e) cpu=riscv32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else case e in @%:@( + e) main_abi=ilp32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=d +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=f +else case e in @%:@( + e) float_abi='' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=s390x +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=s390 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=sparc64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=sparc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 +printf '%s\n' "$gl_cv_host_cpu_c_abi" >&6; } + + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + + + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <&5 +printf %s "checking for 64-bit off_t... " >&6; } +if test ${gl_cv_type_off_t_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_off_t_64=yes +else case e in @%:@( + e) gl_cv_type_off_t_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 +printf '%s\n' "$gl_cv_type_off_t_64" >&6; } + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 +printf %s "checking for 64-bit st_size... " >&6; } +if test ${gl_cv_member_st_size_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_member_st_size_64=yes +else case e in @%:@( + e) gl_cv_member_st_size_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 +printf '%s\n' "$gl_cv_member_st_size_64" >&6; } + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac + +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : + +printf '%s\n' "@%:@define HAVE__BOOL 1" >>confdefs.h + + +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C99 requires bool, true, and false to be macros, + C23 and C++11 overrule that, so do not test for that. + Although C99 requires __bool_true_false_are_defined and + _Bool, C23 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + +int +main (void) +{ + + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stdbool_h=yes +else case e in @%:@( + e) ac_cv_header_stdbool_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +printf '%s\n' "$ac_cv_header_stdbool_h" >&6; } + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 +printf %s "checking for C compiler option to allow warnings... " >&6; } +if test ${gl_cv_cc_wallow+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 +printf '%s\n' "$gl_cv_cc_wallow" >&6; } + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + + + + + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 + (eval $gl_command) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + + + + + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + + + + + + + + + + + + + gl_source_base='lib' + gl_source_base_prefix= + + + if test $ac_cv_func_alloca_works = no; then + : + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 +printf %s "checking for alloca as a compiler built-in... " >&6; } +if test ${gl_cv_rpl_alloca+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Need own alloca" >/dev/null 2>&1 +then : + gl_cv_rpl_alloca=yes +else case e in @%:@( + e) gl_cv_rpl_alloca=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 +printf '%s\n' "$gl_cv_rpl_alloca" >&6; } + if test $gl_cv_rpl_alloca = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + + + + + + + case "$GL_GENERATE_ALLOCA_H" in + false) ALLOCA_H='' ;; + true) + if test -z "$ALLOCA_H"; then + ALLOCA_H="${gl_source_base_prefix}alloca.h" + fi + ;; + *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_ALLOCA_H; then + GL_GENERATE_ALLOCA_H_TRUE= + GL_GENERATE_ALLOCA_H_FALSE='#' +else + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE= +fi +: + if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE='#' + fi + + + + + + + + + + + + + + + + + + +# Persuade glibc to declare getloadavg(). + + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + +else case e in @%:@( + e) gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +printf %s "checking for elf_begin in -lelf... " >&6; } +if test ${ac_cv_lib_elf_elf_begin+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char elf_begin (void); +int +main (void) +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_elf_elf_begin=yes +else case e in @%:@( + e) ac_cv_lib_elf_elf_begin=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +printf '%s\n' "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes +then : + LIBS="-lelf $LIBS" +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 +printf %s "checking for kvm_open in -lkvm... " >&6; } +if test ${ac_cv_lib_kvm_kvm_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkvm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kvm_open (void); +int +main (void) +{ +return kvm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kvm_kvm_open=yes +else case e in @%:@( + e) ac_cv_lib_kvm_kvm_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 +printf '%s\n' "$ac_cv_lib_kvm_kvm_open" >&6; } +if test "x$ac_cv_lib_kvm_kvm_open" = xyes +then : + LIBS="-lkvm $LIBS" +fi + + # Check for the 4.4BSD definition of getloadavg. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 +printf %s "checking for getloadavg in -lutil... " >&6; } +if test ${ac_cv_lib_util_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_util_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_util_getloadavg" >&6; } +if test "x$ac_cv_lib_util_getloadavg" = xyes +then : + LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes +fi + + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 +printf %s "checking for getloadavg in -lgetloadavg... " >&6; } +if test ${ac_cv_lib_getloadavg_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lgetloadavg $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_getloadavg_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_getloadavg_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_getloadavg_getloadavg" >&6; } +if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes +then : + LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes +else case e in @%:@( + e) LIBS=$gl_getloadavg_LIBS ;; +esac +fi + + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 +printf %s "checking for kstat_open in -lkstat... " >&6; } +if test ${ac_cv_lib_kstat_kstat_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kstat_open (void); +int +main (void) +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kstat_kstat_open=yes +else case e in @%:@( + e) ac_cv_lib_kstat_kstat_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 +printf '%s\n' "$ac_cv_lib_kstat_kstat_open" >&6; } +if test "x$ac_cv_lib_kstat_kstat_open" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBKSTAT 1" >>confdefs.h + + LIBS="-lkstat $LIBS" + +fi + + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 +printf %s "checking for perfstat_cpu_total in -lperfstat... " >&6; } +if test ${ac_cv_lib_perfstat_perfstat_cpu_total+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lperfstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char perfstat_cpu_total (void); +int +main (void) +{ +return perfstat_cpu_total (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_perfstat_perfstat_cpu_total=yes +else case e in @%:@( + e) ac_cv_lib_perfstat_perfstat_cpu_total=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 +printf '%s\n' "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } +if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBPERFSTAT 1" >>confdefs.h + + LIBS="-lperfstat $LIBS" + +fi + + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define DGUX 1" >>confdefs.h + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 +printf %s "checking for dg_sys_info in -ldgc... " >&6; } +if test ${ac_cv_lib_dgc_dg_sys_info+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldgc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dg_sys_info (void); +int +main (void) +{ +return dg_sys_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dgc_dg_sys_info=yes +else case e in @%:@( + e) ac_cv_lib_dgc_dg_sys_info=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 +printf '%s\n' "$ac_cv_lib_dgc_dg_sys_info" >&6; } +if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBDGC 1" >>confdefs.h + + LIBS="-ldgc $LIBS" + +fi + +fi + + fi + fi ;; +esac +fi + + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getloadavg" = xyes +then : + +else case e in @%:@( + e) HAVE_DECL_GETLOADAVG=0 ;; +esac +fi + + + if test $HAVE_GETLOADAVG = 0; then + GL_COND_OBJ_GETLOADAVG_TRUE= + GL_COND_OBJ_GETLOADAVG_FALSE='#' +else + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE= +fi +: + if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE='#' + fi + + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : + + +# Figure out what our getloadavg.c needs. + + + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + + for ac_func in pstat_getdynamic +do : + ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic" +if test "x$ac_cv_func_pstat_getdynamic" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSTAT_GETDYNAMIC 1" >>confdefs.h + gl_func_getloadavg_done=yes +fi + +done +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define SVR4 1" >>confdefs.h + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + + +printf '%s\n' "@%:@define UMAX4_3 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes; printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MACH_MACH_H 1" >>confdefs.h + +fi + +fi + + for ac_header in nlist.h +do : + ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" +if test "x$ac_cv_header_nlist_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_NLIST_H 1" >>confdefs.h + ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include +" +if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h + + +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +printf '%s\n' "@%:@define N_NAME_POINTER 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi + +done + +fi + + + + + + + + + + GL_GNULIB_GETLOADAVG=1 + + + + + +printf '%s\n' "@%:@define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h + + + + + + # Check the system to see if it provides GNU glob. If not, use our + # local version. + { 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "gnu glob" >/dev/null 2>&1 +then : + make_cv_sys_gnu_glob=yes +else case e in @%:@( + e) make_cv_sys_gnu_glob=no ;; +esac +fi +rm -rf conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 +printf '%s\n' "$make_cv_sys_gnu_glob" >&6; } + # Tell automake about this, so it can build the right .c files. + if test "$make_cv_sys_gnu_glob" = yes; then + USE_SYSTEM_GLOB_TRUE= + USE_SYSTEM_GLOB_FALSE='#' +else + USE_SYSTEM_GLOB_TRUE='#' + USE_SYSTEM_GLOB_FALSE= +fi + + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + + # Check for DOS-style pathnames. + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 +printf %s "checking whether system uses MSDOS-style paths... " >&6; } +if test ${ac_cv_dos_paths+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__ +neither MSDOS nor Windows nor OS2 +#endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_dos_paths=yes +else case e in @%:@( + e) ac_cv_dos_paths=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 +printf '%s\n' "$ac_cv_dos_paths" >&6; } + + if test x"$ac_cv_dos_paths" = xyes +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + +fi + + + + + + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + + + + + + + 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 + + + if $GL_GENERATE_STDBOOL_H; then + GL_GENERATE_STDBOOL_H_TRUE= + GL_GENERATE_STDBOOL_H_FALSE='#' +else + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE= +fi +: + 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 + + + + + + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + + + + gl_source_base='tests' + gl_source_base_prefix= + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gltests_WITNESS + + + + + + + + + + + + + LIBGNU_LIBDEPS="$gl_libdeps" + + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 case e in @%:@( + e) { { 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; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +# Perl is needed for the test suite (only) +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="perl" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl" +fi ;; +esac +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf '%s\n' "$PERL" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + +# Specialized system macros + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + int + main (int argc, char **argv) + { + /* Intimidate the compiler so that it does not + optimize the arrays away. */ + char *p = argv[0]; + ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; + ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; + return use_ascii (argc) == use_ebcdic (*p); + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else case e in @%:@( + e) ac_cv_c_bigendian=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf '%s\n' "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf '%s\n' "@%:@define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf '%s\n' "@%:@define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Enable gettext, in "external" mode. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf '%s\n' "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + @%:@ Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else case e in @%:@( + e) USE_NLS=yes ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf '%s\n' "$MSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf '%s\n' "$GMSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac + + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf '%s\n' "$XGETTEXT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + rm -f messages.po + + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf '%s\n' "$MSGMERGE" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +@%:@ Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else case e in @%:@( + e) with_gnu_ld=no ;; +esac +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 &5 +printf '%s\n' "$LD" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf '%s\n' "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf '%s\n' "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + @%:@ Check whether --enable-rpath was given. +if test ${enable_rpath+y} +then : + enableval=$enable_rpath; : +else case e in @%:@( + e) enable_rpath=yes ;; +esac +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _LP64 +sixtyfour bits +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "sixtyfour bits" >/dev/null 2>&1 +then : + gl_cv_solaris_64bit=yes +else case e in @%:@( + e) gl_cv_solaris_64bit=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf '%s\n' "$gl_cv_solaris_64bit" >&6; } + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else case e in @%:@( + e) gt_cv_func_CFPreferencesCopyAppValue=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf '%s\n' "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf '%s\n' "@%:@define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyCurrent=yes +else case e in @%:@( + e) gt_cv_func_CFLocaleCopyCurrent=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf '%s\n' "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +printf '%s\n' "@%:@define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + LIBINTL= + LTLIBINTL= + POSUB= + + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libc=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf '%s\n' "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + if test "$cross_compiling" = yes +then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + result |= 16; + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf '%s\n' "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +printf '%s\n' "@%:@define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf '%s\n' "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libintl=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + fi + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +printf '%s\n' "@%:@define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf '%s\n' "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf '%s\n' "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf '%s\n' "@%:@define HAVE_GETTEXT 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# Checks for libraries. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (void); +int +main (void) +{ +return strerror (); + ; + return 0; +} +_ACEOF +for ac_lib in '' cposix +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_strerror=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_strerror+y} +then : + break +fi +done +if test ${ac_cv_search_strerror+y} +then : + +else case e in @%:@( + e) ac_cv_search_strerror=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf '%s\n' "$ac_cv_search_strerror" >&6; } +ac_res=$ac_cv_search_strerror +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 +printf %s "checking for library containing getpwnam... " >&6; } +if test ${ac_cv_search_getpwnam+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getpwnam (void); +int +main (void) +{ +return getpwnam (); + ; + return 0; +} +_ACEOF +for ac_lib in '' sun +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_getpwnam=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getpwnam+y} +then : + break +fi +done +if test ${ac_cv_search_getpwnam+y} +then : + +else case e in @%:@( + e) ac_cv_search_getpwnam=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 +printf '%s\n' "$ac_cv_search_getpwnam" >&6; } +ac_res=$ac_cv_search_getpwnam +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf '%s\n' "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else case e in @%:@( + e) eval "$as_ac_Header=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$as_ac_Header + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +@%:@define `printf '%s\n' "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stat_broken=no +else case e in @%:@( + e) ac_cv_header_stat_broken=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf '%s\n' "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +printf '%s\n' "@%:@define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "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 + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timeb_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIMEB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Derived from code rejected by Sun C 1.0 and similar vintage. */ + int x[] = {25, 17}; + typedef int const *iptr; + iptr foo = &x[0]; + ++foo; + if (!*foo) return 0; + } + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else case e in @%:@( + e) ac_cv_c_const=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf '%s\n' "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf '%s\n' "@%:@define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default" +if test "x$ac_cv_type_uid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define uid_t int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default" +if test "x$ac_cv_type_gid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define gid_t int" >>confdefs.h + ;; +esac +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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else case e in @%:@( + e) ac_pid_type='__int64' ;; +esac +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 + + ;; +esac +fi + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define off_t long int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define ssize_t int" >>confdefs.h + ;; +esac +fi + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +printf '%s\n' "@%:@define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_long_long_int=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi + fi ;; +esac +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 case e in @%:@( + e) 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 + ;; +esac +fi + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_UINTMAX_T 1" >>confdefs.h + +else case e in @%:@( + e) test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf '%s\n' "@%:@define uintmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + +# Check for sig_atomic_t + + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include +" +if test "x$ac_cv_type_sig_atomic_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + + +else case e in @%:@( + e) +printf '%s\n' "@%:@define sig_atomic_t int" >>confdefs.h + ;; +esac +fi + + + +# Find out whether our struct stat returns nanosecond resolution timestamps. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 +printf %s "checking for nanoseconds field of struct stat... " >&6; } +if test ${ac_cv_struct_st_mtim_nsec+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # st_mtim.tv_nsec -- the usual case + # st_mtim._tv_nsec -- Solaris 2.6, if + # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 + # && !defined __EXTENSIONS__) + # st_mtim.st__tim.tv_nsec -- UnixWare 2.1.2 + # st_mtime_n -- AIX 5.2 and above + # st_mtimespec.tv_nsec -- Darwin (Mac OSX) + for ac_val in st_mtim.tv_nsec st_mtim._tv_nsec st_mtim.st__tim.tv_nsec st_mtime_n st_mtimespec.tv_nsec; do + CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main (void) +{ +struct stat s; s.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_st_mtim_nsec=$ac_val; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 +printf '%s\n' "$ac_cv_struct_st_mtim_nsec" >&6; } + + if test $ac_cv_struct_st_mtim_nsec != no; then + +printf '%s\n' "@%:@define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h + + fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 +printf %s "checking whether to use high resolution file timestamps... " >&6; } +if test ${make_cv_file_timestamp_hi_res+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) make_cv_file_timestamp_hi_res=no + if test "$ac_cv_struct_st_mtim_nsec" != no +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if HAVE_INTTYPES_H +# include +#endif +int +main (void) +{ +char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_file_timestamp_hi_res=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 +printf '%s\n' "$make_cv_file_timestamp_hi_res" >&6; } +if test "$make_cv_file_timestamp_hi_res" = yes +then : + val=1 +else case e in @%:@( + e) val=0 ;; +esac +fi + +printf '%s\n' "@%:@define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h + + +if test "$make_cv_file_timestamp_hi_res" = yes +then : + # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. + # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else case e in @%:@( + e) ac_cv_search_clock_gettime=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf '%s\n' "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "$ac_cv_search_clock_gettime" != no +then : + +printf '%s\n' "@%:@define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +fi + +fi + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 +printf %s "checking for standard gettimeofday... " >&6; } +if test ${ac_cv_func_gettimeofday+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_gettimeofday=no + if test "$cross_compiling" = yes +then : + ac_cv_func_gettimeofday="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return gettimeofday (&t, 0) != 0 + || t.tv_sec < 0 || t.tv_usec < 0; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_gettimeofday=yes +else case e in @%:@( + e) ac_cv_func_gettimeofday=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 +printf '%s\n' "$ac_cv_func_gettimeofday" >&6; } +if test "$ac_cv_func_gettimeofday" = yes +then : + +printf '%s\n' "@%:@define HAVE_GETTIMEOFDAY 1" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRTOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" +if test "x$ac_cv_func_strndup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf '%s\n' "@%:@define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktemp" "ac_cv_func_mktemp" +if test "x$ac_cv_func_mktemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopen" "ac_cv_func_fdopen" +if test "x$ac_cv_func_fdopen" = xyes +then : + printf '%s\n' "@%:@define HAVE_FDOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf '%s\n' "@%:@define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigsetmask" "ac_cv_func_sigsetmask" +if test "x$ac_cv_func_sigsetmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGSETMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" +if test "x$ac_cv_func_setrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf '%s\n' "@%:@define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf '%s\n' "@%:@define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf '%s\n' "@%:@define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf '%s\n' "@%:@define HAVE_ATEXIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty" +if test "x$ac_cv_func_isatty" = xyes +then : + printf '%s\n' "@%:@define HAVE_ISATTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf '%s\n' "@%:@define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnattr_setsigmask" "ac_cv_func_posix_spawnattr_setsigmask" +if test "x$ac_cv_func_posix_spawnattr_setsigmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h + +fi + + +# We need to check declarations, not just existence, because on Tru64 this +# function is not declared without special flags, which themselves cause +# other problems. We'll just use our own. +ac_fn_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h + + + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + + +if test "x$ac_cv_func_fork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +printf %s "checking for working fork... " >&6; } +if test ${ac_cv_func_fork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_fork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* By R. Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_fork_works=yes +else case e in @%:@( + e) ac_cv_func_fork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +printf '%s\n' "$ac_cv_func_fork_works" >&6; } + +else + ac_cv_func_fork_works=$ac_cv_func_fork +fi +if test "x$ac_cv_func_fork_works" = xcross; then + case $host in + *-*-amigaos* | *-*-msdosdjgpp*) + # Override, as these systems have only a dummy fork() stub + ac_cv_func_fork_works=no + ;; + *) + ac_cv_func_fork_works=yes + ;; + esac + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} +fi +ac_cv_func_vfork_works=$ac_cv_func_vfork +if test "x$ac_cv_func_vfork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +printf %s "checking for working vfork... " >&6; } +if test ${ac_cv_func_vfork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_vfork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#include +#ifdef HAVE_VFORK_H +# include +#endif + +static void +do_nothing (int sig) +{ + (void) sig; +} + +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. The compiler + is told about this with #include , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +sparc_address_test (int arg) +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} + +int +main (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + /* On Solaris 2.4, changes by the child to the signal handler + also munge signal handlers in the parent. To detect this, + start by putting the parent's handler in a known state. */ + signal (SIGTERM, SIG_DFL); + + child = vfork (); + + if (child == 0) { + /* Here is another test for sparc vfork register problems. This + test uses lots of local variables, at least as many local + variables as main has allocated so far including compiler + temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris + 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should + reuse the register of parent for one of the local variables, + since it will think that parent can't possibly be used any more + in this routine. Assigning to the local variable will thus + munge parent in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); + + /* Alter the child's signal handler. */ + if (signal (SIGTERM, do_nothing) != SIG_DFL) + _exit(1); + + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent + from child file descriptors. If the child closes a descriptor + before it execs or exits, this munges the parent's descriptor + as well. Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child munge the parent's signal handler? */ + || signal (SIGTERM, SIG_DFL) != SIG_DFL + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_vfork_works=yes +else case e in @%:@( + e) ac_cv_func_vfork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +printf '%s\n' "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +printf '%s\n' "@%:@define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + + +# Rumor has it that strcasecmp lives in -lresolv on some odd systems. +# It doesn't hurt much to use our own if we can't find it so I don't +# make the effort here. +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcmpi" "ac_cv_func_strcmpi" +if test "x$ac_cv_func_strcmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncmpi" "ac_cv_func_strncmpi" +if test "x$ac_cv_func_strncmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp" +if test "x$ac_cv_func_stricmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRICMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp" +if test "x$ac_cv_func_strnicmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNICMP 1" >>confdefs.h + +fi + + +# strcoll() is used by the GNU glob library +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_strcoll_works=yes +else case e in @%:@( + e) ac_cv_func_strcoll_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf '%s\n' "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +printf '%s\n' "@%:@define HAVE_STRCOLL 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +printf %s "checking whether closedir returns void... " >&6; } +if test ${ac_cv_func_closedir_void+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <$ac_header_dirent> + +int +main (void) +{ + + return closedir(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_closedir_void=no +else case e in @%:@( + e) ac_cv_func_closedir_void=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +printf '%s\n' "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +printf '%s\n' "@%:@define CLOSEDIR_VOID 1" >>confdefs.h + +fi + + +# dir.c and our glob.c use dirent.d_type if available + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + + + +# See if the user wants to add (or not) GNU Guile support + +@%:@ Check whether --with-guile was given. +if test ${with_guile+y} +then : + withval=$with_guile; +fi + + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf '%s\n' "$PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf '%s\n' "$ac_pt_PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$with_guile" != xno +then : + guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 +printf %s "checking for GNU Guile... " >&6; } + for v in $guile_versions; do + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + guile_version=$v; have_guile=yes; break +fi + done + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 +printf '%s\n' "$guile_version" >&6; } + if test "$have_guile" = yes +then : + +pkg_failed=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for guile-$guile_version" >&5 +printf %s "checking for guile-$guile_version... " >&6; } + +if test -n "$GUILE_CFLAGS"; then + pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GUILE_LIBS"; then + pkg_cv_GUILE_LIBS="$GUILE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-$guile_version" 2>&1` + else + GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (guile-$guile_version) were not met: + +$GUILE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "A pkg-config implementation could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get a pkg-config implementation, see . +See 'config.log' for more details" "$LINENO" 5; } +else + GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS + GUILE_LIBS=$pkg_cv_GUILE_LIBS + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +fi + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */ +" +if test "x$ac_cv_header_libguile_h" = xyes +then : + +printf '%s\n' "@%:@define HAVE_GUILE 1" >>confdefs.h + +else case e in @%:@( + e) have_guile=no ;; +esac +fi + + if test "$have_guile" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we can link GNU Guile" >&5 +printf %s "checking whether we can link GNU Guile... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} + +int +main (void) +{ + + scm_with_guile (guile_init, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_guile=yes +else case e in @%:@( + e) have_guile=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $have_guile" >&5 +printf '%s\n' "$have_guile" >&6; } +fi + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + +fi + +fi + + if test "$have_guile" = "yes"; then + HAVE_GUILE_TRUE= + HAVE_GUILE_FALSE='#' +else + HAVE_GUILE_TRUE='#' + HAVE_GUILE_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +# Check out the wait reality. +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAIT3 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 +printf %s "checking for union wait... " >&6; } +if test ${make_cv_union_wait+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +union wait status; int pid; pid = wait (&status); +#ifdef WEXITSTATUS +/* Some POSIXoid systems have both the new-style macros and the old + union wait type, and they do not work together. If union wait + conflicts with WEXITSTATUS et al, we don't want to use it at all. */ + if (WEXITSTATUS (status) != 0) pid = -1; +#ifdef WTERMSIG + /* If we have WEXITSTATUS and WTERMSIG, just use them on ints. */ + -- blow chunks here -- +#endif +#endif +#ifdef HAVE_WAITPID + /* Make sure union wait works with waitpid. */ + pid = waitpid (-1, &status, 0); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + make_cv_union_wait=yes +else case e in @%:@( + e) make_cv_union_wait=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 +printf '%s\n' "$make_cv_union_wait" >&6; } +if test "$make_cv_union_wait" = yes +then : + +printf '%s\n' "@%:@define HAVE_UNION_WAIT 1" >>confdefs.h + + +fi + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +if test "$PATH_SEPARATOR" = ';' +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + +fi + +# See if the user wants to use pmake's "customs" distributed build capability + REMOTE=stub +use_customs=false + +@%:@ Check whether --with-customs was given. +if test ${with_customs+y} +then : + withval=$with_customs; case $withval in @%:@( + n|no) : + : ;; @%:@( + *) : + make_cppflags="$CPPFLAGS" + case $withval in @%:@( + y|ye|yes) : + : ;; @%:@( + *) : + CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs" + make_ldflags="$LDFLAGS -L$with_customs/lib" ;; +esac + +cf_test_netlibs=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 +printf %s "checking for network libraries... " >&6; } +if test ${cf_cv_netlibs+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: working..." >&5 +printf '%s\n' "working..." >&6; } +cf_cv_netlibs="" +cf_test_netlibs=yes + + for ac_func in gethostname +do : + ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ 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 case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 +printf %s "checking for gethostname in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_socket_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_socket_gethostname" >&6; } +if test "x$ac_cv_lib_socket_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_main=yes +else case e in @%:@( + e) ac_cv_lib_inet_main=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf '%s\n' "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : + cf_cv_netlibs="-linet $cf_cv_netlibs" +fi + +# +if test "$ac_cv_func_lsocket" != no ; then + + for ac_func in socket +do : + ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket" +if test "x$ac_cv_func_socket" = xyes +then : + printf '%s\n' "@%:@define HAVE_SOCKET 1" >>confdefs.h + +else case e in @%:@( + e) + +{ 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 case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else case e in @%:@( + e) ac_cv_lib_socket_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf '%s\n' "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 +printf %s "checking for socket in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_socket+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_socket=yes +else case e in @%:@( + e) ac_cv_lib_bsd_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 +printf '%s\n' "$ac_cv_lib_bsd_socket" >&6; } +if test "x$ac_cv_lib_bsd_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +fi +# + + for ac_func in gethostbyname +do : + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ 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 case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (void); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostbyname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + + +cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + +done + ;; +esac +fi + +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 + + ac_fn_c_check_header_compile "$LINENO" "customs.h" "ac_cv_header_customs_h" "$ac_includes_default" +if test "x$ac_cv_header_customs_h" = xyes +then : + use_customs=true + REMOTE=cstms + LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags" +else case e in @%:@( + e) with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes ;; +esac +fi + + ;; +esac + +fi + + +# Tell automake about this, so it can include the right .c files. + if test "$use_customs" = true; then + USE_CUSTOMS_TRUE= + USE_CUSTOMS_FALSE='#' +else + USE_CUSTOMS_TRUE='#' + USE_CUSTOMS_FALSE= +fi + + +# See if the user asked to handle case insensitive file systems. + +@%:@ Check whether --enable-case-insensitive-file-system was given. +if test ${enable_case_insensitive_file_system+y} +then : + enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes +then : + printf '%s\n' "@%:@define HAVE_CASE_INSENSITIVE_FS 1" >>confdefs.h + +fi +fi + + +# See if we can handle the job server feature, and if the user wants it. +@%:@ Check whether --enable-job-server was given. +if test ${enable_job_server+y} +then : + enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" +else case e in @%:@( + e) make_cv_job_server="yes" ;; +esac +fi + + +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : + has_wait_nohang=no +else case e in @%:@( + e) has_wait_nohang=yes ;; +esac +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 +printf %s "checking for SA_RESTART... " >&6; } +if test ${make_cv_sa_restart+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return SA_RESTART; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sa_restart=yes +else case e in @%:@( + e) make_cv_sa_restart=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 +printf '%s\n' "$make_cv_sa_restart" >&6; } + +if test "$make_cv_sa_restart" != no +then : + +printf '%s\n' "@%:@define HAVE_SA_RESTART 1" >>confdefs.h + + +fi + +# Only allow jobserver on systems that support it +case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in @%:@( + */no/*) : + make_cv_job_server=no ;; @%:@( + *) : + ;; +esac + +# Also supported on OS2 and MinGW +case $host_os in @%:@( + os2*|mingw*) : + make_cv_job_server=yes ;; @%:@( + *) : + ;; +esac + +# If we support it and the user didn't disable it, build with jobserver +case /$make_cv_job_server/$user_job_server/ in @%:@( + */no/*) : + : no jobserver ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_JOBSERVER 1" >>confdefs.h + + ;; +esac + +# If dl*() functions are supported we can enable the load operation +ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlopen" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLOPEN $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlsym" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLSYM $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlerror" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h + + +@%:@ Check whether --enable-load was given. +if test ${enable_load+y} +then : + enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" +else case e in @%:@( + e) make_cv_load="yes" ;; +esac +fi + + +case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + ;; +esac + +# We might need -ldl +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dl +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_dlopen=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : + +else case e in @%:@( + e) ac_cv_search_dlopen=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf '%s\n' "$ac_cv_search_dlopen" >&6; } +ac_res=$ac_cv_search_dlopen +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else case e in @%:@( + e) make_cv_load= ;; +esac +fi + + +fi + +case /$make_cv_load/$user_load/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_LOAD 1" >>confdefs.h + + ;; +esac + +# If we want load support, we might need to link with export-dynamic. +# See if we can figure it out. Unfortunately this is very difficult. +# For example passing -rdynamic to the SunPRO linker gives a warning +# but succeeds and creates a shared object, not an executable! +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 +printf %s "checking If the linker accepts -Wl,--export-dynamic... " >&6; } + old_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-Wl,--export-dynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 +printf %s "checking If the linker accepts -rdynamic... " >&6; } + LDFLAGS="$old_LDFLAGS -rdynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-rdynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$old_LDFLAGS" + +fi + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : + +printf '%s\n' "@%:@define MAKE_SYMLINKS 1" >>confdefs.h + + +fi + +# Use posix_spawn if we have support and the user didn't disable it + +@%:@ Check whether --enable-posix-spawn was given. +if test ${enable_posix_spawn+y} +then : + enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" +else case e in @%:@( + e) make_cv_posix_spawn="yes" ;; +esac +fi + + +case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + ;; +esac + +if test "$make_cv_posix_spawn" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 +printf %s "checking for posix_spawn that fails synchronously... " >&6; } +if test ${make_cv_synchronous_posix_spawn+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no + if test "$cross_compiling" = yes +then : + make_cv_synchronous_posix_spawn="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + extern char **environ; + int main () { + char path[] = "./xxx-non-existent"; + char *argv[] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_synchronous_posix_spawn=yes +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 +printf '%s\n' "$make_cv_synchronous_posix_spawn" >&6; } +fi + +case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define USE_POSIX_SPAWN 1" >>confdefs.h + + ;; +esac + +# Find the SCCS commands, so we can include them in our default rules. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 +printf %s "checking for location of SCCS get command... " >&6; } +if test ${make_cv_path_sccs_get+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + if test -f /usr/sccs/get +then : + make_cv_path_sccs_get=/usr/sccs/get +else case e in @%:@( + e) make_cv_path_sccs_get=get ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf '%s\n' "$make_cv_path_sccs_get" >&6; } + +printf '%s\n' "@%:@define SCCS_GET \"$make_cv_path_sccs_get\"" >>confdefs.h + + +ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later. +if (/usr/sccs/admin -n s.conftest || admin -n s.conftest) >/dev/null 2>&1 && + test -f s.conftest +then : + # We successfully created an SCCS file. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 +printf %s "checking if SCCS get command understands -G... " >&6; } +if test ${make_cv_sys_get_minus_G+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 && + test -f conftoast +then : + make_cv_sys_get_minus_G=yes +else case e in @%:@( + e) make_cv_sys_get_minus_G=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 +printf '%s\n' "$make_cv_sys_get_minus_G" >&6; } + if test "$make_cv_sys_get_minus_G" = yes +then : + +printf '%s\n' "@%:@define SCCS_GET_MINUS_G 1" >>confdefs.h + + +fi + +fi +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + + +printf '%s\n' "@%:@define MAKE_HOST \"$host\"" >>confdefs.h + +MAKE_HOST="$host" + + +w32_target_env=no + if false; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + +case $host in @%:@( + *-*-mingw32) : + if true; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + w32_target_env=yes + +printf '%s\n' "@%:@define WINDOWS32 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + ;; @%:@( + *) : + ;; +esac + + +printf '%s\n' "@%:@define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'" >>confdefs.h + + + +printf '%s\n' "@%:@define HAVE_DECL_GETLOADAVG $HAVE_DECL_GETLOADAVG" >>confdefs.h + + +# Remember that we ran configure to generate config.h + + +printf '%s\n' "@%:@define MK_CONFIGURE 1" >>confdefs.h + + +# Include the Maintainer's Makefile section, if it's here. + +MAINT_MAKEFILE=/dev/null +if test -r "$srcdir/maintMakefile" +then : + MAINT_MAKEFILE="$srcdir/maintMakefile" + +fi + + +# Allow building with dmalloc +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 +printf %s "checking if malloc debugging is wanted... " >&6; } + +@%:@ Check whether --with-dmalloc was given. +if test ${with_dmalloc+y} +then : + withval=$with_dmalloc; if test "$withval" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +printf '%s\n' "@%:@define WITH_DMALLOC 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi + + + +# Forcibly disable SET_MAKE. If it's set it breaks things like the test +# scripts, etc. +SET_MAKE= + +# Sanity check and inform the user of what we found + +if test "x$make_badcust" = xyes +then : + +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo + +fi + +case $with_customs in @%:@( + ""|n|no|y|ye|yes) : + : ;; @%:@( + *) : + if test -f "$with_customs/lib/libcustoms.a" +then : + : +else case e in @%:@( + e) echo + echo "WARNING: '$with_customs/lib' does not appear to contain the" + echo " Customs library. You must build and install Customs" + echo " before compiling GNU make." + echo + ;; +esac +fi ;; +esac + +if test "x$has_wait_nohang" = xno +then : + echo + echo "WARNING: Your system has neither waitpid() nor wait3()." + echo " Without one of these, signal handling is unreliable." + echo " You should be aware that running GNU make with -j" + echo " could result in erratic behavior." + echo + +fi + +if test "x$make_cv_job_server" = xno && test "x$user_job_server" = xyes +then : + echo + echo "WARNING: Make job server requires a POSIX-ish system that" + echo " supports the pipe(), sigaction(), and either" + echo " waitpid() or wait3() functions. Your system doesn't" + echo " appear to provide one or more of those." + echo " Disabling job server support." + echo + +fi + +if test "x$make_cv_load" = xno && test "x$user_load" = xyes +then : + echo + echo "WARNING: 'load' support requires a POSIX-ish system that" + echo " supports the dlopen(), dlsym(), and dlerror() functions." + echo " Your system doesn't appear to provide one or more of these." + echo " Disabling 'load' support." + echo + +fi + +if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes +then : + echo + echo "WARNING: posix_spawn() is not supported on this system." + echo + +fi + +# autoconf initializes $prefix to NONE. + if test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr; then + KNOWN_PREFIX_TRUE= + KNOWN_PREFIX_FALSE='#' +else + KNOWN_PREFIX_TRUE='#' + KNOWN_PREFIX_FALSE= +fi + + +# Specify what files are to be created. +ac_config_files="$ac_config_files build.cfg tests/config-flags.pm Makefile lib/Makefile doc/Makefile po/Makefile.in" + +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +ac_config_links="$ac_config_links build.sh:build.sh" + + +# OK, do it! + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +ac_cache_dump | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf '%s\n' "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf '%s\n' "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf '%s\n' "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf '%s\n' "done" >&6; } +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi + + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + gl_LIBOBJDEPS=$gl_libobjdeps + + + + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + gltests_LIBOBJDEPS=$gltests_libobjdeps + + + +if test -z "${HAVE_GUILE_TRUE}" && test -z "${HAVE_GUILE_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GUILE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_CUSTOMS_TRUE}" && test -z "${USE_CUSTOMS_FALSE}"; then + as_fn_error $? "conditional \"USE_CUSTOMS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${KNOWN_PREFIX_TRUE}" && test -z "${KNOWN_PREFIX_FALSE}"; then + as_fn_error $? "conditional \"KNOWN_PREFIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +case $CONFIG_STATUS in @%:@( + -*) : + CONFIG_STATUS=./$CONFIG_STATUS ;; @%:@( + */*) : + ;; @%:@( + *) : + CONFIG_STATUS=./$CONFIG_STATUS ;; +esac + +ac_write_fail=0 +ac_clean_CONFIG_STATUS='"$CONFIG_STATUS"' +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf '%s\n' "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >"$CONFIG_STATUS" <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>"$CONFIG_STATUS" <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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 + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ------------------------------------- ## +## Main body of "$CONFIG_STATUS" script. ## +## ------------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x "$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Make home page: . +General help using GNU software: ." + +_ACEOF +ac_cs_config=`printf '%s\n' "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +GNU Make config.status 4.4 +configured by $0, generated by GNU Autoconf 2.73, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2026 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || { + awk '' >"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf '%s\n' "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf '%s\n' "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf '%s\n' "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf '%s\n' "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + printf '%s\n' "$ac_log" +} >&5 + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;; + "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "build.sh") CONFIG_LINKS="$CONFIG_LINKS build.sh:build.sh" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + +if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then + ac_cs_awk_getline=: + ac_cs_awk_pipe_init= + ac_cs_awk_read_file=' + while ((getline aline < (F[key])) > 0) + print(aline) + close(F[key])' + ac_cs_awk_pipe_fini= +else + ac_cs_awk_getline=false + ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" + ac_cs_awk_read_file=' + print "|#_!!_#|" + print "cat " F[key] " &&" + '$ac_cs_awk_pipe_init + # The final ':' finishes the AND list. + ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' +fi +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + +# Create commands to substitute file output variables. +{ + echo 'cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1' && + printf '%s\n' 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && + printf '%s\n' "$ac_subst_files" | sed 's/.*/F@<:@"&"@:>@="$&"/' && + echo "_ACAWK" && + echo "_ACEOF" +} >conf$$files.sh && +. ./conf$$files.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +rm -f conf$$files.sh + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | sed -n '$='` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | sed -n '$='` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >"$CONFIG_STATUS" || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + \$ac_cs_awk_pipe_init +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + if (nfields == 3 && !substed) { + key = field[2] + if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { + \$ac_cs_awk_read_file + next + } + } + print line +} +\$ac_cs_awk_pipe_fini +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >"$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + suffix = P[macro] D[macro] + while (suffix ~ /[\t ]$/) { + suffix = substr(suffix, 1, length(suffix) - 1) + } + # Preserve the white space surrounding the "#". + print prefix "define", macro suffix + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf '%s\n' "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf '%s\n' "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf '%s\n' "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf '%s\n' "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | +if $ac_cs_awk_getline; then + $AWK -f "$ac_tmp/subs.awk" +else + $AWK -f "$ac_tmp/subs.awk" | $SHELL +fi \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf '%s\n' "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf '%s\n' "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf '%s\n' "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +printf '%s\n' "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf '%s\n' "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in @%:@( + *\'*) : + eval set x "$CONFIG_FILES" ;; @%:@( + *) : + set x $CONFIG_FILES ;; @%:@( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf '%s\n' "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See 'config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_CONFIG_STATUS= + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + case $CONFIG_STATUS in @%:@( + -*) : + ac_no_opts=-- ;; @%:@( + *) : + ac_no_opts= ;; +esac + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $ac_no_opts "$CONFIG_STATUS" $ac_config_status_args || + ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + \ No newline at end of file diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/output.3 b/local/recipes/dev/gnu-make/source/autom4te.cache/output.3 new file mode 100644 index 0000000000..83bbf2e660 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/output.3 @@ -0,0 +1,17350 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.73 for GNU Make 4.4. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation, +@%:@ Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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 + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="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 + # contradicts POSIX and common usage. Disable this. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in @%:@( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in @%:@( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) 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 ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf '%s\n' "$0: This script requires a shell more modern than all" + printf '%s\n' "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later." + else + printf '%s\n' "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf '%s\n' "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_CONFIG_STATUS= +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Make' +PACKAGE_TARNAME='make' +PACKAGE_VERSION='4.4' +PACKAGE_STRING='GNU Make 4.4' +PACKAGE_BUGREPORT='bug-make@gnu.org' +PACKAGE_URL='https://www.gnu.org/software/make/' + +ac_unique_file="src/vpath.c" +ac_config_libobj_dir=lib +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_func_c_list= +ac_subst_vars='gltests_LIBOBJDEPS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LIBOBJDEPS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIB@&t@OBJS +KNOWN_PREFIX_FALSE +KNOWN_PREFIX_TRUE +WINDOWSENV_FALSE +WINDOWSENV_TRUE +MAKE_HOST +AM_LDFLAGS +USE_CUSTOMS_FALSE +USE_CUSTOMS_TRUE +REMOTE +HAVE_GUILE_FALSE +HAVE_GUILE_TRUE +GUILE_LIBS +GUILE_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +POSUB +LTLIBINTL +LIBINTL +INTLLIBS +LTLIBICONV +LIBICONV +INTL_MACOSX_LIBS +XGETTEXT_EXTRA_OPTIONS +MSGMERGE +XGETTEXT_015 +XGETTEXT +GMSGFMT_015 +MSGFMT_015 +GMSGFMT +MSGFMT +GETTEXT_MACRO_VERSION +USE_NLS +SED +PERL +LIBGNU_LTLIBDEPS +LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS +gltests_WITNESS +GL_GENERATE_STDBOOL_H_FALSE +GL_GENERATE_STDBOOL_H_TRUE +STDBOOL_H +HAVE__BOOL +USE_SYSTEM_GLOB +USE_SYSTEM_GLOB_FALSE +USE_SYSTEM_GLOB_TRUE +HOST_CPU_C_ABI +HOST_CPU +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE +GETLOADAVG_LIBS +GL_GNULIB_GETLOADAVG +HAVE_DECL_GETLOADAVG +GL_GENERATE_ALLOCA_H_FALSE +GL_GENERATE_ALLOCA_H_TRUE +ALLOCA_H +HAVE_ALLOCA_H +ALLOCA +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +RANLIB +ARFLAGS +AR +CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +ECHO_T +ECHO_N +ECHO_C +target_alias +host_alias +build_alias +LIBS +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='MAINT_MAKEFILE' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_largefile +enable_year2038 +enable_cross_guesses +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_guile +with_customs +enable_case_insensitive_file_system +enable_job_server +enable_load +enable_posix_spawn +with_dmalloc +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GUILE_CFLAGS +GUILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf '%s\n' "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf '%s\n' "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`printf '%s\n' $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +'configure' configures GNU Make 4.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print 'checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for '--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/make@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Make 4.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --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 + --enable-case-insensitive-file-system + assume file systems are case insensitive + --disable-job-server disallow recursive make communication during -jN + --disable-load disable support for the 'load' operation + --disable-posix-spawn disable support for posix_spawn() + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + --with-guile Support GNU Guile for embedded scripting + --with-customs=DIR enable remote jobs via Customs--see README.customs + --with-dmalloc use dmalloc, as in http://www.dmalloc.com + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + GUILE_CFLAGS + C compiler flags for GUILE, overriding pkg-config + GUILE_LIBS linker flags for GUILE, overriding pkg-config + +Use these variables to override the choices made by 'configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +GNU Make home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf '%s\n' "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Make configure 4.4 +generated by GNU Autoconf 2.73 + +Copyright (C) 2026 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +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.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES +@%:@ ------------------------------------------- +@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache +@%:@ variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) eval "$3=yes" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_type + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to run conftest.@S|@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 case e in @%:@( + e) 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 ;; +esac +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_func LINENO FUNC VAR +@%:@ ---------------------------------- +@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (void); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (void); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_func + +@%:@ ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +@%:@ ------------------------------------------------------------------ +@%:@ Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +@%:@ accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + ac_compile="$ac_save_ac_compile" + +} @%:@ ac_fn_check_decl + +@%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +@%:@ ---------------------------------------------------- +@%:@ Tries to find if the field MEMBER exists in type AGGR, after including +@%:@ INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) eval "$4=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$4 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf '%s\n' "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf '%s\n' "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# Dump the cache to stdout. It can be in a pipe (this is a requirement). +ac_cache_dump () +{ + # The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf '%s\n' "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) +} + +# Print debugging info to stdout. +ac_dump_debugging_info () +{ + echo + + printf '%s\n' "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + ac_cache_dump + echo + + printf '%s\n' "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf '%s\n' "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + fi + + if test -s confdefs.h; then + printf '%s\n' "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf '%s\n' "$as_me: caught signal $ac_signal" + printf '%s\n' "$as_me: exit $exit_status" +} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. +ac_exit_trap () +{ + exit_status= + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + ac_dump_debugging_info >&5 + eval "rm -f $ac_clean_CONFIG_STATUS core *.core core.conftest.*" && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +} + +trap 'ac_exit_trap $?' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf '%s\n' "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf '%s\n' "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf '%s\n' "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See 'config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf '%s\n' "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf '%s\n' "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C23 (global declarations) +ac_c_conftest_c23_globals=' +/* Does the compiler advertise conformance to C17 or earlier? + Although GCC 14 does not do that, even with -std=gnu23, + it is close enough, and defines __STDC_VERSION == 202000L. */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ <= 201710L +# error "Compiler advertises conformance to C17 or earlier" +#endif + +// Check alignas. +char alignas (double) c23_aligned_as_double; +char alignas (0) c23_no_special_alignment; +extern char c23_aligned_as_int; +char alignas (0) alignas (int) c23_aligned_as_int; + +// Check alignof. +enum +{ + c23_int_alignment = alignof (int), + c23_int_array_alignment = alignof (int[100]), + c23_char_alignment = alignof (char) +}; +static_assert (0 < -alignof (int), "alignof is signed"); + +int function_with_unnamed_parameter (int) { return 0; } + +void c23_noreturn (); + +/* Test parsing of string and char UTF-8 literals (including hex escapes). + The parens pacify GCC 15. */ +bool use_u8 = (!sizeof u8"\xFF") == (!u8'\''x'\''); + +bool check_that_bool_works = true | false | !nullptr; +#if !true +# error "true does not work in #if" +#endif +#if false +#elifdef __STDC_VERSION__ +#else +# error "#elifdef does not work" +#endif + +#ifndef __has_c_attribute +# error "__has_c_attribute not defined" +#endif + +#ifndef __has_include +# error "__has_include not defined" +#endif + +#define LPAREN() ( +#define FORTY_TWO(x) 42 +#define VA_OPT_TEST(r, x, ...) __VA_OPT__ (FORTY_TWO r x)) +static_assert (VA_OPT_TEST (LPAREN (), 0, <:-) == 42); + +static_assert (0b101010 == 42); +static_assert (0B101010 == 42); +static_assert (0xDEAD'\''BEEF == 3'\''735'\''928'\''559); +static_assert (0.500'\''000'\''000 == 0.5); + +enum unsignedish : unsigned int { uione = 1 }; +static_assert (0 < -uione); + +#include +constexpr nullptr_t null_pointer = nullptr; + +static typeof (1 + 1L) two () { return 2; } +static long int three () { return 3; } +' + +# Test code for whether the C compiler supports C23 (body of main). +ac_c_conftest_c23_main=' + { + label_before_declaration: + int arr[10] = {}; + if (arr[0]) + goto label_before_declaration; + if (!arr[0]) + goto label_at_end_of_block; + label_at_end_of_block: + } + ok |= !null_pointer; + ok |= two != three; +' + +# Test code for whether the C compiler supports C23 (complete). +ac_c_conftest_c23_program="${ac_c_conftest_c23_globals} + +int +main (int, char **) +{ + int ok = 0; + ${ac_c_conftest_c23_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Do not test the value of __STDC__, because some compilers define it to 0 + or do not define it, while otherwise adequately conforming. */ + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (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; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + 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 + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// 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, and "aND" is used instead of "and" to work around +// GCC bug 40564 which is irrelevant here. +#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) +{ + // 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; + const char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + static struct incomplete_array *volatile incomplete_array_pointer; + struct incomplete_array *ia = incomplete_array_pointer; + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + // Do not test for VLAs, as some otherwise-conforming compilers lack them. + // C code should instead use __STDC_NO_VLA__; see Autoconf manual. + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || ni.number != 58); +' + +# 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 case e in @%:@( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +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_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w= + for ac_val in x $ac_old_val; do + ac_old_val_w="$ac_old_val_w $ac_val" + done + ac_new_val_w= + for ac_val in x $ac_new_val; do + ac_new_val_w="$ac_new_val_w $ac_val" + done + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf '%s\n' "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf '%s\n' "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf '%s\n' "$as_me: former value: '$ac_old_val'" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf '%s\n' "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf '%s\n' "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf '%s\n' "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Autoconf setup + + +ac_config_headers="$ac_config_headers src/config.h" + + + + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +am__api_version='1.18' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in @%:@(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF/1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF/1 since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + ;; +esac +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf '%s\n' "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in @%:@( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf '%s\n' "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + printf '%s\n' ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf '%s\n' "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf '%s\n' "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in @%:@( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf '%s\n' "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf '%s\n' "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf '%s\n' "$STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf '%s\n' "$ac_ct_STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf '%s\n' "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk 'busybox awk' +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf '%s\n' "$AWK" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf '%s\n' "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @printf '%s\n' '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + SET_MAKE= +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +@%:@ Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if printf '%s\n' 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf '%s\n' "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in @%:@( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in @%:@( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf '%s\n' "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in @%:@( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='make' + VERSION='4.4' + + +printf '%s\n' "@%:@define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf '%s\n' "@%:@define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf '%s\n' "$am_cv_prog_tar_ustar" >&6; } + + + + + +# 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 + + + + + + + + +# Checks for programs. + + + + + + + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in @%:@( + '0:this is the am__doit target') : + case $s in @%:@( + BSD) : + am__include='.include' am__quote='"' ;; @%:@( + *) : + am__include='include' am__quote='' ;; +esac ;; @%:@( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf '%s\n' "${_am_result}" >&6; } + +@%:@ Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf '%s\n' "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in @%:@( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf '%s\n' "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in @%:@( + e) { { 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; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf '%s\n' "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf '%s\n' "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf '%s\n' "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +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 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 case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +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 case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +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 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf '%s\n' "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf '%s\n' "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else case e in @%:@( + e) ac_cv_safe_to_define___extensions__=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf '%s\n' "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf '%s\n' "$ac_cv_should_define__xopen_source" >&6; } + + printf '%s\n' "@%:@define _ALL_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _COSMO_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _GNU_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf '%s\n' "@%:@define _NETBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _OPENBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf '%s\n' "@%:@define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf '%s\n' "@%:@define _MINIX 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_1_SOURCE 2" >>confdefs.h + +else case e in @%:@( + e) MINIX= ;; +esac +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf '%s\n' "@%:@define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf '%s\n' "@%:@define _XOPEN_SOURCE 500" >>confdefs.h + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +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 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 case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +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 case e in @%:@( + e) 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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +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 case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) 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 case e in @%:@( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) 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 case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +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 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# 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 case e in @%:@( + e) 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 + ;; +esac +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=`printf '%s\n' "$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 case e in @%:@( + e) 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 + ;; +esac +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=`printf '%s\n' "$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 case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 case e in @%:@( + e) { { 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; } ;; +esac +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 egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_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_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "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_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + + if test "$ac_cv_path_EGREP_TRADITIONAL" +then : + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_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_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "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_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; 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_TRADITIONAL=$EGREP_TRADITIONAL +fi + ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf '%s\n' "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL + + + + + { 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 case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Amsterdam" >/dev/null 2>&1 +then : + gl_cv_c_amsterdam_compiler=yes +else case e in @%:@( + e) gl_cv_c_amsterdam_compiler=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +printf '%s\n' "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + : + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf '%s\n' "$ac_ct_AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + +@%:@ Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_y2038=yes +else case e in @%:@( + e) gl_cv_type_time_t_y2038=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_bits_macro=yes +else case e in @%:@( + e) gl_cv_type_time_t_bits_macro=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in @%:@( + e) # 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 + ;; +esac +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 alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + + + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: + + + + + + + + + + @%:@ Check whether --enable-cross-guesses was given. +if test ${enable_cross_guesses+y} +then : + enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 +printf '%s\n' "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} + enableval=conservative + fi + gl_cross_guesses="$enableval" +else case e in @%:@( + e) gl_cross_guesses=conservative ;; +esac +fi + + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ + + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else case e in @%:@( + e) ac_cv_working_alloca_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf '%s\n' "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_alloca_works=$ac_cv_working_alloca_h +if test "$ac_cv_func_alloca_works" != yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf '%s\n' "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + + + + + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf '%s\n' "@%:@define C_ALLOCA 1" >>confdefs.h + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else case e in @%:@( + e) ac_cv_c_stack_direction=-1 ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf '%s\n' "$ac_cv_c_stack_direction" >&6; } +printf '%s\n' "@%:@define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define eaccess access" >>confdefs.h + ;; +esac +fi + + + + HAVE_DECL_GETLOADAVG=1; + + + + + + + + + + + GL_GNULIB_GETLOADAVG=0 + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to detect undeclared functions" >&5 +printf %s "checking for $CC options to detect undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in @%:@( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to ignore future-version functions" >&5 +printf %s "checking for $CC options to ignore future-version functions... " >&6; } +if test ${ac_cv_c_future_darwin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_compile_saved="$ac_compile" + ac_compile="$ac_compile -Werror=unguarded-availability-new" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if ! (defined __APPLE__ && defined __MACH__) + #error "-Werror=unguarded-availability-new not needed here" + #endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_future_darwin_options='-Werror=unguarded-availability-new' +else case e in @%:@( + e) ac_cv_c_future_darwin_options='none needed' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$ac_compile_saved" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_future_darwin_options" >&5 +printf '%s\n' "$ac_cv_c_future_darwin_options" >&6; } + case $ac_cv_c_future_darwin_options in @%:@( + 'none needed') : + ac_c_future_darwin_options='' ;; @%:@( + *) : + ac_c_future_darwin_options=$ac_cv_c_future_darwin_options ;; +esac + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _MSC_VER +MicrosoftCompiler +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "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 case e in @%:@( + e) gl_asmext='s' + gl_c_asm_opt='-S' + ;; +esac +fi +rm -rf conftest* + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 +printf %s "checking host CPU and C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$host_cpu" in + + i[34567]86 ) + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=x86_64-x32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=x86_64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=i386 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __aarch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=arm64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=arm64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) # Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=hppa64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=hppa ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=ia64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=ia64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mips64 +else case e in @%:@( + e) # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mipsn32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=mips ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=powerpc64-elfv2 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cpu=riscv64 +else case e in @%:@( + e) cpu=riscv32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else case e in @%:@( + e) main_abi=ilp32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=d +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=f +else case e in @%:@( + e) float_abi='' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=s390x +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=s390 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=sparc64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=sparc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 +printf '%s\n' "$gl_cv_host_cpu_c_abi" >&6; } + + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + + + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <&5 +printf %s "checking for 64-bit off_t... " >&6; } +if test ${gl_cv_type_off_t_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_off_t_64=yes +else case e in @%:@( + e) gl_cv_type_off_t_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 +printf '%s\n' "$gl_cv_type_off_t_64" >&6; } + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 +printf %s "checking for 64-bit st_size... " >&6; } +if test ${gl_cv_member_st_size_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_member_st_size_64=yes +else case e in @%:@( + e) gl_cv_member_st_size_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 +printf '%s\n' "$gl_cv_member_st_size_64" >&6; } + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac + +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : + +printf '%s\n' "@%:@define HAVE__BOOL 1" >>confdefs.h + + +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C99 requires bool, true, and false to be macros, + C23 and C++11 overrule that, so do not test for that. + Although C99 requires __bool_true_false_are_defined and + _Bool, C23 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + +int +main (void) +{ + + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stdbool_h=yes +else case e in @%:@( + e) ac_cv_header_stdbool_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +printf '%s\n' "$ac_cv_header_stdbool_h" >&6; } + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 +printf %s "checking for C compiler option to allow warnings... " >&6; } +if test ${gl_cv_cc_wallow+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 +printf '%s\n' "$gl_cv_cc_wallow" >&6; } + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + + + + + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 + (eval $gl_command) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + + + + + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + + + + + + + + + + + + + gl_source_base='lib' + gl_source_base_prefix= + + + if test $ac_cv_func_alloca_works = no; then + : + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 +printf %s "checking for alloca as a compiler built-in... " >&6; } +if test ${gl_cv_rpl_alloca+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Need own alloca" >/dev/null 2>&1 +then : + gl_cv_rpl_alloca=yes +else case e in @%:@( + e) gl_cv_rpl_alloca=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 +printf '%s\n' "$gl_cv_rpl_alloca" >&6; } + if test $gl_cv_rpl_alloca = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + + + + + + + case "$GL_GENERATE_ALLOCA_H" in + false) ALLOCA_H='' ;; + true) + if test -z "$ALLOCA_H"; then + ALLOCA_H="${gl_source_base_prefix}alloca.h" + fi + ;; + *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_ALLOCA_H; then + GL_GENERATE_ALLOCA_H_TRUE= + GL_GENERATE_ALLOCA_H_FALSE='#' +else + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE= +fi +: + if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE='#' + fi + + + + + + + + + + + + + + + + + + +# Persuade glibc to declare getloadavg(). + + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + +else case e in @%:@( + e) gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +printf %s "checking for elf_begin in -lelf... " >&6; } +if test ${ac_cv_lib_elf_elf_begin+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char elf_begin (void); +int +main (void) +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_elf_elf_begin=yes +else case e in @%:@( + e) ac_cv_lib_elf_elf_begin=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +printf '%s\n' "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes +then : + LIBS="-lelf $LIBS" +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 +printf %s "checking for kvm_open in -lkvm... " >&6; } +if test ${ac_cv_lib_kvm_kvm_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkvm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kvm_open (void); +int +main (void) +{ +return kvm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kvm_kvm_open=yes +else case e in @%:@( + e) ac_cv_lib_kvm_kvm_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 +printf '%s\n' "$ac_cv_lib_kvm_kvm_open" >&6; } +if test "x$ac_cv_lib_kvm_kvm_open" = xyes +then : + LIBS="-lkvm $LIBS" +fi + + # Check for the 4.4BSD definition of getloadavg. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 +printf %s "checking for getloadavg in -lutil... " >&6; } +if test ${ac_cv_lib_util_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_util_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_util_getloadavg" >&6; } +if test "x$ac_cv_lib_util_getloadavg" = xyes +then : + LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes +fi + + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 +printf %s "checking for getloadavg in -lgetloadavg... " >&6; } +if test ${ac_cv_lib_getloadavg_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lgetloadavg $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_getloadavg_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_getloadavg_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_getloadavg_getloadavg" >&6; } +if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes +then : + LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes +else case e in @%:@( + e) LIBS=$gl_getloadavg_LIBS ;; +esac +fi + + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 +printf %s "checking for kstat_open in -lkstat... " >&6; } +if test ${ac_cv_lib_kstat_kstat_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kstat_open (void); +int +main (void) +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kstat_kstat_open=yes +else case e in @%:@( + e) ac_cv_lib_kstat_kstat_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 +printf '%s\n' "$ac_cv_lib_kstat_kstat_open" >&6; } +if test "x$ac_cv_lib_kstat_kstat_open" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBKSTAT 1" >>confdefs.h + + LIBS="-lkstat $LIBS" + +fi + + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 +printf %s "checking for perfstat_cpu_total in -lperfstat... " >&6; } +if test ${ac_cv_lib_perfstat_perfstat_cpu_total+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lperfstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char perfstat_cpu_total (void); +int +main (void) +{ +return perfstat_cpu_total (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_perfstat_perfstat_cpu_total=yes +else case e in @%:@( + e) ac_cv_lib_perfstat_perfstat_cpu_total=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 +printf '%s\n' "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } +if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBPERFSTAT 1" >>confdefs.h + + LIBS="-lperfstat $LIBS" + +fi + + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define DGUX 1" >>confdefs.h + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 +printf %s "checking for dg_sys_info in -ldgc... " >&6; } +if test ${ac_cv_lib_dgc_dg_sys_info+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldgc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dg_sys_info (void); +int +main (void) +{ +return dg_sys_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dgc_dg_sys_info=yes +else case e in @%:@( + e) ac_cv_lib_dgc_dg_sys_info=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 +printf '%s\n' "$ac_cv_lib_dgc_dg_sys_info" >&6; } +if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBDGC 1" >>confdefs.h + + LIBS="-ldgc $LIBS" + +fi + +fi + + fi + fi ;; +esac +fi + + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getloadavg" = xyes +then : + +else case e in @%:@( + e) HAVE_DECL_GETLOADAVG=0 ;; +esac +fi + + + if test $HAVE_GETLOADAVG = 0; then + GL_COND_OBJ_GETLOADAVG_TRUE= + GL_COND_OBJ_GETLOADAVG_FALSE='#' +else + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE= +fi +: + if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE='#' + fi + + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : + + +# Figure out what our getloadavg.c needs. + + + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + + for ac_func in pstat_getdynamic +do : + ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic" +if test "x$ac_cv_func_pstat_getdynamic" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSTAT_GETDYNAMIC 1" >>confdefs.h + gl_func_getloadavg_done=yes +fi + +done +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define SVR4 1" >>confdefs.h + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + + +printf '%s\n' "@%:@define UMAX4_3 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes; printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MACH_MACH_H 1" >>confdefs.h + +fi + +fi + + for ac_header in nlist.h +do : + ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" +if test "x$ac_cv_header_nlist_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_NLIST_H 1" >>confdefs.h + ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include +" +if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h + + +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +printf '%s\n' "@%:@define N_NAME_POINTER 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi + +done + +fi + + + + + + + + + + GL_GNULIB_GETLOADAVG=1 + + + + + +printf '%s\n' "@%:@define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h + + + + + + # Check the system to see if it provides GNU glob. If not, use our + # local version. + { 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "gnu glob" >/dev/null 2>&1 +then : + make_cv_sys_gnu_glob=yes +else case e in @%:@( + e) make_cv_sys_gnu_glob=no ;; +esac +fi +rm -rf conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 +printf '%s\n' "$make_cv_sys_gnu_glob" >&6; } + # Tell automake about this, so it can build the right .c files. + if test "$make_cv_sys_gnu_glob" = yes; then + USE_SYSTEM_GLOB_TRUE= + USE_SYSTEM_GLOB_FALSE='#' +else + USE_SYSTEM_GLOB_TRUE='#' + USE_SYSTEM_GLOB_FALSE= +fi + + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + + # Check for DOS-style pathnames. + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 +printf %s "checking whether system uses MSDOS-style paths... " >&6; } +if test ${ac_cv_dos_paths+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__ +neither MSDOS nor Windows nor OS2 +#endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_dos_paths=yes +else case e in @%:@( + e) ac_cv_dos_paths=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 +printf '%s\n' "$ac_cv_dos_paths" >&6; } + + if test x"$ac_cv_dos_paths" = xyes +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + +fi + + + + + + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + + + + + + + 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 + + + if $GL_GENERATE_STDBOOL_H; then + GL_GENERATE_STDBOOL_H_TRUE= + GL_GENERATE_STDBOOL_H_FALSE='#' +else + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE= +fi +: + 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 + + + + + + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + + + + gl_source_base='tests' + gl_source_base_prefix= + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gltests_WITNESS + + + + + + + + + + + + + LIBGNU_LIBDEPS="$gl_libdeps" + + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 case e in @%:@( + e) { { 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; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +# Perl is needed for the test suite (only) +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="perl" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl" +fi ;; +esac +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf '%s\n' "$PERL" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + +# Specialized system macros + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + int + main (int argc, char **argv) + { + /* Intimidate the compiler so that it does not + optimize the arrays away. */ + char *p = argv[0]; + ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; + ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; + return use_ascii (argc) == use_ebcdic (*p); + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else case e in @%:@( + e) ac_cv_c_bigendian=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf '%s\n' "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf '%s\n' "@%:@define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf '%s\n' "@%:@define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Enable gettext, in "external" mode. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf '%s\n' "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + @%:@ Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else case e in @%:@( + e) USE_NLS=yes ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf '%s\n' "$MSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf '%s\n' "$GMSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac + + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf '%s\n' "$XGETTEXT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + rm -f messages.po + + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf '%s\n' "$MSGMERGE" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +@%:@ Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else case e in @%:@( + e) with_gnu_ld=no ;; +esac +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 &5 +printf '%s\n' "$LD" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf '%s\n' "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf '%s\n' "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + @%:@ Check whether --enable-rpath was given. +if test ${enable_rpath+y} +then : + enableval=$enable_rpath; : +else case e in @%:@( + e) enable_rpath=yes ;; +esac +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _LP64 +sixtyfour bits +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "sixtyfour bits" >/dev/null 2>&1 +then : + gl_cv_solaris_64bit=yes +else case e in @%:@( + e) gl_cv_solaris_64bit=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf '%s\n' "$gl_cv_solaris_64bit" >&6; } + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else case e in @%:@( + e) gt_cv_func_CFPreferencesCopyAppValue=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf '%s\n' "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf '%s\n' "@%:@define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyCurrent=yes +else case e in @%:@( + e) gt_cv_func_CFLocaleCopyCurrent=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf '%s\n' "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +printf '%s\n' "@%:@define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + LIBINTL= + LTLIBINTL= + POSUB= + + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libc=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf '%s\n' "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + if test "$cross_compiling" = yes +then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + result |= 16; + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf '%s\n' "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +printf '%s\n' "@%:@define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf '%s\n' "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libintl=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + fi + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +printf '%s\n' "@%:@define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf '%s\n' "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf '%s\n' "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf '%s\n' "@%:@define HAVE_GETTEXT 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# Checks for libraries. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (void); +int +main (void) +{ +return strerror (); + ; + return 0; +} +_ACEOF +for ac_lib in '' cposix +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_strerror=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_strerror+y} +then : + break +fi +done +if test ${ac_cv_search_strerror+y} +then : + +else case e in @%:@( + e) ac_cv_search_strerror=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf '%s\n' "$ac_cv_search_strerror" >&6; } +ac_res=$ac_cv_search_strerror +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 +printf %s "checking for library containing getpwnam... " >&6; } +if test ${ac_cv_search_getpwnam+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getpwnam (void); +int +main (void) +{ +return getpwnam (); + ; + return 0; +} +_ACEOF +for ac_lib in '' sun +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_getpwnam=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getpwnam+y} +then : + break +fi +done +if test ${ac_cv_search_getpwnam+y} +then : + +else case e in @%:@( + e) ac_cv_search_getpwnam=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 +printf '%s\n' "$ac_cv_search_getpwnam" >&6; } +ac_res=$ac_cv_search_getpwnam +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf '%s\n' "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else case e in @%:@( + e) eval "$as_ac_Header=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$as_ac_Header + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +@%:@define `printf '%s\n' "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stat_broken=no +else case e in @%:@( + e) ac_cv_header_stat_broken=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf '%s\n' "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +printf '%s\n' "@%:@define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "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 + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timeb_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIMEB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Derived from code rejected by Sun C 1.0 and similar vintage. */ + int x[] = {25, 17}; + typedef int const *iptr; + iptr foo = &x[0]; + ++foo; + if (!*foo) return 0; + } + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else case e in @%:@( + e) ac_cv_c_const=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf '%s\n' "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf '%s\n' "@%:@define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default" +if test "x$ac_cv_type_uid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define uid_t int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default" +if test "x$ac_cv_type_gid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define gid_t int" >>confdefs.h + ;; +esac +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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else case e in @%:@( + e) ac_pid_type='__int64' ;; +esac +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 + + ;; +esac +fi + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define off_t long int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define ssize_t int" >>confdefs.h + ;; +esac +fi + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +printf '%s\n' "@%:@define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_long_long_int=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi + fi ;; +esac +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 case e in @%:@( + e) 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 + ;; +esac +fi + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_UINTMAX_T 1" >>confdefs.h + +else case e in @%:@( + e) test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf '%s\n' "@%:@define uintmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + +# Check for sig_atomic_t + + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include +" +if test "x$ac_cv_type_sig_atomic_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + + +else case e in @%:@( + e) +printf '%s\n' "@%:@define sig_atomic_t int" >>confdefs.h + ;; +esac +fi + + + +# Find out whether our struct stat returns nanosecond resolution timestamps. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 +printf %s "checking for nanoseconds field of struct stat... " >&6; } +if test ${ac_cv_struct_st_mtim_nsec+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # st_mtim.tv_nsec -- the usual case + # st_mtim._tv_nsec -- Solaris 2.6, if + # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 + # && !defined __EXTENSIONS__) + # st_mtim.st__tim.tv_nsec -- UnixWare 2.1.2 + # st_mtime_n -- AIX 5.2 and above + # st_mtimespec.tv_nsec -- Darwin (Mac OSX) + for ac_val in st_mtim.tv_nsec st_mtim._tv_nsec st_mtim.st__tim.tv_nsec st_mtime_n st_mtimespec.tv_nsec; do + CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main (void) +{ +struct stat s; s.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_st_mtim_nsec=$ac_val; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 +printf '%s\n' "$ac_cv_struct_st_mtim_nsec" >&6; } + + if test $ac_cv_struct_st_mtim_nsec != no; then + +printf '%s\n' "@%:@define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h + + fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 +printf %s "checking whether to use high resolution file timestamps... " >&6; } +if test ${make_cv_file_timestamp_hi_res+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) make_cv_file_timestamp_hi_res=no + if test "$ac_cv_struct_st_mtim_nsec" != no +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if HAVE_INTTYPES_H +# include +#endif +int +main (void) +{ +char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_file_timestamp_hi_res=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 +printf '%s\n' "$make_cv_file_timestamp_hi_res" >&6; } +if test "$make_cv_file_timestamp_hi_res" = yes +then : + val=1 +else case e in @%:@( + e) val=0 ;; +esac +fi + +printf '%s\n' "@%:@define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h + + +if test "$make_cv_file_timestamp_hi_res" = yes +then : + # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. + # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else case e in @%:@( + e) ac_cv_search_clock_gettime=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf '%s\n' "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "$ac_cv_search_clock_gettime" != no +then : + +printf '%s\n' "@%:@define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +fi + +fi + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 +printf %s "checking for standard gettimeofday... " >&6; } +if test ${ac_cv_func_gettimeofday+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_gettimeofday=no + if test "$cross_compiling" = yes +then : + ac_cv_func_gettimeofday="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return gettimeofday (&t, 0) != 0 + || t.tv_sec < 0 || t.tv_usec < 0; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_gettimeofday=yes +else case e in @%:@( + e) ac_cv_func_gettimeofday=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 +printf '%s\n' "$ac_cv_func_gettimeofday" >&6; } +if test "$ac_cv_func_gettimeofday" = yes +then : + +printf '%s\n' "@%:@define HAVE_GETTIMEOFDAY 1" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRTOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" +if test "x$ac_cv_func_strndup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf '%s\n' "@%:@define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktemp" "ac_cv_func_mktemp" +if test "x$ac_cv_func_mktemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopen" "ac_cv_func_fdopen" +if test "x$ac_cv_func_fdopen" = xyes +then : + printf '%s\n' "@%:@define HAVE_FDOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf '%s\n' "@%:@define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigsetmask" "ac_cv_func_sigsetmask" +if test "x$ac_cv_func_sigsetmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGSETMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" +if test "x$ac_cv_func_setrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf '%s\n' "@%:@define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf '%s\n' "@%:@define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf '%s\n' "@%:@define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf '%s\n' "@%:@define HAVE_ATEXIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty" +if test "x$ac_cv_func_isatty" = xyes +then : + printf '%s\n' "@%:@define HAVE_ISATTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf '%s\n' "@%:@define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnattr_setsigmask" "ac_cv_func_posix_spawnattr_setsigmask" +if test "x$ac_cv_func_posix_spawnattr_setsigmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h + +fi + + +# We need to check declarations, not just existence, because on Tru64 this +# function is not declared without special flags, which themselves cause +# other problems. We'll just use our own. +ac_fn_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h + + + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + + +if test "x$ac_cv_func_fork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +printf %s "checking for working fork... " >&6; } +if test ${ac_cv_func_fork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_fork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* By R. Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_fork_works=yes +else case e in @%:@( + e) ac_cv_func_fork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +printf '%s\n' "$ac_cv_func_fork_works" >&6; } + +else + ac_cv_func_fork_works=$ac_cv_func_fork +fi +if test "x$ac_cv_func_fork_works" = xcross; then + case $host in + *-*-amigaos* | *-*-msdosdjgpp*) + # Override, as these systems have only a dummy fork() stub + ac_cv_func_fork_works=no + ;; + *) + ac_cv_func_fork_works=yes + ;; + esac + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} +fi +ac_cv_func_vfork_works=$ac_cv_func_vfork +if test "x$ac_cv_func_vfork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +printf %s "checking for working vfork... " >&6; } +if test ${ac_cv_func_vfork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_vfork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#include +#ifdef HAVE_VFORK_H +# include +#endif + +static void +do_nothing (int sig) +{ + (void) sig; +} + +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. The compiler + is told about this with #include , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +sparc_address_test (int arg) +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} + +int +main (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + /* On Solaris 2.4, changes by the child to the signal handler + also munge signal handlers in the parent. To detect this, + start by putting the parent's handler in a known state. */ + signal (SIGTERM, SIG_DFL); + + child = vfork (); + + if (child == 0) { + /* Here is another test for sparc vfork register problems. This + test uses lots of local variables, at least as many local + variables as main has allocated so far including compiler + temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris + 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should + reuse the register of parent for one of the local variables, + since it will think that parent can't possibly be used any more + in this routine. Assigning to the local variable will thus + munge parent in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); + + /* Alter the child's signal handler. */ + if (signal (SIGTERM, do_nothing) != SIG_DFL) + _exit(1); + + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent + from child file descriptors. If the child closes a descriptor + before it execs or exits, this munges the parent's descriptor + as well. Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child munge the parent's signal handler? */ + || signal (SIGTERM, SIG_DFL) != SIG_DFL + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_vfork_works=yes +else case e in @%:@( + e) ac_cv_func_vfork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +printf '%s\n' "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +printf '%s\n' "@%:@define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + + +# Rumor has it that strcasecmp lives in -lresolv on some odd systems. +# It doesn't hurt much to use our own if we can't find it so I don't +# make the effort here. +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcmpi" "ac_cv_func_strcmpi" +if test "x$ac_cv_func_strcmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncmpi" "ac_cv_func_strncmpi" +if test "x$ac_cv_func_strncmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp" +if test "x$ac_cv_func_stricmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRICMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp" +if test "x$ac_cv_func_strnicmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNICMP 1" >>confdefs.h + +fi + + +# strcoll() is used by the GNU glob library +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_strcoll_works=yes +else case e in @%:@( + e) ac_cv_func_strcoll_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf '%s\n' "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +printf '%s\n' "@%:@define HAVE_STRCOLL 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +printf %s "checking whether closedir returns void... " >&6; } +if test ${ac_cv_func_closedir_void+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <$ac_header_dirent> + +int +main (void) +{ + + return closedir(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_closedir_void=no +else case e in @%:@( + e) ac_cv_func_closedir_void=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +printf '%s\n' "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +printf '%s\n' "@%:@define CLOSEDIR_VOID 1" >>confdefs.h + +fi + + +# dir.c and our glob.c use dirent.d_type if available + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + + + +# See if the user wants to add (or not) GNU Guile support + +@%:@ Check whether --with-guile was given. +if test ${with_guile+y} +then : + withval=$with_guile; +fi + + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf '%s\n' "$PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf '%s\n' "$ac_pt_PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$with_guile" != xno +then : + guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 +printf %s "checking for GNU Guile... " >&6; } + for v in $guile_versions; do + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + guile_version=$v; have_guile=yes; break +fi + done + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 +printf '%s\n' "$guile_version" >&6; } + if test "$have_guile" = yes +then : + +pkg_failed=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for guile-$guile_version" >&5 +printf %s "checking for guile-$guile_version... " >&6; } + +if test -n "$GUILE_CFLAGS"; then + pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GUILE_LIBS"; then + pkg_cv_GUILE_LIBS="$GUILE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-$guile_version" 2>&1` + else + GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (guile-$guile_version) were not met: + +$GUILE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "A pkg-config implementation could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get a pkg-config implementation, see . +See 'config.log' for more details" "$LINENO" 5; } +else + GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS + GUILE_LIBS=$pkg_cv_GUILE_LIBS + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +fi + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */ +" +if test "x$ac_cv_header_libguile_h" = xyes +then : + +printf '%s\n' "@%:@define HAVE_GUILE 1" >>confdefs.h + +else case e in @%:@( + e) have_guile=no ;; +esac +fi + + if test "$have_guile" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we can link GNU Guile" >&5 +printf %s "checking whether we can link GNU Guile... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} + +int +main (void) +{ + + scm_with_guile (guile_init, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_guile=yes +else case e in @%:@( + e) have_guile=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $have_guile" >&5 +printf '%s\n' "$have_guile" >&6; } +fi + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + +fi + +fi + + if test "$have_guile" = "yes"; then + HAVE_GUILE_TRUE= + HAVE_GUILE_FALSE='#' +else + HAVE_GUILE_TRUE='#' + HAVE_GUILE_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +# Check out the wait reality. +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAIT3 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 +printf %s "checking for union wait... " >&6; } +if test ${make_cv_union_wait+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +union wait status; int pid; pid = wait (&status); +#ifdef WEXITSTATUS +/* Some POSIXoid systems have both the new-style macros and the old + union wait type, and they do not work together. If union wait + conflicts with WEXITSTATUS et al, we don't want to use it at all. */ + if (WEXITSTATUS (status) != 0) pid = -1; +#ifdef WTERMSIG + /* If we have WEXITSTATUS and WTERMSIG, just use them on ints. */ + -- blow chunks here -- +#endif +#endif +#ifdef HAVE_WAITPID + /* Make sure union wait works with waitpid. */ + pid = waitpid (-1, &status, 0); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + make_cv_union_wait=yes +else case e in @%:@( + e) make_cv_union_wait=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 +printf '%s\n' "$make_cv_union_wait" >&6; } +if test "$make_cv_union_wait" = yes +then : + +printf '%s\n' "@%:@define HAVE_UNION_WAIT 1" >>confdefs.h + + +fi + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +if test "$PATH_SEPARATOR" = ';' +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + +fi + +# See if the user wants to use pmake's "customs" distributed build capability + REMOTE=stub +use_customs=false + +@%:@ Check whether --with-customs was given. +if test ${with_customs+y} +then : + withval=$with_customs; case $withval in @%:@( + n|no) : + : ;; @%:@( + *) : + make_cppflags="$CPPFLAGS" + case $withval in @%:@( + y|ye|yes) : + : ;; @%:@( + *) : + CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs" + make_ldflags="$LDFLAGS -L$with_customs/lib" ;; +esac + +cf_test_netlibs=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 +printf %s "checking for network libraries... " >&6; } +if test ${cf_cv_netlibs+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: working..." >&5 +printf '%s\n' "working..." >&6; } +cf_cv_netlibs="" +cf_test_netlibs=yes + + for ac_func in gethostname +do : + ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ 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 case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 +printf %s "checking for gethostname in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_socket_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_socket_gethostname" >&6; } +if test "x$ac_cv_lib_socket_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_main=yes +else case e in @%:@( + e) ac_cv_lib_inet_main=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf '%s\n' "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : + cf_cv_netlibs="-linet $cf_cv_netlibs" +fi + +# +if test "$ac_cv_func_lsocket" != no ; then + + for ac_func in socket +do : + ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket" +if test "x$ac_cv_func_socket" = xyes +then : + printf '%s\n' "@%:@define HAVE_SOCKET 1" >>confdefs.h + +else case e in @%:@( + e) + +{ 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 case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else case e in @%:@( + e) ac_cv_lib_socket_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf '%s\n' "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 +printf %s "checking for socket in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_socket+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_socket=yes +else case e in @%:@( + e) ac_cv_lib_bsd_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 +printf '%s\n' "$ac_cv_lib_bsd_socket" >&6; } +if test "x$ac_cv_lib_bsd_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +fi +# + + for ac_func in gethostbyname +do : + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ 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 case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (void); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostbyname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + + +cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + +done + ;; +esac +fi + +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 + + ac_fn_c_check_header_compile "$LINENO" "customs.h" "ac_cv_header_customs_h" "$ac_includes_default" +if test "x$ac_cv_header_customs_h" = xyes +then : + use_customs=true + REMOTE=cstms + LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags" +else case e in @%:@( + e) with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes ;; +esac +fi + + ;; +esac + +fi + + +# Tell automake about this, so it can include the right .c files. + if test "$use_customs" = true; then + USE_CUSTOMS_TRUE= + USE_CUSTOMS_FALSE='#' +else + USE_CUSTOMS_TRUE='#' + USE_CUSTOMS_FALSE= +fi + + +# See if the user asked to handle case insensitive file systems. + +@%:@ Check whether --enable-case-insensitive-file-system was given. +if test ${enable_case_insensitive_file_system+y} +then : + enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes +then : + printf '%s\n' "@%:@define HAVE_CASE_INSENSITIVE_FS 1" >>confdefs.h + +fi +fi + + +# See if we can handle the job server feature, and if the user wants it. +@%:@ Check whether --enable-job-server was given. +if test ${enable_job_server+y} +then : + enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" +else case e in @%:@( + e) make_cv_job_server="yes" ;; +esac +fi + + +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : + has_wait_nohang=no +else case e in @%:@( + e) has_wait_nohang=yes ;; +esac +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 +printf %s "checking for SA_RESTART... " >&6; } +if test ${make_cv_sa_restart+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return SA_RESTART; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sa_restart=yes +else case e in @%:@( + e) make_cv_sa_restart=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 +printf '%s\n' "$make_cv_sa_restart" >&6; } + +if test "$make_cv_sa_restart" != no +then : + +printf '%s\n' "@%:@define HAVE_SA_RESTART 1" >>confdefs.h + + +fi + +# Only allow jobserver on systems that support it +case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in @%:@( + */no/*) : + make_cv_job_server=no ;; @%:@( + *) : + ;; +esac + +# Also supported on OS2 and MinGW +case $host_os in @%:@( + os2*|mingw*) : + make_cv_job_server=yes ;; @%:@( + *) : + ;; +esac + +# If we support it and the user didn't disable it, build with jobserver +case /$make_cv_job_server/$user_job_server/ in @%:@( + */no/*) : + : no jobserver ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_JOBSERVER 1" >>confdefs.h + + ;; +esac + +# If dl*() functions are supported we can enable the load operation +ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlopen" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLOPEN $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlsym" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLSYM $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlerror" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h + + +@%:@ Check whether --enable-load was given. +if test ${enable_load+y} +then : + enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" +else case e in @%:@( + e) make_cv_load="yes" ;; +esac +fi + + +case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + ;; +esac + +# We might need -ldl +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dl +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_dlopen=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : + +else case e in @%:@( + e) ac_cv_search_dlopen=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf '%s\n' "$ac_cv_search_dlopen" >&6; } +ac_res=$ac_cv_search_dlopen +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else case e in @%:@( + e) make_cv_load= ;; +esac +fi + + +fi + +case /$make_cv_load/$user_load/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_LOAD 1" >>confdefs.h + + ;; +esac + +# If we want load support, we might need to link with export-dynamic. +# See if we can figure it out. Unfortunately this is very difficult. +# For example passing -rdynamic to the SunPRO linker gives a warning +# but succeeds and creates a shared object, not an executable! +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 +printf %s "checking If the linker accepts -Wl,--export-dynamic... " >&6; } + old_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-Wl,--export-dynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 +printf %s "checking If the linker accepts -rdynamic... " >&6; } + LDFLAGS="$old_LDFLAGS -rdynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-rdynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$old_LDFLAGS" + +fi + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : + +printf '%s\n' "@%:@define MAKE_SYMLINKS 1" >>confdefs.h + + +fi + +# Use posix_spawn if we have support and the user didn't disable it + +@%:@ Check whether --enable-posix-spawn was given. +if test ${enable_posix_spawn+y} +then : + enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" +else case e in @%:@( + e) make_cv_posix_spawn="yes" ;; +esac +fi + + +case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + ;; +esac + +if test "$make_cv_posix_spawn" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 +printf %s "checking for posix_spawn that fails synchronously... " >&6; } +if test ${make_cv_synchronous_posix_spawn+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no + if test "$cross_compiling" = yes +then : + make_cv_synchronous_posix_spawn="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + extern char **environ; + int main () { + char path[] = "./xxx-non-existent"; + char *argv[] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_synchronous_posix_spawn=yes +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 +printf '%s\n' "$make_cv_synchronous_posix_spawn" >&6; } +fi + +case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define USE_POSIX_SPAWN 1" >>confdefs.h + + ;; +esac + +# Find the SCCS commands, so we can include them in our default rules. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 +printf %s "checking for location of SCCS get command... " >&6; } +if test ${make_cv_path_sccs_get+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + if test -f /usr/sccs/get +then : + make_cv_path_sccs_get=/usr/sccs/get +else case e in @%:@( + e) make_cv_path_sccs_get=get ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf '%s\n' "$make_cv_path_sccs_get" >&6; } + +printf '%s\n' "@%:@define SCCS_GET \"$make_cv_path_sccs_get\"" >>confdefs.h + + +ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later. +if (/usr/sccs/admin -n s.conftest || admin -n s.conftest) >/dev/null 2>&1 && + test -f s.conftest +then : + # We successfully created an SCCS file. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 +printf %s "checking if SCCS get command understands -G... " >&6; } +if test ${make_cv_sys_get_minus_G+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 && + test -f conftoast +then : + make_cv_sys_get_minus_G=yes +else case e in @%:@( + e) make_cv_sys_get_minus_G=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 +printf '%s\n' "$make_cv_sys_get_minus_G" >&6; } + if test "$make_cv_sys_get_minus_G" = yes +then : + +printf '%s\n' "@%:@define SCCS_GET_MINUS_G 1" >>confdefs.h + + +fi + +fi +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + + +printf '%s\n' "@%:@define MAKE_HOST \"$host\"" >>confdefs.h + +MAKE_HOST="$host" + + +w32_target_env=no + if false; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + +case $host in @%:@( + *-*-mingw32) : + if true; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + w32_target_env=yes + +printf '%s\n' "@%:@define WINDOWS32 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + ;; @%:@( + *) : + ;; +esac + + +printf '%s\n' "@%:@define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'" >>confdefs.h + + + +printf '%s\n' "@%:@define HAVE_DECL_GETLOADAVG $HAVE_DECL_GETLOADAVG" >>confdefs.h + + +# Remember that we ran configure to generate config.h + + +printf '%s\n' "@%:@define MK_CONFIGURE 1" >>confdefs.h + + +# Include the Maintainer's Makefile section, if it's here. + +MAINT_MAKEFILE=/dev/null +if test -r "$srcdir/maintMakefile" +then : + MAINT_MAKEFILE="$srcdir/maintMakefile" + +fi + + +# Allow building with dmalloc +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 +printf %s "checking if malloc debugging is wanted... " >&6; } + +@%:@ Check whether --with-dmalloc was given. +if test ${with_dmalloc+y} +then : + withval=$with_dmalloc; if test "$withval" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +printf '%s\n' "@%:@define WITH_DMALLOC 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi + + + +# Forcibly disable SET_MAKE. If it's set it breaks things like the test +# scripts, etc. +SET_MAKE= + +# Sanity check and inform the user of what we found + +if test "x$make_badcust" = xyes +then : + +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo + +fi + +case $with_customs in @%:@( + ""|n|no|y|ye|yes) : + : ;; @%:@( + *) : + if test -f "$with_customs/lib/libcustoms.a" +then : + : +else case e in @%:@( + e) echo + echo "WARNING: '$with_customs/lib' does not appear to contain the" + echo " Customs library. You must build and install Customs" + echo " before compiling GNU make." + echo + ;; +esac +fi ;; +esac + +if test "x$has_wait_nohang" = xno +then : + echo + echo "WARNING: Your system has neither waitpid() nor wait3()." + echo " Without one of these, signal handling is unreliable." + echo " You should be aware that running GNU make with -j" + echo " could result in erratic behavior." + echo + +fi + +if test "x$make_cv_job_server" = xno && test "x$user_job_server" = xyes +then : + echo + echo "WARNING: Make job server requires a POSIX-ish system that" + echo " supports the pipe(), sigaction(), and either" + echo " waitpid() or wait3() functions. Your system doesn't" + echo " appear to provide one or more of those." + echo " Disabling job server support." + echo + +fi + +if test "x$make_cv_load" = xno && test "x$user_load" = xyes +then : + echo + echo "WARNING: 'load' support requires a POSIX-ish system that" + echo " supports the dlopen(), dlsym(), and dlerror() functions." + echo " Your system doesn't appear to provide one or more of these." + echo " Disabling 'load' support." + echo + +fi + +if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes +then : + echo + echo "WARNING: posix_spawn() is not supported on this system." + echo + +fi + +# autoconf initializes $prefix to NONE. + if test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr; then + KNOWN_PREFIX_TRUE= + KNOWN_PREFIX_FALSE='#' +else + KNOWN_PREFIX_TRUE='#' + KNOWN_PREFIX_FALSE= +fi + + +# Specify what files are to be created. +ac_config_files="$ac_config_files build.cfg tests/config-flags.pm Makefile lib/Makefile doc/Makefile po/Makefile.in" + +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +ac_config_links="$ac_config_links build.sh:build.sh" + + +# OK, do it! + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +ac_cache_dump | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf '%s\n' "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf '%s\n' "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf '%s\n' "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf '%s\n' "done" >&6; } +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi + + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + gl_LIBOBJDEPS=$gl_libobjdeps + + + + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + gltests_LIBOBJDEPS=$gltests_libobjdeps + + + +if test -z "${HAVE_GUILE_TRUE}" && test -z "${HAVE_GUILE_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GUILE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_CUSTOMS_TRUE}" && test -z "${USE_CUSTOMS_FALSE}"; then + as_fn_error $? "conditional \"USE_CUSTOMS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${KNOWN_PREFIX_TRUE}" && test -z "${KNOWN_PREFIX_FALSE}"; then + as_fn_error $? "conditional \"KNOWN_PREFIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +case $CONFIG_STATUS in @%:@( + -*) : + CONFIG_STATUS=./$CONFIG_STATUS ;; @%:@( + */*) : + ;; @%:@( + *) : + CONFIG_STATUS=./$CONFIG_STATUS ;; +esac + +ac_write_fail=0 +ac_clean_CONFIG_STATUS='"$CONFIG_STATUS"' +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf '%s\n' "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >"$CONFIG_STATUS" <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>"$CONFIG_STATUS" <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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 + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ------------------------------------- ## +## Main body of "$CONFIG_STATUS" script. ## +## ------------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x "$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Make home page: . +General help using GNU software: ." + +_ACEOF +ac_cs_config=`printf '%s\n' "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +GNU Make config.status 4.4 +configured by $0, generated by GNU Autoconf 2.73, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2026 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || { + awk '' >"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf '%s\n' "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf '%s\n' "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf '%s\n' "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf '%s\n' "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + printf '%s\n' "$ac_log" +} >&5 + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;; + "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "build.sh") CONFIG_LINKS="$CONFIG_LINKS build.sh:build.sh" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + +if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then + ac_cs_awk_getline=: + ac_cs_awk_pipe_init= + ac_cs_awk_read_file=' + while ((getline aline < (F[key])) > 0) + print(aline) + close(F[key])' + ac_cs_awk_pipe_fini= +else + ac_cs_awk_getline=false + ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" + ac_cs_awk_read_file=' + print "|#_!!_#|" + print "cat " F[key] " &&" + '$ac_cs_awk_pipe_init + # The final ':' finishes the AND list. + ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' +fi +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + +# Create commands to substitute file output variables. +{ + echo 'cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1' && + printf '%s\n' 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && + printf '%s\n' "$ac_subst_files" | sed 's/.*/F@<:@"&"@:>@="$&"/' && + echo "_ACAWK" && + echo "_ACEOF" +} >conf$$files.sh && +. ./conf$$files.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +rm -f conf$$files.sh + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | sed -n '$='` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | sed -n '$='` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >"$CONFIG_STATUS" || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + \$ac_cs_awk_pipe_init +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + if (nfields == 3 && !substed) { + key = field[2] + if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { + \$ac_cs_awk_read_file + next + } + } + print line +} +\$ac_cs_awk_pipe_fini +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >"$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + suffix = P[macro] D[macro] + while (suffix ~ /[\t ]$/) { + suffix = substr(suffix, 1, length(suffix) - 1) + } + # Preserve the white space surrounding the "#". + print prefix "define", macro suffix + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf '%s\n' "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf '%s\n' "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf '%s\n' "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf '%s\n' "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | +if $ac_cs_awk_getline; then + $AWK -f "$ac_tmp/subs.awk" +else + $AWK -f "$ac_tmp/subs.awk" | $SHELL +fi \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf '%s\n' "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf '%s\n' "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf '%s\n' "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +printf '%s\n' "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf '%s\n' "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in @%:@( + *\'*) : + eval set x "$CONFIG_FILES" ;; @%:@( + *) : + set x $CONFIG_FILES ;; @%:@( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf '%s\n' "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See 'config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_CONFIG_STATUS= + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + case $CONFIG_STATUS in @%:@( + -*) : + ac_no_opts=-- ;; @%:@( + *) : + ac_no_opts= ;; +esac + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $ac_no_opts "$CONFIG_STATUS" $ac_config_status_args || + ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/requests b/local/recipes/dev/gnu-make/source/autom4te.cache/requests new file mode 100644 index 0000000000..c9195a2c20 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/requests @@ -0,0 +1,604 @@ +# This file was generated by Autom4te 2.73. +# It contains the lists of macros which have been traced. +# It can be safely removed. + +@request = ( + bless( [ + '0', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + '/usr/share/aclocal-1.18/internal/ac-config-macro-dirs.m4', + '/usr/share/aclocal/lt~obsolete.m4', + '/usr/share/aclocal/pkg.m4', + '/usr/share/aclocal-1.18/amversion.m4', + '/usr/share/aclocal-1.18/auxdir.m4', + '/usr/share/aclocal-1.18/cond-if.m4', + '/usr/share/aclocal-1.18/cond.m4', + '/usr/share/aclocal-1.18/depend.m4', + '/usr/share/aclocal-1.18/depout.m4', + '/usr/share/aclocal-1.18/dmalloc.m4', + '/usr/share/aclocal-1.18/init.m4', + '/usr/share/aclocal-1.18/install-sh.m4', + '/usr/share/aclocal-1.18/lead-dot.m4', + '/usr/share/aclocal-1.18/make.m4', + '/usr/share/aclocal-1.18/missing.m4', + '/usr/share/aclocal-1.18/options.m4', + '/usr/share/aclocal-1.18/prog-cc-c-o.m4', + '/usr/share/aclocal-1.18/rmf.m4', + '/usr/share/aclocal-1.18/runlog.m4', + '/usr/share/aclocal-1.18/sanity.m4', + '/usr/share/aclocal-1.18/silent.m4', + '/usr/share/aclocal-1.18/strip.m4', + '/usr/share/aclocal-1.18/substnot.m4', + '/usr/share/aclocal-1.18/tar.m4', + '/usr/share/aclocal-1.18/xargsn.m4', + 'm4/00gnulib.m4', + 'm4/acinclude.m4', + 'm4/alloca.m4', + 'm4/asm-underscore.m4', + 'm4/codeset.m4', + 'm4/dospaths.m4', + 'm4/eaccess.m4', + 'm4/extensions.m4', + 'm4/extern-inline.m4', + 'm4/fcntl-o.m4', + 'm4/findprog-in.m4', + 'm4/getloadavg.m4', + 'm4/gettext.m4', + 'm4/glibc2.m4', + 'm4/glibc21.m4', + 'm4/gnulib-common.m4', + 'm4/gnulib-comp.m4', + 'm4/host-cpu-c-abi.m4', + 'm4/iconv.m4', + 'm4/intdiv0.m4', + 'm4/intl.m4', + 'm4/intlmacosx.m4', + 'm4/intmax.m4', + 'm4/inttypes-pri.m4', + 'm4/inttypes_h.m4', + 'm4/largefile.m4', + 'm4/lcmessage.m4', + 'm4/lib-ld.m4', + 'm4/lib-link.m4', + 'm4/lib-prefix.m4', + 'm4/lock.m4', + 'm4/longlong.m4', + 'm4/nls.m4', + 'm4/po.m4', + 'm4/printf-posix.m4', + 'm4/progtest.m4', + 'm4/sig_atomic_t.m4', + 'm4/size_max.m4', + 'm4/stdbool.m4', + 'm4/stdint_h.m4', + 'm4/threadlib.m4', + 'm4/uintmax_t.m4', + 'm4/visibility.m4', + 'm4/warn-on-use.m4', + 'm4/wchar_t.m4', + 'm4/wint_t.m4', + 'm4/xsize.m4', + 'm4/year2038.m4', + 'm4/zzgnulib.m4', + 'configure.ac' + ], + { + 'AC_' => 1, + 'AC_CHECK_HEADER_STDBOOL' => 1, + 'AC_CHECK_INCLUDES_DEFAULT' => 1, + 'AC_COMPUTE_INT' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_C_RESTRICT' => 1, + 'AC_DEFUN' => 1, + 'AC_DEFUN_ONCE' => 1, + 'AC_DEPLIBS_CHECK_METHOD' => 1, + 'AC_DISABLE_FAST_INSTALL' => 1, + 'AC_LIBTOOL_CONFIG' => 1, + 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1, + 'AC_LIBTOOL_LANG_C_CONFIG' => 1, + 'AC_LIBTOOL_LANG_F77_CONFIG' => 1, + 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1, + 'AC_LIBTOOL_LANG_RC_CONFIG' => 1, + 'AC_LIBTOOL_LINKER_OPTION' => 1, + 'AC_LIBTOOL_OBJDIR' => 1, + 'AC_LIBTOOL_POSTDEP_PREDEP' => 1, + 'AC_LIBTOOL_PROG_CC_C_O' => 1, + 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1, + 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1, + 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1, + 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1, + 'AC_LIBTOOL_SETUP' => 1, + 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1, + 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1, + 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1, + 'AC_LIBTOOL_SYS_LIB_STRIP' => 1, + 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1, + 'AC_LIB_APPENDTOVAR' => 1, + 'AC_LIB_ARG_WITH' => 1, + 'AC_LIB_FROMPACKAGE' => 1, + 'AC_LIB_HAVE_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS_BODY' => 1, + 'AC_LIB_LINKFLAGS_FROM_LIBS' => 1, + 'AC_LIB_PREFIX' => 1, + 'AC_LIB_PREPARE_MULTILIB' => 1, + 'AC_LIB_PREPARE_PREFIX' => 1, + 'AC_LIB_PROG_LD' => 1, + 'AC_LIB_PROG_LD_GNU' => 1, + 'AC_LIB_RPATH' => 1, + 'AC_LIB_WITH_FINAL_PREFIX' => 1, + 'AC_LTDL_ENABLE_INSTALL' => 1, + 'AC_LTDL_OBJDIR' => 1, + 'AC_LTDL_PREOPEN' => 1, + 'AC_PATH_MAGIC' => 1, + 'AC_PROG_EGREP' => 1, + 'AC_PROG_LD_GNU' => 1, + 'AC_PROG_LD_RELOAD_FLAG' => 1, + 'AC_STRUCT_ST_MTIM_NSEC' => 1, + 'AC_SYS_LARGEFILE' => 1, + 'AC_TYPE_LONG_LONG_INT' => 1, + 'AC_TYPE_UNSIGNED_LONG_LONG_INT' => 1, + 'AC_USE_SYSTEM_EXTENSIONS' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AM_AUX_DIR_EXPAND' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_COND_IF' => 1, + 'AM_DEP_TRACK' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_GNU_GETTEXT_NEED' => 1, + 'AM_GNU_GETTEXT_VERSION' => 1, + 'AM_ICONV' => 1, + 'AM_ICONV_LINK' => 1, + 'AM_ICONV_LINKFLAGS_BODY' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AM_INTL_SUBDIR' => 1, + 'AM_LANGINFO_CODESET' => 1, + 'AM_MAKE_INCLUDE' => 1, + 'AM_MISSING_HAS_RUN' => 1, + 'AM_MISSING_PROG' => 1, + 'AM_NLS' => 1, + 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + 'AM_PATH_PROG_WITH_TEST' => 1, + 'AM_POSTPROCESS_PO_MAKEFILE' => 1, + 'AM_PO_SUBDIRS' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_INSTALL_SH' => 1, + 'AM_PROG_INSTALL_STRIP' => 1, + 'AM_RUN_LOG' => 1, + 'AM_SANITY_CHECK' => 1, + 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, + 'AM_SET_DEPDIR' => 1, + 'AM_SET_LEADING_DOT' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_SUBST_NOTMAKE' => 1, + 'AM_WITH_DMALLOC' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'AM_XGETTEXT_OPTION_INIT' => 1, + 'AU_DEFUN' => 1, + 'CF_NETLIBS' => 1, + 'CF_RECHECK_FUNC' => 1, + 'CF_UPPER' => 1, + 'GL_MDA_DEFINES' => 1, + 'LTOBSOLETE_VERSION' => 1, + 'LT_AC_PROG_EGREP' => 1, + 'LT_AC_PROG_SED' => 1, + 'PKG_CHECK_EXISTS' => 1, + 'PKG_CHECK_MODULES' => 1, + 'PKG_CHECK_MODULES_STATIC' => 1, + 'PKG_CHECK_VAR' => 1, + 'PKG_HAVE_DEFINE_WITH_MODULES' => 1, + 'PKG_HAVE_WITH_MODULES' => 1, + 'PKG_INSTALLDIR' => 1, + 'PKG_NOARCH_INSTALLDIR' => 1, + 'PKG_PROG_PKG_CONFIG' => 1, + 'PKG_WITH_MODULES' => 1, + '_AC_AM_CONFIG_HEADER_HOOK' => 1, + '_AC_PROG_LIBTOOL' => 1, + '_AC_TYPE_LONG_LONG_SNIPPET' => 1, + '_AM_AUTOCONF_VERSION' => 1, + '_AM_CONFIG_MACRO_DIRS' => 1, + '_AM_DEPENDENCIES' => 1, + '_AM_FILESYSTEM_TIMESTAMP_RESOLUTION' => 1, + '_AM_IF_OPTION' => 1, + '_AM_MANGLE_OPTION' => 1, + '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + '_AM_PROG_CC_C_O' => 1, + '_AM_PROG_RM_F' => 1, + '_AM_PROG_TAR' => 1, + '_AM_PROG_XARGS_N' => 1, + '_AM_SET_OPTION' => 1, + '_AM_SET_OPTIONS' => 1, + '_AM_SILENT_RULES' => 1, + '_AM_SLEEP_FRACTIONAL_SECONDS' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_GL_MDA_DEFINES' => 1, + '_LT_AC_CHECK_DLFCN' => 1, + '_LT_AC_FILE_LTDLL_C' => 1, + '_LT_AC_LANG_CXX' => 1, + '_LT_AC_LANG_CXX_CONFIG' => 1, + '_LT_AC_LANG_C_CONFIG' => 1, + '_LT_AC_LANG_F77' => 1, + '_LT_AC_LANG_F77_CONFIG' => 1, + '_LT_AC_LANG_GCJ' => 1, + '_LT_AC_LANG_GCJ_CONFIG' => 1, + '_LT_AC_LANG_RC_CONFIG' => 1, + '_LT_AC_LOCK' => 1, + '_LT_AC_PROG_CXXCPP' => 1, + '_LT_AC_PROG_ECHO_BACKSLASH' => 1, + '_LT_AC_SHELL_INIT' => 1, + '_LT_AC_SYS_COMPILER' => 1, + '_LT_AC_SYS_LIBPATH_AIX' => 1, + '_LT_AC_TAGCONFIG' => 1, + '_LT_AC_TAGVAR' => 1, + '_LT_AC_TRY_DLOPEN_SELF' => 1, + '_LT_CC_BASENAME' => 1, + '_LT_COMPILER_BOILERPLATE' => 1, + '_LT_LINKER_BOILERPLATE' => 1, + '_LT_PREPARE_SED_QUOTE_VARS' => 1, + '_LT_PROG_CXX' => 1, + '_LT_PROG_ECHO_BACKSLASH' => 1, + '_LT_PROG_F77' => 1, + '_LT_PROG_FC' => 1, + '_LT_PROG_LTMAIN' => 1, + '_LT_REQUIRED_DARWIN_CHECKS' => 1, + '_PKG_SHORT_ERRORS_SUPPORTED' => 1, + '_m4_warn' => 1, + 'gl_00GNULIB' => 1, + 'gl_AC_HEADER_INTTYPES_H' => 1, + 'gl_AC_HEADER_STDINT_H' => 1, + 'gl_AC_TYPE_UINTMAX_T' => 1, + 'gl_ASM_SYMBOL_PREFIX' => 1, + 'gl_ASSERT_NO_GNULIB_POSIXCHECK' => 1, + 'gl_ASSERT_NO_GNULIB_TESTS' => 1, + 'gl_BIGENDIAN' => 1, + 'gl_CACHE_VAL_SILENT' => 1, + 'gl_CC_ALLOW_WARNINGS' => 1, + 'gl_CC_GNULIB_WARNINGS' => 1, + 'gl_COMMON' => 1, + 'gl_COMMON_BODY' => 1, + 'gl_COMPILER_CLANG' => 1, + 'gl_COMPILER_PREPARE_CHECK_DECL' => 1, + 'gl_CONDITIONAL' => 1, + 'gl_CONDITIONAL_HEADER' => 1, + 'gl_CXX_ALLOW_WARNINGS' => 1, + 'gl_C_ASM' => 1, + 'gl_DISABLE_THREADS' => 1, + 'gl_EARLY' => 1, + 'gl_EXTERN_INLINE' => 1, + 'gl_FCNTL_O_FLAGS' => 1, + 'gl_FEATURES_H' => 1, + 'gl_FILE_LIST' => 1, + 'gl_FINDPROG_IN' => 1, + 'gl_FUNC_ALLOCA' => 1, + 'gl_FUNC_EACCESS' => 1, + 'gl_GETLOADAVG' => 1, + 'gl_GLIBC21' => 1, + 'gl_HOST_CPU_C_ABI' => 1, + 'gl_HOST_CPU_C_ABI_32BIT' => 1, + 'gl_INIT' => 1, + 'gl_LARGEFILE' => 1, + 'gl_LIBOBJ' => 1, + 'gl_LIBSOURCES' => 1, + 'gl_LOCK' => 1, + 'gl_MODULE_INDICATOR' => 1, + 'gl_MODULE_INDICATOR_FOR_TESTS' => 1, + 'gl_MODULE_INDICATOR_INIT_VARIABLE' => 1, + 'gl_MODULE_INDICATOR_SET_VARIABLE' => 1, + 'gl_MODULE_INDICATOR_SET_VARIABLE_AUX' => 1, + 'gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR' => 1, + 'gl_PREREQ_ALLOCA' => 1, + 'gl_PREREQ_GETLOADAVG' => 1, + 'gl_PREREQ_LOCK' => 1, + 'gl_PROG_AR_RANLIB' => 1, + 'gl_PROG_CC_C99' => 1, + 'gl_REPLACE_FUNCS' => 1, + 'gl_SET_LARGEFILE_SOURCE' => 1, + 'gl_SILENT' => 1, + 'gl_SIZE_MAX' => 1, + 'gl_STDBOOL_H' => 1, + 'gl_STDLIB_H' => 1, + 'gl_STDLIB_H_DEFAULTS' => 1, + 'gl_STDLIB_H_REQUIRE_DEFAULTS' => 1, + 'gl_STDLIB_MODULE_INDICATOR' => 1, + 'gl_THREADLIB' => 1, + 'gl_THREADLIB_BODY' => 1, + 'gl_THREADLIB_EARLY' => 1, + 'gl_THREADLIB_EARLY_BODY' => 1, + 'gl_USE_SYSTEM_EXTENSIONS' => 1, + 'gl_VISIBILITY' => 1, + 'gl_W' => 1, + 'gl_WARN_ON_USE_PREPARE' => 1, + 'gl_XSIZE' => 1, + 'gl_YEAR2038' => 1, + 'gl_YEAR2038_BODY' => 1, + 'gl_YEAR2038_EARLY' => 1, + 'gl_YEAR2038_TEST_INCLUDES' => 1, + 'gl_ZZGNULIB' => 1, + 'gltests_LIBOBJ' => 1, + 'gltests_LIBSOURCES' => 1, + 'gltests_REPLACE_FUNCS' => 1, + 'gt_GLIBC2' => 1, + 'gt_GL_ATTRIBUTE' => 1, + 'gt_INTDIV0' => 1, + 'gt_INTL_MACOSX' => 1, + 'gt_INTL_SUBDIR_CORE' => 1, + 'gt_INTTYPES_PRI' => 1, + 'gt_LC_MESSAGES' => 1, + 'gt_PRINTF_POSIX' => 1, + 'gt_TYPE_INTMAX_T' => 1, + 'gt_TYPE_SIG_ATOMIC_T' => 1, + 'gt_TYPE_WCHAR_T' => 1, + 'gt_TYPE_WINT_T' => 1, + 'include' => 1, + 'm4_include' => 1, + 'm4_pattern_allow' => 1, + 'm4_pattern_forbid' => 1, + 'pds_AC_DOS_PATHS' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '1', + 1, + [ + '/usr/share/autoconf', + '/share/aclocal' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + 'configure.ac' + ], + { + 'AC_CANONICAL_BUILD' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AC_FC_SRCEXT' => 1, + 'AC_INIT' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_LIB_HAVE_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS_FROM_LIBS' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_SUBST' => 1, + 'AC_SUBST_TRACE' => 1, + 'AH_OUTPUT' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_GNU_GETTEXT_REQUIRE_VERSION' => 1, + 'AM_GNU_GETTEXT_VERSION' => 1, + 'AM_ICONV' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_NLS' => 1, + 'AM_PATH_GUILE' => 1, + 'AM_POT_TOOLS' => 1, + 'AM_PROG_AR' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AM_PROG_MOC' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'GTK_DOC_CHECK' => 1, + 'GUILE_FLAGS' => 1, + 'IT_PROG_INTLTOOL' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'LT_INIT' => 1, + 'LT_SUPPORTED_TAG' => 1, + '_AM_COND_ELSE' => 1, + '_AM_COND_ENDIF' => 1, + '_AM_COND_IF' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_LT_AC_TAGCONFIG' => 1, + '_m4_warn' => 1, + 'include' => 1, + 'm4_include' => 1, + 'm4_pattern_allow' => 1, + 'm4_pattern_forbid' => 1, + 'm4_sinclude' => 1, + 'sinclude' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '2', + 1, + [ + '/usr/share/autoconf', + '/share/aclocal' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + '/usr/share/autoconf/autoconf/trailer.m4', + 'configure.ac' + ], + { + 'AC_CANONICAL_BUILD' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AC_FC_SRCEXT' => 1, + 'AC_INIT' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_LIB_HAVE_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS_FROM_LIBS' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_SUBST' => 1, + 'AC_SUBST_TRACE' => 1, + 'AH_OUTPUT' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_GNU_GETTEXT_REQUIRE_VERSION' => 1, + 'AM_GNU_GETTEXT_VERSION' => 1, + 'AM_ICONV' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_NLS' => 1, + 'AM_PATH_GUILE' => 1, + 'AM_POT_TOOLS' => 1, + 'AM_PROG_AR' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AM_PROG_MOC' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'GTK_DOC_CHECK' => 1, + 'GUILE_FLAGS' => 1, + 'IT_PROG_INTLTOOL' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'LT_INIT' => 1, + 'LT_SUPPORTED_TAG' => 1, + '_AM_COND_ELSE' => 1, + '_AM_COND_ENDIF' => 1, + '_AM_COND_IF' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_LT_AC_TAGCONFIG' => 1, + '_m4_warn' => 1, + 'include' => 1, + 'm4_include' => 1, + 'm4_pattern_allow' => 1, + 'm4_pattern_forbid' => 1, + 'm4_sinclude' => 1, + 'sinclude' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '3', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + 'configure.ac' + ], + { + 'AC_CANONICAL_BUILD' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AC_FC_SRCEXT' => 1, + 'AC_INIT' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_LIB_HAVE_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS_FROM_LIBS' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_SUBST' => 1, + 'AC_SUBST_TRACE' => 1, + 'AH_OUTPUT' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_GNU_GETTEXT_REQUIRE_VERSION' => 1, + 'AM_GNU_GETTEXT_VERSION' => 1, + 'AM_ICONV' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_NLS' => 1, + 'AM_PATH_GUILE' => 1, + 'AM_POT_TOOLS' => 1, + 'AM_PROG_AR' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AM_PROG_MOC' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'GTK_DOC_CHECK' => 1, + 'GUILE_FLAGS' => 1, + 'IT_PROG_INTLTOOL' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'LT_INIT' => 1, + 'LT_SUPPORTED_TAG' => 1, + '_AM_COND_ELSE' => 1, + '_AM_COND_ENDIF' => 1, + '_AM_COND_IF' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_LT_AC_TAGCONFIG' => 1, + '_m4_warn' => 1, + 'include' => 1, + 'm4_include' => 1, + 'm4_pattern_allow' => 1, + 'm4_pattern_forbid' => 1, + 'm4_sinclude' => 1, + 'sinclude' => 1 + } + ], 'Autom4te::Request' ) + ); + diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/traces.0 b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.0 new file mode 100644 index 0000000000..5d03f0239e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.0 @@ -0,0 +1,7739 @@ +m4trace:/usr/share/aclocal/lt~obsolete.m4:37: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:39: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SHELL_INIT]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:43: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_PROG_LTMAIN]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:45: -1- AC_DEFUN([_LT_AC_TAGVAR]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:47: -1- AC_DEFUN([AC_LTDL_PREOPEN]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_SYS_COMPILER]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:49: -1- AC_DEFUN([_LT_AC_LOCK]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:50: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:51: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LTDL_OBJDIR]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:57: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PATH_MAGIC]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_GNU]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:60: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:61: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:66: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:67: -1- AC_DEFUN([LT_AC_PROG_EGREP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:68: -1- AC_DEFUN([LT_AC_PROG_SED]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:69: -1- AC_DEFUN([_LT_CC_BASENAME]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:70: -1- AC_DEFUN([_LT_COMPILER_BOILERPLATE]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:71: -1- AC_DEFUN([_LT_LINKER_BOILERPLATE]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:72: -1- AC_DEFUN([_AC_PROG_LIBTOOL]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:73: -1- AC_DEFUN([AC_LIBTOOL_SETUP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:74: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:75: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:76: -1- AC_DEFUN([_LT_AC_TAGCONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:77: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_CXX]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_F77]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:80: -1- AC_DEFUN([_LT_AC_LANG_GCJ]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:81: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:82: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:83: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:84: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:85: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:86: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:87: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:88: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:89: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:90: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:91: -1- AC_DEFUN([AC_LIBTOOL_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:92: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:93: -1- AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:94: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:95: -1- AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:96: -1- AC_DEFUN([_LT_PROG_ECHO_BACKSLASH]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:97: -1- AC_DEFUN([_LT_PROG_F77]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:98: -1- AC_DEFUN([_LT_PROG_FC]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:99: -1- AC_DEFUN([_LT_PROG_CXX]) +m4trace:/usr/share/aclocal/pkg.m4:56: -1- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +]) +m4trace:/usr/share/aclocal/pkg.m4:90: -1- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) +m4trace:/usr/share/aclocal/pkg.m4:119: -1- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +]) +m4trace:/usr/share/aclocal/pkg.m4:137: -1- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $2]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[A pkg-config implementation could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get a pkg-config implementation, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +]) +m4trace:/usr/share/aclocal/pkg.m4:206: -1- AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +]) +m4trace:/usr/share/aclocal/pkg.m4:224: -1- AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) +m4trace:/usr/share/aclocal/pkg.m4:246: -1- AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) +m4trace:/usr/share/aclocal/pkg.m4:265: -1- AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +]) +m4trace:/usr/share/aclocal/pkg.m4:283: -1- AC_DEFUN([PKG_WITH_MODULES], [ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],[$3],[$4])], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +]) +m4trace:/usr/share/aclocal/pkg.m4:320: -1- AC_DEFUN([PKG_HAVE_WITH_MODULES], [ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +]) +m4trace:/usr/share/aclocal/pkg.m4:335: -1- AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], [ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +]) +m4trace:/usr/share/aclocal-1.18/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.18' +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.18.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) +m4trace:/usr/share/aclocal-1.18/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.18.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +m4trace:/usr/share/aclocal-1.18/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) +m4trace:/usr/share/aclocal-1.18/cond-if.m4:23: -1- 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 +]) +m4trace:/usr/share/aclocal-1.18/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) +m4trace:/usr/share/aclocal-1.18/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) +m4trace:/usr/share/aclocal-1.18/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) +m4trace:/usr/share/aclocal-1.18/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) +m4trace:/usr/share/aclocal-1.18/depout.m4:11: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +]) +m4trace:/usr/share/aclocal-1.18/depout.m4:64: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) +m4trace:/usr/share/aclocal-1.18/dmalloc.m4:12: -1- AC_DEFUN([AM_WITH_DMALLOC], [AC_MSG_CHECKING([if malloc debugging is wanted]) +AC_ARG_WITH([dmalloc], +[AS_HELP_STRING([--with-dmalloc], + [use dmalloc, as in http://www.dmalloc.com])], +[if test "$withval" = yes; then + AC_MSG_RESULT([yes]) + AC_DEFINE([WITH_DMALLOC], [1], + [Define if using the dmalloc debugging malloc package]) + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + AC_MSG_RESULT([no]) +fi], [AC_MSG_RESULT([no])]) +]) +m4trace:/usr/share/aclocal-1.18/init.m4:29: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl +m4_ifdef([_$0_ALREADY_INIT], + [m4_fatal([$0 expanded multiple times +]m4_defn([_$0_ALREADY_INIT]))], + [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])], + [_AM_PROG_TAR([ustar])])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + +AC_REQUIRE([_AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +AC_REQUIRE([_AM_PROG_RM_F]) +AC_REQUIRE([_AM_PROG_XARGS_N]) + +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) +m4trace:/usr/share/aclocal-1.18/init.m4:167: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) +m4trace:/usr/share/aclocal-1.18/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) +m4trace:/usr/share/aclocal-1.18/lead-dot.m4:10: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) +m4trace:/usr/share/aclocal-1.18/make.m4:13: -1- AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +m4trace:/usr/share/aclocal-1.18/make.m4:42: -1- m4_pattern_allow([^am__quote$]) +m4trace:/usr/share/aclocal-1.18/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) +m4trace:/usr/share/aclocal-1.18/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) +m4trace:/usr/share/aclocal-1.18/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) +m4trace:/usr/share/aclocal-1.18/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) +m4trace:/usr/share/aclocal-1.18/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +m4trace:/usr/share/aclocal-1.18/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +m4trace:/usr/share/aclocal-1.18/prog-cc-c-o.m4:12: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) +m4trace:/usr/share/aclocal-1.18/prog-cc-c-o.m4:50: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) +m4trace:/usr/share/aclocal-1.18/rmf.m4:12: -1- AC_DEFUN([_AM_PROG_RM_F], [am__rm_f_notfound= +AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""']) +AC_SUBST(am__rm_f_notfound) +]) +m4trace:/usr/share/aclocal-1.18/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) +m4trace:/usr/share/aclocal-1.18/sanity.m4:11: -1- AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl +AC_CACHE_CHECK([whether sleep supports fractional seconds], + am_cv_sleep_fractional_seconds, [dnl +AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes], + [am_cv_sleep_fractional_seconds=no]) +])]) +m4trace:/usr/share/aclocal-1.18/sanity.m4:28: -1- AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl +AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS]) +AC_CACHE_CHECK([filesystem timestamp resolution], + am_cv_filesystem_timestamp_resolution, [dnl +# Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `[ls -t conftest.ts[12]]` && + { + test "$[]*" != "X conftest.ts1 conftest.ts2" || + test "$[]*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + _AS_ECHO_UNQUOTED( + ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""], + [AS_MESSAGE_LOG_FD]) + AC_MSG_FAILURE([ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment.]) +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$[]2" = conftest.ts3 && + test "$[]3" = conftest.ts2 && + test "$[]4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) +])]) +m4trace:/usr/share/aclocal-1.18/sanity.m4:161: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION]) +# This check should not be cached, as it may vary across builds of +# different projects. +AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_RESULT([no]) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_RESULT([no]) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[]*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$[]2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +AC_MSG_RESULT([$am_build_env_is_sane]) +if test "$am_build_env_is_sane" = no; then + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl + ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! +]) +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) +m4trace:/usr/share/aclocal-1.18/silent.m4:11: -1- AC_DEFUN([_AM_SILENT_RULES], [AM_DEFAULT_VERBOSITY=1 +AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls +dnl to AM_SILENT_RULES to change the default value. +AC_CONFIG_COMMANDS_PRE([dnl +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +])dnl +]) +m4trace:/usr/share/aclocal-1.18/silent.m4:69: -1- AC_DEFUN([AM_SILENT_RULES], [AC_REQUIRE([_AM_SILENT_RULES]) +AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])m4_newline +dnl We intentionally force a newline after the assignment, since a) nothing +dnl good can come of more text following, and b) that was the behavior +dnl before 1.17. See https://bugs.gnu.org/72267. +]) +m4trace:/usr/share/aclocal-1.18/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) +m4trace:/usr/share/aclocal-1.18/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) +m4trace:/usr/share/aclocal-1.18/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) +m4trace:/usr/share/aclocal-1.18/tar.m4:23: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test x$am_uid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work]) + elif test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test x$gm_gid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work]) + elif test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) +m4trace:/usr/share/aclocal-1.18/xargsn.m4:12: -1- AC_DEFUN([_AM_PROG_XARGS_N], [AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl +AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])]) +AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl + am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }' +])dnl +AC_SUBST(am__xargs_n) +]) +m4trace:m4/00gnulib.m4:24: -1- 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]) + ]) +]) +m4trace:m4/00gnulib.m4:43: -1- 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 +]) +m4trace:m4/00gnulib.m4:85: -1- AC_DEFUN([gl_00GNULIB]) +m4trace:m4/acinclude.m4:38: -1- AC_DEFUN([CF_NETLIBS], [ +cf_test_netlibs=no +AC_MSG_CHECKING(for network libraries) +AC_CACHE_VAL(cf_cv_netlibs,[ +AC_MSG_RESULT(working...) +cf_cv_netlibs="" +cf_test_netlibs=yes +AC_CHECK_FUNCS(gethostname,,[ + CF_RECHECK_FUNC(gethostname,nsl,cf_cv_netlibs,[ + CF_RECHECK_FUNC(gethostname,socket,cf_cv_netlibs)])]) +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +AC_CHECK_LIB(inet,main,cf_cv_netlibs="-linet $cf_cv_netlibs") +# +if test "$ac_cv_func_lsocket" != no ; then +AC_CHECK_FUNCS(socket,,[ + CF_RECHECK_FUNC(socket,socket,cf_cv_netlibs,[ + CF_RECHECK_FUNC(socket,bsd,cf_cv_netlibs)])]) +fi +# +AC_CHECK_FUNCS(gethostbyname,,[ + CF_RECHECK_FUNC(gethostbyname,nsl,cf_cv_netlibs)]) +]) +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&AC_FD_MSG +]) +m4trace:m4/acinclude.m4:78: -1- AC_DEFUN([CF_RECHECK_FUNC], [ +AC_CHECK_LIB($2,$1,[ + CF_UPPER(cf_tr_func,$1) + AC_DEFINE_UNQUOTED(HAVE_$cf_tr_func,1,[Define if you have function $1]) + ac_cv_func_$1=yes + $3="-l$2 [$]$3"],[ + ac_cv_func_$1=unknown + unset ac_cv_func_$1 2>/dev/null + $4], + [[$]$3]) +]) +m4trace:m4/acinclude.m4:92: -1- AC_DEFUN([CF_UPPER], [ +changequote(,)dnl +$1=`echo $2 | tr '[a-z]' '[A-Z]'` +changequote([,])dnl +]) +m4trace:m4/acinclude.m4:105: -1- AC_DEFUN([AC_STRUCT_ST_MTIM_NSEC], [AC_CACHE_CHECK([for nanoseconds field of struct stat], + ac_cv_struct_st_mtim_nsec, + [ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # st_mtim.tv_nsec -- the usual case + # st_mtim._tv_nsec -- Solaris 2.6, if + # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 + # && !defined __EXTENSIONS__) + # st_mtim.st__tim.tv_nsec -- UnixWare 2.1.2 + # st_mtime_n -- AIX 5.2 and above + # st_mtimespec.tv_nsec -- Darwin (Mac OSX) + for ac_val in st_mtim.tv_nsec st_mtim._tv_nsec st_mtim.st__tim.tv_nsec st_mtime_n st_mtimespec.tv_nsec; do + CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" + AC_TRY_COMPILE([#include +#include + ], [struct stat s; s.ST_MTIM_NSEC;], + [ac_cv_struct_st_mtim_nsec=$ac_val; break]) + done + CPPFLAGS="$ac_save_CPPFLAGS" + ]) + + if test $ac_cv_struct_st_mtim_nsec != no; then + AC_DEFINE_UNQUOTED([ST_MTIM_NSEC], [$ac_cv_struct_st_mtim_nsec], + [Define if struct stat contains a nanoseconds field]) + fi + +]) +m4trace:m4/alloca.m4:8: -1- AC_DEFUN([gl_FUNC_ALLOCA], [ + AC_REQUIRE([AC_FUNC_ALLOCA]) + if test $ac_cv_func_alloca_works = no; then + gl_PREREQ_ALLOCA + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [ + AC_EGREP_CPP([Need own alloca], [ +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + ], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no]) + ]) + if test $gl_cv_rpl_alloca = yes; then + dnl OK, alloca can be implemented through a compiler built-in. + AC_DEFINE([HAVE_ALLOCA], [1], + [Define to 1 if you have 'alloca' after including , + a header that may be supplied by this distribution.]) + 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. + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + AC_SUBST([HAVE_ALLOCA_H]) +]) +m4trace:m4/alloca.m4:49: -1- AC_DEFUN([gl_PREREQ_ALLOCA], [:]) +m4trace:m4/asm-underscore.m4:15: -1- AC_DEFUN([gl_ASM_SYMBOL_PREFIX], [ + AC_REQUIRE([AC_PROG_EGREP]) + dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because + dnl 1. It works only for GCC. + dnl 2. It is incorrectly defined on some platforms, in some GCC versions. + AC_REQUIRE([gl_C_ASM]) + AC_CACHE_CHECK( + [whether C symbols are prefixed with underscore at the linker level], + [gl_cv_prog_as_underscore], + [cat > conftest.c </dev/null 2>&1 + if LC_ALL=C $EGREP '(^|[[^a-zA-Z0-9_]])_foo([[^a-zA-Z0-9_]]|$)' conftest.$gl_asmext >/dev/null; then + gl_cv_prog_as_underscore=yes + else + gl_cv_prog_as_underscore=no + fi + rm -f conftest* + ]) + if test $gl_cv_prog_as_underscore = yes; then + USER_LABEL_PREFIX=_ + else + USER_LABEL_PREFIX= + fi + AC_DEFINE_UNQUOTED([USER_LABEL_PREFIX], [$USER_LABEL_PREFIX], + [Define to the prefix of C symbols at the assembler and linker level, + either an underscore or empty.]) + ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"' + AC_SUBST([ASM_SYMBOL_PREFIX]) +]) +m4trace:m4/asm-underscore.m4:58: -1- AC_DEFUN([gl_C_ASM], [ + AC_EGREP_CPP([MicrosoftCompiler], + [ +#ifdef _MSC_VER +MicrosoftCompiler +#endif + ], + [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' + ]) +]) +m4trace:m4/codeset.m4:9: -1- AC_DEFUN([AM_LANGINFO_CODESET], [ + AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[char* cs = nl_langinfo(CODESET); return !cs;]])], + [am_cv_langinfo_codeset=yes], + [am_cv_langinfo_codeset=no]) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE([HAVE_LANGINFO_CODESET], [1], + [Define if you have and nl_langinfo(CODESET).]) + fi +]) +m4trace:m4/dospaths.m4:20: -1- AC_DEFUN([pds_AC_DOS_PATHS], [ + AC_CACHE_CHECK([whether system uses MSDOS-style paths], [ac_cv_dos_paths], [ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__ +neither MSDOS nor Windows nor OS2 +#endif +]])], + [ac_cv_dos_paths=yes], + [ac_cv_dos_paths=no])]) + + AS_IF([test x"$ac_cv_dos_paths" = xyes], + [ AC_DEFINE_UNQUOTED([HAVE_DOS_PATHS], 1, + [Define if the system uses DOS-style pathnames.])]) +]) +m4trace:m4/eaccess.m4:7: -1- AC_DEFUN([gl_FUNC_EACCESS], [ + AC_CHECK_FUNC([eaccess], , + [AC_DEFINE([eaccess], [access], + [Define as 'access' if you don't have the eaccess() function.])]) +]) +m4trace:m4/extensions.m4:212: -1- AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS], [ + 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 +]) +m4trace:m4/extern-inline.m4:8: -1- AC_DEFUN([gl_EXTERN_INLINE], [ + AH_VERBATIM([extern_inline], +[/* Please see the Gnulib manual for how to use these macros. + + Suppress extern inline with HP-UX cc, as it appears to be broken; see + . + + Suppress extern inline with Sun C in standards-conformance mode, as it + mishandles inline functions that call each other. E.g., for 'inline void f + (void) { } inline void g (void) { f (); }', c99 incorrectly complains + 'reference to static identifier "f" in extern inline function'. + This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. + + Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) + on configurations that mistakenly use 'static inline' to implement + functions or macros in standard C headers like . For example, + if isdigit is mistakenly implemented via a static inline function, + a program containing an extern inline function that calls isdigit + may not work since the C standard prohibits extern inline functions + from calling static functions. This bug is known to occur on: + + OS X 10.8 and earlier; see: + http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html + + DragonFly; see + http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log + + FreeBSD; see: + http://lists.gnu.org/archive/html/bug-gnulib/2014-07/msg00104.html + + OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and + for clang but remains for g++; see . + Assume DragonFly and FreeBSD will be similar. */ +#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 __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, suppress bogus "no previous prototype for 'FOO'" + and "no previous declaration for 'FOO'" diagnostics, + when FOO is an inline function in the header; see + and + . */ +#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) +# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ +# define _GL_INLINE_HEADER_CONST_PRAGMA +# else +# define _GL_INLINE_HEADER_CONST_PRAGMA \ + _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") +# endif +# define _GL_INLINE_HEADER_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ + _GL_INLINE_HEADER_CONST_PRAGMA +# define _GL_INLINE_HEADER_END \ + _Pragma ("GCC diagnostic pop") +#else +# define _GL_INLINE_HEADER_BEGIN +# define _GL_INLINE_HEADER_END +#endif]) +]) +m4trace:m4/fcntl-o.m4:12: -1- AC_DEFUN([gl_FCNTL_O_FLAGS], [ + dnl Persuade glibc to define O_NOATIME and O_NOFOLLOW. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + + AC_CHECK_HEADERS_ONCE([unistd.h]) + AC_CHECK_FUNCS_ONCE([symlink]) + AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include + #if HAVE_UNISTD_H + # include + #else /* on Windows with MSVC */ + # include + # include + # defined sleep(n) _sleep ((n) * 1000) + #endif + #include + #ifndef O_NOATIME + #define O_NOATIME 0 + #endif + #ifndef O_NOFOLLOW + #define O_NOFOLLOW 0 + #endif + static int const constants[] = + { + O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, + O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY + }; + ]], + [[ + int result = !constants; + #if HAVE_SYMLINK + { + static char const sym[] = "conftest.sym"; + if (symlink ("/dev/null", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + if (unlink (sym) != 0 || symlink (".", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_RDONLY | O_NOFOLLOW); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + unlink (sym); + } + #endif + { + static char const file[] = "confdefs.h"; + int fd = open (file, O_RDONLY | O_NOATIME); + if (fd < 0) + result |= 8; + else + { + struct stat st0; + if (fstat (fd, &st0) != 0) + result |= 16; + else + { + char c; + sleep (1); + if (read (fd, &c, 1) != 1) + result |= 24; + else + { + if (close (fd) != 0) + result |= 32; + else + { + struct stat st1; + if (stat (file, &st1) != 0) + result |= 40; + else + if (st0.st_atime != st1.st_atime) + result |= 64; + } + } + } + } + } + return result;]])], + [gl_cv_header_working_fcntl_h=yes], + [case $? in #( + 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( + 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( + 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( + *) gl_cv_header_working_fcntl_h='no';; + esac], + [gl_cv_header_working_fcntl_h=cross-compiling])]) + + 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.]) +]) +m4trace:m4/findprog-in.m4:7: -1- AC_DEFUN([gl_FINDPROG_IN], [ + dnl Prerequisites of lib/findprog-in.c. + AC_REQUIRE([gl_FUNC_EACCESS]) +]) +m4trace:m4/getloadavg.m4:17: -1- AC_DEFUN([gl_GETLOADAVG], [AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + +# Persuade glibc to declare getloadavg(). +AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +AC_CHECK_FUNC([getloadavg], [], + [gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + AC_CHECK_LIB([elf], [elf_begin], [LIBS="-lelf $LIBS"]) + AC_CHECK_LIB([kvm], [kvm_open], [LIBS="-lkvm $LIBS"]) + # Check for the 4.4BSD definition of getloadavg. + AC_CHECK_LIB([util], [getloadavg], + [LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes]) + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + AC_CHECK_LIB([getloadavg], [getloadavg], + [LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes], + [LIBS=$gl_getloadavg_LIBS]) + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + AC_CHECK_LIB([kstat], [kstat_open]) + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + AC_CHECK_LIB([perfstat], [perfstat_cpu_total]) + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADER([sys/dg_sys_info.h], + [gl_func_getloadavg_done=yes + AC_DEFINE([DGUX], [1], [Define to 1 for DGUX with .]) + AC_CHECK_LIB([dgc], [dg_sys_info])]) + fi + fi]) + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + +AC_SUBST([GETLOADAVG_LIBS])dnl + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +AC_CHECK_HEADERS([sys/loadavg.h]) +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +AC_CHECK_DECL([getloadavg], [], [HAVE_DECL_GETLOADAVG=0], + [[#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include ]]) +]) +m4trace:m4/getloadavg.m4:109: -1- AC_DEFUN([gl_PREREQ_GETLOADAVG], [ +# Figure out what our getloadavg.c needs. + +AC_CHECK_HEADERS_ONCE([sys/param.h unistd.h]) + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + AC_CHECK_FUNCS([pstat_getdynamic], [gl_func_getloadavg_done=yes]) +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + AC_DEFINE([SVR4], [1], [Define to 1 on System V Release 4.]) +fi + +if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADER([inq_stats/cpustats.h], + [gl_func_getloadavg_done=yes + AC_DEFINE([UMAX], [1], [Define to 1 for Encore UMAX.]) + AC_DEFINE([UMAX4_3], [1], + [Define to 1 for Encore UMAX 4.3 that has + instead of .])]) +fi + +if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADER([sys/cpustats.h], + [gl_func_getloadavg_done=yes; AC_DEFINE([UMAX])]) +fi + +if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADERS([mach/mach.h]) +fi + +AC_CHECK_HEADERS([nlist.h], +[AC_CHECK_MEMBERS([struct nlist.n_un.n_name], + [], [], + [#include ]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif]])], + [AC_DEFINE([N_NAME_POINTER], [1], + [Define to 1 if the nlist n_name member is a pointer])]) +])dnl +]) +m4trace:m4/getloadavg.m4:167: -1- AC_DEFUN_ONCE([gl_STDLIB_H], [ + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + + dnl Check for declarations of anything we want to poison if the + dnl corresponding gnulib module is not in use, and which is not + dnl guaranteed by C89. + gl_WARN_ON_USE_PREPARE([[#include +#if HAVE_SYS_LOADAVG_H +/* OpenIndiana has a bug: must be included before + . */ +# include +# include +#endif +#if HAVE_RANDOM_H +# include +#endif + ]], [getloadavg]) +]) +m4trace:m4/getloadavg.m4:191: -1- 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]) +]) +m4trace:m4/getloadavg.m4:203: -1- 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]) +]) +m4trace:m4/getloadavg.m4:212: -1- 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]) +]) +m4trace:m4/gettext.m4:57: -1- AC_DEFUN([AM_GNU_GETTEXT], [ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], + [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], + ifelse([$1], [external], + ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), + [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + gt_NEEDS_INIT + AM_GNU_GETTEXT_NEED([$2]) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl Add a version number to the cache macros. + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH([included-gettext], + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + ]])], + [eval "$gt_func_gnugettext_libc=yes"], + [eval "$gt_func_gnugettext_libc=no"])]) + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + [$gt_func_gnugettext_libintl], + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ]])], + [eval "$gt_func_gnugettext_libintl=yes"], + [eval "$gt_func_gnugettext_libintl=no"]) + dnl Now see whether libintl exists and depends on libiconv. + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ]])], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE([ENABLE_NLS], [1], + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + 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 + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE([HAVE_GETTEXT], [1], + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE([HAVE_DCGETTEXT], [1], + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST([BUILD_INCLUDED_LIBINTL]) + AC_SUBST([USE_INCLUDED_LIBINTL]) + AC_SUBST([CATOBJEXT]) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST([DATADIRNAME]) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST([INSTOBJEXT]) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST([GENCAT]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST([INTLOBJS]) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST([INTLLIBS]) + + dnl Make all documented variables known to autoconf. + AC_SUBST([LIBINTL]) + AC_SUBST([LTLIBINTL]) + AC_SUBST([POSUB]) +]) +m4trace:m4/gettext.m4:394: -1- AC_DEFUN([AM_GNU_GETTEXT_NEED], [ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) +m4trace:m4/gettext.m4:401: -1- AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) +m4trace:m4/glibc2.m4:11: -1- AC_DEFUN([gt_GLIBC2], [ + AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer], + [ac_cv_gnu_library_2], + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) && !defined __UCLIBC__ + Lucky GNU user + #endif +#endif + ], + [ac_cv_gnu_library_2=yes], + [ac_cv_gnu_library_2=no]) + ] + ) + AC_SUBST([GLIBC2]) + GLIBC2="$ac_cv_gnu_library_2" + +]) +m4trace:m4/glibc21.m4:11: -1- AC_DEFUN([gl_GLIBC21], [ + AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc], + [ac_cv_gnu_library_2_1], + [AC_EGREP_CPP([Lucky], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif +#ifdef __UCLIBC__ + Lucky user +#endif + ], + [ac_cv_gnu_library_2_1=yes], + [ac_cv_gnu_library_2_1=no]) + ] + ) + AC_SUBST([GLIBC21]) + GLIBC21="$ac_cv_gnu_library_2_1" + +]) +m4trace:m4/gnulib-common.m4:11: -1- 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]) +]) +m4trace:m4/gnulib-common.m4:17: -1- 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 +# 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) \ + || (!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 _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) +# else +# define _Noreturn +# endif +#endif +]) + AH_VERBATIM([isoc99_inline], +[/* 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__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#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([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_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_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_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via 'free'; it can be used only after declaring 'free'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib's or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with '-fwhole-program'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following 'case' or + 'default' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a 'switch' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with '__'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC's syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type '[[un]signed] char'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don't use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + +]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], +[/* The _GL_ASYNC_SAFE marker should be attached to functions that are + signal handlers (for signals other than SIGABRT, SIGPIPE) or can be + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked 'volatile'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable 'signal_occurred' is not declared 'volatile'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE +]) + AH_VERBATIM([micro_optimizations], +[/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where + n1 and n2 are expressions without side effects, that evaluate to real + numbers (excluding NaN). + It returns + 1 if n1 > n2 + 0 if n1 == n2 + -1 if n1 < n2 + The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional + jump with nearly all GCC versions up to GCC 10. + This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many + GCC versions up to GCC 9. + The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 + avoids conditional jumps in all GCC versions >= 3.4. */ +#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) +]) + dnl Hint which direction to take regarding cross-compilation guesses: + dnl When a user installs a program on a platform they are not intimately + dnl familiar with, --enable-cross-guesses=conservative is the appropriate + dnl choice. It implements the "If we don't know, assume the worst" principle. + dnl However, when an operating system developer (on a platform which is not + dnl yet known to gnulib) builds packages for their platform, they want to + dnl expose, not hide, possible platform bugs; in this case, + dnl --enable-cross-guesses=risky is the appropriate choice. + dnl Sets the variables + dnl gl_cross_guess_normal (to be used when 'yes' is good and 'no' is bad), + dnl gl_cross_guess_inverted (to be used when 'no' is good and 'yes' is bad). + AC_ARG_ENABLE([cross-guesses], + [AS_HELP_STRING([--enable-cross-guesses={conservative|risky}], + [specify policy for cross-compilation guesses])], + [if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + AC_MSG_WARN([invalid argument supplied to --enable-cross-guesses]) + enableval=conservative + fi + gl_cross_guesses="$enableval"], + [gl_cross_guesses=conservative]) + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + dnl Preparation for running test programs: + dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not + dnl to /dev/tty, so they can be redirected to log files. Such diagnostics + dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N. + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ +]) +m4trace:m4/gnulib-common.m4:523: -1- AC_DEFUN([gl_MODULE_INDICATOR_INIT_VARIABLE], [ + GL_MODULE_INDICATOR_PREFIX[]_[$1]=m4_if([$2], , [0], [$2]) + AC_SUBST(GL_MODULE_INDICATOR_PREFIX[]_[$1]) +]) +m4trace:m4/gnulib-common.m4:538: -1- AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE], [ + gl_MODULE_INDICATOR_SET_VARIABLE_AUX( + [GL_MODULE_INDICATOR_PREFIX[]_GNULIB_[]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], + [gl_MODULE_INDICATOR_CONDITION]) +]) +m4trace:m4/gnulib-common.m4:551: -1- AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX], [ + m4_if(m4_defn([gl_MODULE_INDICATOR_CONDITION]), [1], + [ + dnl Simplify the expression VALUE || 1 to 1. + $1=1 + ], + [gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([$1], + [gl_MODULE_INDICATOR_CONDITION])]) +]) +m4trace:m4/gnulib-common.m4:565: -1- AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR], [ + dnl Simplify the expression 1 || CONDITION to 1. + if test "$[]$1" != 1; then + dnl Simplify the expression 0 || CONDITION to CONDITION. + if test "$[]$1" = 0; then + $1=$2 + else + $1="($[]$1 || $2)" + fi + fi +]) +m4trace:m4/gnulib-common.m4:590: -1- AC_DEFUN([gl_MODULE_INDICATOR], [ + AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), + [gl_MODULE_INDICATOR_CONDITION], + [Define to a C preprocessor expression that evaluates to 1 or 0, + depending whether the gnulib module $1 shall be considered present.]) +]) +m4trace:m4/gnulib-common.m4:613: -1- AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], [ + AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1], + [Define to 1 when the gnulib module $1 should be tested.]) +]) +m4trace:m4/gnulib-common.m4:625: -1- AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK], [ + dnl Override gl_WARN_ON_USE_PREPARE. + dnl But hide this definition from 'aclocal'. + AC_DEFUN([gl_W][ARN_ON_USE_PREPARE], []) +]) +m4trace:m4/gnulib-common.m4:636: -1- AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS], [ + dnl Override gl_MODULE_INDICATOR_FOR_TESTS. + AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], []) +]) +m4trace:m4/gnulib-common.m4:644: -1- AC_DEFUN([gl_FEATURES_H], [ + AC_CHECK_HEADERS_ONCE([features.h]) + if test $ac_cv_header_features_h = yes; then + HAVE_FEATURES_H=1 + else + HAVE_FEATURES_H=0 + fi + AC_SUBST([HAVE_FEATURES_H]) +]) +m4trace:m4/gnulib-common.m4:658: -1- AC_DEFUN([gl_PROG_CC_C99], [ + 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])]) +]) +m4trace:m4/gnulib-common.m4:675: -1- AC_DEFUN([gl_PROG_AR_RANLIB], [ + dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler + dnl as "cc", and GCC as "gcc". They have different object file formats and + dnl library formats. In particular, the GNU binutils programs ar and ranlib + dnl produce libraries that work only with gcc, not with cc. + AC_REQUIRE([AC_PROG_CC]) + dnl The '' hides this use from 'aclocal'. + AC_BEFORE([$0], [A][M_PROG_AR]) + AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler], + [ + AC_EGREP_CPP([Amsterdam], + [ +#ifdef __ACK__ +Amsterdam +#endif + ], + [gl_cv_c_amsterdam_compiler=yes], + [gl_cv_c_amsterdam_compiler=no]) + ]) + + dnl Don't compete with AM_PROG_AR's decision about AR/ARFLAGS if we are not + dnl building with __ACK__. + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + dnl AM_PROG_AR was added in automake v1.11.2. AM_PROG_AR does not AC_SUBST + dnl ARFLAGS variable (it is filed into Makefile.in directly by automake + dnl script on-demand, if not specified by ./configure of course). + dnl Don't AC_REQUIRE the AM_PROG_AR otherwise the code for __ACK__ above + dnl will be ignored. Also, pay attention to call AM_PROG_AR in else block + dnl because AM_PROG_AR is written so it could re-set AR variable even for + dnl __ACK__. It may seem like its easier to avoid calling the macro here, + dnl but we need to AC_SUBST both AR/ARFLAGS (thus those must have some good + dnl default value and automake should usually know them). + dnl + dnl The '' hides this use from 'aclocal'. + m4_ifdef([A][M_PROG_AR], [A][M_PROG_AR], [:]) + fi + + dnl In case the code above has not helped with setting AR/ARFLAGS, use + dnl Automake-documented default values for AR and ARFLAGS, but prefer + dnl ${host}-ar over ar (useful for cross-compiling). + AC_CHECK_TOOL([AR], [ar], [ar]) + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + AC_SUBST([AR]) + AC_SUBST([ARFLAGS]) + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + dnl Use the ranlib program if it is available. + AC_PROG_RANLIB + fi + fi + AC_SUBST([RANLIB]) +]) +m4trace:m4/gnulib-common.m4:795: -1- AC_DEFUN([gl_BIGENDIAN], [ + AC_C_BIGENDIAN +]) +m4trace:m4/gnulib-common.m4:809: -1- 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>&- +]) +m4trace:m4/gnulib-common.m4:821: -1- AC_DEFUN([gl_CACHE_VAL_SILENT], [ + gl_SILENT([ + AC_CACHE_VAL([$1], [$2]) + ]) +]) +m4trace:m4/gnulib-common.m4:835: -1- 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 +]) +m4trace:m4/gnulib-common.m4:851: -1- 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]) +]) +m4trace:m4/gnulib-common.m4:881: -1- 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]) +]) +m4trace:m4/gnulib-common.m4:915: -1- 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]) +]) +m4trace:m4/gnulib-common.m4:985: -1- 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]) +]) +m4trace:m4/gnulib-common.m4:1017: -1- AC_DEFUN([GL_MDA_DEFINES], [ +AC_REQUIRE([_GL_MDA_DEFINES]) +[$gl_mda_defines] +]) +m4trace:m4/gnulib-common.m4:1021: -1- 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 +' +]) +m4trace:m4/gnulib-comp.m4:34: -1- AC_DEFUN([gl_EARLY], [ + m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace + m4_pattern_allow([^gl_ES$])dnl a valid locale name + m4_pattern_allow([^gl_LIBOBJS$])dnl a variable + m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable + + # Pre-early section. + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_REQUIRE([gl_PROG_AR_RANLIB]) + + # Code from module alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + AC_REQUIRE([AC_SYS_LARGEFILE]) + AC_REQUIRE([gl_YEAR2038_EARLY]) + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: +]) +m4trace:m4/gnulib-comp.m4:67: -1- AC_DEFUN([gl_INIT], [ + AC_CONFIG_LIBOBJ_DIR([lib]) + AM_CONDITIONAL([GL_COND_LIBTOOL], [false]) + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ])) + m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS])) + 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_source_base_prefix= + gl_FUNC_ALLOCA + gl_CONDITIONAL_HEADER([alloca.h]) + AC_PROG_MKDIR_P + gl_FINDPROG_IN + gl_STDLIB_H + gl_STDLIB_H_REQUIRE_DEFAULTS + AC_REQUIRE([AC_CANONICAL_HOST]) + gl_GETLOADAVG + gl_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) + AM_COND_IF([GL_COND_OBJ_GETLOADAVG], [ + gl_PREREQ_GETLOADAVG + ]) + gl_STDLIB_MODULE_INDICATOR([getloadavg]) + AC_REQUIRE([gl_HOST_CPU_C_ABI]) + AC_REQUIRE([gl_LARGEFILE]) + # Check the system to see if it provides GNU glob. If not, use our + # local version. + AC_CACHE_CHECK([if system libc has GNU glob], [make_cv_sys_gnu_glob], + [ AC_EGREP_CPP([gnu glob],[ + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif], + [make_cv_sys_gnu_glob=yes], + [make_cv_sys_gnu_glob=no])]) + # Tell automake about this, so it can build the right .c files. + AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + AC_SUBST([USE_SYSTEM_GLOB]) + # Check for DOS-style pathnames. + pds_AC_DOS_PATHS + gl_STDBOOL_H + gl_CONDITIONAL_HEADER([stdbool.h]) + AC_PROG_MKDIR_P + # End of code from modules + m4_ifval(gl_LIBSOURCES_LIST, [ + m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || + for gl_file in ]gl_LIBSOURCES_LIST[ ; do + if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then + echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2 + exit 1 + fi + done])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([gl_LIBSOURCES_DIR]) + m4_popdef([gl_LIBSOURCES_LIST]) + m4_popdef([AC_LIBSOURCES]) + m4_popdef([AC_REPLACE_FUNCS]) + m4_popdef([AC_LIBOBJ]) + 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= + m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ])) + m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS])) + 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 + AC_SUBST([gltests_WITNESS]) + gl_module_indicator_condition=$gltests_WITNESS + m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition]) + m4_popdef([gl_MODULE_INDICATOR_CONDITION]) + m4_ifval(gltests_LIBSOURCES_LIST, [ + m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ || + for gl_file in ]gltests_LIBSOURCES_LIST[ ; do + if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then + echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2 + exit 1 + fi + done])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]) + m4_popdef([AC_REPLACE_FUNCS]) + m4_popdef([AC_LIBOBJ]) + 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" + AC_SUBST([LIBGNU_LTLIBDEPS]) +]) +m4trace:m4/gnulib-comp.m4:242: -1- AC_DEFUN([gl_LIBOBJ], [ + AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl + gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext" +]) +m4trace:m4/gnulib-comp.m4:249: -1- AC_DEFUN([gl_REPLACE_FUNCS], [ + m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl + AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)]) +]) +m4trace:m4/gnulib-comp.m4:258: -1- AC_DEFUN([gl_LIBSOURCES], [ + m4_foreach([_gl_NAME], [$1], [ + m4_if(_gl_NAME, [alloca.c], [], [ + m4_define([gl_LIBSOURCES_DIR], [lib]) + m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ]) + ]) + ]) +]) +m4trace:m4/gnulib-comp.m4:269: -1- AC_DEFUN([gltests_LIBOBJ], [ + AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl + gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext" +]) +m4trace:m4/gnulib-comp.m4:276: -1- AC_DEFUN([gltests_REPLACE_FUNCS], [ + m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl + AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)]) +]) +m4trace:m4/gnulib-comp.m4:285: -1- AC_DEFUN([gltests_LIBSOURCES], [ + m4_foreach([_gl_NAME], [$1], [ + m4_if(_gl_NAME, [alloca.c], [], [ + m4_define([gltests_LIBSOURCES_DIR], [tests]) + m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ]) + ]) + ]) +]) +m4trace:m4/gnulib-comp.m4:296: -1- AC_DEFUN([gl_FILE_LIST], [ + doc/fdl.texi + lib/alloca.c + lib/alloca.in.h + lib/concat-filename.c + lib/concat-filename.h + lib/filename.h + lib/findprog-in.c + lib/findprog.h + lib/fnmatch.c + lib/fnmatch.in.h + lib/getloadavg.c + lib/glob.c + lib/glob.in.h + lib/intprops.h + lib/stdbool.in.h + lib/warn-on-use.h + m4/00gnulib.m4 + m4/acinclude.m4 + m4/alloca.m4 + m4/asm-underscore.m4 + m4/dospaths.m4 + m4/eaccess.m4 + m4/extensions.m4 + m4/findprog-in.m4 + m4/getloadavg.m4 + m4/gnulib-common.m4 + m4/host-cpu-c-abi.m4 + m4/largefile.m4 + m4/stdbool.m4 + m4/warn-on-use.m4 + m4/year2038.m4 + m4/zzgnulib.m4 +]) +m4trace:m4/host-cpu-c-abi.m4:50: -1- AC_DEFUN([gl_HOST_CPU_C_ABI], [ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_C_ASM]) + AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi], + [case "$host_cpu" in + +changequote(,)dnl + i[34567]86 ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=x86_64-x32], + [gl_cv_host_cpu_c_abi=x86_64])], + [gl_cv_host_cpu_c_abi=i386]) + ;; + +changequote(,)dnl + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __aarch64__ + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=arm64-ilp32], + [gl_cv_host_cpu_c_abi=arm64])], + [# Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ]) + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __LP64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=hppa64], + [gl_cv_host_cpu_c_abi=hppa]) + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=ia64-ilp32], + [gl_cv_host_cpu_c_abi=ia64]) + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mips64], + [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mipsn32], + [gl_cv_host_cpu_c_abi=mips])]) + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + ]])], + [# On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=powerpc64-elfv2], + [gl_cv_host_cpu_c_abi=powerpc64]) + ], + [gl_cv_host_cpu_c_abi=powerpc]) + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + ]])], + [cpu=riscv64], + [cpu=riscv32]) + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ + int ok; + #else + error fail + #endif + ]])], + [main_abi=lp64], + [main_abi=ilp32]) + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + ]])], + [float_abi=d], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + ]])], + [float_abi=f], + [float_abi='']) + ]) + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=s390x], + [gl_cv_host_cpu_c_abi=s390]) + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=sparc64], + [gl_cv_host_cpu_c_abi=sparc]) + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ]) + + dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same. + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + AC_SUBST([HOST_CPU]) + AC_SUBST([HOST_CPU_C_ABI]) + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h < +#include + ]], + [[iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);]])], + [am_cv_func_iconv=yes]) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);]])], + [am_cv_lib_iconv=yes] + [am_cv_func_iconv=yes]) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ + dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, + dnl Solaris 10. + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + ]], + [[int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + result |= 16; + return result; +]])], + [am_cv_func_iconv_works=yes], , + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ]) + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + AC_DEFINE([HAVE_ICONV], [1], + [Define if you have the iconv() function and it works.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST([LIBICONV]) + AC_SUBST([LTLIBICONV]) +]) +m4trace:m4/iconv.m4:233: -1- AC_DEFUN_ONCE([AM_ICONV], [ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL([am_cv_proto_iconv], [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + ]], + [[]])], + [am_cv_proto_iconv_arg1=""], + [am_cv_proto_iconv_arg1="const"]) + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([ + $am_cv_proto_iconv]) + AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], + [Define as const if the declaration of iconv() needs const.]) + dnl Also substitute ICONV_CONST in the gnulib generated . + m4_ifdef([gl_ICONV_H_DEFAULTS], + [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + if test -n "$am_cv_proto_iconv_arg1"; then + ICONV_CONST="const" + fi + ]) + fi +]) +m4trace:m4/intdiv0.m4:9: -1- AC_DEFUN([gt_INTDIV0], [ + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + + AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], + gt_cv_int_divbyzero_sigfpe, + [ + gt_cv_int_divbyzero_sigfpe= +changequote(,)dnl + case "$host_os" in + macos* | darwin[6-9]* | darwin[1-9][0-9]*) + # On Mac OS X 10.2 or newer, just assume the same as when cross- + # compiling. If we were to perform the real test, 1 Crash Report + # dialog window would pop up. + case "$host_cpu" in + i[34567]86 | x86_64) + gt_cv_int_divbyzero_sigfpe="guessing yes" ;; + esac + ;; + esac +changequote([,])dnl + if test -z "$gt_cv_int_divbyzero_sigfpe"; then + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#include + +static void +sigfpe_handler (int sig) +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (2); +} +]])], + [gt_cv_int_divbyzero_sigfpe=yes], + [gt_cv_int_divbyzero_sigfpe=no], + [ + # Guess based on the CPU. +changequote(,)dnl + case "$host_cpu" in + alpha* | i[34567]86 | x86_64 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac +changequote([,])dnl + ]) + fi + ]) + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value], + [Define if integer division by zero raises signal SIGFPE.]) +]) +m4trace:m4/intl.m4:25: -1- AC_DEFUN([AM_INTL_SUBDIR], [ + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AC_PROG_MKDIR_P])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([gt_GLIBC2])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([gl_VISIBILITY])dnl + AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl + AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl + AC_REQUIRE([gt_TYPE_WCHAR_T])dnl + AC_REQUIRE([gt_TYPE_WINT_T])dnl + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gt_TYPE_INTMAX_T]) + AC_REQUIRE([gt_PRINTF_POSIX]) + AC_REQUIRE([gl_GLIBC21])dnl + AC_REQUIRE([gl_XSIZE])dnl + AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl + AC_REQUIRE([gt_INTL_MACOSX])dnl + AC_REQUIRE([gl_EXTERN_INLINE])dnl + AC_REQUIRE([gt_GL_ATTRIBUTE])dnl + + dnl Support for automake's --enable-silent-rules. + case "$enable_silent_rules" in + yes) INTL_DEFAULT_VERBOSITY=0;; + no) INTL_DEFAULT_VERBOSITY=1;; + *) INTL_DEFAULT_VERBOSITY=1;; + esac + AC_SUBST([INTL_DEFAULT_VERBOSITY]) + + AC_CHECK_TYPE([ptrdiff_t], , + [AC_DEFINE([ptrdiff_t], [long], + [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) + ]) + AC_CHECK_HEADERS([features.h stddef.h stdlib.h string.h]) + AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \ + snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) + + dnl Use the _snprintf function only if it is declared (because on NetBSD it + dnl is defined as a weak alias of snprintf; we prefer to use the latter). + AC_CHECK_DECLS([_snprintf, _snwprintf], , , [#include ]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + AC_CHECK_DECLS([getc_unlocked], , , [#include ]) + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + AC_SUBST([HAVE_POSIX_PRINTF]) + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + AC_SUBST([HAVE_ASPRINTF]) + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + AC_SUBST([HAVE_SNPRINTF]) + if test "$ac_cv_func_newlocale" = yes; then + HAVE_NEWLOCALE=1 + else + HAVE_NEWLOCALE=0 + fi + AC_SUBST([HAVE_NEWLOCALE]) + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + AC_SUBST([HAVE_WPRINTF]) + + AM_LANGINFO_CODESET + gt_LC_MESSAGES + + dnl Compilation on mingw and Cygwin needs special Makefile rules, because + dnl 1. when we install a shared library, we must arrange to export + dnl auxiliary pointer variables for every exported variable, + dnl 2. when we install a shared library and a static library simultaneously, + dnl the include file specifies __declspec(dllimport) and therefore we + dnl must arrange to define the auxiliary pointer variables for the + dnl exported variables _also_ in the static library. + if test "$enable_shared" = yes; then + case "$host_os" in + mingw* | cygwin*) is_woe32dll=yes ;; + *) is_woe32dll=no ;; + esac + else + is_woe32dll=no + fi + WOE32DLL=$is_woe32dll + AC_SUBST([WOE32DLL]) + + dnl On mingw and Cygwin, we can activate special Makefile rules which add + dnl version information to the shared libraries and executables. + case "$host_os" in + mingw* | cygwin*) is_woe32=yes ;; + *) is_woe32=no ;; + esac + WOE32=$is_woe32 + AC_SUBST([WOE32]) + if test $WOE32 = yes; then + dnl Check for a program that compiles Windows resource files. + AC_CHECK_TOOL([WINDRES], [windres]) + fi + + dnl Determine whether when creating a library, "-lc" should be passed to + dnl libtool or not. On many platforms, it is required for the libtool option + dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool + dnl in the *.la files - makes it impossible to create multithreaded programs, + dnl because libtool also reorders the -lc to come before the -pthread, and + dnl this disables pthread_create() . + case "$host_os" in + hpux*) LTLIBC="" ;; + *) LTLIBC="-lc" ;; + esac + AC_SUBST([LTLIBC]) + + dnl Rename some macros and functions used for locking. + AH_BOTTOM([ +#define __libc_lock_t gl_lock_t +#define __libc_lock_define gl_lock_define +#define __libc_lock_define_initialized gl_lock_define_initialized +#define __libc_lock_init gl_lock_init +#define __libc_lock_lock gl_lock_lock +#define __libc_lock_unlock gl_lock_unlock +#define __libc_lock_recursive_t gl_recursive_lock_t +#define __libc_lock_define_recursive gl_recursive_lock_define +#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized +#define __libc_lock_init_recursive gl_recursive_lock_init +#define __libc_lock_lock_recursive gl_recursive_lock_lock +#define __libc_lock_unlock_recursive gl_recursive_lock_unlock +#define glthread_in_use libintl_thread_in_use +#define glthread_lock_init_func libintl_lock_init_func +#define glthread_lock_lock_func libintl_lock_lock_func +#define glthread_lock_unlock_func libintl_lock_unlock_func +#define glthread_lock_destroy_func libintl_lock_destroy_func +#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded +#define glthread_rwlock_init_func libintl_rwlock_init_func +#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded +#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func +#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded +#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func +#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded +#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func +#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded +#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func +#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded +#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func +#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded +#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func +#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded +#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func +#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded +#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func +#define glthread_once_func libintl_once_func +#define glthread_once_singlethreaded libintl_once_singlethreaded +#define glthread_once_multithreaded libintl_once_multithreaded +]) +]) +m4trace:m4/intl.m4:211: -1- AC_DEFUN([gt_INTL_SUBDIR_CORE], [ + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([gt_INTDIV0])dnl + AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl + AC_REQUIRE([gt_INTTYPES_PRI])dnl + AC_REQUIRE([gl_LOCK])dnl + + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]], + [[]])], + [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1], + [Define to 1 if the compiler understands __builtin_expect.])]) + + AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \ + stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \ + argz_stringify argz_next __fsetlocking]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + AC_CHECK_DECLS([feof_unlocked, fgets_unlocked], , , [#include ]) + + AM_ICONV + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-2.7 for %define api.pure. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 2.[7-9]* | [3-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi +]) +m4trace:m4/intl.m4:276: -1- AC_DEFUN([gt_GL_ATTRIBUTE], [ + m4_ifndef([gl_[]COMMON], + AH_VERBATIM([gt_gl_attribute], +[/* 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. */ +#ifndef _GL_UNUSED +# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _GL_UNUSED __attribute__ ((__unused__)) +# else +# define _GL_UNUSED +# endif +#endif + +/* The __pure__ attribute was added in gcc 2.96. */ +#ifndef _GL_ATTRIBUTE_PURE +# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define _GL_ATTRIBUTE_PURE /* empty */ +# endif +#endif +]))]) +m4trace:m4/intlmacosx.m4:18: -1- AC_DEFUN([gt_INTL_MACOSX], [ + dnl Check for API introduced in Mac OS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + [gt_cv_func_CFPreferencesCopyAppValue], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFPreferencesCopyAppValue(NULL, NULL)]])], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], + [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in Mac OS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFLocaleCopyCurrent();]])], + [gt_cv_func_CFLocaleCopyCurrent=yes], + [gt_cv_func_CFLocaleCopyCurrent=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], + [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) +m4trace:m4/intmax.m4:11: -1- AC_DEFUN([gt_TYPE_INTMAX_T], [ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include +#if HAVE_STDINT_H_WITH_UINTMAX +#include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include +#endif + ]], + [[intmax_t x = -1; + return !x;]])], + [gt_cv_c_intmax_t=yes], + [gt_cv_c_intmax_t=no])]) + if test $gt_cv_c_intmax_t = yes; then + AC_DEFINE([HAVE_INTMAX_T], [1], + [Define if you have the 'intmax_t' type in or .]) + fi +]) +m4trace:m4/inttypes-pri.m4:14: -1- AC_DEFUN([gt_INTTYPES_PRI], [ + AC_CHECK_HEADERS([inttypes.h]) + if test $ac_cv_header_inttypes_h = yes; then + AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], + [gt_cv_inttypes_pri_broken], + [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#ifdef PRId32 +char *p = PRId32; +#endif + ]], + [[]])], + [gt_cv_inttypes_pri_broken=no], + [gt_cv_inttypes_pri_broken=yes]) + ]) + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1], + [Define if exists and defines unusable PRI* macros.]) + PRI_MACROS_BROKEN=1 + else + PRI_MACROS_BROKEN=0 + fi + AC_SUBST([PRI_MACROS_BROKEN]) +]) +m4trace:m4/inttypes_h.m4:12: -1- AC_DEFUN([gl_AC_HEADER_INTTYPES_H], [ + AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [gl_cv_header_inttypes_h=yes], + [gl_cv_header_inttypes_h=no])]) + if test $gl_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1], + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) +m4trace:m4/largefile.m4:13: -1- 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 +]) +m4trace:m4/largefile.m4:83: -1- 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([])])]) +]) +m4trace:m4/largefile.m4:126: -1- AC_DEFUN([gl_LARGEFILE], [ + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_os" in + mingw*) + dnl Native Windows. + dnl mingw64 defines off_t to a 64-bit type already, if + dnl _FILE_OFFSET_BITS=64, which is ensured by AC_SYS_LARGEFILE. + AC_CACHE_CHECK([for 64-bit off_t], [gl_cv_type_off_t_64], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + ]], + [[]])], + [gl_cv_type_off_t_64=yes], [gl_cv_type_off_t_64=no]) + ]) + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + dnl Some mingw versions define, if _FILE_OFFSET_BITS=64, 'struct stat' + dnl to 'struct _stat32i64' or 'struct _stat64' (depending on + dnl _USE_32BIT_TIME_T), which has a 32-bit st_size member. + AC_CACHE_CHECK([for 64-bit st_size], [gl_cv_member_st_size_64], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + ]], + [[]])], + [gl_cv_member_st_size_64=yes], [gl_cv_member_st_size_64=no]) + ]) + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + dnl Nothing to do on gnulib's side. + dnl A 64-bit off_t is + dnl - already the default on Mac OS X, FreeBSD, NetBSD, OpenBSD, IRIX, + dnl OSF/1, Cygwin, + dnl - enabled by _FILE_OFFSET_BITS=64 (ensured by AC_SYS_LARGEFILE) on + dnl glibc, HP-UX, Solaris, + dnl - enabled by _LARGE_FILES=1 (ensured by AC_SYS_LARGEFILE) on AIX, + dnl - impossible to achieve on Minix 3.1.8. + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac +]) +m4trace:m4/lcmessage.m4:22: -1- AC_DEFUN([gt_LC_MESSAGES], [ + AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[return LC_MESSAGES]])], + [gt_cv_val_LC_MESSAGES=yes], + [gt_cv_val_LC_MESSAGES=no])]) + if test $gt_cv_val_LC_MESSAGES = yes; then + AC_DEFINE([HAVE_LC_MESSAGES], [1], + [Define if your file defines LC_MESSAGES.]) + fi +]) +m4trace:m4/lib-ld.m4:12: -1- AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], +[# I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 /dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL([acl_cv_path_LD], +[if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 = 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE([rpath], + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) +m4trace:m4/lib-link.m4:161: -1- AC_DEFUN([AC_LIB_FROMPACKAGE], [ + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_frompackage_]NAME, [$2]) + popdef([NAME]) + pushdef([PACK],[$2]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_libsinpackage_]PACKUP, + m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) + popdef([PACKUP]) + popdef([PACK]) +]) +m4trace:m4/lib-link.m4:181: -1- AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) + dnl Autoconf >= 2.61 supports dots in --with options. + pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_ARG_WITH(P_A_C_K[-prefix], +[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib + --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + LIB[]NAME[]_PREFIX= + dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been + dnl computed. So it has to be reset here. + HAVE_LIB[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$acl_hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi + popdef([P_A_C_K]) + popdef([PACKLIBS]) + popdef([PACKUP]) + popdef([PACK]) + popdef([NAME]) +]) +m4trace:m4/lib-link.m4:684: -1- AC_DEFUN([AC_LIB_APPENDTOVAR], [ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) +m4trace:m4/lib-link.m4:708: -1- AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) +m4trace:m4/lib-prefix.m4:12: -1- AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])]) +m4trace:m4/lib-prefix.m4:22: -1- AC_DEFUN([AC_LIB_PREFIX], [ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) +m4trace:m4/lib-prefix.m4:122: -1- AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) +m4trace:m4/lib-prefix.m4:145: -1- AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) +m4trace:m4/lib-prefix.m4:162: -1- AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ + dnl There is no formal standard regarding lib and lib64. + dnl On glibc systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine + dnl the compiler's default mode by looking at the compiler's library search + dnl path. If at least one of its elements ends in /lib64 or points to a + dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. + dnl Otherwise we use the default, namely "lib". + dnl On Solaris systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or + dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. + AC_REQUIRE([AC_CANONICAL_HOST]) + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment + dnl . + dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." + dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the + dnl symlink is missing, so we set acl_libdirstem2 too. + AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], + [AC_EGREP_CPP([sixtyfour bits], [ +#ifdef _LP64 +sixtyfour bits +#endif + ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) + ]) + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" +]) +m4trace:m4/lock.m4:9: -1- AC_DEFUN([gl_LOCK], [ + AC_REQUIRE([gl_THREADLIB]) + if test "$gl_threads_api" = posix; then + # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the + # pthread_rwlock_* functions. + AC_CHECK_TYPE([pthread_rwlock_t], + [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1], + [Define if the POSIX multithreading library has read/write locks.])], + [], + [#include ]) + # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM( + [[#include ]], + [[ +#if __FreeBSD__ == 4 +error "No, in FreeBSD 4.0 recursive mutexes actually don't work." +#elif (defined __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ \ + && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070) +error "No, in Mac OS X < 10.7 recursive mutexes actually don't work." +#else +int x = (int)PTHREAD_MUTEX_RECURSIVE; +return !x; +#endif + ]])], + [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1], + [Define if the defines PTHREAD_MUTEX_RECURSIVE.])]) + fi + gl_PREREQ_LOCK +]) +m4trace:m4/lock.m4:42: -1- AC_DEFUN([gl_PREREQ_LOCK], [:]) +m4trace:m4/longlong.m4:17: -1- AC_DEFUN([AC_TYPE_LONG_LONG_INT], [ + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], + [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 + dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. + dnl If cross compiling, assume the bug is not important, since + dnl nobody cross compiles for this platform as far as we know. + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif]], + [[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;]])], + [], + [ac_cv_type_long_long_int=no], + [:]) + fi + fi]) + if test $ac_cv_type_long_long_int = yes; then + AC_DEFINE([HAVE_LONG_LONG_INT], [1], + [Define to 1 if the system has the type 'long long int'.]) + fi +]) +m4trace:m4/longlong.m4:67: -1- AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], [ + AC_CACHE_CHECK([for unsigned long long int], + [ac_cv_type_unsigned_long_long_int], + [ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + AC_LINK_IFELSE( + [_AC_TYPE_LONG_LONG_SNIPPET], + [], + [ac_cv_type_unsigned_long_long_int=no]) + fi]) + if test $ac_cv_type_unsigned_long_long_int = yes; then + AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], + [Define to 1 if the system has the type 'unsigned long long int'.]) + fi +]) +m4trace:m4/longlong.m4:89: -1- AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], [ + AC_LANG_PROGRAM( + [[/* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63;]], + [[/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull));]]) +]) +m4trace:m4/nls.m4:23: -1- AC_DEFUN([AM_NLS], [ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE([nls], + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT([$USE_NLS]) + AC_SUBST([USE_NLS]) +]) +m4trace:m4/po.m4:23: -1- AC_DEFUN([AM_PO_SUBDIRS], [ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AC_PROG_MKDIR_P])dnl + AC_REQUIRE([AC_PROG_SED])dnl + AC_REQUIRE([AM_NLS])dnl + + dnl Release version of the gettext macros. This is used to ensure that + dnl the gettext macros and po/Makefile.in.in are in sync. + AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) + + dnl Test whether it is GNU msgfmt >= 0.15. +changequote(,)dnl + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([MSGFMT_015]) +changequote(,)dnl + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([GMSGFMT_015]) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Test whether it is GNU xgettext >= 0.15. +changequote(,)dnl + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac +changequote([,])dnl + AC_SUBST([XGETTEXT_015]) + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl Installation directories. + dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we + dnl have to define it here, so that it can be used in po/Makefile. + test -n "$localedir" || localedir='${datadir}/locale' + AC_SUBST([localedir]) + + dnl Support for AM_XGETTEXT_OPTION. + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) + + AC_CONFIG_COMMANDS([po-directories], [[ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done]], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) +m4trace:m4/po.m4:220: -1- AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + tab=`printf '\t'` + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <> "$ac_file.tmp" < +#include +/* The string "%2$d %1$d", with dollar characters protected from the shell's + dollar expansion (possibly an autoconf bug). */ +static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +static char buf[100]; +int main () +{ + sprintf (buf, format, 33, 55); + return (strcmp (buf, "55 33") != 0); +}]])], + [gt_cv_func_printf_posix=yes], + [gt_cv_func_printf_posix=no], + [ + AC_EGREP_CPP([notposix], [ +#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ + notposix +#endif + ], + [gt_cv_func_printf_posix="guessing no"], + [gt_cv_func_printf_posix="guessing yes"]) + ]) + ]) + case $gt_cv_func_printf_posix in + *yes) + AC_DEFINE([HAVE_POSIX_PRINTF], [1], + [Define if your printf() function supports format strings with positions.]) + ;; + esac +]) +m4trace:m4/progtest.m4:25: -1- AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL([ac_cv_path_$1], +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$][$1]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST([$1])dnl +]) +m4trace:m4/sig_atomic_t.m4:7: -1- 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 ]) +]) +m4trace:m4/size_max.m4:9: -1- AC_DEFUN([gl_SIZE_MAX], [ + AC_CHECK_HEADERS([stdint.h]) + dnl First test whether the system already has SIZE_MAX. + AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [ + gl_cv_size_max= + AC_EGREP_CPP([Found it], [ +#include +#if HAVE_STDINT_H +#include +#endif +#ifdef SIZE_MAX +Found it +#endif +], [gl_cv_size_max=yes]) + if test -z "$gl_cv_size_max"; then + dnl Define it ourselves. Here we assume that the type 'size_t' is not wider + dnl than the type 'unsigned long'. Try hard to find a definition that can + dnl be used in a preprocessor #if, i.e. doesn't contain a cast. + AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], + [#include +#include ], [size_t_bits_minus_1=]) + AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], + [#include ], [fits_in_uint=]) + if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then + if test $fits_in_uint = 1; then + dnl Even though SIZE_MAX fits in an unsigned int, it must be of type + dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + extern size_t foo; + extern unsigned long foo; + ]], + [[]])], + [fits_in_uint=0]) + fi + dnl We cannot use 'expr' to simplify this expression, because 'expr' + dnl works only with 'long' integers in the host environment, while we + dnl might be cross-compiling from a 32-bit platform to a 64-bit platform. + if test $fits_in_uint = 1; then + gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" + else + gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" + fi + else + dnl Shouldn't happen, but who knows... + gl_cv_size_max='((size_t)~(size_t)0)' + fi + fi + ]) + if test "$gl_cv_size_max" != yes; then + AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max], + [Define as the maximum value of type 'size_t', if the system doesn't define it.]) + fi + dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after + dnl . Remember that the #undef in AH_VERBATIM gets replaced with + dnl #define by AC_DEFINE_UNQUOTED. + AH_VERBATIM([SIZE_MAX], +[/* Define as the maximum value of type 'size_t', if the system doesn't define + it. */ +#ifndef SIZE_MAX +# undef SIZE_MAX +#endif]) +]) +m4trace:m4/stdbool.m4:12: -1- AC_DEFUN([gl_STDBOOL_H], [ + AC_REQUIRE([AC_CHECK_HEADER_STDBOOL]) + AC_REQUIRE([AC_CANONICAL_HOST]) + + dnl On some platforms, does not exist or does not conform to C99. + dnl On Solaris 10 with CC=cc CXX=CC, exists but is not usable + dnl in C++ mode (and no exists). In this case, we use our + dnl replacement, also in C mode (for binary compatibility between C and C++). + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + AC_SUBST([HAVE__BOOL]) +]) +m4trace:m4/stdint_h.m4:12: -1- AC_DEFUN([gl_AC_HEADER_STDINT_H], [ + AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include ]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [gl_cv_header_stdint_h=yes], + [gl_cv_header_stdint_h=no])]) + if test $gl_cv_header_stdint_h = yes; then + AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1], + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) +m4trace:m4/threadlib.m4:29: -1- AC_DEFUN([gl_THREADLIB_EARLY], [ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) +]) +m4trace:m4/threadlib.m4:36: -1- AC_DEFUN([gl_THREADLIB_EARLY_BODY], [ + dnl Ordering constraints: This macro modifies CPPFLAGS in a way that + dnl influences the result of the autoconf tests that test for *_unlocked + dnl declarations, on AIX 5 at least. Therefore it must come early. + AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl + AC_BEFORE([$0], [gl_ARGP])dnl + + AC_REQUIRE([AC_CANONICAL_HOST]) + dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + dnl Check for multithreading. + m4_ifdef([gl_THREADLIB_DEFAULT_NO], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=])]) + AC_ARG_ENABLE([threads], +AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ +AC_HELP_STRING([--disable-threads], [build without multithread safety])]), + [gl_use_threads=$enableval], + [if test -n "$gl_use_threads_default"; then + gl_use_threads="$gl_use_threads_default" + else +changequote(,)dnl + case "$host_os" in + dnl Disable multithreading by default on OSF/1, because it interferes + dnl with fork()/exec(): When msgexec is linked with -lpthread, its + dnl child process gets an endless segmentation fault inside execvp(). + dnl Disable multithreading by default on Cygwin 1.5.x, because it has + dnl bugs that lead to endless loops or crashes. See + dnl . + osf*) gl_use_threads=no ;; + cygwin*) + case `uname -r` in + 1.[0-5].*) gl_use_threads=no ;; + *) gl_use_threads=yes ;; + esac + ;; + *) gl_use_threads=yes ;; + esac +changequote([,])dnl + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # For using : + case "$host_os" in + osf*) + # On OSF/1, the compiler needs the flag -D_REENTRANT so that it + # groks . cc also understands the flag -pthread, but + # we don't use it because 1. gcc-2.95 doesn't understand -pthread, + # 2. putting a flag into CPPFLAGS that has an effect on the linker + # causes the AC_LINK_IFELSE test below to succeed unexpectedly, + # leading to wrong values of LIBTHREAD and LTLIBTHREAD. + CPPFLAGS="$CPPFLAGS -D_REENTRANT" + ;; + esac + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in . + case "$host_os" in + aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; + esac + fi +]) +m4trace:m4/threadlib.m4:107: -1- AC_DEFUN([gl_THREADLIB_BODY], [ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) + gl_threads_api=none + LIBTHREAD= + LTLIBTHREAD= + LIBMULTITHREAD= + LTLIBMULTITHREAD= + if test "$gl_use_threads" != no; then + dnl Check whether the compiler and linker support weak declarations. + AC_CACHE_CHECK([whether imported symbols can be declared weak], + [gl_cv_have_weak], + [gl_cv_have_weak=no + dnl First, test whether the compiler accepts it syntactically. + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[extern void xyzzy (); +#pragma weak xyzzy]], + [[xyzzy();]])], + [gl_cv_have_weak=maybe]) + if test $gl_cv_have_weak = maybe; then + dnl Second, test whether it actually works. On Cygwin 1.7.2, with + dnl gcc 4.3, symbols declared weak always evaluate to the address 0. + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#pragma weak fputs +int main () +{ + return (fputs == NULL); +}]])], + [gl_cv_have_weak=yes], + [gl_cv_have_weak=no], + [dnl When cross-compiling, assume that only ELF platforms support + dnl weak symbols. + AC_EGREP_CPP([Extensible Linking Format], + [#ifdef __ELF__ + Extensible Linking Format + #endif + ], + [gl_cv_have_weak="guessing yes"], + [gl_cv_have_weak="guessing no"]) + ]) + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that + # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. + AC_CHECK_HEADER([pthread.h], + [gl_have_pthread_h=yes], [gl_have_pthread_h=no]) + if test "$gl_have_pthread_h" = yes; then + # Other possible tests: + # -lpthreads (FSU threads, PCthreads) + # -lgthreads + gl_have_pthread= + # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist + # in libc. IRIX 6.5 has the first one in both libc and libpthread, but + # the second one only in libpthread, and lock.c needs it. + # + # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04 + # needs -pthread for some reason. See: + # http://lists.gnu.org/archive/html/bug-gnulib/2014-09/msg00023.html + save_LIBS=$LIBS + for gl_pthread in '' '-pthread'; do + LIBS="$LIBS $gl_pthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + pthread_mutex_t m; + pthread_mutexattr_t ma; + ]], + [[pthread_mutex_lock (&m); + pthread_mutexattr_init (&ma);]])], + [gl_have_pthread=yes + LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread + LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread]) + LIBS=$save_LIBS + test -n "$gl_have_pthread" && break + done + + # Test for libpthread by looking for pthread_kill. (Not pthread_self, + # since it is defined as a macro on OSF/1.) + if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then + # The program links fine without libpthread. But it may actually + # need to link with libpthread in order to create multiple threads. + AC_CHECK_LIB([pthread], [pthread_kill], + [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread + # On Solaris and HP-UX, most pthread functions exist also in libc. + # Therefore pthread_in_use() needs to actually try to create a + # thread: pthread_create from libc will fail, whereas + # pthread_create will actually create a thread. + case "$host_os" in + solaris* | hpux*) + AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], + [Define if the pthread_in_use() detection is hard.]) + esac + ]) + elif test -z "$gl_have_pthread"; then + # Some library is needed. Try libpthread and libc_r. + AC_CHECK_LIB([pthread], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread]) + if test -z "$gl_have_pthread"; then + # For FreeBSD 4. + AC_CHECK_LIB([c_r], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r + LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r]) + fi + fi + if test -n "$gl_have_pthread"; then + gl_threads_api=posix + AC_DEFINE([USE_POSIX_THREADS], [1], + [Define if the POSIX multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_POSIX_THREADS_WEAK], [1], + [Define if references to the POSIX multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then + gl_have_solaristhread= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[thr_self();]])], + [gl_have_solaristhread=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_solaristhread"; then + gl_threads_api=solaris + LIBTHREAD=-lthread + LTLIBTHREAD=-lthread + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_SOLARIS_THREADS], [1], + [Define if the old Solaris multithreading library can be used.]) + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1], + [Define if references to the old Solaris multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + if test "$gl_use_threads" = pth; then + gl_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_LINKFLAGS([pth]) + gl_have_pth= + gl_save_LIBS="$LIBS" + LIBS="$LIBS $LIBPTH" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include ]], [[pth_self();]])], + [gl_have_pth=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_pth"; then + gl_threads_api=pth + LIBTHREAD="$LIBPTH" + LTLIBTHREAD="$LTLIBPTH" + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_PTH_THREADS], [1], + [Define if the GNU Pth multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_PTH_THREADS_WEAK], [1], + [Define if references to the GNU Pth multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + else + CPPFLAGS="$gl_save_CPPFLAGS" + fi + fi + if test -z "$gl_have_pthread"; then + case "$gl_use_threads" in + yes | windows | win32) # The 'win32' is for backward compatibility. + if { case "$host_os" in + mingw*) true;; + *) false;; + esac + }; then + gl_threads_api=windows + AC_DEFINE([USE_WINDOWS_THREADS], [1], + [Define if the native Windows multithreading API can be used.]) + fi + ;; + esac + fi + fi + AC_MSG_CHECKING([for multithread API to use]) + AC_MSG_RESULT([$gl_threads_api]) + AC_SUBST([LIBTHREAD]) + AC_SUBST([LTLIBTHREAD]) + AC_SUBST([LIBMULTITHREAD]) + AC_SUBST([LTLIBMULTITHREAD]) +]) +m4trace:m4/threadlib.m4:318: -1- AC_DEFUN([gl_THREADLIB], [ + AC_REQUIRE([gl_THREADLIB_EARLY]) + AC_REQUIRE([gl_THREADLIB_BODY]) +]) +m4trace:m4/threadlib.m4:331: -1- AC_DEFUN([gl_DISABLE_THREADS], [ + m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no]) +]) +m4trace:m4/uintmax_t.m4:14: -1- AC_DEFUN([gl_AC_TYPE_UINTMAX_T], [ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type], + [Define to unsigned long or unsigned long long + if and don't define.]) + else + AC_DEFINE([HAVE_UINTMAX_T], [1], + [Define if you have the 'uintmax_t' type in or .]) + fi +]) +m4trace:m4/visibility.m4:23: -1- AC_DEFUN([gl_VISIBILITY], [ + AC_REQUIRE([AC_PROG_CC]) + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + dnl First, check whether -Werror can be added to the command line, or + dnl whether it leads to an error because of some other option that the + dnl user has put into $CC $CFLAGS $CPPFLAGS. + AC_MSG_CHECKING([whether the -Werror option is usable]) + AC_CACHE_VAL([gl_cv_cc_vis_werror], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Werror" + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[]], [[]])], + [gl_cv_cc_vis_werror=yes], + [gl_cv_cc_vis_werror=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_vis_werror]) + dnl Now check whether visibility declarations are supported. + AC_MSG_CHECKING([for simple visibility declarations]) + AC_CACHE_VAL([gl_cv_cc_visibility], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + dnl We use the option -Werror and a function dummyfunc, because on some + dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning + dnl "visibility attribute not supported in this configuration; ignored" + dnl at the first function definition in every compilation unit, and we + dnl don't want to use the option in this case. + if test $gl_cv_cc_vis_werror = yes; then + CFLAGS="$CFLAGS -Werror" + fi + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); + void dummyfunc (void) {} + ]], + [[]])], + [gl_cv_cc_visibility=yes], + [gl_cv_cc_visibility=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_visibility]) + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + AC_SUBST([CFLAG_VISIBILITY]) + AC_SUBST([HAVE_VISIBILITY]) + AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], + [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) +]) +m4trace:m4/warn-on-use.m4:26: -1- AC_DEFUN([gl_WARN_ON_USE_PREPARE], [ + m4_ifdef([gl_POSIXCHECK], + [m4_foreach_w([gl_decl], [$2], + [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 + 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], + [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])])]) + 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 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 + ]) +]) +m4trace:m4/wchar_t.m4:11: -1- AC_DEFUN([gt_TYPE_WCHAR_T], [ + AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + wchar_t foo = (wchar_t)'\0';]], + [[]])], + [gt_cv_c_wchar_t=yes], + [gt_cv_c_wchar_t=no])]) + if test $gt_cv_c_wchar_t = yes; then + AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.]) + fi +]) +m4trace:m4/wint_t.m4:11: -1- AC_DEFUN([gt_TYPE_WINT_T], [ + AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be included + before . */ +#include +#include +#include +#include + wint_t foo = (wchar_t)'\0';]], + [[]])], + [gt_cv_c_wint_t=yes], + [gt_cv_c_wint_t=no])]) + if test $gt_cv_c_wint_t = yes; then + AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.]) + fi +]) +m4trace:m4/xsize.m4:7: -1- AC_DEFUN([gl_XSIZE], [ + dnl Prerequisites of lib/xsize.h. + AC_REQUIRE([gl_SIZE_MAX]) + AC_CHECK_HEADERS([stdint.h]) +]) +m4trace:m4/year2038.m4:10: -1- 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 +]) +m4trace:m4/year2038.m4:23: -1- AC_DEFUN([gl_YEAR2038_TEST_INCLUDES], [[ + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; +]]) +m4trace:m4/year2038.m4:36: -1- 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]) +]) +m4trace:m4/year2038.m4:121: -1- AC_DEFUN([gl_YEAR2038], [ + gl_YEAR2038_BODY([require-year2038-safe]) +]) +m4trace:m4/zzgnulib.m4:23: -1- AC_DEFUN([gl_ZZGNULIB]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section 'AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:19: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:35: -1- AM_INIT_AUTOMAKE([1.16.1 foreign -Werror -Wall]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:35: -1- AM_SET_CURRENT_AUTOMAKE_VERSION +m4trace:configure.ac:35: -1- AM_AUTOMAKE_VERSION([1.18.1]) +m4trace:configure.ac:35: -1- _AM_AUTOCONF_VERSION([2.73]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:35: -1- _AM_SET_OPTIONS([1.16.1 foreign -Werror -Wall]) +m4trace:configure.ac:35: -1- _AM_SET_OPTION([1.16.1]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([1.16.1]) +m4trace:configure.ac:35: -1- _AM_SET_OPTION([foreign]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([foreign]) +m4trace:configure.ac:35: -1- _AM_SET_OPTION([-Werror]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([-Werror]) +m4trace:configure.ac:35: -1- _AM_SET_OPTION([-Wall]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([-Wall]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([no-define]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AM_SANITY_CHECK +m4trace:configure.ac:35: -1- _AM_FILESYSTEM_TIMESTAMP_RESOLUTION +m4trace:configure.ac:35: -1- _AM_SLEEP_FRACTIONAL_SECONDS +m4trace:configure.ac:35: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +m4trace:configure.ac:35: -1- AM_MISSING_HAS_RUN +m4trace:configure.ac:35: -1- AM_AUX_DIR_EXPAND +m4trace:configure.ac:35: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:35: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:35: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:35: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:35: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:35: -1- AM_PROG_INSTALL_SH +m4trace:configure.ac:35: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:35: -1- AM_PROG_INSTALL_STRIP +m4trace:configure.ac:35: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:35: -1- AM_SET_LEADING_DOT +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:35: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])], + [_AM_PROG_TAR([ustar])])])]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([tar-ustar]) +m4trace:configure.ac:35: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])], + [_AM_PROG_TAR([ustar])])]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([tar-pax]) +m4trace:configure.ac:35: -1- _AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])], [_AM_PROG_TAR([ustar])]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([tar-v7]) +m4trace:configure.ac:35: -1- _AM_PROG_TAR([ustar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:35: -1- AM_RUN_LOG([$_am_tar --version]) +m4trace:configure.ac:35: -1- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) +m4trace:configure.ac:35: -1- AM_RUN_LOG([$am__untar +#if HAVE_SYS_LOADAVG_H +/* OpenIndiana has a bug: must be included before + . */ +# include +# include +#endif +#if HAVE_RANDOM_H +# include +#endif + ]], [getloadavg]) +m4trace:configure.ac:43: -1- gl_STDLIB_H_REQUIRE_DEFAULTS +m4trace:configure.ac:43: -1- gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GNULIB_GETLOADAVG$]) +m4trace:configure.ac:43: -1- gl_GETLOADAVG +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBKSTAT$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBPERFSTAT$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^DGUX$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBDGC$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GETLOADAVG_LIBS$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_SYS_LOADAVG_H$]) +m4trace:configure.ac:43: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:43: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:43: -1- gl_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_TRUE$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- AM_COND_IF([GL_COND_OBJ_GETLOADAVG], [ + gl_PREREQ_GETLOADAVG + ]) +m4trace:configure.ac:43: -1- gl_PREREQ_GETLOADAVG +m4trace:configure.ac:43: -1- AC_DEFUN([_AC_Header_sys_param_h], [m4_divert_text([INIT_PREPARE], + [AS_VAR_APPEND([ac_header_]]_AC_LANG_ABBREV[[_list], + [" sys/param.h ]AS_TR_SH([sys/param.h]) AS_TR_CPP([HAVE_sys/param.h])["])])_AC_HEADERS_EXPANSION(_AC_LANG_ABBREV)]) +m4trace:configure.ac:43: -1- AC_DEFUN([_AC_Header_unistd_h], [m4_divert_text([INIT_PREPARE], + [AS_VAR_APPEND([ac_header_]]_AC_LANG_ABBREV[[_list], + [" unistd.h ]AS_TR_SH([unistd.h]) AS_TR_CPP([HAVE_unistd.h])["])])_AC_HEADERS_EXPANSION(_AC_LANG_ABBREV)]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_PSTAT_GETDYNAMIC$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^SVR4$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX4_3$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_MACH_MACH_H$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_NLIST_H$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_STRUCT_NLIST_N_UN_N_NAME$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^N_NAME_POINTER$]) +m4trace:configure.ac:43: -1- gl_STDLIB_MODULE_INDICATOR([getloadavg]) +m4trace:configure.ac:43: -1- gl_STDLIB_H_REQUIRE_DEFAULTS +m4trace:configure.ac:43: -1- gl_MODULE_INDICATOR_SET_VARIABLE([getloadavg]) +m4trace:configure.ac:43: -1- gl_MODULE_INDICATOR_SET_VARIABLE_AUX([GL_MODULE_INDICATOR_PREFIX[]_GNULIB_[]m4_translit([[getloadavg]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], [gl_MODULE_INDICATOR_CONDITION]) +m4trace:configure.ac:43: -1- gl_MODULE_INDICATOR_FOR_TESTS([getloadavg]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GNULIB_TEST_GETLOADAVG$]) +m4trace:configure.ac:43: -1- gl_HOST_CPU_C_ABI +m4trace:configure.ac:43: -1- gl_C_ASM +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU_C_ABI$]) +m4trace:configure.ac:43: -1- gl_LARGEFILE +m4trace:configure.ac:43: -1- AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_TRUE$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB$]) +m4trace:configure.ac:43: -1- pds_AC_DOS_PATHS +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:43: -1- gl_STDBOOL_H +m4trace:configure.ac:43: -1- AC_CHECK_HEADER_STDBOOL +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- gl_CONDITIONAL_HEADER([stdbool.h]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STDBOOL_H$]) +m4trace:configure.ac:43: -1- gl_CONDITIONAL([GL_GENERATE_STDBOOL_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_TRUE$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- gl_COMMON +m4trace:configure.ac:43: -1- m4_pattern_allow([^gltests_WITNESS$]) +m4trace:configure.ac:43: -1- gl_CC_GNULIB_WARNINGS +m4trace:configure.ac:43: -1- gl_CC_ALLOW_WARNINGS +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_ALLOW_WARNINGS$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_GNULIB_WARNINGS$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LIBDEPS$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LTLIBDEPS$]) +m4trace:configure.ac:46: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^PERL$]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^WORDS_BIGENDIAN$]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$]) +m4trace:configure.ac:57: -1- AM_GNU_GETTEXT_VERSION([0.19.4]) +m4trace:configure.ac:58: -1- AM_GNU_GETTEXT([external]) +m4trace:configure.ac:58: -1- AM_GNU_GETTEXT_NEED([]) +m4trace:configure.ac:58: -1- AM_PO_SUBDIRS +m4trace:configure.ac:58: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:58: -1- AM_NLS +m4trace:configure.ac:58: -1- m4_pattern_allow([^USE_NLS$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$]) +m4trace:configure.ac:58: -1- AM_PATH_PROG_WITH_TEST([MSGFMT], [msgfmt], [$ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], [:]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT_015$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT_015$]) +m4trace:configure.ac:58: -1- AM_PATH_PROG_WITH_TEST([XGETTEXT], [xgettext], [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], [:]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_015$]) +m4trace:configure.ac:58: -1- AM_PATH_PROG_WITH_TEST([MSGMERGE], [msgmerge], [$ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1], [:]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGMERGE$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$]) +m4trace:configure.ac:58: -1- AC_LIB_PREPARE_PREFIX +m4trace:configure.ac:58: -1- AC_LIB_RPATH +m4trace:configure.ac:58: -1- AC_LIB_PROG_LD +m4trace:configure.ac:58: -1- AC_LIB_PROG_LD_GNU +m4trace:configure.ac:58: -1- AM_ICONV_LINKFLAGS_BODY +m4trace:configure.ac:58: -1- AC_LIB_LINKFLAGS_BODY([iconv]) +m4trace:configure.ac:58: -1- AC_LIB_PREPARE_MULTILIB +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- gt_INTL_MACOSX +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$]) +m4trace:configure.ac:58: -1- AM_ICONV_LINK +m4trace:configure.ac:58: -1- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_ICONV$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBICONV$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBICONV$]) +m4trace:configure.ac:58: -1- AC_LIB_LINKFLAGS_BODY([intl]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^ENABLE_NLS$]) +m4trace:configure.ac:58: -1- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_GETTEXT$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_DCGETTEXT$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTLLIBS$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBINTL$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBINTL$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^POSUB$]) +m4trace:configure.ac:65: -1- m4_pattern_allow([^STAT_MACROS_BROKEN$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LOCALE_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_UNISTD_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LIMITS_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_FCNTL_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STRING_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_MEMORY_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_RESOURCE_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIMEB_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIME_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_SELECT_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_FILE_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SPAWN_H$]) +m4trace:configure.ac:71: -1- AM_PROG_CC_C_O +m4trace:configure.ac:72: -1- m4_pattern_allow([^const$]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^uid_t$]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^gid_t$]) +m4trace:configure.ac:74: -1- m4_pattern_allow([^pid_t$]) +m4trace:configure.ac:75: -1- m4_pattern_allow([^off_t$]) +m4trace:configure.ac:76: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:77: -1- m4_pattern_allow([^ssize_t$]) +m4trace:configure.ac:78: -1- AC_TYPE_LONG_LONG_INT +m4trace:configure.ac:78: -1- AC_TYPE_UNSIGNED_LONG_LONG_INT +m4trace:configure.ac:78: -1- _AC_TYPE_LONG_LONG_SNIPPET +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_INTMAX_T$]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^intmax_t$]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^HAVE_UINTMAX_T$]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^uintmax_t$]) +m4trace:configure.ac:82: -1- gt_TYPE_SIG_ATOMIC_T +m4trace:configure.ac:82: -1- m4_pattern_allow([^HAVE_SIG_ATOMIC_T$]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^sig_atomic_t$]) +m4trace:configure.ac:86: -1- AC_STRUCT_ST_MTIM_NSEC +m4trace:configure.ac:86: -1- _m4_warn([obsolete], [The macro 'AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:2903: AC_TRY_COMPILE is expanded from... +lib/m4sugar/m4sh.m4:689: _AS_IF_ELSE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:2305: AC_CACHE_VAL is expanded from... +./lib/autoconf/general.m4:2326: AC_CACHE_CHECK is expanded from... +m4/acinclude.m4:105: AC_STRUCT_ST_MTIM_NSEC is expanded from... +configure.ac:86: the top level]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^ST_MTIM_NSEC$]) +m4trace:configure.ac:99: -1- m4_pattern_allow([^FILE_TIMESTAMP_HI_RES$]) +m4trace:configure.ac:102: -1- m4_pattern_allow([^HAVE_CLOCK_GETTIME$]) +m4trace:configure.ac:127: -1- m4_pattern_allow([^HAVE_GETTIMEOFDAY$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRTOLL$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRDUP$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRNDUP$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STPCPY$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMRCHR$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMPCPY$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_UMASK$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKSTEMP$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKTEMP$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_FDOPEN$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP2$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETCWD$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_REALPATH$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGSETMASK$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGACTION$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETGROUPS$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEUID$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEGID$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETLINEBUF$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREUID$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREGID$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKFIFO$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETRLIMIT$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETRLIMIT$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETVBUF$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PIPE$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRERROR$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRSIGNAL$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_LSTAT$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_READLINK$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ATEXIT$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ISATTY$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_TTYNAME$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PSELECT$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWN$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWNATTR_SETSIGMASK$]) +m4trace:configure.ac:142: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:142: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:142: -1- m4_pattern_allow([^HAVE_DECL_BSD_SIGNAL$]) +m4trace:configure.ac:145: -1- AC_DEFUN([_AC_Header_vfork_h], [m4_divert_text([INIT_PREPARE], + [AS_VAR_APPEND([ac_header_]]_AC_LANG_ABBREV[[_list], + [" vfork.h ]AS_TR_SH([vfork.h]) AS_TR_CPP([HAVE_vfork.h])["])])_AC_HEADERS_EXPANSION(_AC_LANG_ABBREV)]) +m4trace:configure.ac:145: -1- AC_DEFUN([_AC_Func_fork], [m4_divert_text([INIT_PREPARE], + [AS_VAR_APPEND([ac_func_]]_AC_LANG_ABBREV[[_list], + [" fork ]AS_TR_CPP([HAVE_fork])["])])_AC_FUNCS_EXPANSION(_AC_LANG_ABBREV)]) +m4trace:configure.ac:145: -1- AC_DEFUN([_AC_Func_vfork], [m4_divert_text([INIT_PREPARE], + [AS_VAR_APPEND([ac_func_]]_AC_LANG_ABBREV[[_list], + [" vfork ]AS_TR_CPP([HAVE_vfork])["])])_AC_FUNCS_EXPANSION(_AC_LANG_ABBREV)]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_VFORK$]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^vfork$]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_FORK$]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCASECMP$]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCASECMP$]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCMPI$]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCMPI$]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRICMP$]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNICMP$]) +m4trace:configure.ac:153: -1- m4_pattern_allow([^HAVE_STRCOLL$]) +m4trace:configure.ac:154: -1- m4_pattern_allow([^CLOSEDIR_VOID$]) +m4trace:configure.ac:157: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_TYPE$]) +m4trace:configure.ac:165: -1- PKG_PROG_PKG_CONFIG +m4trace:configure.ac:165: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:167: -1- PKG_CHECK_EXISTS([guile-$v], [guile_version=$v; have_guile=yes; break], []) +m4trace:configure.ac:167: -1- PKG_CHECK_MODULES([GUILE], [guile-$guile_version]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_CFLAGS$]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_LIBS$]) +m4trace:configure.ac:167: -1- PKG_CHECK_EXISTS([guile-$guile_version], [pkg_cv_[]GUILE_CFLAGS=`$PKG_CONFIG --[]cflags "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) +m4trace:configure.ac:167: -1- PKG_CHECK_EXISTS([guile-$guile_version], [pkg_cv_[]GUILE_LIBS=`$PKG_CONFIG --[]libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) +m4trace:configure.ac:167: -1- _PKG_SHORT_ERRORS_SUPPORTED +m4trace:configure.ac:167: -1- m4_pattern_allow([^HAVE_GUILE$]) +m4trace:configure.ac:210: -1- AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = "yes"]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_TRUE$]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_FALSE$]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:212: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:212: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:212: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL__SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:212: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL___SYS_SIGLIST$]) +m4trace:configure.ac:223: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAITPID$]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAIT3$]) +m4trace:configure.ac:247: -1- m4_pattern_allow([^HAVE_UNION_WAIT$]) +m4trace:configure.ac:254: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:260: -1- m4_pattern_allow([^REMOTE$]) +m4trace:configure.ac:262: -1- CF_NETLIBS +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTNAME$]) +m4trace:configure.ac:262: -1- CF_RECHECK_FUNC([gethostname], [nsl], [cf_cv_netlibs], [ + CF_RECHECK_FUNC(gethostname,socket,cf_cv_netlibs)]) +m4trace:configure.ac:262: -1- CF_UPPER([cf_tr_func], [gethostname]) +m4trace:configure.ac:262: -1- CF_RECHECK_FUNC([gethostname], [socket], [cf_cv_netlibs]) +m4trace:configure.ac:262: -1- CF_UPPER([cf_tr_func], [gethostname]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_SOCKET$]) +m4trace:configure.ac:262: -1- CF_RECHECK_FUNC([socket], [socket], [cf_cv_netlibs], [ + CF_RECHECK_FUNC(socket,bsd,cf_cv_netlibs)]) +m4trace:configure.ac:262: -1- CF_UPPER([cf_tr_func], [socket]) +m4trace:configure.ac:262: -1- CF_RECHECK_FUNC([socket], [bsd], [cf_cv_netlibs]) +m4trace:configure.ac:262: -1- CF_UPPER([cf_tr_func], [socket]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME$]) +m4trace:configure.ac:262: -1- CF_RECHECK_FUNC([gethostbyname], [nsl], [cf_cv_netlibs]) +m4trace:configure.ac:262: -1- CF_UPPER([cf_tr_func], [gethostbyname]) +m4trace:configure.ac:262: -1- _m4_warn([obsolete], [The macro 'AC_FD_MSG' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:401: AC_FD_MSG is expanded from... +m4/acinclude.m4:38: CF_NETLIBS is expanded from... +lib/m4sugar/m4sh.m4:594: AS_CASE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:1603: AC_ARG_WITH is expanded from... +configure.ac:262: the top level]) +m4trace:configure.ac:281: -1- AM_CONDITIONAL([USE_CUSTOMS], [test "$use_customs" = true]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_TRUE$]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_FALSE$]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:285: -1- m4_pattern_allow([^HAVE_CASE_INSENSITIVE_FS$]) +m4trace:configure.ac:305: -1- m4_pattern_allow([^HAVE_SA_RESTART$]) +m4trace:configure.ac:318: -1- m4_pattern_allow([^MAKE_JOBSERVER$]) +m4trace:configure.ac:325: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:325: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLOPEN$]) +m4trace:configure.ac:325: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:325: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLSYM$]) +m4trace:configure.ac:325: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:325: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLERROR$]) +m4trace:configure.ac:341: -1- m4_pattern_allow([^MAKE_LOAD$]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:371: -1- m4_pattern_allow([^MAKE_SYMLINKS$]) +m4trace:configure.ac:403: -1- m4_pattern_allow([^USE_POSIX_SPAWN$]) +m4trace:configure.ac:415: -1- m4_pattern_allow([^SCCS_GET$]) +m4trace:configure.ac:419: -1- m4_pattern_allow([^SCCS_GET_MINUS_G$]) +m4trace:configure.ac:437: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:439: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:442: -1- AM_CONDITIONAL([WINDOWSENV], [false]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AM_CONDITIONAL([WINDOWSENV], [true]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWS32$]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:452: -1- m4_pattern_allow([^PATH_SEPARATOR_CHAR$]) +m4trace:configure.ac:455: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:460: -1- m4_pattern_allow([^MK_CONFIGURE$]) +m4trace:configure.ac:469: -1- m4_pattern_allow([^MAINT_MAKEFILE$]) +m4trace:configure.ac:472: -1- AM_WITH_DMALLOC +m4trace:configure.ac:472: -1- m4_pattern_allow([^WITH_DMALLOC$]) +m4trace:configure.ac:532: -1- 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]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_TRUE$]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_FALSE$]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJS$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"]) +m4trace:configure.ac:547: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS +m4trace:configure.ac:547: -1- AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/traces.1 b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.1 new file mode 100644 index 0000000000..b993291c6f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.1 @@ -0,0 +1,2193 @@ +m4trace:aclocal.m4:1064: -1- AC_SUBST([am__quote]) +m4trace:aclocal.m4:1064: -1- AC_SUBST_TRACE([am__quote]) +m4trace:aclocal.m4:1064: -1- m4_pattern_allow([^am__quote$]) +m4trace:aclocal.m4:1720: -1- m4_include([m4/00gnulib.m4]) +m4trace:aclocal.m4:1721: -1- m4_include([m4/acinclude.m4]) +m4trace:aclocal.m4:1722: -1- m4_include([m4/alloca.m4]) +m4trace:aclocal.m4:1723: -1- m4_include([m4/asm-underscore.m4]) +m4trace:aclocal.m4:1724: -1- m4_include([m4/dospaths.m4]) +m4trace:aclocal.m4:1725: -1- m4_include([m4/eaccess.m4]) +m4trace:aclocal.m4:1726: -1- m4_include([m4/extensions.m4]) +m4trace:aclocal.m4:1727: -1- m4_include([m4/findprog-in.m4]) +m4trace:aclocal.m4:1728: -1- m4_include([m4/getloadavg.m4]) +m4trace:aclocal.m4:1729: -1- m4_include([m4/gettext.m4]) +m4trace:aclocal.m4:1730: -1- m4_include([m4/gnulib-common.m4]) +m4trace:aclocal.m4:1731: -1- m4_include([m4/gnulib-comp.m4]) +m4trace:aclocal.m4:1732: -1- m4_include([m4/host-cpu-c-abi.m4]) +m4trace:aclocal.m4:1733: -1- m4_include([m4/iconv.m4]) +m4trace:aclocal.m4:1734: -1- m4_include([m4/intlmacosx.m4]) +m4trace:aclocal.m4:1735: -1- m4_include([m4/largefile.m4]) +m4trace:aclocal.m4:1736: -1- m4_include([m4/lib-ld.m4]) +m4trace:aclocal.m4:1737: -1- m4_include([m4/lib-link.m4]) +m4trace:aclocal.m4:1738: -1- m4_include([m4/lib-prefix.m4]) +m4trace:aclocal.m4:1739: -1- m4_include([m4/longlong.m4]) +m4trace:aclocal.m4:1740: -1- m4_include([m4/nls.m4]) +m4trace:aclocal.m4:1741: -1- m4_include([m4/po.m4]) +m4trace:aclocal.m4:1742: -1- m4_include([m4/progtest.m4]) +m4trace:aclocal.m4:1743: -1- m4_include([m4/sig_atomic_t.m4]) +m4trace:aclocal.m4:1744: -1- m4_include([m4/stdbool.m4]) +m4trace:aclocal.m4:1745: -1- m4_include([m4/warn-on-use.m4]) +m4trace:aclocal.m4:1746: -1- m4_include([m4/year2038.m4]) +m4trace:aclocal.m4:1747: -1- m4_include([m4/zzgnulib.m4]) +m4trace:configure.ac:19: -1- AC_INIT([GNU Make], [4.4], [bug-make@gnu.org]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section 'AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:19: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:19: -1- AC_SUBST([SHELL]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:19: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_URL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:19: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:19: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:19: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:19: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([runstatedir], ['${localstatedir}/run']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([runstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:19: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:19: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:19: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +@%:@undef PACKAGE_NAME]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +@%:@undef PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +@%:@undef PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +@%:@undef PACKAGE_STRING]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +@%:@undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ +@%:@undef PACKAGE_URL]) +m4trace:configure.ac:19: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:19: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:19: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:24: -1- AC_CONFIG_AUX_DIR([build-aux]) +m4trace:configure.ac:26: -1- AC_CONFIG_HEADERS([src/config.h]) +m4trace:configure.ac:28: -1- AC_CONFIG_LIBOBJ_DIR([lib]) +m4trace:configure.ac:35: -1- AM_INIT_AUTOMAKE([1.16.1 foreign -Werror -Wall]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:35: -1- AM_AUTOMAKE_VERSION([1.18.1]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_DATA]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__isrc]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:35: -1- AC_SUBST([CYGPATH_W]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CYGPATH_W]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:35: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([PACKAGE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([VERSION]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ +@%:@undef PACKAGE]) +m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AH_OUTPUT([VERSION], [/* Version number of package */ +@%:@undef VERSION]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([missing]) +m4trace:configure.ac:35: -1- AC_SUBST([ACLOCAL]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ACLOCAL]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOCONF]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOCONF]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOMAKE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOMAKE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOHEADER]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOHEADER]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:35: -1- AC_SUBST([MAKEINFO]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MAKEINFO]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:35: -1- AC_SUBST([install_sh]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([install_sh]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:35: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:35: -1- AC_SUBST([MKDIR_P]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MKDIR_P]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:35: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([mkdir_p]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:35: -1- AC_SUBST([AWK]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AWK]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:35: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([SET_MAKE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__leading_dot]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__leading_dot]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:35: -1- AC_SUBST([AMTAR], ['$${TAR-tar}']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMTAR]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__tar]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__tar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__tar$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__untar]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__untar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__untar$]) +m4trace:configure.ac:35: -1- AC_SUBST([CTAGS]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CTAGS]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CTAGS$]) +m4trace:configure.ac:35: -1- AC_SUBST([ETAGS]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ETAGS]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^ETAGS$]) +m4trace:configure.ac:35: -1- AC_SUBST([CSCOPE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CSCOPE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CSCOPE$]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_V]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_V]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AC_SUBST([am__rm_f_notfound]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__rm_f_notfound]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__rm_f_notfound$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__xargs_n]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__xargs_n]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__xargs_n$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX, Interix, z/OS. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable extensions on Cosmopolitan Libc. */ +#ifndef _COSMO_SOURCE +# undef _COSMO_SOURCE +#endif +/* Enable general extensions on macOS. */ +#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 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 compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* 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 +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE +#endif +]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDIO_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDIO_H]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([EXEEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:38: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OBJEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:38: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:38: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DEPDIR]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^DEPDIR$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__include]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__include]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__include$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__nodep]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__nodep$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_INTTYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDINT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRINGS_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_STAT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if all of the C89 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]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_WCHAR_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_MINIX_CONFIG_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MINIX_CONFIG_H]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_ALL_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_COSMO_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_COSMO_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_DARWIN_C_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_DARWIN_C_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_GNU_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_HPUX_ALT_XOPEN_SOCKET_API]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_HPUX_ALT_XOPEN_SOCKET_API$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_NETBSD_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_NETBSD_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_OPENBSD_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_OPENBSD_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_ATTRIBS_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_BFP_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_BFP_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_DFP_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_DFP_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_FUNCS_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_FUNCS_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_TYPES_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_TYPES_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_LIB_EXT2__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_LIB_EXT2__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_MATH_SPEC_FUNCS__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_MATH_SPEC_FUNCS__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_TANDEM_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_MINIX]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_MINIX$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_1_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__EXTENSIONS__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_XOPEN_SOURCE$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:39: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:39: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:39: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:42: -1- m4_pattern_forbid([^gl_[A-Z]]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_ES$]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:42: -1- AC_CANONICAL_HOST +m4trace:configure.ac:42: -1- AC_CANONICAL_BUILD +m4trace:configure.ac:42: -1- AC_REQUIRE_AUX_FILE([config.sub]) +m4trace:configure.ac:42: -1- AC_REQUIRE_AUX_FILE([config.guess]) +m4trace:configure.ac:42: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_cpu], [$[1]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_cpu]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_vendor], [$[2]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_vendor]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_os]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_os]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:42: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_cpu], [$[1]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_cpu]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_vendor], [$[2]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_vendor]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_os]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_os]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_ISOC11_SOURCE]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_ISOC11_SOURCE$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_ISOC11_SOURCE], [/* Define to enable the declarations of ISO C 11 types and functions. */ +@%:@undef _ISOC11_SOURCE]) +m4trace:configure.ac:42: -1- AC_SUBST([CPP]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:42: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:42: -1- AC_SUBST([CPP]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:42: -1- AC_SUBST([AR]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:42: -1- AC_SUBST([AR]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:42: -1- AC_SUBST([ARFLAGS]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([ARFLAGS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^ARFLAGS$]) +m4trace:configure.ac:42: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:42: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +@%:@undef _FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_LARGE_FILES$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */ +@%:@undef _LARGE_FILES]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_TIME_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_TIME_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_TIME_BITS], [/* Number of bits in a timestamp, on hosts where this is settable. */ +@%:@undef _TIME_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +@%:@undef _FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([__MINGW_USE_VC2005_COMPAT]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^__MINGW_USE_VC2005_COMPAT$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([__MINGW_USE_VC2005_COMPAT], [/* For 64-bit time_t on 32-bit mingw. */ +@%:@undef __MINGW_USE_VC2005_COMPAT]) +m4trace:configure.ac:43: -1- AC_CONFIG_LIBOBJ_DIR([lib]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_LIBTOOL], [false]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_LIBTOOL_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_LIBTOOL_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- AH_OUTPUT([_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 +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([_Noreturn], [/* The _Noreturn keyword of C11. */ +#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) \\ + || (!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 _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) +# else +# define _Noreturn +# endif +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([isoc99_inline], [/* 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__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif]) +m4trace:configure.ac:43: -1- AH_OUTPUT([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_HAS_C_ATTRIBUTE(attr) 0 +#endif + + +/* _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_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_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires \'cold\' not \'__cold__\'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via \'free\'; it can be used only after declaring \'free\'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib\'s or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with \'-fwhole-program\'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following \'case\' or + \'default\' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a \'switch\' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with \'__\'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC\'s syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type \'[[un]signed] char\'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function\'s return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don\'t use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + + +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the \'__attribute__ ((__unused__)) ;\' + syntax. But clang does. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([async_safe], [/* The _GL_ASYNC_SAFE marker should be attached to functions that are + signal handlers (for signals other than SIGABRT, SIGPIPE) or can be + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked \'volatile\'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable \'signal_occurred\' is not declared \'volatile\'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([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))) +]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([size_t], [/* Define as \'unsigned int\' if doesn\'t define. */ +@%:@undef size_t]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if works. */ +@%:@undef HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \'alloca\', as a function or macro. */ +@%:@undef HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^ALLOCA$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^C_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using \'alloca.c\'. */ +@%:@undef C_ALLOCA]) +m4trace:configure.ac:43: -1- AH_OUTPUT([STACK_DIRECTION], [/* 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. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STACK_DIRECTION$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \'alloca\' after including , a header that + may be supplied by this distribution. */ +@%:@undef HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) +m4trace:configure.ac:43: -1- AC_SUBST([ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^ALLOCA_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_ALLOCA_H_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_ALLOCA_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([eaccess]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^eaccess$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([eaccess], [/* Define as \'access\' if you don\'t have the eaccess() function. */ +@%:@undef eaccess]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GNULIB_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBKSTAT], [/* Define to 1 if you have the \'kstat\' library (-lkstat). */ +@%:@undef HAVE_LIBKSTAT]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBKSTAT]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBKSTAT$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBPERFSTAT], [/* Define to 1 if you have the \'perfstat\' library (-lperfstat). */ +@%:@undef HAVE_LIBPERFSTAT]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPERFSTAT]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBPERFSTAT$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([DGUX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^DGUX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([DGUX], [/* Define to 1 for DGUX with . */ +@%:@undef DGUX]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBDGC], [/* Define to 1 if you have the \'dgc\' library (-ldgc). */ +@%:@undef HAVE_LIBDGC]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDGC]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBDGC$]) +m4trace:configure.ac:43: -1- AC_SUBST([GETLOADAVG_LIBS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GETLOADAVG_LIBS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GETLOADAVG_LIBS$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_SYS_LOADAVG_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_LOADAVG_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_LOADAVG_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_SYS_LOADAVG_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- _AM_COND_IF([GL_COND_OBJ_GETLOADAVG]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_PARAM_H]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_PSTAT_GETDYNAMIC], [/* Define to 1 if you have the \'pstat_getdynamic\' function. */ +@%:@undef HAVE_PSTAT_GETDYNAMIC]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PSTAT_GETDYNAMIC]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_PSTAT_GETDYNAMIC$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^SVR4$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([SVR4], [/* Define to 1 on System V Release 4. */ +@%:@undef SVR4]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([UMAX], [/* Define to 1 for Encore UMAX. */ +@%:@undef UMAX]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX4_3]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX4_3$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([UMAX4_3], [/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +@%:@undef UMAX4_3]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_MACH_MACH_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MACH_MACH_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MACH_MACH_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_MACH_MACH_H$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_NLIST_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_NLIST_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NLIST_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_NLIST_H$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_NLIST_N_UN_N_NAME]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_STRUCT_NLIST_N_UN_N_NAME$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_STRUCT_NLIST_N_UN_N_NAME], [/* Define to 1 if \'n_un.n_name\' is a member of \'struct nlist\'. */ +@%:@undef HAVE_STRUCT_NLIST_N_UN_N_NAME]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([N_NAME_POINTER]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^N_NAME_POINTER$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([N_NAME_POINTER], [/* Define to 1 if the nlist n_name member is a pointer */ +@%:@undef N_NAME_POINTER]) +m4trace:configure.ac:43: -1- _AM_COND_ENDIF([GL_COND_OBJ_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([GNULIB_TEST_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GNULIB_TEST_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([GNULIB_TEST_GETLOADAVG], [/* Define to 1 when the gnulib module getloadavg should be tested. */ +@%:@undef GNULIB_TEST_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST([HOST_CPU]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HOST_CPU]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU$]) +m4trace:configure.ac:43: -1- AC_SUBST([HOST_CPU_C_ABI]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HOST_CPU_C_ABI]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU_C_ABI$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([00001], [/* CPU and C ABI indicator */ +#ifndef __i386__ +#undef __i386__ +#endif +#ifndef __x86_64_x32__ +#undef __x86_64_x32__ +#endif +#ifndef __x86_64__ +#undef __x86_64__ +#endif +#ifndef __alpha__ +#undef __alpha__ +#endif +#ifndef __arm__ +#undef __arm__ +#endif +#ifndef __armhf__ +#undef __armhf__ +#endif +#ifndef __arm64_ilp32__ +#undef __arm64_ilp32__ +#endif +#ifndef __arm64__ +#undef __arm64__ +#endif +#ifndef __hppa__ +#undef __hppa__ +#endif +#ifndef __hppa64__ +#undef __hppa64__ +#endif +#ifndef __ia64_ilp32__ +#undef __ia64_ilp32__ +#endif +#ifndef __ia64__ +#undef __ia64__ +#endif +#ifndef __loongarch64__ +#undef __loongarch64__ +#endif +#ifndef __m68k__ +#undef __m68k__ +#endif +#ifndef __mips__ +#undef __mips__ +#endif +#ifndef __mipsn32__ +#undef __mipsn32__ +#endif +#ifndef __mips64__ +#undef __mips64__ +#endif +#ifndef __powerpc__ +#undef __powerpc__ +#endif +#ifndef __powerpc64__ +#undef __powerpc64__ +#endif +#ifndef __powerpc64_elfv2__ +#undef __powerpc64_elfv2__ +#endif +#ifndef __riscv32__ +#undef __riscv32__ +#endif +#ifndef __riscv64__ +#undef __riscv64__ +#endif +#ifndef __riscv32_ilp32__ +#undef __riscv32_ilp32__ +#endif +#ifndef __riscv32_ilp32f__ +#undef __riscv32_ilp32f__ +#endif +#ifndef __riscv32_ilp32d__ +#undef __riscv32_ilp32d__ +#endif +#ifndef __riscv64_ilp32__ +#undef __riscv64_ilp32__ +#endif +#ifndef __riscv64_ilp32f__ +#undef __riscv64_ilp32f__ +#endif +#ifndef __riscv64_ilp32d__ +#undef __riscv64_ilp32d__ +#endif +#ifndef __riscv64_lp64__ +#undef __riscv64_lp64__ +#endif +#ifndef __riscv64_lp64f__ +#undef __riscv64_lp64f__ +#endif +#ifndef __riscv64_lp64d__ +#undef __riscv64_lp64d__ +#endif +#ifndef __s390__ +#undef __s390__ +#endif +#ifndef __s390x__ +#undef __s390x__ +#endif +#ifndef __sh__ +#undef __sh__ +#endif +#ifndef __sparc__ +#undef __sparc__ +#endif +#ifndef __sparc64__ +#undef __sparc64__ +#endif +]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Define if the system uses DOS-style pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type \'_Bool\'. */ +@%:@undef HAVE__BOOL]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE__BOOL]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE__BOOL]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- AC_SUBST([STDBOOL_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([STDBOOL_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STDBOOL_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST([gltests_WITNESS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([gltests_WITNESS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^gltests_WITNESS$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_CFLAG_ALLOW_WARNINGS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_CFLAG_ALLOW_WARNINGS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_ALLOW_WARNINGS$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_CFLAG_GNULIB_WARNINGS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_CFLAG_GNULIB_WARNINGS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_GNULIB_WARNINGS$]) +m4trace:configure.ac:43: -1- AC_SUBST([LIBGNU_LIBDEPS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([LIBGNU_LIBDEPS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LIBDEPS$]) +m4trace:configure.ac:43: -1- AC_SUBST([LIBGNU_LTLIBDEPS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([LIBGNU_LTLIBDEPS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LTLIBDEPS$]) +m4trace:configure.ac:46: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:46: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:46: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPP]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPP]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:48: -1- AC_SUBST([AR]) +m4trace:configure.ac:48: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:50: -1- AC_SUBST([PERL]) +m4trace:configure.ac:50: -1- AC_SUBST_TRACE([PERL]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^PERL$]) +m4trace:configure.ac:53: -1- AC_CANONICAL_HOST +m4trace:configure.ac:54: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif]) +m4trace:configure.ac:54: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^WORDS_BIGENDIAN$]) +m4trace:configure.ac:54: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$]) +m4trace:configure.ac:54: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */ +@%:@undef AC_APPLE_UNIVERSAL_BUILD]) +m4trace:configure.ac:57: -1- AM_GNU_GETTEXT_VERSION([0.19.4]) +m4trace:configure.ac:58: -1- AM_GNU_GETTEXT([external]) +m4trace:configure.ac:58: -1- AC_SUBST([SED]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([SED]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:58: -1- AM_NLS +m4trace:configure.ac:58: -1- AC_SUBST([USE_NLS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([USE_NLS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^USE_NLS$]) +m4trace:configure.ac:58: -1- AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GETTEXT_MACRO_VERSION]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGFMT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGFMT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT$]) +m4trace:configure.ac:58: -1- AC_SUBST([GMSGFMT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GMSGFMT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGFMT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGFMT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([GMSGFMT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GMSGFMT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGMERGE]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGMERGE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGMERGE$]) +m4trace:configure.ac:58: -1- AC_SUBST([localedir]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT_EXTRA_OPTIONS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$]) +m4trace:configure.ac:58: -1- AC_REQUIRE_AUX_FILE([config.rpath]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFPREFERENCESCOPYAPPVALUE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_CFPREFERENCESCOPYAPPVALUE], [/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +@%:@undef HAVE_CFPREFERENCESCOPYAPPVALUE]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFLOCALECOPYCURRENT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_CFLOCALECOPYCURRENT], [/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +@%:@undef HAVE_CFLOCALECOPYCURRENT]) +m4trace:configure.ac:58: -1- AC_SUBST([INTL_MACOSX_LIBS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([INTL_MACOSX_LIBS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_ICONV$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function and it works. */ +@%:@undef HAVE_ICONV]) +m4trace:configure.ac:58: -1- AC_SUBST([LIBICONV]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LIBICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBICONV$]) +m4trace:configure.ac:58: -1- AC_SUBST([LTLIBICONV]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LTLIBICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBICONV$]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^ENABLE_NLS$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native + language is requested. */ +@%:@undef ENABLE_NLS]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_GETTEXT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ +@%:@undef HAVE_GETTEXT]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_DCGETTEXT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +@%:@undef HAVE_DCGETTEXT]) +m4trace:configure.ac:58: -1- AC_SUBST([INTLLIBS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([INTLLIBS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTLLIBS$]) +m4trace:configure.ac:58: -1- AC_SUBST([LIBINTL]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LIBINTL]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBINTL$]) +m4trace:configure.ac:58: -1- AC_SUBST([LTLIBINTL]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LTLIBINTL]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBINTL$]) +m4trace:configure.ac:58: -1- AC_SUBST([POSUB]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([POSUB]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^POSUB$]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_DIRENT_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_SYS_NDIR_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_SYS_DIR_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. */ +@%:@undef HAVE_NDIR_H]) +m4trace:configure.ac:65: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN]) +m4trace:configure.ac:65: -1- m4_pattern_allow([^STAT_MACROS_BROKEN$]) +m4trace:configure.ac:65: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the \'S_IS*\' macros in do not work properly. */ +@%:@undef STAT_MACROS_BROKEN]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_LOCALE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LOCALE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LOCALE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNISTD_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_UNISTD_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_LIMITS_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIMITS_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LIMITS_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_FCNTL_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FCNTL_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_FCNTL_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRING_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STRING_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MEMORY_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMORY_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_MEMORY_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_PARAM_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_PARAM_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_RESOURCE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_RESOURCE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_RESOURCE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_TIMEB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TIMEB_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_TIMEB_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIMEB_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TIME_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_TIME_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIME_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_SELECT_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SELECT_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_SELECT_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_FILE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_FILE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_FILE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SPAWN_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SPAWN_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SPAWN_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SPAWN_H$]) +m4trace:configure.ac:71: -1- AM_PROG_CC_C_O +m4trace:configure.ac:72: -1- AC_DEFINE_TRACE_LITERAL([const]) +m4trace:configure.ac:72: -1- m4_pattern_allow([^const$]) +m4trace:configure.ac:72: -1- AH_OUTPUT([const], [/* Define to empty if \'const\' does not conform to ANSI C. */ +@%:@undef const]) +m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^uid_t$]) +m4trace:configure.ac:73: -1- AH_OUTPUT([uid_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef uid_t]) +m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^gid_t$]) +m4trace:configure.ac:73: -1- AH_OUTPUT([gid_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef gid_t]) +m4trace:configure.ac:74: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) +m4trace:configure.ac:74: -1- m4_pattern_allow([^pid_t$]) +m4trace:configure.ac:74: -1- AH_OUTPUT([pid_t], [/* Define as a signed integer type capable of holding a process identifier. */ +@%:@undef pid_t]) +m4trace:configure.ac:75: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.ac:75: -1- m4_pattern_allow([^off_t$]) +m4trace:configure.ac:75: -1- AH_OUTPUT([off_t], [/* Define to \'long int\' if does not define. */ +@%:@undef off_t]) +m4trace:configure.ac:76: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.ac:76: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:76: -1- AH_OUTPUT([size_t], [/* Define as \'unsigned int\' if doesn\'t define. */ +@%:@undef size_t]) +m4trace:configure.ac:77: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) +m4trace:configure.ac:77: -1- m4_pattern_allow([^ssize_t$]) +m4trace:configure.ac:77: -1- AH_OUTPUT([ssize_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef ssize_t]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG_INT], [/* Define to 1 if the system has the type \'unsigned long long int\'. */ +@%:@undef HAVE_UNSIGNED_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_LONG_LONG_INT], [/* Define to 1 if the system has the type \'long long int\'. */ +@%:@undef HAVE_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTMAX_T]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_INTMAX_T$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_INTMAX_T], [/* Define to 1 if the system has the type \'intmax_t\'. */ +@%:@undef HAVE_INTMAX_T]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([intmax_t]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^intmax_t$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([intmax_t], [/* Define to the widest signed integer type if and do + not define. */ +@%:@undef intmax_t]) +m4trace:configure.ac:79: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^HAVE_UINTMAX_T$]) +m4trace:configure.ac:79: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define to 1 if the system has the type \'uintmax_t\'. */ +@%:@undef HAVE_UINTMAX_T]) +m4trace:configure.ac:79: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^uintmax_t$]) +m4trace:configure.ac:79: -1- AH_OUTPUT([uintmax_t], [/* Define to the widest unsigned integer type if and + do not define. */ +@%:@undef uintmax_t]) +m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIG_ATOMIC_T]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^HAVE_SIG_ATOMIC_T$]) +m4trace:configure.ac:82: -1- AH_OUTPUT([HAVE_SIG_ATOMIC_T], [/* Define to 1 if the system has the type \'sig_atomic_t\'. */ +@%:@undef HAVE_SIG_ATOMIC_T]) +m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([sig_atomic_t]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^sig_atomic_t$]) +m4trace:configure.ac:82: -1- AH_OUTPUT([sig_atomic_t], [/* 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]) +m4trace:configure.ac:86: -1- _m4_warn([obsolete], [The macro 'AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:2903: AC_TRY_COMPILE is expanded from... +lib/m4sugar/m4sh.m4:689: _AS_IF_ELSE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:2305: AC_CACHE_VAL is expanded from... +./lib/autoconf/general.m4:2326: AC_CACHE_CHECK is expanded from... +m4/acinclude.m4:105: AC_STRUCT_ST_MTIM_NSEC is expanded from... +configure.ac:86: the top level]) +m4trace:configure.ac:86: -1- AC_DEFINE_TRACE_LITERAL([ST_MTIM_NSEC]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^ST_MTIM_NSEC$]) +m4trace:configure.ac:86: -1- AH_OUTPUT([ST_MTIM_NSEC], [/* Define if struct stat contains a nanoseconds field */ +@%:@undef ST_MTIM_NSEC]) +m4trace:configure.ac:99: -1- AC_DEFINE_TRACE_LITERAL([FILE_TIMESTAMP_HI_RES]) +m4trace:configure.ac:99: -1- m4_pattern_allow([^FILE_TIMESTAMP_HI_RES$]) +m4trace:configure.ac:99: -1- AH_OUTPUT([FILE_TIMESTAMP_HI_RES], [/* Use high resolution file timestamps if nonzero. */ +@%:@undef FILE_TIMESTAMP_HI_RES]) +m4trace:configure.ac:102: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLOCK_GETTIME]) +m4trace:configure.ac:102: -1- m4_pattern_allow([^HAVE_CLOCK_GETTIME$]) +m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_CLOCK_GETTIME], [/* Define to 1 if you have the clock_gettime function. */ +@%:@undef HAVE_CLOCK_GETTIME]) +m4trace:configure.ac:127: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTIMEOFDAY]) +m4trace:configure.ac:127: -1- m4_pattern_allow([^HAVE_GETTIMEOFDAY$]) +m4trace:configure.ac:127: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have a standard gettimeofday function */ +@%:@undef HAVE_GETTIMEOFDAY]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the \'strtoll\' function. */ +@%:@undef HAVE_STRTOLL]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOLL]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRTOLL$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the \'strdup\' function. */ +@%:@undef HAVE_STRDUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRDUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRDUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRNDUP], [/* Define to 1 if you have the \'strndup\' function. */ +@%:@undef HAVE_STRNDUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNDUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRNDUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the \'stpcpy\' function. */ +@%:@undef HAVE_STPCPY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STPCPY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STPCPY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MEMRCHR], [/* Define to 1 if you have the \'memrchr\' function. */ +@%:@undef HAVE_MEMRCHR]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMRCHR]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMRCHR$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the \'mempcpy\' function. */ +@%:@undef HAVE_MEMPCPY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMPCPY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMPCPY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_UMASK], [/* Define to 1 if you have the \'umask\' function. */ +@%:@undef HAVE_UMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_UMASK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKSTEMP], [/* Define to 1 if you have the \'mkstemp\' function. */ +@%:@undef HAVE_MKSTEMP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKSTEMP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKSTEMP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKTEMP], [/* Define to 1 if you have the \'mktemp\' function. */ +@%:@undef HAVE_MKTEMP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKTEMP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKTEMP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_FDOPEN], [/* Define to 1 if you have the \'fdopen\' function. */ +@%:@undef HAVE_FDOPEN]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FDOPEN]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_FDOPEN$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_DUP], [/* Define to 1 if you have the \'dup\' function. */ +@%:@undef HAVE_DUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the \'dup2\' function. */ +@%:@undef HAVE_DUP2]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DUP2]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP2$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the \'getcwd\' function. */ +@%:@undef HAVE_GETCWD]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETCWD]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETCWD$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_REALPATH], [/* Define to 1 if you have the \'realpath\' function. */ +@%:@undef HAVE_REALPATH]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_REALPATH]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_REALPATH$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SIGSETMASK], [/* Define to 1 if you have the \'sigsetmask\' function. */ +@%:@undef HAVE_SIGSETMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGSETMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGSETMASK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SIGACTION], [/* Define to 1 if you have the \'sigaction\' function. */ +@%:@undef HAVE_SIGACTION]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGACTION]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGACTION$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the \'getgroups\' function. */ +@%:@undef HAVE_GETGROUPS]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETGROUPS]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETGROUPS$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETEUID], [/* Define to 1 if you have the \'seteuid\' function. */ +@%:@undef HAVE_SETEUID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETEUID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEUID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETEGID], [/* Define to 1 if you have the \'setegid\' function. */ +@%:@undef HAVE_SETEGID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETEGID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEGID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the \'setlinebuf\' function. */ +@%:@undef HAVE_SETLINEBUF]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETLINEBUF]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETLINEBUF$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETREUID], [/* Define to 1 if you have the \'setreuid\' function. */ +@%:@undef HAVE_SETREUID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETREUID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREUID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETREGID], [/* Define to 1 if you have the \'setregid\' function. */ +@%:@undef HAVE_SETREGID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETREGID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREGID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKFIFO], [/* Define to 1 if you have the \'mkfifo\' function. */ +@%:@undef HAVE_MKFIFO]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKFIFO$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the \'getrlimit\' function. */ +@%:@undef HAVE_GETRLIMIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETRLIMIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETRLIMIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETRLIMIT], [/* Define to 1 if you have the \'setrlimit\' function. */ +@%:@undef HAVE_SETRLIMIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETRLIMIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETRLIMIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the \'setvbuf\' function. */ +@%:@undef HAVE_SETVBUF]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETVBUF]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETVBUF$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_PIPE], [/* Define to 1 if you have the \'pipe\' function. */ +@%:@undef HAVE_PIPE]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PIPE]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PIPE$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the \'strerror\' function. */ +@%:@undef HAVE_STRERROR]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRERROR]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRERROR$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRSIGNAL], [/* Define to 1 if you have the \'strsignal\' function. */ +@%:@undef HAVE_STRSIGNAL]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRSIGNAL$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the \'lstat\' function. */ +@%:@undef HAVE_LSTAT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_LSTAT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the \'readlink\' function. */ +@%:@undef HAVE_READLINK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_READLINK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_READLINK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_ATEXIT], [/* Define to 1 if you have the \'atexit\' function. */ +@%:@undef HAVE_ATEXIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ATEXIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ATEXIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_ISATTY], [/* Define to 1 if you have the \'isatty\' function. */ +@%:@undef HAVE_ISATTY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISATTY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ISATTY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the \'ttyname\' function. */ +@%:@undef HAVE_TTYNAME]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TTYNAME]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_TTYNAME$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_PSELECT], [/* Define to 1 if you have the \'pselect\' function. */ +@%:@undef HAVE_PSELECT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PSELECT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PSELECT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_POSIX_SPAWN], [/* Define to 1 if you have the \'posix_spawn\' function. */ +@%:@undef HAVE_POSIX_SPAWN]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SPAWN]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWN$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_POSIX_SPAWNATTR_SETSIGMASK], [/* Define to 1 if you have the \'posix_spawnattr_setsigmask\' function. */ +@%:@undef HAVE_POSIX_SPAWNATTR_SETSIGMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SPAWNATTR_SETSIGMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWNATTR_SETSIGMASK$]) +m4trace:configure.ac:142: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_BSD_SIGNAL]) +m4trace:configure.ac:142: -1- m4_pattern_allow([^HAVE_DECL_BSD_SIGNAL$]) +m4trace:configure.ac:142: -1- AH_OUTPUT([HAVE_DECL_BSD_SIGNAL], [/* Define to 1 if you have the declaration of \'bsd_signal\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_BSD_SIGNAL]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_VFORK_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_VFORK_H]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_FORK], [/* Define to 1 if you have the \'fork\' function. */ +@%:@undef HAVE_FORK]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_VFORK], [/* Define to 1 if you have the \'vfork\' function. */ +@%:@undef HAVE_VFORK]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_VFORK]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_VFORK$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_WORKING_VFORK], [/* Define to 1 if \'vfork\' works. */ +@%:@undef HAVE_WORKING_VFORK]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([vfork]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^vfork$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([vfork], [/* Define as \'fork\' if \'vfork\' does not work. */ +@%:@undef vfork]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_FORK]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_FORK$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_WORKING_FORK], [/* Define to 1 if \'fork\' works. */ +@%:@undef HAVE_WORKING_FORK]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the \'strcasecmp\' function. */ +@%:@undef HAVE_STRCASECMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASECMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCASECMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNCASECMP], [/* Define to 1 if you have the \'strncasecmp\' function. */ +@%:@undef HAVE_STRNCASECMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNCASECMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCASECMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRCMPI], [/* Define to 1 if you have the \'strcmpi\' function. */ +@%:@undef HAVE_STRCMPI]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCMPI]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCMPI$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNCMPI], [/* Define to 1 if you have the \'strncmpi\' function. */ +@%:@undef HAVE_STRNCMPI]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNCMPI]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCMPI$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRICMP], [/* Define to 1 if you have the \'stricmp\' function. */ +@%:@undef HAVE_STRICMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRICMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRICMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNICMP], [/* Define to 1 if you have the \'strnicmp\' function. */ +@%:@undef HAVE_STRNICMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNICMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNICMP$]) +m4trace:configure.ac:153: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) +m4trace:configure.ac:153: -1- m4_pattern_allow([^HAVE_STRCOLL$]) +m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the \'strcoll\' function and it is properly defined. + */ +@%:@undef HAVE_STRCOLL]) +m4trace:configure.ac:154: -1- AC_DEFINE_TRACE_LITERAL([CLOSEDIR_VOID]) +m4trace:configure.ac:154: -1- m4_pattern_allow([^CLOSEDIR_VOID$]) +m4trace:configure.ac:154: -1- AH_OUTPUT([CLOSEDIR_VOID], [/* Define to 1 if the \'closedir\' function returns void instead of int. */ +@%:@undef CLOSEDIR_VOID]) +m4trace:configure.ac:157: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_TYPE]) +m4trace:configure.ac:157: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_TYPE$]) +m4trace:configure.ac:157: -1- AH_OUTPUT([HAVE_STRUCT_DIRENT_D_TYPE], [/* Define to 1 if \'d_type\' is a member of \'struct dirent\'. */ +@%:@undef HAVE_STRUCT_DIRENT_D_TYPE]) +m4trace:configure.ac:165: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG_PATH]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG_PATH]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:167: -1- AC_SUBST([GUILE_CFLAGS]) +m4trace:configure.ac:167: -1- AC_SUBST_TRACE([GUILE_CFLAGS]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_CFLAGS$]) +m4trace:configure.ac:167: -1- AC_SUBST([GUILE_LIBS]) +m4trace:configure.ac:167: -1- AC_SUBST_TRACE([GUILE_LIBS]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_LIBS$]) +m4trace:configure.ac:167: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GUILE]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^HAVE_GUILE$]) +m4trace:configure.ac:167: -1- AH_OUTPUT([HAVE_GUILE], [/* Embed GNU Guile support */ +@%:@undef HAVE_GUILE]) +m4trace:configure.ac:210: -1- AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = "yes"]) +m4trace:configure.ac:210: -1- AC_SUBST([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- AC_SUBST_TRACE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_TRUE$]) +m4trace:configure.ac:210: -1- AC_SUBST([HAVE_GUILE_FALSE]) +m4trace:configure.ac:210: -1- AC_SUBST_TRACE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_FALSE$]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL__SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL__SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL__SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'_sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL__SYS_SIGLIST]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL___SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL___SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL___SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'__sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL___SYS_SIGLIST]) +m4trace:configure.ac:223: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_WAIT_H]) +m4trace:configure.ac:223: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H]) +m4trace:configure.ac:223: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$]) +m4trace:configure.ac:224: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the \'waitpid\' function. */ +@%:@undef HAVE_WAITPID]) +m4trace:configure.ac:224: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WAITPID]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAITPID$]) +m4trace:configure.ac:224: -1- AH_OUTPUT([HAVE_WAIT3], [/* Define to 1 if you have the \'wait3\' function. */ +@%:@undef HAVE_WAIT3]) +m4trace:configure.ac:224: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAIT3$]) +m4trace:configure.ac:247: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNION_WAIT]) +m4trace:configure.ac:247: -1- m4_pattern_allow([^HAVE_UNION_WAIT$]) +m4trace:configure.ac:247: -1- AH_OUTPUT([HAVE_UNION_WAIT], [/* Define to 1 if you have the \'union wait\' type in . */ +@%:@undef HAVE_UNION_WAIT]) +m4trace:configure.ac:254: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:254: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:254: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Define to 1 if your system requires backslashes or drive specs in + pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:260: -1- AC_SUBST([REMOTE]) +m4trace:configure.ac:260: -1- AC_SUBST_TRACE([REMOTE]) +m4trace:configure.ac:260: -1- m4_pattern_allow([^REMOTE$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the \'gethostname\' function. */ +@%:@undef HAVE_GETHOSTNAME]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTNAME]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTNAME$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_SOCKET], [/* Define to 1 if you have the \'socket\' function. */ +@%:@undef HAVE_SOCKET]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKET]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_SOCKET$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the \'gethostbyname\' function. */ +@%:@undef HAVE_GETHOSTBYNAME]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME$]) +m4trace:configure.ac:262: -1- _m4_warn([obsolete], [The macro 'AC_FD_MSG' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:401: AC_FD_MSG is expanded from... +m4/acinclude.m4:38: CF_NETLIBS is expanded from... +lib/m4sugar/m4sh.m4:594: AS_CASE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:1603: AC_ARG_WITH is expanded from... +configure.ac:262: the top level]) +m4trace:configure.ac:281: -1- AM_CONDITIONAL([USE_CUSTOMS], [test "$use_customs" = true]) +m4trace:configure.ac:281: -1- AC_SUBST([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- AC_SUBST_TRACE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_TRUE$]) +m4trace:configure.ac:281: -1- AC_SUBST([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:281: -1- AC_SUBST_TRACE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_FALSE$]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:284: -1- AH_OUTPUT([HAVE_CASE_INSENSITIVE_FS], [/* Use case insensitive file names */ +@%:@undef HAVE_CASE_INSENSITIVE_FS]) +m4trace:configure.ac:285: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CASE_INSENSITIVE_FS]) +m4trace:configure.ac:285: -1- m4_pattern_allow([^HAVE_CASE_INSENSITIVE_FS$]) +m4trace:configure.ac:305: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SA_RESTART]) +m4trace:configure.ac:305: -1- m4_pattern_allow([^HAVE_SA_RESTART$]) +m4trace:configure.ac:305: -1- AH_OUTPUT([HAVE_SA_RESTART], [/* Define to 1 if defines the SA_RESTART constant. */ +@%:@undef HAVE_SA_RESTART]) +m4trace:configure.ac:318: -1- AC_DEFINE_TRACE_LITERAL([MAKE_JOBSERVER]) +m4trace:configure.ac:318: -1- m4_pattern_allow([^MAKE_JOBSERVER$]) +m4trace:configure.ac:318: -1- AH_OUTPUT([MAKE_JOBSERVER], [/* Define to 1 to enable job server support in GNU make. */ +@%:@undef MAKE_JOBSERVER]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLOPEN]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLOPEN$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLOPEN], [/* Define to 1 if you have the declaration of \'dlopen\', and to 0 if you don\'t. + */ +@%:@undef HAVE_DECL_DLOPEN]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLSYM]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLSYM$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLSYM], [/* Define to 1 if you have the declaration of \'dlsym\', and to 0 if you don\'t. + */ +@%:@undef HAVE_DECL_DLSYM]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLERROR]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLERROR$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLERROR], [/* Define to 1 if you have the declaration of \'dlerror\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_DLERROR]) +m4trace:configure.ac:341: -1- AC_DEFINE_TRACE_LITERAL([MAKE_LOAD]) +m4trace:configure.ac:341: -1- m4_pattern_allow([^MAKE_LOAD$]) +m4trace:configure.ac:341: -1- AH_OUTPUT([MAKE_LOAD], [/* Define to 1 to enable \'load\' support in GNU make. */ +@%:@undef MAKE_LOAD]) +m4trace:configure.ac:351: -1- AC_SUBST([AM_LDFLAGS], [-Wl,--export-dynamic]) +m4trace:configure.ac:351: -1- AC_SUBST_TRACE([AM_LDFLAGS]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:351: -1- AC_SUBST([AM_LDFLAGS], [-rdynamic]) +m4trace:configure.ac:351: -1- AC_SUBST_TRACE([AM_LDFLAGS]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:371: -1- AC_DEFINE_TRACE_LITERAL([MAKE_SYMLINKS]) +m4trace:configure.ac:371: -1- m4_pattern_allow([^MAKE_SYMLINKS$]) +m4trace:configure.ac:371: -1- AH_OUTPUT([MAKE_SYMLINKS], [/* Define to 1 to enable symbolic link timestamp checking. */ +@%:@undef MAKE_SYMLINKS]) +m4trace:configure.ac:403: -1- AC_DEFINE_TRACE_LITERAL([USE_POSIX_SPAWN]) +m4trace:configure.ac:403: -1- m4_pattern_allow([^USE_POSIX_SPAWN$]) +m4trace:configure.ac:403: -1- AH_OUTPUT([USE_POSIX_SPAWN], [/* Define to 1 to use posix_spawn(). */ +@%:@undef USE_POSIX_SPAWN]) +m4trace:configure.ac:415: -1- AC_DEFINE_TRACE_LITERAL([SCCS_GET]) +m4trace:configure.ac:415: -1- m4_pattern_allow([^SCCS_GET$]) +m4trace:configure.ac:415: -1- AH_OUTPUT([SCCS_GET], [/* Define to the name of the SCCS \'get\' command. */ +@%:@undef SCCS_GET]) +m4trace:configure.ac:419: -1- AC_DEFINE_TRACE_LITERAL([SCCS_GET_MINUS_G]) +m4trace:configure.ac:419: -1- m4_pattern_allow([^SCCS_GET_MINUS_G$]) +m4trace:configure.ac:419: -1- AH_OUTPUT([SCCS_GET_MINUS_G], [/* Define to 1 if the SCCS \'get\' command understands the \'-G\' option. */ +@%:@undef SCCS_GET_MINUS_G]) +m4trace:configure.ac:437: -1- AC_DEFINE_TRACE_LITERAL([MAKE_HOST]) +m4trace:configure.ac:437: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:437: -1- AH_OUTPUT([MAKE_HOST], [/* Build host information. */ +@%:@undef MAKE_HOST]) +m4trace:configure.ac:439: -1- AC_SUBST([MAKE_HOST]) +m4trace:configure.ac:439: -1- AC_SUBST_TRACE([MAKE_HOST]) +m4trace:configure.ac:439: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:442: -1- AM_CONDITIONAL([WINDOWSENV], [false]) +m4trace:configure.ac:442: -1- AC_SUBST([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- AC_SUBST_TRACE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:442: -1- AC_SUBST([WINDOWSENV_FALSE]) +m4trace:configure.ac:442: -1- AC_SUBST_TRACE([WINDOWSENV_FALSE]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AM_CONDITIONAL([WINDOWSENV], [true]) +m4trace:configure.ac:444: -1- AC_SUBST([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- AC_SUBST_TRACE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:444: -1- AC_SUBST([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AC_SUBST_TRACE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AC_DEFINE_TRACE_LITERAL([WINDOWS32]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWS32$]) +m4trace:configure.ac:444: -1- AH_OUTPUT([WINDOWS32], [/* Build for the WINDOWS32 API. */ +@%:@undef WINDOWS32]) +m4trace:configure.ac:444: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:444: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Support DOS-style pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:452: -1- AC_DEFINE_TRACE_LITERAL([PATH_SEPARATOR_CHAR]) +m4trace:configure.ac:452: -1- m4_pattern_allow([^PATH_SEPARATOR_CHAR$]) +m4trace:configure.ac:452: -1- AH_OUTPUT([PATH_SEPARATOR_CHAR], [/* Define to the character that separates directories in PATH. */ +@%:@undef PATH_SEPARATOR_CHAR]) +m4trace:configure.ac:455: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:455: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:455: -1- AH_OUTPUT([HAVE_DECL_GETLOADAVG], [/* Define to 1 if you have the declaration of \'getloadavg\'. */ +@%:@undef HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:460: -1- AC_DEFINE_TRACE_LITERAL([MK_CONFIGURE]) +m4trace:configure.ac:460: -1- m4_pattern_allow([^MK_CONFIGURE$]) +m4trace:configure.ac:460: -1- AH_OUTPUT([MK_CONFIGURE], [/* Define to 1 if config.h is generated by running the configure script. */ +@%:@undef MK_CONFIGURE]) +m4trace:configure.ac:469: -1- m4_pattern_allow([^MAINT_MAKEFILE$]) +m4trace:configure.ac:472: -1- AC_DEFINE_TRACE_LITERAL([WITH_DMALLOC]) +m4trace:configure.ac:472: -1- m4_pattern_allow([^WITH_DMALLOC$]) +m4trace:configure.ac:472: -1- AH_OUTPUT([WITH_DMALLOC], [/* Define if using the dmalloc debugging malloc package */ +@%:@undef WITH_DMALLOC]) +m4trace:configure.ac:532: -1- 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]) +m4trace:configure.ac:532: -1- AC_SUBST([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- AC_SUBST_TRACE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_TRUE$]) +m4trace:configure.ac:532: -1- AC_SUBST([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:532: -1- AC_SUBST_TRACE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_FALSE$]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:537: -1- AC_CONFIG_FILES([build.cfg tests/config-flags.pm \ + Makefile lib/Makefile doc/Makefile po/Makefile.in]) +m4trace:configure.ac:543: -1- AC_CONFIG_LINKS([build.sh:build.sh]) +m4trace:configure.ac:547: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) +m4trace:configure.ac:547: -1- AC_SUBST([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) +m4trace:configure.ac:547: -1- AC_SUBST([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LIBOBJDEPS], [$gl_libobjdeps]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LIBOBJDEPS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LIBOBJDEPS], [$gltests_libobjdeps]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LIBOBJDEPS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_top_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([INSTALL]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([MKDIR_P]) diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/traces.2 b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.2 new file mode 100644 index 0000000000..b993291c6f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.2 @@ -0,0 +1,2193 @@ +m4trace:aclocal.m4:1064: -1- AC_SUBST([am__quote]) +m4trace:aclocal.m4:1064: -1- AC_SUBST_TRACE([am__quote]) +m4trace:aclocal.m4:1064: -1- m4_pattern_allow([^am__quote$]) +m4trace:aclocal.m4:1720: -1- m4_include([m4/00gnulib.m4]) +m4trace:aclocal.m4:1721: -1- m4_include([m4/acinclude.m4]) +m4trace:aclocal.m4:1722: -1- m4_include([m4/alloca.m4]) +m4trace:aclocal.m4:1723: -1- m4_include([m4/asm-underscore.m4]) +m4trace:aclocal.m4:1724: -1- m4_include([m4/dospaths.m4]) +m4trace:aclocal.m4:1725: -1- m4_include([m4/eaccess.m4]) +m4trace:aclocal.m4:1726: -1- m4_include([m4/extensions.m4]) +m4trace:aclocal.m4:1727: -1- m4_include([m4/findprog-in.m4]) +m4trace:aclocal.m4:1728: -1- m4_include([m4/getloadavg.m4]) +m4trace:aclocal.m4:1729: -1- m4_include([m4/gettext.m4]) +m4trace:aclocal.m4:1730: -1- m4_include([m4/gnulib-common.m4]) +m4trace:aclocal.m4:1731: -1- m4_include([m4/gnulib-comp.m4]) +m4trace:aclocal.m4:1732: -1- m4_include([m4/host-cpu-c-abi.m4]) +m4trace:aclocal.m4:1733: -1- m4_include([m4/iconv.m4]) +m4trace:aclocal.m4:1734: -1- m4_include([m4/intlmacosx.m4]) +m4trace:aclocal.m4:1735: -1- m4_include([m4/largefile.m4]) +m4trace:aclocal.m4:1736: -1- m4_include([m4/lib-ld.m4]) +m4trace:aclocal.m4:1737: -1- m4_include([m4/lib-link.m4]) +m4trace:aclocal.m4:1738: -1- m4_include([m4/lib-prefix.m4]) +m4trace:aclocal.m4:1739: -1- m4_include([m4/longlong.m4]) +m4trace:aclocal.m4:1740: -1- m4_include([m4/nls.m4]) +m4trace:aclocal.m4:1741: -1- m4_include([m4/po.m4]) +m4trace:aclocal.m4:1742: -1- m4_include([m4/progtest.m4]) +m4trace:aclocal.m4:1743: -1- m4_include([m4/sig_atomic_t.m4]) +m4trace:aclocal.m4:1744: -1- m4_include([m4/stdbool.m4]) +m4trace:aclocal.m4:1745: -1- m4_include([m4/warn-on-use.m4]) +m4trace:aclocal.m4:1746: -1- m4_include([m4/year2038.m4]) +m4trace:aclocal.m4:1747: -1- m4_include([m4/zzgnulib.m4]) +m4trace:configure.ac:19: -1- AC_INIT([GNU Make], [4.4], [bug-make@gnu.org]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section 'AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:19: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:19: -1- AC_SUBST([SHELL]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:19: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_URL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:19: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:19: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:19: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:19: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([runstatedir], ['${localstatedir}/run']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([runstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:19: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:19: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:19: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +@%:@undef PACKAGE_NAME]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +@%:@undef PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +@%:@undef PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +@%:@undef PACKAGE_STRING]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +@%:@undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ +@%:@undef PACKAGE_URL]) +m4trace:configure.ac:19: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:19: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:19: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:24: -1- AC_CONFIG_AUX_DIR([build-aux]) +m4trace:configure.ac:26: -1- AC_CONFIG_HEADERS([src/config.h]) +m4trace:configure.ac:28: -1- AC_CONFIG_LIBOBJ_DIR([lib]) +m4trace:configure.ac:35: -1- AM_INIT_AUTOMAKE([1.16.1 foreign -Werror -Wall]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:35: -1- AM_AUTOMAKE_VERSION([1.18.1]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_DATA]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__isrc]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:35: -1- AC_SUBST([CYGPATH_W]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CYGPATH_W]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:35: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([PACKAGE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([VERSION]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ +@%:@undef PACKAGE]) +m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AH_OUTPUT([VERSION], [/* Version number of package */ +@%:@undef VERSION]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([missing]) +m4trace:configure.ac:35: -1- AC_SUBST([ACLOCAL]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ACLOCAL]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOCONF]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOCONF]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOMAKE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOMAKE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOHEADER]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOHEADER]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:35: -1- AC_SUBST([MAKEINFO]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MAKEINFO]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:35: -1- AC_SUBST([install_sh]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([install_sh]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:35: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:35: -1- AC_SUBST([MKDIR_P]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MKDIR_P]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:35: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([mkdir_p]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:35: -1- AC_SUBST([AWK]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AWK]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:35: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([SET_MAKE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__leading_dot]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__leading_dot]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:35: -1- AC_SUBST([AMTAR], ['$${TAR-tar}']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMTAR]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__tar]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__tar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__tar$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__untar]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__untar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__untar$]) +m4trace:configure.ac:35: -1- AC_SUBST([CTAGS]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CTAGS]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CTAGS$]) +m4trace:configure.ac:35: -1- AC_SUBST([ETAGS]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ETAGS]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^ETAGS$]) +m4trace:configure.ac:35: -1- AC_SUBST([CSCOPE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CSCOPE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CSCOPE$]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_V]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_V]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AC_SUBST([am__rm_f_notfound]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__rm_f_notfound]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__rm_f_notfound$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__xargs_n]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__xargs_n]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__xargs_n$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX, Interix, z/OS. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable extensions on Cosmopolitan Libc. */ +#ifndef _COSMO_SOURCE +# undef _COSMO_SOURCE +#endif +/* Enable general extensions on macOS. */ +#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 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 compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* 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 +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE +#endif +]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDIO_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDIO_H]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([EXEEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:38: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OBJEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:38: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:38: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DEPDIR]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^DEPDIR$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__include]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__include]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__include$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__nodep]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__nodep$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_INTTYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDINT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRINGS_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_STAT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if all of the C89 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]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_WCHAR_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_MINIX_CONFIG_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MINIX_CONFIG_H]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_ALL_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_COSMO_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_COSMO_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_DARWIN_C_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_DARWIN_C_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_GNU_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_HPUX_ALT_XOPEN_SOCKET_API]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_HPUX_ALT_XOPEN_SOCKET_API$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_NETBSD_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_NETBSD_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_OPENBSD_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_OPENBSD_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_ATTRIBS_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_BFP_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_BFP_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_DFP_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_DFP_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_FUNCS_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_FUNCS_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_TYPES_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_TYPES_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_LIB_EXT2__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_LIB_EXT2__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_MATH_SPEC_FUNCS__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_MATH_SPEC_FUNCS__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_TANDEM_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_MINIX]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_MINIX$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_1_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__EXTENSIONS__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_XOPEN_SOURCE$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:39: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:39: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:39: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:42: -1- m4_pattern_forbid([^gl_[A-Z]]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_ES$]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:42: -1- AC_CANONICAL_HOST +m4trace:configure.ac:42: -1- AC_CANONICAL_BUILD +m4trace:configure.ac:42: -1- AC_REQUIRE_AUX_FILE([config.sub]) +m4trace:configure.ac:42: -1- AC_REQUIRE_AUX_FILE([config.guess]) +m4trace:configure.ac:42: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_cpu], [$[1]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_cpu]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_vendor], [$[2]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_vendor]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_os]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_os]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:42: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_cpu], [$[1]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_cpu]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_vendor], [$[2]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_vendor]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_os]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_os]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_ISOC11_SOURCE]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_ISOC11_SOURCE$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_ISOC11_SOURCE], [/* Define to enable the declarations of ISO C 11 types and functions. */ +@%:@undef _ISOC11_SOURCE]) +m4trace:configure.ac:42: -1- AC_SUBST([CPP]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:42: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:42: -1- AC_SUBST([CPP]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:42: -1- AC_SUBST([AR]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:42: -1- AC_SUBST([AR]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:42: -1- AC_SUBST([ARFLAGS]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([ARFLAGS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^ARFLAGS$]) +m4trace:configure.ac:42: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:42: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +@%:@undef _FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_LARGE_FILES$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */ +@%:@undef _LARGE_FILES]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_TIME_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_TIME_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_TIME_BITS], [/* Number of bits in a timestamp, on hosts where this is settable. */ +@%:@undef _TIME_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +@%:@undef _FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([__MINGW_USE_VC2005_COMPAT]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^__MINGW_USE_VC2005_COMPAT$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([__MINGW_USE_VC2005_COMPAT], [/* For 64-bit time_t on 32-bit mingw. */ +@%:@undef __MINGW_USE_VC2005_COMPAT]) +m4trace:configure.ac:43: -1- AC_CONFIG_LIBOBJ_DIR([lib]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_LIBTOOL], [false]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_LIBTOOL_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_LIBTOOL_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- AH_OUTPUT([_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 +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([_Noreturn], [/* The _Noreturn keyword of C11. */ +#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) \\ + || (!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 _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) +# else +# define _Noreturn +# endif +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([isoc99_inline], [/* 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__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif]) +m4trace:configure.ac:43: -1- AH_OUTPUT([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_HAS_C_ATTRIBUTE(attr) 0 +#endif + + +/* _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_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_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires \'cold\' not \'__cold__\'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via \'free\'; it can be used only after declaring \'free\'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib\'s or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with \'-fwhole-program\'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following \'case\' or + \'default\' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a \'switch\' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with \'__\'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC\'s syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type \'[[un]signed] char\'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function\'s return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don\'t use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + + +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the \'__attribute__ ((__unused__)) ;\' + syntax. But clang does. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([async_safe], [/* The _GL_ASYNC_SAFE marker should be attached to functions that are + signal handlers (for signals other than SIGABRT, SIGPIPE) or can be + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked \'volatile\'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable \'signal_occurred\' is not declared \'volatile\'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([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))) +]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([size_t], [/* Define as \'unsigned int\' if doesn\'t define. */ +@%:@undef size_t]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if works. */ +@%:@undef HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \'alloca\', as a function or macro. */ +@%:@undef HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^ALLOCA$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^C_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using \'alloca.c\'. */ +@%:@undef C_ALLOCA]) +m4trace:configure.ac:43: -1- AH_OUTPUT([STACK_DIRECTION], [/* 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. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STACK_DIRECTION$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \'alloca\' after including , a header that + may be supplied by this distribution. */ +@%:@undef HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) +m4trace:configure.ac:43: -1- AC_SUBST([ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^ALLOCA_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_ALLOCA_H_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_ALLOCA_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([eaccess]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^eaccess$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([eaccess], [/* Define as \'access\' if you don\'t have the eaccess() function. */ +@%:@undef eaccess]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GNULIB_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBKSTAT], [/* Define to 1 if you have the \'kstat\' library (-lkstat). */ +@%:@undef HAVE_LIBKSTAT]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBKSTAT]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBKSTAT$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBPERFSTAT], [/* Define to 1 if you have the \'perfstat\' library (-lperfstat). */ +@%:@undef HAVE_LIBPERFSTAT]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPERFSTAT]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBPERFSTAT$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([DGUX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^DGUX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([DGUX], [/* Define to 1 for DGUX with . */ +@%:@undef DGUX]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBDGC], [/* Define to 1 if you have the \'dgc\' library (-ldgc). */ +@%:@undef HAVE_LIBDGC]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDGC]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBDGC$]) +m4trace:configure.ac:43: -1- AC_SUBST([GETLOADAVG_LIBS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GETLOADAVG_LIBS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GETLOADAVG_LIBS$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_SYS_LOADAVG_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_LOADAVG_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_LOADAVG_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_SYS_LOADAVG_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- _AM_COND_IF([GL_COND_OBJ_GETLOADAVG]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_PARAM_H]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_PSTAT_GETDYNAMIC], [/* Define to 1 if you have the \'pstat_getdynamic\' function. */ +@%:@undef HAVE_PSTAT_GETDYNAMIC]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PSTAT_GETDYNAMIC]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_PSTAT_GETDYNAMIC$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^SVR4$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([SVR4], [/* Define to 1 on System V Release 4. */ +@%:@undef SVR4]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([UMAX], [/* Define to 1 for Encore UMAX. */ +@%:@undef UMAX]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX4_3]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX4_3$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([UMAX4_3], [/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +@%:@undef UMAX4_3]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_MACH_MACH_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MACH_MACH_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MACH_MACH_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_MACH_MACH_H$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_NLIST_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_NLIST_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NLIST_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_NLIST_H$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_NLIST_N_UN_N_NAME]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_STRUCT_NLIST_N_UN_N_NAME$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_STRUCT_NLIST_N_UN_N_NAME], [/* Define to 1 if \'n_un.n_name\' is a member of \'struct nlist\'. */ +@%:@undef HAVE_STRUCT_NLIST_N_UN_N_NAME]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([N_NAME_POINTER]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^N_NAME_POINTER$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([N_NAME_POINTER], [/* Define to 1 if the nlist n_name member is a pointer */ +@%:@undef N_NAME_POINTER]) +m4trace:configure.ac:43: -1- _AM_COND_ENDIF([GL_COND_OBJ_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([GNULIB_TEST_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GNULIB_TEST_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([GNULIB_TEST_GETLOADAVG], [/* Define to 1 when the gnulib module getloadavg should be tested. */ +@%:@undef GNULIB_TEST_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST([HOST_CPU]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HOST_CPU]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU$]) +m4trace:configure.ac:43: -1- AC_SUBST([HOST_CPU_C_ABI]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HOST_CPU_C_ABI]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU_C_ABI$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([00001], [/* CPU and C ABI indicator */ +#ifndef __i386__ +#undef __i386__ +#endif +#ifndef __x86_64_x32__ +#undef __x86_64_x32__ +#endif +#ifndef __x86_64__ +#undef __x86_64__ +#endif +#ifndef __alpha__ +#undef __alpha__ +#endif +#ifndef __arm__ +#undef __arm__ +#endif +#ifndef __armhf__ +#undef __armhf__ +#endif +#ifndef __arm64_ilp32__ +#undef __arm64_ilp32__ +#endif +#ifndef __arm64__ +#undef __arm64__ +#endif +#ifndef __hppa__ +#undef __hppa__ +#endif +#ifndef __hppa64__ +#undef __hppa64__ +#endif +#ifndef __ia64_ilp32__ +#undef __ia64_ilp32__ +#endif +#ifndef __ia64__ +#undef __ia64__ +#endif +#ifndef __loongarch64__ +#undef __loongarch64__ +#endif +#ifndef __m68k__ +#undef __m68k__ +#endif +#ifndef __mips__ +#undef __mips__ +#endif +#ifndef __mipsn32__ +#undef __mipsn32__ +#endif +#ifndef __mips64__ +#undef __mips64__ +#endif +#ifndef __powerpc__ +#undef __powerpc__ +#endif +#ifndef __powerpc64__ +#undef __powerpc64__ +#endif +#ifndef __powerpc64_elfv2__ +#undef __powerpc64_elfv2__ +#endif +#ifndef __riscv32__ +#undef __riscv32__ +#endif +#ifndef __riscv64__ +#undef __riscv64__ +#endif +#ifndef __riscv32_ilp32__ +#undef __riscv32_ilp32__ +#endif +#ifndef __riscv32_ilp32f__ +#undef __riscv32_ilp32f__ +#endif +#ifndef __riscv32_ilp32d__ +#undef __riscv32_ilp32d__ +#endif +#ifndef __riscv64_ilp32__ +#undef __riscv64_ilp32__ +#endif +#ifndef __riscv64_ilp32f__ +#undef __riscv64_ilp32f__ +#endif +#ifndef __riscv64_ilp32d__ +#undef __riscv64_ilp32d__ +#endif +#ifndef __riscv64_lp64__ +#undef __riscv64_lp64__ +#endif +#ifndef __riscv64_lp64f__ +#undef __riscv64_lp64f__ +#endif +#ifndef __riscv64_lp64d__ +#undef __riscv64_lp64d__ +#endif +#ifndef __s390__ +#undef __s390__ +#endif +#ifndef __s390x__ +#undef __s390x__ +#endif +#ifndef __sh__ +#undef __sh__ +#endif +#ifndef __sparc__ +#undef __sparc__ +#endif +#ifndef __sparc64__ +#undef __sparc64__ +#endif +]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Define if the system uses DOS-style pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type \'_Bool\'. */ +@%:@undef HAVE__BOOL]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE__BOOL]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE__BOOL]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- AC_SUBST([STDBOOL_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([STDBOOL_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STDBOOL_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST([gltests_WITNESS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([gltests_WITNESS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^gltests_WITNESS$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_CFLAG_ALLOW_WARNINGS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_CFLAG_ALLOW_WARNINGS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_ALLOW_WARNINGS$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_CFLAG_GNULIB_WARNINGS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_CFLAG_GNULIB_WARNINGS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_GNULIB_WARNINGS$]) +m4trace:configure.ac:43: -1- AC_SUBST([LIBGNU_LIBDEPS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([LIBGNU_LIBDEPS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LIBDEPS$]) +m4trace:configure.ac:43: -1- AC_SUBST([LIBGNU_LTLIBDEPS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([LIBGNU_LTLIBDEPS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LTLIBDEPS$]) +m4trace:configure.ac:46: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:46: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:46: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPP]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPP]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:48: -1- AC_SUBST([AR]) +m4trace:configure.ac:48: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:50: -1- AC_SUBST([PERL]) +m4trace:configure.ac:50: -1- AC_SUBST_TRACE([PERL]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^PERL$]) +m4trace:configure.ac:53: -1- AC_CANONICAL_HOST +m4trace:configure.ac:54: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif]) +m4trace:configure.ac:54: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^WORDS_BIGENDIAN$]) +m4trace:configure.ac:54: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$]) +m4trace:configure.ac:54: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */ +@%:@undef AC_APPLE_UNIVERSAL_BUILD]) +m4trace:configure.ac:57: -1- AM_GNU_GETTEXT_VERSION([0.19.4]) +m4trace:configure.ac:58: -1- AM_GNU_GETTEXT([external]) +m4trace:configure.ac:58: -1- AC_SUBST([SED]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([SED]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:58: -1- AM_NLS +m4trace:configure.ac:58: -1- AC_SUBST([USE_NLS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([USE_NLS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^USE_NLS$]) +m4trace:configure.ac:58: -1- AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GETTEXT_MACRO_VERSION]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGFMT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGFMT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT$]) +m4trace:configure.ac:58: -1- AC_SUBST([GMSGFMT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GMSGFMT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGFMT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGFMT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([GMSGFMT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GMSGFMT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGMERGE]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGMERGE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGMERGE$]) +m4trace:configure.ac:58: -1- AC_SUBST([localedir]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT_EXTRA_OPTIONS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$]) +m4trace:configure.ac:58: -1- AC_REQUIRE_AUX_FILE([config.rpath]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFPREFERENCESCOPYAPPVALUE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_CFPREFERENCESCOPYAPPVALUE], [/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +@%:@undef HAVE_CFPREFERENCESCOPYAPPVALUE]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFLOCALECOPYCURRENT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_CFLOCALECOPYCURRENT], [/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +@%:@undef HAVE_CFLOCALECOPYCURRENT]) +m4trace:configure.ac:58: -1- AC_SUBST([INTL_MACOSX_LIBS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([INTL_MACOSX_LIBS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_ICONV$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function and it works. */ +@%:@undef HAVE_ICONV]) +m4trace:configure.ac:58: -1- AC_SUBST([LIBICONV]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LIBICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBICONV$]) +m4trace:configure.ac:58: -1- AC_SUBST([LTLIBICONV]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LTLIBICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBICONV$]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^ENABLE_NLS$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native + language is requested. */ +@%:@undef ENABLE_NLS]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_GETTEXT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ +@%:@undef HAVE_GETTEXT]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_DCGETTEXT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +@%:@undef HAVE_DCGETTEXT]) +m4trace:configure.ac:58: -1- AC_SUBST([INTLLIBS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([INTLLIBS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTLLIBS$]) +m4trace:configure.ac:58: -1- AC_SUBST([LIBINTL]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LIBINTL]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBINTL$]) +m4trace:configure.ac:58: -1- AC_SUBST([LTLIBINTL]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LTLIBINTL]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBINTL$]) +m4trace:configure.ac:58: -1- AC_SUBST([POSUB]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([POSUB]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^POSUB$]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_DIRENT_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_SYS_NDIR_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_SYS_DIR_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. */ +@%:@undef HAVE_NDIR_H]) +m4trace:configure.ac:65: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN]) +m4trace:configure.ac:65: -1- m4_pattern_allow([^STAT_MACROS_BROKEN$]) +m4trace:configure.ac:65: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the \'S_IS*\' macros in do not work properly. */ +@%:@undef STAT_MACROS_BROKEN]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_LOCALE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LOCALE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LOCALE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNISTD_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_UNISTD_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_LIMITS_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIMITS_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LIMITS_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_FCNTL_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FCNTL_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_FCNTL_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRING_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STRING_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MEMORY_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMORY_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_MEMORY_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_PARAM_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_PARAM_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_RESOURCE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_RESOURCE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_RESOURCE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_TIMEB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TIMEB_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_TIMEB_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIMEB_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TIME_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_TIME_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIME_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_SELECT_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SELECT_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_SELECT_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_FILE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_FILE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_FILE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SPAWN_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SPAWN_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SPAWN_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SPAWN_H$]) +m4trace:configure.ac:71: -1- AM_PROG_CC_C_O +m4trace:configure.ac:72: -1- AC_DEFINE_TRACE_LITERAL([const]) +m4trace:configure.ac:72: -1- m4_pattern_allow([^const$]) +m4trace:configure.ac:72: -1- AH_OUTPUT([const], [/* Define to empty if \'const\' does not conform to ANSI C. */ +@%:@undef const]) +m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^uid_t$]) +m4trace:configure.ac:73: -1- AH_OUTPUT([uid_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef uid_t]) +m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^gid_t$]) +m4trace:configure.ac:73: -1- AH_OUTPUT([gid_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef gid_t]) +m4trace:configure.ac:74: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) +m4trace:configure.ac:74: -1- m4_pattern_allow([^pid_t$]) +m4trace:configure.ac:74: -1- AH_OUTPUT([pid_t], [/* Define as a signed integer type capable of holding a process identifier. */ +@%:@undef pid_t]) +m4trace:configure.ac:75: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.ac:75: -1- m4_pattern_allow([^off_t$]) +m4trace:configure.ac:75: -1- AH_OUTPUT([off_t], [/* Define to \'long int\' if does not define. */ +@%:@undef off_t]) +m4trace:configure.ac:76: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.ac:76: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:76: -1- AH_OUTPUT([size_t], [/* Define as \'unsigned int\' if doesn\'t define. */ +@%:@undef size_t]) +m4trace:configure.ac:77: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) +m4trace:configure.ac:77: -1- m4_pattern_allow([^ssize_t$]) +m4trace:configure.ac:77: -1- AH_OUTPUT([ssize_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef ssize_t]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG_INT], [/* Define to 1 if the system has the type \'unsigned long long int\'. */ +@%:@undef HAVE_UNSIGNED_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_LONG_LONG_INT], [/* Define to 1 if the system has the type \'long long int\'. */ +@%:@undef HAVE_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTMAX_T]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_INTMAX_T$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_INTMAX_T], [/* Define to 1 if the system has the type \'intmax_t\'. */ +@%:@undef HAVE_INTMAX_T]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([intmax_t]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^intmax_t$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([intmax_t], [/* Define to the widest signed integer type if and do + not define. */ +@%:@undef intmax_t]) +m4trace:configure.ac:79: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^HAVE_UINTMAX_T$]) +m4trace:configure.ac:79: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define to 1 if the system has the type \'uintmax_t\'. */ +@%:@undef HAVE_UINTMAX_T]) +m4trace:configure.ac:79: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^uintmax_t$]) +m4trace:configure.ac:79: -1- AH_OUTPUT([uintmax_t], [/* Define to the widest unsigned integer type if and + do not define. */ +@%:@undef uintmax_t]) +m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIG_ATOMIC_T]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^HAVE_SIG_ATOMIC_T$]) +m4trace:configure.ac:82: -1- AH_OUTPUT([HAVE_SIG_ATOMIC_T], [/* Define to 1 if the system has the type \'sig_atomic_t\'. */ +@%:@undef HAVE_SIG_ATOMIC_T]) +m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([sig_atomic_t]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^sig_atomic_t$]) +m4trace:configure.ac:82: -1- AH_OUTPUT([sig_atomic_t], [/* 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]) +m4trace:configure.ac:86: -1- _m4_warn([obsolete], [The macro 'AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:2903: AC_TRY_COMPILE is expanded from... +lib/m4sugar/m4sh.m4:689: _AS_IF_ELSE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:2305: AC_CACHE_VAL is expanded from... +./lib/autoconf/general.m4:2326: AC_CACHE_CHECK is expanded from... +m4/acinclude.m4:105: AC_STRUCT_ST_MTIM_NSEC is expanded from... +configure.ac:86: the top level]) +m4trace:configure.ac:86: -1- AC_DEFINE_TRACE_LITERAL([ST_MTIM_NSEC]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^ST_MTIM_NSEC$]) +m4trace:configure.ac:86: -1- AH_OUTPUT([ST_MTIM_NSEC], [/* Define if struct stat contains a nanoseconds field */ +@%:@undef ST_MTIM_NSEC]) +m4trace:configure.ac:99: -1- AC_DEFINE_TRACE_LITERAL([FILE_TIMESTAMP_HI_RES]) +m4trace:configure.ac:99: -1- m4_pattern_allow([^FILE_TIMESTAMP_HI_RES$]) +m4trace:configure.ac:99: -1- AH_OUTPUT([FILE_TIMESTAMP_HI_RES], [/* Use high resolution file timestamps if nonzero. */ +@%:@undef FILE_TIMESTAMP_HI_RES]) +m4trace:configure.ac:102: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLOCK_GETTIME]) +m4trace:configure.ac:102: -1- m4_pattern_allow([^HAVE_CLOCK_GETTIME$]) +m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_CLOCK_GETTIME], [/* Define to 1 if you have the clock_gettime function. */ +@%:@undef HAVE_CLOCK_GETTIME]) +m4trace:configure.ac:127: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTIMEOFDAY]) +m4trace:configure.ac:127: -1- m4_pattern_allow([^HAVE_GETTIMEOFDAY$]) +m4trace:configure.ac:127: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have a standard gettimeofday function */ +@%:@undef HAVE_GETTIMEOFDAY]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the \'strtoll\' function. */ +@%:@undef HAVE_STRTOLL]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOLL]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRTOLL$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the \'strdup\' function. */ +@%:@undef HAVE_STRDUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRDUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRDUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRNDUP], [/* Define to 1 if you have the \'strndup\' function. */ +@%:@undef HAVE_STRNDUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNDUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRNDUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the \'stpcpy\' function. */ +@%:@undef HAVE_STPCPY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STPCPY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STPCPY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MEMRCHR], [/* Define to 1 if you have the \'memrchr\' function. */ +@%:@undef HAVE_MEMRCHR]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMRCHR]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMRCHR$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the \'mempcpy\' function. */ +@%:@undef HAVE_MEMPCPY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMPCPY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMPCPY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_UMASK], [/* Define to 1 if you have the \'umask\' function. */ +@%:@undef HAVE_UMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_UMASK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKSTEMP], [/* Define to 1 if you have the \'mkstemp\' function. */ +@%:@undef HAVE_MKSTEMP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKSTEMP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKSTEMP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKTEMP], [/* Define to 1 if you have the \'mktemp\' function. */ +@%:@undef HAVE_MKTEMP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKTEMP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKTEMP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_FDOPEN], [/* Define to 1 if you have the \'fdopen\' function. */ +@%:@undef HAVE_FDOPEN]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FDOPEN]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_FDOPEN$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_DUP], [/* Define to 1 if you have the \'dup\' function. */ +@%:@undef HAVE_DUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the \'dup2\' function. */ +@%:@undef HAVE_DUP2]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DUP2]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP2$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the \'getcwd\' function. */ +@%:@undef HAVE_GETCWD]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETCWD]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETCWD$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_REALPATH], [/* Define to 1 if you have the \'realpath\' function. */ +@%:@undef HAVE_REALPATH]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_REALPATH]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_REALPATH$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SIGSETMASK], [/* Define to 1 if you have the \'sigsetmask\' function. */ +@%:@undef HAVE_SIGSETMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGSETMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGSETMASK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SIGACTION], [/* Define to 1 if you have the \'sigaction\' function. */ +@%:@undef HAVE_SIGACTION]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGACTION]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGACTION$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the \'getgroups\' function. */ +@%:@undef HAVE_GETGROUPS]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETGROUPS]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETGROUPS$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETEUID], [/* Define to 1 if you have the \'seteuid\' function. */ +@%:@undef HAVE_SETEUID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETEUID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEUID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETEGID], [/* Define to 1 if you have the \'setegid\' function. */ +@%:@undef HAVE_SETEGID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETEGID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEGID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the \'setlinebuf\' function. */ +@%:@undef HAVE_SETLINEBUF]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETLINEBUF]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETLINEBUF$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETREUID], [/* Define to 1 if you have the \'setreuid\' function. */ +@%:@undef HAVE_SETREUID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETREUID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREUID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETREGID], [/* Define to 1 if you have the \'setregid\' function. */ +@%:@undef HAVE_SETREGID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETREGID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREGID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKFIFO], [/* Define to 1 if you have the \'mkfifo\' function. */ +@%:@undef HAVE_MKFIFO]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKFIFO$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the \'getrlimit\' function. */ +@%:@undef HAVE_GETRLIMIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETRLIMIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETRLIMIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETRLIMIT], [/* Define to 1 if you have the \'setrlimit\' function. */ +@%:@undef HAVE_SETRLIMIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETRLIMIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETRLIMIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the \'setvbuf\' function. */ +@%:@undef HAVE_SETVBUF]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETVBUF]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETVBUF$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_PIPE], [/* Define to 1 if you have the \'pipe\' function. */ +@%:@undef HAVE_PIPE]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PIPE]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PIPE$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the \'strerror\' function. */ +@%:@undef HAVE_STRERROR]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRERROR]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRERROR$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRSIGNAL], [/* Define to 1 if you have the \'strsignal\' function. */ +@%:@undef HAVE_STRSIGNAL]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRSIGNAL$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the \'lstat\' function. */ +@%:@undef HAVE_LSTAT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_LSTAT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the \'readlink\' function. */ +@%:@undef HAVE_READLINK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_READLINK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_READLINK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_ATEXIT], [/* Define to 1 if you have the \'atexit\' function. */ +@%:@undef HAVE_ATEXIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ATEXIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ATEXIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_ISATTY], [/* Define to 1 if you have the \'isatty\' function. */ +@%:@undef HAVE_ISATTY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISATTY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ISATTY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the \'ttyname\' function. */ +@%:@undef HAVE_TTYNAME]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TTYNAME]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_TTYNAME$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_PSELECT], [/* Define to 1 if you have the \'pselect\' function. */ +@%:@undef HAVE_PSELECT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PSELECT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PSELECT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_POSIX_SPAWN], [/* Define to 1 if you have the \'posix_spawn\' function. */ +@%:@undef HAVE_POSIX_SPAWN]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SPAWN]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWN$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_POSIX_SPAWNATTR_SETSIGMASK], [/* Define to 1 if you have the \'posix_spawnattr_setsigmask\' function. */ +@%:@undef HAVE_POSIX_SPAWNATTR_SETSIGMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SPAWNATTR_SETSIGMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWNATTR_SETSIGMASK$]) +m4trace:configure.ac:142: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_BSD_SIGNAL]) +m4trace:configure.ac:142: -1- m4_pattern_allow([^HAVE_DECL_BSD_SIGNAL$]) +m4trace:configure.ac:142: -1- AH_OUTPUT([HAVE_DECL_BSD_SIGNAL], [/* Define to 1 if you have the declaration of \'bsd_signal\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_BSD_SIGNAL]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_VFORK_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_VFORK_H]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_FORK], [/* Define to 1 if you have the \'fork\' function. */ +@%:@undef HAVE_FORK]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_VFORK], [/* Define to 1 if you have the \'vfork\' function. */ +@%:@undef HAVE_VFORK]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_VFORK]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_VFORK$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_WORKING_VFORK], [/* Define to 1 if \'vfork\' works. */ +@%:@undef HAVE_WORKING_VFORK]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([vfork]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^vfork$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([vfork], [/* Define as \'fork\' if \'vfork\' does not work. */ +@%:@undef vfork]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_FORK]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_FORK$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_WORKING_FORK], [/* Define to 1 if \'fork\' works. */ +@%:@undef HAVE_WORKING_FORK]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the \'strcasecmp\' function. */ +@%:@undef HAVE_STRCASECMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASECMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCASECMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNCASECMP], [/* Define to 1 if you have the \'strncasecmp\' function. */ +@%:@undef HAVE_STRNCASECMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNCASECMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCASECMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRCMPI], [/* Define to 1 if you have the \'strcmpi\' function. */ +@%:@undef HAVE_STRCMPI]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCMPI]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCMPI$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNCMPI], [/* Define to 1 if you have the \'strncmpi\' function. */ +@%:@undef HAVE_STRNCMPI]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNCMPI]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCMPI$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRICMP], [/* Define to 1 if you have the \'stricmp\' function. */ +@%:@undef HAVE_STRICMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRICMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRICMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNICMP], [/* Define to 1 if you have the \'strnicmp\' function. */ +@%:@undef HAVE_STRNICMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNICMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNICMP$]) +m4trace:configure.ac:153: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) +m4trace:configure.ac:153: -1- m4_pattern_allow([^HAVE_STRCOLL$]) +m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the \'strcoll\' function and it is properly defined. + */ +@%:@undef HAVE_STRCOLL]) +m4trace:configure.ac:154: -1- AC_DEFINE_TRACE_LITERAL([CLOSEDIR_VOID]) +m4trace:configure.ac:154: -1- m4_pattern_allow([^CLOSEDIR_VOID$]) +m4trace:configure.ac:154: -1- AH_OUTPUT([CLOSEDIR_VOID], [/* Define to 1 if the \'closedir\' function returns void instead of int. */ +@%:@undef CLOSEDIR_VOID]) +m4trace:configure.ac:157: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_TYPE]) +m4trace:configure.ac:157: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_TYPE$]) +m4trace:configure.ac:157: -1- AH_OUTPUT([HAVE_STRUCT_DIRENT_D_TYPE], [/* Define to 1 if \'d_type\' is a member of \'struct dirent\'. */ +@%:@undef HAVE_STRUCT_DIRENT_D_TYPE]) +m4trace:configure.ac:165: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG_PATH]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG_PATH]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:167: -1- AC_SUBST([GUILE_CFLAGS]) +m4trace:configure.ac:167: -1- AC_SUBST_TRACE([GUILE_CFLAGS]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_CFLAGS$]) +m4trace:configure.ac:167: -1- AC_SUBST([GUILE_LIBS]) +m4trace:configure.ac:167: -1- AC_SUBST_TRACE([GUILE_LIBS]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_LIBS$]) +m4trace:configure.ac:167: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GUILE]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^HAVE_GUILE$]) +m4trace:configure.ac:167: -1- AH_OUTPUT([HAVE_GUILE], [/* Embed GNU Guile support */ +@%:@undef HAVE_GUILE]) +m4trace:configure.ac:210: -1- AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = "yes"]) +m4trace:configure.ac:210: -1- AC_SUBST([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- AC_SUBST_TRACE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_TRUE$]) +m4trace:configure.ac:210: -1- AC_SUBST([HAVE_GUILE_FALSE]) +m4trace:configure.ac:210: -1- AC_SUBST_TRACE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_FALSE$]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL__SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL__SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL__SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'_sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL__SYS_SIGLIST]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL___SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL___SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL___SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'__sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL___SYS_SIGLIST]) +m4trace:configure.ac:223: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_WAIT_H]) +m4trace:configure.ac:223: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H]) +m4trace:configure.ac:223: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$]) +m4trace:configure.ac:224: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the \'waitpid\' function. */ +@%:@undef HAVE_WAITPID]) +m4trace:configure.ac:224: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WAITPID]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAITPID$]) +m4trace:configure.ac:224: -1- AH_OUTPUT([HAVE_WAIT3], [/* Define to 1 if you have the \'wait3\' function. */ +@%:@undef HAVE_WAIT3]) +m4trace:configure.ac:224: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAIT3$]) +m4trace:configure.ac:247: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNION_WAIT]) +m4trace:configure.ac:247: -1- m4_pattern_allow([^HAVE_UNION_WAIT$]) +m4trace:configure.ac:247: -1- AH_OUTPUT([HAVE_UNION_WAIT], [/* Define to 1 if you have the \'union wait\' type in . */ +@%:@undef HAVE_UNION_WAIT]) +m4trace:configure.ac:254: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:254: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:254: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Define to 1 if your system requires backslashes or drive specs in + pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:260: -1- AC_SUBST([REMOTE]) +m4trace:configure.ac:260: -1- AC_SUBST_TRACE([REMOTE]) +m4trace:configure.ac:260: -1- m4_pattern_allow([^REMOTE$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the \'gethostname\' function. */ +@%:@undef HAVE_GETHOSTNAME]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTNAME]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTNAME$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_SOCKET], [/* Define to 1 if you have the \'socket\' function. */ +@%:@undef HAVE_SOCKET]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKET]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_SOCKET$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the \'gethostbyname\' function. */ +@%:@undef HAVE_GETHOSTBYNAME]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME$]) +m4trace:configure.ac:262: -1- _m4_warn([obsolete], [The macro 'AC_FD_MSG' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:401: AC_FD_MSG is expanded from... +m4/acinclude.m4:38: CF_NETLIBS is expanded from... +lib/m4sugar/m4sh.m4:594: AS_CASE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:1603: AC_ARG_WITH is expanded from... +configure.ac:262: the top level]) +m4trace:configure.ac:281: -1- AM_CONDITIONAL([USE_CUSTOMS], [test "$use_customs" = true]) +m4trace:configure.ac:281: -1- AC_SUBST([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- AC_SUBST_TRACE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_TRUE$]) +m4trace:configure.ac:281: -1- AC_SUBST([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:281: -1- AC_SUBST_TRACE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_FALSE$]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:284: -1- AH_OUTPUT([HAVE_CASE_INSENSITIVE_FS], [/* Use case insensitive file names */ +@%:@undef HAVE_CASE_INSENSITIVE_FS]) +m4trace:configure.ac:285: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CASE_INSENSITIVE_FS]) +m4trace:configure.ac:285: -1- m4_pattern_allow([^HAVE_CASE_INSENSITIVE_FS$]) +m4trace:configure.ac:305: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SA_RESTART]) +m4trace:configure.ac:305: -1- m4_pattern_allow([^HAVE_SA_RESTART$]) +m4trace:configure.ac:305: -1- AH_OUTPUT([HAVE_SA_RESTART], [/* Define to 1 if defines the SA_RESTART constant. */ +@%:@undef HAVE_SA_RESTART]) +m4trace:configure.ac:318: -1- AC_DEFINE_TRACE_LITERAL([MAKE_JOBSERVER]) +m4trace:configure.ac:318: -1- m4_pattern_allow([^MAKE_JOBSERVER$]) +m4trace:configure.ac:318: -1- AH_OUTPUT([MAKE_JOBSERVER], [/* Define to 1 to enable job server support in GNU make. */ +@%:@undef MAKE_JOBSERVER]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLOPEN]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLOPEN$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLOPEN], [/* Define to 1 if you have the declaration of \'dlopen\', and to 0 if you don\'t. + */ +@%:@undef HAVE_DECL_DLOPEN]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLSYM]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLSYM$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLSYM], [/* Define to 1 if you have the declaration of \'dlsym\', and to 0 if you don\'t. + */ +@%:@undef HAVE_DECL_DLSYM]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLERROR]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLERROR$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLERROR], [/* Define to 1 if you have the declaration of \'dlerror\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_DLERROR]) +m4trace:configure.ac:341: -1- AC_DEFINE_TRACE_LITERAL([MAKE_LOAD]) +m4trace:configure.ac:341: -1- m4_pattern_allow([^MAKE_LOAD$]) +m4trace:configure.ac:341: -1- AH_OUTPUT([MAKE_LOAD], [/* Define to 1 to enable \'load\' support in GNU make. */ +@%:@undef MAKE_LOAD]) +m4trace:configure.ac:351: -1- AC_SUBST([AM_LDFLAGS], [-Wl,--export-dynamic]) +m4trace:configure.ac:351: -1- AC_SUBST_TRACE([AM_LDFLAGS]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:351: -1- AC_SUBST([AM_LDFLAGS], [-rdynamic]) +m4trace:configure.ac:351: -1- AC_SUBST_TRACE([AM_LDFLAGS]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:371: -1- AC_DEFINE_TRACE_LITERAL([MAKE_SYMLINKS]) +m4trace:configure.ac:371: -1- m4_pattern_allow([^MAKE_SYMLINKS$]) +m4trace:configure.ac:371: -1- AH_OUTPUT([MAKE_SYMLINKS], [/* Define to 1 to enable symbolic link timestamp checking. */ +@%:@undef MAKE_SYMLINKS]) +m4trace:configure.ac:403: -1- AC_DEFINE_TRACE_LITERAL([USE_POSIX_SPAWN]) +m4trace:configure.ac:403: -1- m4_pattern_allow([^USE_POSIX_SPAWN$]) +m4trace:configure.ac:403: -1- AH_OUTPUT([USE_POSIX_SPAWN], [/* Define to 1 to use posix_spawn(). */ +@%:@undef USE_POSIX_SPAWN]) +m4trace:configure.ac:415: -1- AC_DEFINE_TRACE_LITERAL([SCCS_GET]) +m4trace:configure.ac:415: -1- m4_pattern_allow([^SCCS_GET$]) +m4trace:configure.ac:415: -1- AH_OUTPUT([SCCS_GET], [/* Define to the name of the SCCS \'get\' command. */ +@%:@undef SCCS_GET]) +m4trace:configure.ac:419: -1- AC_DEFINE_TRACE_LITERAL([SCCS_GET_MINUS_G]) +m4trace:configure.ac:419: -1- m4_pattern_allow([^SCCS_GET_MINUS_G$]) +m4trace:configure.ac:419: -1- AH_OUTPUT([SCCS_GET_MINUS_G], [/* Define to 1 if the SCCS \'get\' command understands the \'-G\' option. */ +@%:@undef SCCS_GET_MINUS_G]) +m4trace:configure.ac:437: -1- AC_DEFINE_TRACE_LITERAL([MAKE_HOST]) +m4trace:configure.ac:437: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:437: -1- AH_OUTPUT([MAKE_HOST], [/* Build host information. */ +@%:@undef MAKE_HOST]) +m4trace:configure.ac:439: -1- AC_SUBST([MAKE_HOST]) +m4trace:configure.ac:439: -1- AC_SUBST_TRACE([MAKE_HOST]) +m4trace:configure.ac:439: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:442: -1- AM_CONDITIONAL([WINDOWSENV], [false]) +m4trace:configure.ac:442: -1- AC_SUBST([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- AC_SUBST_TRACE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:442: -1- AC_SUBST([WINDOWSENV_FALSE]) +m4trace:configure.ac:442: -1- AC_SUBST_TRACE([WINDOWSENV_FALSE]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AM_CONDITIONAL([WINDOWSENV], [true]) +m4trace:configure.ac:444: -1- AC_SUBST([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- AC_SUBST_TRACE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:444: -1- AC_SUBST([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AC_SUBST_TRACE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AC_DEFINE_TRACE_LITERAL([WINDOWS32]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWS32$]) +m4trace:configure.ac:444: -1- AH_OUTPUT([WINDOWS32], [/* Build for the WINDOWS32 API. */ +@%:@undef WINDOWS32]) +m4trace:configure.ac:444: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:444: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Support DOS-style pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:452: -1- AC_DEFINE_TRACE_LITERAL([PATH_SEPARATOR_CHAR]) +m4trace:configure.ac:452: -1- m4_pattern_allow([^PATH_SEPARATOR_CHAR$]) +m4trace:configure.ac:452: -1- AH_OUTPUT([PATH_SEPARATOR_CHAR], [/* Define to the character that separates directories in PATH. */ +@%:@undef PATH_SEPARATOR_CHAR]) +m4trace:configure.ac:455: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:455: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:455: -1- AH_OUTPUT([HAVE_DECL_GETLOADAVG], [/* Define to 1 if you have the declaration of \'getloadavg\'. */ +@%:@undef HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:460: -1- AC_DEFINE_TRACE_LITERAL([MK_CONFIGURE]) +m4trace:configure.ac:460: -1- m4_pattern_allow([^MK_CONFIGURE$]) +m4trace:configure.ac:460: -1- AH_OUTPUT([MK_CONFIGURE], [/* Define to 1 if config.h is generated by running the configure script. */ +@%:@undef MK_CONFIGURE]) +m4trace:configure.ac:469: -1- m4_pattern_allow([^MAINT_MAKEFILE$]) +m4trace:configure.ac:472: -1- AC_DEFINE_TRACE_LITERAL([WITH_DMALLOC]) +m4trace:configure.ac:472: -1- m4_pattern_allow([^WITH_DMALLOC$]) +m4trace:configure.ac:472: -1- AH_OUTPUT([WITH_DMALLOC], [/* Define if using the dmalloc debugging malloc package */ +@%:@undef WITH_DMALLOC]) +m4trace:configure.ac:532: -1- 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]) +m4trace:configure.ac:532: -1- AC_SUBST([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- AC_SUBST_TRACE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_TRUE$]) +m4trace:configure.ac:532: -1- AC_SUBST([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:532: -1- AC_SUBST_TRACE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_FALSE$]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:537: -1- AC_CONFIG_FILES([build.cfg tests/config-flags.pm \ + Makefile lib/Makefile doc/Makefile po/Makefile.in]) +m4trace:configure.ac:543: -1- AC_CONFIG_LINKS([build.sh:build.sh]) +m4trace:configure.ac:547: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) +m4trace:configure.ac:547: -1- AC_SUBST([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) +m4trace:configure.ac:547: -1- AC_SUBST([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LIBOBJDEPS], [$gl_libobjdeps]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LIBOBJDEPS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LIBOBJDEPS], [$gltests_libobjdeps]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LIBOBJDEPS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_top_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([INSTALL]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([MKDIR_P]) diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/traces.3 b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.3 new file mode 100644 index 0000000000..b993291c6f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.3 @@ -0,0 +1,2193 @@ +m4trace:aclocal.m4:1064: -1- AC_SUBST([am__quote]) +m4trace:aclocal.m4:1064: -1- AC_SUBST_TRACE([am__quote]) +m4trace:aclocal.m4:1064: -1- m4_pattern_allow([^am__quote$]) +m4trace:aclocal.m4:1720: -1- m4_include([m4/00gnulib.m4]) +m4trace:aclocal.m4:1721: -1- m4_include([m4/acinclude.m4]) +m4trace:aclocal.m4:1722: -1- m4_include([m4/alloca.m4]) +m4trace:aclocal.m4:1723: -1- m4_include([m4/asm-underscore.m4]) +m4trace:aclocal.m4:1724: -1- m4_include([m4/dospaths.m4]) +m4trace:aclocal.m4:1725: -1- m4_include([m4/eaccess.m4]) +m4trace:aclocal.m4:1726: -1- m4_include([m4/extensions.m4]) +m4trace:aclocal.m4:1727: -1- m4_include([m4/findprog-in.m4]) +m4trace:aclocal.m4:1728: -1- m4_include([m4/getloadavg.m4]) +m4trace:aclocal.m4:1729: -1- m4_include([m4/gettext.m4]) +m4trace:aclocal.m4:1730: -1- m4_include([m4/gnulib-common.m4]) +m4trace:aclocal.m4:1731: -1- m4_include([m4/gnulib-comp.m4]) +m4trace:aclocal.m4:1732: -1- m4_include([m4/host-cpu-c-abi.m4]) +m4trace:aclocal.m4:1733: -1- m4_include([m4/iconv.m4]) +m4trace:aclocal.m4:1734: -1- m4_include([m4/intlmacosx.m4]) +m4trace:aclocal.m4:1735: -1- m4_include([m4/largefile.m4]) +m4trace:aclocal.m4:1736: -1- m4_include([m4/lib-ld.m4]) +m4trace:aclocal.m4:1737: -1- m4_include([m4/lib-link.m4]) +m4trace:aclocal.m4:1738: -1- m4_include([m4/lib-prefix.m4]) +m4trace:aclocal.m4:1739: -1- m4_include([m4/longlong.m4]) +m4trace:aclocal.m4:1740: -1- m4_include([m4/nls.m4]) +m4trace:aclocal.m4:1741: -1- m4_include([m4/po.m4]) +m4trace:aclocal.m4:1742: -1- m4_include([m4/progtest.m4]) +m4trace:aclocal.m4:1743: -1- m4_include([m4/sig_atomic_t.m4]) +m4trace:aclocal.m4:1744: -1- m4_include([m4/stdbool.m4]) +m4trace:aclocal.m4:1745: -1- m4_include([m4/warn-on-use.m4]) +m4trace:aclocal.m4:1746: -1- m4_include([m4/year2038.m4]) +m4trace:aclocal.m4:1747: -1- m4_include([m4/zzgnulib.m4]) +m4trace:configure.ac:19: -1- AC_INIT([GNU Make], [4.4], [bug-make@gnu.org]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section 'AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:19: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:19: -1- AC_SUBST([SHELL]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:19: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_URL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:19: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:19: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:19: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:19: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([runstatedir], ['${localstatedir}/run']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([runstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:19: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:19: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:19: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +@%:@undef PACKAGE_NAME]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +@%:@undef PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +@%:@undef PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +@%:@undef PACKAGE_STRING]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +@%:@undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ +@%:@undef PACKAGE_URL]) +m4trace:configure.ac:19: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:19: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:19: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:24: -1- AC_CONFIG_AUX_DIR([build-aux]) +m4trace:configure.ac:26: -1- AC_CONFIG_HEADERS([src/config.h]) +m4trace:configure.ac:28: -1- AC_CONFIG_LIBOBJ_DIR([lib]) +m4trace:configure.ac:35: -1- AM_INIT_AUTOMAKE([1.16.1 foreign -Werror -Wall]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:35: -1- AM_AUTOMAKE_VERSION([1.18.1]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_DATA]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__isrc]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:35: -1- AC_SUBST([CYGPATH_W]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CYGPATH_W]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:35: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([PACKAGE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([VERSION]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ +@%:@undef PACKAGE]) +m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AH_OUTPUT([VERSION], [/* Version number of package */ +@%:@undef VERSION]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([missing]) +m4trace:configure.ac:35: -1- AC_SUBST([ACLOCAL]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ACLOCAL]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOCONF]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOCONF]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOMAKE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOMAKE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOHEADER]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOHEADER]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:35: -1- AC_SUBST([MAKEINFO]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MAKEINFO]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:35: -1- AC_SUBST([install_sh]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([install_sh]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:35: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:35: -1- AC_SUBST([MKDIR_P]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MKDIR_P]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:35: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([mkdir_p]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:35: -1- AC_SUBST([AWK]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AWK]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:35: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([SET_MAKE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__leading_dot]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__leading_dot]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:35: -1- AC_SUBST([AMTAR], ['$${TAR-tar}']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMTAR]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__tar]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__tar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__tar$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__untar]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__untar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__untar$]) +m4trace:configure.ac:35: -1- AC_SUBST([CTAGS]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CTAGS]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CTAGS$]) +m4trace:configure.ac:35: -1- AC_SUBST([ETAGS]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ETAGS]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^ETAGS$]) +m4trace:configure.ac:35: -1- AC_SUBST([CSCOPE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CSCOPE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CSCOPE$]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_V]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_V]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AC_SUBST([am__rm_f_notfound]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__rm_f_notfound]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__rm_f_notfound$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__xargs_n]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__xargs_n]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__xargs_n$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX, Interix, z/OS. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable extensions on Cosmopolitan Libc. */ +#ifndef _COSMO_SOURCE +# undef _COSMO_SOURCE +#endif +/* Enable general extensions on macOS. */ +#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 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 compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* 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 +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE +#endif +]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDIO_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDIO_H]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([EXEEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:38: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OBJEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:38: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:38: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DEPDIR]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^DEPDIR$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__include]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__include]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__include$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__nodep]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__nodep$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_INTTYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDINT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRINGS_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_STAT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if all of the C89 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]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_WCHAR_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_MINIX_CONFIG_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MINIX_CONFIG_H]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_ALL_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_COSMO_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_COSMO_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_DARWIN_C_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_DARWIN_C_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_GNU_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_HPUX_ALT_XOPEN_SOCKET_API]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_HPUX_ALT_XOPEN_SOCKET_API$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_NETBSD_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_NETBSD_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_OPENBSD_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_OPENBSD_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_ATTRIBS_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_BFP_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_BFP_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_DFP_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_DFP_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_FUNCS_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_FUNCS_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_TYPES_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_TYPES_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_LIB_EXT2__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_LIB_EXT2__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_MATH_SPEC_FUNCS__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_MATH_SPEC_FUNCS__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_TANDEM_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_MINIX]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_MINIX$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_1_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__EXTENSIONS__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_XOPEN_SOURCE$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:39: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:39: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:39: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:42: -1- m4_pattern_forbid([^gl_[A-Z]]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_ES$]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:42: -1- AC_CANONICAL_HOST +m4trace:configure.ac:42: -1- AC_CANONICAL_BUILD +m4trace:configure.ac:42: -1- AC_REQUIRE_AUX_FILE([config.sub]) +m4trace:configure.ac:42: -1- AC_REQUIRE_AUX_FILE([config.guess]) +m4trace:configure.ac:42: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_cpu], [$[1]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_cpu]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_vendor], [$[2]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_vendor]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_os]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_os]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:42: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_cpu], [$[1]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_cpu]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_vendor], [$[2]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_vendor]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_os]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_os]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_ISOC11_SOURCE]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_ISOC11_SOURCE$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_ISOC11_SOURCE], [/* Define to enable the declarations of ISO C 11 types and functions. */ +@%:@undef _ISOC11_SOURCE]) +m4trace:configure.ac:42: -1- AC_SUBST([CPP]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:42: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:42: -1- AC_SUBST([CPP]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:42: -1- AC_SUBST([AR]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:42: -1- AC_SUBST([AR]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:42: -1- AC_SUBST([ARFLAGS]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([ARFLAGS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^ARFLAGS$]) +m4trace:configure.ac:42: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:42: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +@%:@undef _FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_LARGE_FILES$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */ +@%:@undef _LARGE_FILES]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_TIME_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_TIME_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_TIME_BITS], [/* Number of bits in a timestamp, on hosts where this is settable. */ +@%:@undef _TIME_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +@%:@undef _FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([__MINGW_USE_VC2005_COMPAT]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^__MINGW_USE_VC2005_COMPAT$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([__MINGW_USE_VC2005_COMPAT], [/* For 64-bit time_t on 32-bit mingw. */ +@%:@undef __MINGW_USE_VC2005_COMPAT]) +m4trace:configure.ac:43: -1- AC_CONFIG_LIBOBJ_DIR([lib]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_LIBTOOL], [false]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_LIBTOOL_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_LIBTOOL_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- AH_OUTPUT([_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 +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([_Noreturn], [/* The _Noreturn keyword of C11. */ +#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) \\ + || (!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 _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) +# else +# define _Noreturn +# endif +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([isoc99_inline], [/* 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__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif]) +m4trace:configure.ac:43: -1- AH_OUTPUT([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_HAS_C_ATTRIBUTE(attr) 0 +#endif + + +/* _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_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_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires \'cold\' not \'__cold__\'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via \'free\'; it can be used only after declaring \'free\'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib\'s or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with \'-fwhole-program\'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following \'case\' or + \'default\' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a \'switch\' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with \'__\'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC\'s syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type \'[[un]signed] char\'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function\'s return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don\'t use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + + +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the \'__attribute__ ((__unused__)) ;\' + syntax. But clang does. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([async_safe], [/* The _GL_ASYNC_SAFE marker should be attached to functions that are + signal handlers (for signals other than SIGABRT, SIGPIPE) or can be + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked \'volatile\'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable \'signal_occurred\' is not declared \'volatile\'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([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))) +]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([size_t], [/* Define as \'unsigned int\' if doesn\'t define. */ +@%:@undef size_t]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if works. */ +@%:@undef HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \'alloca\', as a function or macro. */ +@%:@undef HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^ALLOCA$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^C_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using \'alloca.c\'. */ +@%:@undef C_ALLOCA]) +m4trace:configure.ac:43: -1- AH_OUTPUT([STACK_DIRECTION], [/* 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. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STACK_DIRECTION$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \'alloca\' after including , a header that + may be supplied by this distribution. */ +@%:@undef HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) +m4trace:configure.ac:43: -1- AC_SUBST([ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^ALLOCA_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_ALLOCA_H_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_ALLOCA_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([eaccess]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^eaccess$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([eaccess], [/* Define as \'access\' if you don\'t have the eaccess() function. */ +@%:@undef eaccess]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GNULIB_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBKSTAT], [/* Define to 1 if you have the \'kstat\' library (-lkstat). */ +@%:@undef HAVE_LIBKSTAT]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBKSTAT]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBKSTAT$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBPERFSTAT], [/* Define to 1 if you have the \'perfstat\' library (-lperfstat). */ +@%:@undef HAVE_LIBPERFSTAT]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPERFSTAT]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBPERFSTAT$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([DGUX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^DGUX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([DGUX], [/* Define to 1 for DGUX with . */ +@%:@undef DGUX]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBDGC], [/* Define to 1 if you have the \'dgc\' library (-ldgc). */ +@%:@undef HAVE_LIBDGC]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDGC]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBDGC$]) +m4trace:configure.ac:43: -1- AC_SUBST([GETLOADAVG_LIBS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GETLOADAVG_LIBS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GETLOADAVG_LIBS$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_SYS_LOADAVG_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_LOADAVG_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_LOADAVG_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_SYS_LOADAVG_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- _AM_COND_IF([GL_COND_OBJ_GETLOADAVG]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_PARAM_H]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_PSTAT_GETDYNAMIC], [/* Define to 1 if you have the \'pstat_getdynamic\' function. */ +@%:@undef HAVE_PSTAT_GETDYNAMIC]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PSTAT_GETDYNAMIC]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_PSTAT_GETDYNAMIC$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^SVR4$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([SVR4], [/* Define to 1 on System V Release 4. */ +@%:@undef SVR4]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([UMAX], [/* Define to 1 for Encore UMAX. */ +@%:@undef UMAX]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX4_3]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX4_3$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([UMAX4_3], [/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +@%:@undef UMAX4_3]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_MACH_MACH_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MACH_MACH_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MACH_MACH_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_MACH_MACH_H$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_NLIST_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_NLIST_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NLIST_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_NLIST_H$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_NLIST_N_UN_N_NAME]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_STRUCT_NLIST_N_UN_N_NAME$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_STRUCT_NLIST_N_UN_N_NAME], [/* Define to 1 if \'n_un.n_name\' is a member of \'struct nlist\'. */ +@%:@undef HAVE_STRUCT_NLIST_N_UN_N_NAME]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([N_NAME_POINTER]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^N_NAME_POINTER$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([N_NAME_POINTER], [/* Define to 1 if the nlist n_name member is a pointer */ +@%:@undef N_NAME_POINTER]) +m4trace:configure.ac:43: -1- _AM_COND_ENDIF([GL_COND_OBJ_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([GNULIB_TEST_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GNULIB_TEST_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([GNULIB_TEST_GETLOADAVG], [/* Define to 1 when the gnulib module getloadavg should be tested. */ +@%:@undef GNULIB_TEST_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST([HOST_CPU]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HOST_CPU]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU$]) +m4trace:configure.ac:43: -1- AC_SUBST([HOST_CPU_C_ABI]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HOST_CPU_C_ABI]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU_C_ABI$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([00001], [/* CPU and C ABI indicator */ +#ifndef __i386__ +#undef __i386__ +#endif +#ifndef __x86_64_x32__ +#undef __x86_64_x32__ +#endif +#ifndef __x86_64__ +#undef __x86_64__ +#endif +#ifndef __alpha__ +#undef __alpha__ +#endif +#ifndef __arm__ +#undef __arm__ +#endif +#ifndef __armhf__ +#undef __armhf__ +#endif +#ifndef __arm64_ilp32__ +#undef __arm64_ilp32__ +#endif +#ifndef __arm64__ +#undef __arm64__ +#endif +#ifndef __hppa__ +#undef __hppa__ +#endif +#ifndef __hppa64__ +#undef __hppa64__ +#endif +#ifndef __ia64_ilp32__ +#undef __ia64_ilp32__ +#endif +#ifndef __ia64__ +#undef __ia64__ +#endif +#ifndef __loongarch64__ +#undef __loongarch64__ +#endif +#ifndef __m68k__ +#undef __m68k__ +#endif +#ifndef __mips__ +#undef __mips__ +#endif +#ifndef __mipsn32__ +#undef __mipsn32__ +#endif +#ifndef __mips64__ +#undef __mips64__ +#endif +#ifndef __powerpc__ +#undef __powerpc__ +#endif +#ifndef __powerpc64__ +#undef __powerpc64__ +#endif +#ifndef __powerpc64_elfv2__ +#undef __powerpc64_elfv2__ +#endif +#ifndef __riscv32__ +#undef __riscv32__ +#endif +#ifndef __riscv64__ +#undef __riscv64__ +#endif +#ifndef __riscv32_ilp32__ +#undef __riscv32_ilp32__ +#endif +#ifndef __riscv32_ilp32f__ +#undef __riscv32_ilp32f__ +#endif +#ifndef __riscv32_ilp32d__ +#undef __riscv32_ilp32d__ +#endif +#ifndef __riscv64_ilp32__ +#undef __riscv64_ilp32__ +#endif +#ifndef __riscv64_ilp32f__ +#undef __riscv64_ilp32f__ +#endif +#ifndef __riscv64_ilp32d__ +#undef __riscv64_ilp32d__ +#endif +#ifndef __riscv64_lp64__ +#undef __riscv64_lp64__ +#endif +#ifndef __riscv64_lp64f__ +#undef __riscv64_lp64f__ +#endif +#ifndef __riscv64_lp64d__ +#undef __riscv64_lp64d__ +#endif +#ifndef __s390__ +#undef __s390__ +#endif +#ifndef __s390x__ +#undef __s390x__ +#endif +#ifndef __sh__ +#undef __sh__ +#endif +#ifndef __sparc__ +#undef __sparc__ +#endif +#ifndef __sparc64__ +#undef __sparc64__ +#endif +]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Define if the system uses DOS-style pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type \'_Bool\'. */ +@%:@undef HAVE__BOOL]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE__BOOL]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE__BOOL]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- AC_SUBST([STDBOOL_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([STDBOOL_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STDBOOL_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST([gltests_WITNESS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([gltests_WITNESS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^gltests_WITNESS$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_CFLAG_ALLOW_WARNINGS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_CFLAG_ALLOW_WARNINGS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_ALLOW_WARNINGS$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_CFLAG_GNULIB_WARNINGS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_CFLAG_GNULIB_WARNINGS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_GNULIB_WARNINGS$]) +m4trace:configure.ac:43: -1- AC_SUBST([LIBGNU_LIBDEPS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([LIBGNU_LIBDEPS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LIBDEPS$]) +m4trace:configure.ac:43: -1- AC_SUBST([LIBGNU_LTLIBDEPS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([LIBGNU_LTLIBDEPS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LTLIBDEPS$]) +m4trace:configure.ac:46: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:46: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:46: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPP]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPP]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:48: -1- AC_SUBST([AR]) +m4trace:configure.ac:48: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:50: -1- AC_SUBST([PERL]) +m4trace:configure.ac:50: -1- AC_SUBST_TRACE([PERL]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^PERL$]) +m4trace:configure.ac:53: -1- AC_CANONICAL_HOST +m4trace:configure.ac:54: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif]) +m4trace:configure.ac:54: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^WORDS_BIGENDIAN$]) +m4trace:configure.ac:54: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$]) +m4trace:configure.ac:54: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */ +@%:@undef AC_APPLE_UNIVERSAL_BUILD]) +m4trace:configure.ac:57: -1- AM_GNU_GETTEXT_VERSION([0.19.4]) +m4trace:configure.ac:58: -1- AM_GNU_GETTEXT([external]) +m4trace:configure.ac:58: -1- AC_SUBST([SED]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([SED]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:58: -1- AM_NLS +m4trace:configure.ac:58: -1- AC_SUBST([USE_NLS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([USE_NLS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^USE_NLS$]) +m4trace:configure.ac:58: -1- AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GETTEXT_MACRO_VERSION]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGFMT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGFMT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT$]) +m4trace:configure.ac:58: -1- AC_SUBST([GMSGFMT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GMSGFMT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGFMT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGFMT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([GMSGFMT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GMSGFMT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGMERGE]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGMERGE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGMERGE$]) +m4trace:configure.ac:58: -1- AC_SUBST([localedir]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT_EXTRA_OPTIONS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$]) +m4trace:configure.ac:58: -1- AC_REQUIRE_AUX_FILE([config.rpath]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFPREFERENCESCOPYAPPVALUE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_CFPREFERENCESCOPYAPPVALUE], [/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +@%:@undef HAVE_CFPREFERENCESCOPYAPPVALUE]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFLOCALECOPYCURRENT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_CFLOCALECOPYCURRENT], [/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +@%:@undef HAVE_CFLOCALECOPYCURRENT]) +m4trace:configure.ac:58: -1- AC_SUBST([INTL_MACOSX_LIBS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([INTL_MACOSX_LIBS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_ICONV$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function and it works. */ +@%:@undef HAVE_ICONV]) +m4trace:configure.ac:58: -1- AC_SUBST([LIBICONV]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LIBICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBICONV$]) +m4trace:configure.ac:58: -1- AC_SUBST([LTLIBICONV]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LTLIBICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBICONV$]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^ENABLE_NLS$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native + language is requested. */ +@%:@undef ENABLE_NLS]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_GETTEXT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ +@%:@undef HAVE_GETTEXT]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_DCGETTEXT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +@%:@undef HAVE_DCGETTEXT]) +m4trace:configure.ac:58: -1- AC_SUBST([INTLLIBS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([INTLLIBS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTLLIBS$]) +m4trace:configure.ac:58: -1- AC_SUBST([LIBINTL]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LIBINTL]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBINTL$]) +m4trace:configure.ac:58: -1- AC_SUBST([LTLIBINTL]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LTLIBINTL]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBINTL$]) +m4trace:configure.ac:58: -1- AC_SUBST([POSUB]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([POSUB]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^POSUB$]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_DIRENT_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_SYS_NDIR_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_SYS_DIR_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. */ +@%:@undef HAVE_NDIR_H]) +m4trace:configure.ac:65: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN]) +m4trace:configure.ac:65: -1- m4_pattern_allow([^STAT_MACROS_BROKEN$]) +m4trace:configure.ac:65: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the \'S_IS*\' macros in do not work properly. */ +@%:@undef STAT_MACROS_BROKEN]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_LOCALE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LOCALE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LOCALE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNISTD_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_UNISTD_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_LIMITS_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIMITS_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LIMITS_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_FCNTL_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FCNTL_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_FCNTL_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRING_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STRING_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MEMORY_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMORY_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_MEMORY_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_PARAM_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_PARAM_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_RESOURCE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_RESOURCE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_RESOURCE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_TIMEB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TIMEB_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_TIMEB_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIMEB_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TIME_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_TIME_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIME_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_SELECT_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SELECT_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_SELECT_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_FILE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_FILE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_FILE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SPAWN_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SPAWN_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SPAWN_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SPAWN_H$]) +m4trace:configure.ac:71: -1- AM_PROG_CC_C_O +m4trace:configure.ac:72: -1- AC_DEFINE_TRACE_LITERAL([const]) +m4trace:configure.ac:72: -1- m4_pattern_allow([^const$]) +m4trace:configure.ac:72: -1- AH_OUTPUT([const], [/* Define to empty if \'const\' does not conform to ANSI C. */ +@%:@undef const]) +m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^uid_t$]) +m4trace:configure.ac:73: -1- AH_OUTPUT([uid_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef uid_t]) +m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^gid_t$]) +m4trace:configure.ac:73: -1- AH_OUTPUT([gid_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef gid_t]) +m4trace:configure.ac:74: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) +m4trace:configure.ac:74: -1- m4_pattern_allow([^pid_t$]) +m4trace:configure.ac:74: -1- AH_OUTPUT([pid_t], [/* Define as a signed integer type capable of holding a process identifier. */ +@%:@undef pid_t]) +m4trace:configure.ac:75: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.ac:75: -1- m4_pattern_allow([^off_t$]) +m4trace:configure.ac:75: -1- AH_OUTPUT([off_t], [/* Define to \'long int\' if does not define. */ +@%:@undef off_t]) +m4trace:configure.ac:76: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.ac:76: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:76: -1- AH_OUTPUT([size_t], [/* Define as \'unsigned int\' if doesn\'t define. */ +@%:@undef size_t]) +m4trace:configure.ac:77: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) +m4trace:configure.ac:77: -1- m4_pattern_allow([^ssize_t$]) +m4trace:configure.ac:77: -1- AH_OUTPUT([ssize_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef ssize_t]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG_INT], [/* Define to 1 if the system has the type \'unsigned long long int\'. */ +@%:@undef HAVE_UNSIGNED_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_LONG_LONG_INT], [/* Define to 1 if the system has the type \'long long int\'. */ +@%:@undef HAVE_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTMAX_T]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_INTMAX_T$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_INTMAX_T], [/* Define to 1 if the system has the type \'intmax_t\'. */ +@%:@undef HAVE_INTMAX_T]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([intmax_t]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^intmax_t$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([intmax_t], [/* Define to the widest signed integer type if and do + not define. */ +@%:@undef intmax_t]) +m4trace:configure.ac:79: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^HAVE_UINTMAX_T$]) +m4trace:configure.ac:79: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define to 1 if the system has the type \'uintmax_t\'. */ +@%:@undef HAVE_UINTMAX_T]) +m4trace:configure.ac:79: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^uintmax_t$]) +m4trace:configure.ac:79: -1- AH_OUTPUT([uintmax_t], [/* Define to the widest unsigned integer type if and + do not define. */ +@%:@undef uintmax_t]) +m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIG_ATOMIC_T]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^HAVE_SIG_ATOMIC_T$]) +m4trace:configure.ac:82: -1- AH_OUTPUT([HAVE_SIG_ATOMIC_T], [/* Define to 1 if the system has the type \'sig_atomic_t\'. */ +@%:@undef HAVE_SIG_ATOMIC_T]) +m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([sig_atomic_t]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^sig_atomic_t$]) +m4trace:configure.ac:82: -1- AH_OUTPUT([sig_atomic_t], [/* 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]) +m4trace:configure.ac:86: -1- _m4_warn([obsolete], [The macro 'AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:2903: AC_TRY_COMPILE is expanded from... +lib/m4sugar/m4sh.m4:689: _AS_IF_ELSE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:2305: AC_CACHE_VAL is expanded from... +./lib/autoconf/general.m4:2326: AC_CACHE_CHECK is expanded from... +m4/acinclude.m4:105: AC_STRUCT_ST_MTIM_NSEC is expanded from... +configure.ac:86: the top level]) +m4trace:configure.ac:86: -1- AC_DEFINE_TRACE_LITERAL([ST_MTIM_NSEC]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^ST_MTIM_NSEC$]) +m4trace:configure.ac:86: -1- AH_OUTPUT([ST_MTIM_NSEC], [/* Define if struct stat contains a nanoseconds field */ +@%:@undef ST_MTIM_NSEC]) +m4trace:configure.ac:99: -1- AC_DEFINE_TRACE_LITERAL([FILE_TIMESTAMP_HI_RES]) +m4trace:configure.ac:99: -1- m4_pattern_allow([^FILE_TIMESTAMP_HI_RES$]) +m4trace:configure.ac:99: -1- AH_OUTPUT([FILE_TIMESTAMP_HI_RES], [/* Use high resolution file timestamps if nonzero. */ +@%:@undef FILE_TIMESTAMP_HI_RES]) +m4trace:configure.ac:102: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLOCK_GETTIME]) +m4trace:configure.ac:102: -1- m4_pattern_allow([^HAVE_CLOCK_GETTIME$]) +m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_CLOCK_GETTIME], [/* Define to 1 if you have the clock_gettime function. */ +@%:@undef HAVE_CLOCK_GETTIME]) +m4trace:configure.ac:127: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTIMEOFDAY]) +m4trace:configure.ac:127: -1- m4_pattern_allow([^HAVE_GETTIMEOFDAY$]) +m4trace:configure.ac:127: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have a standard gettimeofday function */ +@%:@undef HAVE_GETTIMEOFDAY]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the \'strtoll\' function. */ +@%:@undef HAVE_STRTOLL]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOLL]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRTOLL$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the \'strdup\' function. */ +@%:@undef HAVE_STRDUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRDUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRDUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRNDUP], [/* Define to 1 if you have the \'strndup\' function. */ +@%:@undef HAVE_STRNDUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNDUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRNDUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the \'stpcpy\' function. */ +@%:@undef HAVE_STPCPY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STPCPY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STPCPY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MEMRCHR], [/* Define to 1 if you have the \'memrchr\' function. */ +@%:@undef HAVE_MEMRCHR]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMRCHR]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMRCHR$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the \'mempcpy\' function. */ +@%:@undef HAVE_MEMPCPY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMPCPY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMPCPY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_UMASK], [/* Define to 1 if you have the \'umask\' function. */ +@%:@undef HAVE_UMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_UMASK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKSTEMP], [/* Define to 1 if you have the \'mkstemp\' function. */ +@%:@undef HAVE_MKSTEMP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKSTEMP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKSTEMP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKTEMP], [/* Define to 1 if you have the \'mktemp\' function. */ +@%:@undef HAVE_MKTEMP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKTEMP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKTEMP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_FDOPEN], [/* Define to 1 if you have the \'fdopen\' function. */ +@%:@undef HAVE_FDOPEN]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FDOPEN]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_FDOPEN$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_DUP], [/* Define to 1 if you have the \'dup\' function. */ +@%:@undef HAVE_DUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the \'dup2\' function. */ +@%:@undef HAVE_DUP2]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DUP2]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP2$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the \'getcwd\' function. */ +@%:@undef HAVE_GETCWD]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETCWD]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETCWD$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_REALPATH], [/* Define to 1 if you have the \'realpath\' function. */ +@%:@undef HAVE_REALPATH]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_REALPATH]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_REALPATH$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SIGSETMASK], [/* Define to 1 if you have the \'sigsetmask\' function. */ +@%:@undef HAVE_SIGSETMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGSETMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGSETMASK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SIGACTION], [/* Define to 1 if you have the \'sigaction\' function. */ +@%:@undef HAVE_SIGACTION]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGACTION]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGACTION$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the \'getgroups\' function. */ +@%:@undef HAVE_GETGROUPS]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETGROUPS]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETGROUPS$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETEUID], [/* Define to 1 if you have the \'seteuid\' function. */ +@%:@undef HAVE_SETEUID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETEUID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEUID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETEGID], [/* Define to 1 if you have the \'setegid\' function. */ +@%:@undef HAVE_SETEGID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETEGID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEGID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the \'setlinebuf\' function. */ +@%:@undef HAVE_SETLINEBUF]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETLINEBUF]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETLINEBUF$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETREUID], [/* Define to 1 if you have the \'setreuid\' function. */ +@%:@undef HAVE_SETREUID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETREUID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREUID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETREGID], [/* Define to 1 if you have the \'setregid\' function. */ +@%:@undef HAVE_SETREGID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETREGID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREGID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKFIFO], [/* Define to 1 if you have the \'mkfifo\' function. */ +@%:@undef HAVE_MKFIFO]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKFIFO$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the \'getrlimit\' function. */ +@%:@undef HAVE_GETRLIMIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETRLIMIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETRLIMIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETRLIMIT], [/* Define to 1 if you have the \'setrlimit\' function. */ +@%:@undef HAVE_SETRLIMIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETRLIMIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETRLIMIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the \'setvbuf\' function. */ +@%:@undef HAVE_SETVBUF]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETVBUF]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETVBUF$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_PIPE], [/* Define to 1 if you have the \'pipe\' function. */ +@%:@undef HAVE_PIPE]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PIPE]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PIPE$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the \'strerror\' function. */ +@%:@undef HAVE_STRERROR]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRERROR]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRERROR$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRSIGNAL], [/* Define to 1 if you have the \'strsignal\' function. */ +@%:@undef HAVE_STRSIGNAL]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRSIGNAL$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the \'lstat\' function. */ +@%:@undef HAVE_LSTAT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_LSTAT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the \'readlink\' function. */ +@%:@undef HAVE_READLINK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_READLINK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_READLINK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_ATEXIT], [/* Define to 1 if you have the \'atexit\' function. */ +@%:@undef HAVE_ATEXIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ATEXIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ATEXIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_ISATTY], [/* Define to 1 if you have the \'isatty\' function. */ +@%:@undef HAVE_ISATTY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISATTY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ISATTY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the \'ttyname\' function. */ +@%:@undef HAVE_TTYNAME]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TTYNAME]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_TTYNAME$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_PSELECT], [/* Define to 1 if you have the \'pselect\' function. */ +@%:@undef HAVE_PSELECT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PSELECT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PSELECT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_POSIX_SPAWN], [/* Define to 1 if you have the \'posix_spawn\' function. */ +@%:@undef HAVE_POSIX_SPAWN]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SPAWN]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWN$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_POSIX_SPAWNATTR_SETSIGMASK], [/* Define to 1 if you have the \'posix_spawnattr_setsigmask\' function. */ +@%:@undef HAVE_POSIX_SPAWNATTR_SETSIGMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SPAWNATTR_SETSIGMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWNATTR_SETSIGMASK$]) +m4trace:configure.ac:142: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_BSD_SIGNAL]) +m4trace:configure.ac:142: -1- m4_pattern_allow([^HAVE_DECL_BSD_SIGNAL$]) +m4trace:configure.ac:142: -1- AH_OUTPUT([HAVE_DECL_BSD_SIGNAL], [/* Define to 1 if you have the declaration of \'bsd_signal\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_BSD_SIGNAL]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_VFORK_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_VFORK_H]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_FORK], [/* Define to 1 if you have the \'fork\' function. */ +@%:@undef HAVE_FORK]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_VFORK], [/* Define to 1 if you have the \'vfork\' function. */ +@%:@undef HAVE_VFORK]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_VFORK]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_VFORK$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_WORKING_VFORK], [/* Define to 1 if \'vfork\' works. */ +@%:@undef HAVE_WORKING_VFORK]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([vfork]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^vfork$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([vfork], [/* Define as \'fork\' if \'vfork\' does not work. */ +@%:@undef vfork]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_FORK]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_FORK$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_WORKING_FORK], [/* Define to 1 if \'fork\' works. */ +@%:@undef HAVE_WORKING_FORK]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the \'strcasecmp\' function. */ +@%:@undef HAVE_STRCASECMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASECMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCASECMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNCASECMP], [/* Define to 1 if you have the \'strncasecmp\' function. */ +@%:@undef HAVE_STRNCASECMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNCASECMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCASECMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRCMPI], [/* Define to 1 if you have the \'strcmpi\' function. */ +@%:@undef HAVE_STRCMPI]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCMPI]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCMPI$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNCMPI], [/* Define to 1 if you have the \'strncmpi\' function. */ +@%:@undef HAVE_STRNCMPI]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNCMPI]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCMPI$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRICMP], [/* Define to 1 if you have the \'stricmp\' function. */ +@%:@undef HAVE_STRICMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRICMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRICMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNICMP], [/* Define to 1 if you have the \'strnicmp\' function. */ +@%:@undef HAVE_STRNICMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNICMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNICMP$]) +m4trace:configure.ac:153: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) +m4trace:configure.ac:153: -1- m4_pattern_allow([^HAVE_STRCOLL$]) +m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the \'strcoll\' function and it is properly defined. + */ +@%:@undef HAVE_STRCOLL]) +m4trace:configure.ac:154: -1- AC_DEFINE_TRACE_LITERAL([CLOSEDIR_VOID]) +m4trace:configure.ac:154: -1- m4_pattern_allow([^CLOSEDIR_VOID$]) +m4trace:configure.ac:154: -1- AH_OUTPUT([CLOSEDIR_VOID], [/* Define to 1 if the \'closedir\' function returns void instead of int. */ +@%:@undef CLOSEDIR_VOID]) +m4trace:configure.ac:157: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_TYPE]) +m4trace:configure.ac:157: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_TYPE$]) +m4trace:configure.ac:157: -1- AH_OUTPUT([HAVE_STRUCT_DIRENT_D_TYPE], [/* Define to 1 if \'d_type\' is a member of \'struct dirent\'. */ +@%:@undef HAVE_STRUCT_DIRENT_D_TYPE]) +m4trace:configure.ac:165: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG_PATH]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG_PATH]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:167: -1- AC_SUBST([GUILE_CFLAGS]) +m4trace:configure.ac:167: -1- AC_SUBST_TRACE([GUILE_CFLAGS]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_CFLAGS$]) +m4trace:configure.ac:167: -1- AC_SUBST([GUILE_LIBS]) +m4trace:configure.ac:167: -1- AC_SUBST_TRACE([GUILE_LIBS]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_LIBS$]) +m4trace:configure.ac:167: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GUILE]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^HAVE_GUILE$]) +m4trace:configure.ac:167: -1- AH_OUTPUT([HAVE_GUILE], [/* Embed GNU Guile support */ +@%:@undef HAVE_GUILE]) +m4trace:configure.ac:210: -1- AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = "yes"]) +m4trace:configure.ac:210: -1- AC_SUBST([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- AC_SUBST_TRACE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_TRUE$]) +m4trace:configure.ac:210: -1- AC_SUBST([HAVE_GUILE_FALSE]) +m4trace:configure.ac:210: -1- AC_SUBST_TRACE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_FALSE$]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL__SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL__SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL__SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'_sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL__SYS_SIGLIST]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL___SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL___SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL___SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'__sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL___SYS_SIGLIST]) +m4trace:configure.ac:223: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_WAIT_H]) +m4trace:configure.ac:223: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H]) +m4trace:configure.ac:223: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$]) +m4trace:configure.ac:224: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the \'waitpid\' function. */ +@%:@undef HAVE_WAITPID]) +m4trace:configure.ac:224: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WAITPID]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAITPID$]) +m4trace:configure.ac:224: -1- AH_OUTPUT([HAVE_WAIT3], [/* Define to 1 if you have the \'wait3\' function. */ +@%:@undef HAVE_WAIT3]) +m4trace:configure.ac:224: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAIT3$]) +m4trace:configure.ac:247: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNION_WAIT]) +m4trace:configure.ac:247: -1- m4_pattern_allow([^HAVE_UNION_WAIT$]) +m4trace:configure.ac:247: -1- AH_OUTPUT([HAVE_UNION_WAIT], [/* Define to 1 if you have the \'union wait\' type in . */ +@%:@undef HAVE_UNION_WAIT]) +m4trace:configure.ac:254: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:254: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:254: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Define to 1 if your system requires backslashes or drive specs in + pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:260: -1- AC_SUBST([REMOTE]) +m4trace:configure.ac:260: -1- AC_SUBST_TRACE([REMOTE]) +m4trace:configure.ac:260: -1- m4_pattern_allow([^REMOTE$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the \'gethostname\' function. */ +@%:@undef HAVE_GETHOSTNAME]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTNAME]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTNAME$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_SOCKET], [/* Define to 1 if you have the \'socket\' function. */ +@%:@undef HAVE_SOCKET]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKET]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_SOCKET$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the \'gethostbyname\' function. */ +@%:@undef HAVE_GETHOSTBYNAME]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME$]) +m4trace:configure.ac:262: -1- _m4_warn([obsolete], [The macro 'AC_FD_MSG' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:401: AC_FD_MSG is expanded from... +m4/acinclude.m4:38: CF_NETLIBS is expanded from... +lib/m4sugar/m4sh.m4:594: AS_CASE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:1603: AC_ARG_WITH is expanded from... +configure.ac:262: the top level]) +m4trace:configure.ac:281: -1- AM_CONDITIONAL([USE_CUSTOMS], [test "$use_customs" = true]) +m4trace:configure.ac:281: -1- AC_SUBST([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- AC_SUBST_TRACE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_TRUE$]) +m4trace:configure.ac:281: -1- AC_SUBST([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:281: -1- AC_SUBST_TRACE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_FALSE$]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:284: -1- AH_OUTPUT([HAVE_CASE_INSENSITIVE_FS], [/* Use case insensitive file names */ +@%:@undef HAVE_CASE_INSENSITIVE_FS]) +m4trace:configure.ac:285: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CASE_INSENSITIVE_FS]) +m4trace:configure.ac:285: -1- m4_pattern_allow([^HAVE_CASE_INSENSITIVE_FS$]) +m4trace:configure.ac:305: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SA_RESTART]) +m4trace:configure.ac:305: -1- m4_pattern_allow([^HAVE_SA_RESTART$]) +m4trace:configure.ac:305: -1- AH_OUTPUT([HAVE_SA_RESTART], [/* Define to 1 if defines the SA_RESTART constant. */ +@%:@undef HAVE_SA_RESTART]) +m4trace:configure.ac:318: -1- AC_DEFINE_TRACE_LITERAL([MAKE_JOBSERVER]) +m4trace:configure.ac:318: -1- m4_pattern_allow([^MAKE_JOBSERVER$]) +m4trace:configure.ac:318: -1- AH_OUTPUT([MAKE_JOBSERVER], [/* Define to 1 to enable job server support in GNU make. */ +@%:@undef MAKE_JOBSERVER]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLOPEN]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLOPEN$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLOPEN], [/* Define to 1 if you have the declaration of \'dlopen\', and to 0 if you don\'t. + */ +@%:@undef HAVE_DECL_DLOPEN]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLSYM]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLSYM$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLSYM], [/* Define to 1 if you have the declaration of \'dlsym\', and to 0 if you don\'t. + */ +@%:@undef HAVE_DECL_DLSYM]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLERROR]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLERROR$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLERROR], [/* Define to 1 if you have the declaration of \'dlerror\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_DLERROR]) +m4trace:configure.ac:341: -1- AC_DEFINE_TRACE_LITERAL([MAKE_LOAD]) +m4trace:configure.ac:341: -1- m4_pattern_allow([^MAKE_LOAD$]) +m4trace:configure.ac:341: -1- AH_OUTPUT([MAKE_LOAD], [/* Define to 1 to enable \'load\' support in GNU make. */ +@%:@undef MAKE_LOAD]) +m4trace:configure.ac:351: -1- AC_SUBST([AM_LDFLAGS], [-Wl,--export-dynamic]) +m4trace:configure.ac:351: -1- AC_SUBST_TRACE([AM_LDFLAGS]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:351: -1- AC_SUBST([AM_LDFLAGS], [-rdynamic]) +m4trace:configure.ac:351: -1- AC_SUBST_TRACE([AM_LDFLAGS]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:371: -1- AC_DEFINE_TRACE_LITERAL([MAKE_SYMLINKS]) +m4trace:configure.ac:371: -1- m4_pattern_allow([^MAKE_SYMLINKS$]) +m4trace:configure.ac:371: -1- AH_OUTPUT([MAKE_SYMLINKS], [/* Define to 1 to enable symbolic link timestamp checking. */ +@%:@undef MAKE_SYMLINKS]) +m4trace:configure.ac:403: -1- AC_DEFINE_TRACE_LITERAL([USE_POSIX_SPAWN]) +m4trace:configure.ac:403: -1- m4_pattern_allow([^USE_POSIX_SPAWN$]) +m4trace:configure.ac:403: -1- AH_OUTPUT([USE_POSIX_SPAWN], [/* Define to 1 to use posix_spawn(). */ +@%:@undef USE_POSIX_SPAWN]) +m4trace:configure.ac:415: -1- AC_DEFINE_TRACE_LITERAL([SCCS_GET]) +m4trace:configure.ac:415: -1- m4_pattern_allow([^SCCS_GET$]) +m4trace:configure.ac:415: -1- AH_OUTPUT([SCCS_GET], [/* Define to the name of the SCCS \'get\' command. */ +@%:@undef SCCS_GET]) +m4trace:configure.ac:419: -1- AC_DEFINE_TRACE_LITERAL([SCCS_GET_MINUS_G]) +m4trace:configure.ac:419: -1- m4_pattern_allow([^SCCS_GET_MINUS_G$]) +m4trace:configure.ac:419: -1- AH_OUTPUT([SCCS_GET_MINUS_G], [/* Define to 1 if the SCCS \'get\' command understands the \'-G\' option. */ +@%:@undef SCCS_GET_MINUS_G]) +m4trace:configure.ac:437: -1- AC_DEFINE_TRACE_LITERAL([MAKE_HOST]) +m4trace:configure.ac:437: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:437: -1- AH_OUTPUT([MAKE_HOST], [/* Build host information. */ +@%:@undef MAKE_HOST]) +m4trace:configure.ac:439: -1- AC_SUBST([MAKE_HOST]) +m4trace:configure.ac:439: -1- AC_SUBST_TRACE([MAKE_HOST]) +m4trace:configure.ac:439: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:442: -1- AM_CONDITIONAL([WINDOWSENV], [false]) +m4trace:configure.ac:442: -1- AC_SUBST([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- AC_SUBST_TRACE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:442: -1- AC_SUBST([WINDOWSENV_FALSE]) +m4trace:configure.ac:442: -1- AC_SUBST_TRACE([WINDOWSENV_FALSE]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AM_CONDITIONAL([WINDOWSENV], [true]) +m4trace:configure.ac:444: -1- AC_SUBST([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- AC_SUBST_TRACE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:444: -1- AC_SUBST([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AC_SUBST_TRACE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AC_DEFINE_TRACE_LITERAL([WINDOWS32]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWS32$]) +m4trace:configure.ac:444: -1- AH_OUTPUT([WINDOWS32], [/* Build for the WINDOWS32 API. */ +@%:@undef WINDOWS32]) +m4trace:configure.ac:444: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:444: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Support DOS-style pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:452: -1- AC_DEFINE_TRACE_LITERAL([PATH_SEPARATOR_CHAR]) +m4trace:configure.ac:452: -1- m4_pattern_allow([^PATH_SEPARATOR_CHAR$]) +m4trace:configure.ac:452: -1- AH_OUTPUT([PATH_SEPARATOR_CHAR], [/* Define to the character that separates directories in PATH. */ +@%:@undef PATH_SEPARATOR_CHAR]) +m4trace:configure.ac:455: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:455: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:455: -1- AH_OUTPUT([HAVE_DECL_GETLOADAVG], [/* Define to 1 if you have the declaration of \'getloadavg\'. */ +@%:@undef HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:460: -1- AC_DEFINE_TRACE_LITERAL([MK_CONFIGURE]) +m4trace:configure.ac:460: -1- m4_pattern_allow([^MK_CONFIGURE$]) +m4trace:configure.ac:460: -1- AH_OUTPUT([MK_CONFIGURE], [/* Define to 1 if config.h is generated by running the configure script. */ +@%:@undef MK_CONFIGURE]) +m4trace:configure.ac:469: -1- m4_pattern_allow([^MAINT_MAKEFILE$]) +m4trace:configure.ac:472: -1- AC_DEFINE_TRACE_LITERAL([WITH_DMALLOC]) +m4trace:configure.ac:472: -1- m4_pattern_allow([^WITH_DMALLOC$]) +m4trace:configure.ac:472: -1- AH_OUTPUT([WITH_DMALLOC], [/* Define if using the dmalloc debugging malloc package */ +@%:@undef WITH_DMALLOC]) +m4trace:configure.ac:532: -1- 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]) +m4trace:configure.ac:532: -1- AC_SUBST([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- AC_SUBST_TRACE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_TRUE$]) +m4trace:configure.ac:532: -1- AC_SUBST([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:532: -1- AC_SUBST_TRACE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_FALSE$]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:537: -1- AC_CONFIG_FILES([build.cfg tests/config-flags.pm \ + Makefile lib/Makefile doc/Makefile po/Makefile.in]) +m4trace:configure.ac:543: -1- AC_CONFIG_LINKS([build.sh:build.sh]) +m4trace:configure.ac:547: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) +m4trace:configure.ac:547: -1- AC_SUBST([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) +m4trace:configure.ac:547: -1- AC_SUBST([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LIBOBJDEPS], [$gl_libobjdeps]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LIBOBJDEPS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LIBOBJDEPS], [$gltests_libobjdeps]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LIBOBJDEPS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_top_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([INSTALL]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([MKDIR_P]) diff --git a/local/recipes/dev/gnu-make/source/build-aux/compile b/local/recipes/dev/gnu-make/source/build-aux/compile new file mode 100755 index 0000000000..02ff093c33 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/compile @@ -0,0 +1,364 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2025-06-18.21; # UTC + +# Copyright (C) 1999-2025 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file unneeded_conversions +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) UNNEEDED_CONVERSIONS, no +# conversion will take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then + # MSYS2 environment. + file_conv=cygwin + else + # Original MinGW environment. + file_conv=mingw + fi + ;; + MSYS*) + # Old MSYS environment, or MSYS2 with 32-bit MSYS2 shell. + file_conv=cygwin + ;; + CYGWIN*) + # Cygwin environment. + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + # This is the optimization mentioned above: + # If UNNEEDED_CONVERSIONS contains $file_conv, don't convert. + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -w "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.lo | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: . +EOF + exit $? + ;; + -v | --v*) + echo "compile (GNU Automake) $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + clang-cl | *[/\\]clang-cl | clang-cl.exe | *[/\\]clang-cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%Y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/config.guess b/local/recipes/dev/gnu-make/source/build-aux/config.guess new file mode 100755 index 0000000000..a9d01fde46 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/config.guess @@ -0,0 +1,1818 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2025 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2025-07-10' + +# 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 +# (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 . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# 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/cgit/config.git/plain/config.guess +# +# Please send patches to . + + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system '$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2025 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." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + 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 +# headache to deal with in a portable fashion. + +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # 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 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c17 c99 c89 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +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_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case $UNAME_SYSTEM in +Linux|GNU|GNU/*) + LIBC=unknown + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif + #endif + #endif + EOF + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # 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 + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + UNAME_MACHINE_ARCH=`(uname -p 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 + aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + 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=$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 + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # 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 + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + GUESS=$machine-${os}${release}${abi-} + ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + 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\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; + *:ekkoBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; + *:SolidBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; + macppc:MirBSD:*:*) + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; + *:MirBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; + *:Sortix:*:*) + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + 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}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # 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 + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # 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. + 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:*) + GUESS=m68k-unknown-sysv4 + ;; + *:[Aa]miga[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; + *:[Mm]orph[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-morphos + ;; + *:OS/390:*:*) + GUESS=i370-ibm-openedition + ;; + *:z/VM:*:*) + GUESS=s390-ibm-zvmoe + ;; + *:OS400:*:*) + GUESS=powerpc-ibm-os400 + ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + GUESS=arm-unknown-riscos + ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + 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. + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; + NILE*:*:*:dcosx) + GUESS=pyramid-pyramid-svr4 + ;; + DRS?6000:unix:4.0:6*) + GUESS=sparc-icl-nx6 + ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; + s390x:SunOS:*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; + sun4H:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + 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 test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + 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. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; + sun4*:SunOS:*:*) + 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'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; + sun3*:SunOS:*:*) + 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 + sun3) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun4) + GUESS=sparc-sun-sunos$UNAME_RELEASE + ;; + esac + ;; + aushp:SunOS:*:*) + 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 + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; + m68k:machten:*:*) + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; + powerpc:machten:*:*) + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; + RISC*:Mach:*:*) + GUESS=mips-dec-mach_bsd4.3 + ;; + RISC*:ULTRIX:*:*) + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; + VAX*:ULTRIX*:*:*) + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; + Motorola:PowerMAX_OS:*:*) + GUESS=powerpc-motorola-powermax + ;; + Motorola:*:4.3:PL8-*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:Power_UNIX:*:*) + GUESS=powerpc-harris-powerunix + ;; + m88k:CX/UX:7*:*) + GUESS=m88k-harris-cxux7 + ;; + m88k:*:4*:R4*) + GUESS=m88k-motorola-sysv4 + ;; + m88k:*:3*:R3*) + GUESS=m88k-motorola-sysv3 + ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x + then + GUESS=m88k-dg-dgux$UNAME_RELEASE + else + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + fi + else + GUESS=i586-dg-dgux$UNAME_RELEASE + fi + ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + GUESS=m88k-dolphin-sysv3 + ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + GUESS=m88k-motorola-sysv3 + ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + GUESS=m88k-tektronix-sysv3 + ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + GUESS=m68k-tektronix-bsd + ;; + *:IRIX*:*:*) + 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. + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + GUESS=i386-ibm-aix + ;; + ia64:AIX:*:*) + if test -x /usr/bin/oslevel ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + 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 + sed 's/^ //' << EOF > "$dummy.c" + #include + + int + main () + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + GUESS=$SYSTEM_NAME + else + GUESS=rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + GUESS=rs6000-ibm-aix3.2.4 + else + GUESS=rs6000-ibm-aix3.2 + fi + ;; + *: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 + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + 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 + fi + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; + *:AIX:*:*) + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + GUESS=rs6000-bull-bosx + ;; + DPX/2?00:B.O.S.:*:*) + GUESS=m68k-bull-sysv3 + ;; + 9000/[34]??:4.3bsd:1.*:*) + GUESS=m68k-hp-bsd + ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + GUESS=m68k-hp-bsd4.4 + ;; + 9000/[34678]??:HP-UX:*:*) + 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 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 + 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 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int + main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; + ia64:HP-UX:*:*) + 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" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; + 9000/8??:4.3bsd:*:*) + GUESS=hppa1.0-hp-bsd + ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; + hp8??:OSF1:*:*) + GUESS=hppa1.0-hp-osf + ;; + i*86:OSF1:*:*) + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk + else + GUESS=$UNAME_MACHINE-unknown-osf1 + fi + ;; + parisc*:Lites*:*:*) + GUESS=hppa1.1-hp-lites + ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + GUESS=c1-convex-bsd + ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + GUESS=c34-convex-bsd + ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + GUESS=c38-convex-bsd + ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + GUESS=c4-convex-bsd + ;; + CRAY*Y-MP:*:*:*) + 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/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; + CRAY*T3E:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; + CRAY*SV1:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; + *:UNICOS/mp:*:*) + 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/ /_/'` + 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/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; + sparc*:BSD/OS:*:*) + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; + *:BSD/OS:*:*) + 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 + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; + i*:CYGWIN*:*) + GUESS=$UNAME_MACHINE-pc-cygwin + ;; + *:MINGW64*:*) + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; + *:MINGW*:*) + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; + *:MSYS*:*) + GUESS=$UNAME_MACHINE-pc-msys + ;; + i*:PW*:*) + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; + *:Interix*:*) + case $UNAME_MACHINE in + x86) + GUESS=i586-pc-interix$UNAME_RELEASE + ;; + authenticamd | genuineintel | EM64T) + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; + IA64) + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; + esac ;; + i*:UWIN*:*) + GUESS=$UNAME_MACHINE-pc-uwin + ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + GUESS=x86_64-pc-cygwin + ;; + prep*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; + *:GNU:*:*) + # the GNU system + 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 + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; + aarch64:Linux:*:*) + 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 __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #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 + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + 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 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + 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 + 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 + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + else + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + fi + fi + ;; + avr32*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + cris:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + crisv32:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + e2k:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + frv:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + hexagon:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:Linux:*:*) + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; + ia64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m32r*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m68*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + 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:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + openrisc*:Linux:*:*) + GUESS=or1k-unknown-linux-$LIBC + ;; + or32:Linux:*:* | or1k*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + padre:Linux:*:*) + GUESS=sparc-unknown-linux-$LIBC + ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + 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*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; + esac + ;; + ppc64:Linux:*:*) + GUESS=powerpc64-unknown-linux-$LIBC + ;; + ppc:Linux:*:*) + GUESS=powerpc-unknown-linux-$LIBC + ;; + ppc64le:Linux:*:*) + GUESS=powerpc64le-unknown-linux-$LIBC + ;; + ppcle:Linux:*:*) + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + s390:Linux:*:* | s390x:Linux:*:*) + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; + sh64*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sh*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + tile*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + vax:Linux:*:*) + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; + x86_64:Linux:*:*) + 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:*:*) + 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. + 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. + 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. + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; + i*86:XTS-300:*:STOP) + GUESS=$UNAME_MACHINE-unknown-stop + ;; + i*86:atheos:*:*) + GUESS=$UNAME_MACHINE-unknown-atheos + ;; + i*86:syllable:*:*) + GUESS=$UNAME_MACHINE-pc-syllable + ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; + i*86:*DOS:*:*) + 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 + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + fi + ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv32 + fi + ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # 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. + GUESS=i586-pc-msdosdjgpp + ;; + Intel:Mach:3*:*) + GUESS=i386-pc-mach3 + ;; + paragon:*:*:*) + GUESS=i860-intel-osf1 + ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + fi + ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + GUESS=m68010-convergent-sysv + ;; + mc68k:UNIX:SYSTEM5:3.51m) + GUESS=m68k-convergent-sysv + ;; + M680?0:D-NIX:5.3:*) + 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) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /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*:*) + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; + mc68030:UNIX_System_V:4.*:*) + GUESS=m68k-atari-sysv4 + ;; + TSUNAMI:LynxOS:2.*:*) + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; + rs6000:LynxOS:2.*:*) + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; + SM[BE]S:UNIX_SV:*:*) + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; + RM*:ReliantUNIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + RM*:SINIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 + else + GUESS=ns32k-sni-sysv + fi + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort + # says + GUESS=i586-unisys-sysv4 + ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + GUESS=hppa1.1-stratus-sysv4 + ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + GUESS=i860-stratus-sysv4 + ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=$UNAME_MACHINE-stratus-vos + ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=hppa1.1-stratus-vos + ;; + mc68*:A/UX:*:*) + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; + news*:NEWS-OS:6*:*) + GUESS=mips-sony-newsos6 + ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE + else + GUESS=mips-unknown-sysv$UNAME_RELEASE + fi + ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + GUESS=powerpc-be-beos + ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + GUESS=powerpc-apple-beos + ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + GUESS=i586-pc-beos + ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + 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:*:*) + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; + SX-5:SUPER-UX:*:*) + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; + SX-6:SUPER-UX:*:*) + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; + SX-7:SUPER-UX:*:*) + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; + SX-8:SUPER-UX:*:*) + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; + SX-8R:SUPER-UX:*:*) + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; + Power*:Rhapsody:*:*) + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; + *:Rhapsody:*:*) + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + 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 + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + 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 + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; + *:QNX:*:4*) + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; + NSE-*:NONSTOP_KERNEL:*:*) + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; + *:NonStop-UX:*:*) + GUESS=mips-compaq-nonstopux + ;; + BS2000:POSIX*:*:*) + GUESS=bs2000-siemens-sysv + ;; + DS/*:UNIX_System_V:*:*) + 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. + if test "${cputype-}" = 386; then + UNAME_MACHINE=i386 + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype + fi + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; + *:TOPS-10:*:*) + GUESS=pdp10-unknown-tops10 + ;; + *:TENEX:*:*) + GUESS=pdp10-unknown-tenex + ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + GUESS=pdp10-dec-tops20 + ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + GUESS=pdp10-xkl-tops20 + ;; + *:TOPS-20:*:*) + GUESS=pdp10-unknown-tops20 + ;; + *:ITS:*:*) + GUESS=pdp10-unknown-its + ;; + SEI:*:*:SEIUX) + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; + *:DragonFly:*:*) + 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*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; + esac ;; + *:XENIX:*:SysV) + GUESS=i386-pc-xenix + ;; + i*86:skyos:*:*) + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; + i*86:rdos:*:*) + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; + x86_64:VMkernel:*:*) + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + x86_64:[Ii]ronclad:*:*|i?86:[Ii]ronclad:*:*) + GUESS=$UNAME_MACHINE-pc-ironclad-mlibc + ;; + *:[Ii]ronclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad-mlibc + ;; +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" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +int +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$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. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF +fi + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%Y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/config.guess~ b/local/recipes/dev/gnu-make/source/build-aux/config.guess~ new file mode 100755 index 0000000000..48a684601b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/config.guess~ @@ -0,0 +1,1815 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2024 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2024-07-27' + +# 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 +# (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 . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# 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/cgit/config.git/plain/config.guess +# +# Please send patches to . + + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system '$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2024 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." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + 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 +# headache to deal with in a portable fashion. + +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # 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 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c17 c99 c89 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +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_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case $UNAME_SYSTEM in +Linux|GNU|GNU/*) + LIBC=unknown + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif + #endif + #endif + EOF + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # 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 + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + UNAME_MACHINE_ARCH=`(uname -p 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 + aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + 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=$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 + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # 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 + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + GUESS=$machine-${os}${release}${abi-} + ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + 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\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; + *:ekkoBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; + *:SolidBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; + macppc:MirBSD:*:*) + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; + *:MirBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; + *:Sortix:*:*) + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + 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}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # 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 + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # 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. + 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:*) + GUESS=m68k-unknown-sysv4 + ;; + *:[Aa]miga[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; + *:[Mm]orph[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-morphos + ;; + *:OS/390:*:*) + GUESS=i370-ibm-openedition + ;; + *:z/VM:*:*) + GUESS=s390-ibm-zvmoe + ;; + *:OS400:*:*) + GUESS=powerpc-ibm-os400 + ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + GUESS=arm-unknown-riscos + ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + 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. + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; + NILE*:*:*:dcosx) + GUESS=pyramid-pyramid-svr4 + ;; + DRS?6000:unix:4.0:6*) + GUESS=sparc-icl-nx6 + ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; + s390x:SunOS:*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; + sun4H:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + 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 test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + 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. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; + sun4*:SunOS:*:*) + 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'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; + sun3*:SunOS:*:*) + 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 + sun3) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun4) + GUESS=sparc-sun-sunos$UNAME_RELEASE + ;; + esac + ;; + aushp:SunOS:*:*) + 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 + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; + m68k:machten:*:*) + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; + powerpc:machten:*:*) + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; + RISC*:Mach:*:*) + GUESS=mips-dec-mach_bsd4.3 + ;; + RISC*:ULTRIX:*:*) + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; + VAX*:ULTRIX*:*:*) + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; + Motorola:PowerMAX_OS:*:*) + GUESS=powerpc-motorola-powermax + ;; + Motorola:*:4.3:PL8-*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:Power_UNIX:*:*) + GUESS=powerpc-harris-powerunix + ;; + m88k:CX/UX:7*:*) + GUESS=m88k-harris-cxux7 + ;; + m88k:*:4*:R4*) + GUESS=m88k-motorola-sysv4 + ;; + m88k:*:3*:R3*) + GUESS=m88k-motorola-sysv3 + ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x + then + GUESS=m88k-dg-dgux$UNAME_RELEASE + else + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + fi + else + GUESS=i586-dg-dgux$UNAME_RELEASE + fi + ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + GUESS=m88k-dolphin-sysv3 + ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + GUESS=m88k-motorola-sysv3 + ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + GUESS=m88k-tektronix-sysv3 + ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + GUESS=m68k-tektronix-bsd + ;; + *:IRIX*:*:*) + 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. + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + GUESS=i386-ibm-aix + ;; + ia64:AIX:*:*) + if test -x /usr/bin/oslevel ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + 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 + sed 's/^ //' << EOF > "$dummy.c" + #include + + int + main () + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + GUESS=$SYSTEM_NAME + else + GUESS=rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + GUESS=rs6000-ibm-aix3.2.4 + else + GUESS=rs6000-ibm-aix3.2 + fi + ;; + *: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 + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + 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 + fi + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; + *:AIX:*:*) + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + GUESS=rs6000-bull-bosx + ;; + DPX/2?00:B.O.S.:*:*) + GUESS=m68k-bull-sysv3 + ;; + 9000/[34]??:4.3bsd:1.*:*) + GUESS=m68k-hp-bsd + ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + GUESS=m68k-hp-bsd4.4 + ;; + 9000/[34678]??:HP-UX:*:*) + 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 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 + 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 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int + main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; + ia64:HP-UX:*:*) + 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" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; + 9000/8??:4.3bsd:*:*) + GUESS=hppa1.0-hp-bsd + ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; + hp8??:OSF1:*:*) + GUESS=hppa1.0-hp-osf + ;; + i*86:OSF1:*:*) + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk + else + GUESS=$UNAME_MACHINE-unknown-osf1 + fi + ;; + parisc*:Lites*:*:*) + GUESS=hppa1.1-hp-lites + ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + GUESS=c1-convex-bsd + ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + GUESS=c34-convex-bsd + ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + GUESS=c38-convex-bsd + ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + GUESS=c4-convex-bsd + ;; + CRAY*Y-MP:*:*:*) + 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/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; + CRAY*T3E:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; + CRAY*SV1:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; + *:UNICOS/mp:*:*) + 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/ /_/'` + 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/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; + sparc*:BSD/OS:*:*) + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; + *:BSD/OS:*:*) + 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 + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; + i*:CYGWIN*:*) + GUESS=$UNAME_MACHINE-pc-cygwin + ;; + *:MINGW64*:*) + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; + *:MINGW*:*) + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; + *:MSYS*:*) + GUESS=$UNAME_MACHINE-pc-msys + ;; + i*:PW*:*) + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; + *:Interix*:*) + case $UNAME_MACHINE in + x86) + GUESS=i586-pc-interix$UNAME_RELEASE + ;; + authenticamd | genuineintel | EM64T) + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; + IA64) + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; + esac ;; + i*:UWIN*:*) + GUESS=$UNAME_MACHINE-pc-uwin + ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + GUESS=x86_64-pc-cygwin + ;; + prep*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; + *:GNU:*:*) + # the GNU system + 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 + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; + aarch64:Linux:*:*) + 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 __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #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 + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + 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 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + 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 + 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 + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + else + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + fi + fi + ;; + avr32*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + cris:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + crisv32:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + e2k:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + frv:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + hexagon:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:Linux:*:*) + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; + ia64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m32r*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m68*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + 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:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + openrisc*:Linux:*:*) + GUESS=or1k-unknown-linux-$LIBC + ;; + or32:Linux:*:* | or1k*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + padre:Linux:*:*) + GUESS=sparc-unknown-linux-$LIBC + ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + 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*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; + esac + ;; + ppc64:Linux:*:*) + GUESS=powerpc64-unknown-linux-$LIBC + ;; + ppc:Linux:*:*) + GUESS=powerpc-unknown-linux-$LIBC + ;; + ppc64le:Linux:*:*) + GUESS=powerpc64le-unknown-linux-$LIBC + ;; + ppcle:Linux:*:*) + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + s390:Linux:*:* | s390x:Linux:*:*) + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; + sh64*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sh*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + tile*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + vax:Linux:*:*) + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; + x86_64:Linux:*:*) + 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:*:*) + 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. + 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. + 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. + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; + i*86:XTS-300:*:STOP) + GUESS=$UNAME_MACHINE-unknown-stop + ;; + i*86:atheos:*:*) + GUESS=$UNAME_MACHINE-unknown-atheos + ;; + i*86:syllable:*:*) + GUESS=$UNAME_MACHINE-pc-syllable + ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; + i*86:*DOS:*:*) + 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 + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + fi + ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv32 + fi + ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # 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. + GUESS=i586-pc-msdosdjgpp + ;; + Intel:Mach:3*:*) + GUESS=i386-pc-mach3 + ;; + paragon:*:*:*) + GUESS=i860-intel-osf1 + ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + fi + ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + GUESS=m68010-convergent-sysv + ;; + mc68k:UNIX:SYSTEM5:3.51m) + GUESS=m68k-convergent-sysv + ;; + M680?0:D-NIX:5.3:*) + 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) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /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*:*) + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; + mc68030:UNIX_System_V:4.*:*) + GUESS=m68k-atari-sysv4 + ;; + TSUNAMI:LynxOS:2.*:*) + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; + rs6000:LynxOS:2.*:*) + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; + SM[BE]S:UNIX_SV:*:*) + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; + RM*:ReliantUNIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + RM*:SINIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 + else + GUESS=ns32k-sni-sysv + fi + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort + # says + GUESS=i586-unisys-sysv4 + ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + GUESS=hppa1.1-stratus-sysv4 + ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + GUESS=i860-stratus-sysv4 + ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=$UNAME_MACHINE-stratus-vos + ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=hppa1.1-stratus-vos + ;; + mc68*:A/UX:*:*) + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; + news*:NEWS-OS:6*:*) + GUESS=mips-sony-newsos6 + ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE + else + GUESS=mips-unknown-sysv$UNAME_RELEASE + fi + ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + GUESS=powerpc-be-beos + ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + GUESS=powerpc-apple-beos + ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + GUESS=i586-pc-beos + ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + 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:*:*) + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; + SX-5:SUPER-UX:*:*) + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; + SX-6:SUPER-UX:*:*) + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; + SX-7:SUPER-UX:*:*) + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; + SX-8:SUPER-UX:*:*) + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; + SX-8R:SUPER-UX:*:*) + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; + Power*:Rhapsody:*:*) + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; + *:Rhapsody:*:*) + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + 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 + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + 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 + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; + *:QNX:*:4*) + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; + NSE-*:NONSTOP_KERNEL:*:*) + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; + *:NonStop-UX:*:*) + GUESS=mips-compaq-nonstopux + ;; + BS2000:POSIX*:*:*) + GUESS=bs2000-siemens-sysv + ;; + DS/*:UNIX_System_V:*:*) + 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. + if test "${cputype-}" = 386; then + UNAME_MACHINE=i386 + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype + fi + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; + *:TOPS-10:*:*) + GUESS=pdp10-unknown-tops10 + ;; + *:TENEX:*:*) + GUESS=pdp10-unknown-tenex + ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + GUESS=pdp10-dec-tops20 + ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + GUESS=pdp10-xkl-tops20 + ;; + *:TOPS-20:*:*) + GUESS=pdp10-unknown-tops20 + ;; + *:ITS:*:*) + GUESS=pdp10-unknown-its + ;; + SEI:*:*:SEIUX) + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; + *:DragonFly:*:*) + 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*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; + esac ;; + *:XENIX:*:SysV) + GUESS=i386-pc-xenix + ;; + i*86:skyos:*:*) + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; + i*86:rdos:*:*) + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; + x86_64:VMkernel:*:*) + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; +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" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +int +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$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. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF +fi + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/config.rpath b/local/recipes/dev/gnu-make/source/build-aux/config.rpath new file mode 100755 index 0000000000..b625621fac --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/config.rpath @@ -0,0 +1,684 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2014 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# 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 first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's _LT_CC_BASENAME. + +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's _LT_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + ecc*) + wl='-Wl,' + ;; + icc* | ifort*) + wl='-Wl,' + ;; + lf95*) + wl='-Wl,' + ;; + nagfor*) + wl='-Wl,-Wl,,' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + xl* | bgxl* | bgf* | mpixl*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + wl= + ;; + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + newsos6) + ;; + *nto* | *qnx*) + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + wl='-Qoption ld ' + ;; + *) + wl='-Wl,' + ;; + esac + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's _LT_LINKER_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + case "$host_os" in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32* | cegcc*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + haiku*) + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then + : + else + ld_shlibs=no + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd2.[01]*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + ;; + *) + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + *nto* | *qnx*) + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 +libname_spec='lib$name' +case "$host_os" in + aix3*) + library_names_spec='$libname.a' + ;; + aix[4-9]*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + case "$host_cpu" in + powerpc*) + library_names_spec='$libname$shrext' ;; + m68k) + library_names_spec='$libname.a' ;; + esac + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + cygwin* | mingw* | pw32* | cegcc*) + shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' + ;; + darwin* | rhapsody*) + shrext=.dylib + library_names_spec='$libname$shrext' + ;; + dgux*) + library_names_spec='$libname$shrext' + ;; + freebsd[23].*) + library_names_spec='$libname$shrext$versuffix' + ;; + freebsd* | dragonfly*) + library_names_spec='$libname$shrext' + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + haiku*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' + ;; + irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + library_names_spec='$libname$shrext' + ;; + knetbsd*-gnu) + library_names_spec='$libname$shrext' + ;; + netbsd*) + library_names_spec='$libname$shrext' + ;; + newsos6) + library_names_spec='$libname$shrext' + ;; + *nto* | *qnx*) + library_names_spec='$libname$shrext' + ;; + openbsd*) + library_names_spec='$libname$shrext$versuffix' + ;; + os2*) + libname_spec='$name' + shrext=.dll + library_names_spec='$libname.a' + ;; + osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' + ;; + sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' + ;; + tpf*) + library_names_spec='$libname$shrext' + ;; + uts4*) + library_names_spec='$libname$shrext' + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# 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/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 +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# 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="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2025 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." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + 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 + cloudabi*-eabi* \ + | kfreebsd*-gnu* \ + | knetbsd*-gnu* \ + | kopensolaris*-gnu* \ + | ironclad-* \ + | linux-* \ + | managarm-* \ + | netbsd*-eabi* \ + | netbsd*-gnu* \ + | nto-qnx* \ + | os2-emx* \ + | rtmk-nova* \ + | storm-chaos* \ + | uclinux-gnu* \ + | uclinux-uclibc* \ + | windows-* ) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + case $field1-$field2 in + # Shorthands that happen to contain a single dash + convex-c[12] | convex-c3[248]) + basic_machine=$field2-convex + basic_os= + ;; + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Do not treat sunos as a manufacturer + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + # Manufacturers + 3100* \ + | 32* \ + | 3300* \ + | 3600* \ + | 7300* \ + | acorn \ + | altos* \ + | apollo \ + | apple \ + | atari \ + | att* \ + | axis \ + | be \ + | bull \ + | cbm \ + | ccur \ + | cisco \ + | commodore \ + | convergent* \ + | convex* \ + | cray \ + | crds \ + | dec* \ + | delta* \ + | dg \ + | digital \ + | dolphin \ + | encore* \ + | gould \ + | harris \ + | highlevel \ + | hitachi* \ + | hp \ + | ibm* \ + | intergraph \ + | isi* \ + | knuth \ + | masscomp \ + | microblaze* \ + | mips* \ + | motorola* \ + | ncr* \ + | news \ + | next \ + | ns \ + | oki \ + | omron* \ + | pc533* \ + | rebel \ + | rom68k \ + | rombug \ + | semi \ + | sequent* \ + | sgi* \ + | siemens \ + | sim \ + | sni \ + | sony* \ + | stratus \ + | sun \ + | sun[234]* \ + | tektronix \ + | tti* \ + | ultra \ + | unicom* \ + | wec \ + | winbond \ + | wrs) + basic_machine=$field1-$field2 + basic_os= + ;; + tock* | zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300) + cpu=m68k + vendor=motorola + ;; + # This used to be dpx2*, but that gets the RS6000-based + # DPX/20 and the x86-based DPX/2-100 wrong. See + # https://oldskool.silicium.org/stations/bull_dpx20.htm + # https://www.feb-patrimoine.com/english/bull_dpx2.htm + # https://www.feb-patrimoine.com/english/unix_and_bull.htm + dpx2 | dpx2[23]00 | dpx2[23]xx) + cpu=m68k + vendor=bull + ;; + dpx2100 | dpx21xx) + cpu=i386 + vendor=bull + ;; + dpx20) + cpu=rs6000 + vendor=bull + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x"$basic_os" != x +then + +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just +# set os. +obj= +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|'` + ;; + *-*) + saved_IFS=$IFS + IFS="-" read kernel os <&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; + *) + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 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-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- | linux-ohos*- ) + ;; + uclinux-uclibc*- | uclinux-gnu*- ) + ;; + ironclad-mlibc*-) + ;; + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -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 + ;; + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 + ;; + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) + ;; + rtmk-nova-) + ;; + *-eabi*- | *-gnueabi*-) + ;; + ios*-simulator- | tvos*-simulator- | watchos*-simulator- ) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) + # Blank kernel with real OS is always fine. + ;; + --*) + # Blank kernel and OS with real machine code file format 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 $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos* | *-solaris*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%Y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/config.sub~ b/local/recipes/dev/gnu-make/source/build-aux/config.sub~ new file mode 100755 index 0000000000..4aaae46f6f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/config.sub~ @@ -0,0 +1,2354 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2024 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale + +timestamp='2024-05-27' + +# 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 +# (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 . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# 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/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 +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# 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="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2024 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." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + 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 + cloudabi*-eabi* \ + | kfreebsd*-gnu* \ + | knetbsd*-gnu* \ + | kopensolaris*-gnu* \ + | linux-* \ + | managarm-* \ + | netbsd*-eabi* \ + | netbsd*-gnu* \ + | nto-qnx* \ + | os2-emx* \ + | rtmk-nova* \ + | storm-chaos* \ + | uclinux-gnu* \ + | uclinux-uclibc* \ + | windows-* ) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + case $field1-$field2 in + # Shorthands that happen to contain a single dash + convex-c[12] | convex-c3[248]) + basic_machine=$field2-convex + basic_os= + ;; + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Do not treat sunos as a manufacturer + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + # Manufacturers + 3100* \ + | 32* \ + | 3300* \ + | 3600* \ + | 7300* \ + | acorn \ + | altos* \ + | apollo \ + | apple \ + | atari \ + | att* \ + | axis \ + | be \ + | bull \ + | cbm \ + | ccur \ + | cisco \ + | commodore \ + | convergent* \ + | convex* \ + | cray \ + | crds \ + | dec* \ + | delta* \ + | dg \ + | digital \ + | dolphin \ + | encore* \ + | gould \ + | harris \ + | highlevel \ + | hitachi* \ + | hp \ + | ibm* \ + | intergraph \ + | isi* \ + | knuth \ + | masscomp \ + | microblaze* \ + | mips* \ + | motorola* \ + | ncr* \ + | news \ + | next \ + | ns \ + | oki \ + | omron* \ + | pc533* \ + | rebel \ + | rom68k \ + | rombug \ + | semi \ + | sequent* \ + | siemens \ + | sgi* \ + | siemens \ + | sim \ + | sni \ + | sony* \ + | stratus \ + | sun \ + | sun[234]* \ + | tektronix \ + | tti* \ + | ultra \ + | unicom* \ + | wec \ + | winbond \ + | wrs) + basic_machine=$field1-$field2 + basic_os= + ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300) + cpu=m68k + vendor=motorola + ;; + # This used to be dpx2*, but that gets the RS6000-based + # DPX/20 and the x86-based DPX/2-100 wrong. See + # https://oldskool.silicium.org/stations/bull_dpx20.htm + # https://www.feb-patrimoine.com/english/bull_dpx2.htm + # https://www.feb-patrimoine.com/english/unix_and_bull.htm + dpx2 | dpx2[23]00 | dpx2[23]xx) + cpu=m68k + vendor=bull + ;; + dpx2100 | dpx21xx) + cpu=i386 + vendor=bull + ;; + dpx20) + cpu=rs6000 + vendor=bull + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x"$basic_os" != x +then + +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just +# set os. +obj= +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|'` + ;; + *-*) + saved_IFS=$IFS + IFS="-" read kernel os <&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; + *) + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 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-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- | linux-ohos*- ) + ;; + uclinux-uclibc*- | uclinux-gnu*- ) + ;; + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -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 + ;; + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 + ;; + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) + ;; + rtmk-nova-) + ;; + *-eabi*- | *-gnueabi*-) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) + # Blank kernel with real OS is always fine. + ;; + --*) + # Blank kernel and OS with real machine code file format 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 $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos* | *-solaris*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/depcomp b/local/recipes/dev/gnu-make/source/build-aux/depcomp new file mode 100755 index 0000000000..9f6725b9e0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/depcomp @@ -0,0 +1,792 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2025-06-18.21; # UTC + +# Copyright (C) 1999-2025 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +GNU Automake home page: . +General help using GNU software: . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp (GNU Automake) $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interference from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsolete pre-3.x GCC compilers. +## but also to in-use compilers like IBM xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%Y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/install-sh b/local/recipes/dev/gnu-make/source/build-aux/install-sh new file mode 100755 index 0000000000..1d8d966964 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/install-sh @@ -0,0 +1,541 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2025-06-18.21; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +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= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -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. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: ." + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -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 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + 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 + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + # 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-writable /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 incompatibility 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 + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # 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. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (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 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + 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 || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%Y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/mdate-sh b/local/recipes/dev/gnu-make/source/build-aux/mdate-sh new file mode 100755 index 0000000000..22396e4067 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/mdate-sh @@ -0,0 +1,227 @@ +#!/bin/sh +# Get modification time of a file or directory, or value of +# $SOURCE_DATE_EPOCH, and pretty-print it, formatted like 1 January 2000. + +scriptversion=2025-06-25.21; # UTC + +# Copyright (C) 1995-2025 Free Software Foundation, Inc. +# written by Ulrich Drepper , June 1995 +# +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +if test -n "${ZSH_VERSION+set}" && (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 +fi + +case $1 in + '') + echo "$0: No file. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: mdate-sh [--help] [--version] FILE + +Pretty-print the modification day of FILE, in the format: +1 January 1970 + +Report bugs to . +GNU Automake home page: . +General help using GNU software: . +EOF + exit $? + ;; + -v | --v*) + echo "mdate-sh (GNU Automake) $scriptversion" + exit $? + ;; +esac + +# Warn if more than one file given. +if test $# -ne 1; then + echo "$0: warning: multiple files given, using first: $*" >&2 +fi + +error () +{ + echo "$0: $1" >&2 + exit 1 +} + +# set $month ("January") and $nummonth (1) given arg MON ("Jan"). +mon_to_month () +{ + case $1 in + Jan) month=January; nummonth=1;; + Feb) month=February; nummonth=2;; + Mar) month=March; nummonth=3;; + Apr) month=April; nummonth=4;; + May) month=May; nummonth=5;; + Jun) month=June; nummonth=6;; + Jul) month=July; nummonth=7;; + Aug) month=August; nummonth=8;; + Sep) month=September; nummonth=9;; + Oct) month=October; nummonth=10;; + Nov) month=November; nummonth=11;; + Dec) month=December; nummonth=12;; + esac +} + +# Prevent date giving response in another language. +LANG=C +export LANG +LC_ALL=C +export LC_ALL +LC_TIME=C +export LC_TIME + +# Use UTC to get reproducible result. +TZ=UTC0 +export TZ + +# +# GNU ls changes its time format in response to the TIME_STYLE +# variable. Since we cannot assume 'unset' works, revert this +# variable to its documented default. +if test "${TIME_STYLE+set}" = set; then + TIME_STYLE=posix-long-iso + export TIME_STYLE +fi + +save_arg1=$1 + +# Find out how to get the extended ls output of a file or directory. +if ls -L /dev/null 1>/dev/null 2>&1; then + ls_command='ls -L -l -d' +else + ls_command='ls -l -d' +fi +# Avoid user/group names that might have spaces, when possible. +if ls -n /dev/null 1>/dev/null 2>&1; then + ls_command="$ls_command -n" +fi + +# A 'ls -l' line looks as follows on OS/2. +# drwxrwx--- 0 Aug 11 2001 foo +# This differs from Unix, which adds ownership information. +# drwxrwx--- 2 root root 4096 Aug 11 2001 foo +# +# To find the date, we split the line on spaces and iterate on words +# until we find a month. This cannot work with files whose owner is a +# user named "Jan", or "Feb", etc. However, it's unlikely that '/' +# will be owned by a user whose name is a month. So we first look at +# the extended ls output of the root directory to decide how many +# words should be skipped to get the date. + +# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. +set x`$ls_command /` + +# Find which argument is the month. +month= +command= +until test $month +do + test $# -gt 0 || error "failed parsing '$ls_command /' output" + shift + # Add another shift to the command. + command="$command shift;" + mon_to_month $1 +done + +test -n "$month" || error "failed parsing '$ls_command /' output" + +# Get the extended ls output of the file or directory. +set dummy x`eval "$ls_command \"\\\$save_arg1\""` + +# Remove all preceding arguments +eval $command + +# Because of the dummy argument above, month is in $2. +# +# On a POSIX system, we should have +# $# = 5 +# $1 = file size +# $2 = month +# $3 = day +# $4 = year or time +# $5 = filename +# +# On Darwin 7.7.0 and 7.6.0, we have +# $# = 4 +# $1 = day +# $2 = month +# $3 = year or time +# $4 = filename + +# Get the month. +mon_to_month $2 + +case $3 in + ???*) day=$1;; + *) day=$3; shift;; +esac + +# Here we have to deal with the problem that the ls output gives either +# the time of day or the year. +case $3 in + *:*) set `date`; eval year=\$$# + case $2 in + Jan) nummonthtod=1;; + Feb) nummonthtod=2;; + Mar) nummonthtod=3;; + Apr) nummonthtod=4;; + May) nummonthtod=5;; + Jun) nummonthtod=6;; + Jul) nummonthtod=7;; + Aug) nummonthtod=8;; + Sep) nummonthtod=9;; + Oct) nummonthtod=10;; + Nov) nummonthtod=11;; + Dec) nummonthtod=12;; + esac + # For the first six months of the year the time notation can also + # be used for files modified in the last year. + if (expr $nummonth \> $nummonthtod) >/dev/null; + then + year=`expr $year - 1` + fi;; + *) year=$3;; +esac + +# The result. +echo $day $month $year + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%Y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/missing b/local/recipes/dev/gnu-make/source/build-aux/missing new file mode 100755 index 0000000000..5e450bab3c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/missing @@ -0,0 +1,236 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU and other programs. + +scriptversion=2025-06-18.21; # UTC + +# shellcheck disable=SC2006,SC2268 # we must support pre-POSIX shells + +# Copyright (C) 1996-2025 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: +aclocal autoconf autogen autoheader autom4te automake autoreconf +bison flex help2man lex makeinfo perl yacc + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing (GNU Automake) $scriptversion" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake|autoreconf) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + *) + : + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + autoheader_deps="'acconfig.h'" + automake_deps="'Makefile.am'" + aclocal_deps="'acinclude.m4'" + case $normalized_program in + aclocal*) + echo "You should only need it if you modified $aclocal_deps or" + echo "$configure_deps." + ;; + autoconf*) + echo "You should only need it if you modified $configure_deps." + ;; + autogen*) + echo "You should only need it if you modified a '.def' or '.tpl' file." + echo "You may want to install the GNU AutoGen package:" + echo "<$gnu_software_URL/autogen/>" + ;; + autoheader*) + echo "You should only need it if you modified $autoheader_deps or" + echo "$configure_deps." + ;; + automake*) + echo "You should only need it if you modified $automake_deps or" + echo "$configure_deps." + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + ;; + autoreconf*) + echo "You should only need it if you modified $aclocal_deps or" + echo "$automake_deps or $autoheader_deps or $automake_deps or" + echo "$configure_deps." + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + perl*) + echo "You should only need it to run GNU Autoconf, GNU Automake, " + echo " assorted other tools, or if you modified a Perl source file." + echo "You may want to install the Perl 5 language interpreter:" + echo "<$perl_URL>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac + program_details "$normalized_program" +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%Y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/texinfo.tex b/local/recipes/dev/gnu-make/source/build-aux/texinfo.tex new file mode 100644 index 0000000000..3907525cf5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/texinfo.tex @@ -0,0 +1,12233 @@ +% texinfo.tex -- TeX macros to handle Texinfo files. +% +% Load plain if necessary, i.e., if running under initex. +\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi +% +\def\texinfoversion{2025-06-18.21} +% +% Copyright 1985, 1986, 1988, 1990-2025 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 +% published by the Free Software Foundation, either version 3 of the +% License, or (at your option) any later version. +% +% This texinfo.tex 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. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . +% +% As a special exception, when this file is read by TeX when processing +% a Texinfo source document, you may use the result without +% restriction. This Exception is an additional permission under section 7 +% of the GNU General Public License, version 3 ("GPLv3"). +% +% Please try the latest version of texinfo.tex before submitting bug +% reports; you can get the latest version from: +% https://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or +% https://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or +% https://www.gnu.org/software/texinfo/ (the Texinfo home page) +% 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 a +% complete document in each bug report with which we can reproduce the +% problem. Patches are, of course, greatly appreciated. +% +% To process a Texinfo manual with TeX, it's most reliable to use the +% texi2dvi shell script that comes with the distribution. For a simple +% manual foo.texi, however, you can get away with this: +% tex foo.texi +% texindex foo.?? +% tex foo.texi +% tex foo.texi +% dvips foo.dvi -o # or whatever; this makes foo.ps. +% The extra TeX runs get the cross-reference information correct. +% Sometimes one run after texindex suffices, and sometimes you need more +% than two; texi2dvi does it as many times as necessary. +% +% It is possible to adapt texinfo.tex for other languages, to some +% extent. You can get the existing language-specific files from the +% full Texinfo distribution. +% +% The GNU Texinfo home page is https://www.gnu.org/software/texinfo. + + +\message{Loading texinfo [version \texinfoversion]:} + +% LaTeX's \typeout. This ensures that the messages it is used for +% are identical in format to the corresponding ones from latex/pdflatex. +\def\typeout{\immediate\write17}% + +\chardef\other=12 + +% We never want plain's \outer definition of \+ in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax + +% Save some plain tex macros whose names we will redefine. +\let\ptexb=\b +\let\ptexbullet=\bullet +\let\ptexc=\c +\let\ptexcomma=\, +\let\ptexdot=\. +\let\ptexdots=\dots +\let\ptexend=\end +\let\ptexequiv=\equiv +\let\ptexexclam=\! +\let\ptexfootnote=\footnote +\let\ptexgtr=> +\let\ptexhat=^ +\let\ptexi=\i +\let\ptexindent=\indent +\let\ptexinsert=\insert +\let\ptexlbrace=\{ +\let\ptexless=< +\let\ptexnewwrite\newwrite +\let\ptexnoindent=\noindent +\let\ptexplus=+ +\let\ptexraggedright=\raggedright +\let\ptexrbrace=\} +\let\ptexslash=\/ +\let\ptexsp=\sp +\let\ptexstar=\* +\let\ptexsup=\sup +\let\ptext=\t +\let\ptextop=\top +{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode + +% If this character appears in an error message or help string, it +% starts a new line in the output. +\newlinechar = `^^J + +% Use TeX 3.0's \inputlineno to get the line number, for better error +% messages, but if we're using an old version of TeX, don't do anything. +% +\ifx\inputlineno\thisisundefined + \let\linenumber = \empty % Pre-3.0. +\else + \def\linenumber{l.\the\inputlineno:\space} +\fi + +% Set up fixed words for English if not already set. +\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi +\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi +\ifx\putworderror\undefined \gdef\putworderror{error}\fi +\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi +\ifx\putwordin\undefined \gdef\putwordin{in}\fi +\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi +\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi +\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi +\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi +\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi +\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi +\ifx\putwordof\undefined \gdef\putwordof{of}\fi +\ifx\putwordon\undefined \gdef\putwordon{on}\fi +\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi +\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi +\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi +\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi +\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi +\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi +\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi +% +\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi +\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi +\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi +\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi +\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi +\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi +\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi +\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi +\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi +\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi +\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi +\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi +% +\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi +\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi +\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi +\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi +\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi + +% Give the space character the catcode for a space. +\def\spaceisspace{\catcode`\ =10\relax} + +% Used to ignore an active newline that may appear immediately after +% a macro name. +{\catcode13=\active \gdef\ignoreactivenewline{\let^^M\empty}} + +\chardef\dashChar = `\- +\chardef\slashChar = `\/ +\chardef\underChar = `\_ + +% Ignore a token. +% +\def\gobble#1{} + +% The following is used inside several \edef's. +\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} + +% Hyphenation fixes. +\hyphenation{ + Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script + ap-pen-dix bit-map bit-maps + data-base data-bases eshell fall-ing half-way long-est man-u-script + man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm + par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces + spell-ing spell-ings + stand-alone strong-est time-stamp time-stamps which-ever white-space + wide-spread wrap-around +} + +% Sometimes it is convenient to have everything in the transcript file +% and nothing on the terminal. We don't just call \tracingall here, +% since that produces some useless output on the terminal. We also make +% some effort to order the tracing commands to reduce output in the log +% file; cf. trace.sty in LaTeX. +% +\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\def\loggingall{% + \tracingstats2 + \tracingpages1 + \tracinglostchars2 % 2 gives us more in etex + \tracingparagraphs1 + \tracingoutput1 + \tracingmacros2 + \tracingrestores1 + \showboxbreadth\maxdimen \showboxdepth\maxdimen + \ifx\eTeXversion\thisisundefined\else % etex gives us more logging + \tracingscantokens1 + \tracingifs1 + \tracinggroups1 + \tracingnesting2 + \tracingassigns1 + \fi + \tracingcommands3 % 3 gives us more in etex + \errorcontextlines16 +}% + +% @errormsg{MSG}. Do the index-like expansions on MSG, but if things +% aren't perfect, it's not the end of the world, being an error message, +% after all. +% +\def\errormsg{\begingroup \indexnofonts \doerrormsg} +\def\doerrormsg#1{\errmessage{#1}} + +% add check for \lastpenalty to plain's definitions. If the last thing +% we did was a \nobreak, we don't want to insert more space. +% +\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi\fi} +\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi\fi} +\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi\fi} + +% Output routine +% + +% For a final copy, take out the rectangles +% that mark overfull boxes (in case you have decided +% that the text looks ok even though it passes the margin). +% +\def\finalout{\overfullrule=0pt } + +% Output a mark which sets \thischapter, \thissection and \thiscolor. +% We dump everything together because we only have one kind of mark. +% This works because we only use \botmark / \topmark, not \firstmark. +% +% A mark contains a subexpression of the \ifcase ... \fi construct. +% \get*marks macros below extract the needed part using \ifcase. +% +% Another complication is to let the user choose whether \thischapter +% (\thissection) refers to the chapter (section) in effect at the top +% of a page, or that at the bottom of a page. + +% \domark is called twice inside \chapmacro, to add one +% mark before the section break, and one after. +% In the second call \prevchapterdefs is the same as \currentchapterdefs, +% and \prevsectiondefs is the same as \currentsectiondefs. +% Then if the page is not broken at the mark, some of the previous +% section appears on the page, and we can get the name of this section +% from \firstmark for @everyheadingmarks top. +% @everyheadingmarks bottom uses \botmark. +% +% See page 260 of The TeXbook. +\def\domark{% + \toks0=\expandafter{\currentchapterdefs}% + \toks2=\expandafter{\currentsectiondefs}% + \toks4=\expandafter{\prevchapterdefs}% + \toks6=\expandafter{\prevsectiondefs}% + \toks8=\expandafter{\currentcolordefs}% + \mark{% + \the\toks0 \the\toks2 % 0: marks for @everyheadingmarks top + \noexpand\or \the\toks4 \the\toks6 % 1: for @everyheadingmarks bottom + \noexpand\else \the\toks8 % 2: color marks + }% +} + +% \gettopheadingmarks, \getbottomheadingmarks, +% \getcolormarks - extract needed part of mark. +% +% \topmark doesn't work for the very first chapter (after the title +% page or the contents), so we use \firstmark there -- this gets us +% the mark with the chapter defs, unless the user sneaks in, e.g., +% @setcolor (or @url etc.) between @contents and the very first @chapter. +\def\gettopheadingmarks{% + \ifcase0\the\savedtopmark\fi + \ifx\thischapter\empty \ifcase0\firstmark\fi \fi +} +\def\getbottomheadingmarks{\ifcase1\botmark\fi} +\def\getcolormarks{\ifcase2\the\savedtopmark\fi} + +% Avoid "undefined control sequence" errors. +\def\currentchapterdefs{} +\def\currentsectiondefs{} +\def\prevchapterdefs{} +\def\prevsectiondefs{} +\def\currentcolordefs{} + +% Margin to add to right of even pages, to left of odd pages. +\newdimen\bindingoffset +\newdimen\normaloffset +\newdimen\txipagewidth \newdimen\txipageheight + +% Main output routine. +% +\chardef\PAGE = 255 +\newtoks\defaultoutput +\defaultoutput = {\savetopmark\onepageout{\pagecontents\PAGE}} +\output=\expandafter{\the\defaultoutput} + +\newbox\headlinebox +\newbox\footlinebox + +% When outputting the double column layout for indices, an output routine +% is run several times, hiding the original value of \topmark. Hence, save +% \topmark at the beginning. +% +\newtoks\savedtopmark +\newif\iftopmarksaved +\topmarksavedtrue +\def\savetopmark{% + \iftopmarksaved\else + \global\savedtopmark=\expandafter{\topmark}% + \global\topmarksavedtrue + \fi +} + +% \onepageout takes a vbox as an argument. +% \shipout a vbox for a single page, adding an optional header, footer +% and footnote. This also causes index entries for this page to be written +% to the auxiliary files. +% +\def\onepageout#1{% + \hoffset=\normaloffset + % + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + % + \checkchapterpage + % + % Make the heading and footing. \makeheadline and \makefootline + % use the contents of \headline and \footline. + \def\commonheadfootline{\let\hsize=\txipagewidth \texinfochars} + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \global\setbox\headlinebox = \vbox{\commonheadfootline \makeheadline}% + \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi + \global\setbox\footlinebox = \vbox{\commonheadfootline \makefootline}% + % + {% + % Set context for writing to auxiliary files like index files. + % Have to do this stuff outside the \shipout because we want it to + % take effect in \write's, yet the group defined by the \vbox ends + % before the \shipout runs. + % + \atdummies % don't expand commands in the output. + \turnoffactive + \shipout\vbox{% + % Do this early so pdf references go to the beginning of the page. + \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi + % + \unvbox\headlinebox + \pagebody{#1}% + \ifdim\ht\footlinebox > 0pt + % Only leave this space if the footline is nonempty. + % (We lessened \vsize for it in \oddfootingyyy.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 24pt + \unvbox\footlinebox + \fi + % + }% + }% + \global\topmarksavedfalse + \advancepageno + \ifnum\outputpenalty>-20000 \else\dosupereject\fi +} + +\newinsert\margin \dimen\margin=\maxdimen + +% Main part of page, including any footnotes +\def\pagebody#1{\vbox to\txipageheight{\boxmaxdepth=\maxdepth #1}} +{\catcode`\@ =11 +\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi +% marginal hacks, juha@viisa.uucp (Juha Takala) +\ifvoid\margin\else % marginal info is present + \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi +\dimen@=\dp#1\relax \unvbox#1\relax +\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi +\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 + +% Parse an argument, then pass it to #1. The argument is the rest of +% the input line (except we remove a trailing comment). #1 should be a +% macro which expects an ordinary undelimited TeX argument. +% For example, \def\foo{\parsearg\fooxxx}. +% +\def\parsearg{\parseargusing{}} +\def\parseargusing#1#2{% + \def\argtorun{#2}% + \begingroup + \obeylines + \spaceisspace + #1% + \parseargline\empty% Insert the \empty token, see \finishparsearg below. +} + +{\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + \argremovecomment #1\comment\ArgTerm% + }% +} + +% First remove any @comment, then any @c comment. Pass the result on to +% \argremovespace. +\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argremovespace#1$ $\ArgTerm} +% \argremovec might leave us with trailing space, though; e.g., +% @end itemize @c foo +% Note that the argument cannot contain the TeX $, as its catcode is +% changed to \other when Texinfo source is read. +\def\argremovespace#1 $#2\ArgTerm{\finishparsearg#1$\ArgTerm} + +% If a _delimited_ argument is enclosed in braces, they get stripped; so +% to get _exactly_ the rest of the line, we had to prevent such situation. +% We prepended an \empty token at the very beginning and we expand it +% just before passing the control to \next. +% (But first, we have to remove the remaining $ or two.) +\def\finishparsearg#1$#2\ArgTerm{\expandafter\argtorun\expandafter{#1}} + + +% \parseargdef - define a command taking an argument on the line +% +% \parseargdef\foo{...} +% is roughly equivalent to +% \def\foo{\parsearg\Xfoo} +% \def\Xfoo#1{...} +\def\parseargdef#1{% + \expandafter \doparseargdef \csname\string#1\endcsname #1% +} +\def\doparseargdef#1#2{% + \def#2{\parsearg#1}% + \def#1##1% +} + +% Several utility definitions with active space: +{ + \obeyspaces + \gdef\obeyedspace{ } + + % Make each space character in the input produce a normal interword + % space in the output. Don't allow a line break at this space, as this + % is used only in environments like @example, where each line of input + % should produce a line of output anyway. + % + \gdef\sepspaces{\obeyspaces\let =\tie} + + % If an index command is used in an @example environment, any spaces + % therein should become regular spaces in the raw index file, not the + % expansion of \tie (\leavevmode \penalty \@M \ ). + \gdef\unsepspaces{\let =\space} +} + + +\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + +% Define the framework for environments in texinfo.tex. It's used like this: +% +% \envdef\foo{...} +% \def\Efoo{...} +% +% It's the responsibility of \envdef to insert \begingroup before the +% actual body; @end closes the group after calling \Efoo. \envdef also +% defines \thisenv, so the current environment is known; @end checks +% whether the environment name matches. The \checkenv macro can also be +% used to check whether the current environment is the one expected. +% +% Non-false conditionals (@iftex, @ifset) don't fit into this, so they +% are not treated as environments; they don't open a group. (The +% implementation of @end takes care not to call \endgroup in this +% special case.) + + +% At run-time, environments start with this: +\def\startenvironment#1{\begingroup\def\thisenv{#1}} +% initialize +\let\thisenv\empty + +% ... but they get defined via ``\envdef\foo{...}'': +\long\def\envdef#1#2{\def#1{\startenvironment#1#2}} +\long\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} + +% Check whether we're in the right environment: +\def\checkenv#1{% + \def\temp{#1}% + \ifx\thisenv\temp + \else + \badenverr + \fi +} + +% Environment mismatch, #1 expected: +\def\badenverr{% + \errhelp = \EMsimple + \errmessage{This command can appear only \inenvironment\temp, + not \inenvironment\thisenv}% +} +\def\inenvironment#1{% + \ifx#1\empty + outside of any environment% + \else + in environment \expandafter\string#1% + \fi +} + + +% @end foo calls \checkenv and executes the definition of \Efoo. +\parseargdef\end{% + \if 1\csname iscond.#1\endcsname + \else + % The general wording of \badenverr may not be ideal. + \expandafter\checkenv\csname#1\endcsname + \csname E#1\endcsname + \endgroup + \fi +} + +\newhelp\EMsimple{Press RETURN to continue.} + + +% Be sure we're in horizontal mode when doing a tie, since we make space +% equivalent to this in @example-like environments. Otherwise, a space +% at the beginning of a line will start with \penalty -- and +% since \penalty is valid in vertical mode, we'd end up putting the +% penalty on the vertical list instead of in the new paragraph. +{\catcode`@ = 11 + % Avoid using \@M directly, because that causes trouble + % if the definition is written into an index file. + \global\let\tiepenalty = \@M + \gdef\tie{\leavevmode\penalty\tiepenalty\ } +} + +% @: forces normal size whitespace following. +\def\:{\spacefactor=1000 } + +% @* forces a line break. +\def\*{\unskip\hfil\break\hbox{}\ignorespaces} + +% @/ allows a line break. +\let\/=\allowbreak + +% @- allows explicit insertion of hyphenation points +\def\-{\discretionary{\normaldash}{}{}}% + +% @. is an end-of-sentence period. +\def\.{.\spacefactor=\endofsentencespacefactor\space} + +% @! is an end-of-sentence bang. +\def\!{!\spacefactor=\endofsentencespacefactor\space} + +% @? is an end-of-sentence query. +\def\?{?\spacefactor=\endofsentencespacefactor\space} + +% @w prevents a word break. Without the \leavevmode, @w at the +% beginning of a paragraph, when TeX is still in vertical mode, would +% produce a whole line of output instead of starting the paragraph. +\def\w#1{\leavevmode\hbox{#1}} + +% @group ... @end group forces ... to be all on one page, by enclosing +% it in a TeX vbox. We use \vtop instead of \vbox to construct the box +% to keep its height that of a normal line. According to the rules for +% \topskip (p.114 of the TeXbook), the glue inserted is +% max (\topskip - \ht (first item), 0). If that height is large, +% therefore, no glue is inserted, and the space between the headline and +% the text is small, which looks bad. +% +% Another complication is that the group might be very large. This can +% cause the glue on the previous page to be unduly stretched, because it +% does not have much material. In this case, it's better to add an +% explicit \vfill so that the extra space is at the bottom. The +% threshold for doing this is if the group is more than \vfilllimit +% percent of a page (\vfilllimit can be changed inside of @tex). +% +\newbox\groupbox +\def\vfilllimit{0.7} +% +\envdef\group{% + \ifnum\catcode`\^^M=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + \startsavinginserts + % + \setbox\groupbox = \vtop\bgroup + % Do @comment since we are called inside an environment such as + % @example, where each end-of-line in the input causes an + % end-of-line in the output. We don't want the end-of-line after + % the `@group' to put extra space in the output. Since @group + % should appear on a line by itself (according to the Texinfo + % manual), we don't worry about eating any user text. + \comment +} +% +% The \vtop produces a box with normal height and large depth; thus, TeX puts +% \baselineskip glue before it, and (when the next line of text is done) +% \lineskip glue after it. Thus, space below is not quite equal to space +% above. But it's pretty close. +\def\Egroup{% + % To get correct interline space between the last line of the group + % and the first line afterwards, we have to propagate \prevdepth. + \endgraf % Not \par, as it may have been set to \lisppar. + \global\dimen1 = \prevdepth + \egroup % End the \vtop. + \addgroupbox + \prevdepth = \dimen1 + \checkinserts +} + +\def\addgroupbox{ + % \dimen0 is the vertical size of the group's box. + \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox + % \dimen2 is how much space is left on the page (more or less). + \dimen2 = \txipageheight \advance\dimen2 by -\pagetotal + % if the group doesn't fit on the current page, and it's a big big + % group, force a page break. + \ifdim \dimen0 > \dimen2 + \ifdim \pagetotal < \vfilllimit\txipageheight + \page + \fi + \fi + \box\groupbox +} + +% +% TeX puts in an \escapechar (i.e., `@') at the beginning of the help +% message, so this ends up printing `@group can only ...'. +% +\newhelp\groupinvalidhelp{% +group can only be used in environments such as @example,^^J% +where each line of input produces a line of output.} + +% @need space-in-mils +% forces a page break if there is not space-in-mils remaining. + +\newdimen\mil \mil=0.001in + +\parseargdef\need{% + % Ensure vertical mode, so we don't make a big box in the middle of a + % paragraph. + \par + % + % If the @need value is less than one line space, it's useless. + \dimen0 = #1\mil + \dimen2 = \ht\strutbox + \advance\dimen2 by \dp\strutbox + \ifdim\dimen0 > \dimen2 + % This is similar to the 'needspace' module in LaTeX. + % The first penalty allows a break if the end of the page is + % not too far away. Following penalties and skips are discarded. + % Otherwise, require at least \dimen0 of vertical space. + % + % (We used to use a \vtop to reserve space, but this had spacing issues + % when followed by a section heading, as it was not a "discardable item". + % This also has the benefit of providing glue before the page break if + % there isn't enough space.) + \vskip0pt plus \dimen0 + \penalty-100 + \vskip0pt plus -\dimen0 + \vskip \dimen0 + \penalty9999 + \vskip -\dimen0 + \penalty0\relax % this hides the above glue from \safewhatsit and \dobreak + \fi +} + +% @br forces paragraph break (and is undocumented). + +\let\br = \par + +% @page forces the start of a new page. +% +\def\page{\par\vfill\supereject} + +% @exdent text.... +% outputs text on separate line in roman font, starting at standard page margin + +% This records the amount of indent in the innermost environment. +% That's how much \exdent should take out. +\newskip\exdentamount + +% This defn is used inside fill environments such as @defun. +\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} + +% This defn is used inside nofill environments such as @example. +\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + +% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current +% paragraph. For more general purposes, use the \margin insertion +% class. WHICH is `l' or `r'. Not documented, written for gawk manual. +% +\newskip\inmarginspacing \inmarginspacing=1cm +\def\strutdepth{\dp\strutbox} +% +\def\doinmargin#1#2{\strut\vadjust{% + \nobreak + \kern-\strutdepth + \vtop to \strutdepth{% + \baselineskip=\strutdepth + \vss + % if you have multiple lines of stuff to put here, you'll need to + % make the vbox yourself of the appropriate size. + \ifx#1l% + \llap{\ignorespaces #2\hskip\inmarginspacing}% + \else + \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% + \fi + \null + }% +}} +\def\inleftmargin{\doinmargin l} +\def\inrightmargin{\doinmargin r} +% +% @inmargin{TEXT [, RIGHT-TEXT]} +% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; +% else use TEXT for both). +% +\def\inmargin#1{\parseinmargin #1,,\finish} +\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \def\lefttext{#1}% have both texts + \def\righttext{#2}% + \else + \def\lefttext{#1}% have only one text + \def\righttext{#1}% + \fi + % + \ifodd\pageno + \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin + \else + \def\temp{\inleftmargin\lefttext}% + \fi + \temp +} + +% @include FILE -- \input text of FILE. +% +\def\include{\parseargusing\filenamecatcodes\includezzz} +\def\includezzz#1{% + \pushthisfilestack + \def\thisfile{#1}% + {% + \makevalueexpandable % we want to expand any @value in FILE. + \turnoffactive % and allow special characters in the expansion + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @include of #1^^J}% + \edef\temp{\noexpand\input #1 }% + % + % This trickery is to read FILE outside of a group, in case it makes + % definitions, etc. + \expandafter + }\temp + \popthisfilestack +} +\def\filenamecatcodes{% + \catcode`\\=\other + \catcode`~=\other + \catcode`^=\other + \catcode`_=\other + \catcode`|=\other + \catcode`<=\other + \catcode`>=\other + \catcode`+=\other + \catcode`-=\other + \catcode`\`=\other + \catcode`\'=\other +} + +\def\pushthisfilestack{% + \expandafter\pushthisfilestackX\popthisfilestack\StackTerm +} +\def\pushthisfilestackX{% + \expandafter\pushthisfilestackY\thisfile\StackTerm +} +\def\pushthisfilestackY #1\StackTerm #2\StackTerm {% + \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% +} + +\def\popthisfilestack{\errthisfilestackempty} +\def\errthisfilestackempty{\errmessage{Internal error: + the stack of filenames is empty.}} +% +\def\thisfile{} + +% @center line +% outputs that line, centered. +% +\parseargdef\center{% + \ifhmode + \let\centersub\centerH + \else + \let\centersub\centerV + \fi + \centersub{\hfil \ignorespaces#1\unskip \hfil}% + \let\centersub\relax % don't let the definition persist, just in case +} +\def\centerH#1{{% + \hfil\break + \advance\hsize by -\leftskip + \advance\hsize by -\rightskip + \line{#1}% + \break +}} +% +\newcount\centerpenalty +\def\centerV#1{% + % The idea here is the same as in \startdefun, \cartouche, etc.: if + % @center is the first thing after a section heading, we need to wipe + % out the negative parskip inserted by \sectionheading, but still + % prevent a page break here. + \centerpenalty = \lastpenalty + \ifnum\centerpenalty>10000 \vskip\parskip \fi + \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi + \line{\kern\leftskip #1\kern\rightskip}% +} + +% @sp n outputs n lines of vertical space +% +\parseargdef\sp{\vskip #1\baselineskip} + +% @comment ...line which is ignored... +% @c is the same as @comment +% @ignore ... @end ignore is another way to write a comment + + +\def\c{\begingroup \catcode`\^^M=\active% +\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% +\cxxx} +{\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}} +% +\let\comment\c + +% @paragraphindent NCHARS +% We'll use ems for NCHARS, close enough. +% NCHARS can also be the word `asis' or `none'. +% We cannot feasibly implement @paragraphindent asis, though. +% +\def\asisword{asis} % no translation, these are keywords +\def\noneword{none} +% +\parseargdef\paragraphindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \defaultparindent = 0pt + \else + \defaultparindent = #1em + \fi + \fi + \parindent = \defaultparindent +} + +% @exampleindent NCHARS +% We'll use ems for NCHARS like @paragraphindent. +% It seems @exampleindent asis isn't necessary, but +% I preserve it to make it similar to @paragraphindent. +\parseargdef\exampleindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi +} + +% @firstparagraphindent WORD +% If WORD is `none', then suppress indentation of the first paragraph +% after a section heading. If WORD is `insert', then do indent at such +% paragraphs. +% +% The paragraph indentation is suppressed or not by calling +% \suppressfirstparagraphindent, which the sectioning commands do. +% We switch the definition of this back and forth according to WORD. +% By default, we suppress indentation. +% +\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} +\def\insertword{insert} +% +\parseargdef\firstparagraphindent{% + \def\temp{#1}% + \ifx\temp\noneword + \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent + \else\ifx\temp\insertword + \let\suppressfirstparagraphindent = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @firstparagraphindent option `\temp'}% + \fi\fi +} + +% Here is how we actually suppress indentation. Redefine \everypar to +% \kern backwards by \parindent, and then reset itself to empty. +% +% We also make \indent itself not actually do anything until the next +% paragraph. +% +\gdef\dosuppressfirstparagraphindent{% + \gdef\indent {\restorefirstparagraphindent \indent}% + \gdef\noindent{\restorefirstparagraphindent \noindent}% + \global\everypar = {\kern -\parindent \restorefirstparagraphindent}% +} +% +\gdef\restorefirstparagraphindent{% + \global\let\indent = \ptexindent + \global\let\noindent = \ptexnoindent + \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 + +% @setfilename INFO-FILENAME - ignored +\let\setfilename=\comment + +% @bye. +\outer\def\bye{% + \chappager\pagelabels + % possibly set in \printindex + \ifx\byeerror\relax\else\errmessage{\byeerror}\fi + \tracingstats=1\ptexend} + +% set in \donoderef below, but we need to define this here so that +% conditionals balance inside the large \ifpdf ... \fi blocks below. +\newif\ifnodeseen +\nodeseenfalse + +\message{pdf,} +% adobe `portable' document format +\newcount\tempnum +\newcount\lnkcount +\newtoks\filename +\newcount\filenamelength +\newcount\pgn +\newtoks\toksA +\newtoks\toksB +\newtoks\toksC +\newtoks\toksD +\newbox\boxA +\newbox\boxB +\newcount\countA +\newif\ifpdf +\newif\ifpdfmakepagedest + +% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 +% can be set). So we test for \relax and 0 as well as being undefined. +\ifx\pdfoutput\thisisundefined +\else + \ifx\pdfoutput\relax + \else + \ifcase\pdfoutput + \else + \pdftrue + \fi + \fi +\fi + +\newif\ifxetex +\ifx\XeTeXrevision\thisisundefined\else + \xetextrue +\fi + +\newif\ifluatex +\ifx\luatexversion\thisisundefined\else + \luatextrue + \ifnum\luatexversion>84 + \pdftrue + \fi +\fi + +\newif\ifpdforxetex +\ifpdf + \pdforxetextrue +\fi +\ifxetex + \pdforxetextrue +\fi + + + +% Whether to use non-ASCII bytes in internal link targets. Presently this +% is almost always on. +\newif\iftxiuseunicodedestname +\txiuseunicodedestnametrue + +% +% For LuaTeX +% + +\ifluatex + % Use Unicode destination names + \txiuseunicodedestnametrue + % Escape PDF strings with converting UTF-16 from UTF-8 + \begingroup + \catcode`\%=12 + \directlua{ + function UTF16oct(str) + tex.sprint(string.char(0x5c) .. '376' .. string.char(0x5c) .. '377') + for c in string.utfvalues(str) do + if c < 0x10000 then + tex.sprint( + string.format(string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o', + math.floor(c / 256), math.floor(c % 256))) + else + c = c - 0x10000 + local c_hi = c / 1024 + 0xd800 + local c_lo = c % 1024 + 0xdc00 + tex.sprint( + string.format(string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o', + math.floor(c_hi / 256), math.floor(c_hi % 256), + math.floor(c_lo / 256), math.floor(c_lo % 256))) + end + end + end + } + \endgroup + \def\pdfescapestrutfsixteen#1{\directlua{UTF16oct('\luaescapestring{#1}')}} + % Escape PDF strings without converting + \begingroup + \directlua{ + function PDFescstr(str) + for c in string.bytes(str) do + if c <= 0x20 or c >= 0x80 or c == 0x28 or c == 0x29 or c == 0x5c then + tex.sprint(-2, + string.format(string.char(0x5c) .. string.char(0x25) .. '03o', + c)) + else + tex.sprint(-2, string.char(c)) + end + end + end + } + % The -2 in the arguments here gives all the input to TeX catcode 12 + % (other) or 10 (space), preventing undefined control sequence errors. See + % https://lists.gnu.org/archive/html/bug-texinfo/2019-08/msg00031.html + % + \endgroup + \def\pdfescapestring#1{\directlua{PDFescstr('\luaescapestring{#1}')}} + \ifpdf + % For LuaTeX >= 0.85 + \def\pdfdest{\pdfextension dest} + \let\pdfoutput\outputmode + \def\pdfliteral{\pdfextension literal} + \def\pdfcatalog{\pdfextension catalog} + \def\pdftexversion{\numexpr\pdffeedback version\relax} + \let\pdfximage\saveimageresource + \let\pdfrefximage\useimageresource + \let\pdflastximage\lastsavedimageresourceindex + \def\pdfendlink{\pdfextension endlink\relax} + \def\pdfoutline{\pdfextension outline} + \def\pdfstartlink{\pdfextension startlink} + \def\pdffontattr{\pdfextension fontattr} + \def\pdfobj{\pdfextension obj} + \def\pdflastobj{\numexpr\pdffeedback lastobj\relax} + \let\pdfpagewidth\pagewidth + \let\pdfpageheight\pageheight + \edef\pdfhorigin{\pdfvariable horigin} + \edef\pdfvorigin{\pdfvariable vorigin} + \fi +\fi + + +% Output page labels information. +% See PDF reference v.1.7 p.594, section 8.3.1. +% Page label ranges must be increasing. +\ifpdf +\def\pagelabels{% + \def\title{0 << /P (T-) /S /D >>}% + % + % support @contents at very end of document + \ifnum\contentsendcount=\pagecount + \ifnum\arabiccount<\romancount + \pdfcatalog{/PageLabels << /Nums + [\title + \the\arabiccount << /S /D >> + \the\romancount << /S /r >> + ] >> }\relax + \fi + % no contents in document + \else\ifnum\contentsendcount=0 + \pdfcatalog{/PageLabels << /Nums + [\title + \the\arabiccount << /S /D >> + ] >> }\relax + \else + \pdfcatalog{/PageLabels << /Nums + [\title + \the\romancount << /S /r >> + \the\contentsendcount << /S /D >> + ] >> }\relax + \fi\fi +} +\else + \let\pagelabels\relax +\fi + +\newcount\pagecount \pagecount=0 +\newcount\romancount \romancount=0 +\newcount\arabiccount \arabiccount=0 +\newcount\contentsendcount \contentsendcount=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 +% interpreted as a newline (\n), followed by o, d, e. Not good. +% +% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and +% related messages. The final outcome is that it is up to the TeX user +% to double the backslashes and otherwise make the string valid, so +% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to +% do this reliably, so we use it. + +% #1 is a control sequence in which to do the replacements, +% which we \xdef. +\def\txiescapepdf#1{% + \ifx\pdfescapestring\thisisundefined + % No primitive available; should we give a warning or log? + % Many times it won't matter. + \xdef#1{#1}% + \else + % The expandable \pdfescapestring primitive escapes parentheses, + % backslashes, and other special chars. + \xdef#1{\pdfescapestring{#1}}% + \fi +} +\def\txiescapepdfutfsixteen#1{% + \ifx\pdfescapestrutfsixteen\thisisundefined + % No UTF-16 converting macro available. + \txiescapepdf{#1}% + \else + \xdef#1{\pdfescapestrutfsixteen{#1}}% + \fi +} + +\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images +with PDF output, and none of those formats could be found. (.eps cannot +be supported due to the design of the PDF format; use regular TeX (DVI +output) for that.)} + +% definitions for pdftex or luatex with pdf output +\ifpdf + % Strings in PDF outlines can either be ASCII, or encoded in UTF-16BE + % with BOM. Unfortunately there is no simple way with pdftex to output + % UTF-16, so we have to do some quite convoluted expansion games if we + % find the string contains a non-ASCII codepoint if we want these to + % display correctly. We generated the UTF-16 sequences in + % \DeclareUnicodeCharacter and we access them here. + % + \def\defpdfoutlinetextunicode#1{% + \def\pdfoutlinetext{#1}% + % + % Make UTF-8 sequences expand to UTF-16 definitions. + \passthroughcharsfalse \utfbytespdftrue + \utfviiidefinedwarningfalse + % + % Completely expand, eliminating any control sequences such as \code, + % leaving only possibly \utfbytes. + \let\utfbytes\relax + \pdfaccentliterals + \xdef\pdfoutlinetextchecked{#1}% + \checkutfbytes + }% + % Check if \utfbytes occurs in expansion. + \def\checkutfbytes{% + \expandafter\checkutfbytesz\pdfoutlinetextchecked\utfbytes\finish + }% + \def\checkutfbytesz#1\utfbytes#2\finish{% + \def\after{#2}% + \ifx\after\empty + % No further action needed. Output ASCII string as-is, as converting + % to UTF-16 is somewhat slow (and uses more space). + \global\let\pdfoutlinetext\pdfoutlinetextchecked + \else + \passthroughcharstrue % pass UTF-8 sequences unaltered + \xdef\pdfoutlinetext{\pdfoutlinetext}% + \expandafter\expandutfsixteen\expandafter{\pdfoutlinetext}\pdfoutlinetext + \fi + }% + % + \catcode2=1 % begin-group character + \catcode3=2 % end-group character + % + % argument should be pure UTF-8 with no control sequences. convert to + % UTF-16BE by inserting null bytes before bytes < 128 and expanding + % UTF-8 multibyte sequences to saved UTF-16BE sequences. + \def\expandutfsixteen#1#2{% + \bgroup \asciitounicode + \passthroughcharsfalse + \let\utfbytes\asis + % + % for Byte Order Mark (BOM) + \catcode"FE=12 + \catcode"FF=12 + % + % we want to treat { and } in #1 as any other ASCII bytes. however, + % we need grouping characters for \scantokens and definitions/assignments, + % so define alternative grouping characters using control characters + % that are unlikely to occur. + % this does not affect 0x02 or 0x03 bytes arising from expansion as + % these are tokens with different catcodes. + \catcode"02=1 % begin-group character + \catcode"03=2 % end-group character + % + \expandafter\xdef\expandafter#2\scantokens{% + ^^02^^fe^^ff#1^^03}% + % NB we need \scantokens to provide both the open and close group tokens + % for \xdef otherwise there is an e-TeX error "File ended while + % scanning definition of..." + % NB \scantokens is a e-TeX command which is assumed to be provided by + % pdfTeX. + % + \egroup + }% + % + \catcode2=12 \catcode3=12 % defaults + % + % Color support + % + % rg sets the color for filling (usual text, etc.); + % RG sets the color for stroking (thin rules, e.g., normal _'s). + \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} + % + % PDF outline support + % + \pdfcatalog{/PageMode /UseOutlines} + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\dopdfimage#1#2#3{% + \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % pdftex (and the PDF format) support .pdf, .png, .jpg (among + % others). Let's try in that order, PDF first since if + % someone has a scalable image, presumably better to use that than a + % bitmap. + \let\pdfimgext=\empty + \begingroup + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 + \errhelp = \nopdfimagehelp + \errmessage{Could not find image file #1 for pdf}% + \else \gdef\pdfimgext{JPG}% + \fi + \else \gdef\pdfimgext{jpeg}% + \fi + \else \gdef\pdfimgext{jpg}% + \fi + \else \gdef\pdfimgext{png}% + \fi + \else \gdef\pdfimgext{PDF}% + \fi + \else \gdef\pdfimgext{pdf}% + \fi + \closein 1 + \endgroup + % + % without \immediate, ancient pdftex seg faults when the same image is + % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) + \ifnum\pdftexversion < 14 + \immediate\pdfimage + \else + \immediate\pdfximage + \fi + \ifdim \wd0 >0pt width \pdfimagewidth \fi + \ifdim \wd2 >0pt height \pdfimageheight \fi + \ifnum\pdftexversion<13 + #1.\pdfimgext + \else + {#1.\pdfimgext}% + \fi + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + % + \def\setpdfdestname#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \indexnofonts + \makevalueexpandable + \turnoffactive + \iftxiuseunicodedestname + \ifx \declaredencoding \latone + % Pass through Latin-1 characters. + % LuaTeX with byte wise I/O converts Latin-1 characters to Unicode. + \else + \ifx \declaredencoding \utfeight + % Pass through Unicode characters. + \else + % Use ASCII approximations in destination names. + \passthroughcharsfalse + \fi + \fi + \else + % Use ASCII approximations in destination names. + \passthroughcharsfalse + \fi + \def\pdfdestname{#1}% + \txiescapepdf\pdfdestname + }} + % + \def\setpdfoutlinetext#1{{% + \indexnofonts + \makevalueexpandable + \turnoffactive + \ifx \declaredencoding \latone + % The PDF format can use an extended form of Latin-1 in bookmark + % strings. See Appendix D of the PDF Reference, Sixth Edition, for + % the "PDFDocEncoding". + \passthroughcharstrue + % Pass through Latin-1 characters. + % LuaTeX: Convert to Unicode + % pdfTeX: Use Latin-1 as PDFDocEncoding + \def\pdfoutlinetext{#1}% + \else + \ifx \declaredencoding \utfeight + \ifluatex + % For LuaTeX with UTF-8. + % Pass through Unicode characters for title texts. + \passthroughcharstrue + \pdfaccentliterals + \xdef\pdfoutlinetext{#1}% + \else + % For pdfTeX with UTF-8. + \defpdfoutlinetextunicode{#1}% + \fi + \else + % For non-Latin-1 or non-UTF-8 encodings. + % Use ASCII approximations. + \passthroughcharsfalse + \def\pdfoutlinetext{#1}% + \fi + \fi + % LuaTeX: Convert to UTF-16 + % pdfTeX: Use Latin-1 as PDFDocEncoding + \txiescapepdfutfsixteen\pdfoutlinetext + }} + % + \def\pdfmkdest#1{% + \setpdfdestname{#1}% + \safewhatsit{\pdfdest name{\pdfdestname} xyz}% + } + % + % Adding outlines to PDF; macros for calculating structure of outlines + % come from Petr Olsak + \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% + \else \csname#1\endcsname \fi} + \def\advancenumber#1{\tempnum=\expnumber{#1}\relax + \advance\tempnum by 1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + % + % #1 is the section text, which is what will be displayed in the + % outline by the pdf viewer. #2 is the pdf expression for the number + % of subentries (or empty, for subsubsections). #3 is the node text, + % which might be empty if this toc entry had no corresponding node. + % #4 is the page number + % + \def\dopdfoutline#1#2#3#4{% + % Generate a link to the node text if that exists; else, use the + % page number. We could generate a destination for the section + % text in the case where a section has no node, but it doesn't + % seem worth the trouble, since most documents are normally structured. + \setpdfoutlinetext{#1} + \setpdfdestname{#3} + \ifx\pdfdestname\empty + \def\pdfdestname{#4}% + \fi + % + \pdfoutline goto name{\pdfdestname}#2{\pdfoutlinetext}% + } + % + \def\pdfmakeoutlines{% + \begingroup + % Read toc silently, to get counts of subentries for \pdfoutline. + \def\partentry##1##2##3##4{}% ignore parts in the outlines + \def\numchapentry##1##2##3##4{% + \def\thischapnum{##2}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + \def\indexlastsec{chap\thischapnum}% + }% + \def\numsecentry##1##2##3##4{% + \advancenumber{chap\thischapnum}% + \def\thissecnum{##2}% + \def\thissubsecnum{0}% + \def\indexlastsec{sec\thissecnum}% + }% + \def\numsubsecentry##1##2##3##4{% + \advancenumber{sec\thissecnum}% + \def\thissubsecnum{##2}% + \def\indexlastsec{subsec\thissecnum}% + }% + \def\numsubsubsecentry##1##2##3##4{% + \advancenumber{subsec\thissubsecnum}% + }% + \def\thischapnum{0}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + \let\indexlastsec\empty + % + % Index initials are subsidiary to whatever sectioning command just + % occurred, usually @appendix or @chapter but occasionally a lower level. + \def\idxinitialentry##1##2##3##4{% + \expandafter\advancenumber\expandafter{\indexlastsec}% + }% + % use \def rather than \let here because we redefine \chapentry et + % al. a second time, below. + \def\appentry{\numchapentry}% + \def\appsecentry{\numsecentry}% + \def\appsubsecentry{\numsubsecentry}% + \def\appsubsubsecentry{\numsubsubsecentry}% + \def\unnchapentry{\numchapentry}% + \def\unnsecentry{\numsecentry}% + \def\unnsubsecentry{\numsubsecentry}% + \def\unnsubsubsecentry{\numsubsubsecentry}% + % + \readdatafile{toc}% + % + % Read toc second time, this time actually producing the outlines. + % The `-' means take the \expnumber as the absolute number of + % 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}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% + \def\numsubsubsecentry##1##2##3##4{% count is always zero + \dopdfoutline{##1}{}{##3}{##4}}% + \def\idxinitialentry##1##2##3##4{% + \dopdfoutline{##1}{}{idx.##1.##2}{##4}}% + % + \ifnodeseen\else \dopdfoutlinecontents \fi % for @contents at beginning + \setupdatafile + % We can have normal brace characters in the PDF outlines, unlike + % Texinfo index files. So set that up. + \def\{{\lbracecharliteral}% + \def\}{\rbracecharliteral}% + \catcode`\\=\active \otherbackslash + \input \tocreadfilename\relax + \ifnodeseen \dopdfoutlinecontents \fi % for @contents at end + \endgroup + } + \def\dopdfoutlinecontents{% + \expandafter\dopdfoutline\expandafter{\putwordTOC}{}{txi.CONTENTS}{}% + } + {\catcode`[=1 \catcode`]=2 + \catcode`{=\other \catcode`}=\other + \gdef\lbracecharliteral[{]% + \gdef\rbracecharliteral[}]% + ] + % + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \nextsp} + \def\getfilename#1{% + \filenamelength=0 + % If we don't expand the argument now, \skipspaces will get + % snagged on things like "@value{foo}". + \edef\temp{#1}% + \expandafter\skipspaces\temp|\relax + } + \ifnum\pdftexversion < 14 + \let \startlink \pdfannotlink + \else + \let \startlink \pdfstartlink + \fi + \def\pdfmakeurl#1{% + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + }% + \def\endlink{\setcolor{\maincolor}\pdfendlink} + % + \def\pdflink#1{\pdflinkpage{#1}{#1}}% + \def\pdflinkpage#1#2{% + \startlink attr{/Border [0 0 0]} goto name{#1} + \setcolor{\linkcolor}#2\endlink} +\else + % non-pdf mode + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\setcolor = \gobble + \let\pdfsetcolor = \gobble + \let\pdfmakeoutlines = \relax +\fi + +% +% For XeTeX +% +\ifxetex + % + % XeTeX version check + % + \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99996}>-1 + % TeX Live 2016 contains XeTeX 0.99996 and xdvipdfmx 20160307. + % It can use the `dvipdfmx:config' special (from TeX Live SVN r40941). + % For avoiding PDF destination name replacement, we use this special + % instead of xdvipdfmx's command line option `-C 0x0010'. + \special{dvipdfmx:config C 0x0010} + % XeTeX 0.99995+ comes with xdvipdfmx 20160307+. + % It can handle Unicode destination names for PDF. + \txiuseunicodedestnametrue + \else + % XeTeX < 0.99996 (TeX Live < 2016) cannot use the + % `dvipdfmx:config' special. + % So for avoiding PDF destination name replacement, + % xdvipdfmx's command line option `-C 0x0010' is necessary. + % + % XeTeX < 0.99995 can not handle Unicode destination names for PDF + % because xdvipdfmx 20150315 has a UTF-16 conversion issue. + % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). + \txiuseunicodedestnamefalse + \fi + % + % Color support + \def\pdfsetcolor#1{\special{pdf:scolor [#1]}} + % + % PDF outline support + % + % Emulate pdfTeX primitive + \def\pdfdest name#1 xyz{% + \special{pdf:dest (#1) [@thispage /XYZ @xpos @ypos null]}% + } + % + \def\setpdfdestname#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \indexnofonts + \makevalueexpandable + \turnoffactive + \iftxiuseunicodedestname + % Pass through Unicode characters. + \else + % Use ASCII approximations in destination names. + \passthroughcharsfalse + \fi + \def\pdfdestname{#1}% + \txiescapepdf\pdfdestname + }} + % + \def\setpdfoutlinetext#1{{% + \turnoffactive + % Always use Unicode characters in title texts. + \def\pdfoutlinetext{#1}% + % For XeTeX, xdvipdfmx converts to UTF-16. + % So we do not convert. + \txiescapepdf\pdfoutlinetext + }} + % + \def\pdfmkdest#1{% + \setpdfdestname{#1}% + \safewhatsit{\pdfdest name{\pdfdestname} xyz}% + } + % + \def\dopdfoutline#1#2#3#4{% + \setpdfoutlinetext{#1} + \setpdfdestname{#3} + \ifx\pdfdestname\empty + \def\pdfdestname{#4}% + \fi + % + \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A + << /S /GoTo /D (\pdfdestname) >> >> }% + } + % + \def\pdfmakeoutlines{% + \begingroup + % For XeTeX, counts of subentries are not necessary. + % 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{##2 ##1}{1}{##3}{##4}% + \def\indexseclevel{2}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{2}{##3}{##4}% + \def\indexseclevel{3}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{3}{##3}{##4}% + \def\indexseclevel{4}}% + \def\numsubsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{4}{##3}{##4}% + \def\indexseclevel{5}}% + % + \def\idxinitialentry##1##2##3##4{% + \dopdfoutline{##1}{\indexseclevel}{idx.##1.##2}{##4}}% + % + \let\appentry\numchapentry% + \let\appsecentry\numsecentry% + \let\appsubsecentry\numsubsecentry% + \let\appsubsubsecentry\numsubsubsecentry% + \def\unnchapentry##1##2##3##4{% + \dopdfoutline{##1}{1}{##3}{##4}}% + \let\unnsecentry\numsecentry% + \let\unnsubsecentry\numsubsecentry% + \let\unnsubsubsecentry\numsubsubsecentry% + % + % For XeTeX, xdvipdfmx converts strings to UTF-16. + % Therefore, the encoding and the language may not be considered. + % + \indexnofonts + \pdfaccentliterals + \ifnodeseen\else \dopdfoutlinecontents \fi % for @contents at beginning + % + \setupdatafile + % We can have normal brace characters in the PDF outlines, unlike + % Texinfo index files. So set that up. + \def\{{\lbracecharliteral}% + \def\}{\rbracecharliteral}% + \catcode`\\=\active \otherbackslash + \xetexpreauxfile + \input \tocreadfilename\relax + \xetexpostauxfile + \ifnodeseen \dopdfoutlinecontents \fi % for @contents at end + \endgroup + } + \def\dopdfoutlinecontents{% + \expandafter\dopdfoutline\expandafter + {\putwordTOC}{1}{txi.CONTENTS}{txi.CONTENTS}% + } + {\catcode`[=1 \catcode`]=2 + \catcode`{=\other \catcode`}=\other + \gdef\lbracecharliteral[{]% + \gdef\rbracecharliteral[}]% + ] + + \special{pdf:docview << /PageMode /UseOutlines >> } + % ``\special{pdf:tounicode ...}'' is not necessary + % because xdvipdfmx converts strings from UTF-8 to UTF-16 without it. + % However, due to a UTF-16 conversion issue of xdvipdfmx 20150315, + % ``\special{pdf:dest ...}'' cannot handle non-ASCII strings. + % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). + % + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \nextsp} + \def\getfilename#1{% + \filenamelength=0 + % If we don't expand the argument now, \skipspaces will get + % snagged on things like "@value{foo}". + \edef\temp{#1}% + \expandafter\skipspaces\temp|\relax + } + \def\pdfmakeurl#1{% + \special{pdf:bann << /Border [0 0 0] + /Subtype /Link /A << /S /URI /URI (#1) >> >>}% + } + \def\endlink{\setcolor{\maincolor}\special{pdf:eann}} + \def\pdflink#1{\pdflinkpage{#1}{#1}}% + \def\pdflinkpage#1#2{% + \special{pdf:bann << /Border [0 0 0] + /Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}% + \setcolor{\linkcolor}#2\endlink} + % + % + % @image support + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\doxeteximage#1#2#3{% + \def\xeteximagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\xeteximageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % XeTeX (and the PDF format) supports .pdf, .png, .jpg (among + % others). Let's try in that order, PDF first since if + % someone has a scalable image, presumably better to use that than a + % bitmap. + \let\xeteximgext=\empty + \begingroup + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 + \errmessage{Could not find image file #1 for XeTeX}% + \else \gdef\xeteximgext{JPG}% + \fi + \else \gdef\xeteximgext{jpeg}% + \fi + \else \gdef\xeteximgext{jpg}% + \fi + \else \gdef\xeteximgext{png}% + \fi + \else \gdef\xeteximgext{PDF}% + \fi + \else \gdef\xeteximgext{pdf}% + \fi + \closein 1 + \endgroup + % + % 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 + \def\xetexpdfext{PDF}% + \ifx\xeteximgext\xetexpdfext + \XeTeXpdffile "#1".\xeteximgext "" + \else + \XeTeXpicfile "#1".\xeteximgext "" + \fi + \fi + \ifdim \wd0 >0pt width \xeteximagewidth \fi + \ifdim \wd2 >0pt height \xeteximageheight \fi \relax + \egroup + } +\fi + +% common definitions and code for pdftex, luatex and xetex +\ifpdforxetex + % The dark red here is dark enough to print on paper as + % nearly black, but still distinguishable for online viewing. We use + % black by default, though. + \def\rgbDarkRed{0.50 0.09 0.12} + \def\rgbBlack{0 0 0} + % + % Set color, and create a mark which defines \thiscolor accordingly, + % so that \makeheadline knows which color to restore. + \def\curcolor{0 0 0}% + \def\setcolor#1{% + \ifx#1\curcolor\else + \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}% + \domark + \pdfsetcolor{#1}% + \xdef\curcolor{#1}% + \fi + } + % + \let\maincolor\rgbBlack + \pdfsetcolor{\maincolor} + \edef\thiscolor{\maincolor} + \def\currentcolordefs{} + % + \def\makefootline{% + \baselineskip24pt + \line{\pdfsetcolor{\maincolor}\the\footline}% + } + % + \def\makeheadline{% + \vbox to 0pt{% + \vskip-22.5pt + \line{% + \vbox to8.5pt{}% + % Extract \thiscolor definition from the marks. + \getcolormarks + % Typeset the headline with \maincolor, then restore the color. + \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% + }% + \vss + }% + \nointerlineskip + } + % + % by default, use black for everything. + \def\urlcolor{\rgbBlack} + \let\linkcolor\rgbBlack + % + % make a live url in pdf output. + \def\pdfurl#1{% + \begingroup + % it seems we really need yet another set of dummies; have not + % tried to figure out what each command should do in the context + % of @url. for now, just make @/ a no-op, that's the only one + % people have actually reported a problem with. + % + \normalturnoffactive + \def\@{@}% + \let\/=\empty + \makevalueexpandable + % do we want to go so far as to use \indexnofonts instead of just + % special-casing \var here? + \def\var##1{##1}% + % + \leavevmode\setcolor{\urlcolor}% + \pdfmakeurl{#1}% + \endgroup} + % + % \pdfgettoks - Surround page numbers in #1 with @pdflink. #1 may + % be a simple number, or a list of numbers in the case of an index + % entry. + \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} + \def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS|\relax + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makelink\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next} + \def\makelink{\addtokens{\toksB}% + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +\fi + +\ifpdforxetex + % for pdftex. + {\catcode`^^cc=13 + \gdef\pdfaccentliteralsutfviii{% + % For PDF outline only. Unicode combining accents follow the + % character they modify. Note we need at least the first byte + % of the UTF-8 sequences to have an active catcode to allow the + % definitions to do their magic. + \def\"##1{##1^^cc^^88}% U+0308 + \def\'##1{##1^^cc^^81}% U+0301 + \def\,##1{##1^^cc^^a7}% U+0327 + \def\=##1{##1^^cc^^85}% U+0305 + \def\^##1{##1^^cc^^82}% U+0302 + \def\`##1{##1^^cc^^80}% U+0300 + \def\~##1{##1^^cc^^83}% U+0303 + \def\dotaccent##1{##1^^cc^^87}% U+0307 + \def\H##1{##1^^cc^^8b}% U+030B + \def\ogonek##1{##1^^cc^^a8}% U+0328 + \def\ringaccent##1{##1^^cc^^8a}% U+030A + \def\u##1{##1^^cc^^8c}% U+0306 + \def\ubaraccent##1{##1^^cc^^b1}% U+0331 + \def\udotaccent##1{##1^^cc^^a3}% U+0323 + \def\v##1{##1^^cc^^8c}% U+030C + % this definition of @tieaccent will only work with exactly two characters + % in argument as we need to insert the combining character between them. + \def\tieaccent##1{\tieaccentz##1}% + \def\tieaccentz##1##2{##1^^cd^^a1##2} % U+0361 + }}% + % + % for xetex and luatex, which both support extended ^^^^ escapes and + % process the Unicode codepoint as a single token. + \gdef\pdfaccentliteralsnative{% + \def\"##1{##1^^^^0308}% + \def\'##1{##1^^^^0301}% + \def\,##1{##1^^^^0327}% + \def\=##1{##1^^^^0305}% + \def\^##1{##1^^^^0302}% + \def\`##1{##1^^^^0300}% + \def\~##1{##1^^^^0303}% + \def\dotaccent##1{##1^^^^0307}% + \def\H##1{##1^^^^030b}% + \def\ogonek##1{##1^^^^0328}% + \def\ringaccent##1{##1^^^^030a}% + \def\u##1{##1^^^^0306}% + \def\ubaraccent##1{##1^^^^0331}% + \def\udotaccent##1{##1^^^^0323}% + \def\v##1{##1^^^^030c}% + \def\tieaccent##1{\tieaccentz##1}% + \def\tieaccentz##1##2{##1^^^^0361##2} % U+0361 + }% + % + % use the appropriate definition + \ifluatex + \let\pdfaccentliterals\pdfaccentliteralsnative + \else + \ifxetex + \let\pdfaccentliterals\pdfaccentliteralsnative + \else + \let\pdfaccentliterals\pdfaccentliteralsutfviii + \fi + \fi +\fi + +% +\message{fonts,} + +% Set the baselineskip to #1, and the lineskip and strut size +% correspondingly. There is no deep meaning behind these magic numbers +% used as factors; they just match (closely enough) what Knuth defined. +% +\def\lineskipfactor{.08333} +\def\strutheightpercent{.70833} +\def\strutdepthpercent {.29167} +% +% can get a sort of poor man's double spacing by redefining this. +\def\baselinefactor{1} +% +\newdimen\textleading +\def\setleading#1{% + \dimen0 = #1\relax + \normalbaselineskip = \baselinefactor\dimen0 + \normallineskip = \lineskipfactor\normalbaselineskip + \normalbaselines + \setbox\strutbox =\hbox{% + \vrule width0pt height\strutheightpercent\baselineskip + depth \strutdepthpercent \baselineskip + }% +} + +% PDF CMaps. See also LaTeX's t1.cmap. +% +% do nothing with this by default. +\expandafter\let\csname cmapOT1\endcsname\gobble +\expandafter\let\csname cmapOT1IT\endcsname\gobble +\expandafter\let\csname cmapOT1TT\endcsname\gobble + +% if we are producing pdf, and we have \pdffontattr, then define cmaps. +% (\pdffontattr was introduced many years ago, but people still run +% older pdftex's; it's easy to conditionalize, so we do.) +\ifpdf \ifx\pdffontattr\thisisundefined \else + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1-0) +%%Title: (TeX-OT1-0 TeX OT1 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1) +/Supplement 0 +>> def +/CMapName /TeX-OT1-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<23> <26> <0023> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +40 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1IT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1IT-0) +%%Title: (TeX-OT1IT-0 TeX OT1IT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1IT) +/Supplement 0 +>> def +/CMapName /TeX-OT1IT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<25> <26> <0025> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +42 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<23> <0023> +<24> <00A3> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1IT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1TT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1TT-0) +%%Title: (TeX-OT1TT-0 TeX OT1TT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1TT) +/Supplement 0 +>> def +/CMapName /TeX-OT1TT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +5 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<21> <26> <0021> +<28> <5F> <0028> +<61> <7E> <0061> +endbfrange +32 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <2191> +<0C> <2193> +<0D> <0027> +<0E> <00A1> +<0F> <00BF> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<20> <2423> +<27> <2019> +<60> <2018> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1TT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +\fi\fi +% +% This is what gets called when #5 of \setfont is empty. +\let\cmap\gobble +% +% (end of cmaps) + + +% Set the font macro #1 to the font named \fontprefix#2. +% #3 is the font's design size, #4 is a scale factor, #5 is the CMap +% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). +% Example: +% #1 = \textrm +% #2 = \rmshape +% #3 = 10 +% #4 = \mainmagstep +% #5 = OT1 +% +\def\setfont#1#2#3#4#5{% + \font#1=\fontprefix#2#3 scaled #4 + \csname cmap#5\endcsname#1% + \ifx#2\ttshape\hyphenchar#1=-1 \fi + \ifx#2\ttbshape\hyphenchar#1=-1 \fi + \ifx#2\ttslshape\hyphenchar#1=-1 \fi +} + +% Use cm as the default font prefix. +% To specify the font prefix, you must define \fontprefix +% before you read in texinfo.tex. +\ifx\fontprefix\thisisundefined +\def\fontprefix{cm} +\fi +% Support font families that don't use the same naming scheme as CM. +\def\rmshape{r} +\def\rmbshape{bx} % where the normal face is bold +\def\bfshape{b} +\def\bxshape{bx} +\def\ttshape{tt} +\def\ttbshape{tt} +\def\ttslshape{sltt} +\def\itshape{ti} +\def\itbshape{bxti} +\def\slshape{sl} +\def\slbshape{bxsl} +\def\sfshape{ss} +\def\sfbshape{ss} +\def\scshape{csc} +\def\scbshape{csc} + +% Definitions for a main text size of 11pt. (The default in Texinfo.) +% +\def\definetextfontsizexi{% +% Text fonts (11.2pt, magstep1). +\def\textnominalsize{11pt} +\edef\mainmagstep{\magstephalf} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1095} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstep1}{OT1} +\setfont\deftt\ttshape{10}{\magstep1}{OT1TT} +\setfont\defsl\slshape{10}{\magstep1}{OT1} +\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} +\def\df{\let\ttfont=\deftt \let\bffont = \defbf +\let\ttslfont=\defttsl \let\slfont=\defsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for math mode superscripts (7pt). +\def\sevennominalsize{7pt} +\setfont\sevenrm\rmshape{7}{1000}{OT1} +\setfont\seventt\ttshape{10}{700}{OT1TT} +\setfont\sevenbf\bfshape{10}{700}{OT1} +\setfont\sevenit\itshape{7}{1000}{OT1IT} +\setfont\sevensl\slshape{10}{700}{OT1} +\setfont\sevensf\sfshape{10}{700}{OT1} +\setfont\sevensc\scshape{10}{700}{OT1} +\setfont\seventtsl\ttslshape{10}{700}{OT1TT} +\font\seveni=cmmi7 +\font\sevensy=cmsy7 +\def\sevenecsize{0700} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter (and unnumbered) fonts (17.28pt). +\def\chapnominalsize{17pt} +\setfont\chaprm\rmbshape{12}{\magstep2}{OT1} +\setfont\chapit\itbshape{10}{\magstep3}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep3}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} +\setfont\chapsf\sfbshape{17}{1000}{OT1} +\let\chapbf=\chaprm +\setfont\chapsc\scbshape{10}{\magstep3}{OT1} +\font\chapi=cmmi12 scaled \magstep2 +\font\chapsy=cmsy10 scaled \magstep3 +\def\chapecsize{1728} + +% Section fonts (14.4pt). +\def\secnominalsize{14pt} +\setfont\secrm\rmbshape{12}{\magstep1}{OT1} +\setfont\secrmnotbold\rmshape{12}{\magstep1}{OT1} +\setfont\secit\itbshape{10}{\magstep2}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep2}{OT1} +\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\secsf\sfbshape{12}{\magstep1}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep2}{OT1} +\font\seci=cmmi12 scaled \magstep1 +\font\secsy=cmsy10 scaled \magstep2 +\def\sececsize{1440} + +% Subsection fonts (13.15pt). +\def\ssecnominalsize{13pt} +\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} +\setfont\ssecit\itbshape{10}{1315}{OT1IT} +\setfont\ssecsl\slbshape{10}{1315}{OT1} +\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} +\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1315}{OT1} +\font\sseci=cmmi12 scaled \magstephalf +\font\ssecsy=cmsy10 scaled 1315 +\def\ssececsize{1200} + +% Reduced fonts for @acronym in text (10pt). +\def\reducednominalsize{10pt} +\setfont\reducedrm\rmshape{10}{1000}{OT1} +\setfont\reducedtt\ttshape{10}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{1000}{OT1} +\setfont\reducedit\itshape{10}{1000}{OT1IT} +\setfont\reducedsl\slshape{10}{1000}{OT1} +\setfont\reducedsf\sfshape{10}{1000}{OT1} +\setfont\reducedsc\scshape{10}{1000}{OT1} +\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} +\font\reducedi=cmmi10 +\font\reducedsy=cmsy10 +\def\reducedecsize{1000} + +\textleading = 13.2pt % line spacing for 11pt CM +\textfonts % reset the current fonts +\rm +} % end of 11pt text font size definitions, \definetextfontsizexi + + +% Definitions to make the main text be 10pt Computer Modern, with +% section, chapter, etc., sizes following suit. This is for the GNU +% Press printing of the Emacs 22 manual. Maybe other manuals in the +% future. Used with @smallbook, which sets the leading to 12pt. +% +\def\definetextfontsizex{% +% Text fonts (10pt). +\def\textnominalsize{10pt} +\edef\mainmagstep{1000} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1000} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstephalf}{OT1} +\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} +\setfont\defsl\slshape{10}{\magstephalf}{OT1} +\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} +\def\df{\let\ttfont=\deftt \let\bffont = \defbf +\let\slfont=\defsl \let\ttslfont=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for math mode superscripts (7pt). +\def\sevennominalsize{7pt} +\setfont\sevenrm\rmshape{7}{1000}{OT1} +\setfont\seventt\ttshape{10}{700}{OT1TT} +\setfont\sevenbf\bfshape{10}{700}{OT1} +\setfont\sevenit\itshape{7}{1000}{OT1IT} +\setfont\sevensl\slshape{10}{700}{OT1} +\setfont\sevensf\sfshape{10}{700}{OT1} +\setfont\sevensc\scshape{10}{700}{OT1} +\setfont\seventtsl\ttslshape{10}{700}{OT1TT} +\font\seveni=cmmi7 +\font\sevensy=cmsy7 +\def\sevenecsize{0700} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter fonts (14.4pt). +\def\chapnominalsize{14pt} +\setfont\chaprm\rmbshape{12}{\magstep1}{OT1} +\setfont\chapit\itbshape{10}{\magstep2}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep2}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\chapsf\sfbshape{12}{\magstep1}{OT1} +\let\chapbf\chaprm +\setfont\chapsc\scbshape{10}{\magstep2}{OT1} +\font\chapi=cmmi12 scaled \magstep1 +\font\chapsy=cmsy10 scaled \magstep2 +\def\chapecsize{1440} + +% Section fonts (12pt). +\def\secnominalsize{12pt} +\setfont\secrm\rmbshape{12}{1000}{OT1} +\setfont\secit\itbshape{10}{\magstep1}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep1}{OT1} +\setfont\sectt\ttbshape{12}{1000}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} +\setfont\secsf\sfbshape{12}{1000}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep1}{OT1} +\font\seci=cmmi12 +\font\secsy=cmsy10 scaled \magstep1 +\def\sececsize{1200} + +% Subsection fonts (10pt). +\def\ssecnominalsize{10pt} +\setfont\ssecrm\rmbshape{10}{1000}{OT1} +\setfont\ssecit\itbshape{10}{1000}{OT1IT} +\setfont\ssecsl\slbshape{10}{1000}{OT1} +\setfont\ssectt\ttbshape{10}{1000}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} +\setfont\ssecsf\sfbshape{10}{1000}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1000}{OT1} +\font\sseci=cmmi10 +\font\ssecsy=cmsy10 +\def\ssececsize{1000} + +% Reduced fonts for @acronym in text (9pt). +\def\reducednominalsize{9pt} +\setfont\reducedrm\rmshape{9}{1000}{OT1} +\setfont\reducedtt\ttshape{9}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{900}{OT1} +\setfont\reducedit\itshape{9}{1000}{OT1IT} +\setfont\reducedsl\slshape{9}{1000}{OT1} +\setfont\reducedsf\sfshape{9}{1000}{OT1} +\setfont\reducedsc\scshape{10}{900}{OT1} +\setfont\reducedttsl\ttslshape{10}{900}{OT1TT} +\font\reducedi=cmmi9 +\font\reducedsy=cmsy9 +\def\reducedecsize{0900} + +\divide\parskip by 2 % reduce space between paragraphs +\textleading = 12pt % line spacing for 10pt CM +\textfonts % reset the current fonts +\rm +} % end of 10pt text font size definitions, \definetextfontsizex + +% Fonts for short table of contents. +\setfont\shortcontrm\rmshape{12}{1000}{OT1} +\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 +\setfont\shortcontsl\slshape{12}{1000}{OT1} +\setfont\shortconttt\ttshape{12}{1000}{OT1TT} + + +% We provide the user-level command +% @fonttextsize 10 +% (or 11) to redefine the text font size. pt is assumed. +% +\def\xiword{11} +\def\xword{10} +\def\xwordpt{10pt} +% +\parseargdef\fonttextsize{% + \def\textsizearg{#1}% + %\wlog{doing @fonttextsize \textsizearg}% + % + % Set \globaldefs so that documents can use this inside @tex, since + % makeinfo 4.8 does not support it, but we need it nonetheless. + % + \begingroup \globaldefs=1 + \ifx\textsizearg\xword \definetextfontsizex + \else \ifx\textsizearg\xiword \definetextfontsizexi + \else + \errhelp=\EMsimple + \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} + \fi\fi + \endgroup +} + +% +% Change the current font style to #1, remembering it in \curfontstyle. +% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in +% italics, not bold italics. +% +\def\setfontstyle#1{% + \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. + \csname #1font\endcsname % change the current font +} + +\def\rm{\fam=0 \setfontstyle{rm}} +\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}} + +% Texinfo sort of supports the sans serif font style, which plain TeX does not. +% So we set up a \sf. +\newfam\sffam +\def\sf{\fam=\sffam \setfontstyle{sf}} + +% We don't need math for this font style. +\def\ttsl{\setfontstyle{ttsl}} + + +% In order for the font changes to affect most math symbols and letters, +% we have to define the \textfont of the standard families. +% We don't bother to reset \scriptscriptfont; awaiting user need. +% +\def\resetmathfonts{% + \textfont0=\rmfont \textfont1=\ifont \textfont2=\syfont + \textfont\itfam=\itfont \textfont\slfam=\slfont \textfont\bffam=\bffont + \textfont\ttfam=\ttfont \textfont\sffam=\sffont + % + % Fonts for superscript. Note that the 7pt fonts are used regardless + % of the current font size. + \scriptfont0=\sevenrm \scriptfont1=\seveni \scriptfont2=\sevensy + \scriptfont\itfam=\sevenit \scriptfont\slfam=\sevensl + \scriptfont\bffam=\sevenbf \scriptfont\ttfam=\seventt + \scriptfont\sffam=\sevensf +} + + + +% \defineassignfonts{SIZE} - +% Define sequence \assignfontsSIZE, which switches between font sizes +% by redefining the meanings of \STYLEfont. (Just \STYLE additionally sets +% the current \fam for math mode.) +% +\def\defineassignfonts#1{% + \expandafter\edef\csname assignfonts#1\endcsname{% + \let\noexpand\rmfont\csname #1rm\endcsname + \let\noexpand\itfont\csname #1it\endcsname + \let\noexpand\slfont\csname #1sl\endcsname + \let\noexpand\bffont\csname #1bf\endcsname + \let\noexpand\ttfont\csname #1tt\endcsname + \let\noexpand\smallcaps\csname #1sc\endcsname + \let\noexpand\sffont \csname #1sf\endcsname + \let\noexpand\ifont \csname #1i\endcsname + \let\noexpand\syfont \csname #1sy\endcsname + \let\noexpand\ttslfont\csname #1ttsl\endcsname + } +} + +\def\assignfonts#1{% + \csname assignfonts#1\endcsname +} + +\newif\ifrmisbold + +% Select smaller font size with the current style. Used to change font size +% in, e.g., the LaTeX logo and acronyms. If we are using bold fonts for +% normal roman text, also use bold fonts for roman text in the smaller size. +\def\switchtolllsize{% + \expandafter\assignfonts\expandafter{\lllsize}% + \ifrmisbold + \let\rmfont\bffont + \fi + \csname\curfontstyle\endcsname +}% + +\def\switchtolsize{% + \expandafter\assignfonts\expandafter{\lsize}% + \ifrmisbold + \let\rmfont\bffont + \fi + \csname\curfontstyle\endcsname +}% + +% Define the font-changing commands (all called \...fonts). +% Each font-changing command also sets the names \lsize (one size lower) +% and \lllsize (three sizes lower). These relative commands are used +% in, e.g., the LaTeX logo and acronyms. +% +% Note: The fonts used for \ifont are for "math italics" (\itfont is for +% italics in regular text). \syfont is also used in math mode only. +% +\def\definefontsetatsize#1#2#3#4#5{% + \defineassignfonts{#1}% +\expandafter\def\csname #1fonts\endcsname{% + \def\curfontsize{#1}% + \def\lsize{#2}\def\lllsize{#3}% + \csname rmisbold#5\endcsname + \csname assignfonts#1\endcsname + \resetmathfonts + \setleading{#4}% +}} + +\definefontsetatsize{text} {reduced}{smaller}{\textleading}{false} +\definefontsetatsize{title} {chap} {subsec} {27pt} {true} +\definefontsetatsize{chap} {sec} {text} {19pt} {true} +\definefontsetatsize{sec} {subsec} {reduced}{17pt} {true} +\definefontsetatsize{ssec} {text} {small} {15pt} {true} +\definefontsetatsize{reduced}{small} {smaller}{10.5pt}{false} +\definefontsetatsize{small} {smaller}{smaller}{10.5pt}{false} +\definefontsetatsize{smaller}{smaller}{smaller}{9.5pt} {false} + +\def\titlefont#1{{\titlefonts\rm #1}} +\let\subsecfonts = \ssecfonts +\let\subsubsecfonts = \ssecfonts + +% Define these just so they can be easily changed for other fonts. +\def\angleleft{$\langle$} +\def\angleright{$\rangle$} + +% Set the fonts to use with the @small... environments. +\let\smallexamplefonts = \smallfonts + +% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample +% can fit this many characters: +% 8.5x11=86 smallbook=72 a4=90 a5=69 +% If we use \scriptfonts (8pt), then we can fit this many characters: +% 8.5x11=90+ smallbook=80 a4=90+ a5=77 +% For me, subjectively, the few extra characters that fit aren't worth +% the additional smallness of 8pt. So I'm making the default 9pt. +% +% By the way, for comparison, here's what fits with @example (10pt): +% 8.5x11=71 smallbook=60 a4=75 a5=58 +% --karl, 24jan03. + +% Set up the default fonts, so we can use them for creating boxes. +% +\definetextfontsizexi + + +% Check if we are currently using a typewriter font. Since all the +% Computer Modern typewriter fonts have zero interword stretch (and +% shrink), and it is reasonable to expect all typewriter fonts to have +% this property, we can check that font parameter. #1 is what to +% print if we are indeed using \tt; #2 is what to print otherwise. +\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} + +% Same as above, but check for italic font. Actually this also catches +% non-italic slanted fonts since it is impossible to distinguish them from +% italic fonts. But since this is only used by $ and it uses \sl anyway +% this is not a problem. +\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} + + +% Check if internal flag is clear, i.e. has not been @set. +\def\ifflagclear#1#2#3{% + \expandafter\ifx\csname SET#1\endcsname\relax + #2\else#3\fi +} + +{ +\catcode`\'=\active +\catcode`\`=\active + +\gdef\setcodequotes{\let`\codequoteleft \let'\codequoteright} +\gdef\setregularquotes{\let`\lq \let'\rq} +} +\setregularquotes + +% output for ' in @code +% in tt font hex 0D (undirected) or 27 (curly right quote) +% +\def\codequoteright{% + \ifusingtt + {\ifflagclear{txicodequoteundirected}% + {\ifflagclear{codequoteundirected}% + {'}% + {\char"0D }}% + {\char"0D }}% + {'}% +} + +% output for ` in @code +% in tt font hex 12 (grave accent) or 60 (curly left quote) +% \relax disables Spanish ligatures ?` and !` of \tt font. +% +\def\codequoteleft{% + \ifusingtt + {\ifflagclear{txicodequotebacktick}% + {\ifflagclear{codequotebacktick}% + {\relax`}% + {\char"12 }}% + {\char"12 }}% + {\relax`}% +} + +% Commands to set the quote options. +% +\parseargdef\codequoteundirected{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% + \fi\fi +} + +\parseargdef\codequotebacktick{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% + \fi\fi +} + +% Turn them on by default +\let\SETtxicodequoteundirected = t +\let\SETtxicodequotebacktick = t + + +% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. +\def\noligaturesquoteleft{\relax\lq} + +% Count depth in font-changes, for error checks +\newcount\fontdepth \fontdepth=0 + +% Font commands. + +% #1 is the font command (\sl or \it), #2 is the text to slant. +% If we are in a monospaced environment, however, 1) always use \ttsl, +% and 2) do not add an italic correction. +\def\dosmartslant#1#2{% + \ifusingtt + {{\ttsl #2}\let\next=\relax}% + {\def\next{{#1#2}\smartitaliccorrection}}% + \next +} +\def\smartslanted{\dosmartslant\sl} +\def\smartitalic{\dosmartslant\it} + +% Output an italic correction unless the following character is such as +% not to need one. +\def\smartitaliccorrection{\futurelet\next\smartitaliccorrectionx} +\def\smartitaliccorrectionx{% + \ifx\next,% + \else\ifx\next-% + \else\ifx\next.% + \else\ifx\next\.% + \else\ifx\next\comma% + \else\ptexslash + \fi\fi\fi\fi\fi + \aftersmartic +} + +% @cite unconditionally uses \sl with \smartitaliccorrection. +\def\cite#1{{\sl #1}\smartitaliccorrection} + +% By default, use ttsl font for @var when used in code context. +% To unconditionally use \sl for @var, @clear txicodevaristt. This +% gives consistency for parameter names whether they are in @def, +% @table @code or a regular paragraph. +\def\aftersmartic{} +\def\var#1{% + \let\saveaftersmartic = \aftersmartic + \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% + % The \null is to reset \spacefactor. + % + \ifflagclear{txicodevaristt}% + {\def\varnext{{{\sl #1}}\smartitaliccorrection}}% + {\def\varnext{\smartslanted{#1}}}% + \varnext +} + +\def\SETtxicodevaristt{}% @set txicodevaristt + +\let\i=\smartitalic +\let\slanted=\smartslanted +\let\dfn=\smartslanted +\let\emph=\smartitalic + +% @r for roman font, used for code comment +\def\r#1{{% + \usenormaldash % get --, --- ligatures even if in @code + \defcharsdefault % in case on def line + \rm #1}} +{\catcode`-=\active \gdef\usenormaldash{\let-\normaldash}} + +% @sc, undocumented @ii. +\def\sc#1{{\smallcaps#1}} % smallcaps font +\def\ii#1{{\it #1}} % italic font + +% @b, explicit bold. Also @strong. +\def\b#1{{\bf \defcharsdefault #1}} +\let\strong=\b + +% @sansserif, explicit sans. +\def\sansserif#1{{\sf #1}} + +\newif\iffrenchspacing +\frenchspacingfalse + +% Set sfcode to normal for the chars that usually have another value. +% Can't use plain's \frenchspacing because it uses the `\x notation, and +% sometimes \x has an active definition that messes things up. +% +\catcode`@=11 + \def\plainfrenchspacing{% + \iffrenchspacing\else + \frenchspacingtrue + \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m + \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m + \def\endofsentencespacefactor{1000}% for @. and friends + \fi + } + \def\plainnonfrenchspacing{% + \iffrenchspacing + \frenchspacingfalse + \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 + \def\endofsentencespacefactor{3000}% for @. and friends + \fi + } +\catcode`@=\other +\def\endofsentencespacefactor{3000}% default + +% @frenchspacing on|off says whether to put extra space after punctuation. +% +\def\onword{on} +\def\offword{off} +% +\let\frenchspacingsetting\plainnonfrenchspacing % used in output routine +\parseargdef\frenchspacing{% + \def\temp{#1}% + \ifx\temp\onword \let\frenchspacingsetting\plainfrenchspacing + \else\ifx\temp\offword \let\frenchspacingsetting\plainnonfrenchspacing + \else + \errhelp = \EMsimple + \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% + \fi\fi + \frenchspacingsetting +} + + +% @t, explicit typewriter. +\def\t#1{% + {\tt \defcharsdefault \plainfrenchspacing #1}% + \null +} + +% @samp. +\def\samp#1{{\setcodequotes\lq\tclose{#1}\rq\null}} + +% @indicateurl is \samp, that is, with quotes. +\let\indicateurl=\samp + +% @code (and similar) prints in typewriter, but with spaces the same +% size as normal in the surrounding text, without hyphenation, etc. +% This is a subroutine for that. +\def\tclose#1{% + {% + % Change normal interword space to be same as for the current font. + \spaceskip = \fontdimen2\font + % + % Switch to typewriter. + \tt + % + % `\ ' produces the large typewriter interword space. + \def\ {{\spaceskip = 0pt{} }}% + % + \plainfrenchspacing + #1% + }% + \null % reset spacefactor to 1000 +} + +% This is for LuaTeX: It is not sufficient to disable hyphenation at +% explicit dashes by setting `\hyphenchar` to -1. +\def\dashnobreak{% + \normaldash + \penalty 10000 } + +% We must turn on hyphenation at `-' and `_' in @code. +% Otherwise, it is too hard to avoid overfull hboxes +% in the Emacs manual, the Library manual, etc. +% We explicitly allow hyphenation at these characters +% using \discretionary. +% +% Hyphenation at - and hyphenation within words was turned off +% by default for the tt fonts using the \hyphenchar parameter of TeX. +{ + \catcode`\-=\active \catcode`\_=\active + \catcode`\'=\active \catcode`\`=\active + \global\let'=\rq \global\let`=\lq % default definitions + % + \global\def\code{\begingroup + \setcodequotes + \catcode\dashChar=\active \catcode\underChar=\active + \ifallowcodebreaks + \let-\codedash + \let_\codeunder + \else + \let-\dashnobreak + \let_\realunder + \fi + \codex + } + % + \gdef\codedash{\futurelet\next\codedashfinish} + \gdef\codedashfinish{% + \normaldash % always output the dash character itself. + % + % Now, output a discretionary to allow a line break, unless + % (a) the next character is a -, or + % (b) the preceding character is a -, or + % (c) we are at the start of the string. + % In both cases (b) and (c), \codedashnobreak should be set to \codedash. + % + % E.g., given --posix, we do not want to allow a break after either -. + % Given --foo-bar, we do want to allow a break between the - and the b. + \ifx\next\codedash \else + \ifx\codedashnobreak\codedash + \else \discretionary{}{}{}\fi + \fi + % we need the space after the = for the case when \next itself is a + % space token; it would get swallowed otherwise. As in @code{- a}. + \global\let\codedashnobreak= \next + } +} +\def\normaldash{-} +% +\def\codex #1{\tclose{% + % Given -foo (with a single dash), we do not want to allow a break + % after the -. \codedashnobreak is set to the first character in + % @code. + \futurelet\codedashnobreak\relax + #1% +}\endgroup} + +\def\codeunder{% + % this is all so @math{@code{var_name}+1} can work. In math mode, _ + % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) + % will therefore expand the active definition of _, which is us + % (inside @code that is), therefore an endless loop. + \ifusingtt{\ifmmode + \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. + \else\normalunderscore \fi + \discretionary{}{}{}}% + {\_}% +} + +% An additional complication: the above will allow breaks after, e.g., +% each of the four underscores in __typeof__. This is bad. +% @allowcodebreaks provides a document-level way to turn breaking at - +% and _ on and off. +% +\newif\ifallowcodebreaks \allowcodebreakstrue + +\def\keywordtrue{true} +\def\keywordfalse{false} + +\parseargdef\allowcodebreaks{% + \def\txiarg{#1}% + \ifx\txiarg\keywordtrue + \allowcodebreakstrue + \else\ifx\txiarg\keywordfalse + \allowcodebreaksfalse + \else + \errhelp = \EMsimple + \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% + \fi\fi +} + +% For @command, @env, @file, @option quotes seem unnecessary, +% so use \code rather than \samp. +\let\command=\code +\let\env=\code +\let\file=\code +\let\option=\code + +% @uref (abbreviation for `urlref') aka @url takes an optional +% (comma-separated) second argument specifying the text to display and +% an optional third arg as text to display instead of (rather than in +% addition to) the url itself. First (mandatory) arg is the url. + +% TeX-only option to allow changing PDF output to show only the second +% 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. +\def\urefbreak{\nopretolerance \begingroup \urefcatcodes \dourefbreak} +\let\uref=\urefbreak +% +\def\dourefbreak#1{\urefbreakfinish #1,,,\finish} +\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% look for second arg + \ifdim\wd0 > 0pt + \ifpdf + % For pdfTeX and LuaTeX + \ifurefurlonlylink + % PDF plus option to not display url, show just arg + \unhbox0 + \else + % PDF, normally display both arg and url for consistency, + % visibility, if the pdf is eventually used to print, etc. + \unhbox0\ (\urefcode{#1})% + \fi + \else + \ifxetex + % For XeTeX + \ifurefurlonlylink + % PDF plus option to not display url, show just arg + \unhbox0 + \else + % PDF, normally display both arg and url for consistency, + % visibility, if the pdf is eventually used to print, etc. + \unhbox0\ (\urefcode{#1})% + \fi + \else + \unhbox0\ (\urefcode{#1})% DVI, always show arg and url + \fi + \fi + \else + \urefcode{#1}% only url given, so show it + \fi + \fi + \endlink +\endgroup} + +% Allow line breaks around only a few characters (only). +\def\urefcatcodes{% + \catcode`\&=\active \catcode`\.=\active + \catcode`\#=\active \catcode`\?=\active + \catcode`\/=\active +} +{ + \urefcatcodes + % + \global\def\urefcode{\begingroup + \setcodequotes + \urefcatcodes + \let&\urefcodeamp + \let.\urefcodedot + \let#\urefcodehash + \let?\urefcodequest + \let/\urefcodeslash + \codex + } + % + % By default, they are just regular characters. + \global\def&{\normalamp} + \global\def.{\normaldot} + \global\def#{\normalhash} + \global\def?{\normalquest} + \global\def/{\normalslash} +} + +\def\urefcodeamp{\urefprebreak \&\urefpostbreak} +\def\urefcodedot{\urefprebreak .\urefpostbreak} +\def\urefcodehash{\urefprebreak \#\urefpostbreak} +\def\urefcodequest{\urefprebreak ?\urefpostbreak} +\def\urefcodeslash{\futurelet\next\urefcodeslashfinish} +{ + \catcode`\/=\active + \global\def\urefcodeslashfinish{% + \urefprebreak \slashChar + % Allow line break only after the final / in a sequence of + % slashes, to avoid line break between the slashes in http://. + \ifx\next/\else \urefpostbreak \fi + } +} + +% By default we'll break after the special characters, but some people like to +% break before the special chars, so allow that. Also allow no breaking at +% all, for manual control. +% +\parseargdef\urefbreakstyle{% + \def\txiarg{#1}% + \ifx\txiarg\wordnone + \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordbefore + \def\urefprebreak{\urefallowbreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordafter + \def\urefprebreak{\nobreak}\def\urefpostbreak{\urefallowbreak} + \else + \errhelp = \EMsimple + \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\wordafter{after} +\def\wordbefore{before} +\def\wordnone{none} + +% 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 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 +% preferable one choice is over the other. +% Check test cases in doc/texinfo-tex-test.texi before making any changes. +\def\urefallowbreak{% + \penalty0\relax + \hskip 0pt plus 3 em\relax + \penalty1000\relax + \hskip 0pt plus -3 em\relax +} + +\urefbreakstyle after + +% @url synonym for @uref, since that's how everyone uses it. +% +\let\url=\uref + +% rms does not like angle brackets --karl, 17may97. +% So now @email is just like @uref, unless we are pdf. +% +%\def\email#1{\angleleft{\tt #1}\angleright} +\ifpdforxetex + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} +\else + \let\email=\uref +\fi + +% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), +% `example' (@kbd uses ttsl only inside of @example and friends), +% or `code' (@kbd uses normal tty font always). +\parseargdef\kbdinputstyle{% + \def\txiarg{#1}% + \ifx\txiarg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\txiarg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\txiarg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \else + \errhelp = \EMsimple + \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is `distinct'. +\kbdinputstyle distinct + +\def\kbd#1{% + \tclose{\kbdfont\setcodequotes#1}% +} + +% definition of @key that produces a lozenge. Doesn't adjust to text size. +%\setfont\keyrm\rmshape{8}{1000}{OT1} +%\font\keysy=cmsy9 +%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% +% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% +% \vbox{\hrule\kern-0.4pt +% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% +% \kern-0.4pt\hrule}% +% \kern-.06em\raise0.4pt\hbox{\angleright}}}} + +% definition of @key with no lozenge. +% +\def\key#1{{\setregularquotes \tt #1}\null} + +% @clicksequence{File @click{} Open ...} +\def\clicksequence#1{\begingroup #1\endgroup} + +% @clickstyle @arrow (by default) +\parseargdef\clickstyle{\def\click{#1}} +\def\click{\arrow} + +% Typeset a dimension, e.g., `in' or `pt'. The only reason for the +% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. +% +\def\dmn#1{\thinspace #1} + +% @acronym for "FBI", "NATO", and the like. +% We print this one point size smaller, since it's intended for +% all-uppercase. +% +\def\acronym#1{\doacronym #1,,\finish} +\def\doacronym#1,#2,#3\finish{% + {\switchtolsize #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @abbr for "Comput. J." and the like. +% No font change, but don't do end-of-sentence spacing. +% +\def\abbr#1{\doabbr #1,,\finish} +\def\doabbr#1,#2,#3\finish{% + {\plainfrenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @asis just yields its argument. Used with @table, for example. +% +\def\asis#1{#1} + +% @math outputs its argument in math mode. +% +% One complication: _ usually means subscripts, but it could also mean +% an actual _ character, as in @math{@var{some_variable} + 1}. So make +% _ active, and distinguish by seeing if the current family is \slfam, +% which is what @var uses. +{ + \catcode`\_ = \active + \gdef\mathunderscore{% + \catcode`\_=\active + \def_{\ifnum\fam=\slfam \_\else\sb\fi}% + } +} +% Another complication: we want \\ (and @\) to output a math (or tt) \. +% FYI, plain.tex uses \\ as a temporary control sequence (for no +% particular reason), but this is not advertised and we don't care. +% +% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. +\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} +% +\def\math{% + \ifmmode\else % only go into math if not in math mode already + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + % make the texinfo accent commands work in math mode + \let\"=\ddot + \let\'=\acute + \let\==\bar + \let\^=\hat + \let\`=\grave + \let\u=\breve + \let\v=\check + \let\~=\tilde + \let\dotaccent=\dot + % have to provide another name for sup operator + \let\mathopsup=\sup + $\expandafter\finishmath\fi +} +\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. + +% Some active characters (such as <) are spaced differently in math. +% We have to reset their definitions in case the @math was an argument +% to a command which sets the catcodes (such as @item or @section). +% +{ + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \catcode`' = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + \let' = \ptexquoteright + } +} + +% for @sub and @sup, if in math mode, just do a normal sub/superscript. +% If in text, use math to place as sub/superscript, but switch +% into text mode, with smaller fonts. This is a different font than the +% one used for real math sub/superscripts (8pt vs. 7pt), but let's not +% fix it (significant additions to font machinery) until someone notices. +% +\def\sub{\ifmmode \expandafter\sb \else \expandafter\finishsub\fi} +\def\finishsub#1{$\sb{\hbox{\switchtolllsize #1}}$}% +% +\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. +% +\def\outfmtnametex{tex} +% +\long\def\inlinefmt#1{\doinlinefmt #1,\finish} +\long\def\doinlinefmt#1,#2,\finish{% + \def\inlinefmtname{#1}% + \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi +} +% +% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if +% FMTNAME is tex, else ELSE-TEXT. +\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish} +\long\def\doinlinefmtifelse#1,#2,#3,#4,\finish{% + \def\inlinefmtname{#1}% + \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\else \ignorespaces #3\fi +} +% +% For raw, must switch into @tex before parsing the argument, to avoid +% setting catcodes prematurely. Doing it this way means that, for +% example, @inlineraw{html, foo{bar} gets a parse error instead of being +% ignored. But this isn't important because if people want a literal +% *right* brace they would have to use a command anyway, so they may as +% well use a command to get a left brace too. We could re-use the +% delimiter character idea from \verb, but it seems like overkill. +% +\long\def\inlineraw{\tex \doinlineraw} +\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} +\def\doinlinerawtwo#1,#2,\finish{% + \def\inlinerawname{#1}% + \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi + \endgroup % close group opened by \tex. +} + +% @inlineifset{VAR, TEXT} expands TEXT if VAR is @set. +% +\long\def\inlineifset#1{\doinlineifset #1,\finish} +\long\def\doinlineifset#1,#2,\finish{% + \def\inlinevarname{#1}% + \expandafter\ifx\csname SET\inlinevarname\endcsname\relax + \else\ignorespaces#2\fi +} + +% @inlineifclear{VAR, TEXT} expands TEXT if VAR is not @set. +% +\long\def\inlineifclear#1{\doinlineifclear #1,\finish} +\long\def\doinlineifclear#1,#2,\finish{% + \def\inlinevarname{#1}% + \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \ignorespaces#2\fi +} + + +\message{glyphs,} +% and logos. + +% @@ prints an @, as does @atchar{}. +\def\@{\char64 } +\let\atchar=\@ + +% @{ @} @lbracechar{} @rbracechar{} all generate brace characters. +\def\lbracechar{{\ifusingtt{\char123}{\ensuremath\lbrace}}} +\def\rbracechar{{\ifusingtt{\char125}{\ensuremath\rbrace}}} +\let\{=\lbracechar +\let\}=\rbracechar + +% @comma{} to avoid , parsing problems. +\let\comma = , + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. +\let\, = \ptexc +\let\dotaccent = \ptexdot +\def\ringaccent#1{{\accent23 #1}} +\let\tieaccent = \ptext +\let\ubaraccent = \ptexb +\let\udotaccent = \d + +% Other special characters: @questiondown @exclamdown @ordf @ordm +% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} +\def\ordf{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{a}}} +\def\ordm{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{o}}} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi + \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} + +% The \TeX{} logo, as in plain, but resetting the spacing so that a +% period following counts as ending a sentence. (Idea found in latex.) +% +\edef\TeX{\TeX \spacefactor=1000 } + +% @LaTeX{} logo. Not quite the same results as the definition in +% latex.ltx, since we use a different font for the raised A; it's most +% convenient for us to use an explicitly smaller font, rather than using +% the \scriptstyle font (since we don't reset \scriptstyle and +% \scriptscriptstyle). +% +\def\LaTeX{% + L\kern-.36em + {\setbox0=\hbox{T}% + \vbox to \ht0{\hbox{% + \ifx\textnominalsize\xwordpt + % for 10pt running text, lllsize (8pt) is too small for the A in LaTeX. + % Revert to plain's \scriptsize, which is 7pt. + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + \ifx\curfontsize\smallword + % For footnotes and indices + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + % For 11pt, we can use our lllsize. + \switchtolllsize A% + \fi + \fi + }% + \vss + }}% + \kern-.15em + \TeX +} +\def\smallword{small} + +% Some math mode symbols. Define \ensuremath to switch into math mode +% unless we are already there. Expansion tricks may not be needed here, +% but safer, and can't hurt. +\def\ensuremath{\ifmmode \expandafter\asis \else\expandafter\ensuredmath \fi} +\def\ensuredmath#1{$\relax#1$} +% +\def\bullet{\ensuremath\ptexbullet} +\def\geq{\ensuremath\ge} +\def\leq{\ensuremath\le} +\def\minus{\ensuremath-} + +% @dots{} outputs an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in the cm +% typewriter fonts as three actual period characters; on the other hand, +% in other typewriter fonts three periods are wider than 1.5em. So do +% whichever is larger. +% +\def\dots{% + \leavevmode + \setbox0=\hbox{...}% get width of three periods + \ifdim\wd0 > 1.5em + \dimen0 = \wd0 + \else + \dimen0 = 1.5em + \fi + \hbox to \dimen0{% + \hskip 0pt plus.25fil + .\hskip 0pt plus1fil + .\hskip 0pt plus1fil + .\hskip 0pt plus.5fil + }% +} + +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \dots + \spacefactor=\endofsentencespacefactor +} + +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. +% +% Since these characters are used in examples, they should be an even number of +% \tt widths. Each \tt character is 1en, so two makes it 1em. +% +\def\point{$\star$} +\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} +\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} +\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} +\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} + +% The @error{} command. +% Adapted from the TeXbook's \boxit. +% +\newbox\errorbox +% +{\ttfont \global\dimen0 = 3em}% Width of the box. +\dimen2 = .55pt % Thickness of rules +% The text. (`r' is open on the right, `e' somewhat less so on the left.) +\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} +% +\setbox\errorbox=\hbox to \dimen0{\hfil + \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. + \advance\hsize by -2\dimen2 % Rules. + \vbox{% + \hrule height\dimen2 + \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. + \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. + \kern3pt\vrule width\dimen2}% Space to right. + \hrule height\dimen2} + \hfil} +% +\def\error{\leavevmode\lower.7ex\copy\errorbox} + +% @pounds{} is a sterling sign, which Knuth put in the CM italic font. +% +\def\pounds{{\ifusingtt{\ecfont\char"BF}{\it\$}}} + +% @euro{} comes from a separate font, depending on the current style. +% We use the free feym* fonts from the eurosym package by Henrik +% Theiling, which support regular, slanted, bold and bold slanted (and +% "outlined" (blackboard board, sort of) versions, which we don't need). +% It is available from http://www.ctan.org/tex-archive/fonts/eurosym. +% +% Although only regular is the truly official Euro symbol, we ignore +% that. The Euro is designed to be slightly taller than the regular +% font height. +% +% feymr - regular +% feymo - slanted +% feybr - bold +% feybo - bold slanted +% +% There is no good (free) typewriter version, to my knowledge. +% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. +% Hmm. +% +% Also doesn't work in math. Do we need to do math with euro symbols? +% Hope not. +% +% +\def\euro{{\eurofont e}} +\def\eurofont{% + % We set the font at each command, rather than predefining it in + % \textfonts and the other font-switching commands, so that + % installations which never need the symbol don't have to have the + % font installed. + % + % There is only one designed size (nominal 10pt), so we always scale + % that to the current nominal size. + % + % By the way, simply using "at 1em" works for cmr10 and the like, but + % does not work for cmbx10 and other extended/shrunken fonts. + % + \def\eurosize{\csname\curfontsize nominalsize\endcsname}% + % + \ifx\curfontstyle\bfstylename + % bold: + \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize + \else + % regular: + \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize + \fi + \thiseurofont +} + +% Glyphs from the EC fonts. We don't use \let for the aliases, because +% sometimes we redefine the original macro, and the alias should reflect +% the redefinition. +% +% Use LaTeX names for the Icelandic letters. +\def\DH{{\ecfont \char"D0}} % Eth +\def\dh{{\ecfont \char"F0}} % eth +\def\TH{{\ecfont \char"DE}} % Thorn +\def\th{{\ecfont \char"FE}} % thorn +% +\def\guillemetleft{{\ecfont \char"13}} +\def\guillemotleft{\guillemetleft} +\def\guillemetright{{\ecfont \char"14}} +\def\guillemotright{\guillemetright} +\def\guilsinglleft{{\ecfont \char"0E}} +\def\guilsinglright{{\ecfont \char"0F}} +\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 +% dummy definitions to worry about for index entries, etc. +% +% ogonek is also used with other letters in Lithuanian (IOU), but using +% the precomposed glyphs for those is not so easy since they aren't in +% the same EC font. +\def\ogonek#1{{% + \def\temp{#1}% + \ifx\temp\macrocharA\Aogonek + \else\ifx\temp\macrochara\aogonek + \else\ifx\temp\macrocharE\Eogonek + \else\ifx\temp\macrochare\eogonek + \else + \ecfont \setbox0=\hbox{#1}% + \ifdim\ht0=1ex\accent"0C #1% + \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% + \fi + \fi\fi\fi\fi + }% +} +\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} +\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} +\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} +\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} +% +% Use the European Computer Modern fonts (cm-super in outline format) +% for non-CM glyphs. That is ec* for regular text and tc* for the text +% companion symbols (LaTeX TS1 encoding). Both are part of the ec +% package and follow the same conventions. +% +\def\ecfont{\etcfont{e}} +\def\tcfont{\etcfont{t}} +% +\def\etcfont#1{% + % We can't distinguish serif/sans and italic/slanted, but this + % is used for crude hacks anyway (like adding French and German + % quotes to documents typeset with CM, where we lose kerning), so + % hopefully nobody will notice/care. + \edef\ecsize{\csname\curfontsize ecsize\endcsname}% + \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% + \ifusingtt + % typewriter: + {\font\thisecfont = #1ctt\ecsize \space at \nominalsize}% + % else + {\ifx\curfontstyle\bfstylename + \etcfontbold{#1}% + \else + \ifrmisbold + \etcfontbold{#1}% + \else + % regular: + \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space + at \nominalsize + \fi + \fi}% + \thisecfont +} + +\def\etcfontbold#1{% + % bold: + \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize +} + +% @registeredsymbol - R in a circle. The font for the R should really +% be smaller yet, but lllsize is the best we can do for now. +% Adapted from the plain.tex definition of \copyright. +% +\def\registeredsymbol{% + $^{{\ooalign{\hfil\raise.07ex\hbox{\switchtolllsize R}% + \hfil\crcr\Orb}}% + }$% +} + +% @textdegree - the normal degrees sign. +% +\def\textdegree{% + \ifmmode ^\circ + \else {\tcfont \char 176}% + \fi} + +% Laurent Siebenmann reports \Orb undefined with: +% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 +% so we'll define it if necessary. +% +\ifx\Orb\thisisundefined +\def\Orb{\mathhexbox20D} +\fi + +% Quotes. +\chardef\quoteleft=`\` +\chardef\quoteright=`\' + +% only change font for tt for correct kerning and to avoid using +% \ecfont unless necessary. +\def\quotedblleft{% + \ifusingtt{{\ecfont\char"10}}{{\char"5C}}% +} + +\def\quotedblright{% + \ifusingtt{{\ecfont\char"11}}{{\char`\"}}% +} + + +\message{page headings,} + +\newskip\titlepagetopglue \titlepagetopglue = 1.5in +\newskip\titlepagebottomglue \titlepagebottomglue = 2pc + +% First the title page. Must do @settitle before @titlepage. +\newif\ifseenauthor +\newif\iffinishedtitlepage + +% @setcontentsaftertitlepage used to do an implicit @contents or +% @shortcontents after @end titlepage, but it is now obsolete. +\def\setcontentsaftertitlepage{% + \errmessage{@setcontentsaftertitlepage has been removed as a Texinfo + command; move your @contents command if you want the contents + after the title page.}}% +\def\setshortcontentsaftertitlepage{% + \errmessage{@setshortcontentsaftertitlepage has been removed as a Texinfo + command; move your @shortcontents and @contents commands if you + want the contents after the title page.}}% + +\parseargdef\shorttitlepage{% + {\headingsoff \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page}\pageone} + +\envdef\titlepage{% + % Open one extra group, as we want to close it in the middle of \Etitlepage. + \begingroup + \parindent=0pt \textfonts + \headingsoff + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % Most title ``pages'' are actually two pages long, with space + % at the top of the second. We don't want the ragged left on the second. + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + \let\page = \oldpage + \page + \null + }% +} + +\def\Etitlepage{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + % It is important to do the page break before ending the group, + % because the headline and footline are only empty inside the group. + % If we use the new definition of \page, we always get a blank page + % after the title page, which we certainly don't want. + \oldpage + \pageone + \endgroup + % +} + +\def\finishtitlepage{% + \vskip4pt \hrule height 2pt width \hsize + \vskip\titlepagebottomglue + \finishedtitlepagetrue +} + +% Settings used for typesetting titles: no hyphenation, no indentation, +% don't worry much about spacing, ragged right. This should be used +% inside a \vbox, and fonts need to be set appropriately first. \par should +% be specified before the end of the \vbox, since a vbox is a group. +% +\def\raggedtitlesettings{% + \rm + \hyphenpenalty=10000 + \parindent=0pt + \tolerance=5000 + \ptexraggedright +} + +% Macros to be used within @titlepage: + +\let\subtitlerm=\rmfont +\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} + +\parseargdef\title{% + \checkenv\titlepage + \vbox{\titlefonts \raggedtitlesettings #1\par}% + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt +} + +\parseargdef\subtitle{% + \checkenv\titlepage + {\subtitlefont \rightline{#1}}% +} + +% @author should come last, but may come many times. +% It can also be used inside @quotation. +% +\parseargdef\author{% + \def\temp{\quotation}% + \ifx\thisenv\temp + \def\quotationauthor{#1}% printed in \Equotation. + \else + \checkenv\titlepage + \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi + {\secfonts\rm \leftline{#1}}% + \fi +} + + +% Set up page headings and footings. + +\let\thispage=\folio + +\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\frenchspacingsetting + \ifchapterpage + \ifodd\pageno\the\oddchapheadline\else\the\evenchapheadline\fi + \else + \ifodd\pageno\the\oddheadline\else\the\evenheadline\fi + \fi}} + +\footline={{\textfonts\rm\frenchspacingsetting + \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}% + \HEADINGShook} +\let\HEADINGShook=\relax + +% Commands to set those variables. +% For example, this is what @headings on does +% @evenheading @thistitle|@thispage|@thischapter +% @oddheading @thischapter|@thispage|@thistitle +% @evenfooting @thisfile|| +% @oddfooting ||@thisfile + + +\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\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\oddchapheadline=\oddheadline} + +\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + +\def\evenfooting{\parsearg\evenfootingxxx} +\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} +\def\evenfootingyyy #1\|#2\|#3\|#4\finish{% +\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddfooting{\parsearg\oddfootingxxx} +\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} +\def\oddfootingyyy #1\|#2\|#3\|#4\finish{% + \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% + % + % Leave some space for the footline. Hopefully ok to assume + % @evenfooting will not be used by itself. + \global\advance\txipageheight by -12pt + \global\advance\vsize by -12pt +} + +\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} + +% @evenheadingmarks top \thischapter <- chapter at the top of a page +% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page +% +% The same set of arguments for: +% +% @oddheadingmarks +% @evenfootingmarks +% @oddfootingmarks +% @everyheadingmarks +% @everyfootingmarks + +% These define \getoddheadingmarks, \getevenheadingmarks, +% \getoddfootingmarks, and \getevenfootingmarks, each to one of +% \gettopheadingmarks, \getbottomheadingmarks. +% +\def\evenheadingmarks{\headingmarks{even}{heading}} +\def\oddheadingmarks{\headingmarks{odd}{heading}} +\def\evenfootingmarks{\headingmarks{even}{footing}} +\def\oddfootingmarks{\headingmarks{odd}{footing}} +\parseargdef\everyheadingmarks{\headingmarks{even}{heading}{#1} + \headingmarks{odd}{heading}{#1} } +\parseargdef\everyfootingmarks{\headingmarks{even}{footing}{#1} + \headingmarks{odd}{footing}{#1} } +% #1 = even/odd, #2 = heading/footing, #3 = top/bottom. +\def\headingmarks#1#2#3 {% + \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname + \global\expandafter\let\csname get#1#2marks\endcsname \temp +} + +\everyheadingmarks bottom +\everyfootingmarks bottom + +% @headings double turns headings on for double-sided printing. +% @headings single turns headings on for single-sided printing. +% @headings off turns them off. +% @headings on same as @headings double, retained for compatibility. +% @headings after turns on double-sided headings after this page. +% @headings doubleafter turns on double-sided headings after this page. +% @headings singleafter turns on single-sided headings after this page. +% By default, they are off at the start of a document, +% and turned `on' after @end titlepage. + +\parseargdef\headings{\csname HEADINGS#1\endcsname} + +\def\headingsoff{% non-global headings elimination + \evenheadline={\hfil}\evenfootline={\hfil}\evenchapheadline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}\oddchapheadline={\hfil}% +} + +\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting + +% Set the page number to 1. +\def\pageone{ + \global\pageno=1 + \global\arabiccount = \pagecount +} + +\let\contentsalignmacro = \chappager + +% \def\HEADINGSon{\HEADINGSdouble} % defined by \CHAPPAGon + +% 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\HEADINGSafter{\let\HEADINGShook=\HEADINGSdouble} +\let\HEADINGSdoubleafter=\HEADINGSafter +\def\HEADINGSdouble{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline={\line{\folio\hfil\thistitle}} +\global\oddchapheadline={\line{\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} + +% For single-sided printing, chapter title goes across top left of page, +% page number on top right. +\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsingle} +\def\HEADINGSsingle{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\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{% +\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 +} + +% Subroutines used in generating headings +% This produces Day Month Year style of output. +% Only define if not already defined, in case a txi-??.tex file has set +% up a different format (e.g., txi-cs.tex does this). +\ifx\today\thisisundefined +\def\today{% + \number\day\space + \ifcase\month + \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr + \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug + \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec + \fi + \space\number\year} +\fi + +% @settitle line... specifies the title of the document, for headings. +% It generates no output of its own. +\def\thistitle{\putwordNoTitle} +\def\settitle{\parsearg{\gdef\thistitle}} + + +\message{tables,} +% Tables -- @table, @ftable, @vtable, @item(x). + +% default indentation of table text +\newdimen\tableindent \tableindent=.8in +% default indentation of @itemize and @enumerate text +\newdimen\itemindent \itemindent=.3in +% margin between end of table item and start of table text. +\newdimen\itemmargin \itemmargin=.1in + +% used internally for \itemindent minus \itemmargin +\newdimen\itemmax + +% Note @table, @ftable, and @vtable define @item, @itemx, etc., with +% these defs. +% They also define \itemindex +% to index the item name in whatever manner is desired (perhaps none). + +\newif\ifitemxneedsnegativevskip + +\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} + +\def\internalBitem{\smallbreak \parsearg\itemzzz} +\def\internalBitemx{\itemxpar \parsearg\itemzzz} + +\def\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemindicate{#1}}% + \itemindex{#1}% + \nobreak % This prevents a break before @itemx. + % + % If the item text does not fit in the space we have, put it on a line + % by itself, and do not allow a page break either before or after that + % line. We do not start a paragraph here because then if the next + % command is, e.g., @kindex, the whatsit would get put into the + % horizontal list on a line by itself, resulting in extra blank space. + \ifdim \wd0>\itemmax + % + % Make this a paragraph so we get the \parskip glue and wrapping, + % but leave it ragged-right. + \begingroup + \advance\leftskip by-\tableindent + \advance\hsize by\tableindent + \advance\rightskip by0pt plus1fil\relax + \leavevmode\unhbox0\par + \endgroup + % + % We're going to be starting a paragraph, but we don't want the + % \parskip glue -- logically it's part of the @item we just started. + \nobreak \vskip-\parskip + % + % Stop a page break at the \parskip glue coming up. However, if + % what follows is an environment such as @example, there will be no + % \parskip glue; then the negative vskip we just inserted would + % cause the example and the item to crash together. So we use this + % bizarre value of 10001 as a signal to \aboveenvbreak to insert + % \parskip glue after all. Section titles are handled this way also. + % + \penalty 10001 + \endgroup + \itemxneedsnegativevskipfalse + \else + % The item text fits into the space. Start a paragraph, so that the + % following text (if any) will end up on the same line. + \noindent + % Do this with kerns and \unhbox so that if there is a footnote in + % the item text, it can migrate to the main vertical list and + % eventually be printed. + \nobreak\kern-\tableindent + \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 + \unhbox0 + \nobreak\kern\dimen0 + \endgroup + \itemxneedsnegativevskiptrue + \fi +} + +\def\item{\errmessage{@item while not in a list environment}} +\def\itemx{\errmessage{@itemx while not in a list environment}} + +% @table, @ftable, @vtable. +\envdef\table{% + \let\itemindex\gobble + \tablecheck{table}% +} +\envdef\ftable{% + \def\itemindex ##1{\doind {fn}{\code{##1}}}% + \tablecheck{ftable}% +} +\envdef\vtable{% + \def\itemindex ##1{\doind {vr}{\code{##1}}}% + \tablecheck{vtable}% +} +\def\tablecheck#1{% + \ifnum \the\catcode`\^^M=\active + \endgroup + \errmessage{This command won't work in this context; perhaps the problem is + that we are \inenvironment\thisenv}% + \def\next{\doignore{#1}}% + \else + \let\next\tablex + \fi + \next +} +\def\tablex#1{% + \def\itemindicate{#1}% + \parsearg\tabley +} +\def\tabley#1{% + {% + \makevalueexpandable + \edef\temp{\noexpand\tablez #1\space\space\space}% + \expandafter + }\temp \endtablez +} +\def\tablez #1 #2 #3 #4\endtablez{% + \aboveenvbreak + \ifnum 0#1>0 \advance \leftskip by #1\mil \fi + \ifnum 0#2>0 \tableindent=#2\mil \fi + \ifnum 0#3>0 \advance \rightskip by #3\mil \fi + \itemmax=\tableindent + \advance \itemmax by -\itemmargin + \advance \leftskip by \tableindent + \exdentamount=\tableindent + \parindent = 0pt + \parskip = \smallskipamount + \ifdim \parskip=0pt \parskip=2pt \fi + \let\item = \internalBitem + \let\itemx = \internalBitemx +} +\def\Etable{\endgraf\afterenvbreak} +\let\Eftable\Etable +\let\Evtable\Etable +\let\Eitemize\Etable +\let\Eenumerate\Etable + +% This is the counter used by @enumerate, which is really @itemize + +\newcount \itemno + +\envdef\itemize{\parsearg\doitemize} + +\def\doitemize#1{% + \aboveenvbreak + \itemmax=\itemindent + \advance\itemmax by -\itemmargin + \advance\leftskip by \itemindent + \exdentamount=\itemindent + \parindent=0pt + \parskip=\smallskipamount + \ifdim\parskip=0pt \parskip=2pt \fi + % + % Try typesetting the item mark so that if the document erroneously says + % something like @itemize @samp (intending @table), there's an error + % right away at the @itemize. It's not the best error message in the + % world, but it's better than leaving it to the @item. This means if + % the user wants an empty mark, they have to say @w{} not just @w. + \def\itemcontents{#1}% + \setbox0 = \hbox{\itemcontents}% + % + % @itemize with no arg is equivalent to @itemize @bullet. + \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi + % + \let\item=\itemizeitem +} + +% Definition of @item while inside @itemize and @enumerate. +% +\def\itemizeitem{% + \advance\itemno by 1 % for enumerations + {\let\par=\endgraf \smallbreak}% reasonable place to break + {% + % If the document has an @itemize directly after a section title, a + % \nobreak will be last on the list, and \sectionheading will have + % done a \vskip-\parskip. In that case, we don't want to zero + % parskip, or the item text will crash with the heading. On the + % other hand, when there is normal text preceding the item (as there + % usually is), we do want to zero parskip, or there would be too much + % space. In that case, we won't have a \nobreak before. At least + % that's the theory. + \ifnum\lastpenalty<10000 \parskip=0in \fi + \noindent + \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% + % + \ifinner\else + \vadjust{\penalty 1200}% not good to break after first line of item. + \fi + % We can be in inner vertical mode in a footnote, although an + % @itemize looks awful there. + }% + \flushcr +} + +% \splitoff TOKENS\endmark defines \first to be the first token in +% TOKENS, and \rest to be the remainder. +% +\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% + +% Allow an optional argument of an uppercase letter, lowercase letter, +% or number, to specify the first label in the enumerated list. No +% argument is the same as `1'. +% +\envparseargdef\enumerate{\enumeratey #1 \endenumeratey} +\def\enumeratey #1 #2\endenumeratey{% + % If we were given no argument, pretend we were given `1'. + \def\thearg{#1}% + \ifx\thearg\empty \def\thearg{1}\fi + % + % Detect if the argument is a single token. If so, it might be a + % letter. Otherwise, the only valid thing it can be is a number. + % (We will always have one token, because of the test we just made. + % This is a good thing, since \splitoff doesn't work given nothing at + % all -- the first parameter is undelimited.) + \expandafter\splitoff\thearg\endmark + \ifx\rest\empty + % Only one token in the argument. It could still be anything. + % A ``lowercase letter'' is one whose \lccode is nonzero. + % An ``uppercase letter'' is one whose \lccode is both nonzero, and + % not equal to itself. + % Otherwise, we assume it's a number. + % + % We need the \relax at the end of the \ifnum lines to stop TeX from + % continuing to look for a . + % + \ifnum\lccode\expandafter`\thearg=0\relax + \numericenumerate % a number (we hope) + \else + % It's a letter. + \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax + \lowercaseenumerate % lowercase letter + \else + \uppercaseenumerate % uppercase letter + \fi + \fi + \else + % Multiple tokens in the argument. We hope it's a number. + \numericenumerate + \fi +} + +% An @enumerate whose labels are integers. The starting integer is +% given in \thearg. +% +\def\numericenumerate{% + \itemno = \thearg + \startenumeration{\the\itemno}% +} + +% The starting (lowercase) letter is in \thearg. +\def\lowercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more lowercase letters in @enumerate; get a bigger + alphabet}% + \fi + \char\lccode\itemno + }% +} + +% The starting (uppercase) letter is in \thearg. +\def\uppercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more uppercase letters in @enumerate; get a bigger + alphabet} + \fi + \char\uccode\itemno + }% +} + +% Call \doitemize, adding a period to the first argument and supplying the +% common last two arguments. Also subtract one from the initial value in +% \itemno, since @item increments \itemno. +% +\def\startenumeration#1{% + \advance\itemno by -1 + \doitemize{#1.}\flushcr +} + + +% @multitable macros + +% Macros used to set up halign preamble: +% +\let\endsetuptable\relax +\def\xendsetuptable{\endsetuptable} +\let\columnfractions\relax +\def\xcolumnfractions{\columnfractions} +\newif\ifsetpercent + +% #1 is the @columnfraction, usually a decimal number like .5, but might +% be just 1. We just use it, whatever it is. +% +\def\pickupwholefraction#1 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% + \setuptable +} + +\newcount\colcount +\def\setuptable#1{% + \def\firstarg{#1}% + \ifx\firstarg\xendsetuptable + \let\go = \relax + \else + \ifx\firstarg\xcolumnfractions + \global\setpercenttrue + \else + \ifsetpercent + \let\go\pickupwholefraction + \else + \global\advance\colcount by 1 + \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a + % separator; typically that is always in the input, anyway. + \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \fi + \fi + \ifx\go\pickupwholefraction + % Put the argument back for the \pickupwholefraction call, so + % we'll always have a period there to be parsed. + \def\go{\pickupwholefraction#1}% + \else + \let\go = \setuptable + \fi% + \fi + \go +} + +% @headitem starts a heading row, which we typeset in bold. Assignments +% have to be global since we are inside the implicit group of an +% alignment entry. \everycr below resets \everytab so we don't have to +% undo it ourselves. +\def\headitemfont{\b}% for people to use in the template row; not changeable +\def\headitem{% + \crcr % must appear first + \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings + \global\everytab={\bf}% can't use \headitemfont since the parsing differs + \the\everytab % for the first item +}% +% +% default for tables with no headings. +\let\headitemcrhook=\relax +% +\def\tab{\checkenv\multitable &\the\everytab}% + +\newtoks\everytab % insert after every tab. +% +\envdef\multitable{% + \vskip\parskip + \startsavinginserts + % + % @item within a multitable starts a normal row. + % We use \def instead of \let so that if one of the multitable entries + % contains an @itemize, we don't choke on the \item (seen as \crcr aka + % \endtemplate) expanding \doitemize. + \def\item{\crcr}% + % + \tolerance=9500 + \hbadness=9500 + \parskip=0pt + \parindent=6pt + \overfullrule=0pt + \global\colcount=0 + % + \everycr = {% + \noalign{% + \global\everytab={}% Reset from possible headitem. + \global\colcount=0 % Reset the column counter. + % + % Check for saved footnotes, etc.: + \checkinserts + % + % Perhaps a \nobreak, then reset: + \headitemcrhook + \global\let\headitemcrhook=\relax + }% + }% + % + \parsearg\domultitable +} +\def\domultitable#1{% + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. + % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup &% + \global\advance\colcount by 1 + \strut + \vtop{% + \advance\hsize by -1\leftskip + % Find the correct column width + \hsize=\expandafter\csname col\the\colcount\endcsname + % + \advance\rightskip by -1\rightskip % Zero leaving only any stretch + \ifnum\colcount=1 + \advance\hsize by\leftskip % Add indent of surrounding text + \else + % 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 + \noindent\ignorespaces##\unskip\strut + }\cr +} +\def\Emultitable{% + \crcr + \egroup % end the \halign + \global\setpercentfalse +} + + +\message{conditionals,} + +% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotlatex, @ifnotplaintext, +% @ifnotxml always succeed. They currently do nothing; we don't +% attempt to check whether the conditionals are properly nested. But we +% have to remember that they are conditionals, so that @end doesn't +% attempt to close an environment group. +% +\def\makecond#1{% + \expandafter\let\csname #1\endcsname = \relax + \expandafter\let\csname iscond.#1\endcsname = 1 +} +\makecond{iftex} +\makecond{ifnotdocbook} +\makecond{ifnothtml} +\makecond{ifnotinfo} +\makecond{ifnotlatex} +\makecond{ifnotplaintext} +\makecond{ifnotxml} + +% Ignore @ignore, @ifhtml, @ifinfo, and the like. +% +\def\direntry{\doignore{direntry}} +\def\documentdescription{\doignore{documentdescription}} +\def\docbook{\doignore{docbook}} +\def\html{\doignore{html}} +\def\ifdocbook{\doignore{ifdocbook}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifinfo{\doignore{ifinfo}} +\def\iflatex{\doignore{iflatex}} +\def\ifnottex{\doignore{ifnottex}} +\def\ifplaintext{\doignore{ifplaintext}} +\def\ifxml{\doignore{ifxml}} +\def\ignore{\doignore{ignore}} +\def\latex{\doignore{latex}} +\def\menu{\doignore{menu}} +\def\xml{\doignore{xml}} + +% Ignore text until a line `@end #1', keeping track of nested conditionals. +% +% A count to remember the depth of nesting. +\newcount\doignorecount + +\def\doignore#1{\begingroup + % Scan in ``verbatim'' mode: + \obeylines + \catcode`\@ = \other + \catcode`\{ = \other + \catcode`\} = \other + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \spaceisspace + % + % Count number of #1's that we've seen. + \doignorecount = 0 + % + % Swallow text until we reach the matching `@end #1'. + \dodoignore{#1}% +} + +{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. + \obeylines % + % + \gdef\dodoignore#1{% + % #1 contains the command name as a string, e.g., `ifinfo'. + % + % Define a command to find the next `@end #1'. + \long\def\doignoretext##1^^M@end #1{% + \doignoretextyyy##1^^M@#1\_STOP_}% + % + % And this command to find another #1 command, at the beginning of a + % line. (Otherwise, we would consider a line `@c @ifset', for + % example, to count as an @ifset for nesting.) + \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% + % + % And now expand that command. + \doignoretext ^^M% + }% +} + +\def\doignoreyyy#1{% + \def\temp{#1}% + \ifx\temp\empty % Nothing found. + \let\next\doignoretextzzz + \else % Found a nested condition, ... + \advance\doignorecount by 1 + \let\next\doignoretextyyy % ..., look for another. + % If we're here, #1 ends with ^^M\ifinfo (for example). + \fi + \next #1% the token \_STOP_ is present just after this macro. +} + +% We have to swallow the remaining "\_STOP_". +% +\def\doignoretextzzz#1{% + \ifnum\doignorecount = 0 % We have just found the outermost @end. + \let\next\enddoignore + \else % Still inside a nested condition. + \advance\doignorecount by -1 + \let\next\doignoretext % Look for the next @end. + \fi + \next +} + +% Finish off ignored text. +{ \obeylines% + % Ignore anything after the last `@end #1'; this matters in verbatim + % environments, where otherwise the newline after an ignored conditional + % would result in a blank line in the output. + \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% +} + + +% @set VAR sets the variable VAR to an empty value. +% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. +% +% Since we want to separate VAR from REST-OF-LINE (which might be +% empty), we can't just use \parsearg; we have to insert a space of our +% own to delimit the rest of the line, and then take it out again if we +% didn't need it. +% We rely on the fact that \parsearg sets \catcode`\ =10. +% +\parseargdef\set{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + {% + \makevalueexpandable + \def\temp{#2}% + \edef\next{\gdef\makecsname{SET#1}}% + \ifx\temp\empty + \next{}% + \else + \setzzz#2\endsetzzz + \fi + }% +} +% Remove the trailing space \setxxx inserted. +\def\setzzz#1 \endsetzzz{\next{#1}} + +% @clear VAR clears (i.e., unsets) the variable VAR. +% +\parseargdef\clear{% + {% + \makevalueexpandable + \global\expandafter\let\csname SET#1\endcsname=\relax + }% +} + +% @value{foo} gets the text saved in variable foo. +\def\value{\begingroup\makevalueexpandable\valuexxx} +\def\valuexxx#1{\expandablevalue{#1}\endgroup} +{ + \catcode`\-=\active \catcode`\_=\active + % + \gdef\makevalueexpandable{% + \let\value = \expandablevalue + % We don't want these characters active, ... + \catcode`\-=\other \catcode`\_=\other + % ..., but we might end up with active ones in the argument if + % we're called from @code, as @code{@value{foo-bar_}}, though. + % So \let them to their normal equivalents. + \let-\normaldash \let_\normalunderscore + } +} + +\def\expandablevalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + {[No value for ``#1'']}% + \message{Variable `#1', used in @value, is not set.}% + \else + \csname SET#1\endcsname + \fi +} + +% Like \expandablevalue, but completely expandable (the \message in the +% definition above operates at the execution level of TeX). Used when +% writing to auxiliary files, due to the expansion that \write does. +% If flag is undefined, pass through an unexpanded @value command: maybe it +% will be set by the time it is read back in. +% +% NB flag names containing - or _ may not work here. +\def\dummyvalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \string\value{#1}% + \else + \csname SET#1\endcsname + \fi +} + +% Used for @value's in index entries to form the sort key: expand the @value +% if possible, otherwise sort late. +\def\indexnofontsvalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + ZZZZZZZ% + \else + \csname SET#1\endcsname + \fi +} + +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +% To get the special treatment we need for `@end ifset,' we call +% \makecond and then redefine. +% +\makecond{ifset} +\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} +\def\doifset#1#2{% + {% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname SET#2\endcsname\relax + #1% If not set, redefine \next. + \fi + \expandafter + }\next +} +\def\ifsetfail{\doignore{ifset}} + +% @ifclear VAR ... @end executes the `...' iff VAR has never been +% defined with @set, or has been undefined with @clear. +% +% The `\else' inside the `\doifset' parameter is a trick to reuse the +% above code: if the variable is not set, do nothing, if it is set, +% then redefine \next to \ifclearfail. +% +\makecond{ifclear} +\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} +\def\ifclearfail{\doignore{ifclear}} + +% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written +% without the @) is in fact defined. We can only feasibly check at the +% TeX level, so something like `mathcode' is going to considered +% defined even though it is not a Texinfo command. +% +\makecond{ifcommanddefined} +\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} +% +\def\doifcmddefined#1#2{{% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname #2\endcsname\relax + #1% If not defined, \let\next as above. + \fi + \expandafter + }\next +} +\def\ifcmddefinedfail{\doignore{ifcommanddefined}} + +% @ifcommandnotdefined CMD ... handled similar to @ifclear above. +\makecond{ifcommandnotdefined} +\def\ifcommandnotdefined{% + \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} +\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} + +% Set the `txicommandconditionals' variable, so documents have a way to +% test if the @ifcommand...defined conditionals are available. +\set txicommandconditionals + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory=\comment + +% @defininfoenclose. +\let\definfoenclose=\comment + + +\message{indexing,} +% Index generation facilities + +% Define \newwrite to be identical to plain tex's \newwrite +% except not \outer, so it can be used within macros and \if's. +\edef\newwrite{\makecsname{ptexnewwrite}} + +% \newindex {IX} defines an index named IX. +% It automatically defines \IXindex such that +% \IXindex ...rest of line... puts an entry in the index IX. +% It also defines \IXindfile to be the number of the output channel for +% the file that accumulates this index. The file's extension is IX. +% +\def\newindex#1{% + \expandafter\chardef\csname#1indfile\endcsname=0 + \expandafter\xdef\csname#1index\endcsname{% % Define @#1index + \noexpand\doindex{#1}} +} + +% @defindex foo == \newindex{foo} +% +\def\defindex{\parsearg\newindex} + +% Define @defcodeindex, like @defindex except put all entries in @code. +% +\def\defcodeindex{\parsearg\newcodeindex} +% +\def\newcodeindex#1{% + \expandafter\chardef\csname#1indfile\endcsname=0 + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}}% +} + +% The default indices: +\newindex{cp}% concepts, +\newcodeindex{fn}% functions, +\newcodeindex{vr}% variables, +\newcodeindex{tp}% types, +\newcodeindex{ky}% keys +\newcodeindex{pg}% and programs. + + +% @synindex foo bar makes index foo feed into index bar. +% Do this instead of @defindex foo if you don't want it as a separate index. +% +% @syncodeindex foo bar similar, but put all entries made for index foo +% inside @code. +% +\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} +\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} + +% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), +% #3 the target index (bar). +\def\dosynindex#1#2#3{% + \requireopenindexfile{#3}% + % redefine \fooindfile: + \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname + \expandafter\let\csname#2indfile\endcsname=\temp + % redefine \fooindex: + \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% +} + +% Define \doindex, the driver for all index macros. +% Argument #1 is generated by the calling \fooindex macro, +% and it is the two-letter name of the index. + +\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx} +\def\doindexxxx #1{\doind{\indexname}{#1}} + +% like the previous two, but they put @code around the argument. +\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} +\def\docodeindexxxx #1{\docind{\indexname}{#1}} + + +% \definedummyword defines \#1 as \string\#1\space, thus effectively +% preventing its expansion. This is used only for control words, +% not control letters, because the \space would be incorrect for +% control characters, but is needed to separate the control word +% from whatever follows. +% +% These can be used both for control words that take an argument and +% those that do not. If it is followed by {arg} in the input, then +% that will dutifully get written to the index (or wherever). +% +% For control letters, we have \definedummyletter, which omits the +% space. +% +\def\definedummyword #1{\def#1{\string#1\space}}% +\def\definedummyletter#1{\def#1{\string#1}}% + +% Used for the aux, toc and index files to prevent expansion of Texinfo +% commands. Most of the commands are controlled through the +% \ifdummies conditional. +% +\def\atdummies{% + \dummiestrue + % + \definedummyletter\@% + \definedummyletter\ % + \definedummyletter\{% + \definedummyletter\}% + \definedummyletter\&% + % + \definedummyletter\_% + \definedummyletter\-% + % + \definedummyword\subentry + % + % We want to disable all macros so that they are not expanded by \write. + \let\commondummyword\definedummyword + \macrolist + \let\value\dummyvalue + % + \turnoffactive +} + +\newif\ifdummies +\newif\ifindexnofonts + +\def\commondummyletter#1{% + \expandafter\let\csname\string#1:impl\endcsname#1% + \edef#1{% + \noexpand\ifindexnofonts + % empty expansion + \noexpand\else + \noexpand\ifdummies\string#1% + \noexpand\else + \noexpand\jumptwofi % dispose of the \fi + \expandafter\noexpand\csname\string#1:impl\endcsname + \noexpand\fi + \noexpand\fi}% +} + +\def\commondummyaccent#1{% + \expandafter\let\csname\string#1:impl\endcsname#1% + \edef#1{% + \noexpand\ifindexnofonts + \noexpand\expandafter % dispose of \else ... \fi + \noexpand\asis + \noexpand\else + \noexpand\ifdummies\string#1% + \noexpand\else + \noexpand\jumptwofi % dispose of the \fi + \expandafter\noexpand\csname\string#1:impl\endcsname + \noexpand\fi + \noexpand\fi}% +} + +% Like \commondummyaccent but add a \space at the end of the dummy expansion +% #2 is the expansion used for \indexnofonts. #2 is always followed by +% \asis to remove a pair of following braces. +\def\commondummyword#1#2{% + \expandafter\let\csname\string#1:impl\endcsname#1% + \expandafter\def\csname\string#1:ixnf\endcsname{#2\asis}% + \edef#1{% + \noexpand\ifindexnofonts + \noexpand\expandafter % dispose of \else ... \fi + \expandafter\noexpand\csname\string#1:ixnf\endcsname + \noexpand\else + \noexpand\ifdummies\string#1\space + \noexpand\else + \noexpand\jumptwofi % dispose of the \fi \fi + \expandafter\noexpand\csname\string#1:impl\endcsname + \noexpand\fi + \noexpand\fi}% +} +\def\jumptwofi#1\fi\fi{\fi\fi#1} + +% For \atdummies and \indexnofonts. \atdummies sets +% \dummiestrue and \indexnofonts sets \indexnofontstrue. +\def\definedummies{ + % @-sign is always an escape character when reading auxiliary files + \escapechar = `\@ + % + \commondummyletter\!% + \commondummyaccent\"% + \commondummyaccent\'% + \commondummyletter\*% + \commondummyaccent\,% + \commondummyletter\.% + \commondummyletter\/% + \commondummyletter\:% + \commondummyaccent\=% + \commondummyletter\?% + \commondummyaccent\^% + \commondummyaccent\`% + \commondummyaccent\~% + % + % Control letters and accents. + \commondummyword\u {}% + \commondummyword\v {}% + \commondummyword\H {}% + \commondummyword\dotaccent {}% + \commondummyword\ogonek {}% + \commondummyword\ringaccent {}% + \commondummyword\tieaccent {}% + \commondummyword\ubaraccent {}% + \commondummyword\udotaccent {}% + \commondummyword\dotless {}% + % + % Texinfo font commands. + \commondummyword\b {}% + \commondummyword\i {}% + \commondummyword\r {}% + \commondummyword\sansserif {}% + \commondummyword\sc {}% + \commondummyword\slanted {}% + \commondummyword\t {}% + % + % Commands that take arguments. + \commondummyword\abbr {}% + \commondummyword\acronym {}% + \commondummyword\anchor {}% + \commondummyword\cite {}% + \commondummyword\code {}% + \commondummyword\command {}% + \commondummyword\dfn {}% + \commondummyword\dmn {}% + \commondummyword\email {}% + \commondummyword\emph {}% + \commondummyword\env {}% + \commondummyword\file {}% + \commondummyword\image {}% + \commondummyword\indicateurl{}% + \commondummyword\inforef {}% + \commondummyword\kbd {}% + \commondummyword\key {}% + \commondummyword\link {}% + \commondummyword\math {}% + \commondummyword\option {}% + \commondummyword\pxref {}% + \commondummyword\ref {}% + \commondummyword\samp {}% + \commondummyword\strong {}% + \commondummyword\tie {}% + \commondummyword\U {}% + \commondummyword\uref {}% + \commondummyword\url {}% + \commondummyword\var {}% + \commondummyword\verb {}% + \commondummyword\w {}% + \commondummyword\xref {}% + % + \commondummyword\AA {AA}% + \commondummyword\AE {AE}% + \commondummyword\DH {DZZ}% + \commondummyword\L {L}% + \commondummyword\O {O}% + \commondummyword\OE {OE}% + \commondummyword\TH {TH}% + \commondummyword\aa {aa}% + \commondummyword\ae {ae}% + \commondummyword\dh {dzz}% + \commondummyword\exclamdown {!}% + \commondummyword\l {l}% + \commondummyword\o {o}% + \commondummyword\oe {oe}% + \commondummyword\ordf {a}% + \commondummyword\ordm {o}% + \commondummyword\questiondown {?}% + \commondummyword\ss {ss}% + \commondummyword\th {th}% + % + \commondummyword\LaTeX {LaTeX}% + \commondummyword\TeX {TeX}% + % + % Assorted special characters. + \commondummyword\ampchar {\normalamp}% + \commondummyword\atchar {\@}% + \commondummyword\arrow {->}% + \commondummyword\backslashchar {\realbackslash}% + \commondummyword\bullet {bullet}% + \commondummyword\comma {,}% + \commondummyword\copyright {copyright}% + \commondummyword\dots {...}% + \commondummyword\enddots {...}% + \commondummyword\entrybreak {}% + \commondummyword\equiv {===}% + \commondummyword\error {error}% + \commondummyword\euro {euro}% + \commondummyword\expansion {==>}% + \commondummyword\geq {>=}% + \commondummyword\guillemetleft {<<}% + \commondummyword\guillemetright {>>}% + \commondummyword\guilsinglleft {<}% + \commondummyword\guilsinglright {>}% + \commondummyword\lbracechar {\{}% + \commondummyword\leq {<=}% + \commondummyword\mathopsup {sup}% + \commondummyword\minus {-}% + \commondummyword\pounds {pounds}% + \commondummyword\point {.}% + \commondummyword\print {-|}% + \commondummyword\quotedblbase {"}% + \commondummyword\quotedblleft {"}% + \commondummyword\quotedblright {"}% + \commondummyword\quoteleft {`}% + \commondummyword\quoteright {'}% + \commondummyword\quotesinglbase {,}% + \commondummyword\rbracechar {\}}% + \commondummyword\registeredsymbol {R}% + \commondummyword\result {=>}% + \commondummyword\sub {}% + \commondummyword\sup {}% + \commondummyword\textdegree {o}% +} + +\let\indexlbrace\relax +\let\indexrbrace\relax +\let\indexatchar\relax +\let\indexbackslash\relax + +{\catcode`\@=0 +\catcode`\\=13 + @gdef@backslashdisappear{@def\{}} +} + +{ +\catcode`\<=13 +\catcode`\-=13 +\catcode`\`=13 + \gdef\indexnonalnumdisappear{% + \ifflagclear{txiindexlquoteignore}{}{% + % @set txiindexlquoteignore makes us ignore left quotes in the sort term. + % (Introduced for FSFS 2nd ed.) + \let`=\empty + }% + % + \ifflagclear{txiindexbackslashignore}{}{% + \backslashdisappear + }% + \ifflagclear{txiindexhyphenignore}{}{% + \def-{}% + }% + \ifflagclear{txiindexlessthanignore}{}{% + \def<{}% + }% + \ifflagclear{txiindexatsignignore}{}{% + \def\@{}% + }% + } + + \gdef\indexnonalnumreappear{% + \let-\normaldash + \let<\normalless + } +} + + +% \indexnofonts is used when outputting the strings to sort the index +% by, and when constructing control sequence names. It eliminates all +% control sequences and just writes whatever the best ASCII sort string +% would be for a given command (usually its argument). +% +\def\indexnofonts{% + \indexnofontstrue + % + \def\ { }% + \def\@{@}% + \def\_{\normalunderscore}% + \def\-{}% @- shouldn't affect sorting + % + \uccode`\1=`\{ \uppercase{\def\{{1}}% + \uccode`\1=`\} \uppercase{\def\}{1}}% + \def\lbracechar##1{\{}% + \def\rbracechar##1{\}}% + % + % + % 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. + % + % Since macro invocations are followed by braces, we can just redefine them + % to take a single TeX argument. The case of a macro invocation that + % goes to end-of-line is not handled. + % + \def\commondummyword##1{\let##1\asis}% + \macrolist + \let\value\indexnofontsvalue +} + + + + +% #1 is the index name, #2 is the entry text. +\def\doind#1#2{% + \iflinks + {% + % + \requireopenindexfile{#1}% + \edef\writeto{\csname#1indfile\endcsname}% + % + \def\indextext{#2}% + \safewhatsit\doindwrite + }% + \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 + \expandafter\newwrite \csname#1indfile\endcsname + \edef\suffix{#1}% + % A .fls suffix would conflict with the file extension for the output + % of -recorder, so use .f1s instead. + \ifx\suffix\indexisfl\def\suffix{f1}\fi + % Open the file + \immediate\openout\csname#1indfile\endcsname \jobname.\suffix + % Using \immediate above here prevents an object entering into the current + % box, which could confound checks such as those in \safewhatsit for + % preceding skips. + \typeout{Writing index file \jobname.\suffix}% +\fi} +\def\indexisfl{fl} + +% Definition for writing index entry sort key. +{ +\catcode`\-=13 +\gdef\indexwritesortas{% + \begingroup + \indexnonalnumreappear + \indexwritesortasxxx} +\gdef\indexwritesortasxxx#1{% + \xdef\indexsortkey{#1}\endgroup} +} + +\def\indexwriteseealso#1{ + \gdef\pagenumbertext{\string\seealso{#1}}% +} +\def\indexwriteseeentry#1{ + \gdef\pagenumbertext{\string\seeentry{#1}}% +} + +% The default definitions +\def\sortas#1{}% +\def\seealso#1{\i{\putwordSeeAlso}\ #1}% for sorted index file only +\def\putwordSeeAlso{See also} +\def\seeentry#1{\i{\putwordSee}\ #1}% for sorted index file only + + +% Given index entry text like "aaa @subentry bbb @sortas{ZZZ}": +% * Set \bracedtext to "{aaa}{bbb}" +% * Set \fullindexsortkey to "aaa @subentry ZZZ" +% * If @seealso occurs, set \pagenumbertext +% +\def\splitindexentry#1{% + \gdef\fullindexsortkey{}% + \xdef\bracedtext{}% + \def\sep{}% + \def\seealso##1{}% + \def\seeentry##1{}% + \expandafter\doindexsegment#1\subentry\finish\subentry +} + +% append the results from the next segment +\def\doindexsegment#1\subentry{% + \def\segment{#1}% + \ifx\segment\isfinish + \else + % + % Fully expand the segment, throwing away any @sortas directives, and + % trim spaces. + \edef\trimmed{\segment}% + \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% + \ifincodeindex + \edef\trimmed{\noexpand\code{\trimmed}}% + \fi + % + \xdef\bracedtext{\bracedtext{\trimmed}}% + % + % Get the string to sort by. Process the segment with all + % font commands turned off. + \bgroup + \let\sortas\indexwritesortas + \let\seealso\indexwriteseealso + \let\seeentry\indexwriteseeentry + \indexnofonts + % The braces around the commands are recognized by texindex. + \def\lbracechar{{\string\indexlbrace}}% + \def\rbracechar{{\string\indexrbrace}}% + \let\{=\lbracechar + \let\}=\rbracechar + \def\@{{\string\indexatchar}}% + \def\atchar##1{\@}% + \def\backslashchar{{\string\indexbackslash}}% + \uccode`\~=`\\ \uppercase{\let~\backslashchar}% + % + \let\indexsortkey\empty + \global\let\pagenumbertext\empty + % Execute the segment and throw away the typeset output. This executes + % any @sortas or @seealso commands in this segment. + \setbox\dummybox = \hbox{\segment}% + \ifx\indexsortkey\empty{% + \indexnonalnumdisappear + \xdef\trimmed{\segment}% + \xdef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% + \xdef\indexsortkey{\trimmed}% + \ifx\indexsortkey\empty + \message{Empty index sort key near line \the\inputlineno}% + \xdef\indexsortkey{ }% + \fi + }\fi + % + % Append to \fullindexsortkey. + \edef\tmp{\gdef\noexpand\fullindexsortkey{% + \fullindexsortkey\sep\indexsortkey}}% + \tmp + \egroup + \def\sep{\subentry}% + % + \expandafter\doindexsegment + \fi +} +\def\isfinish{\finish}% +\newbox\dummybox % used above + +\let\subentry\relax + +% Use \ instead of @ in index files. To support old texi2dvi and texindex. +% This works without changing the escape character used in the toc or aux +% files because the index entries are fully expanded here, and \string uses +% the current value of \escapechar. +\def\escapeisbackslash{\escapechar=`\\} + +% Uncomment to use \ in index files by default. Old texi2dvi (before 2019) +% didn't support @ as the escape character (as it checked for "\entry" in +% the files, and not "@entry"). +% In the future we can remove this flag and simplify the code for +% index files and backslashes, once the support is no longer likely to be +% useful. +% +% \set txiindexescapeisbackslash + +% Write the entry in \indextext to the index file. +% + +\newif\ifincodeindex +\def\doindwrite{\incodeindexfalse\doindwritex} +\def\docindwrite{\incodeindextrue\doindwritex} + +\def\doindwritex{% + \maybemarginindex + % + \atdummies + % + \ifflagclear{txiindexescapeisbackslash}{}{\escapeisbackslash}% + % + % For texindex which always views { and } as separators. + \def\{{\lbracechar{}}% + \def\}{\rbracechar{}}% + \uccode`\~=`\\ \uppercase{\def~{\backslashchar{}}}% + % + % Split the entry into primary entry and any subentries, and get the index + % sort key. + \splitindexentry\indextext + % + % Set up the complete index entry, with both the sort key and + % the original text, including any font commands. We write + % three arguments to \entry to the .?? file (four in the + % subentry case), texindex reduces to two when writing the .??s + % sorted result. + % + \edef\temp{% + \write\writeto{% + \string\entry{\fullindexsortkey}% + {\ifx\pagenumbertext\empty\noexpand\folio\else\pagenumbertext\fi}% + \bracedtext}% + }% + \temp +} + +% Put the index entry in the margin if desired (undocumented). +\def\maybemarginindex{% + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \relax\indextext}}% + \fi +} +\let\SETmarginindex=\relax + + +% Take care of unwanted page breaks/skips around a whatsit: +% +% If a skip is the last thing on the list now, preserve it +% by backing up by \lastskip, doing the \write, then inserting +% the skip again. Otherwise, the whatsit generated by the +% \write or \pdfdest will make \lastskip zero. The result is that +% sequences like this: +% @end defun +% @tindex whatever +% @defun ... +% will have extra space inserted, because the \medbreak in the +% start of the @defun won't see the skip inserted by the @end of +% the previous defun. +% +% But don't do any of this if we're not in vertical mode. We +% don't want to do a \vskip and prematurely end a paragraph. +% +% Avoid page breaks due to these extra skips, too. +% +% But wait, there is a catch there: +% We'll have to check whether \lastskip is zero skip. \ifdim is not +% sufficient for this purpose, as it ignores stretch and shrink parts +% of the skip. The only way seems to be to check the textual +% representation of the skip. +% +% The following is almost like \def\zeroskipmacro{0.0pt} except that +% the ``p'' and ``t'' characters have catcode \other, not 11 (letter). +% +\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} +% +\newskip\whatsitskip +\newcount\whatsitpenalty +% +% ..., ready, GO: +% +\def\safewhatsit#1{\ifhmode + #1% + \else + % \lastskip and \lastpenalty cannot both be nonzero simultaneously. + \whatsitskip = \lastskip + \edef\lastskipmacro{\the\lastskip}% + \whatsitpenalty = \lastpenalty + % + % If \lastskip is nonzero, that means the last item was a + % skip. And since a skip is discardable, that means this + % -\whatsitskip glue we're inserting is preceded by a + % non-discardable item, therefore it is not a potential + % breakpoint, therefore no \nobreak needed. + \ifx\lastskipmacro\zeroskipmacro + \else + \vskip-\whatsitskip + \fi + % + #1% + % + \ifx\lastskipmacro\zeroskipmacro + % If \lastskip was zero, perhaps the last item was a penalty, and + % perhaps it was >=10000, e.g., a \nobreak. In that case, we want + % to re-insert the same penalty (values >10000 are used for various + % signals); since we just inserted a non-discardable item, any + % following glue (such as a \parskip) would be a breakpoint. For example: + % @deffn deffn-whatever + % @vindex index-whatever + % Description. + % would allow a break between the index-whatever whatsit + % and the "Description." paragraph. + \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi + \else + % On the other hand, if we had a nonzero \lastskip, + % this make-up glue would be preceded by a non-discardable item + % (the whatsit from the \write), so we must insert a \nobreak. + \nobreak\vskip\whatsitskip + \fi +\fi} + +% The index entry written in the file actually looks like +% \entry {sortstring}{page}{topic} +% or +% \entry {sortstring}{page}{topic}{subtopic} +% The texindex program reads in these files and writes files +% containing these kinds of lines: +% \initial {c} +% before the first topic whose initial is c +% \entry {topic}{pagelist} +% for a topic that is used without subtopics +% \primary {topic} +% \entry {topic}{} +% for the beginning of a topic that is used with subtopics +% \secondary {subtopic}{pagelist} +% for each subtopic. +% \secondary {subtopic}{} +% for a subtopic with sub-subtopics +% \tertiary {subtopic}{subsubtopic}{pagelist} +% for each sub-subtopic. + +% Define the user-accessible indexing commands +% @findex, @vindex, @kindex, @cindex. + +\def\findex {\fnindex} +\def\kindex {\kyindex} +\def\cindex {\cpindex} +\def\vindex {\vrindex} +\def\tindex {\tpindex} +\def\pindex {\pgindex} + +% Define the macros used in formatting output of the sorted index material. + +% @printindex causes a particular index (the ??s file) to get printed. +% It does not print any chapter heading (usually an @unnumbered). +% +\parseargdef\printindex{\begingroup + \dobreak \chapheadingskip{10000}% + % + \smallfonts \rm + \tolerance = 9500 + \plainfrenchspacing + \everypar = {}% don't want the \kern\-parindent from indentation suppression. + \let\entry\indexentry + \ifxetex\xetexpreauxfile\fi + % + % See comment in \requireopenindexfile. + \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi + % + % See if the index file exists and is nonempty. + \openin 1 \jobname.\indexname s + \ifeof 1 + % \enddoublecolumns gets confused if there is no text in the index, + % and it loses the chapter title and the aux file entries for the + % index. The easiest way to prevent this problem is to make sure + % there is some text. + \putwordIndexNonexistent + \typeout{No file \jobname.\indexname s.}% + \else + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so + % it can discover if there is anything in it. + \read 1 to \thisline + \ifeof 1 + \putwordIndexIsEmpty + \else + \expandafter\printindexzz\thisline\relax\relax\finish% + \fi + \fi + \closein 1 + \ifxetex\xetexpostauxfile\fi +\endgroup} + +% Checked in @bye +\let\byeerror\relax + +% If the index file starts with a backslash, forgo reading the index +% file altogether. If somebody upgrades texinfo.tex they may still have +% old index files using \ as the escape character. Reading this would +% at best lead to typesetting garbage, at worst a TeX syntax error. +\def\printindexzz#1#2\finish{% + \ifflagclear{txiindexescapeisbackslash}{% + \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1 + \ifflagclear{txiskipindexfileswithbackslash}{% + % Delay the error message until the very end to give a chance + % for the whole index to be output as input for texindex. + \global\def\byeerror{% +ERROR: A sorted index file in an obsolete format was skipped. +To fix this problem, please upgrade your version of 'texi2dvi' +or 'texi2pdf' to that at . +If you are using an old version of 'texindex' (part of the Texinfo +distribution), you may also need to upgrade to a newer version (at least 6.0). +You may be able to typeset the index if you run +'texindex \jobname.\indexname' yourself. +You could also try setting the 'txiindexescapeisbackslash' flag by +running a command like +'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'. If you do +this, Texinfo will try to use index files in the old format. +If you continue to have problems, deleting the index files and starting again +might help (with 'rm \jobname.?? \jobname.??s')% +}% + }{% + (Skipped sorted index file in obsolete format) + }% + \else + \begindoublecolumns + \ifxetex\xetexpreauxfile\fi + \input \jobname.\indexname s + \ifxetex\xetexpostauxfile\fi + \enddoublecolumns + \fi + }{% + \begindoublecolumns + \catcode`\\=0\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 + \ifxetex\xetexpreauxfile\fi + \input \jobname.\indexname s + \ifxetex\xetexpostauxfile\fi + \enddoublecolumns + }% +} + +\def\indexentry#1#2{% + \let\entrypagetarget\empty + \ifpdforxetex + % only link the index text to the page if no comma appears in the + % list of pages, i.e. there is only one page + \checkpagelistcomma{#2}\pagelistcomma + \expandafter\ifcase\pagelistcomma + \def\entrypagetarget{#2}% + \fi + \fi% + \entryinternal{#1}{#2}% +} + +\def\checkpagelistcomma#1#2{% + \checkpagelistcommaxx#2#1,\finish +} +\def\checkpagelistcommaxx#1#2,#3\finish{% + \def\tmp{#3}% + \ifx\tmp\empty + \def#1{0\relax} + \else + \def#1{1\relax} + \fi +} + + +% These macros are used by the sorted index file itself. +% Change them to control the appearance of the index. + +{\catcode`\/=13 \catcode`\-=13 \catcode`\^=13 \catcode`\~=13 \catcode`\_=13 +\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 +\catcode`\$=3 +\gdef\initialglyphs{% + % special control sequences used in the index sort key + \let\indexlbrace\{% + \let\indexrbrace\}% + \let\indexatchar\@% + \def\indexbackslash{\math{\backslash}}% + % + % Some changes for non-alphabetic characters. Using the glyphs from the + % math fonts looks more consistent than the typewriter font used elsewhere + % for these characters. + \uccode`\~=`\\ \uppercase{\def~{\math{\backslash}}} + % + % In case @\ is used for backslash + \uppercase{\let\\=~} + % Can't get bold backslash so don't use bold forward slash + \catcode`\/=13 + \def/{{\secrmnotbold \normalslash}}% + \def-{{\normaldash\normaldash}}% en dash `--' + \def^{{\chapbf \normalcaret}}% + \def~{{\chapbf \normaltilde}}% + \def\_{% + \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }% + \def|{$\vert$}% + \def<{$\less$}% + \def>{$\gtr$}% + \def+{$\normalplus$}% +}} + +\def\initial{% + \bgroup + \initialx +} + +\def\initialx#1{% + % Remove any glue we may have, we'll be inserting our own. + \removelastskip + % + % We like breaks before the index initials, so insert a bonus. + % The glue before the bonus allows a little bit of space at the + % bottom of a column to reduce an increase in inter-line spacing. + \nobreak + \vskip 0pt plus 5\baselineskip + \penalty -300 + \vskip 0pt plus -5\baselineskip + % + % Typeset the initial. Making this add up to a whole number of + % baselineskips increases the chance of the dots lining up from column + % to column. It still won't often be perfect, because of the stretch + % we need before each entry, but it's better. + % + % No shrink because it confuses \balancecolumns. + \vskip 1.67\baselineskip plus 1\baselineskip + \doindexinitialentry{#1}% + \initialglyphs + \leftline{% + \secfonts \kern-0.05em \secbf #1}% + % \secfonts is inside the argument of \leftline so that the change of + % \baselineskip will not affect any glue inserted before the vbox that + % \leftline creates. + % Do our best not to break after the initial. + \nobreak + \vskip .33\baselineskip plus .1\baselineskip + \egroup % \initialglyphs +} + +\def\doindexinitialentry#1{% + \ifpdforxetex + \global\advance\idxinitialno by 1 + \def\indexlbrace{\{}% + \def\indexrbrace{\}}% + \def\indexbackslash{\realbackslash}% + \def\indexatchar{\@}% + \writetocentry{idxinitial}{\asis #1}{IDX\the\idxinitialno}% + % The @asis removes a pair of braces around e.g. {@indexatchar} that + % are output by texindex. + % + \pdfmkdest{idx.\asis #1.IDX\the\idxinitialno}% + \fi +} + +% No listing in TOC +\def\idxinitialentry#1#2#3#4{} + +% For index initials. +\newcount\idxinitialno \idxinitialno=1 + + +\newdimen\entryrightmargin +\entryrightmargin=0pt + +% amount to indent subsequent lines in an entry when it spans more than +% one line. +\newdimen\entrycontskip +\entrycontskip=1em + +% for PDF output, whether to make the text of the entry a link to the section. +% set for @contents and @shortcontents. +\newif\iflinkentrytext + +% \entryinternal typesets a paragraph consisting of the text (#1), dot +% leaders, and then page number (#2) flushed to the right margin. It is +% used for index and table of contents entries. The paragraph is indented +% by \leftskip. +% For PDF output, if \linkentrytexttrue and \tocnodetarget is set, link text +% to the referenced node. Else if \entrypagetarget is set, link text to the +% page. +\def\entryinternal{% + \begingroup + % + % Start a new paragraph if necessary, so our assignments below can't + % affect previous text. + \par + % + % No extra space above this paragraph. + \parskip = 0in + % + % When reading the text of entry, convert explicit line breaks + % from @* into spaces. The user might give these in long section + % titles, for instance. + \def\*{\unskip\space\ignorespaces}% + \def\entrybreak{\hfil\break}% An undocumented command + % + % Swallow the left brace of the text (first parameter): + \afterassignment\doentry + \let\temp = +} +\def\entrybreak{\unskip\space\ignorespaces}% +\def\doentry{% + % Save the text of the entry in \boxA + \global\setbox\boxA=\hbox\bgroup + \bgroup % Instead of the swallowed brace. + \noindent + \aftergroup\finishentry + % And now comes the text of the entry. + % Not absorbing as a macro argument reduces the chance of problems + % with catcodes occurring. +} +{\catcode`\@=11 +% #1 is the page number +\gdef\finishentry#1{% + \egroup % end \boxA + \dimen@ = \wd\boxA % Length of text of entry + % add any leaders and page number to \boxA. + \global\setbox\boxA=\hbox\bgroup + \ifpdforxetex + \iflinkentrytext + \ifx\tocnodetarget\empty + \unhbox\boxA + \else + \startxreflink{\tocnodetarget}{}% + \unhbox\boxA + \endlink + \fi + \else + \ifx\entrypagetarget\empty + \unhbox\boxA + \else + \pdflinkpage{\entrypagetarget}{\unhbox\boxA}% + \fi + \fi + \else + \unhbox\boxA + \fi + % + % Get the width of the page numbers, and only use + % leaders if they are present. + \global\setbox\boxB = \hbox{#1}% + \ifdim\wd\boxB = 0pt + \null\nobreak\hfill\ % + \else + % + \null\nobreak\indexdotfill % Have leaders before the page number. + % + \hskip\skip\thinshrinkable + \ifpdforxetex + \ifx\tocnodetarget\empty + \pdfgettoks#1.% + \the\toksA + \else + % Should just be a single page number in toc + \startxreflink{\tocnodetarget}{}% + #1\endlink + \fi + \else + #1% + \fi + \fi + \egroup % end \boxA + % + % now output + \ifdim\wd\boxB = 0pt + \noindent\unhbox\boxA\par + \nobreak + \else\bgroup + % We want the text of the entries to be aligned to the left, and the + % page numbers to be aligned to the right. + % + \parindent = 0pt + \advance\leftskip by 0pt plus 1fil + \advance\leftskip by 0pt plus -1fill + \rightskip = 0pt plus -1fil + \advance\rightskip by 0pt plus 1fill + % Cause last line, which could consist of page numbers on their own + % if the list of page numbers is long, to be aligned to the right. + \parfillskip=0pt plus -1fill + % + \advance\rightskip by \entryrightmargin + % + \dimen@ii = \hsize + \advance\dimen@ii by -1\leftskip + \advance\dimen@ii by -1\entryrightmargin + \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line + \ifdim\dimen@ > 0.8\dimen@ii % due to long index text + \advance\leftskip by 0pt plus 1fill % ragged right + % + % Indent all lines but the first one. + \advance\leftskip by \entrycontskip + \advance\parindent by -\entrycontskip + \fi\fi + \indent % start paragraph + \unhbox\boxA + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % Word spacing - no stretch + \spaceskip=\fontdimen2\font minus \fontdimen4\font + % + \linepenalty=1000 % Discourage line breaks. + \hyphenpenalty=5000 % Discourage hyphenation. + % + \par % format the paragraph + \egroup % The \vbox + \fi + \endgroup +}} + +\newskip\thinshrinkable +\skip\thinshrinkable=.15em minus .15em + +% Like plain.tex's \dotfill, except uses up at least 0.5 em. +% The filll stretch here overpowers both the fil and fill stretch to push +% the page number to the right. +\def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 0.5em plus 1filll} + +\def\primary #1{\line{#1\hfil}} + +\def\secondary{\indententry{0.5cm}} +\def\tertiary{\indententry{1cm}} + +\def\indententry#1#2#3{% + \bgroup + \leftskip=#1 + \entry{#2}{#3}% + \egroup +} + +% Define two-column mode, which we use to typeset indexes. +% Adapted from the TeXbook, page 416, which is to say, +% the manmac.tex format used to print the TeXbook itself. +\catcode`\@=11 % private names + +\newbox\partialpage +\newdimen\doublecolumnhsize + +\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % If not much space left on page, start a new page. + \ifdim\pagetotal>0.8\vsize\vfill\eject\fi + % + % Grab any single-column material above us. + \output = {% + \savetopmark + % + \global\setbox\partialpage = \vbox{% + % Unvbox the main output page. + \unvbox\PAGE + \kern-\topskip \kern\baselineskip + }% + }% + \eject % run that output routine to set \partialpage + % + % Use the double-column output routine for subsequent pages. + \output = {\doublecolumnout}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the + % execution time, so we may as well do it in one place. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant + % below is chosen so that the gutter has the same value (well, +-<1pt) + % as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumnhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) + % been clobbered. + % + \doublecolumnhsize = \hsize + \advance\doublecolumnhsize by -.04154\hsize + \divide\doublecolumnhsize by 2 + \hsize = \doublecolumnhsize + % + % Get the available space for the double columns -- the normal + % (undoubled) page height minus any material left over from the + % previous page. + \advance\vsize by -\ht\partialpage + \vsize = 2\vsize + % + % For the benefit of balancing columns + \advance\baselineskip by 0pt plus 0.5pt +} + +% The double-column output routine for all double-column pages except +% the last, which is done by \balancecolumns. +% +\def\doublecolumnout{% + % + \savetopmark + \splittopskip=\topskip \splitmaxdepth=\maxdepth + \dimen@ = \vsize + \divide\dimen@ by 2 + % + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit\PAGE to\dimen@ \setbox2=\vsplit\PAGE to\dimen@ + \global\advance\vsize by 2\ht\partialpage + \onepageout\pagesofar % empty except for the first time we are called + \unvbox\PAGE + \penalty\outputpenalty +} +% +% Re-output the contents of the output page -- any previous material, +% followed by the two boxes we just split, in box0 and box2. +\def\pagesofar{% + \unvbox\partialpage + % + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize + \hbox to\txipagewidth{\box0\hfil\box2}% +} + + +% Finished with double columns. +\def\enddoublecolumns{% + % The following penalty ensures that the page builder is exercised + % _before_ we change the output routine. This is necessary in the + % following situation: + % + % The last section of the index consists only of a single entry. + % Before this section, \pagetotal is less than \pagegoal, so no + % break occurs before the last section starts. However, the last + % section, consisting of \initial and the single \entry, does not + % fit on the page and has to be broken off. Without the following + % penalty the page builder will not be exercised until \eject + % below, and by that time we'll already have changed the output + % routine to the \balancecolumns version, so the next-to-last + % double-column page will be processed with \balancecolumns, which + % is wrong: The two columns will go to the main vertical list, with + % the broken-off section in the recent contributions. As soon as + % the output routine finishes, TeX starts reconsidering the page + % break. The two columns and the broken-off section both fit on the + % page, because the two columns now take up only half of the page + % goal. When TeX sees \eject from below which follows the final + % section, it invokes the new output routine that we've set after + % \balancecolumns below; \onepageout will try to fit the two columns + % and the final section into the vbox of \txipageheight (see + % \pagebody), causing an overfull box. + % + % Note that glue won't work here, because glue does not exercise the + % page builder, unlike penalties (see The TeXbook, pp. 280-281). + \penalty0 + % + \output = {% + % Split the last of the double-column material. + \savetopmark + \balancecolumns + }% + \eject % call the \output just set + \ifdim\pagetotal=0pt + % Having called \balancecolumns once, we do not + % want to call it again. Therefore, reset \output to its normal + % definition right away. + \global\output=\expandafter{\the\defaultoutput} + % + \endgroup % started in \begindoublecolumns + % Leave the double-column material on the current page, no automatic + % page break. + \box\balancedcolumns + % + % \pagegoal was set to the doubled \vsize above, since we restarted + % the current page. We're now back to normal single-column + % typesetting, so reset \pagegoal to the normal \vsize. + \global\vsize = \txipageheight % + \pagegoal = \txipageheight % + \else + % We had some left-over material. This might happen when \doublecolumnout + % is called in \balancecolumns. Try again. + \expandafter\enddoublecolumns + \fi +} +\newbox\balancedcolumns +\setbox\balancedcolumns=\vbox{shouldnt see this}% +% +% Only called for the last of the double column material. \doublecolumnout +% does the others. +\def\balancecolumns{% + \setbox0 = \vbox{\unvbox\PAGE}% like \box255 but more efficient, see p.120. + \dimen@ = \ht0 + \ifdim\dimen@<7\baselineskip + % Don't split a short final column in two. + \setbox2=\vbox{}% + \global\setbox\balancedcolumns=\vbox{\pagesofar}% + \else + % double the leading vertical space + \advance\dimen@ by \topskip + \advance\dimen@ by-\baselineskip + \divide\dimen@ by 2 % target to split to + \dimen@ii = \dimen@ + \splittopskip = \topskip + % Loop until left column is at least as high as the right column. + {% + \vbadness = 10000 + \loop + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ + \ifdim\ht1<\ht3 + \global\advance\dimen@ by 1pt + \repeat + }% + % Now the left column is in box 1, and the right column in box 3. + % + % Check whether the left column has come out higher than the page itself. + % (Note that we have doubled \vsize for the double columns, so + % the actual height of the page is 0.5\vsize). + \ifdim2\ht1>\vsize + % It appears that we have been called upon to balance too much material. + % Output some of it with \doublecolumnout, leaving the rest on the page. + \setbox\PAGE=\box0 + \doublecolumnout + \else + % Compare the heights of the two columns. + \ifdim4\ht1>5\ht3 + % Column heights are too different, so don't make their bottoms + % flush with each other. + \setbox2=\vbox to \ht1 {\unvbox3\vfill}% + \setbox0=\vbox to \ht1 {\unvbox1\vfill}% + \else + % Make column bottoms flush with each other. + \setbox2=\vbox to\ht1{\unvbox3\unskip}% + \setbox0=\vbox to\ht1{\unvbox1\unskip}% + \fi + \global\setbox\balancedcolumns=\vbox{\pagesofar}% + \fi + \fi + % +} +\catcode`\@ = \other + + +\message{sectioning,} +% Chapters, sections, etc. + +% Let's start with @part. +\parseargdef\part{\partzzz{#1}} +\def\partzzz#1{% + \chapoddpage + \null + \vskip.3\vsize % move it down on the page a bit + \begingroup + \noindent \titlefonts\rm #1\par % the text + \let\lastnode=\empty % no node to associate with + \writetocentry{part}{#1}{}% but put it in the toc + \headingsoff % no headline or footline on the part page + % This outputs a mark at the end of the page that clears \thischapter + % and \thissection, as is done in \startcontents. + \let\pchapsepmacro\relax + \chapmacro{}{Yomitfromtoc}{}% + \chapoddpage + \endgroup +} + +% \unnumberedno is an oxymoron. But we count the unnumbered +% sections so that we can refer to them unambiguously in the pdf +% outlines by their "section number". We avoid collisions with chapter +% numbers by starting them at 10000. (If a document ever has 10000 +% chapters, we're in trouble anyway, I'm sure.) +\newcount\unnumberedno \unnumberedno = 10000 +\newcount\chapno +\newcount\secno \secno=0 +\newcount\subsecno \subsecno=0 +\newcount\subsubsecno \subsubsecno=0 + +% This counter is funny since it counts through charcodes of letters A, B, ... +\newcount\appendixno \appendixno = `\@ +% +% \def\appendixletter{\char\the\appendixno} +% We do the following ugly conditional instead of the above simple +% construct for the sake of pdftex, which needs the actual +% letter in the expansion, not just typeset. +% +\def\appendixletter{% + \ifnum\appendixno=`A A% + \else\ifnum\appendixno=`B B% + \else\ifnum\appendixno=`C C% + \else\ifnum\appendixno=`D D% + \else\ifnum\appendixno=`E E% + \else\ifnum\appendixno=`F F% + \else\ifnum\appendixno=`G G% + \else\ifnum\appendixno=`H H% + \else\ifnum\appendixno=`I I% + \else\ifnum\appendixno=`J J% + \else\ifnum\appendixno=`K K% + \else\ifnum\appendixno=`L L% + \else\ifnum\appendixno=`M M% + \else\ifnum\appendixno=`N N% + \else\ifnum\appendixno=`O O% + \else\ifnum\appendixno=`P P% + \else\ifnum\appendixno=`Q Q% + \else\ifnum\appendixno=`R R% + \else\ifnum\appendixno=`S S% + \else\ifnum\appendixno=`T T% + \else\ifnum\appendixno=`U U% + \else\ifnum\appendixno=`V V% + \else\ifnum\appendixno=`W W% + \else\ifnum\appendixno=`X X% + \else\ifnum\appendixno=`Y Y% + \else\ifnum\appendixno=`Z Z% + % The \the is necessary, despite appearances, because \appendixletter is + % expanded while writing the .toc file. \char\appendixno is not + % expandable, thus it is written literally, thus all appendixes come out + % with the same letter (or @) in the toc without it. + \else\char\the\appendixno + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + +% Each @chapter defines these (using marks) as the number+name, number +% and name of the chapter. Page headings and footings can use +% these. @section does likewise. +\def\thischapter{} +\def\thischapternum{} +\def\thischaptername{} +\def\thissection{} +\def\thissectionnum{} +\def\thissectionname{} + +\newcount\absseclevel % used to calculate proper heading level +\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count + +% @raisesections: treat @section as chapter, @subsection as section, etc. +\def\raisesections{\global\advance\secbase by -1} + +% @lowersections: treat @chapter as section, @section as subsection, etc. +\def\lowersections{\global\advance\secbase by 1} + +% we only have subsub. +\chardef\maxseclevel = 3 +% +% A numbered section within an unnumbered changes to unnumbered too. +% To achieve this, remember the "biggest" unnum. sec. we are currently in: +\chardef\unnlevel = \maxseclevel +% +% Trace whether the current chapter is an appendix or not: +% \chapheadtype is "N" or "A", unnumbered chapters are ignored. +\def\chapheadtype{N} + +% Choose a heading macro +% #1 is heading type +% #2 is heading level +% #3 is text for heading +\def\genhead#1#2#3{% + % Compute the abs. sec. level: + \absseclevel=#2 + \advance\absseclevel by \secbase + % Make sure \absseclevel doesn't fall outside the range: + \ifnum \absseclevel < 0 + \absseclevel = 0 + \else + \ifnum \absseclevel > 3 + \absseclevel = 3 + \fi + \fi + % The heading type: + \def\headtype{#1}% + \if \headtype U% + \ifnum \absseclevel < \unnlevel + \chardef\unnlevel = \absseclevel + \fi + \else + % Check for appendix sections: + \ifnum \absseclevel = 0 + \edef\chapheadtype{\headtype}% + \else + \if \headtype A\if \chapheadtype N% + \errmessage{@appendix... within a non-appendix chapter}% + \fi\fi + \fi + % Check for numbered within unnumbered: + \ifnum \absseclevel > \unnlevel + \def\headtype{U}% + \else + \chardef\unnlevel = 3 + \fi + \fi + % Now print the heading: + \if \headtype U% + \ifcase\absseclevel + \unnumberedzzz{#3}% + \or \unnumberedseczzz{#3}% + \or \unnumberedsubseczzz{#3}% + \or \unnumberedsubsubseczzz{#3}% + \fi + \else + \if \headtype A% + \ifcase\absseclevel + \appendixzzz{#3}% + \or \appendixsectionzzz{#3}% + \or \appendixsubseczzz{#3}% + \or \appendixsubsubseczzz{#3}% + \fi + \else + \ifcase\absseclevel + \chapterzzz{#3}% + \or \seczzz{#3}% + \or \numberedsubseczzz{#3}% + \or \numberedsubsubseczzz{#3}% + \fi + \fi + \fi + \suppressfirstparagraphindent +} + +% an interface: +\def\numhead{\genhead N} +\def\apphead{\genhead A} +\def\unnmhead{\genhead U} + +% @chapter, @appendix, @unnumbered. Increment top-level counter, reset +% all lower-level sectioning counters to zero. +% +% Also set \chaplevelprefix, which we prepend to @float sequence numbers +% (e.g., figures), q.v. By default (before any chapter), that is empty. +\let\chaplevelprefix = \empty +% +\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz +\def\chapterzzz#1{% + % section resetting is \global in case the chapter is in a group, such + % as an @include file. + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\chapno by 1 + % + % Used for \float. + \gdef\chaplevelprefix{\the\chapno.}% + \resetallfloatnos + % + % \putwordChapter can contain complex things in translations. + \toks0=\expandafter{\putwordChapter}% + \message{\the\toks0 \space \the\chapno}% + % + % Write the actual heading. + \chapmacro{#1}{Ynumbered}{\the\chapno}% + % + % So @section and the like are numbered underneath this chapter. + \global\let\section = \numberedsec + \global\let\subsection = \numberedsubsec + \global\let\subsubsection = \numberedsubsubsec +} + +\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz +% +\def\appendixzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\appendixno by 1 + \gdef\chaplevelprefix{\appendixletter.}% + \resetallfloatnos + % + % \putwordAppendix can contain complex things in translations. + \toks0=\expandafter{\putwordAppendix}% + \message{\the\toks0 \space \appendixletter}% + % + \chapmacro{#1}{Yappendix}{\appendixletter}% + % + \global\let\section = \appendixsec + \global\let\subsection = \appendixsubsec + \global\let\subsubsection = \appendixsubsubsec +} + +% normally unnmhead0 calls unnumberedzzz: +\outer\parseargdef\unnumbered{\unnmhead0{#1}} +\def\unnumberedzzz#1{% + \global\advance\unnumberedno by 1 + % + % Since an unnumbered has no number, no prefix for figures. + \global\let\chaplevelprefix = \empty + \resetallfloatnos + % + % This used to be simply \message{#1}, but TeX fully expands the + % argument to \message. Therefore, if #1 contained @-commands, TeX + % expanded them. For example, in `@unnumbered The @cite{Book}', TeX + % expanded @cite (which turns out to cause errors because \cite is meant + % to be executed, not expanded). + % + % Anyway, we don't want the fully-expanded definition of @cite to appear + % as a result of the \message, we just want `@cite' itself. We use + % \the to achieve this: TeX expands \the only once, + % simply yielding the contents of . (We also do this for + % the toc entries.) + \toks0 = {#1}% + \message{(\the\toks0)}% + % + \chapmacro{#1}{Ynothing}{\the\unnumberedno}% + % + \global\let\section = \unnumberedsec + \global\let\subsection = \unnumberedsubsec + \global\let\subsubsection = \unnumberedsubsubsec +} + +% @centerchap is like @unnumbered, but the heading is centered. +\outer\parseargdef\centerchap{% + \let\centerparametersmaybe = \centerparameters + \unnmhead0{#1}% + \let\centerparametersmaybe = \relax +} + +% @top is like @unnumbered. +\let\top\unnumbered + +% Sections. +% +\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz +\def\seczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% +} + +% normally calls appendixsectionzzz: +\outer\parseargdef\appendixsection{\apphead1{#1}} +\def\appendixsectionzzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% +} +\let\appendixsec\appendixsection + +% normally calls unnumberedseczzz: +\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} +\def\unnumberedseczzz#1{% + \global\advance\unnumberedno by 1 + \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno}% +} + +% Subsections. +% +% normally calls numberedsubseczzz: +\outer\parseargdef\numberedsubsec{\numhead2{#1}} +\def\numberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% +} + +% normally calls appendixsubseczzz: +\outer\parseargdef\appendixsubsec{\apphead2{#1}} +\def\appendixsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno}% +} + +% normally calls unnumberedsubseczzz: +\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} +\def\unnumberedsubseczzz#1{% + \global\advance\unnumberedno by 1 + \sectionheading{#1}{subsec}{Ynothing}{\the\unnumberedno}% +} + +% Subsubsections. +% +% normally numberedsubsubseczzz: +\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} +\def\numberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynumbered}% + {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% normally appendixsubsubseczzz: +\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} +\def\appendixsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% normally unnumberedsubsubseczzz: +\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} +\def\unnumberedsubsubseczzz#1{% + \global\advance\unnumberedno by 1 + \sectionheading{#1}{subsubsec}{Ynothing}{\the\unnumberedno}% +} + +% These macros control what the section commands do, according +% to what kind of chapter we are in (ordinary, appendix, or unnumbered). +% Define them by default for a numbered chapter. +\let\section = \numberedsec +\let\subsection = \numberedsubsec +\let\subsubsection = \numberedsubsubsec + +% Define @majorheading, @heading and @subheading + +\def\majorheading{% + {\advance\chapheadingskip by 10pt \chapbreak }% + \parsearg\chapheadingzzz +} + +\def\chapheading{\chapbreak \parsearg\chapheadingzzz} +\def\chapheadingzzz#1{% + \vbox{\chapfonts \raggedtitlesettings #1\par}% + \nobreak\bigskip \nobreak + \suppressfirstparagraphindent +} + +% @heading, @subheading, @subsubheading. +\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} + +% @xrefname - give text with printed name for linking to node and allow +% referencing node, but do not print any heading. +\parseargdef\xrefname{\donoderef{Yomitfromtoc}{#1}}% + +% These macros generate a chapter, section, etc. heading only +% (including whitespace, linebreaking, etc. around it), +% given all the information in convenient, parsed form. + +% Args are the skip and penalty (usually negative) +\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} + +% Parameter controlling skip before chapter headings (if needed) +\newskip\chapheadingskip + +% Define plain chapter starts, and page on/off switching for it. +\def\chapbreak{\dobreak \chapheadingskip {-4000}} + +% Start a new page +\def\chappager{\par\vfill\supereject} + +% \chapoddpage - start on an odd page for a new chapter +% Because \domark is called before \chapoddpage, the filler page will +% get the headings for the next chapter, which is wrong. But we don't +% care -- we just disable all headings on the filler page. +\def\chapoddpage{% + \chappager + \ifodd\pageno \else + \begingroup + \headingsoff + \null + \chappager + \endgroup + \fi +} + +\parseargdef\setchapternewpage{\csname CHAPPAG#1\endcsname\HEADINGSon} + +\def\CHAPPAGoff{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chapbreak +\global\def\HEADINGSon{\HEADINGSsinglechapoff}} + +\def\CHAPPAGon{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chappager +\global\def\HEADINGSon{\HEADINGSsingle}} + +\def\CHAPPAGodd{% +\global\let\contentsalignmacro = \chapoddpage +\global\let\pchapsepmacro=\chapoddpage +\global\def\HEADINGSon{\HEADINGSdouble}} + +\setchapternewpage on + +% \chapmacro - Chapter opening. +% +% #1 is the text, #2 is the section type (Ynumbered, Ynothing, +% Yappendix, Yomitfromtoc), #3 the chapter number. +% Not used for @heading series. +% +% To test against our argument. +\def\Ynothingkeyword{Ynothing} +\def\Yappendixkeyword{Yappendix} +\def\Yomitfromtockeyword{Yomitfromtoc} +% +% +% Definitions for @thischapter. These can be overridden in translation +% files. +\def\thischapterAppendix{% + \putwordAppendix{} \thischapternum: \thischaptername} + +\def\thischapterChapter{% + \putwordChapter{} \thischapternum: \thischaptername} +% +% +\def\chapmacro#1#2#3{% + \expandafter\ifx\thisenv\titlepage\else + \checkenv{}% chapters, etc., should not start inside an environment. + \fi + % Insert the first mark before the heading break (see notes for \domark). + \let\prevchapterdefs=\currentchapterdefs + \let\prevsectiondefs=\currentsectiondefs + \gdef\currentsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% + \gdef\thissection{}}% + % + \def\temptype{#2}% + \ifx\temptype\Ynothingkeyword + \gdef\currentchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{\thischaptername}}% + \else\ifx\temptype\Yomitfromtockeyword + \gdef\currentchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{}}% + \else\ifx\temptype\Yappendixkeyword + \toks0={#1}% + \xdef\currentchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\appendixletter}% + \let\noexpand\thischapter\noexpand\thischapterAppendix + }% + \else + \toks0={#1}% + \xdef\currentchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\the\chapno}% + \let\noexpand\thischapter\noexpand\thischapterChapter + }% + \fi\fi\fi + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert the chapter heading break. + \pchapsepmacro + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \let\prevchapterdefs=\currentchapterdefs + \let\prevsectiondefs=\currentsectiondefs + \domark + % + {% + \chapfonts \rm + \let\footnote=\errfootnoteheading % give better error message + % + % Only insert the separating space if we have a chapter/appendix + % number, and don't print the unnumbered ``number''. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unnchap}% + \else\ifx\temptype\Yomitfromtockeyword + \setbox0 = \hbox{}% contents like unnumbered, but no toc entry + \def\toctype{omit}% + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% + \def\toctype{app}% + \else + \setbox0 = \hbox{#3\enspace}% + \def\toctype{numchap}% + \fi\fi\fi + % + % Write the toc entry for this chapter. Must come before the + % \donoderef, because we include the current node name in the toc + % entry, and \donoderef resets it to empty. + \writetocentry{\toctype}{#1}{#3}% + % + % For pdftex, we have to write out the node definition (aka, make + % the pdfdest) after any page break, but before the actual text has + % been typeset. If the destination for the pdf outline is after the + % text, then jumping from the outline may wind up with the text not + % being visible, for instance under high magnification. + \donoderef{#2}{#1}% + % + % Typeset the actual heading. + \nobreak % Avoid page breaks at the interline glue. + \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak +} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerparameters{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt +} + + +% Section titles. These macros combine the section number parts and +% call the generic \sectionheading to do the printing. +% +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip{-1000}} + +% Subsection titles. +\newskip\subsecheadingskip +\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} + +% Subsubsection titles. +\def\subsubsecheadingskip{\subsecheadingskip} +\def\subsubsecheadingbreak{\subsecheadingbreak} + +% Definition for @thissection. This can be overridden in translation +% files. +\def\thissectionDef{% + \putwordSection{} \thissectionnum: \thissectionname} +% + + +% Print any size, any type, section title. +% +% #1 is the text of the title, +% #2 is the section level (sec/subsec/subsubsec), +% #3 is the section type (Ynumbered, Ynothing, Yappendix, Yomitfromtoc), +% #4 is the section number. +% +\def\seckeyword{sec} +% +\def\sectionheading#1#2#3#4{% + {% + \def\sectionlevel{#2}% + \def\temptype{#3}% + % + % It is ok for the @heading series commands to appear inside an + % environment (it's been historically allowed, though the logic is + % dubious), but not the others. + \ifx\temptype\Yomitfromtockeyword\else + \checkenv{}% non-@*heading should not be in an environment. + \fi + \let\footnote=\errfootnoteheading + % + % Switch to the right set of fonts. + \csname #2fonts\endcsname \rm + % + % Insert first mark before the heading break (see notes for \domark). + \let\prevsectiondefs=\currentsectiondefs + \ifx\temptype\Ynothingkeyword + \ifx\sectionlevel\seckeyword + \gdef\currentsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% + \gdef\thissection{\thissectionname}}% + \fi + \else\ifx\temptype\Yomitfromtockeyword + % Don't redefine \thissection. + \else\ifx\temptype\Yappendixkeyword + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\currentsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + \let\noexpand\thissection\noexpand\thissectionDef + }% + \fi + \else + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\currentsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + \let\noexpand\thissection\noexpand\thissectionDef + }% + \fi + \fi\fi\fi + % + % Go into vertical mode. Usually we'll already be there, but we + % don't want the following whatsit to end up in a preceding paragraph + % if the document didn't happen to have a blank line. + \par + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert space above the heading. + \csname #2headingbreak\endcsname + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \global\let\prevsectiondefs=\currentsectiondefs + \domark + % + % Only insert the space after the number if we have a section number. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unn}% + \else\ifx\temptype\Yomitfromtockeyword + % for @headings -- no section number, don't include in toc. + \setbox0 = \hbox{}% + \def\toctype{omit}% + \let\sectionlevel=\empty + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{#4\enspace}% + \def\toctype{app}% + \else + \setbox0 = \hbox{#4\enspace}% + \def\toctype{num}% + \fi\fi\fi + % + % Write the toc entry (before \donoderef). See comments in \chapmacro. + \writetocentry{\toctype\sectionlevel}{#1}{#4}% + % + % Write the node reference (= pdf destination for pdftex). + % Again, see comments in \chapmacro. + \donoderef{#3}{#1}% + % + % Interline glue will be inserted when the vbox is completed. + % That glue will be a valid breakpoint for the page, since it'll be + % preceded by a whatsit (usually from the \donoderef, or from the + % \writetocentry if there was no node). We don't want to allow that + % break, since then the whatsits could end up on page n while the + % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. + \nobreak + % + % Output the actual section heading. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright + \hangindent=\wd0 % zero if no section number + \unhbox0 #1}% + }% + % Add extra space after the heading -- half of whatever came above it. + % Don't allow stretch, though. + \kern .5 \csname #2headingskip\endcsname + % + % Do not let the kern be a potential breakpoint, as it would be if it + % was followed by glue. + \nobreak + % + % We'll almost certainly start a paragraph next, so don't let that + % glue accumulate. (Not a breakpoint because it's preceded by a + % discardable item.) However, when a paragraph is not started next + % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out + % or the negative glue will cause weirdly wrong output, typically + % obscuring the section heading with something else. + \vskip-\parskip + % + % This is so the last item on the main vertical list is a known + % \penalty > 10000, so \startdefun, etc., can recognize the situation + % and do the needful. + \penalty 10001 +} + + +\message{toc,} +% Table of contents. +\newwrite\tocfile + +% Write an entry to the toc file, opening it if necessary. +% Called from @chapter, etc. +% +% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} +% We append the current node name (if any) and page number as additional +% arguments for the \{chap,sec,...}entry macros which will eventually +% read this. The node name is used in the pdf outlines as the +% destination to jump to. +% +% We open the .toc file for writing here instead of at @setfilename (or +% any other fixed time) so that @contents can be anywhere in the document. +% But if #1 is `omit', then we don't do anything. This is used for the +% table of contents chapter openings themselves. +% +\newif\iftocfileopened +\def\omitkeyword{omit}% +% +\def\writetocentry#1#2#3{% + \edef\writetoctype{#1}% + \ifx\writetoctype\omitkeyword \else + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + % + \iflinks + {\atdummies + \edef\temp{% + \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% + \temp + }% + \fi + \fi + % + % Tell \shipout to create a pdf destination on each page, if we're + % writing pdf. These are used in the table of contents. We can't + % just write one on every page because the title pages are numbered + % 1 and 2 (the page numbers aren't printed), and so are the first + % two pages of the document. Thus, we'd have two destinations named + % `1', and two named `2'. + \ifpdforxetex + \global\pdfmakepagedesttrue + \fi +} + + +% These characters do not print properly in the Computer Modern roman +% fonts, so we must take special care. This is more or less redundant +% with the Texinfo input format setup at the end of this file. +% +\def\activecatcodes{% + \catcode`\"=\active + \catcode`\$=\active + \catcode`\<=\active + \catcode`\>=\active + \catcode`\\=\active + \catcode`\^=\active + \catcode`\_=\active + \catcode`\|=\active + \catcode`\~=\active +} + + +% Read the toc file, which is essentially Texinfo input. +\def\readtocfile{% + \setupdatafile + \activecatcodes + \input \tocreadfilename +} + +% process toc file to find the maximum width of the section numbers for +% each chapter +\def\findsecnowidths{% + \begingroup + \setupdatafile + \activecatcodes + \secentryfonts + % Redefinitions + \def\numchapentry##1##2##3##4{% + \def\curchapname{secnowidth-##2}% + \curchapmax=0pt + }% + \let\appentry\numchapentry + % + \def\numsecentry##1##2##3##4{% + \def\cursecname{secnowidth-##2}% + \cursecmax=0pt + % + \setbox0=\hbox{##2}% + \ifdim\wd0>\curchapmax + \curchapmax=\wd0 + \expandafter\xdef\csname\curchapname\endcsname{\the\wd0}% + \fi + }% + \let\appsecentry\numsecentry + % + \def\numsubsecentry##1##2##3##4{% + \def\curssecname{secnowidth-##2}% + \curssecmax=0pt + % + \setbox0=\hbox{##2}% + \ifdim\wd0>\cursecmax + \cursecmax=\wd0 + \expandafter\xdef\csname\cursecname\endcsname{\the\wd0}% + \fi + }% + \let\appsubsecentry\numsubsecentry + % + \def\numsubsubsecentry##1##2##3##4{% + \setbox0=\hbox{##2}% + \ifdim\wd0>\curssecmax + \curssecmax=\wd0 + \expandafter\xdef\csname\curssecname\endcsname{\the\wd0}% + \fi + }% + \let\appsubsubsecentry\numsubsubsecentry + % + % Discard any output by outputting to dummy vbox, in case the toc file + % contains macros that we have not redefined above. + \setbox\dummybox\vbox\bgroup + \input \tocreadfilename\relax + \egroup + \endgroup +} +\newdimen\curchapmax +\newdimen\cursecmax +\newdimen\curssecmax + + +% set #1 to the maximum section width for #2 +\def\retrievesecnowidth#1#2{% + \expandafter\let\expandafter\savedsecnowidth \csname secnowidth-#2\endcsname + \ifx\savedsecnowidth\relax + #1=0pt + \else + #1=\savedsecnowidth + \fi +} +\newdimen\secnowidthchap +\secnowidthchap=0pt +\newdimen\secnowidthsec +\secnowidthsec=0pt +\newdimen\secnowidthssec +\secnowidthssec=0pt + + +\newskip\contentsrightmargin \contentsrightmargin=1in +\newcount\savepageno +\newcount\lastnegativepageno \lastnegativepageno = -1 + +% Prepare to read what we've written to \tocfile. +% +\def\startcontents#1#2{% + % If @setchapternewpage on, and @headings double, the contents should + % start on an odd page, unlike chapters. + \contentsalignmacro + \immediate\closeout\tocfile + % + #2% + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \chapmacro{#1}{Yomitfromtoc}{}% + % + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. + \raggedbottom % Worry more about breakpoints than the bottom. + \entryrightmargin=\contentsrightmargin % Don't use the full line length. + % + % Roman numerals for page numbers. + \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi + \def\thistitle{}% no title in double-sided headings + % Record where the Roman numerals started. + \ifnum\romancount=0 \global\romancount=\pagecount \fi + \linkentrytexttrue +} + +% \raggedbottom in plain.tex hardcodes \topskip so override it +\catcode`\@=11 +\def\raggedbottom{\advance\topskip by 0pt plus60pt \r@ggedbottomtrue} +\catcode`\@=\other + +% redefined for the two-volume lispref. We always output on +% \jobname.toc even if this is redefined. +% +\def\tocreadfilename{\jobname.toc} + +% Normal (long) toc. +% +\def\contents{% + \startcontents{\putwordTOC}{\contentsmkdest}% + \ifxetex\xetexpreauxfile\fi + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \findsecnowidths + \readtocfile + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \ifeof 1 \else + \pdfmakeoutlines + \fi + \closein 1 + \ifxetex\xetexpostauxfile\fi + \endgroup + \contentsendroman +} + +\def\contentsmkdest{% + \pdfmkdest{txi.CONTENTS}% +} + +% And just the chapters. +\def\summarycontents{% + \startcontents{\putwordShortTOC}{}% + % + \let\partentry = \shortpartentry + \let\numchapentry = \shortchapentry + \let\appentry = \shortchapentry + \let\unnchapentry = \shortunnchapentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf + \let\sl=\shortcontsl \let\tt=\shortconttt + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \extrasecnoskip=0.4pt + \def\numsecentry##1##2##3##4{} + \let\appsecentry = \numsecentry + \let\unnsecentry = \numsecentry + \let\numsubsecentry = \numsecentry + \let\appsubsecentry = \numsecentry + \let\unnsubsecentry = \numsecentry + \let\numsubsubsecentry = \numsecentry + \let\appsubsubsecentry = \numsecentry + \let\unnsubsubsecentry = \numsecentry + \ifxetex\xetexpreauxfile\fi + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \closein 1 + \ifxetex\xetexpostauxfile\fi + \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=1 + \contentsendcount = \pagecount +} + +% 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. +% +\def\shortchaplabel#1{% + % This space should be enough, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % But use \hss just in case. + % + % We'd like to right-justify chapter numbers, but that looks strange + % with appendix letters. And right-justifying numbers and + % left-justifying letters looks strange when there is less than 10 + % chapters. Have to read the whole toc once to know how many chapters + % there are before deciding ... + \hbox to 1em{#1\hss}% +} + +% These macros generate individual entries in the table of contents, +% and are read in from the *.toc file. +% +% The arguments are like: +% \def\numchapentry#1#2#3#4 +% #1 - the chapter or section name. +% #2 - section number +% #3 - level of section (e.g "chap", "sec") +% #4 - page number + +% Parts, in the main contents. Replace the part number, which doesn't +% exist, with an empty box. Let's hope all the numbers have the same width. +% Also ignore the page number, which is conventionally not printed. +\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} +\def\partentry#1#2#3#4{% + % Add stretch and a bonus for breaking the page before the part heading. + % This reduces the chance of the page being broken immediately after the + % part heading, before a following chapter heading. + \vskip 0pt plus 5\baselineskip + \penalty-300 + \vskip 0pt plus -5\baselineskip + \dochapentry{#1}{\numeralbox}{#3}{}% +} +% +% Parts, in the short toc. +\def\shortpartentry#1#2#3#4{% + \penalty-300 + \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip + \shortchapentry{{\bf #1}}{\numeralbox}{}{}% +} + +% Chapters, in the main contents. +\def\numchapentry#1#2#3#4{% + \retrievesecnowidth\secnowidthchap{#2}% + \dochapentry{#1}{#2}{#3}{#4}% +} + +% Chapters, in the short toc. +\def\shortchapentry#1#2#3#4{% + \tocentry{#1}{\shortchaplabel{#2}}{#3}{#4}% +} + +% Appendices, in the main contents. +% Need the word Appendix, and a fixed-size box. +% +\def\appendixbox#1{% + % We use M since it's probably the widest letter. + \setbox0 = \hbox{\putwordAppendix{} M}% + \hbox to \wd0{\putwordAppendix{} #1\hss}} +% +\def\appentry#1#2#3#4{% + \retrievesecnowidth\secnowidthchap{#2}% + \dochapentry{\appendixbox{#2}\hskip.7em#1}{}{#3}{#4}% +} + +% Unnumbered chapters. +\def\unnchapentry#1#2#3#4{\dochapentry{#1}{}{#3}{#4}} +\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{}{#3}{#4}} + +% Sections. +\def\numsecentry#1#2#3#4{% + \retrievesecnowidth\secnowidthsec{#2}% + \dosecentry{#1}{#2}{#3}{#4}% +} +\let\appsecentry=\numsecentry +\def\unnsecentry#1#2#3#4{% + \retrievesecnowidth\secnowidthsec{#2}% + \dosecentry{#1}{}{#3}{#4}% +} + +% Subsections. +\def\numsubsecentry#1#2#3#4{% + \retrievesecnowidth\secnowidthssec{#2}% + \dosubsecentry{#1}{#2}{#3}{#4}% +} +\let\appsubsecentry=\numsubsecentry +\def\unnsubsecentry#1#2#3#4{% + \retrievesecnowidth\secnowidthssec{#2}% + \dosubsecentry{#1}{}{#3}{#4}% +} + +% And subsubsections. +\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#2}{#3}{#4}} +\let\appsubsubsecentry=\numsubsubsecentry +\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{}{#3}{#4}} + +% This parameter controls the indentation of the various levels. +% Same as \defaultparindent. +\newdimen\tocindent \tocindent = 15pt + +% Now for the actual typesetting. In all these, #1 is the text, #2 is +% a section number if present, #3 is the node, and #4 is the page number. +% +% If the toc has to be broken over pages, we want it to be at chapters +% if at all possible; hence the \penalty. +\def\dochapentry#1#2#3#4{% + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip + \begingroup + % Move the page numbers slightly to the right + \advance\entryrightmargin by -0.05em + \chapentryfonts + \extrasecnoskip=0.4em % separate chapter number more + \tocentry{#1}{#2}{#3}{#4}% + \endgroup + \nobreak\vskip .25\baselineskip plus.1\baselineskip +} + +\def\dosecentry#1#2#3#4{\begingroup + \secnowidth=\secnowidthchap + \secentryfonts \leftskip=\tocindent + \tocentry{#1}{#2}{#3}{#4}% +\endgroup} + +\def\dosubsecentry#1#2#3#4{\begingroup + \secnowidth=\secnowidthsec + \subsecentryfonts \leftskip=2\tocindent + \tocentry{#1}{#2}{#3}{#4}% +\endgroup} + +\def\dosubsubsecentry#1#2#3#4{\begingroup + \secnowidth=\secnowidthssec + \subsubsecentryfonts \leftskip=3\tocindent + \tocentry{#1}{#2}{#3}{#4}% +\endgroup} + +% Used for the maximum width of a section number so we can align +% section titles. +\newdimen\secnowidth +\secnowidth=0pt +\newdimen\extrasecnoskip +\extrasecnoskip=0pt + +\let\tocnodetarget\empty +\let\entrypagetarget\empty + +% \tocentry{TITLE}{SEC NO}{NODE}{PAGE} +% +\def\tocentry#1#2#3#4{% + \def\tocnodetarget{#3}% + \def\secno{#2}% + \ifx\empty\secno + \entryinternal{#1}{#4}% + \else + \ifdim 0pt=\secnowidth + \setbox0=\hbox{#2\hskip\labelspace\hskip\extrasecnoskip}% + \else + \advance\secnowidth by \labelspace + \advance\secnowidth by \extrasecnoskip + \setbox0=\hbox to \secnowidth{% + #2\hskip\labelspace\hskip\extrasecnoskip\hfill}% + \fi + \entrycontskip=\wd0 + \entryinternal{\box0 #1}{#4}% + \fi +} +\newdimen\labelspace +\labelspace=0.6em + +\def\chapentryfonts{\secfonts \rm} +\def\secentryfonts{\textfonts} +\def\subsecentryfonts{\textfonts} +\def\subsubsecentryfonts{\textfonts} + + +\message{environments,} +% @foo ... @end foo. + +% @tex ... @end tex escapes into raw TeX temporarily. +% One exception: @ is still an escape character, so that @end tex works. +% But \@ or @@ will get a plain @ character. + +\envdef\tex{% + \setregularquotes + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie + \catcode `\%=14 + \catcode `\+=\other + \catcode `\"=\other + \catcode `\|=\other + \catcode `\<=\other + \catcode `\>=\other + \catcode `\`=\other + \catcode `\'=\other + % + % ' is active in math mode (mathcode"8000). So reset it, and all our + % other math active characters (just in case), to plain's definitions. + \mathactive + % + % Inverse of the list at the beginning of the file. + \let\b=\ptexb + \let\bullet=\ptexbullet + \let\c=\ptexc + \let\,=\ptexcomma + \let\.=\ptexdot + \let\dots=\ptexdots + \let\equiv=\ptexequiv + \let\!=\ptexexclam + \let\i=\ptexi + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \let\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\/=\ptexslash + \let\sp=\ptexsp + \let\*=\ptexstar + %\let\sup=\ptexsup % do not redefine, we want @sup to work in math mode + \let\t=\ptext + \expandafter \let\csname top\endcsname=\ptextop % we've made it outer + \let\frenchspacing=\plainfrenchspacing + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% +} +% There is no need to define \Etex. + +% Define @lisp ... @end lisp. +% @lisp environment forms a group so it can rebind things, +% including the definition of @end lisp (which normally is erroneous). + +% Amount to narrow the margins by for @lisp. +\newskip\lispnarrowing \lispnarrowing=0.4in + +% This is the definition that ^^M gets inside @lisp, @example, and other +% such environments. \null is better than a space, since it doesn't +% have any width. +\def\lisppar{\null\endgraf} + +% This space is always present above and below environments. +\newskip\envskipamount \envskipamount = 0pt + +% Make spacing and below environment symmetrical. We use \parskip here +% to help in doing that, since in @example-like environments \parskip +% is reset to zero; thus the \afterenvbreak inserts no space -- but the +% start of the next paragraph will insert \parskip. +% +\def\aboveenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + \ifnum\lastpenalty<10000 + % Penalize breaking before the environment, because preceding text + % often leads into it. + \penalty100 + \fi + \vskip\envskipamount + \fi + \fi +}} + +\def\afterenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + % it's not a good place to break if the last penalty was \nobreak + % or better ... + \ifnum\lastpenalty<10000 \penalty-50 \fi + \vskip\envskipamount + \fi + \fi +}} + +% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will +% also clear it, so that its embedded environments do the narrowing again. +\let\nonarrowing=\relax + +% @cartouche ... @end cartouche: draw rectangle w/rounded corners around +% environment contents. + +% +\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth +\def\ctr{{\hskip 6pt\circle\char'010}} +\def\cbl{{\circle\char'012\hskip -6pt}} +\def\cbr{{\hskip 6pt\circle\char'011}} +\def\carttop{\hbox to \cartouter{\hskip\lskip + \ctl\leaders\hrule height\circthick\hfil\ctr + \hskip\rskip}} +\def\cartbot{\hbox to \cartouter{\hskip\lskip + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} +% +\newskip\lskip\newskip\rskip + +% only require the font if @cartouche is actually used +\def\cartouchefontdefs{% + \font\circle=lcircle10\relax + \circthick=\fontdimen8\circle +} +\newdimen\circthick +\newdimen\cartouter\newdimen\cartinner +\newskip\normbskip\newskip\normpskip\newskip\normlskip + +\envparseargdef\cartouche{% + \cartouchefontdefs + \ifhmode\par\fi % can't be in the midst of a paragraph. + \startsavinginserts + \lskip=\leftskip \rskip=\rightskip + \leftskip=0pt\rightskip=0pt % we want these *outside*. + % + % Set paragraph width for text inside cartouche. There are + % left and right margins of 3pt each plus two vrules 0.4pt each. + \cartinner=\hsize \advance\cartinner by-\lskip + \advance\cartinner by-\rskip + \advance\cartinner by -6.8pt + % + % For drawing top and bottom of cartouche. Each corner char + % adds 6pt and we take off the width of a rule to line up with the + % right boundary perfectly. + \cartouter=\hsize + \advance\cartouter by 11.6pt + % + \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip + % + % If this cartouche directly follows a sectioning command, we need the + % \parskip glue (backspaced over by default) or the cartouche can + % collide with the section heading. + \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi + % + \setbox\groupbox=\vtop\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \hsize=\cartinner + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \def\arg{#1}% + \ifx\arg\empty\else + \centerV{\hfil \bf #1 \hfil}% + \fi + \kern3pt + \vskip -\parskip +} +\def\Ecartouche{% + \ifhmode\par\fi + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup + \addgroupbox + \checkinserts +} + + +% This macro is called at the beginning of all the @example variants, +% inside a group. +\newdimen\nonfillparindent +\def\nonfillstart{% + \aboveenvbreak + \ifdim\hfuzz < 12pt \hfuzz = 12pt \fi % Don't be fussy + \sepspaces % Make spaces be word-separators rather than space tokens. + \let\par = \lisppar % don't ignore blank lines + \obeylines % each line of input is a line of output + \parskip = 0pt + % Turn off paragraph indentation but redefine \indent to emulate + % the normal \indent. + \nonfillparindent=\parindent + \parindent = 0pt + \let\indent\nonfillindent + % + \emergencystretch = 0pt % don't try to avoid overfull boxes + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \else + \let\nonarrowing = \relax + \fi + \let\exdent=\nofillexdent +} + +\begingroup +\obeyspaces +% We want to swallow spaces (but not other tokens) after the fake +% @indent in our nonfill-environments, where spaces are normally +% active and set to @tie, resulting in them not being ignored after +% @indent. +\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% +\gdef\nonfillindentcheck{% +\ifx\temp % +\expandafter\nonfillindentgobble% +\else% +\leavevmode\nonfillindentbox% +\fi% +}% +\endgroup +\def\nonfillindentgobble#1{\nonfillindent} +\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} + +% 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, @verbatim +% +\def\smallword{small} +\def\nosmallword{nosmall} +\let\SETdispenvsize\relax +\def\setnormaldispenv{% + \ifx\SETdispenvsize\smallword + % end paragraph for sake of leading, in case document has no blank + % line. This is redundant with what happens in \aboveenvbreak, but + % we need to do it before changing the fonts, and it's inconvenient + % to change the fonts afterward. + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} +\def\setsmalldispenv{% + \ifx\SETdispenvsize\nosmallword + \else + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} + +% We often define two environments, @foo and @smallfoo. +% Let's do it in one command. #1 is the env name, #2 the definition. +\def\makedispenvdef#1#2{% + \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% + \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% + \expandafter\let\csname E#1\endcsname \afterenvbreak + \expandafter\let\csname Esmall#1\endcsname \afterenvbreak +} + +% Define two environment synonyms (#1 and #2) for an environment. +\def\maketwodispenvdef#1#2#3{% + \makedispenvdef{#1}{#3}% + \makedispenvdef{#2}{#3}% +} +% +% @lisp: indented, narrowed, typewriter font; +% @example: same as @lisp. +% +% @smallexample and @smalllisp: use smaller fonts. +% Originally contributed by Pavel@xerox. +% +\maketwodispenvdef{lisp}{example}{% + \nonfillstart + \tt\setcodequotes + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \parsearg\gobble +} +% @display/@smalldisplay: same as @lisp except keep current font. +% +\makedispenvdef{display}{% + \nonfillstart + \gobble +} + +% @format/@smallformat: same as @display except don't narrow margins. +% +\makedispenvdef{format}{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} + +% @flushleft: same as @format, but doesn't obey \SETdispenvsize. +\envdef\flushleft{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} +\let\Eflushleft = \afterenvbreak + +% @flushright. +% +\envdef\flushright{% + \let\nonarrowing = t% + \nonfillstart + \advance\leftskip by 0pt plus 1fill\relax + \gobble +} +\let\Eflushright = \afterenvbreak + + +% @raggedright does more-or-less normal line breaking but no right +% justification. From plain.tex. +\envdef\raggedright{% + \rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax +} +\let\Eraggedright\par + + +% @quotation does normal linebreaking (hence we can't use \nonfillstart) +% and narrows the margins. We keep \parskip nonzero in general, since +% we're doing normal filling. So, when using \aboveenvbreak and +% \afterenvbreak, temporarily make \parskip 0. +% +\makedispenvdef{quotation}{\quotationstart} +% +\def\quotationstart{% + \indentedblockstart % same as \indentedblock, but increase right margin too. + \ifx\nonarrowing\relax + \advance\rightskip by \lispnarrowing + \fi + \parsearg\quotationlabel +} + +% We have retained a nonzero parskip for the environment, since we're +% doing normal filling. +% +\def\Equotation{% + \par + \ifx\quotationauthor\thisisundefined\else + % indent a bit. + \leftline{\kern 2\leftskip \sl ---\quotationauthor}% + \fi + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallquotation{\Equotation} + +% If we're given an argument, typeset it in bold with a colon after. +\def\quotationlabel#1{% + \def\temp{#1}% + \ifx\temp\empty \else + {\bf #1: }% + \fi +} + +% @indentedblock is like @quotation, but indents only on the left and +% has no optional argument. +% +\makedispenvdef{indentedblock}{\indentedblockstart} +% +\def\indentedblockstart{% + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \parindent=0pt + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \exdentamount = \lispnarrowing + \else + \let\nonarrowing = \relax + \fi +} + +% Keep a nonzero parskip for the environment, since we're doing normal filling. +% +\def\Eindentedblock{% + \par + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallindentedblock{\Eindentedblock} + + +% LaTeX-like @verbatim...@end verbatim and @verb{...} +% If we want to allow any as delimiter, +% we need the curly braces so that makeinfo sees the @verb command, eg: +% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org +% +% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. +% +% [Knuth] p.344; only we need to do the other characters Texinfo sets +% active too. Otherwise, they get lost as the first character on a +% verbatim line. +\def\dospecials{% + \do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% + \do\<\do\>\do\|\do\@\do+\do\"% + % Don't do the quotes -- if we do, @set txicodequoteundirected and + % @set txicodequotebacktick will not have effect on @verb and + % @verbatim, and ?` and !` ligatures won't get disabled. + %\do\`\do\'% +} +% +% [Knuth] p. 380 +\def\uncatcodespecials{% + \def\do##1{\catcode`##1=\other}\dospecials} +% +% Setup for the @verb command. +% +% Eight spaces for a tab +\begingroup + \catcode`\^^I=\active + \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} +\endgroup +% +\def\setupverb{% + \tt + \def\par{\leavevmode\endgraf}% + \parindent = 0pt + \setcodequotes + \tabeightspaces + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces +} + +% Setup for the @verbatim environment +% +% Real tab expansion. +\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. +\newbox\verbbox +\def\starttabbox{\setbox\verbbox=\hbox\bgroup} +% +\begingroup + \catcode`\^^I=\active + \gdef\tabexpand{% + \catcode`\^^I=\active + \def^^I{\leavevmode\egroup + \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab + \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 + \leavevmode\box\verbbox \starttabbox + }% + } +\endgroup + +% start the verbatim environment. +\def\setupverbatim{% + \let\nonarrowing = t% + \nonfillstart + \tt % easiest (and conventionally used) font for verbatim + \def\par{\egroup\leavevmode\box\verbbox\endgraf\starttabbox}% + \tabexpand + \setcodequotes + % Respect line breaks, + % print special symbols as themselves, and + % make each space count. + % Must do in this order: + \obeylines \uncatcodespecials \sepspaces +} + +% Do the @verb magic: verbatim text is quoted by unique +% delimiter characters. Before first delimiter expect a +% right brace, after last delimiter expect closing brace: +% +% \def\doverb'{'#1'}'{#1} +% +% [Knuth] p. 382; only eat outer {} +\begingroup + \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other + \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] +\endgroup +% +\def\verb{\begingroup\setupverb\doverb} +% +% +% Do the @verbatim magic: define the macro \doverbatim so that +% the (first) argument ends when '@end verbatim' is reached, ie: +% +% \def\doverbatim#1@end verbatim{#1} +% +% For Texinfo it's a lot easier than for LaTeX, +% because texinfo's \verbatim doesn't stop at '\end{verbatim}': +% we need not redefine '\', '{' and '}'. +% +% Inspired by LaTeX's verbatim command set [latex.ltx] +% +\begingroup + \catcode`\ =\active + \obeylines % + % 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{% + \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{% + \setnormaldispenv\setupverbatim\doverbatim +} +\let\Everbatim = \afterenvbreak + + +% @verbatiminclude FILE - insert text of file in verbatim environment. +% +\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} +% +\def\doverbatiminclude#1{% + {% + \makevalueexpandable + \setupverbatim + {% + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% + \edef\tmp{\noexpand\input #1 } + \expandafter + }\expandafter\starttabbox\tmp\egroup + \afterenvbreak + }% +} + +% @copying ... @end copying. +% Save the text away for @insertcopying later. +% +% We save the uninterpreted tokens, rather than creating a box. +% Saving the text in a box would be much easier, but then all the +% typesetting commands (@smallbook, font changes, etc.) have to be done +% beforehand -- and a) we want @copying to be done first in the source +% file; b) letting users define the frontmatter in as flexible order as +% possible is desirable. +% +\def\copying{\checkenv{}\begingroup\macrobodyctxt\docopying} +{\catcode`\ =\other +\gdef\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +} + +\def\insertcopying{% + \begingroup + \parindent = 0pt % paragraph indentation looks wrong on title page + \scanexp\copyingtext + \endgroup +} + + +\message{defuns,} +% @defun etc. + +\newskip\defbodyindent \defbodyindent=.4in +\newskip\defargsindent \defargsindent=50pt +\newskip\deflastargmargin \deflastargmargin=18pt +\newcount\defunpenalty + +% Start the processing of @deffn: +\def\startdefun{% + \ifnum\lastpenalty<10000 + \medbreak + \defunpenalty=10003 % Will keep this @deffn together with the + % following @def command, see below. + \else + % If there are two @def commands in a row, we'll have a \nobreak, + % which is there to keep the function description together with its + % header. But if there's nothing but headers, we need to allow a + % break somewhere. Check specifically for penalty 10002, inserted + % by \printdefunline, instead of 10000, since the sectioning + % commands also insert a nobreak penalty, and we don't want to allow + % a break between a section heading and a defun. + % + % As a further refinement, we avoid "club" headers by signalling + % with penalty of 10003 after the very first @deffn in the + % sequence (see above), and penalty of 10002 after any following + % @def command. + \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi + % + % Similarly, after a section heading, do not allow a break. + % But do insert the glue. + \medskip % preceded by discardable penalty, so not a breakpoint + \fi + % + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent +} + +% Called as \printdefunline \deffooheader{text} +% +\def\printdefunline#1#2{% + \begingroup + \plainfrenchspacing + % call \deffooheader: + #1#2 \endheader + % common ending: + \interlinepenalty = 10000 + \advance\rightskip by 0pt plus 1fil\relax + \endgraf + \nobreak\vskip -\parskip + \penalty\defunpenalty % signal to \startdefun and \deffoox + % Some of the @defun-type tags do not enable magic parentheses, + % rendering the following check redundant. But we don't optimize. + \checkparencounts + \endgroup +} + +\def\Edefun{\endgraf\medbreak} + +% @defblock, @defline do not automatically create index entries +\envdef\defblock{% + \startdefun +} +\let\Edefblock\Edefun + +\def\defline{% + \doingtypefnfalse + \parseargusing\activeparens{\printdefunline\deflineheader}% +} +\def\deflineheader#1 #2 #3\endheader{% + \printdefname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% +} + +\def\deftypeline{% + \doingtypefntrue + \parseargusing\activeparens{\printdefunline\deftypelineheader}% +} +\def\deftypelineheader#1 #2 #3 #4\endheader{% + \printdefname{#1}{#2}{#3}\magicamp\defunargs{#4\unskip}% +} + +% \makedefun{deffoo} (\deffooheader parameters) { (\deffooheader expansion) } +% +% Define \deffoo, \deffoox \Edeffoo and \deffooheader. +\def\makedefun#1{% + \expandafter\let\csname E#1\endcsname = \Edefun + \edef\temp{\noexpand\domakedefun + \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% + \temp +} +\def\domakedefun#1#2#3{% + \envdef#1{% + \startdefun + \doingtypefnfalse % distinguish typed functions from all else + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#2{% + % First, check whether we are in the right environment: + \checkenv#1% + % + % As in \startdefun, allow line break if we have multiple x headers + % in a row. It's not a great place, though. + \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi + % + \doingtypefnfalse % distinguish typed functions from all else + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#3% definition of \deffooheader follows +} + +\newif\ifdoingtypefn % doing typed function? +\newif\ifrettypeownline % typeset return type on its own line? + +% @deftypefnnewline on|off says whether the return type of typed functions +% are printed on their own line. This affects @deftypefn, @deftypefun, +% @deftypeop, and @deftypemethod. +% +\parseargdef\deftypefnnewline{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @txideftypefnnl value `\temp', + must be on|off}% + \fi\fi +} + +% Untyped functions: + +% @deffn category name args +\makedefun{deffn}#1 #2 #3\endheader{% + \doind{fn}{\code{#2}}% + \printdefname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% +} + +% @defop category class name args +\makedefun{defop}#1 {\defopheaderx{#1\ \putwordon}} +\def\defopheaderx#1#2 #3 #4\endheader{% + \doind{fn}{\code{#3}\space\putwordon\ \code{#2}}% + \printdefname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}% +} + +% Typed functions: + +% @deftypefn category type name args +\makedefun{deftypefn}#1 #2 #3 #4\endheader{% + \doind{fn}{\code{#3}}% + \doingtypefntrue + \printdefname{#1}{#2}{#3}\defunargs{#4\unskip}% +} + +% @deftypeop category class type name args +\makedefun{deftypeop}#1 {\deftypeopheaderx{#1\ \putwordon}} +\def\deftypeopheaderx#1#2 #3 #4 #5\endheader{% + \doind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}% + \doingtypefntrue + \printdefname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% +} + +% Typed variables: + +% @deftypevr category type var args +\makedefun{deftypevr}#1 #2 #3 #4\endheader{% + \doind{vr}{\code{#3}}% + \printdefname{#1}{#2}{#3}\defunargs{#4\unskip}% +} + +% @deftypecv category class type var args +\makedefun{deftypecv}#1 {\deftypecvheaderx{#1\ \putwordof}} +\def\deftypecvheaderx#1#2 #3 #4 #5\endheader{% + \doind{vr}{\code{#4}\space\putwordof\ \code{#2}}% + \printdefname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% +} + +% Untyped variables: + +% @defvr category var args +\makedefun{defvr}#1 {\deftypevrheader{#1} {} } + +% @defcv category class var args +\makedefun{defcv}#1 {\defcvheaderx{#1\ \putwordof}} +\def\defcvheaderx#1#2 {\deftypecvheaderx{#1}#2 {} } + +% Types: + +% @deftp category name args +\makedefun{deftp}#1 #2 #3\endheader{% + \doind{tp}{\code{#2}}% + \printdefname{#1}{}{#2}\defunargs{#3\unskip}% +} + +% Remaining @defun-like shortcuts: +\makedefun{defun}{\deffnheader{\putwordDeffunc} } +\makedefun{defmac}{\deffnheader{\putwordDefmac} } +\makedefun{defspec}{\deffnheader{\putwordDefspec} } +\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } +\makedefun{defvar}{\defvrheader{\putwordDefvar} } +\makedefun{defopt}{\defvrheader{\putwordDefopt} } +\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } +\makedefun{defmethod}{\defopheaderx\putwordMethodon} +\makedefun{deftypemethod}{\deftypeopheaderx\putwordMethodon} +\makedefun{defivar}{\defcvheaderx\putwordInstanceVariableof} +\makedefun{deftypeivar}{\deftypecvheaderx\putwordInstanceVariableof} + +% \printdefname, which formats the name of the @def (not the args). +% #1 is the category, such as "Function". +% #2 is the return type, if any. +% #3 is the function name. +% +% We are followed by (but not passed) the arguments, if any. +% +\def\printdefname#1#2#3{% + \par + % Get the values of \leftskip and \rightskip as they were outside the @def... + \advance\leftskip by -\defbodyindent + % + % Determine if we are typesetting the return type of a typed function + % on a line by itself. + \rettypeownlinefalse + \ifdoingtypefn % doing a typed function specifically? + % then check user option for putting return type on its own line: + \ifflagclear{txideftypefnnl}{}{\rettypeownlinetrue}% + \fi + % + % How we'll format the category name. Putting it in brackets helps + % distinguish it from the body text that may end up on the next line + % just below it. + \def\temp{#1}% + \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} + % + % Figure out line sizes for the paragraph shape. We'll always have at + % least two. + \tempnum = 2 + % + % The first line needs space for \box0; but if \rightskip is nonzero, + % we need only space for the part of \box0 which exceeds it: + \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip + % + % If doing a return type on its own line, we'll have another line. + \ifrettypeownline + \advance\tempnum by 1 + \def\maybeshapeline{0in \hsize}% + \else + \def\maybeshapeline{}% + \fi + % + % The continuations: + \dimen2=\hsize \advance\dimen2 by -\defargsindent + % + % The final paragraph shape: + \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 + % + % Put the category name at the right margin. + \noindent + \hbox to 0pt{% + \hfil\box0 \kern-\hsize + % \hsize has to be shortened this way: + \kern\leftskip + % Intentionally do not respect \rightskip, since we need the space. + }% + % + % Allow all lines to be underfull without complaint: + \tolerance=10000 \hbadness=10000 + \exdentamount=\defbodyindent + {% + \def\^^M{}% for line continuation + % + % defun fonts. We use typewriter by default (used to be bold) because: + % . we're printing identifiers, they should be in tt in principle. + % . in languages with many accents, such as Czech or French, it's + % common to leave accents off identifiers. The result looks ok in + % tt, but exceedingly strange in rm. + % . we don't want -- and --- to be treated as ligatures. + % . this still does not fix the ?` and !` ligatures, but so far no + % one has made identifiers using them :). + \df \tt + \def\temp{#2}% text of the return type + \ifx\temp\empty\else + \tclose{\temp}% typeset the return type + \ifrettypeownline + % put return type on its own line; prohibit line break following: + \hfil\vadjust{\nobreak}\break + \else + \space % type on same line, so just followed by a space + \fi + \fi % no return type + #3% output function name + }% + \ifflagclear{txidefnamenospace}{% + {\rm\enskip}% hskip 0.5 em of \rmfont + }{}% + % + \parenbrackglyphs + % arguments will be output next, if any. +} + +% Print arguments. Use slanted for @def*, typewriter for @deftype*. +\def\defunargs#1{% + \bgroup + \def\^^M{}% for line continuation + \df \ifdoingtypefn \tt \else \sl \fi + \ifflagclear{txicodevaristt}{}% + % use \ttsl for @var in both @def* and @deftype*. + % the kern prevents an italic correction at end, which appears + % too much for ttsl. + {\def\var##1{{\setregularquotes \ttsl ##1\kern 0pt }}}% + #1% + \egroup +} + +% We want ()&[] to print specially on the defun line. +% +\def\activeparens{% + \catcode`\(=\active \catcode`\)=\active + \catcode`\[=\active \catcode`\]=\active + \catcode`\&=\active +} + +% Make control sequences which act like normal parenthesis chars. +\let\lparen = ( \let\rparen = ) + +% Be sure that we always have a definition for `(', etc. For example, +% if the fn name has parens in it, \parenbrackglyphs will not be in +% effect yet, so TeX would otherwise complain about undefined control +% sequence. +{ + \activeparens + \gdef\defcharsdefault{% + \let(=\lparen \let)=\rparen + \let[=\lbrack \let]=\rbrack + \let& = \&% + } + \globaldefs=1 \defcharsdefault + + \gdef\parenbrackglyphs{\let(=\opnr\let)=\cpnr\let[=\lbrb\let]=\rbrb} + \gdef\magicamp{\let&=\amprm} +} +\let\ampchar\& + +\def\amprm#1 {{\rm\ }} + +\newcount\parencount +% opening and closing parentheses in roman font +\def\opnr{% + \ptexslash % italic correction + \global\advance\parencount by 1 + {\sf(}% +} +\def\cpnr{% + \ptexslash % italic correction + {\sf)}% + \global\advance\parencount by -1 +} + +\newcount\brackcount +% left and right square brackets in bold font +\def\lbrb{% + \global\advance\brackcount by 1 + {\bf[}% +} +\def\rbrb{% + {\bf]}% + \global\advance\brackcount by -1 +} + +\def\checkparencounts{% + \ifnum\parencount=0 \else \badparencount \fi + \ifnum\brackcount=0 \else \badbrackcount \fi +} +% these should not use \errmessage; the glibc manual, at least, actually +% has such constructs (when documenting function pointers). +\def\badparencount{% + \message{Warning: unbalanced parentheses in @def...}% + \global\parencount=0 +} +\def\badbrackcount{% + \message{Warning: unbalanced square brackets in @def...}% + \global\brackcount=0 +} + + +\message{macros,} +% @macro. + +% To do this right we need a feature of e-TeX, \scantokens, +% which we arrange to emulate with a temporary file in ordinary TeX. +\ifx\eTeXversion\thisisundefined + \newwrite\macscribble + \def\scantokens#1{% + \toks0={#1}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \input \jobname.tmp + } +\fi + +% Used at the time of macro expansion. +% Argument is macro body with arguments substituted +\def\scanmacro#1{% + \newlinechar`\^^M + \def\xeatspaces##1{\eatleadingcrthen\eatspaces{##1}}% + % + % Process the macro body under the current catcode regime. + \scantokens{#1@comment}% + % + % The \comment is to remove the \newlinechar added by \scantokens, and + % can be noticed by \parsearg. Note \c isn't used because this means cedilla + % in math mode. +} + +% Used for copying and captions +\def\scanexp#1{% + \expandafter\scanmacro\expandafter{#1}% +} + +\newcount\paramno % Count of parameters +\newtoks\macname % Macro name +\newif\ifrecursive % Is it recursive? + +% List of all defined macros in the form +% \commondummyword\macro1\commondummyword\macro2... +% Currently is also contains all @aliases; the list can be split +% if there is a need. +\def\macrolist{} + +% Add the macro to \macrolist +\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} +\def\addtomacrolistxxx#1{% + \toks0 = \expandafter{\macrolist\commondummyword#1}% + \xdef\macrolist{\the\toks0}% +} + +% Utility routines. +% This does \let #1 = #2, with \csnames; that is, +% \let \csname#1\endcsname = \csname#2\endcsname +% (except of course we have to play expansion games). +% +\def\cslet#1#2{% + \expandafter\let + \csname#1\expandafter\endcsname + \csname#2\endcsname +} + +% Trim leading and trailing spaces off a string. +% Concepts from aro-bend problem 15 (see CTAN). +{\catcode`\@=11 +\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} +\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} +\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} +\def\unbrace#1{#1} +\unbrace{\gdef\trim@@@ #1 } #2@{#1} +} + +% Trim a single leading ^^M off a string, then call #1 +{\catcode`\^^M=\active \catcode`\Q=3% +\gdef\eatleadingcrthen #1#2{\eatlcra #1Q#2Q^^MQ}% +\gdef\eatlcra #1#2Q^^M{\eatlcrb #1#2Q}% +\gdef\eatlcrb #1Q#2Q#3Q{#1{#2}}% +} + +% Trim a single trailing ^^M off a string. +{\catcode`\^^M=\other \catcode`\Q=3% +\gdef\eatcr #1{\eatcra #1Q^^MQ}% +\gdef\eatcra#1^^MQ{\eatcrb#1Q}% +\gdef\eatcrb#1Q#2Q{#1}% +} + +% Macro bodies are absorbed as an argument in a context where +% all characters are catcode 10, 11 or 12, except \ which is active +% (as in normal texinfo). It is necessary to change the definition of \ +% to recognize macro arguments; this is the job of \mbodybackslash. +% +% Non-ASCII encodings make 8-bit characters active, so un-activate +% them to avoid their expansion. Must do this non-globally, to +% confine the change to the current group. +% +% It's necessary to have hard CRs when the macro is executed. This is +% done by making ^^M (\endlinechar) catcode 12 when reading the macro +% body, and then making it the \newlinechar in \scanmacro. +% +\def\scanctxt{% used as subroutine + \catcode`\"=\other + \catcode`\+=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\^=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\~=\other + \catcode`\@=\other + \catcode`\^^M=\other + \catcode`\\=\active + \passthroughcharstrue +} + +\def\macrobodyctxt{% used for @macro definitions and @copying + \scanctxt + \catcode`\ =\other + \catcode`\{=\other + \catcode`\}=\other +} + +% Used when scanning braced macro arguments. Note, however, that catcode +% changes here are ineffectual if the macro invocation was nested inside +% an argument to another Texinfo command. +\def\macroargctxt{% + \scanctxt + \catcode`\ =\active +} + +\def\macrolineargctxt{% used for whole-line arguments without braces + \scanctxt + \catcode`\{=\other + \catcode`\}=\other +} + +% \mbodybackslash is the definition of \ in @macro bodies. +% It maps \foo\ => \csname macarg.foo\endcsname => #N +% where N is the macro parameter number. +% We define \csname macarg.\endcsname to be \realbackslash, so +% \\ in macro replacement text gets you a backslash. +% +{\catcode`@=0 @catcode`@\=@active + @gdef@usembodybackslash{@let\=@mbodybackslash} + @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} +} +\expandafter\def\csname macarg.\endcsname{\realbackslash} + +\def\margbackslash#1{\char`\#1 } + +\def\macro{\recursivefalse\parsearg\macroxxx} +\def\rmacro{\recursivetrue\parsearg\macroxxx} + +\def\macroxxx#1{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty % no arguments + \paramno=0\relax + \else + \expandafter\parsemargdef \argl;% + \if\paramno>256\relax + \ifx\eTeXversion\thisisundefined + \errhelp = \EMsimple + \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} + \fi + \fi + \fi + \if1\csname ismacro.\the\macname\endcsname + \message{Warning: redefining \the\macname}% + \else + \expandafter\ifx\csname \the\macname\endcsname \relax + \else \errmessage{Macro name \the\macname\space already defined}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + \addtomacrolist{\the\macname}% + \fi + \begingroup \macrobodyctxt \usembodybackslash + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + +\parseargdef\unmacro{% + \if1\csname ismacro.#1\endcsname + \global\cslet{#1}{macsave.#1}% + \global\expandafter\let \csname ismacro.#1\endcsname=0% + % Remove the macro name from \macrolist: + \begingroup + \expandafter\let\csname#1\endcsname \relax + \let\commondummyword\unmacrodo + \xdef\macrolist{\macrolist}% + \endgroup + \fi +} + +% Called by \do from \dounmacro on each macro. The idea is to omit any +% macro definitions that have been changed to \relax. +% +\def\unmacrodo#1{% + \ifx #1\relax + % remove this + \else + \noexpand\commondummyword \noexpand#1% + \fi +} + +% \getargs -- Parse the arguments to a @macro line. Set \macname to +% the name of the macro, and \argl to the braced argument list. +\def\getargs#1{\getargsxxx#1{}} +\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} +\def\getmacname#1 #2\relax{\macname={#1}} +\def\getmacargs#1{\def\argl{#1}} +% This made use of the feature that if the last token of a +% is #, then the preceding argument is delimited by +% an opening brace, and that opening brace is not consumed. + +% Make @ a letter, so that we can make private-to-Texinfo macro names. +\edef\texiatcatcode{\the\catcode`\@} +\catcode `@=11\relax + +% Parse the optional {params} list to @macro or @rmacro. +% Set \paramno to the number of arguments, +% and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a +% three-param macro.) Define \macarg.BLAH for each BLAH in the params +% list to some hook where the argument is to be expanded. If there are +% less than 10 arguments that hook is to be replaced by ##N where N +% is the position in that list, that is to say the macro arguments are to be +% defined `a la TeX in the macro body. +% +% That gets used by \mbodybackslash (above). +% +% If there are 10 or more arguments, a different technique is used: see +% \parsemmanyargdef@@. +% +\def\parsemargdef#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax + % \hash is redefined to `#' later to get it into definitions + \let\xeatspaces\relax + \parsemargdefxxx#1,;,% + \ifnum\paramno<10\relax\else + \paramno0\relax + \parsemmanyargdef@@#1,;,% 10 or more arguments + \fi +} +\def\parsemargdefxxx#1,{% + \if#1;\let\next=\relax + \else \let\next=\parsemargdefxxx + \advance\paramno by 1 + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\xeatspaces{\hash\the\paramno}}% + \edef\paramlist{\paramlist\hash\the\paramno,}% + \fi\next} + +% \parsemacbody, \parsermacbody +% +% Read recursive and nonrecursive macro bodies. (They're different since +% rec and nonrec macros end differently.) +% +% We are in \macrobodyctxt, and the \xdef causes backslashes in the macro +% body to be transformed. +% Set \macrobody to the body of the macro, and call \macrodef. +% +\catcode `\@\texiatcatcode +{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\macrodef}}% +{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\macrodef}}% +\catcode `\@=11\relax + +%%%%%%%%%%%%%% Code for > 10 arguments only %%%%%%%%%%%%%%%%%% + +% If there are 10 or more arguments, a different technique is used, where the +% hook remains in the body, and when macro is to be expanded the body is +% processed again to replace the arguments. +% +% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the +% argument N value and then \edef the body (nothing else will expand because of +% the catcode regime under which the body was input). +% +% If you compile with TeX (not eTeX), and you have macros with 10 or more +% arguments, no macro can have more than 256 arguments (else error). +% +% In case that there are 10 or more arguments we parse again the arguments +% list to set new definitions for the \macarg.BLAH macros corresponding to +% each BLAH argument. It was anyhow needed to parse already once this list +% in order to count the arguments, and as macros with at most 9 arguments +% are by far more frequent than macro with 10 or more arguments, defining +% twice the \macarg.BLAH macros does not cost too much processing power. +\def\parsemmanyargdef@@#1,{% + \if#1;\let\next=\relax + \else + \let\next=\parsemmanyargdef@@ + \edef\tempb{\eatspaces{#1}}% + \expandafter\def\expandafter\tempa + \expandafter{\csname macarg.\tempb\endcsname}% + % Note that we need some extra \noexpand\noexpand, this is because we + % don't want \the to be expanded in the \parsermacbody as it uses an + % \xdef . + \expandafter\edef\tempa + {\noexpand\noexpand\noexpand\the\toks\the\paramno}% + \advance\paramno by 1\relax + \fi\next} + + +\let\endargs@\relax +\let\nil@\relax +\def\nilm@{\nil@}% +\long\def\nillm@{\nil@}% + +% This macro is expanded during the Texinfo macro expansion, not during its +% definition. It gets all the arguments' values and assigns them to macros +% macarg.ARGNAME +% +% #1 is the macro name +% #2 is the list of argument names +% #3 is the list of argument values +\def\getargvals@#1#2#3{% + \def\macargdeflist@{}% + \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. + \def\paramlist{#2,\nil@}% + \def\macroname{#1}% + \begingroup + \macroargctxt + \def\argvaluelist{#3,\nil@}% + \def\@tempa{#3}% + \ifx\@tempa\empty + \setemptyargvalues@ + \else + \getargvals@@ + \fi +} +\def\getargvals@@{% + \ifx\paramlist\nilm@ + % Some sanity check needed here that \argvaluelist is also empty. + \ifx\argvaluelist\nillm@ + \else + \errhelp = \EMsimple + \errmessage{Too many arguments in macro `\macroname'!}% + \fi + \let\next\macargexpandinbody@ + \else + \ifx\argvaluelist\nillm@ + % No more arguments values passed to macro. Set remaining named-arg + % macros to empty. + \let\next\setemptyargvalues@ + \else + % pop current arg name into \@tempb + \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% + \expandafter\@tempa\expandafter{\paramlist}% + % pop current argument value into \@tempc + \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% + \expandafter\@tempa\expandafter{\argvaluelist}% + % Here \@tempb is the current arg name and \@tempc is the current arg value. + % First place the new argument macro definition into \@tempd + \expandafter\macname\expandafter{\@tempc}% + \expandafter\let\csname macarg.\@tempb\endcsname\relax + \expandafter\def\expandafter\@tempe\expandafter{% + \csname macarg.\@tempb\endcsname}% + \edef\@tempd{\long\def\@tempe{\the\macname}}% + \push@\@tempd\macargdeflist@ + \let\next\getargvals@@ + \fi + \fi + \next +} + +\def\push@#1#2{% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter#2% + \expandafter\expandafter\expandafter{% + \expandafter#1#2}% +} + +% Replace arguments by their values in the macro body, and place the result +% in macro \@tempa. +% +\def\macvalstoargs@{% + % To do this we use the property that token registers that are \the'ed + % within an \edef expand only once. So we are going to place all argument + % values into respective token registers. + % + % First we save the token context, and initialize argument numbering. + \begingroup + \paramno0\relax + % Then, for each argument number #N, we place the corresponding argument + % value into a new token list register \toks#N + \expandafter\putargsintokens@\saveparamlist@,;,% + % Then, we expand the body so that argument are replaced by their + % values. The trick for values not to be expanded themselves is that they + % are within tokens and that tokens expand only once in an \edef . + \edef\@tempc{\csname mac.\macroname .body\endcsname}% + % Now we restore the token stack pointer to free the token list registers + % which we have used, but we make sure that expanded body is saved after + % group. + \expandafter + \endgroup + \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% + } + +% Define the named-macro outside of this group and then close this group. +% +\def\macargexpandinbody@{% + \expandafter + \endgroup + \macargdeflist@ + % First the replace in body the macro arguments by their values, the result + % is in \@tempa . + \macvalstoargs@ + % Then we point at the \norecurse or \gobble (for recursive) macro value + % with \@tempb . + \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname + % Depending on whether it is recursive or not, we need some tailing + % \egroup . + \ifx\@tempb\gobble + \let\@tempc\relax + \else + \let\@tempc\egroup + \fi + % And now we do the real job: + \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% + \@tempd +} + +\def\putargsintokens@#1,{% + \if#1;\let\next\relax + \else + \let\next\putargsintokens@ + % First we allocate the new token list register, and give it a temporary + % alias \@tempb . + \toksdef\@tempb\the\paramno + % Then we place the argument value into that token list register. + \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname + \expandafter\@tempb\expandafter{\@tempa}% + \advance\paramno by 1\relax + \fi + \next +} + +% Trailing missing arguments are set to empty. +% +\def\setemptyargvalues@{% + \ifx\paramlist\nilm@ + \let\next\macargexpandinbody@ + \else + \expandafter\setemptyargvaluesparser@\paramlist\endargs@ + \let\next\setemptyargvalues@ + \fi + \next +} + +\def\setemptyargvaluesparser@#1,#2\endargs@{% + \expandafter\def\expandafter\@tempa\expandafter{% + \expandafter\def\csname macarg.#1\endcsname{}}% + \push@\@tempa\macargdeflist@ + \def\paramlist{#2}% +} + +% #1 is the element target macro +% #2 is the list macro +% #3,#4\endargs@ is the list value +\def\pop@#1#2#3,#4\endargs@{% + \def#1{#3}% + \def#2{#4}% +} +\long\def\longpop@#1#2#3,#4\endargs@{% + \long\def#1{#3}% + \long\def#2{#4}% +} + + +%%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%% + + +% This defines a Texinfo @macro or @rmacro, called by \parsemacbody. +% \macrobody has the body of the macro in it, with placeholders for +% its parameters, looking like "\xeatspaces{\hash 1}". +% \paramno is the number of parameters +% \paramlist is a TeX parameter text, e.g. "#1,#2,#3," +% There are four cases: macros of zero, one, up to nine, and many arguments. +% \xdef is used so that macro definitions will survive the file +% they're defined in: @include reads the file inside a group. +% +\def\macrodef{% + \let\hash=##% convert placeholders to macro parameter chars + \ifnum\paramno=1 + \long\def\xeatspaces##1{##1}% + % We don't use \xeatspaces for single-argument macros, because we + % want to keep ends of lines. This definition removes \xeatspaces + % when \macrobody is expanded below. + \else + \def\xeatspaces{\string\xeatspaces}% + % This expands \xeatspaces as a sequence of character tokens, which + % stops \scantokens inserting an extra space after the control sequence. + \fi + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \begingroup + \noexpand\spaceisspace + \noexpand\ignoreactivenewline + \noexpand\expandafter % skip any whitespace after the macro name. + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname{% + \endgroup + \noexpand\scanmacro{\macrobody}}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \begingroup + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \endgroup + \noexpand\scanmacro{\macrobody}% + }% + \else % at most 9 + \ifnum\paramno<10\relax + % @MACNAME sets the context for reading the macro argument + % @MACNAME@@ gets the argument, processes backslashes and appends a + % comma. + % @MACNAME@@@ removes braces surrounding the argument list. + % @MACNAME@@@@ scans the macro body with arguments substituted. + \expandafter\xdef\csname\the\macname\endcsname{% + \begingroup + \noexpand\expandafter % This \expandafter skip any spaces after the + \noexpand\macroargctxt % macro before we change the catcode of space. + \noexpand\expandafter + \expandafter\noexpand\csname\the\macname @@\endcsname}% + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \noexpand\passargtomacro + \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% + \expandaftergroup{\expandafter\xdef\csname\the\macname @@@@\endcsname}% + \paramlist{% + \endgroup\noexpand\scanmacro{\macrobody}}% + \else % 10 or more: + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble + \fi + \fi} + +\catcode `\@\texiatcatcode\relax % end private-to-Texinfo catcodes + +% utility definition to avoid excessive use of \expandafter. call +% as \expandaftergroup{CONTENT}\WORD to expand \WORD exactly once and remove +% braces around CONTENT. +\def\expandaftergroup#1#2{% + \expandafter\expandaftergroupx\expandafter{#2}{#1}% +} +\def\expandaftergroupx#1#2{% + #2#1% +} + +\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +{\catcode`\@=0 \catcode`\\=13 % We need to manipulate \ so use @ as escape +@catcode`@_=11 % private names +@catcode`@!=11 % used as argument separator + +% \passargtomacro#1#2 - +% Call #1 with a list of tokens #2, with any doubled backslashes in #2 +% compressed to one. +% +% This implementation works by expansion, and not execution (so we cannot use +% \def or similar). This reduces the risk of this failing in contexts where +% complete expansion is done with no execution (for example, in writing out to +% an auxiliary file for an index entry). +% +% State is kept in the input stream: the argument passed to +% @look_ahead, @gobble_and_check_finish and @add_segment is +% +% THE_MACRO ARG_RESULT ! {PENDING_BS} NEXT_TOKEN (... rest of input) +% +% where: +% THE_MACRO - name of the macro we want to call +% ARG_RESULT - argument list we build to pass to that macro +% PENDING_BS - either a backslash or nothing +% NEXT_TOKEN - used to look ahead in the input stream to see what's coming next + +@gdef@passargtomacro#1#2{% + @add_segment #1!{}@relax#2\@_finish\% +} +@gdef@_finish{@_finishx} @global@let@_finishx@relax + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 used to look ahead +% +% If the next token is not a backslash, process the rest of the argument; +% otherwise, remove the next token. +@gdef@look_ahead#1!#2#3#4{% + @ifx#4\% + @expandafter@gobble_and_check_finish + @else + @expandafter@add_segment + @fi#1!{#2}#4#4% +} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 should be a backslash, which is gobbled. +% #5 looks ahead +% +% Double backslash found. Add a single backslash, and look ahead. +@gdef@gobble_and_check_finish#1!#2#3#4#5{% + @add_segment#1\!{}#5#5% +} + +@gdef@is_fi{@fi} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 is input stream until next backslash +% +% Input stream is either at the start of the argument, or just after a +% backslash sequence, either a lone backslash, or a doubled backslash. +% NEXT_TOKEN contains the first token in the input stream: if it is \finish, +% finish; otherwise, append to ARG_RESULT the segment of the argument up until +% the next backslash. PENDING_BACKSLASH contains a backslash to represent +% a backslash just before the start of the input stream that has not been +% added to ARG_RESULT. +@gdef@add_segment#1!#2#3#4\{% +@ifx#3@_finish + @call_the_macro#1!% +@else + % append the pending backslash to the result, followed by the next segment + @expandafter@is_fi@look_ahead#1#2#4!{\}@fi + % this @fi is discarded by @look_ahead. + % we can't get rid of it with \expandafter because we don't know how + % long #4 is. +} + +% #1 - THE_MACRO +% #2 - ARG_RESULT +% #3 discards the res of the conditional in @add_segment, and @is_fi ends the +% conditional. +@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}} + +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \braceorline MAC is used for a one-argument macro MAC. It checks +% whether the next non-whitespace character is a {. It sets the context +% for reading the argument (slightly different in the two cases). Then, +% to read the argument, in the whole-line case, it then calls the regular +% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC. +% +\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} +\def\braceorlinexxx{% + \ifx\nchar\bgroup + \macroargctxt + \expandafter\passargtomacro + \else + \macrolineargctxt\expandafter\parsearg + \fi \macnamexxx} + + +% @linemacro + +\parseargdef\linemacro{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty + \paramno=0 + \let\hash\relax + \def\paramlist{\hash 1\endlinemacro}% + \else + \expandafter\linegetparamlist\argl;% + \fi + \begingroup \macrobodyctxt \usembodybackslash + \parselinemacrobody +} + +% Build up \paramlist which will be used as the parameter text for the macro. +% At the end it will be like "#1 #2 #3\endlinemacro". +\def\linegetparamlist#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax + \linegetparamlistxxx#1,;,% +} +\def\linegetparamlistxxx#1,{% + \if#1;\let\next=\linegetparamlistxxxx + \else \let\next=\linegetparamlistxxx + \advance\paramno by 1 + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\hash\the\paramno}% + \edef\paramlist{\paramlist\hash\the\paramno\space}% + \fi\next} +\def\linegetparamlistxxxx{% + \expandafter\fixparamlist\paramlist\fixparamlist +} +% Replace final space token +\def\fixparamlist#1 \fixparamlist{% + \def\paramlist{#1\endlinemacro}% +} + +% Read the body of the macro, replacing backslash-surrounded variables +% +{\catcode`\ =\other\long\gdef\parselinemacrobody#1@end linemacro{% +\xdef\macrobody{#1}% +\endgroup +\linemacrodef +}} + +% Make the definition +\def\linemacrodef{% + \let\hash=##% + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\parsearg + \expandafter\noexpand\csname\the\macname @@\endcsname + } + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \egroup + \expandafter\noexpand + \csname\the\macname @@@\endcsname##1\noexpand\endlinemacro + } + \expandaftergroup{\expandafter\xdef\csname\the\macname @@@\endcsname}% + \paramlist{% + \newlinechar=13 % split \macrobody into lines + \noexpand\scantokens{\macrobody}% + } +} + + + +% @alias. +% We need some trickery to remove the optional spaces around the equal +% sign. Make them active and then expand them all to nothing. +% +\def\alias{\parseargusing\obeyspaces\aliasxxx} +\def\aliasxxx #1{\aliasyyy#1\relax} +\def\aliasyyy #1=#2\relax{% + {% + \expandafter\let\obeyedspace=\empty + \addtomacrolist{#1}% + \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% + }% + \next +} + + +\message{cross references,} + +\newwrite\auxfile +\newif\ifhavexrefs % True if xref values are known. +\newif\ifwarnedxrefs % True if we warned once that they aren't known. + +% @inforef is relatively simple. +\def\inforef #1{\inforefzzz #1,,,,**} +\def\inforefzzz #1,#2,#3,#4**{% + \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, + node \samp{\ignorespaces#1{}}} + +% @node's only job in TeX is to define \lastnode, which is used in +% cross-references. The @node line might or might not have commas, and +% might or might not have spaces before the first comma, like: +% @node foo , bar , ... +% We don't want such trailing spaces in the node name. +% +\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} +% +% also remove a trailing comma, in case of something like this: +% @node Help-Cross, , , Cross-refs +\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} +\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}\omittopnode} + +% Used so that the @top node doesn't have to be wrapped in an @ifnottex +% conditional. +% \doignore goes to more effort to skip nested conditionals but we don't need +% that here. +\def\omittopnode{% + \ifx\lastnode\wordTop + \expandafter\ignorenode\fi +} +\def\wordTop{Top} + +% 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 +} + +{\let\bye\relax +\gdef\ignorenodebye{\let\bye\ignorenodebyedef} +\gdef\ignorenodebyedef{\egroup(`Top' node ignored)\bye}} +% The redefinition of \bye here is because it is declared \outer + +\let\lastnode=\empty + +% Write a cross-reference definition for the current node. #1 is the +% type (Ynumbered, Yappendix, Ynothing). #2 is the section title. +% +\def\donoderef#1#2{% + \ifx\lastnode\empty\else + \setref{\lastnode}{#1}{#2}% + \global\let\lastnode=\empty + \setnodeseenonce + \fi +} +\def\setnodeseenonce{ + \global\nodeseentrue + \let\setnodeseenonce\relax +} + +% @nodedescription, @nodedescriptionblock - do nothing for TeX +\parseargdef\nodedescription{} +\def\nodedescriptionblock{\doignore{nodedescriptionblock}} + + +% @anchor{NAME} -- define xref target at arbitrary point. +% +\newcount\savesfregister +% +\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} +\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} +\def\anchor#1{% + \savesf \setref{#1}{Yanchor}{#1}\restoresf \ignorespaces +} + +% @namedanchor{NAME, XREFNAME} -- define xref target at arbitrary point +% with label text for cross-references to it. +\def\namedanchor#1{\donamedanchor#1\finish}% +\def\donamedanchor#1,#2\finish{% + \savesf \setref{#1}{Yanchor}{\ignorespaces #2\unskip}\restoresf \ignorespaces +} + +% \setref{NAME}{SNT}{TITLE} defines a cross-reference point NAME (a node +% or an anchor), which consists of three parts: +% 1) NAME-title - the current sectioning name +% 2) NAME-snt - section number and type, passed as the SNT arg. +% 3) NAME-pg - the page number. +% +% This is called from \donoderef, \anchor, and \dofloat. In the case of +% floats, there is an additional part, which is not written here: +% 4) NAME-lof - the text as it should appear in a @listoffloats. +% +\def\setref#1#2#3{% + \pdfmkdest{#1}% + \iflinks + {% + \requireauxfile + \atdummies % preserve commands, but don't expand them + % match definition in \xrdef, \refx, \xrefX. + \def\value##1{##1}% + \edef\writexrdef##1##2{% + \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef + ##1}{##2}}% these are parameters of \writexrdef + }% + \toks0 = {#3}% + \immediate \writexrdef{title}{\the\toks0 }% + \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. + \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout + }% + \fi +} + +% @xrefautosectiontitle on|off says whether @section(ing) names are used +% automatically in xrefs, if the third arg is not explicitly specified. +% This was provided as a "secret" @set xref-automatic-section-title +% variable, now it's official. +% +\parseargdef\xrefautomaticsectiontitle{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', + must be on|off}% + \fi\fi +} + +% +% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is +% the node name, #2 the name of the Info cross-reference, #3 the printed +% node name, #4 the name of the Info file, #5 the name of the printed +% manual. All but the node name can be omitted. +% +\def\pxref{\putwordsee{} \xrefXX} +\def\xref{\putwordSee{} \xrefXX} +\def\ref{\xrefXX} + +\def\xrefXX#1{\def\xrefXXarg{#1}\futurelet\tokenafterxref\xrefXXX} +\def\xrefXXX{\expandafter\xrefX\expandafter[\xrefXXarg,,,,,,,]} +% +\newbox\toprefbox +\newbox\printedrefnamebox +\newbox\infofilenamebox +\newbox\printedmanualbox +% +\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup + \unsepspaces + % + \getprintedrefname{#1}{#3}{#5}% + \def\infofilename{\ignorespaces #4}% + \setbox\infofilenamebox = \hbox{\infofilename\unskip}% + % + \startxreflink{#1}{#4}% + \getrefx{#1-title}\Xthisreftitle + % + % Float references are printed completely differently: "Figure 1.2" + % instead of "[somenode], p.3". \iffloat distinguishes them by + % \Xthisreftitle being set to a magic string. + \iffloat\Xthisreftitle + % 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}% + \else + \printedrefname + \fi + % + % If the user also gave the printed manual name (fifth arg), append + % "in MANUALNAME". + \ifdim \wd\printedmanualbox > 0pt + \space \putwordin{} \cite{\printedmanual}% + \fi + \else + % node/anchor (non-float) references. + % + % If we use \unhbox to print the node names, TeX does not insert + % empty discretionaries after hyphens, which means that it will not + % find a line break at a hyphen in a node names. Since some manuals + % are best written with fairly long node names, containing hyphens, + % this is a loss. Therefore, we give the text of the node name + % again, so it is as if TeX is seeing it for the first time. + % + \ifdim \wd\printedmanualbox > 0pt + % Cross-manual reference with a printed manual name. + % + \crossmanualxref{\cite{\printedmanual\unskip}}% + \else\ifdim \wd\infofilenamebox > 0pt + % Cross-manual reference with only an info filename (arg 4), no + % printed manual name (arg 5). This is essentially the same as + % the case above; we output the filename, since we have nothing else. + % + \crossmanualxref{\code{\infofilename\unskip}}% + \else + % Reference within this manual. + % + % Only output a following space if the -snt ref is nonempty, as is + % the case for @unnumbered and @anchor. + \getrefx{#1-snt}\tmp + \ifx\tmp\empty\else + \ifx\tmp\Yanchor\else + \tmp\space + \fi + \fi + % + % output the `[mynode]' via the macro below so it can be overridden. + \xrefprintnodename\printedrefname + % + \ifflagclear{txiomitxrefpg}{% + % We always want a comma + ,% + % output the `page 3'. + \turnoffactive \putpageref{#1}% + % Add a , if xref followed by a space + \if\space\noexpand\tokenafterxref ,% + \else\ifx\ \tokenafterxref ,% @TAB + \else\ifx\*\tokenafterxref ,% @* + \else\ifx\ \tokenafterxref ,% @SPACE + \else\ifx\ + \tokenafterxref ,% @NL + \else\ifx\tie\tokenafterxref ,% @tie + \fi\fi\fi\fi\fi\fi + }{}% + \fi\fi + \fi + \endlink +\endgroup} + +% \getprintedrefname{NODE}{LABEL}{MANUAL} +% - set \printedrefname and \printedmanual +% +\def\getprintedrefname#1#2#3{% + % Get args without leading/trailing spaces. + \def\printedrefname{\ignorespaces #2}% + \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% + % + \def\printedmanual{\ignorespaces #3}% + \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% + % + % If the printed reference name (arg #2) was not explicitly given in + % the @xref, figure out what we want to use. + \ifdim \wd\printedrefnamebox = 0pt + % No printed node name was explicitly given. + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax + % Not auto section-title: use node name inside the square brackets. + \def\printedrefname{\ignorespaces #1}% + \else + % Auto section-title: use chapter/section title inside + % the square brackets if we have it. + \ifdim \wd\printedmanualbox > 0pt + % It is in another manual, so we don't have it; use node name. + \def\printedrefname{\ignorespaces #1}% + \else + \ifhavexrefs + % We (should) know the real title if we have the xref values. + \def\printedrefname{\refx{#1-title}}% + \else + % Otherwise just copy the Info node name. + \def\printedrefname{\ignorespaces #1}% + \fi + \fi + \fi + \fi +} + +% \startxreflink{NODE}{FILE} - start link in pdf output. +\def\startxreflink#1#2{% + \ifpdforxetex + % For pdfTeX and LuaTeX + {\indexnofonts + \makevalueexpandable + \turnoffactive + % This expands tokens, so do it after making catcode changes, so _ + % etc. don't get their TeX definitions. This ignores all spaces in + % #2, including (wrongly) those in the middle of the filename. + \getfilename{#2}% + % + % This (wrongly) does not take account of leading or trailing + % spaces in #1, which should be ignored. + \setpdfdestname{#1}% + % + \ifx\pdfdestname\empty + \def\pdfdestname{Top}% no empty targets + \fi + % + \leavevmode + \ifpdf + \startlink attr{/Border [0 0 0]}% + \ifnum\filenamelength>0 + goto file{\the\filename.pdf} name{\pdfdestname}% + \else + goto name{\pdfdestname}% + \fi + \else % XeTeX + \ifnum\filenamelength>0 + % With default settings, + % XeTeX (xdvipdfmx) replaces link destination names with integers. + % In this case, the replaced destination names of + % remote PDFs are no longer known. In order to avoid a replacement, + % you can use xdvipdfmx's command line option `-C 0x0010'. + % If you use XeTeX 0.99996+ (TeX Live 2016+), + % this command line option is no longer necessary + % because we can use the `dvipdfmx:config' special. + \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A + << /S /GoToR /F (\the\filename.pdf) /D (\pdfdestname) >> >>}% + \else + \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A + << /S /GoTo /D (\pdfdestname) >> >>}% + \fi + \fi + }% + \setcolor{\linkcolor}% + \fi +} + +% can be overridden in translation files +\def\putpageref#1{% + \space\putwordpage\tie\refx{#1-pg}} + +% Output a cross-manual xref to #1. Used just above (twice). +% +% Only include the text "Section ``foo'' in" if the foo is neither +% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply +% "see The Foo Manual", the idea being to refer to the whole manual. +% +% But, this being TeX, we can't easily compare our node name against the +% string "Top" while ignoring the possible spaces before and after in +% the input. By adding the arbitrary 7sp below, we make it much less +% likely that a real node name would have the same width as "Top" (e.g., +% in a monospaced font). Hopefully it will never happen in practice. +% +% For the same basic reason, we retypeset the "Top" at every +% reference, since the current font is indeterminate. +% +\def\crossmanualxref#1{% + \setbox\toprefbox = \hbox{Top\kern7sp}% + \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% + \ifdim \wd2 > 7sp % nonempty? + \ifdim \wd2 = \wd\toprefbox \else % same as Top? + \putwordSection{} ``\printedrefname'' \putwordin{}\space + \fi + \fi + #1% +} + +% This macro is called from \xrefX for the `[nodename]' part of xref +% output. It's a separate macro only so it can be changed more easily, +% since square brackets don't work well in some documents. Particularly +% one that Bob is working on :). +% +\def\xrefprintnodename#1{[#1]} + +% @link{NODENAME, LABEL, MANUAL} - create a "plain" link, with no +% page number. Not useful if printed on paper. +% +\def\link#1{\linkX[#1,,,]} +\def\linkX[#1,#2,#3,#4]{% + \begingroup + \unsepspaces + \getprintedrefname{#1}{#2}{#3}% + \startxreflink{#1}{#3}% + \printedrefname + \endlink + \endgroup +} + + +% Things referred to by \setref. +% +\def\Ynothing{} +\def\Yomitfromtoc{} +\def\Yanchor{\isanchor} \let\isanchor\relax +\def\Ynumbered{% + \ifnum\secno=0 + \putwordChapter@tie \the\chapno + \else \ifnum\subsecno=0 + \putwordSection@tie \the\chapno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno + \else + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} +\def\Yappendix{% + \ifnum\secno=0 + \putwordAppendix@tie @char\the\appendixno{}% + \else \ifnum\subsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno + \else + \putwordSection@tie + @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} + +% \refx{NAME} - reference a cross-reference string named NAME. +\def\refx#1{% + \getrefx{#1}\thisrefX + \ifx\thisrefX\relax + % If not defined, say something at least. + \angleleft un\-de\-fined\angleright + \iflinks + \ifhavexrefs + {\toks0 = {#1}% avoid expansion of possibly-complex value + \message{\linenumber Undefined cross reference `\the\toks0'.}}% + \else + \ifwarnedxrefs\else + \global\warnedxrefstrue + \message{Cross reference values unknown; you must run TeX again.}% + \fi + \fi + \fi + \else + % It's defined, so just use it. + \thisrefX + \fi +} + +% Set #2 to xref string #1 +\def\getrefx#1#2{% + \requireauxfile + {% + \indexnofonts + \turnoffactive + \def\value##1{##1}% + \expandafter\global\expandafter\let\expandafter#2\csname XR#1\endcsname + }% +} + +% This is the macro invoked by entries in the aux file. Define a control +% sequence for a cross-reference target (we prepend XR to the control sequence +% name to avoid collisions). The value is the page number. If this is a float +% type, we have more work to do. +% +\def\xrdef#1#2{% + {% Expand the node or anchor name to remove control sequences. + % \turnoffactive stops 8-bit characters being changed to commands + % like @'e. \refx does the same to retrieve the value in the definition. + \indexnofonts + \turnoffactive + \def\value##1{##1}% + \xdef\safexrefname{#1}% + }% + % + \bgroup + \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% + \egroup + % We put the \gdef inside a group to avoid the definitions building up on + % TeX's save stack, which can cause it to run out of space for aux files with + % thousands of lines. \gdef doesn't use the save stack, but \csname does + % when it defines an unknown control sequence as \relax. + % + % Was that xref control sequence that we just defined for a float? + \expandafter\iffloat\csname XR\safexrefname\endcsname + % it was a float, and we have the (safe) float type in \iffloattype. + \expandafter\let\expandafter\floatlist + \csname floatlist\iffloattype\endcsname + % + % Is this the first time we've seen this float type? + \expandafter\ifx\floatlist\relax + \toks0 = {\do}% yes, so just \do + \else + % had it before, so preserve previous elements in list. + \toks0 = \expandafter{\floatlist\do}% + \fi + % + % Remember this xref in the control sequence \floatlistFLOATTYPE, + % for later use in \listoffloats. + \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 + {\safexrefname}}% + \fi + \ignorespaces % ignore ends of line in aux file +} + +% If working on a large document in chapters, it is convenient to +% be able to disable indexing, cross-referencing, and contents, for test runs. +% This is done with @novalidate at the beginning of the file. +% +\newif\iflinks \linkstrue % by default we want the aux files. +\let\novalidate = \linksfalse + +% Used when writing to the aux file, or when using data from it. +\def\requireauxfile{% + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi + \global\let\requireauxfile=\relax % Only do this once. +} + +% Read the last existing aux file, if any. No error if none exists. +% +\def\tryauxfile{% + \ifxetex\xetexpreauxfile\fi + \openin 1 \jobname.aux + \ifeof 1 \else + \readdatafile{aux}% + \global\havexrefstrue + \fi + \closein 1 + \ifxetex\xetexpostauxfile\fi +} + +\def\setupdatafile{% + \catcode`\^^@=\other + \catcode`\^^A=\other + \catcode`\^^B=\other + \catcode`\^^C=\other + \catcode`\^^D=\other + \catcode`\^^E=\other + \catcode`\^^F=\other + \catcode`\^^G=\other + \catcode`\^^H=\other + \catcode`\^^K=\other + \catcode`\^^L=\other + \catcode`\^^N=\other + \catcode`\^^P=\other + \catcode`\^^Q=\other + \catcode`\^^R=\other + \catcode`\^^S=\other + \catcode`\^^T=\other + \catcode`\^^U=\other + \catcode`\^^V=\other + \catcode`\^^W=\other + \catcode`\^^X=\other + \catcode`\^^Z=\other + \catcode`\^^[=\other + \catcode`\^^\=\other + \catcode`\^^]=\other + \catcode`\^^^=\other + \catcode`\^^_=\other + \catcode`\^=\other + % + % Special characters. Should be turned off anyway, but... + \catcode`\~=\other + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other + \catcode`\_=\active + \catcode`\|=\active + \catcode`\<=\active + \catcode`\>=\active + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other + \catcode`\%=\other + \catcode`+=\other % avoid \+ for paranoia even though we've turned it off + % + \catcode`\\=\active + % + % @ is our escape character in .aux files, and we need braces. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\@=0 +} + +\def\readdatafile#1{% +\begingroup + \setupdatafile + \input\jobname.#1 +\endgroup} + + +\message{insertions,} +% including footnotes. + +\newcount \footnoteno + +% The trailing space in the following definition for supereject is +% vital for proper filling; pages come out unaligned when you do a +% pagealignmacro call if that space before the closing brace is +% removed. (Generally, numeric constants should always be followed by a +% space to prevent strange expansion errors.) +\def\supereject{\par\penalty -20000\footnoteno =0 } + +% @footnotestyle is meaningful for Info output only. +\let\footnotestyle=\comment + +{\catcode `\@=11 +% +% Auto-number footnotes. Otherwise like plain. +\gdef\footnote{% + \global\advance\footnoteno by \@ne + \edef\thisfootno{$^{\the\footnoteno}$}% + % + % In case the footnote comes at the end of a sentence, preserve the + % extra spacing after we do the footnote number. + \let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \dofootnote +}% + +% Don't bother with the trickery in plain.tex to not require the +% footnote text as a parameter. Our footnotes don't need to be so general. +% +% Oh yes, they do; otherwise, @ifset (and anything else that uses +% \parseargline) fails inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\gdef\dofootnote{% + \insert\footins\bgroup + % + % Nested footnotes are not supported in TeX, that would take a lot + % more work. (\startsavinginserts does not suffice.) + \let\footnote=\errfootnotenest + % + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. + \hsize=\txipagewidth + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip + \rightskip\z@skip + \spaceskip\z@skip + \xspaceskip\z@skip + \parindent\defaultparindent + % + \smallfonts \rm + % + % Because we use hanging indentation in footnotes, a @noindent appears + % to exdent this text, so make it be a no-op. makeinfo does not use + % hanging indentation so @noindent can still be needed within footnote + % text after an @example or the like (not that this is good style). + \let\noindent = \relax + % + % Hang the footnote text off the number. Use \everypar in case the + % footnote extends for more than one paragraph. + \everypar = {\hang}% + \textindent{\thisfootno}% + % + % Don't crash into the line above the footnote text. Since this + % expands into a box, it must come within the paragraph, lest it + % provide a place where TeX can split the footnote. + \footstrut + % + % Invoke rest of plain TeX footnote routine. + \futurelet\next\fo@t +} +}%end \catcode `\@=11 + +\def\errfootnotenest{% + \errhelp=\EMsimple + \errmessage{Nested footnotes not supported in texinfo.tex, + even though they work in makeinfo; sorry} +} + +\def\errfootnoteheading{% + \errhelp=\EMsimple + \errmessage{Footnotes in chapters, sections, etc., are not supported} +} + +% In case a @footnote appears in a vbox, save the footnote text and create +% the real \insert just after the vbox finished. Otherwise, the insertion +% would be lost. +% Similarly, if a @footnote appears inside an alignment, save the footnote +% text to a box and make the \insert when a row of the table is finished. +% And the same can be done for other insert classes. --kasal, 16nov03. +% +% Replace the \insert primitive by a cheating macro. +% Deeper inside, just make sure that the saved insertions are not spilled +% out prematurely. +% +\def\startsavinginserts{% + \ifx \insert\ptexinsert + \let\insert\saveinsert + \else + \let\checkinserts\relax + \fi +} + +% This \insert replacement works for both \insert\footins{foo} and +% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. +% +\def\saveinsert#1{% + \edef\next{\noexpand\savetobox \makeSAVEname#1}% + \afterassignment\next + % swallow the left brace + \let\temp = +} +\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} +\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} + +\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} + +\def\placesaveins#1{% + \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname + {\box#1}% +} + +% eat @SAVE -- beware, all of them have catcode \other: +{ + \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) + \gdef\gobblesave @SAVE{} +} + +% initialization: +\def\newsaveins #1{% + \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% + \next +} +\def\newsaveinsX #1{% + \csname newbox\endcsname #1% + \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts + \checksaveins #1}% +} + +% initialize: +\let\checkinserts\empty +\newsaveins\footins +\newsaveins\margin + + +% @image. We use the macros from epsf.tex to support this. +% If epsf.tex is not installed and @image is used, we complain. +% +% Check for and read epsf.tex up front. If we read it only at @image +% time, we might be inside a group, and then its definitions would get +% undone and the next image would fail. +\openin 1 = epsf.tex +\ifeof 1 \else + % Do not bother showing banner with epsf.tex v2.7k (available in + % doc/epsf.tex and on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex +\fi +\closein 1 +% +% We will only complain once about lack of epsf.tex. +\newif\ifwarnednoepsf +\newhelp\noepsfhelp{epsf.tex must be installed for images to + work. It is also included in the Texinfo distribution, or you can get + it from https://ctan.org/texarchive/macros/texinfo/texinfo/doc/epsf.tex.} +% +\def\image#1{% + \ifx\epsfbox\thisisundefined + \ifwarnednoepsf \else + \errhelp = \noepsfhelp + \errmessage{epsf.tex not found, images will be ignored}% + \global\warnednoepsftrue + \fi + \else + \imagexxx #1,,,,,\finish + \fi +} + +% Approximate height of a line in the standard text font. +\newdimen\capheight +\setbox0=\vbox{\tenrm H} +\capheight=\ht0 + +% +% Arguments to @image: +% #1 is (mandatory) image filename; we tack on .eps extension. +% #2 is (optional) width, #3 is (optional) height. +% #4 is (ignored optional) html alt text. +% #5 is (ignored optional) extension. +% #6 is just the usual extra ignored arg for parsing stuff. +\newif\ifimagevmode +\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 + \makevalueexpandable + \ifvmode + \imagevmodetrue + \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. + \vskip\parskip + % + % Place image in a \vtop for a top page margin that is (close to) correct, + % as \topskip glue is relative to the first baseline. + \vtop\bgroup \kern -\capheight \vskip-\parskip + \fi + % + \ifx\centersub\centerV + % For @center @image, enter vertical mode and add vertical space + % Enter an extra \parskip because @center doesn't add space itself. + \vbox\bgroup\vskip\parskip\medskip\vskip\parskip + \else + % Enter horizontal mode so that indentation from an enclosing + % environment such as @quotation is respected. + % However, if we're at the top level, we don't want the + % normal paragraph indentation. + \imageindent + \fi + % + % Output the image. + \ifpdf + % For pdfTeX and LuaTeX <= 0.80 + \dopdfimage{#1}{#2}{#3}% + \else + \ifxetex + \doxeteximage{#1}{#2}{#3}% + \else + % For epsf.tex + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \epsfbox{#1.eps}% + \fi + \fi + % + \ifimagevmode + \egroup + \medskip % space after a standalone image + \fi + \ifx\centersub\centerV % @center @image + \medskip + \egroup % close \vbox + \fi +\endgroup} + + +% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, +% etc. We don't actually implement floating yet, we always include the +% float "here". But it seemed the best name for the future. +% +\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} + +% There may be a space before second and/or third parameter; delete it. +\def\eatcommaspace#1, {#1,} + +% #1 is the optional FLOATTYPE, the text label for this float, typically +% "Figure", "Table", "Example", etc. Can't contain commas. If omitted, +% this float will not be numbered and cannot be referred to. +% +% #2 is the optional xref label. Also must be present for the float to +% be referable. +% +% #3 is the optional positioning argument; for now, it is ignored. It +% will somehow specify the positions allowed to float to (here, top, bottom). +% +% We keep a separate counter for each FLOATTYPE, which we reset at each +% chapter-level command. +\let\resetallfloatnos=\empty +% +\def\dofloat#1,#2,#3,#4\finish{% + \let\thiscaption=\empty + \let\thisshortcaption=\empty + % + % don't lose footnotes inside @float. + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % + \startsavinginserts + % + % We can't be used inside a paragraph. + \par + % + \vtop\bgroup + \def\floattype{#1}% + \def\floatlabel{#2}% + \def\floatloc{#3}% we do nothing with this yet. + % + \ifx\floattype\empty + \let\safefloattype=\empty + \else + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + \fi + % + % If label is given but no type, we handle that as the empty type. + \ifx\floatlabel\empty \else + % We want each FLOATTYPE to be numbered separately (Figure 1, + % Table 1, Figure 2, ...). (And if no label, no number.) + % + \expandafter\getfloatno\csname\safefloattype floatno\endcsname + \global\advance\floatno by 1 + % + {% + % This magic value for the third argument of \setref is output as + % the XREFLABEL-title value. \xrefX uses it to distinguish float + % labels (which have a completely different output format) from + % node and anchor labels. And \xrdef uses it to construct the + % lists of floats. + % + \edef\tmp{\noexpand\setref{\floatlabel}{Yfloat}% + {\floatmagic=\safefloattype}}% + \tmp + }% + \fi + % + % start with \parskip glue, I guess. + \vskip\parskip + % + % Don't suppress indentation if a float happens to start a section. + \restorefirstparagraphindent +} + +% we have these possibilities: +% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap +% @float Foo,lbl & no caption: Foo 1.1 +% @float Foo & @caption{Cap}: Foo: Cap +% @float Foo & no caption: Foo +% @float ,lbl & Caption{Cap}: 1.1: Cap +% @float ,lbl & no caption: 1.1 +% @float & @caption{Cap}: Cap +% @float & no caption: +% +\def\Efloat{% + \let\floatident = \empty + % + % In all cases, if we have a float type, it comes first. + \ifx\floattype\empty \else \def\floatident{\floattype}\fi + % + % If we have an xref label, the number comes next. + \ifx\floatlabel\empty \else + \ifx\floattype\empty \else % if also had float type, need tie first. + \appendtomacro\floatident{\tie}% + \fi + % the number. + \appendtomacro\floatident{\chaplevelprefix\the\floatno}% + \fi + % + % Start the printed caption with what we've constructed in + % \floatident, but keep it separate; we need \floatident again. + \let\captionline = \floatident + % + \ifx\thiscaption\empty \else + \ifx\floatident\empty \else + \appendtomacro\captionline{: }% had ident, so need a colon between + \fi + % + % caption text. + \appendtomacro\captionline{\scanexp\thiscaption}% + \fi + % + % If we have anything to print, print it, with space before. + % Eventually this needs to become an \insert. + \ifx\captionline\empty \else + \vskip.5\parskip + \captionline + % + % Space below caption. + \vskip\parskip + \fi + % + % If have an xref label, write the list of floats info. Do this + % after the caption, to avoid chance of it being a breakpoint. + \ifx\floatlabel\empty \else + % Write the text that goes in the lof to the aux file as + % \floatlabel-lof. Besides \floatident, we include the short + % caption if specified, else the full caption if specified, else nothing. + {% + \requireauxfile + \atdummies + % + \ifx\thisshortcaption\empty + \def\gtemp{\thiscaption}% + \else + \def\gtemp{\thisshortcaption}% + \fi + \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident + \ifx\gtemp\empty \else : \gtemp \fi}}% + }% + \fi + \egroup % end of \vtop + % + \checkinserts +} + +% Append the tokens #2 to the definition of macro #1, not expanding either. +% +\def\appendtomacro#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2}% +} + +% @caption, @shortcaption +% +\def\caption{\docaption\thiscaption} +\def\shortcaption{\docaption\thisshortcaption} +\def\docaption{\checkenv\float \bgroup\scanctxt\docaptionz} +\def\docaptionz#1#2{\egroup \def#1{#2}} + +% The parameter is the control sequence identifying the counter we are +% going to use. Create it if it doesn't exist and assign it to \floatno. +\def\getfloatno#1{% + \ifx#1\relax + % Haven't seen this figure type before. + \csname newcount\endcsname #1% + % + % Remember to reset this floatno at the next chap. + \expandafter\gdef\expandafter\resetallfloatnos + \expandafter{\resetallfloatnos #1=0 }% + \fi + \let\floatno#1% +} + +% \setref calls this to get the XREFLABEL-snt value. We want an @xref +% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we +% first read the @float command. +% +\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% + +% Magic string used for the XREFLABEL-title value, so \xrefX can +% distinguish floats from other xref types. +\def\floatmagic{!!float!!} + +% #1 is the control sequence we are passed; we expand into a conditional +% which is true if #1 represents a float ref. That is, the magic +% value which we passed to \setref above. +% +\def\iffloat#1{\expandafter\doiffloat#1==\finish} +% +% #1 is (maybe) the \floatmagic string. If so, #2 will be the +% (safe) float type for this float. We set \iffloattype to #2. +% +\def\doiffloat#1=#2=#3\finish{% + \def\temp{#1}% + \def\iffloattype{#2}% + \ifx\temp\floatmagic +} + +% @listoffloats FLOATTYPE - print a list of floats like a table of contents. +% +\parseargdef\listoffloats{% + \def\floattype{#1}% floattype + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + % + % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. + \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax + \ifhavexrefs + % if the user said @listoffloats foo but never @float foo. + \message{\linenumber No `\safefloattype' floats to list.}% + \fi + \else + \begingroup + \leftskip=\tocindent % indent these entries like a toc + \let\do=\listoffloatsdo + \csname floatlist\safefloattype\endcsname + \endgroup + \fi +} + +% This is called on each entry in a list of floats. We're passed the +% xref label, in the form LABEL-title, which is how we save it in the +% aux file. We strip off the -title and look up \XRLABEL-lof, which +% has the text we're supposed to typeset here. +% +% Figures without xref labels will not be included in the list (since +% they won't appear in the aux file). +% +\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} +\def\listoffloatsdoentry#1-title\finish{{% + % Can't fully expand XR#1-lof because it can contain anything. Just + % pass the control sequence. On the other hand, XR#1-pg is just the + % page number, and we want to fully expand that so we can get a link + % in pdf output. + \toksA = \expandafter{\csname XR#1-lof\endcsname}% + % + % use the same \entry macro we use to generate the TOC and index. + \let\entry\entryinternal + \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% + \writeentry +}} + + +\message{localization,} + +% For single-language documents, @documentlanguage is usually given very +% early, just after @documentencoding. Single argument is the language +% (de) or locale (de_DE) abbreviation. +% +{ + \catcode`\_ = \active + \globaldefs=1 +\parseargdef\documentlanguage{% + \tex % read txi-??.tex file in plain TeX. + % Read the file by the name they passed if it exists. + \let_ = \normalunderscore % normal _ character for filename test + \openin 1 txi-#1.tex + \ifeof 1 + \documentlanguagetrywithoutunderscore #1_\finish + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 + \endgroup % end raw TeX +} +% +% If they passed de_DE, and txi-de_DE.tex doesn't exist, +% try txi-de.tex. +% +\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% + \openin 1 txi-#1.tex + \ifeof 1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 +} +}% end of special _ catcode +% +\newhelp\nolanghelp{The given language definition file cannot be found or +is empty. Maybe you need to install it? Putting it in the current +directory should work if nowhere else does.} + +% This macro is called from txi-??.tex files; the first argument is the +% \language name to set (without the "\lang@" prefix), the second and +% third args are \{left,right}hyphenmin. +% +% The language names to pass are determined when the format is built. +% See the etex.log file created at that time, e.g., +% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. +% +% With TeX Live 2008, etex now includes hyphenation patterns for all +% available languages. This means we can support hyphenation in +% Texinfo, at least to some extent. (This still doesn't solve the +% accented characters problem.) +% +\catcode`@=11 +\def\txisetlanguage#1#2#3{% + % do not set the language if the name is undefined in the current TeX. + \expandafter\ifx\csname lang@#1\endcsname \relax + \message{no patterns for #1}% + \else + \global\language = \csname lang@#1\endcsname + \fi + % but there is no harm in adjusting the hyphenmin values regardless. + \global\lefthyphenmin = #2\relax + \global\righthyphenmin = #3\relax +} + +% XeTeX and LuaTeX can handle Unicode natively. +% Their default I/O uses UTF-8 sequences instead of a byte-wise operation. +% Other TeX engines' I/O (pdfTeX, etc.) is byte-wise. +% +\newif\iftxinativeunicodecapable +\newif\iftxiusebytewiseio + +\ifxetex + \txinativeunicodecapabletrue + \txiusebytewiseiofalse +\else + \ifluatex + \txinativeunicodecapabletrue + \txiusebytewiseiofalse + \else + \txinativeunicodecapablefalse + \txiusebytewiseiotrue + \fi +\fi + +\let\xetexpreauxfile\relax +\let\xetexpostauxfile\relax + +% Set I/O by bytes instead of UTF-8 sequence for XeTeX and LuaTex +% for non-UTF-8 (byte-wise) encodings. +% +\def\setbytewiseio{% + \ifxetex + % For document root file + \XeTeXinputencoding "bytes" + % + % Setting for subsequent files to be read with @include. + \XeTeXdefaultencoding "bytes" + % + % Use UTF-8 for reading auxiliary index and TOC files, which are + % always output in UTF-8 with XeTeX. + \def\xetexpreauxfile{\XeTeXdefaultencoding "UTF-8"}% + \def\xetexpostauxfile{\XeTeXdefaultencoding "bytes"}% + \fi + + \ifluatex + \directlua{ + local utf8_char, byte, gsub = unicode.utf8.char, string.byte, string.gsub + local function convert_char (char) + return utf8_char(byte(char)) + end + + local function convert_line (line) + return gsub(line, ".", convert_char) + end + + callback.register("process_input_buffer", convert_line) + + local function convert_line_out (line) + local line_out = "" + for c in string.utfvalues(line) do + line_out = line_out .. string.char(c) + end + return line_out + end + + callback.register("process_output_buffer", convert_line_out) + } + \fi + + \txiusebytewiseiotrue +} + + +% Helpers for encodings. +% Set the catcode of characters 128 through 255 to the specified number. +% +\def\setnonasciicharscatcode#1{% + \count255=128 + \loop\ifnum\count255<256 + \global\catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +\def\setnonasciicharscatcodenonglobal#1{% + \count255=128 + \loop\ifnum\count255<256 + \catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +% @documentencoding sets the definition of non-ASCII characters +% according to the specified encoding. +% +\def\documentencoding{\parseargusing\filenamecatcodes\documentencodingzzz} +\def\documentencodingzzz#1{% + % + % Encoding being declared for the document. + \def\declaredencoding{\csname #1.enc\endcsname}% + % + % Supported encodings: names converted to tokens in order to be able + % to compare them with \ifx. + \def\ascii{\csname US-ASCII.enc\endcsname}% + \def\latnine{\csname ISO-8859-15.enc\endcsname}% + \def\latone{\csname ISO-8859-1.enc\endcsname}% + \def\lattwo{\csname ISO-8859-2.enc\endcsname}% + \def\utfeight{\csname UTF-8.enc\endcsname}% + % + \ifx \declaredencoding \ascii + \asciichardefs + % + \else \ifx \declaredencoding \lattwo + \iftxinativeunicodecapable + \setbytewiseio + \fi + \setnonasciicharscatcode\active + \lattwochardefs + % + \else \ifx \declaredencoding \latone + \iftxinativeunicodecapable + \setbytewiseio + \fi + \setnonasciicharscatcode\active + \latonechardefs + % + \else \ifx \declaredencoding \latnine + \iftxinativeunicodecapable + \setbytewiseio + \fi + \setnonasciicharscatcode\active + \latninechardefs + % + \else \ifx \declaredencoding \utfeight + \iftxinativeunicodecapable + % For native Unicode handling (XeTeX and LuaTeX) + \nativeunicodechardefs + \else + % For treating UTF-8 as byte sequences (TeX, eTeX and pdfTeX). + % Since we already invoke \utfeightchardefs at the top level, + % making non-ascii chars active is sufficient. + \setnonasciicharscatcode\active + \fi + % + \else + \message{Ignoring unknown document encoding: #1.}% + % + \fi % utfeight + \fi % latnine + \fi % latone + \fi % lattwo + \fi % ascii + % + \ifxetex + \ifx \declaredencoding \utfeight + \else + \ifx \declaredencoding \ascii + \else + \message{Warning: XeTeX with non-UTF-8 encodings cannot handle % + non-ASCII characters in auxiliary files.}% + \fi + \fi + \fi +} + +% A message to be logged when using a character that isn't available +% the default font encoding (OT1). +% +\def\missingcharmsg#1{\message{Character missing, sorry: #1.}} + +% Take account of \c (plain) vs. \, (Texinfo) difference. +\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} + +\def\gdefchar#1#2{% +\gdef#1{% + \ifpassthroughchars + \string#1% + \else + #2% + \fi +}} + +\begingroup + +% Make non-ASCII characters active for defining the character definition +% macros. +\setnonasciicharscatcode\active + +% Latin1 (ISO-8859-1) character definitions. +\gdef\latonechardefs{% + \gdefchar^^a0{\tie} + \gdefchar^^a1{\exclamdown} + \gdefchar^^a2{{\tcfont \char162}} % cent + \gdefchar^^a3{\pounds{}} + \gdefchar^^a4{{\tcfont \char164}} % currency + \gdefchar^^a5{{\tcfont \char165}} % yen + \gdefchar^^a6{{\tcfont \char166}} % broken bar + \gdefchar^^a7{\S} + \gdefchar^^a8{\"{}} + \gdefchar^^a9{\copyright{}} + \gdefchar^^aa{\ordf} + \gdefchar^^ab{\guillemetleft{}} + \gdefchar^^ac{\ensuremath\lnot} + \gdefchar^^ad{\-} + \gdefchar^^ae{\registeredsymbol{}} + \gdefchar^^af{\={}} + % + \gdefchar^^b0{\textdegree} + \gdefchar^^b1{$\pm$} + \gdefchar^^b2{$^2$} + \gdefchar^^b3{$^3$} + \gdefchar^^b4{\'{}} + \gdefchar^^b5{$\mu$} + \gdefchar^^b6{\P} + \gdefchar^^b7{\ensuremath\cdot} + \gdefchar^^b8{\cedilla\ } + \gdefchar^^b9{$^1$} + \gdefchar^^ba{\ordm} + \gdefchar^^bb{\guillemetright{}} + \gdefchar^^bc{$1\over4$} + \gdefchar^^bd{$1\over2$} + \gdefchar^^be{$3\over4$} + \gdefchar^^bf{\questiondown} + % + \gdefchar^^c0{\`A} + \gdefchar^^c1{\'A} + \gdefchar^^c2{\^A} + \gdefchar^^c3{\~A} + \gdefchar^^c4{\"A} + \gdefchar^^c5{\ringaccent A} + \gdefchar^^c6{\AE} + \gdefchar^^c7{\cedilla C} + \gdefchar^^c8{\`E} + \gdefchar^^c9{\'E} + \gdefchar^^ca{\^E} + \gdefchar^^cb{\"E} + \gdefchar^^cc{\`I} + \gdefchar^^cd{\'I} + \gdefchar^^ce{\^I} + \gdefchar^^cf{\"I} + % + \gdefchar^^d0{\DH} + \gdefchar^^d1{\~N} + \gdefchar^^d2{\`O} + \gdefchar^^d3{\'O} + \gdefchar^^d4{\^O} + \gdefchar^^d5{\~O} + \gdefchar^^d6{\"O} + \gdefchar^^d7{$\times$} + \gdefchar^^d8{\O} + \gdefchar^^d9{\`U} + \gdefchar^^da{\'U} + \gdefchar^^db{\^U} + \gdefchar^^dc{\"U} + \gdefchar^^dd{\'Y} + \gdefchar^^de{\TH} + \gdefchar^^df{\ss} + % + \gdefchar^^e0{\`a} + \gdefchar^^e1{\'a} + \gdefchar^^e2{\^a} + \gdefchar^^e3{\~a} + \gdefchar^^e4{\"a} + \gdefchar^^e5{\ringaccent a} + \gdefchar^^e6{\ae} + \gdefchar^^e7{\cedilla c} + \gdefchar^^e8{\`e} + \gdefchar^^e9{\'e} + \gdefchar^^ea{\^e} + \gdefchar^^eb{\"e} + \gdefchar^^ec{\`{\dotless i}} + \gdefchar^^ed{\'{\dotless i}} + \gdefchar^^ee{\^{\dotless i}} + \gdefchar^^ef{\"{\dotless i}} + % + \gdefchar^^f0{\dh} + \gdefchar^^f1{\~n} + \gdefchar^^f2{\`o} + \gdefchar^^f3{\'o} + \gdefchar^^f4{\^o} + \gdefchar^^f5{\~o} + \gdefchar^^f6{\"o} + \gdefchar^^f7{$\div$} + \gdefchar^^f8{\o} + \gdefchar^^f9{\`u} + \gdefchar^^fa{\'u} + \gdefchar^^fb{\^u} + \gdefchar^^fc{\"u} + \gdefchar^^fd{\'y} + \gdefchar^^fe{\th} + \gdefchar^^ff{\"y} +} + +% Latin9 (ISO-8859-15) encoding character definitions. +\gdef\latninechardefs{% + % Encoding is almost identical to Latin1. + \latonechardefs + % + \gdefchar^^a4{\euro{}} + \gdefchar^^a6{\v S} + \gdefchar^^a8{\v s} + \gdefchar^^b4{\v Z} + \gdefchar^^b8{\v z} + \gdefchar^^bc{\OE} + \gdefchar^^bd{\oe} + \gdefchar^^be{\"Y} +} + +% Latin2 (ISO-8859-2) character definitions. +\gdef\lattwochardefs{% + \gdefchar^^a0{\tie} + \gdefchar^^a1{\ogonek{A}} + \gdefchar^^a2{\u{}} + \gdefchar^^a3{\L} + \gdefchar^^a4{\missingcharmsg{CURRENCY SIGN}} + \gdefchar^^a5{\v L} + \gdefchar^^a6{\'S} + \gdefchar^^a7{\S} + \gdefchar^^a8{\"{}} + \gdefchar^^a9{\v S} + \gdefchar^^aa{\cedilla S} + \gdefchar^^ab{\v T} + \gdefchar^^ac{\'Z} + \gdefchar^^ad{\-} + \gdefchar^^ae{\v Z} + \gdefchar^^af{\dotaccent Z} + % + \gdefchar^^b0{\textdegree} + \gdefchar^^b1{\ogonek{a}} + \gdefchar^^b2{\ogonek{ }} + \gdefchar^^b3{\l} + \gdefchar^^b4{\'{}} + \gdefchar^^b5{\v l} + \gdefchar^^b6{\'s} + \gdefchar^^b7{\v{}} + \gdefchar^^b8{\cedilla\ } + \gdefchar^^b9{\v s} + \gdefchar^^ba{\cedilla s} + \gdefchar^^bb{\v t} + \gdefchar^^bc{\'z} + \gdefchar^^bd{\H{}} + \gdefchar^^be{\v z} + \gdefchar^^bf{\dotaccent z} + % + \gdefchar^^c0{\'R} + \gdefchar^^c1{\'A} + \gdefchar^^c2{\^A} + \gdefchar^^c3{\u A} + \gdefchar^^c4{\"A} + \gdefchar^^c5{\'L} + \gdefchar^^c6{\'C} + \gdefchar^^c7{\cedilla C} + \gdefchar^^c8{\v C} + \gdefchar^^c9{\'E} + \gdefchar^^ca{\ogonek{E}} + \gdefchar^^cb{\"E} + \gdefchar^^cc{\v E} + \gdefchar^^cd{\'I} + \gdefchar^^ce{\^I} + \gdefchar^^cf{\v D} + % + \gdefchar^^d0{\DH} + \gdefchar^^d1{\'N} + \gdefchar^^d2{\v N} + \gdefchar^^d3{\'O} + \gdefchar^^d4{\^O} + \gdefchar^^d5{\H O} + \gdefchar^^d6{\"O} + \gdefchar^^d7{$\times$} + \gdefchar^^d8{\v R} + \gdefchar^^d9{\ringaccent U} + \gdefchar^^da{\'U} + \gdefchar^^db{\H U} + \gdefchar^^dc{\"U} + \gdefchar^^dd{\'Y} + \gdefchar^^de{\cedilla T} + \gdefchar^^df{\ss} + % + \gdefchar^^e0{\'r} + \gdefchar^^e1{\'a} + \gdefchar^^e2{\^a} + \gdefchar^^e3{\u a} + \gdefchar^^e4{\"a} + \gdefchar^^e5{\'l} + \gdefchar^^e6{\'c} + \gdefchar^^e7{\cedilla c} + \gdefchar^^e8{\v c} + \gdefchar^^e9{\'e} + \gdefchar^^ea{\ogonek{e}} + \gdefchar^^eb{\"e} + \gdefchar^^ec{\v e} + \gdefchar^^ed{\'{\dotless{i}}} + \gdefchar^^ee{\^{\dotless{i}}} + \gdefchar^^ef{\v d} + % + \gdefchar^^f0{\dh} + \gdefchar^^f1{\'n} + \gdefchar^^f2{\v n} + \gdefchar^^f3{\'o} + \gdefchar^^f4{\^o} + \gdefchar^^f5{\H o} + \gdefchar^^f6{\"o} + \gdefchar^^f7{$\div$} + \gdefchar^^f8{\v r} + \gdefchar^^f9{\ringaccent u} + \gdefchar^^fa{\'u} + \gdefchar^^fb{\H u} + \gdefchar^^fc{\"u} + \gdefchar^^fd{\'y} + \gdefchar^^fe{\cedilla t} + \gdefchar^^ff{\dotaccent{}} +} + +\endgroup % active chars + +% UTF-8 character definitions. +% +% This code to support UTF-8 is based on LaTeX's utf8.def, with some +% changes for Texinfo conventions. It is included here under the GPL by +% permission from Frank Mittelbach and the LaTeX team. +% +\newcount\countUTFx +\newcount\countUTFy +\newcount\countUTFz + +\gdef\UTFviiiTwoOctets#1#2{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\endcsname} +% +\gdef\UTFviiiThreeOctets#1#2#3{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} +% +\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} + +\gdef\UTFviiiDefined#1{% + \ifx #1\relax + \ifutfviiidefinedwarning + \message{\linenumber Unicode char \string #1 not defined for Texinfo}% + \fi + \else + \expandafter #1% + \fi +} +\newif\ifutfviiidefinedwarning +\utfviiidefinedwarningtrue + +% Give non-ASCII bytes the active definitions for processing UTF-8 sequences +\begingroup + \catcode`\~13 + \catcode`\$12 + \catcode`\"12 + + % Loop from \countUTFx to \countUTFy, performing \UTFviiiTmp + % substituting ~ and $ with a character token of that value. + \gdef\UTFviiiLoop{% + \catcode\countUTFx\active + \uccode`\~\countUTFx + \uccode`\$\countUTFx + \uppercase\expandafter{\UTFviiiTmp}% + \advance\countUTFx by 1 + \ifnum\countUTFx < \countUTFy + \expandafter\UTFviiiLoop + \fi} + % + % For bytes other than the first in a UTF-8 sequence. Not expected to + % be expanded except when writing to auxiliary files. + \countUTFx = "80 + \countUTFy = "C2 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $\fi}}% + \UTFviiiLoop + + \countUTFx = "C2 + \countUTFy = "E0 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $% + \else\expandafter\UTFviiiTwoOctets\expandafter$\fi}}% + \UTFviiiLoop + + \countUTFx = "E0 + \countUTFy = "F0 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $% + \else\expandafter\UTFviiiThreeOctets\expandafter$\fi}}% + \UTFviiiLoop + + \countUTFx = "F0 + \countUTFy = "F4 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $% + \else\expandafter\UTFviiiFourOctets\expandafter$\fi + }}% + \UTFviiiLoop + % + % for pdftex only, used to expand ASCII to UTF-16BE. + \gdef\asciitounicode{% + \countUTFx = "20 + \countUTFy = "80 + \def\UTFviiiTmp{% + \def~{\nullbyte $}}% + \UTFviiiLoop + } + {\catcode0=11 \gdef\nullbyte{^^00}}% +\endgroup + +\def\globallet{\global\let} % save some \expandafter's below + +% @U{xxxx} to produce U+xxxx, if we support it. +\def\U#1{% + \expandafter\ifx\csname uni:#1\endcsname \relax + \iftxinativeunicodecapable + % All Unicode characters can be used if native Unicode handling is + % active. However, if the font does not have the glyph, + % letters are missing. + \begingroup + \uccode`\.="#1\relax + \uppercase{.} + \endgroup + \else + \errhelp = \EMsimple + \errmessage{Unicode character U+#1 not supported, sorry}% + \fi + \else + \csname uni:#1\endcsname + \fi +} + +% These macros are used here to construct the names of macros +% that expand to the definitions for UTF-8 sequences. +\def\UTFviiiTwoOctetsName#1#2{% + \csname u8:#1\string #2\endcsname}% +\def\UTFviiiThreeOctetsName#1#2#3{% + \csname u8:#1\string #2\string #3\endcsname}% +\def\UTFviiiFourOctetsName#1#2#3#4{% + \csname u8:#1\string #2\string #3\string #4\endcsname}% + +% generate UTF-16 from codepoint +\def\utfsixteentotoks#1#2{% + \countUTFz = "#2\relax + \ifnum \countUTFz > 65535 + % doesn't work for codepoints > U+FFFF + % we don't define glyphs for any of these anyway, so it doesn't matter + #1={U+#2}% + \else + \countUTFx = \countUTFz + \divide\countUTFx by 256 + \countUTFy = \countUTFx + \multiply\countUTFx by 256 + \advance\countUTFz by -\countUTFx + \uccode`,=\countUTFy + \uccode`;=\countUTFz + \ifnum\countUTFy = 0 + \uppercase{#1={\nullbyte\string;}}% + \else\ifnum\countUTFz = 0 + \uppercase{#1={\string,\nullbyte}}% + \else + \uppercase{#1={\string,\string;}}% + \fi\fi + % NB \uppercase cannot insert a null byte + \fi +} + +\newif\ifutfbytespdf +\utfbytespdffalse + +% For UTF-8 byte sequences (TeX, e-TeX and pdfTeX), +% provide a definition macro to replace a Unicode character; +% this gets used by the @U command +% +\begingroup + \catcode`\"=12 + \catcode`\<=12 + \catcode`\.=12 + \catcode`\,=12 + \catcode`\;=12 + \catcode`\!=12 + \catcode`\~=13 + \gdef\DeclareUnicodeCharacterUTFviii#1#2{% + \countUTFz = "#1\relax + \begingroup + \parseXMLCharref + % + % Completely expand \UTFviiiTmp, which looks like: + % 1. \UTFviiTwoOctetsName B1 B2 + % 2. \csname u8:B1 \string B2 \endcsname + % 3. \u8: B1 B2 (a single control sequence token) + \xdef\UTFviiiTmp{\UTFviiiTmp}% + % + \ifpdf + \toksA={#2}% + \utfsixteentotoks\toksB{#1}% + \expandafter\xdef\UTFviiiTmp{% + \noexpand\ifutfbytespdf\noexpand\utfbytes{\the\toksB}% + \noexpand\else\the\toksA\noexpand\fi}% + \else + \expandafter\gdef\UTFviiiTmp{#2}% + \fi + % + \expandafter\ifx\csname uni:#1\endcsname \relax \else + \message{Internal error, already defined: #1}% + \fi + % + % define an additional control sequence for this code point. + \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp + \endgroup} + % + % Given the value in \countUTFz as a Unicode code point, set + % \UTFviiiTmp to one of the \UTVviii*OctetsName macros followed by + % the corresponding UTF-8 sequence. + \gdef\parseXMLCharref{% + \ifnum\countUTFz < "20\relax + \errhelp = \EMsimple + \errmessage{Cannot define Unicode char value < 0020}% + \else\ifnum\countUTFz < "800\relax + \parseUTFviiiA,% + \parseUTFviiiB C\UTFviiiTwoOctetsName.,% + \else\ifnum\countUTFz < "10000\relax + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiB E\UTFviiiThreeOctetsName.{,;}% + \else + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiA!% + \parseUTFviiiB F\UTFviiiFourOctetsName.{!,;}% + \fi\fi\fi + } + + % Extract a byte from the end of the UTF-8 representation of \countUTFx. + % It must be a non-initial byte in the sequence. + % Change \uccode of #1 for it to be used in \parseUTFviiiB as one + % of the bytes. + \gdef\parseUTFviiiA#1{% + \countUTFx = \countUTFz + \divide\countUTFz by 64 + \countUTFy = \countUTFz % Save to be the future value of \countUTFz. + \multiply\countUTFz by 64 + + % \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract + % in order to get the last five bits. + \advance\countUTFx by -\countUTFz + + % Convert this to the byte in the UTF-8 sequence. + \advance\countUTFx by 128 + \uccode `#1\countUTFx + \countUTFz = \countUTFy} + + % Used to put a UTF-8 byte sequence into \UTFviiiTmp + % #1 is the increment for \countUTFz to yield a the first byte of the UTF-8 + % sequence. + % #2 is one of the \UTFviii*OctetsName macros. + % #3 is always a full stop (.) + % #4 is a template for the other bytes in the sequence. The values for these + % bytes is substituted in here with \uppercase using the \uccode's. + \gdef\parseUTFviiiB#1#2#3#4{% + \advance\countUTFz by "#10\relax + \uccode `#3\countUTFz + \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} +\endgroup + +% For native Unicode handling (XeTeX and LuaTeX), +% provide a definition macro that sets a catcode to `other' non-globally +% +\def\DeclareUnicodeCharacterNativeOther#1#2{% + \catcode"#1=\other +} + +% Suppress ligature creation from adjacent characters. +\ifluatex + % Braces do not suppress ligature creation in LuaTeX, e.g. in of{}fice + % to suppress the "ff" ligature. Using a kern appears to be the only + % workaround. + \def\nolig{\kern0pt{}} +\else + \def\nolig{{}} +\fi + +% https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M +% U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block) +% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block) +% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A +% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B +% +% Many of our renditions are less than wonderful, and all the missing +% characters are available somewhere. Loading the necessary fonts +% awaits user request. We can't truly support Unicode without +% reimplementing everything that's been done in LaTeX for many years, +% plus probably using luatex or xetex, and who knows what else. +% We won't be doing that here in this simple file. But we can try to at +% least make most of the characters not bomb out. +% +\def\unicodechardefs{% + \DeclareUnicodeCharacter{0020}{ } % space + \DeclareUnicodeCharacter{0021}{\char"21 }% % space to terminate number + \DeclareUnicodeCharacter{0022}{\char"22 }% + \DeclareUnicodeCharacter{0023}{\char"23 }% + \DeclareUnicodeCharacter{0024}{\char"24 }% + \DeclareUnicodeCharacter{0025}{\char"25 }% + \DeclareUnicodeCharacter{0026}{\char"26 }% + \DeclareUnicodeCharacter{0027}{\char"27 }% + \DeclareUnicodeCharacter{0028}{\char"28 }% + \DeclareUnicodeCharacter{0029}{\char"29 }% + \DeclareUnicodeCharacter{002A}{\char"2A }% + \DeclareUnicodeCharacter{002B}{\char"2B }% + \DeclareUnicodeCharacter{002C}{\char"2C }% + \DeclareUnicodeCharacter{002D}{\char"2D }% + \DeclareUnicodeCharacter{002E}{\char"2E }% + \DeclareUnicodeCharacter{002F}{\char"2F }% + \DeclareUnicodeCharacter{0030}{0}% + \DeclareUnicodeCharacter{0031}{1}% + \DeclareUnicodeCharacter{0032}{2}% + \DeclareUnicodeCharacter{0033}{3}% + \DeclareUnicodeCharacter{0034}{4}% + \DeclareUnicodeCharacter{0035}{5}% + \DeclareUnicodeCharacter{0036}{6}% + \DeclareUnicodeCharacter{0037}{7}% + \DeclareUnicodeCharacter{0038}{8}% + \DeclareUnicodeCharacter{0039}{9}% + \DeclareUnicodeCharacter{003A}{\char"3A }% + \DeclareUnicodeCharacter{003B}{\char"3B }% + \DeclareUnicodeCharacter{003C}{\char"3C }% + \DeclareUnicodeCharacter{003D}{\char"3D }% + \DeclareUnicodeCharacter{003E}{\char"3E }% + \DeclareUnicodeCharacter{003F}{\char"3F }% + \DeclareUnicodeCharacter{0040}{\char"40 }% + \DeclareUnicodeCharacter{0041}{A}% + \DeclareUnicodeCharacter{0042}{B}% + \DeclareUnicodeCharacter{0043}{C}% + \DeclareUnicodeCharacter{0044}{D}% + \DeclareUnicodeCharacter{0045}{E}% + \DeclareUnicodeCharacter{0046}{F}% + \DeclareUnicodeCharacter{0047}{G}% + \DeclareUnicodeCharacter{0048}{H}% + \DeclareUnicodeCharacter{0049}{I}% + \DeclareUnicodeCharacter{004A}{J}% + \DeclareUnicodeCharacter{004B}{K}% + \DeclareUnicodeCharacter{004C}{L}% + \DeclareUnicodeCharacter{004D}{M}% + \DeclareUnicodeCharacter{004E}{N}% + \DeclareUnicodeCharacter{004F}{O}% + \DeclareUnicodeCharacter{0050}{P}% + \DeclareUnicodeCharacter{0051}{Q}% + \DeclareUnicodeCharacter{0052}{R}% + \DeclareUnicodeCharacter{0053}{S}% + \DeclareUnicodeCharacter{0054}{T}% + \DeclareUnicodeCharacter{0055}{U}% + \DeclareUnicodeCharacter{0056}{V}% + \DeclareUnicodeCharacter{0057}{W}% + \DeclareUnicodeCharacter{0058}{X}% + \DeclareUnicodeCharacter{0059}{Y}% + \DeclareUnicodeCharacter{005A}{Z}% + \DeclareUnicodeCharacter{005B}{\char"5B }% + \DeclareUnicodeCharacter{005C}{\char"5C }% + \DeclareUnicodeCharacter{005D}{\char"5D }% + \DeclareUnicodeCharacter{005E}{\char"5E }% + \DeclareUnicodeCharacter{005F}{\char"5F }% + \DeclareUnicodeCharacter{0060}{\char"60 }% + \DeclareUnicodeCharacter{0061}{a}% + \DeclareUnicodeCharacter{0062}{b}% + \DeclareUnicodeCharacter{0063}{c}% + \DeclareUnicodeCharacter{0064}{d}% + \DeclareUnicodeCharacter{0065}{e}% + \DeclareUnicodeCharacter{0066}{f}% + \DeclareUnicodeCharacter{0067}{g}% + \DeclareUnicodeCharacter{0068}{h}% + \DeclareUnicodeCharacter{0069}{i}% + \DeclareUnicodeCharacter{006A}{j}% + \DeclareUnicodeCharacter{006B}{k}% + \DeclareUnicodeCharacter{006C}{l}% + \DeclareUnicodeCharacter{006D}{m}% + \DeclareUnicodeCharacter{006E}{n}% + \DeclareUnicodeCharacter{006F}{o}% + \DeclareUnicodeCharacter{0070}{p}% + \DeclareUnicodeCharacter{0071}{q}% + \DeclareUnicodeCharacter{0072}{r}% + \DeclareUnicodeCharacter{0073}{s}% + \DeclareUnicodeCharacter{0074}{t}% + \DeclareUnicodeCharacter{0075}{u}% + \DeclareUnicodeCharacter{0076}{v}% + \DeclareUnicodeCharacter{0077}{w}% + \DeclareUnicodeCharacter{0078}{x}% + \DeclareUnicodeCharacter{0079}{y}% + \DeclareUnicodeCharacter{007A}{z}% + \DeclareUnicodeCharacter{007B}{\char"7B }% + \DeclareUnicodeCharacter{007C}{\char"7C }% + \DeclareUnicodeCharacter{007D}{\char"7D }% + \DeclareUnicodeCharacter{007E}{\char"7E }% + % \DeclareUnicodeCharacter{007F}{} % DEL + % + \DeclareUnicodeCharacter{00A0}{\tie}% + \DeclareUnicodeCharacter{00A1}{\exclamdown}% + \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent + \DeclareUnicodeCharacter{00A3}{\pounds{}}% + \DeclareUnicodeCharacter{00A4}{{\tcfont \char164}}% 0244=currency + \DeclareUnicodeCharacter{00A5}{{\tcfont \char165}}% 0245=yen + \DeclareUnicodeCharacter{00A6}{{\tcfont \char166}}% 0246=brokenbar + \DeclareUnicodeCharacter{00A7}{\S}% + \DeclareUnicodeCharacter{00A8}{\"{ }}% + \DeclareUnicodeCharacter{00A9}{\copyright{}}% + \DeclareUnicodeCharacter{00AA}{\ordf}% + \DeclareUnicodeCharacter{00AB}{\guillemetleft{}}% + \DeclareUnicodeCharacter{00AC}{\ensuremath\lnot}% + \DeclareUnicodeCharacter{00AD}{\-}% + \DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}% + \DeclareUnicodeCharacter{00AF}{\={ }}% + % + \DeclareUnicodeCharacter{00B0}{\textdegree}% + \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}% + \DeclareUnicodeCharacter{00B2}{$^2$}% + \DeclareUnicodeCharacter{00B3}{$^3$}% + \DeclareUnicodeCharacter{00B4}{\'{ }}% + \DeclareUnicodeCharacter{00B5}{$\mu$}% + \DeclareUnicodeCharacter{00B6}{\P}% + \DeclareUnicodeCharacter{00B7}{\ensuremath\cdot}% + \DeclareUnicodeCharacter{00B8}{\cedilla{ }}% + \DeclareUnicodeCharacter{00B9}{$^1$}% + \DeclareUnicodeCharacter{00BA}{\ordm}% + \DeclareUnicodeCharacter{00BB}{\guillemetright{}}% + \DeclareUnicodeCharacter{00BC}{$1\over4$}% + \DeclareUnicodeCharacter{00BD}{$1\over2$}% + \DeclareUnicodeCharacter{00BE}{$3\over4$}% + \DeclareUnicodeCharacter{00BF}{\questiondown}% + % + \DeclareUnicodeCharacter{00C0}{\`A}% + \DeclareUnicodeCharacter{00C1}{\'A}% + \DeclareUnicodeCharacter{00C2}{\^A}% + \DeclareUnicodeCharacter{00C3}{\~A}% + \DeclareUnicodeCharacter{00C4}{\"A}% + \DeclareUnicodeCharacter{00C5}{\AA}% + \DeclareUnicodeCharacter{00C6}{\AE}% + \DeclareUnicodeCharacter{00C7}{\cedilla{C}}% + \DeclareUnicodeCharacter{00C8}{\`E}% + \DeclareUnicodeCharacter{00C9}{\'E}% + \DeclareUnicodeCharacter{00CA}{\^E}% + \DeclareUnicodeCharacter{00CB}{\"E}% + \DeclareUnicodeCharacter{00CC}{\`I}% + \DeclareUnicodeCharacter{00CD}{\'I}% + \DeclareUnicodeCharacter{00CE}{\^I}% + \DeclareUnicodeCharacter{00CF}{\"I}% + % + \DeclareUnicodeCharacter{00D0}{\DH}% + \DeclareUnicodeCharacter{00D1}{\~N}% + \DeclareUnicodeCharacter{00D2}{\`O}% + \DeclareUnicodeCharacter{00D3}{\'O}% + \DeclareUnicodeCharacter{00D4}{\^O}% + \DeclareUnicodeCharacter{00D5}{\~O}% + \DeclareUnicodeCharacter{00D6}{\"O}% + \DeclareUnicodeCharacter{00D7}{\ensuremath\times}% + \DeclareUnicodeCharacter{00D8}{\O}% + \DeclareUnicodeCharacter{00D9}{\`U}% + \DeclareUnicodeCharacter{00DA}{\'U}% + \DeclareUnicodeCharacter{00DB}{\^U}% + \DeclareUnicodeCharacter{00DC}{\"U}% + \DeclareUnicodeCharacter{00DD}{\'Y}% + \DeclareUnicodeCharacter{00DE}{\TH}% + \DeclareUnicodeCharacter{00DF}{\ss}% + % + \DeclareUnicodeCharacter{00E0}{\`a}% + \DeclareUnicodeCharacter{00E1}{\'a}% + \DeclareUnicodeCharacter{00E2}{\^a}% + \DeclareUnicodeCharacter{00E3}{\~a}% + \DeclareUnicodeCharacter{00E4}{\"a}% + \DeclareUnicodeCharacter{00E5}{\aa}% + \DeclareUnicodeCharacter{00E6}{\ae}% + \DeclareUnicodeCharacter{00E7}{\cedilla{c}}% + \DeclareUnicodeCharacter{00E8}{\`e}% + \DeclareUnicodeCharacter{00E9}{\'e}% + \DeclareUnicodeCharacter{00EA}{\^e}% + \DeclareUnicodeCharacter{00EB}{\"e}% + \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}% + \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}% + \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}% + \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}% + % + \DeclareUnicodeCharacter{00F0}{\dh}% + \DeclareUnicodeCharacter{00F1}{\~n}% + \DeclareUnicodeCharacter{00F2}{\`o}% + \DeclareUnicodeCharacter{00F3}{\'o}% + \DeclareUnicodeCharacter{00F4}{\^o}% + \DeclareUnicodeCharacter{00F5}{\~o}% + \DeclareUnicodeCharacter{00F6}{\"o}% + \DeclareUnicodeCharacter{00F7}{\ensuremath\div}% + \DeclareUnicodeCharacter{00F8}{\o}% + \DeclareUnicodeCharacter{00F9}{\`u}% + \DeclareUnicodeCharacter{00FA}{\'u}% + \DeclareUnicodeCharacter{00FB}{\^u}% + \DeclareUnicodeCharacter{00FC}{\"u}% + \DeclareUnicodeCharacter{00FD}{\'y}% + \DeclareUnicodeCharacter{00FE}{\th}% + \DeclareUnicodeCharacter{00FF}{\"y}% + % + \DeclareUnicodeCharacter{0100}{\=A}% + \DeclareUnicodeCharacter{0101}{\=a}% + \DeclareUnicodeCharacter{0102}{\u{A}}% + \DeclareUnicodeCharacter{0103}{\u{a}}% + \DeclareUnicodeCharacter{0104}{\ogonek{A}}% + \DeclareUnicodeCharacter{0105}{\ogonek{a}}% + \DeclareUnicodeCharacter{0106}{\'C}% + \DeclareUnicodeCharacter{0107}{\'c}% + \DeclareUnicodeCharacter{0108}{\^C}% + \DeclareUnicodeCharacter{0109}{\^c}% + \DeclareUnicodeCharacter{010A}{\dotaccent{C}}% + \DeclareUnicodeCharacter{010B}{\dotaccent{c}}% + \DeclareUnicodeCharacter{010C}{\v{C}}% + \DeclareUnicodeCharacter{010D}{\v{c}}% + \DeclareUnicodeCharacter{010E}{\v{D}}% + \DeclareUnicodeCharacter{010F}{d'}% + % + \DeclareUnicodeCharacter{0110}{\DH}% + \DeclareUnicodeCharacter{0111}{\dh}% + \DeclareUnicodeCharacter{0112}{\=E}% + \DeclareUnicodeCharacter{0113}{\=e}% + \DeclareUnicodeCharacter{0114}{\u{E}}% + \DeclareUnicodeCharacter{0115}{\u{e}}% + \DeclareUnicodeCharacter{0116}{\dotaccent{E}}% + \DeclareUnicodeCharacter{0117}{\dotaccent{e}}% + \DeclareUnicodeCharacter{0118}{\ogonek{E}}% + \DeclareUnicodeCharacter{0119}{\ogonek{e}}% + \DeclareUnicodeCharacter{011A}{\v{E}}% + \DeclareUnicodeCharacter{011B}{\v{e}}% + \DeclareUnicodeCharacter{011C}{\^G}% + \DeclareUnicodeCharacter{011D}{\^g}% + \DeclareUnicodeCharacter{011E}{\u{G}}% + \DeclareUnicodeCharacter{011F}{\u{g}}% + % + \DeclareUnicodeCharacter{0120}{\dotaccent{G}}% + \DeclareUnicodeCharacter{0121}{\dotaccent{g}}% + \DeclareUnicodeCharacter{0122}{\cedilla{G}}% + \DeclareUnicodeCharacter{0123}{\cedilla{g}}% + \DeclareUnicodeCharacter{0124}{\^H}% + \DeclareUnicodeCharacter{0125}{\^h}% + \DeclareUnicodeCharacter{0126}{\missingcharmsg{H WITH STROKE}}% + \DeclareUnicodeCharacter{0127}{\missingcharmsg{h WITH STROKE}}% + \DeclareUnicodeCharacter{0128}{\~I}% + \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}% + \DeclareUnicodeCharacter{012A}{\=I}% + \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}% + \DeclareUnicodeCharacter{012C}{\u{I}}% + \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}% + \DeclareUnicodeCharacter{012E}{\ogonek{I}}% + \DeclareUnicodeCharacter{012F}{\ogonek{i}}% + % + \DeclareUnicodeCharacter{0130}{\dotaccent{I}}% + \DeclareUnicodeCharacter{0131}{\dotless{i}}% + \DeclareUnicodeCharacter{0132}{IJ}% + \DeclareUnicodeCharacter{0133}{ij}% + \DeclareUnicodeCharacter{0134}{\^J}% + \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}% + \DeclareUnicodeCharacter{0136}{\cedilla{K}}% + \DeclareUnicodeCharacter{0137}{\cedilla{k}}% + \DeclareUnicodeCharacter{0138}{\ensuremath\kappa}% + \DeclareUnicodeCharacter{0139}{\'L}% + \DeclareUnicodeCharacter{013A}{\'l}% + \DeclareUnicodeCharacter{013B}{\cedilla{L}}% + \DeclareUnicodeCharacter{013C}{\cedilla{l}}% + \DeclareUnicodeCharacter{013D}{L'}% should kern + \DeclareUnicodeCharacter{013E}{l'}% should kern + \DeclareUnicodeCharacter{013F}{L\U{00B7}}% + % + \DeclareUnicodeCharacter{0140}{l\U{00B7}}% + \DeclareUnicodeCharacter{0141}{\L}% + \DeclareUnicodeCharacter{0142}{\l}% + \DeclareUnicodeCharacter{0143}{\'N}% + \DeclareUnicodeCharacter{0144}{\'n}% + \DeclareUnicodeCharacter{0145}{\cedilla{N}}% + \DeclareUnicodeCharacter{0146}{\cedilla{n}}% + \DeclareUnicodeCharacter{0147}{\v{N}}% + \DeclareUnicodeCharacter{0148}{\v{n}}% + \DeclareUnicodeCharacter{0149}{'n}% + \DeclareUnicodeCharacter{014A}{\missingcharmsg{ENG}}% + \DeclareUnicodeCharacter{014B}{\missingcharmsg{eng}}% + \DeclareUnicodeCharacter{014C}{\=O}% + \DeclareUnicodeCharacter{014D}{\=o}% + \DeclareUnicodeCharacter{014E}{\u{O}}% + \DeclareUnicodeCharacter{014F}{\u{o}}% + % + \DeclareUnicodeCharacter{0150}{\H{O}}% + \DeclareUnicodeCharacter{0151}{\H{o}}% + \DeclareUnicodeCharacter{0152}{\OE}% + \DeclareUnicodeCharacter{0153}{\oe}% + \DeclareUnicodeCharacter{0154}{\'R}% + \DeclareUnicodeCharacter{0155}{\'r}% + \DeclareUnicodeCharacter{0156}{\cedilla{R}}% + \DeclareUnicodeCharacter{0157}{\cedilla{r}}% + \DeclareUnicodeCharacter{0158}{\v{R}}% + \DeclareUnicodeCharacter{0159}{\v{r}}% + \DeclareUnicodeCharacter{015A}{\'S}% + \DeclareUnicodeCharacter{015B}{\'s}% + \DeclareUnicodeCharacter{015C}{\^S}% + \DeclareUnicodeCharacter{015D}{\^s}% + \DeclareUnicodeCharacter{015E}{\cedilla{S}}% + \DeclareUnicodeCharacter{015F}{\cedilla{s}}% + % + \DeclareUnicodeCharacter{0160}{\v{S}}% + \DeclareUnicodeCharacter{0161}{\v{s}}% + \DeclareUnicodeCharacter{0162}{\cedilla{T}}% + \DeclareUnicodeCharacter{0163}{\cedilla{t}}% + \DeclareUnicodeCharacter{0164}{\v{T}}% + \DeclareUnicodeCharacter{0165}{\v{t}}% + \DeclareUnicodeCharacter{0166}{\missingcharmsg{H WITH STROKE}}% + \DeclareUnicodeCharacter{0167}{\missingcharmsg{h WITH STROKE}}% + \DeclareUnicodeCharacter{0168}{\~U}% + \DeclareUnicodeCharacter{0169}{\~u}% + \DeclareUnicodeCharacter{016A}{\=U}% + \DeclareUnicodeCharacter{016B}{\=u}% + \DeclareUnicodeCharacter{016C}{\u{U}}% + \DeclareUnicodeCharacter{016D}{\u{u}}% + \DeclareUnicodeCharacter{016E}{\ringaccent{U}}% + \DeclareUnicodeCharacter{016F}{\ringaccent{u}}% + % + \DeclareUnicodeCharacter{0170}{\H{U}}% + \DeclareUnicodeCharacter{0171}{\H{u}}% + \DeclareUnicodeCharacter{0172}{\ogonek{U}}% + \DeclareUnicodeCharacter{0173}{\ogonek{u}}% + \DeclareUnicodeCharacter{0174}{\^W}% + \DeclareUnicodeCharacter{0175}{\^w}% + \DeclareUnicodeCharacter{0176}{\^Y}% + \DeclareUnicodeCharacter{0177}{\^y}% + \DeclareUnicodeCharacter{0178}{\"Y}% + \DeclareUnicodeCharacter{0179}{\'Z}% + \DeclareUnicodeCharacter{017A}{\'z}% + \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}% + \DeclareUnicodeCharacter{017C}{\dotaccent{z}}% + \DeclareUnicodeCharacter{017D}{\v{Z}}% + \DeclareUnicodeCharacter{017E}{\v{z}}% + \DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}}% + % + \DeclareUnicodeCharacter{01C4}{D\v{Z}}% + \DeclareUnicodeCharacter{01C5}{D\v{z}}% + \DeclareUnicodeCharacter{01C6}{d\v{z}}% + \DeclareUnicodeCharacter{01C7}{LJ}% + \DeclareUnicodeCharacter{01C8}{Lj}% + \DeclareUnicodeCharacter{01C9}{lj}% + \DeclareUnicodeCharacter{01CA}{NJ}% + \DeclareUnicodeCharacter{01CB}{Nj}% + \DeclareUnicodeCharacter{01CC}{nj}% + \DeclareUnicodeCharacter{01CD}{\v{A}}% + \DeclareUnicodeCharacter{01CE}{\v{a}}% + \DeclareUnicodeCharacter{01CF}{\v{I}}% + % + \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}% + \DeclareUnicodeCharacter{01D1}{\v{O}}% + \DeclareUnicodeCharacter{01D2}{\v{o}}% + \DeclareUnicodeCharacter{01D3}{\v{U}}% + \DeclareUnicodeCharacter{01D4}{\v{u}}% + % + \DeclareUnicodeCharacter{01E2}{\={\AE}}% + \DeclareUnicodeCharacter{01E3}{\={\ae}}% + \DeclareUnicodeCharacter{01E6}{\v{G}}% + \DeclareUnicodeCharacter{01E7}{\v{g}}% + \DeclareUnicodeCharacter{01E8}{\v{K}}% + \DeclareUnicodeCharacter{01E9}{\v{k}}% + % + \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}% + \DeclareUnicodeCharacter{01F1}{DZ}% + \DeclareUnicodeCharacter{01F2}{Dz}% + \DeclareUnicodeCharacter{01F3}{dz}% + \DeclareUnicodeCharacter{01F4}{\'G}% + \DeclareUnicodeCharacter{01F5}{\'g}% + \DeclareUnicodeCharacter{01F8}{\`N}% + \DeclareUnicodeCharacter{01F9}{\`n}% + \DeclareUnicodeCharacter{01FC}{\'{\AE}}% + \DeclareUnicodeCharacter{01FD}{\'{\ae}}% + \DeclareUnicodeCharacter{01FE}{\'{\O}}% + \DeclareUnicodeCharacter{01FF}{\'{\o}}% + % + \DeclareUnicodeCharacter{021E}{\v{H}}% + \DeclareUnicodeCharacter{021F}{\v{h}}% + % + \DeclareUnicodeCharacter{0226}{\dotaccent{A}}% + \DeclareUnicodeCharacter{0227}{\dotaccent{a}}% + \DeclareUnicodeCharacter{0228}{\cedilla{E}}% + \DeclareUnicodeCharacter{0229}{\cedilla{e}}% + \DeclareUnicodeCharacter{022E}{\dotaccent{O}}% + \DeclareUnicodeCharacter{022F}{\dotaccent{o}}% + % + \DeclareUnicodeCharacter{0232}{\=Y}% + \DeclareUnicodeCharacter{0233}{\=y}% + \DeclareUnicodeCharacter{0237}{\dotless{j}}% + % + \DeclareUnicodeCharacter{02BC}{'}% + % + \DeclareUnicodeCharacter{02DB}{\ogonek{ }}% + % + % Greek letters upper case + \DeclareUnicodeCharacter{0391}{{\it A}}% + \DeclareUnicodeCharacter{0392}{{\it B}}% + \DeclareUnicodeCharacter{0393}{\ensuremath{\mit\Gamma}}% + \DeclareUnicodeCharacter{0394}{\ensuremath{\mit\Delta}}% + \DeclareUnicodeCharacter{0395}{{\it E}}% + \DeclareUnicodeCharacter{0396}{{\it Z}}% + \DeclareUnicodeCharacter{0397}{{\it H}}% + \DeclareUnicodeCharacter{0398}{\ensuremath{\mit\Theta}}% + \DeclareUnicodeCharacter{0399}{{\it I}}% + \DeclareUnicodeCharacter{039A}{{\it K}}% + \DeclareUnicodeCharacter{039B}{\ensuremath{\mit\Lambda}}% + \DeclareUnicodeCharacter{039C}{{\it M}}% + \DeclareUnicodeCharacter{039D}{{\it N}}% + \DeclareUnicodeCharacter{039E}{\ensuremath{\mit\Xi}}% + \DeclareUnicodeCharacter{039F}{{\it O}}% + \DeclareUnicodeCharacter{03A0}{\ensuremath{\mit\Pi}}% + \DeclareUnicodeCharacter{03A1}{{\it P}}% + %\DeclareUnicodeCharacter{03A2}{} % none - corresponds to final sigma + \DeclareUnicodeCharacter{03A3}{\ensuremath{\mit\Sigma}}% + \DeclareUnicodeCharacter{03A4}{{\it T}}% + \DeclareUnicodeCharacter{03A5}{\ensuremath{\mit\Upsilon}}% + \DeclareUnicodeCharacter{03A6}{\ensuremath{\mit\Phi}}% + \DeclareUnicodeCharacter{03A7}{{\it X}}% + \DeclareUnicodeCharacter{03A8}{\ensuremath{\mit\Psi}}% + \DeclareUnicodeCharacter{03A9}{\ensuremath{\mit\Omega}}% + % + % Vowels with accents + \DeclareUnicodeCharacter{0390}{\ensuremath{\ddot{\acute\iota}}}% + \DeclareUnicodeCharacter{03AC}{\ensuremath{\acute\alpha}}% + \DeclareUnicodeCharacter{03AD}{\ensuremath{\acute\epsilon}}% + \DeclareUnicodeCharacter{03AE}{\ensuremath{\acute\eta}}% + \DeclareUnicodeCharacter{03AF}{\ensuremath{\acute\iota}}% + \DeclareUnicodeCharacter{03B0}{\ensuremath{\acute{\ddot\upsilon}}}% + % + % Standalone accent + \DeclareUnicodeCharacter{0384}{\ensuremath{\acute{\ }}}% + % + % Greek letters lower case + \DeclareUnicodeCharacter{03B1}{\ensuremath\alpha}% + \DeclareUnicodeCharacter{03B2}{\ensuremath\beta}% + \DeclareUnicodeCharacter{03B3}{\ensuremath\gamma}% + \DeclareUnicodeCharacter{03B4}{\ensuremath\delta}% + \DeclareUnicodeCharacter{03B5}{\ensuremath\epsilon}% + \DeclareUnicodeCharacter{03B6}{\ensuremath\zeta}% + \DeclareUnicodeCharacter{03B7}{\ensuremath\eta}% + \DeclareUnicodeCharacter{03B8}{\ensuremath\theta}% + \DeclareUnicodeCharacter{03B9}{\ensuremath\iota}% + \DeclareUnicodeCharacter{03BA}{\ensuremath\kappa}% + \DeclareUnicodeCharacter{03BB}{\ensuremath\lambda}% + \DeclareUnicodeCharacter{03BC}{\ensuremath\mu}% + \DeclareUnicodeCharacter{03BD}{\ensuremath\nu}% + \DeclareUnicodeCharacter{03BE}{\ensuremath\xi}% + \DeclareUnicodeCharacter{03BF}{{\it o}}% omicron + \DeclareUnicodeCharacter{03C0}{\ensuremath\pi}% + \DeclareUnicodeCharacter{03C1}{\ensuremath\rho}% + \DeclareUnicodeCharacter{03C2}{\ensuremath\varsigma}% + \DeclareUnicodeCharacter{03C3}{\ensuremath\sigma}% + \DeclareUnicodeCharacter{03C4}{\ensuremath\tau}% + \DeclareUnicodeCharacter{03C5}{\ensuremath\upsilon}% + \DeclareUnicodeCharacter{03C6}{\ensuremath\phi}% + \DeclareUnicodeCharacter{03C7}{\ensuremath\chi}% + \DeclareUnicodeCharacter{03C8}{\ensuremath\psi}% + \DeclareUnicodeCharacter{03C9}{\ensuremath\omega}% + % + % More Greek vowels with accents + \DeclareUnicodeCharacter{03CA}{\ensuremath{\ddot\iota}}% + \DeclareUnicodeCharacter{03CB}{\ensuremath{\ddot\upsilon}}% + \DeclareUnicodeCharacter{03CC}{\ensuremath{\acute o}}% + \DeclareUnicodeCharacter{03CD}{\ensuremath{\acute\upsilon}}% + \DeclareUnicodeCharacter{03CE}{\ensuremath{\acute\omega}}% + % + % Variant Greek letters + \DeclareUnicodeCharacter{03D1}{\ensuremath\vartheta}% + \DeclareUnicodeCharacter{03D6}{\ensuremath\varpi}% + \DeclareUnicodeCharacter{03F1}{\ensuremath\varrho}% + % + \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}% + \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}% + \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}% + \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}% + \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}% + \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}% + \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}% + \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}% + \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}% + \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}% + \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}% + \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}% + % + \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}% + \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}% + % + \DeclareUnicodeCharacter{1E20}{\=G}% + \DeclareUnicodeCharacter{1E21}{\=g}% + \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}% + \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}% + \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}% + \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}% + \DeclareUnicodeCharacter{1E26}{\"H}% + \DeclareUnicodeCharacter{1E27}{\"h}% + % + \DeclareUnicodeCharacter{1E30}{\'K}% + \DeclareUnicodeCharacter{1E31}{\'k}% + \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}% + \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}% + \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}% + \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}% + \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}% + \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}% + \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}% + \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}% + \DeclareUnicodeCharacter{1E3E}{\'M}% + \DeclareUnicodeCharacter{1E3F}{\'m}% + % + \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}% + \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}% + \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}% + \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}% + \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}% + \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}% + \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}% + \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}% + \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}% + \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}% + % + \DeclareUnicodeCharacter{1E54}{\'P}% + \DeclareUnicodeCharacter{1E55}{\'p}% + \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}% + \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}% + \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}% + \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}% + \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}% + \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}% + \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}% + \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}% + % + \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}% + \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}% + \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}% + \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}% + \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}% + \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}% + \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}% + \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}% + \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}% + \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}% + % + \DeclareUnicodeCharacter{1E7C}{\~V}% + \DeclareUnicodeCharacter{1E7D}{\~v}% + \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}% + \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}% + % + \DeclareUnicodeCharacter{1E80}{\`W}% + \DeclareUnicodeCharacter{1E81}{\`w}% + \DeclareUnicodeCharacter{1E82}{\'W}% + \DeclareUnicodeCharacter{1E83}{\'w}% + \DeclareUnicodeCharacter{1E84}{\"W}% + \DeclareUnicodeCharacter{1E85}{\"w}% + \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}% + \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}% + \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}% + \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}% + \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}% + \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}% + \DeclareUnicodeCharacter{1E8C}{\"X}% + \DeclareUnicodeCharacter{1E8D}{\"x}% + \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}% + \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}% + % + \DeclareUnicodeCharacter{1E90}{\^Z}% + \DeclareUnicodeCharacter{1E91}{\^z}% + \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}% + \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}% + \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}% + \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}% + \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}% + \DeclareUnicodeCharacter{1E97}{\"t}% + \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}% + \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}% + % + \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}% + \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}% + % + \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}% + \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}% + \DeclareUnicodeCharacter{1EBC}{\~E}% + \DeclareUnicodeCharacter{1EBD}{\~e}% + % + \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}% + \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}% + \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}% + \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}% + % + \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}% + \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}% + % + \DeclareUnicodeCharacter{1EF2}{\`Y}% + \DeclareUnicodeCharacter{1EF3}{\`y}% + \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}% + % + \DeclareUnicodeCharacter{1EF8}{\~Y}% + \DeclareUnicodeCharacter{1EF9}{\~y}% + % + % Exotic spaces + \DeclareUnicodeCharacter{2007}{\hphantom{0}}% + % + % Punctuation + \DeclareUnicodeCharacter{2013}{--}% + \DeclareUnicodeCharacter{2014}{---}% + \DeclareUnicodeCharacter{2018}{\quoteleft\nolig}% + \DeclareUnicodeCharacter{2019}{\quoteright\nolig}% + \DeclareUnicodeCharacter{201A}{\quotesinglbase{}}% + \DeclareUnicodeCharacter{201C}{\quotedblleft{}}% + \DeclareUnicodeCharacter{201D}{\quotedblright{}}% + \DeclareUnicodeCharacter{201E}{\quotedblbase{}}% + \DeclareUnicodeCharacter{2020}{\ensuremath\dagger}% + \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger}% + \DeclareUnicodeCharacter{2022}{\bullet{}}% + \DeclareUnicodeCharacter{202F}{\thinspace}% + \DeclareUnicodeCharacter{2026}{\dots{}}% + \DeclareUnicodeCharacter{2039}{\guilsinglleft{}}% + \DeclareUnicodeCharacter{203A}{\guilsinglright{}}% + % + \DeclareUnicodeCharacter{20AC}{\euro{}}% + % + \DeclareUnicodeCharacter{2192}{\arrow}% + \DeclareUnicodeCharacter{21D2}{\result{}}% + % + % Mathematical symbols + \DeclareUnicodeCharacter{2200}{\ensuremath\forall}% + \DeclareUnicodeCharacter{2203}{\ensuremath\exists}% + \DeclareUnicodeCharacter{2208}{\ensuremath\in}% + \DeclareUnicodeCharacter{2212}{\minus{}}% + \DeclareUnicodeCharacter{2217}{\ast}% + \DeclareUnicodeCharacter{221E}{\ensuremath\infty}% + \DeclareUnicodeCharacter{2225}{\ensuremath\parallel}% + \DeclareUnicodeCharacter{2227}{\ensuremath\wedge}% + \DeclareUnicodeCharacter{2229}{\ensuremath\cap}% + \DeclareUnicodeCharacter{2261}{\equiv{}}% + \DeclareUnicodeCharacter{2264}{\ensuremath\leq}% + \DeclareUnicodeCharacter{2265}{\ensuremath\geq}% + \DeclareUnicodeCharacter{2282}{\ensuremath\subset}% + \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq}% + % + \DeclareUnicodeCharacter{2016}{\ensuremath\Vert}% + \DeclareUnicodeCharacter{2032}{\ensuremath{^\prime}}% + \DeclareUnicodeCharacter{210F}{\ensuremath\hbar}% + \DeclareUnicodeCharacter{2111}{\ensuremath\Im}% + \DeclareUnicodeCharacter{2113}{\ensuremath\ell}% + \DeclareUnicodeCharacter{2118}{\ensuremath\wp}% + \DeclareUnicodeCharacter{211C}{\ensuremath\Re}% + \DeclareUnicodeCharacter{2135}{\ensuremath\aleph}% + \DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow}% + \DeclareUnicodeCharacter{2191}{\ensuremath\uparrow}% + \DeclareUnicodeCharacter{2193}{\ensuremath\downarrow}% + \DeclareUnicodeCharacter{2194}{\ensuremath\leftrightarrow}% + \DeclareUnicodeCharacter{2195}{\ensuremath\updownarrow}% + \DeclareUnicodeCharacter{2196}{\ensuremath\nwarrow}% + \DeclareUnicodeCharacter{2197}{\ensuremath\nearrow}% + \DeclareUnicodeCharacter{2198}{\ensuremath\searrow}% + \DeclareUnicodeCharacter{2199}{\ensuremath\swarrow}% + \DeclareUnicodeCharacter{21A6}{\ensuremath\mapsto}% + \DeclareUnicodeCharacter{21A9}{\ensuremath\hookleftarrow}% + \DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow}% + \DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup}% + \DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown}% + \DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup}% + \DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown}% + \DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons}% + \DeclareUnicodeCharacter{21D0}{\ensuremath\Leftarrow}% + \DeclareUnicodeCharacter{21D1}{\ensuremath\Uparrow}% + \DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow}% + \DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow}% + \DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow}% + \DeclareUnicodeCharacter{2202}{\ensuremath\partial}% + \DeclareUnicodeCharacter{2205}{\ensuremath\emptyset}% + \DeclareUnicodeCharacter{2207}{\ensuremath\nabla}% + \DeclareUnicodeCharacter{2209}{\ensuremath\notin}% + \DeclareUnicodeCharacter{220B}{\ensuremath\owns}% + \DeclareUnicodeCharacter{220F}{\ensuremath\prod}% + \DeclareUnicodeCharacter{2210}{\ensuremath\coprod}% + \DeclareUnicodeCharacter{2211}{\ensuremath\sum}% + \DeclareUnicodeCharacter{2213}{\ensuremath\mp}% + \DeclareUnicodeCharacter{2218}{\ensuremath\circ}% + \DeclareUnicodeCharacter{221A}{\ensuremath\surd}% + \DeclareUnicodeCharacter{221D}{\ensuremath\propto}% + \DeclareUnicodeCharacter{2220}{\ensuremath\angle}% + \DeclareUnicodeCharacter{2223}{\ensuremath\mid}% + \DeclareUnicodeCharacter{2228}{\ensuremath\vee}% + \DeclareUnicodeCharacter{222A}{\ensuremath\cup}% + \DeclareUnicodeCharacter{222B}{\ensuremath\smallint}% + \DeclareUnicodeCharacter{222E}{\ensuremath\oint}% + \DeclareUnicodeCharacter{223C}{\ensuremath\sim}% + \DeclareUnicodeCharacter{2240}{\ensuremath\wr}% + \DeclareUnicodeCharacter{2243}{\ensuremath\simeq}% + \DeclareUnicodeCharacter{2245}{\ensuremath\cong}% + \DeclareUnicodeCharacter{2248}{\ensuremath\approx}% + \DeclareUnicodeCharacter{224D}{\ensuremath\asymp}% + \DeclareUnicodeCharacter{2250}{\ensuremath\doteq}% + \DeclareUnicodeCharacter{2260}{\ensuremath\neq}% + \DeclareUnicodeCharacter{226A}{\ensuremath\ll}% + \DeclareUnicodeCharacter{226B}{\ensuremath\gg}% + \DeclareUnicodeCharacter{227A}{\ensuremath\prec}% + \DeclareUnicodeCharacter{227B}{\ensuremath\succ}% + \DeclareUnicodeCharacter{2283}{\ensuremath\supset}% + \DeclareUnicodeCharacter{2286}{\ensuremath\subseteq}% + \DeclareUnicodeCharacter{228E}{\ensuremath\uplus}% + \DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq}% + \DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq}% + \DeclareUnicodeCharacter{2293}{\ensuremath\sqcap}% + \DeclareUnicodeCharacter{2294}{\ensuremath\sqcup}% + \DeclareUnicodeCharacter{2295}{\ensuremath\oplus}% + \DeclareUnicodeCharacter{2296}{\ensuremath\ominus}% + \DeclareUnicodeCharacter{2297}{\ensuremath\otimes}% + \DeclareUnicodeCharacter{2298}{\ensuremath\oslash}% + \DeclareUnicodeCharacter{2299}{\ensuremath\odot}% + \DeclareUnicodeCharacter{22A2}{\ensuremath\vdash}% + \DeclareUnicodeCharacter{22A3}{\ensuremath\dashv}% + \DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop}% + \DeclareUnicodeCharacter{22A5}{\ensuremath\bot}% + \DeclareUnicodeCharacter{22A8}{\ensuremath\models}% + \DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge}% + \DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee}% + \DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap}% + \DeclareUnicodeCharacter{22C3}{\ensuremath\bigcup}% + \DeclareUnicodeCharacter{22C4}{\ensuremath\diamond}% + \DeclareUnicodeCharacter{22C5}{\ensuremath\cdot}% + \DeclareUnicodeCharacter{22C6}{\ensuremath\star}% + \DeclareUnicodeCharacter{22C8}{\ensuremath\bowtie}% + \DeclareUnicodeCharacter{2308}{\ensuremath\lceil}% + \DeclareUnicodeCharacter{2309}{\ensuremath\rceil}% + \DeclareUnicodeCharacter{230A}{\ensuremath\lfloor}% + \DeclareUnicodeCharacter{230B}{\ensuremath\rfloor}% + \DeclareUnicodeCharacter{2322}{\ensuremath\frown}% + \DeclareUnicodeCharacter{2323}{\ensuremath\smile}% + % + \DeclareUnicodeCharacter{25B3}{\ensuremath\triangle}% + \DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright}% + \DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown}% + \DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft}% + \DeclareUnicodeCharacter{25C7}{\ensuremath\diamond}% + \DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit}% + \DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit}% + \DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit}% + \DeclareUnicodeCharacter{2663}{\ensuremath\clubsuit}% + \DeclareUnicodeCharacter{266D}{\ensuremath\flat}% + \DeclareUnicodeCharacter{266E}{\ensuremath\natural}% + \DeclareUnicodeCharacter{266F}{\ensuremath\sharp}% + \DeclareUnicodeCharacter{26AA}{\ensuremath\bigcirc}% + \DeclareUnicodeCharacter{27B9}{\ensuremath\rangle}% + \DeclareUnicodeCharacter{27C2}{\ensuremath\perp}% + \DeclareUnicodeCharacter{27E8}{\ensuremath\langle}% + \DeclareUnicodeCharacter{27F5}{\ensuremath\longleftarrow}% + \DeclareUnicodeCharacter{27F6}{\ensuremath\longrightarrow}% + \DeclareUnicodeCharacter{27F7}{\ensuremath\longleftrightarrow}% + \DeclareUnicodeCharacter{27FC}{\ensuremath\longmapsto}% + \DeclareUnicodeCharacter{29F5}{\ensuremath\setminus}% + \DeclareUnicodeCharacter{2A00}{\ensuremath\bigodot}% + \DeclareUnicodeCharacter{2A01}{\ensuremath\bigoplus}% + \DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes}% + \DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus}% + \DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup}% + \DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg}% + \DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq}% + \DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq}% + % + \global\mathchardef\checkmark="1370% actually the square root sign + \DeclareUnicodeCharacter{2713}{\ensuremath\checkmark}% + % + % These are all the combining accents. We need these empty definitions + % at present for the sake of PDF outlines. + \DeclareUnicodeCharacter{0300}{}% + \DeclareUnicodeCharacter{0301}{}% + \DeclareUnicodeCharacter{0302}{}% + \DeclareUnicodeCharacter{0303}{}% + \DeclareUnicodeCharacter{0305}{}% + \DeclareUnicodeCharacter{0306}{}% + \DeclareUnicodeCharacter{0307}{}% + \DeclareUnicodeCharacter{0308}{}% + \DeclareUnicodeCharacter{030A}{}% + \DeclareUnicodeCharacter{030B}{}% + \DeclareUnicodeCharacter{030C}{}% + \DeclareUnicodeCharacter{0323}{}% + \DeclareUnicodeCharacter{0327}{}% + \DeclareUnicodeCharacter{0328}{}% + \DeclareUnicodeCharacter{0331}{}% + \DeclareUnicodeCharacter{0361}{}% +}% end of \unicodechardefs + +% UTF-8 byte sequence (pdfTeX) definitions (replacing and @U command) +% It makes the setting that replace UTF-8 byte sequence. +\def\utfeightchardefs{% + \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterUTFviii + \unicodechardefs +} + +% Whether the active definitions of non-ASCII characters expand to +% non-active tokens with the same character code. This is used to +% write characters literally, instead of using active definitions for +% printing the correct glyphs. +\newif\ifpassthroughchars +\passthroughcharsfalse + +% For native Unicode handling (XeTeX and LuaTeX), +% provide a definition macro to replace/pass-through a Unicode character +% +\def\DeclareUnicodeCharacterNative#1#2{% + \ifnum"#1>"7F % only make non-ASCII chars active + \catcode"#1=\active + \def\dodeclareunicodecharacternative##1##2##3{% + \begingroup + \uccode`\~="##2\relax + \uppercase{\gdef~}{% + \ifpassthroughchars + ##1% + \else + ##3% + \fi + } + \endgroup + } + \begingroup + \uccode`\.="#1\relax + \uppercase{\def\UTFNativeTmp{.}}% + \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}% + \endgroup + \fi +} + +% Native Unicode handling (XeTeX and LuaTeX) character replacing definition. +% It activates the setting that replaces Unicode characters. +\def\nativeunicodechardefs{% + \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNative + \unicodechardefs +} + +% For native Unicode handling (XeTeX and LuaTeX), +% make the character token expand +% to the sequences given in \unicodechardefs for printing. +\def\DeclareUnicodeCharacterNativeAtU#1#2{% + \def\UTFAtUTmp{#2} + \expandafter\globallet\csname uni:#1\endcsname \UTFAtUTmp +} + +% @U command definitions for native Unicode handling (XeTeX and LuaTeX). +\def\nativeunicodechardefsatu{% + \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNativeAtU + \unicodechardefs +} + +% US-ASCII character definitions. +\def\asciichardefs{% nothing need be done + \relax +} + +% Define all Unicode characters we know about +\iftxinativeunicodecapable + \nativeunicodechardefsatu +\else + \utfeightchardefs +\fi + + +\message{formatting,} + +\newdimen\defaultparindent \defaultparindent = 15pt + +\chapheadingskip = 15pt plus 4pt minus 2pt +\secheadingskip = 12pt plus 3pt minus 2pt +\subsecheadingskip = 9pt plus 2pt minus 2pt + +% Prevent underfull vbox error messages. +\vbadness = 10000 + +% Don't be very finicky about underfull hboxes, either. +\hbadness = 6666 + +% Following George Bush, get rid of widows and orphans. +\widowpenalty=10000 +\clubpenalty=10000 + +% Use TeX 3.0's \emergencystretch to help line breaking, but if we're +% using an old version of TeX, don't do anything. We want the amount of +% stretch added to depend on the line length, hence the dependence on +% \hsize. We call this whenever the paper size is set. +% +\def\setemergencystretch{% + \ifx\emergencystretch\thisisundefined + % Allow us to assign to \emergencystretch anyway. + \def\emergencystretch{\dimen0}% + \else + \emergencystretch = .15\hsize + \fi +} + +% Parameters in order: 1) textheight; 2) textwidth; +% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; +% 7) physical page height; 8) physical page width. +% +% We also call \setleading{\textleading}, so the caller should define +% \textleading. The caller should also set \parskip. +% +\def\internalpagesizes#1#2#3#4#5#6#7#8{% + \voffset = #3\relax + \topskip = #6\relax + \splittopskip = \topskip + % + \vsize = #1\relax + \advance\vsize by \topskip + \txipageheight = \vsize + % + \hsize = #2\relax + \txipagewidth = \hsize + % + \normaloffset = #4\relax + \bindingoffset = #5\relax + % + \ifpdf + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + % if we don't reset these, they will remain at "1 true in" of + % whatever layout pdftex was dumped with. + \pdfhorigin = 1 true in + \pdfvorigin = 1 true in + \else + \ifxetex + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + % XeTeX does not have \pdfhorigin and \pdfvorigin. + \else + \special{papersize=#8,#7}% + \fi + \fi + % + \setleading{\textleading} + % + \parindent = \defaultparindent + \setemergencystretch +} + +% @letterpaper (the default). +\def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % If page is nothing but text, make it come out even. + \internalpagesizes{607.2pt}{6in}% that's 46 lines + {\voffset}{.25in}% + {\bindingoffset}{36pt}% + {11in}{8.5in}% +}} + +% Use @smallbook to reset parameters for 7x9.25 trim size. +\def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.5in}{5in}% + {-.2in}{0in}% + {\bindingoffset}{16pt}% + {9.25in}{7in}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \contentsrightmargin = 0pt + \defbodyindent = .5cm +}} + +% Use @afourpaper to print on European A4 paper. +\def\afourpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % Double-side printing via postscript on Laserjet 4050 + % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. + % To change the settings for a different printer or situation, adjust + % \normaloffset until the front-side and back-side texts align. Then + % do the same for \bindingoffset. You can set these for testing in + % your texinfo source file like this: + % @tex + % \global\normaloffset = -6mm + % \global\bindingoffset = 10mm + % @end tex + \internalpagesizes{673.2pt}{160mm}% that's 51 lines + {\voffset}{\hoffset}% + {\bindingoffset}{44pt}% + {297mm}{210mm}% + % + \tolerance = 700 + \contentsrightmargin = 0pt + \defbodyindent = 5mm +}} + +% Use @afivepaper to print on European A5 paper. +% From romildo@urano.iceb.ufop.br, 2 July 2000. +% He also recommends making @example and @lisp be small. +\def\afivepaper{{\globaldefs = 1 + \parskip = 2pt plus 1pt minus 0.1pt + \textleading = 12.5pt + % + \internalpagesizes{160mm}{120mm}% + {\voffset}{-11.4mm}% + {\bindingoffset}{8pt}% + {210mm}{148mm}% + % + \lispnarrowing = 0.2in + \tolerance = 800 + \contentsrightmargin = 0pt + \defbodyindent = 2mm + \tableindent = 12mm +}} + +% A specific text layout, 24x15cm overall, intended for A4 paper. +\def\afourlatex{{\globaldefs = 1 + \afourpaper + \internalpagesizes{237mm}{150mm}% + {\voffset}{4.6mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + % + % Must explicitly reset to 0 because we call \afourpaper. + \globaldefs = 0 +}} + +% Use @afourwide to print on A4 paper in landscape format. +\def\afourwide{{\globaldefs = 1 + \afourpaper + \internalpagesizes{241mm}{165mm}% + {\voffset}{-2.95mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + \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. +% +\parseargdef\pagesizes{\pagesizesyyy #1,,\finish} +\def\pagesizesyyy#1,#2,#3\finish{{% + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi + \globaldefs = 1 + % + \parskip = 3pt plus 2pt minus 1pt + \setleading{\textleading}% + % + \dimen0 = #1\relax + \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 2in % default to 1 inch margin on each side + % + \internalpagesizes{#1}{\hsize}% + {\voffset}{\normaloffset}% + {\bindingoffset}{44pt}% + {\dimen0}{\dimen2}% +}} + +% Set default to letter. +% +\letterpaper + +% Default value of \hfuzz, for suppressing warnings about overfull hboxes. +\hfuzz = 1pt + + +\message{microtype,} + +% protrusion, from Thanh's protcode.tex. +\def\mtsetprotcode#1{% + \rpcode#1`\!=200 \rpcode#1`\,=700 \rpcode#1`\-=700 \rpcode#1`\.=700 + \rpcode#1`\;=500 \rpcode#1`\:=500 \rpcode#1`\?=200 + \rpcode#1`\'=700 + \rpcode#1 34=500 % '' + \rpcode#1 123=300 % -- + \rpcode#1 124=200 % --- + \rpcode#1`\)=50 \rpcode#1`\A=50 \rpcode#1`\F=50 \rpcode#1`\K=50 + \rpcode#1`\L=50 \rpcode#1`\T=50 \rpcode#1`\V=50 \rpcode#1`\W=50 + \rpcode#1`\X=50 \rpcode#1`\Y=50 \rpcode#1`\k=50 \rpcode#1`\r=50 + \rpcode#1`\t=50 \rpcode#1`\v=50 \rpcode#1`\w=50 \rpcode#1`\x=50 + \rpcode#1`\y=50 + % + \lpcode#1`\`=700 + \lpcode#1 92=500 % `` + \lpcode#1`\(=50 \lpcode#1`\A=50 \lpcode#1`\J=50 \lpcode#1`\T=50 + \lpcode#1`\V=50 \lpcode#1`\W=50 \lpcode#1`\X=50 \lpcode#1`\Y=50 + \lpcode#1`\v=50 \lpcode#1`\w=50 \lpcode#1`\x=50 \lpcode#1`\y=0 + % + \mtadjustprotcode#1\relax +} + +\newcount\countC +\def\mtadjustprotcode#1{% + \countC=0 + \loop + \ifcase\lpcode#1\countC\else + \mtadjustcp\lpcode#1\countC + \fi + \ifcase\rpcode#1\countC\else + \mtadjustcp\rpcode#1\countC + \fi + \advance\countC 1 + \ifnum\countC < 256 \repeat +} + +\newcount\countB +\def\mtadjustcp#1#2#3{% + \setbox\boxA=\hbox{% + \ifx#2\font\else#2\fi + \char#3}% + \countB=\wd\boxA + \multiply\countB #1#2#3\relax + \divide\countB \fontdimen6 #2\relax + #1#2#3=\countB\relax +} + +\ifxetex % XeTeX + \mtsetprotcode\textrm + \def\mtfontexpand#1{} +\else + \ifluatex % LuaTeX + \mtsetprotcode\textrm + \def\mtfontexpand#1{\expandglyphsinfont#1 20 20 1\relax} + \else + \ifpdf % pdfTeX + \mtsetprotcode\textrm + \def\mtfontexpand#1{\pdffontexpand#1 20 20 1 autoexpand\relax} + \else % TeX + \def\mtfontexpand#1{} + \fi + \fi +\fi + + +\newif\ifmicrotype + +\def\microtypeON{% + \microtypetrue + % + \ifxetex % XeTeX + \XeTeXprotrudechars=2 + \else + \ifluatex % LuaTeX + \adjustspacing=2 + \protrudechars=2 + \else + \ifpdf % pdfTeX + \pdfadjustspacing=2 + \pdfprotrudechars=2 + \fi + \fi + \fi + % + \mtfontexpand\textrm + \mtfontexpand\textsl + \mtfontexpand\textbf +} + +\def\microtypeOFF{% + \microtypefalse + % + \ifxetex % XeTeX + \XeTeXprotrudechars=0 + \else + \ifluatex % LuaTeX + \adjustspacing=0 + \protrudechars=0 + \else + \ifpdf % pdfTeX + \pdfadjustspacing=0 + \pdfprotrudechars=0 + \fi + \fi + \fi +} + +\microtypeOFF + +\parseargdef\microtype{% + \def\txiarg{#1}% + \ifx\txiarg\onword + \microtypeON + \else\ifx\txiarg\offword + \microtypeOFF + \else + \errhelp = \EMsimple + \errmessage{Unknown @microtype option `\txiarg', must be on|off}% + \fi\fi +} + + +\message{and turning on texinfo input format.} + +% Make UTF-8 the default encoding. +\documentencodingzzz{UTF-8} + +\def^^L{\par} % remove \outer, so ^L can appear in an @comment +\catcode`\^^K = 10 % treat vertical tab as whitespace + +% DEL is a comment character, in case @c does not suffice. +\catcode`\^^? = 14 + +% Define macros to output various characters with catcode for normal text. +\catcode`\"=\other \def\normaldoublequote{"} +\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix +\catcode`\+=\other \def\normalplus{+} +\catcode`\<=\other \def\normalless{<} +\catcode`\>=\other \def\normalgreater{>} +\catcode`\^=\other \def\normalcaret{^} +\catcode`\_=\other \def\normalunderscore{_} +\catcode`\|=\other \def\normalverticalbar{|} +\catcode`\~=\other \def\normaltilde{~} + +% Set catcodes for Texinfo file + +% Active characters for printing the wanted glyph. +% Most of these we simply print from the \tt font, but for some, we can +% use math or other variants that look better in normal text. +% +\catcode`\"=\active +\def\activedoublequote{{\tt\char34}} +\let"=\activedoublequote +\catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde +\chardef\hatchar=`\^ +\catcode`\^=\active \def\activehat{{\tt \hatchar}} \let^ = \activehat + +\catcode`\_=\active +\def_{\ifusingtt\normalunderscore\_} +\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } +\let\realunder=_ + +\catcode`\|=\active \def|{{\tt\char124}} + +\chardef \less=`\< +\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless +\chardef \gtr=`\> +\catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr +\catcode`\+=\active \def+{{\tt \char 43}} +\catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix +\catcode`\-=\active \let-=\normaldash + + +% used for headline/footline in the output routine, in case the page +% breaks in the middle of an @tex block. +\def\texinfochars{% + \let< = \activeless + \let> = \activegtr + \let~ = \activetilde + \let^ = \activehat + \setregularquotes + \let\b = \strong + \let\i = \smartitalic + % in principle, all other definitions in \tex have to be undone too. +} + +% Used sometimes to turn off (effectively) the active characters even after +% parsing them. +\def\turnoffactive{% + \passthroughcharstrue + \let-=\normaldash + \let"=\normaldoublequote + \let$=\normaldollar %$ font-lock fix + \let+=\normalplus + \let<=\normalless + \let>=\normalgreater + \let^=\normalcaret + \let_=\normalunderscore + \let|=\normalverticalbar + \let~=\normaltilde + \otherbackslash + \setregularquotes + \unsepspaces +} + +% If a .fmt file is being used, characters that might appear in a file +% name cannot be active until we have parsed the command line. +% So turn them off again, and have \loadconf turn them back on. +\catcode`+=\other \catcode`\_=\other + + +% \backslashcurfont outputs one backslash character in current font, +% as in \char`\\. +\global\chardef\backslashcurfont=`\\ + +% Print a typewriter backslash. For math mode, we can't simply use +% \backslashcurfont: the story here is that in math mode, the \char +% of \backslashcurfont ends up printing the roman \ from the math symbol +% font (because \char in math mode uses the \mathcode, and plain.tex +% sets \mathcode`\\="026E). Hence we use an explicit \mathchar, +% which is the decimal equivalent of "715c (class 7, e.g., use \fam; +% ignored family value; char position "5C). We can't use " for the +% usual hex value because it has already been made active. + +\def\ttbackslash{{\tt \ifmmode \mathchar29020 \else \backslashcurfont \fi}} +\let\backslashchar = \ttbackslash % \backslashchar{} is for user documents. + +% These are made active for url-breaking, so need +% active definitions as the normal characters. +\def\normaldot{.} +\def\normalquest{?} +\def\normalslash{/} + +% \newlinesloadsconf - call \loadconf as soon as possible in the +% file, e.g. at the first newline. +% +{\catcode`\^=7 +\catcode`\^^M=13 +\gdef\newlineloadsconf{% + \catcode`\^^M=13 % + \newlineloadsconfzz% +} +\gdef\newlineloadsconfzz#1^^M{% + \def\c{\loadconf\c}% + % Definition for the first newline read in the file + \def ^^M{\loadconf}% + % In case the first line has a whole-line or environment command on it + \let\originalparsearg\parsearg% + \def\parsearg{\loadconf\originalparsearg}% + % + % \startenvironment is in the expansion of commands defined with \envdef + \let\originalstartenvironment\startenvironment% + \def\startenvironment{\loadconf\startenvironment}% +}} + + +% Emergency active definition of newline, in case an active newline token +% appears by mistake. +{\catcode`\^=7 \catcode13=13% +\gdef\enableemergencynewline{% + \gdef^^M{% + \par% + %\par% +}}} + + +% \loadconf gets called at the beginning of every Texinfo file. +% If texinfo.cnf is present on the system, read it. Useful for site-wide +% @afourpaper, etc. Not opening texinfo.cnf directly in texinfo.tex +% makes it possible to make a format file for Texinfo. +% +\gdef\loadconf{% + \relax % Terminate the filename if running as "tex '&texinfo' FILE.texi". + % + % Turn off the definitions that trigger \loadconf + \everyjobreset + \catcode13=5 % regular end of line + \enableemergencynewline + \let\c=\comment + \let\parsearg\originalparsearg + \let\startenvironment\originalstartenvironment + % + % Also turn back on active characters that might appear in the input + % file name, in case not using a pre-dumped format. + \catcode`+=\active + \catcode`\_=\active + % + \openin 1 texinfo.cnf + \ifeof 1 \else \input texinfo.cnf \fi + \closein 1 +} + +% Redefine some control sequences to be controlled by the \ifdummies +% and \ifindexnofonts switches. Do this at the end so that the control +% sequences are all defined. +\definedummies + + + + +\catcode`\@=0 + +% \realbackslash is an actual character `\' with catcode other. +{\catcode`\\=\other @gdef@realbackslash{\}} + +% In Texinfo, backslash is an active character; it prints the backslash +% in fixed width font. +\catcode`\\=\active % @ for escape char from now on. + +@let\ = @ttbackslash + +% If in a .fmt file, print the version number. +% \eatinput stops the `\input texinfo' from showing up. +% After that, `\' should revert to printing a backslash. +% Turn on active characters that we couldn't do earlier because +% they might have appeared in the input file name. +% +@everyjob{@message{[Texinfo version @texinfoversion]}% + @global@let\ = @eatinput + @catcode`+=@active @catcode`@_=@active} + +{@catcode`@^=7 @catcode`@^^M=13% +@gdef@eatinput input texinfo#1^^M{@loadconf}} + +@def@everyjobreset{@ifx\@eatinput @let\ = @ttbackslash @fi} + +% \otherbackslash defines an active \ to be a literal `\' character with +% catcode other. +@gdef@otherbackslash{@let\=@realbackslash} + +% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of +% the literal character `\'. +% +{@catcode`- = @active + @gdef@normalturnoffactive{% + @turnoffactive + @let\=@ttbackslash + } +} + +% Say @foo, not \foo, in error messages. +@escapechar = `@@ + +% These look ok in all fonts, so just make them not special. +% @hashchar{} gets its own user-level command, because of #line. +@catcode`@& = @other @def@normalamp{&} +@catcode`@# = @other @def@normalhash{#} +@catcode`@% = @other @def@normalpercent{%} + +@let @hashchar = @normalhash + +@c Finally, make ` and ' active, so that txicodequoteundirected and +@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we +@c don't make ` and ' active, @code will not get them as active chars. +@c Do this last of all since we use ` in the previous @catcode assignments. +@catcode`@'=@active +@catcode`@`=@active + +@c Local variables: +@c eval: (add-hook 'before-save-hook 'time-stamp nil t) +@c time-stamp-pattern: "texinfoversion{%Y-%02m-%02d.%02H}" +@c page-delimiter: "^\\\\message" +@c End: + +@newlineloadsconf diff --git a/local/recipes/dev/gnu-make/source/build.cfg.in b/local/recipes/dev/gnu-make/source/build.cfg.in new file mode 100644 index 0000000000..69e7b674c3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build.cfg.in @@ -0,0 +1,38 @@ +# Configuration for building GNU Make in the absence of any 'make' program. +# @configure_input@ + +# 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 +# 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 . + +# See Makefile.in for comments describing these variables. + +top_srcdir='@top_srcdir@' + +prefix='@prefix@' +exec_prefix=`eval echo @exec_prefix@` + +CC='@CC@' +AR='@AR@' +CFLAGS='@CFLAGS@ @GUILE_CFLAGS@' +CPPFLAGS='@CPPFLAGS@' +DEFS='@DEFS@' +ARFLAGS='@ARFLAGS@' +LDFLAGS='@AM_LDFLAGS@ @LDFLAGS@' +ALLOCA='@ALLOCA@' +LOADLIBES='@LIBS@ @GUILE_LIBS@ @LIBINTL@' +REMOTE='@REMOTE@' +OBJEXT='@OBJEXT@' +EXEEXT='@EXEEXT@' diff --git a/local/recipes/dev/gnu-make/source/build.sh b/local/recipes/dev/gnu-make/source/build.sh new file mode 100755 index 0000000000..fdcd964698 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build.sh @@ -0,0 +1,182 @@ +#!/bin/sh +# Shell script to build GNU Make in the absence of any 'make' program. + +# 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 +# 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 . + +# 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" + +# Directory to find libraries in for '-lXXX'. +libdir=$exec_prefix/lib +# Directory to search by default for included makefiles. +includedir=$prefix/include + +localedir=$prefix/share/locale + +defines="-DLOCALEDIR=\"$localedir\" -DLIBDIR=\"$libdir\" -DINCLUDEDIR=\"$includedir\"" + +# Look up a make variable value. +# It can handle simple recursion where variables are separate words. +# Print the value to stdout. +get_mk_var () +{ + file=$1 + var=$2 + + val= + v=$(sed -e :a -e '/\\$/N; s/\\\n//; ta' "$file" | sed -n "s=^ *$var *\= *==p") + for w in $v; do + case $w in + (\$[\(\{]*[\)\}]) w=${w#\$[\(\{]}; w=$(get_mk_var "$file" "${w%[\)\}]}") ;; + esac + val="${val:+$val }$w" + done + + printf '%s\n' "$val" +} + +# Compile source files. Object files are put into $objs. +compile () +{ + success=true + objs= + for ofile in "$@"; do + # We should try to use a Makefile variable like libgnu_a_SOURCES or + # something but just hardcode it. + file="${ofile%.$OBJEXT}.c" + case $file in + (lib/libgnu_a-*.c) file="lib/${file#lib/libgnu_a-}" ;; + esac + echo "compiling $file..." + of="$OUTDIR/$ofile" + mkdir -p "${of%/*}" || 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. +# $out will be empty if no conversion was needed. +convert () +{ + out= + base=$1 + var="GENERATE_$(echo $base | tr 'a-z./+' A-Z__X)" + + # Is this file disabled? + grep "${var}_FALSE\"]=\"\"" config.status >/dev/null && return 0 + + # 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%/*}" + + # First perform the normal replacements, using config.status + sed -e 's|@GUARD_PREFIX@|GL|g' \ + -e 's/@GNULIB_UNISTD_H_GETOPT@/0/g' \ + "$in" > "${out}_" + ./config.status --file "${out}__:${out}_" + int="${out}__" + + # Then see if there any files we need to include. Unfortunately there's no + # algorithmic conversion so we just have to hard-code it. + incls=$(sed -n 's/.*definitions* of \(_[^ $]*\).*/\1/p' "$in") + + for inc in $incls; do + case $inc in + (_GL_FUNCDECL_RPL) fn=$(get_mk_var lib/Makefile CXXDEFS_H) ;; + (_GL_ARG_NONNULL) fn=$(get_mk_var lib/Makefile ARG_NONNULL_H) ;; + (_GL_WARN_ON_USE) fn=$(get_mk_var lib/Makefile WARN_ON_USE_H) ;; + (_Noreturn) fn=$(get_mk_var lib/Makefile _NORETURN_H) ;; + (*) echo "Unknown file replacement: $inc"; exit 1 ;; + esac + + fn="$top_srcdir/lib/${fn##*/}" + test -f "$fn" || { echo "Missing file: $fn"; exit 1; } + + sed "/definitions* of $inc/r $fn" "$int" > "${int}_" + int=${int}_ + done + + # Done! + mv "$int" "$out" +} + +# Get source files provided from gnulib and convert to object files +LIBOBJS= +for lo in $( (get_mk_var lib/Makefile libgnu_a_OBJECTS; get_mk_var lib/Makefile libgnu_a_LIBADD) | sed "s=\$[\(\{]OBJEXT[\)\}]=$OBJEXT=g"); do + LIBOBJS="${LIBOBJS:+$LIBOBJS }lib/$lo" +done + +# Get object files from the Makefile +OBJS=$(get_mk_var Makefile make_OBJECTS | sed "s=\$[\(\{]OBJEXT[\)\}]=$OBJEXT=g") + +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 || die "Compilation failed." + +echo "creating libgnu.a..." +$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 || die "Compilation failed." + +# Link all the objects together. +echo "linking make..." +$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/local/recipes/dev/gnu-make/source/build_w32.bat b/local/recipes/dev/gnu-make/source/build_w32.bat new file mode 100644 index 0000000000..30ca0b2a86 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build_w32.bat @@ -0,0 +1,458 @@ +@echo off +:: 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 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 . + +setlocal +if not "%RECURSEME%"=="%~0" ( + set "RECURSEME=%~0" + %ComSpec% /s /c ""%~0" %*" + goto :EOF +) + +call :Reset + +if "%1" == "-h" goto Usage +if "%1" == "--help" goto Usage + +echo. +echo Creating GNU Make for Windows 9X/NT/2K/XP/Vista/7/8/10 +echo. + +set MAKE=gnumake +set GUILE=Y +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 +) else ( + set MAINT=N +) + +: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 +shift +goto ParseSW + +:NoGuile +set GUILE=N +echo - Building without Guile +shift +goto ParseSW + +:Set32Bit +set ARCH=x86 +echo - Building 32bit GNU Make +shift +goto ParseSW + +:SetCC +set COMPILER=gcc +set O=o +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 :-/. +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 ( + set InstallPath=%%i +) +set "VSVARS=%InstallPath%\VC\Auxiliary\Build\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +:: No "vswhere" or it can't find a compiler. Go old-school. +:LegacyVS +set "VSVARS=%VS150COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS140COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS120COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS110COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS80COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS71COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS70COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%V6TOOLS%\VC98\Bin\vcvars32.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%V6TOOLS%\VC97\Bin\vcvars32.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%V5TOOLS%\VC\Bin\vcvars32.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +:: We did not find anything--fail +echo No MSVC compiler available. +echo Please run vcvarsall.bat and/or configure your Path. +exit 1 + +:FoundMSVC +set OUTDIR=.\WinRel +set LNKOUT=./WinRel +set "OPTS=/O2 /D NDEBUG" +set LINKOPTS= +if "%DEBUG%" == "Y" set OUTDIR=.\WinDebug +if "%DEBUG%" == "Y" set LNKOUT=./WinDebug +if "%DEBUG%" == "Y" set "OPTS=/Zi /Od /D _DEBUG" +if "%DEBUG%" == "Y" set LINKOPTS=/DEBUG +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. +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. +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 + +:Build +:: Clean the directory if it exists +if exist %OUTDIR%\nul rmdir /S /Q %OUTDIR% + +:: Recreate it +mkdir %OUTDIR% +mkdir %OUTDIR%\src +mkdir %OUTDIR%\src\w32 +mkdir %OUTDIR%\src\w32\compat +mkdir %OUTDIR%\src\w32\subproc +mkdir %OUTDIR%\lib + +if "%GUILE%" == "Y" call :ChkGuile + +if not exist src\config.h.W32 goto NotConfig + +echo. +echo Compiling %OUTDIR% version + +copy src\config.h.W32 %OUTDIR%\src\config.h + +copy lib\glob.in.h %OUTDIR%\lib\glob.h +copy lib\fnmatch.in.h %OUTDIR%\lib\fnmatch.h + +if exist %OUTDIR%\link.sc del %OUTDIR%\link.sc + +call :Compile src/ar +call :Compile src/arscan +call :Compile src/commands +call :Compile src/default +call :Compile src/dir +call :Compile src/expand +call :Compile src/file +call :Compile src/function +call :Compile src/getopt +call :Compile src/getopt1 +call :Compile src/guile GUILE +call :Compile src/hash +call :Compile src/implicit +call :Compile src/job +call :Compile src/load +call :Compile src/loadapi +call :Compile src/main GUILE +call :Compile src/misc +call :Compile src/output +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 +call :Compile src/version +call :Compile src/vpath +call :Compile src/w32/pathstuff +call :Compile src/w32/w32os +call :Compile src/w32/compat/posixfcn +call :Compile src/w32/subproc/misc +call :Compile src/w32/subproc/sub_proc +call :Compile src/w32/subproc/w32err +call :Compile lib/fnmatch +call :Compile lib/glob +call :Compile lib/getloadavg + +:: Compile dirent unless it is supported by compiler library (like with gcc). +if "%DIRENT%" == "Y" call :Compile src\w32\compat\dirent + +call :Link + +echo. +if exist %OUTDIR%\%MAKE%.exe goto Success +echo %OUTDIR% build FAILED! +exit 1 + +:Success +echo %OUTDIR% build succeeded. +if exist Basic.mk copy /Y Basic.mk Makefile +if not exist tests\config-flags.pm copy /Y tests\config-flags.pm.W32 tests\config-flags.pm +call :Reset +goto :EOF + +:: +:: Subroutines +:: + +: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 +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 +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 +goto :EOF + +:Link +echo. +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 +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 +if "%VERBOSE%" == "Y" echo on +echo %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 >>%OUTDIR%\link.sc +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 + +: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 +call pkg-config --help > %OUTDIR%\guile.tmp 2> NUL +if ERRORLEVEL 1 goto NoPkgCfg + +set PKGMSC= +if not "%COMPILER%" == "gcc" set PKGMSC=--msvc-syntax + +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 +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 + +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 + +echo - No Guile found, building without Guile +goto GuileDone + +:NoPkgCfg +echo - pkg-config not found, building without Guile + +:GuileDone +if "%GUILECFLAGS%" == "" goto :EOF + +echo - Guile found: building with Guile +set "GUILECFLAGS=%GUILECFLAGS% -DHAVE_GUILE" +goto :EOF + +:FindVswhere +set VSWHERE=vswhere +call "%VSWHERE%" -help >nul 2>&1 +if not ERRORLEVEL 1 exit /b 0 +set "VSWHERE=C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere" +call "%VSWHERE%" -help >nul 2>&1 +if ERRORLEVEL 1 exit /b 1 +goto :EOF + +:CheckMSVC +if not exist "%VSVARS%" exit /b 1 +call "%VSVARS%" %ARCH% +if ERRORLEVEL 1 exit /b 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] 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 +set ARCH= +set COMPILER= +set DEBUG= +set GUILE= +set GUILECFLAGS= +set GUILELIBS= +set LINKOPTS= +set MAKE= +set NOGUILE= +set O= +set OPTS= +set OUTDIR= +set LNKOUT= +set PKGMSC= +set VSVARS= +goto :EOF diff --git a/local/recipes/dev/gnu-make/source/builddos.bat b/local/recipes/dev/gnu-make/source/builddos.bat new file mode 100644 index 0000000000..2ee916a7a2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/builddos.bat @@ -0,0 +1,97 @@ +@echo off +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 +rem the terms of the GNU General Public License as published by the Free +rem Software Foundation; either version 3 of the License, or (at your option) +rem any later version. +rem +rem GNU Make is distributed in the hope that it will be useful, but WITHOUT +rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +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 . + +echo Building Make for MSDOS with DJGPP + +rem The SmallEnv trick protects against too small environment block, +rem in which case the values will be truncated and the whole thing +rem goes awry. COMMAND.COM will say "Out of environment space", but +rem many people don't care, so we force them to care by refusing to go. + +rem Where is the srcdir? +set XSRC=. +if not "%XSRC%"=="." goto SmallEnv +if "%1%"=="" goto SrcDone +if "%1%"=="." goto SrcDone +set XSRC=%1 + +if not "%XSRC%"=="%1" goto SmallEnv + +:SrcDone + +if not exist src mkdir src +if not exist lib mkdir lib + +copy /Y %XSRC%\src\configh.dos .\src\config.h + +copy /Y %XSRC%\lib\glob.in.h .\lib\glob.h +copy /Y %XSRC%\lib\fnmatch.in.h .\lib\fnmatch.h + +rem Echo ON so they will see what is going on. +@echo on +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/commands.c -o commands.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/output.c -o output.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/job.c -o job.o +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 -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 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 +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/strcache.c -o strcache.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/version.c -o version.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/ar.c -o ar.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/arscan.c -o arscan.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/signame.c -o signame.o +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 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.$$$ +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.$$$ +@echo off +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 %XSRC%\Basic.mk Makefile +goto End + +:SmallEnv +echo Your environment is too small. Please enlarge it and run me again. + +:End +set XRSC= +@echo on diff --git a/local/recipes/dev/gnu-make/source/configure b/local/recipes/dev/gnu-make/source/configure new file mode 100755 index 0000000000..9a6a6f83d4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/configure @@ -0,0 +1,17351 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.73 for GNU Make 4.4. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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 + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +case $# in # (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="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 + # contradicts POSIX and common usage. Disable this. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else case e in #( + e) case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in #( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in #( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in #( + e) 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 ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +case $# in # (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf '%s\n' "$0: This script requires a shell more modern than all" + printf '%s\n' "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later." + else + printf '%s\n' "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf '%s\n' "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_CONFIG_STATUS= +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Make' +PACKAGE_TARNAME='make' +PACKAGE_VERSION='4.4' +PACKAGE_STRING='GNU Make 4.4' +PACKAGE_BUGREPORT='bug-make@gnu.org' +PACKAGE_URL='https://www.gnu.org/software/make/' + +ac_unique_file="src/vpath.c" +ac_config_libobj_dir=lib +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_func_c_list= +ac_subst_vars='gltests_LIBOBJDEPS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LIBOBJDEPS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +KNOWN_PREFIX_FALSE +KNOWN_PREFIX_TRUE +WINDOWSENV_FALSE +WINDOWSENV_TRUE +MAKE_HOST +AM_LDFLAGS +USE_CUSTOMS_FALSE +USE_CUSTOMS_TRUE +REMOTE +HAVE_GUILE_FALSE +HAVE_GUILE_TRUE +GUILE_LIBS +GUILE_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +POSUB +LTLIBINTL +LIBINTL +INTLLIBS +LTLIBICONV +LIBICONV +INTL_MACOSX_LIBS +XGETTEXT_EXTRA_OPTIONS +MSGMERGE +XGETTEXT_015 +XGETTEXT +GMSGFMT_015 +MSGFMT_015 +GMSGFMT +MSGFMT +GETTEXT_MACRO_VERSION +USE_NLS +SED +PERL +LIBGNU_LTLIBDEPS +LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS +gltests_WITNESS +GL_GENERATE_STDBOOL_H_FALSE +GL_GENERATE_STDBOOL_H_TRUE +STDBOOL_H +HAVE__BOOL +USE_SYSTEM_GLOB +USE_SYSTEM_GLOB_FALSE +USE_SYSTEM_GLOB_TRUE +HOST_CPU_C_ABI +HOST_CPU +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE +GETLOADAVG_LIBS +GL_GNULIB_GETLOADAVG +HAVE_DECL_GETLOADAVG +GL_GENERATE_ALLOCA_H_FALSE +GL_GENERATE_ALLOCA_H_TRUE +ALLOCA_H +HAVE_ALLOCA_H +ALLOCA +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +RANLIB +ARFLAGS +AR +CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +ECHO_T +ECHO_N +ECHO_C +target_alias +host_alias +build_alias +LIBS +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='MAINT_MAKEFILE' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_largefile +enable_year2038 +enable_cross_guesses +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_guile +with_customs +enable_case_insensitive_file_system +enable_job_server +enable_load +enable_posix_spawn +with_dmalloc +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GUILE_CFLAGS +GUILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf '%s\n' "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf '%s\n' "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`printf '%s\n' $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +'configure' configures GNU Make 4.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print 'checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for '--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/make] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Make 4.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --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 + --enable-case-insensitive-file-system + assume file systems are case insensitive + --disable-job-server disallow recursive make communication during -jN + --disable-load disable support for the 'load' operation + --disable-posix-spawn disable support for posix_spawn() + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + --with-guile Support GNU Guile for embedded scripting + --with-customs=DIR enable remote jobs via Customs--see README.customs + --with-dmalloc use dmalloc, as in http://www.dmalloc.com + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + GUILE_CFLAGS + C compiler flags for GUILE, overriding pkg-config + GUILE_LIBS linker flags for GUILE, overriding pkg-config + +Use these variables to override the choices made by 'configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +GNU Make home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf '%s\n' "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Make configure 4.4 +generated by GNU Autoconf 2.73 + +Copyright (C) 2026 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in #( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +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. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else case e in #( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) eval "$3=yes" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in #( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else case e in #( + e) 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 ;; +esac +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (void); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (void); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + ac_compile="$ac_save_ac_compile" + +} # ac_fn_check_decl + +# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +# ---------------------------------------------------- +# Tries to find if the field MEMBER exists in type AGGR, after including +# INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in #( + e) eval "$4=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$4 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf '%s\n' "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf '%s\n' "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# Dump the cache to stdout. It can be in a pipe (this is a requirement). +ac_cache_dump () +{ + # The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf '%s\n' "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) +} + +# Print debugging info to stdout. +ac_dump_debugging_info () +{ + echo + + printf '%s\n' "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + ac_cache_dump + echo + + printf '%s\n' "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf '%s\n' "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + fi + + if test -s confdefs.h; then + printf '%s\n' "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf '%s\n' "$as_me: caught signal $ac_signal" + printf '%s\n' "$as_me: exit $exit_status" +} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. +ac_exit_trap () +{ + exit_status= + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + ac_dump_debugging_info >&5 + eval "rm -f $ac_clean_CONFIG_STATUS core *.core core.conftest.*" && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +} + +trap 'ac_exit_trap $?' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf '%s\n' "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf '%s\n' "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf '%s\n' "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf '%s\n' "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf '%s\n' "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf '%s\n' "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf '%s\n' "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf '%s\n' "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See 'config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf '%s\n' "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf '%s\n' "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C23 (global declarations) +ac_c_conftest_c23_globals=' +/* Does the compiler advertise conformance to C17 or earlier? + Although GCC 14 does not do that, even with -std=gnu23, + it is close enough, and defines __STDC_VERSION == 202000L. */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ <= 201710L +# error "Compiler advertises conformance to C17 or earlier" +#endif + +// Check alignas. +char alignas (double) c23_aligned_as_double; +char alignas (0) c23_no_special_alignment; +extern char c23_aligned_as_int; +char alignas (0) alignas (int) c23_aligned_as_int; + +// Check alignof. +enum +{ + c23_int_alignment = alignof (int), + c23_int_array_alignment = alignof (int[100]), + c23_char_alignment = alignof (char) +}; +static_assert (0 < -alignof (int), "alignof is signed"); + +int function_with_unnamed_parameter (int) { return 0; } + +void c23_noreturn (); + +/* Test parsing of string and char UTF-8 literals (including hex escapes). + The parens pacify GCC 15. */ +bool use_u8 = (!sizeof u8"\xFF") == (!u8'\''x'\''); + +bool check_that_bool_works = true | false | !nullptr; +#if !true +# error "true does not work in #if" +#endif +#if false +#elifdef __STDC_VERSION__ +#else +# error "#elifdef does not work" +#endif + +#ifndef __has_c_attribute +# error "__has_c_attribute not defined" +#endif + +#ifndef __has_include +# error "__has_include not defined" +#endif + +#define LPAREN() ( +#define FORTY_TWO(x) 42 +#define VA_OPT_TEST(r, x, ...) __VA_OPT__ (FORTY_TWO r x)) +static_assert (VA_OPT_TEST (LPAREN (), 0, <:-) == 42); + +static_assert (0b101010 == 42); +static_assert (0B101010 == 42); +static_assert (0xDEAD'\''BEEF == 3'\''735'\''928'\''559); +static_assert (0.500'\''000'\''000 == 0.5); + +enum unsignedish : unsigned int { uione = 1 }; +static_assert (0 < -uione); + +#include +constexpr nullptr_t null_pointer = nullptr; + +static typeof (1 + 1L) two () { return 2; } +static long int three () { return 3; } +' + +# Test code for whether the C compiler supports C23 (body of main). +ac_c_conftest_c23_main=' + { + label_before_declaration: + int arr[10] = {}; + if (arr[0]) + goto label_before_declaration; + if (!arr[0]) + goto label_at_end_of_block; + label_at_end_of_block: + } + ok |= !null_pointer; + ok |= two != three; +' + +# Test code for whether the C compiler supports C23 (complete). +ac_c_conftest_c23_program="${ac_c_conftest_c23_globals} + +int +main (int, char **) +{ + int ok = 0; + ${ac_c_conftest_c23_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Do not test the value of __STDC__, because some compilers define it to 0 + or do not define it, while otherwise adequately conforming. */ + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (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; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + 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 + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// 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, and "aND" is used instead of "and" to work around +// GCC bug 40564 which is irrelevant here. +#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) +{ + // 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; + const char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + static struct incomplete_array *volatile incomplete_array_pointer; + struct incomplete_array *ia = incomplete_array_pointer; + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + // Do not test for VLAs, as some otherwise-conforming compilers lack them. + // C code should instead use __STDC_NO_VLA__; see Autoconf manual. + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || ni.number != 58); +' + +# 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 case e in #( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w= + for ac_val in x $ac_old_val; do + ac_old_val_w="$ac_old_val_w $ac_val" + done + ac_new_val_w= + for ac_val in x $ac_new_val; do + ac_new_val_w="$ac_new_val_w $ac_val" + done + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf '%s\n' "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf '%s\n' "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf '%s\n' "$as_me: former value: '$ac_old_val'" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf '%s\n' "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf '%s\n' "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf '%s\n' "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Autoconf setup + + +ac_config_headers="$ac_config_headers src/config.h" + + + + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +am__api_version='1.18' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF/1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF/1 since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + ;; +esac +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf '%s\n' "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in #( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf '%s\n' "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + printf '%s\n' ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf '%s\n' "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf '%s\n' "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in #( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf '%s\n' "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf '%s\n' "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf '%s\n' "$STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf '%s\n' "$ac_ct_STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf '%s\n' "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk 'busybox awk' +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf '%s\n' "$AWK" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf '%s\n' "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @printf '%s\n' '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + SET_MAKE= +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +# Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if printf '%s\n' 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf '%s\n' "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in #( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in #( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf '%s\n' "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in #( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='make' + VERSION='4.4' + + +printf '%s\n' "#define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf '%s\n' "#define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf '%s\n' "$am_cv_prog_tar_ustar" >&6; } + + + + + +# 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 + + + + + + + + +# Checks for programs. + + + + + + + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf '%s\n' "${_am_result}" >&6; } + +# Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 ;; +esac +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 case e in #( + e) 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 ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf '%s\n' "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in #( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf '%s\n' "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in #( + e) { { 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; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf '%s\n' "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf '%s\n' "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in #( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf '%s\n' "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in #( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in #( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +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 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 case e in #( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) 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 case e in #( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +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 case e in #( + e) 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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) 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 case e in #( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +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 case e in #( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) 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 case e in #( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 case e in #( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in #( + e) 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 case e in #( + e) gl_cv_compiler_check_decl_option=none ;; +esac +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 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf '%s\n' "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf '%s\n' "#define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else case e in #( + e) ac_cv_safe_to_define___extensions__=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf '%s\n' "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf '%s\n' "$ac_cv_should_define__xopen_source" >&6; } + + printf '%s\n' "#define _ALL_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _COSMO_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _GNU_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf '%s\n' "#define _NETBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _OPENBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf '%s\n' "#define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf '%s\n' "#define _MINIX 1" >>confdefs.h + + printf '%s\n' "#define _POSIX_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _POSIX_1_SOURCE 2" >>confdefs.h + +else case e in #( + e) MINIX= ;; +esac +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf '%s\n' "#define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf '%s\n' "#define _XOPEN_SOURCE 500" >>confdefs.h + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 ;; +esac +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 case e in #( + e) 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 ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in #( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in #( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +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 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 case e in #( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) 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 case e in #( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +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 case e in #( + e) 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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) 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 case e in #( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +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 case e in #( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) 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 case e in #( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 case e in #( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in #( + e) 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 case e in #( + e) gl_cv_compiler_check_decl_option=none ;; +esac +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 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# 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 case e in #( + e) 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 + ;; +esac +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=`printf '%s\n' "$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 case e in #( + e) 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 + ;; +esac +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=`printf '%s\n' "$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 case e in #( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 case e in #( + e) { { 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; } ;; +esac +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 egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_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_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "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_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + + if test "$ac_cv_path_EGREP_TRADITIONAL" +then : + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in #( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_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_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "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_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; 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_TRADITIONAL=$EGREP_TRADITIONAL +fi + ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf '%s\n' "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL + + + + + { 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 case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Amsterdam" >/dev/null 2>&1 +then : + gl_cv_c_amsterdam_compiler=yes +else case e in #( + e) gl_cv_c_amsterdam_compiler=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +printf '%s\n' "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + : + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf '%s\n' "$ac_ct_AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + +# Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 +#ifndef FTYPE +# define FTYPE off_t +#endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in #( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifndef FTYPE +# define FTYPE off_t +#endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 +#ifndef FTYPE +# define FTYPE off_t +#endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in #( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifndef FTYPE +# define FTYPE off_t +#endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 +#ifndef FTYPE +# define FTYPE off_t +#endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 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 ;; +esac +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 case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_y2038=yes +else case e in #( + e) gl_cv_type_time_t_y2038=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_bits_macro=yes +else case e in #( + e) gl_cv_type_time_t_bits_macro=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +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 case e in #( + e) # 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 + ;; +esac +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 alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + + + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: + + + + + + + + + + # Check whether --enable-cross-guesses was given. +if test ${enable_cross_guesses+y} +then : + enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 +printf '%s\n' "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} + enableval=conservative + fi + gl_cross_guesses="$enableval" +else case e in #( + e) gl_cross_guesses=conservative ;; +esac +fi + + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ + + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else case e in #( + e) +printf '%s\n' "#define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else case e in #( + e) ac_cv_working_alloca_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf '%s\n' "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf '%s\n' "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_func_alloca_works=$ac_cv_working_alloca_h +if test "$ac_cv_func_alloca_works" != yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf '%s\n' "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +printf '%s\n' "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + + + + + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf '%s\n' "#define C_ALLOCA 1" >>confdefs.h + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else case e in #( + e) ac_cv_c_stack_direction=-1 ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf '%s\n' "$ac_cv_c_stack_direction" >&6; } +printf '%s\n' "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + +else case e in #( + e) +printf '%s\n' "#define eaccess access" >>confdefs.h + ;; +esac +fi + + + + HAVE_DECL_GETLOADAVG=1; + + + + + + + + + + + GL_GNULIB_GETLOADAVG=0 + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to detect undeclared functions" >&5 +printf %s "checking for $CC options to detect undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in #( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to ignore future-version functions" >&5 +printf %s "checking for $CC options to ignore future-version functions... " >&6; } +if test ${ac_cv_c_future_darwin_options+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_compile_saved="$ac_compile" + ac_compile="$ac_compile -Werror=unguarded-availability-new" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if ! (defined __APPLE__ && defined __MACH__) + #error "-Werror=unguarded-availability-new not needed here" + #endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_future_darwin_options='-Werror=unguarded-availability-new' +else case e in #( + e) ac_cv_c_future_darwin_options='none needed' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$ac_compile_saved" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_future_darwin_options" >&5 +printf '%s\n' "$ac_cv_c_future_darwin_options" >&6; } + case $ac_cv_c_future_darwin_options in #( + 'none needed') : + ac_c_future_darwin_options='' ;; #( + *) : + ac_c_future_darwin_options=$ac_cv_c_future_darwin_options ;; +esac + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _MSC_VER +MicrosoftCompiler +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "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 case e in #( + e) gl_asmext='s' + gl_c_asm_opt='-S' + ;; +esac +fi +rm -rf conftest* + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 +printf %s "checking host CPU and C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case "$host_cpu" in + + i[34567]86 ) + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=x86_64-x32 +else case e in #( + e) gl_cv_host_cpu_c_abi=x86_64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in #( + e) gl_cv_host_cpu_c_abi=i386 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __aarch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=arm64-ilp32 +else case e in #( + e) gl_cv_host_cpu_c_abi=arm64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in #( + e) # Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=hppa64 +else case e in #( + e) gl_cv_host_cpu_c_abi=hppa ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=ia64-ilp32 +else case e in #( + e) gl_cv_host_cpu_c_abi=ia64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mips64 +else case e in #( + e) # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mipsn32 +else case e in #( + e) gl_cv_host_cpu_c_abi=mips ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=powerpc64-elfv2 +else case e in #( + e) gl_cv_host_cpu_c_abi=powerpc64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else case e in #( + e) gl_cv_host_cpu_c_abi=powerpc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cpu=riscv64 +else case e in #( + e) cpu=riscv32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else case e in #( + e) main_abi=ilp32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=d +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=f +else case e in #( + e) float_abi='' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=s390x +else case e in #( + e) gl_cv_host_cpu_c_abi=s390 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=sparc64 +else case e in #( + e) gl_cv_host_cpu_c_abi=sparc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 +printf '%s\n' "$gl_cv_host_cpu_c_abi" >&6; } + + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + + + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <&5 +printf %s "checking for 64-bit off_t... " >&6; } +if test ${gl_cv_type_off_t_64+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_off_t_64=yes +else case e in #( + e) gl_cv_type_off_t_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 +printf '%s\n' "$gl_cv_type_off_t_64" >&6; } + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 +printf %s "checking for 64-bit st_size... " >&6; } +if test ${gl_cv_member_st_size_64+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_member_st_size_64=yes +else case e in #( + e) gl_cv_member_st_size_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 +printf '%s\n' "$gl_cv_member_st_size_64" >&6; } + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac + +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : + +printf '%s\n' "#define HAVE__BOOL 1" >>confdefs.h + + +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C99 requires bool, true, and false to be macros, + C23 and C++11 overrule that, so do not test for that. + Although C99 requires __bool_true_false_are_defined and + _Bool, C23 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + +int +main (void) +{ + + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stdbool_h=yes +else case e in #( + e) ac_cv_header_stdbool_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +printf '%s\n' "$ac_cv_header_stdbool_h" >&6; } + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 +printf %s "checking for C compiler option to allow warnings... " >&6; } +if test ${gl_cv_cc_wallow+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 +printf '%s\n' "$gl_cv_cc_wallow" >&6; } + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + + + + + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 + (eval $gl_command) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + + + + + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + + + + + + + + + + + + + gl_source_base='lib' + gl_source_base_prefix= + + + if test $ac_cv_func_alloca_works = no; then + : + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 +printf %s "checking for alloca as a compiler built-in... " >&6; } +if test ${gl_cv_rpl_alloca+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Need own alloca" >/dev/null 2>&1 +then : + gl_cv_rpl_alloca=yes +else case e in #( + e) gl_cv_rpl_alloca=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 +printf '%s\n' "$gl_cv_rpl_alloca" >&6; } + if test $gl_cv_rpl_alloca = yes; then + +printf '%s\n' "#define HAVE_ALLOCA 1" >>confdefs.h + + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + + + + + + + case "$GL_GENERATE_ALLOCA_H" in + false) ALLOCA_H='' ;; + true) + if test -z "$ALLOCA_H"; then + ALLOCA_H="${gl_source_base_prefix}alloca.h" + fi + ;; + *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_ALLOCA_H; then + GL_GENERATE_ALLOCA_H_TRUE= + GL_GENERATE_ALLOCA_H_FALSE='#' +else + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE= +fi +: + if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE='#' + fi + + + + + + + + + + + + + + + + + + +# Persuade glibc to declare getloadavg(). + + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + +else case e in #( + e) gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +printf %s "checking for elf_begin in -lelf... " >&6; } +if test ${ac_cv_lib_elf_elf_begin+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char elf_begin (void); +int +main (void) +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_elf_elf_begin=yes +else case e in #( + e) ac_cv_lib_elf_elf_begin=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +printf '%s\n' "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes +then : + LIBS="-lelf $LIBS" +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 +printf %s "checking for kvm_open in -lkvm... " >&6; } +if test ${ac_cv_lib_kvm_kvm_open+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkvm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kvm_open (void); +int +main (void) +{ +return kvm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kvm_kvm_open=yes +else case e in #( + e) ac_cv_lib_kvm_kvm_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 +printf '%s\n' "$ac_cv_lib_kvm_kvm_open" >&6; } +if test "x$ac_cv_lib_kvm_kvm_open" = xyes +then : + LIBS="-lkvm $LIBS" +fi + + # Check for the 4.4BSD definition of getloadavg. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 +printf %s "checking for getloadavg in -lutil... " >&6; } +if test ${ac_cv_lib_util_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_getloadavg=yes +else case e in #( + e) ac_cv_lib_util_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_util_getloadavg" >&6; } +if test "x$ac_cv_lib_util_getloadavg" = xyes +then : + LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes +fi + + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 +printf %s "checking for getloadavg in -lgetloadavg... " >&6; } +if test ${ac_cv_lib_getloadavg_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lgetloadavg $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_getloadavg_getloadavg=yes +else case e in #( + e) ac_cv_lib_getloadavg_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_getloadavg_getloadavg" >&6; } +if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes +then : + LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes +else case e in #( + e) LIBS=$gl_getloadavg_LIBS ;; +esac +fi + + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 +printf %s "checking for kstat_open in -lkstat... " >&6; } +if test ${ac_cv_lib_kstat_kstat_open+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kstat_open (void); +int +main (void) +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kstat_kstat_open=yes +else case e in #( + e) ac_cv_lib_kstat_kstat_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 +printf '%s\n' "$ac_cv_lib_kstat_kstat_open" >&6; } +if test "x$ac_cv_lib_kstat_kstat_open" = xyes +then : + printf '%s\n' "#define HAVE_LIBKSTAT 1" >>confdefs.h + + LIBS="-lkstat $LIBS" + +fi + + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 +printf %s "checking for perfstat_cpu_total in -lperfstat... " >&6; } +if test ${ac_cv_lib_perfstat_perfstat_cpu_total+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lperfstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char perfstat_cpu_total (void); +int +main (void) +{ +return perfstat_cpu_total (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_perfstat_perfstat_cpu_total=yes +else case e in #( + e) ac_cv_lib_perfstat_perfstat_cpu_total=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 +printf '%s\n' "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } +if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes +then : + printf '%s\n' "#define HAVE_LIBPERFSTAT 1" >>confdefs.h + + LIBS="-lperfstat $LIBS" + +fi + + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "#define DGUX 1" >>confdefs.h + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 +printf %s "checking for dg_sys_info in -ldgc... " >&6; } +if test ${ac_cv_lib_dgc_dg_sys_info+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldgc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dg_sys_info (void); +int +main (void) +{ +return dg_sys_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dgc_dg_sys_info=yes +else case e in #( + e) ac_cv_lib_dgc_dg_sys_info=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 +printf '%s\n' "$ac_cv_lib_dgc_dg_sys_info" >&6; } +if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes +then : + printf '%s\n' "#define HAVE_LIBDGC 1" >>confdefs.h + + LIBS="-ldgc $LIBS" + +fi + +fi + + fi + fi ;; +esac +fi + + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getloadavg" = xyes +then : + +else case e in #( + e) HAVE_DECL_GETLOADAVG=0 ;; +esac +fi + + + if test $HAVE_GETLOADAVG = 0; then + GL_COND_OBJ_GETLOADAVG_TRUE= + GL_COND_OBJ_GETLOADAVG_FALSE='#' +else + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE= +fi +: + if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE='#' + fi + + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : + + +# Figure out what our getloadavg.c needs. + + + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + + for ac_func in pstat_getdynamic +do : + ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic" +if test "x$ac_cv_func_pstat_getdynamic" = xyes +then : + printf '%s\n' "#define HAVE_PSTAT_GETDYNAMIC 1" >>confdefs.h + gl_func_getloadavg_done=yes +fi + +done +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + +printf '%s\n' "#define SVR4 1" >>confdefs.h + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "#define UMAX 1" >>confdefs.h + + +printf '%s\n' "#define UMAX4_3 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes; printf '%s\n' "#define UMAX 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf '%s\n' "#define HAVE_MACH_MACH_H 1" >>confdefs.h + +fi + +fi + + for ac_header in nlist.h +do : + ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" +if test "x$ac_cv_header_nlist_h" = xyes +then : + printf '%s\n' "#define HAVE_NLIST_H 1" >>confdefs.h + ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include +" +if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes +then : + +printf '%s\n' "#define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h + + +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +printf '%s\n' "#define N_NAME_POINTER 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi + +done + +fi + + + + + + + + + + GL_GNULIB_GETLOADAVG=1 + + + + + +printf '%s\n' "#define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h + + + + + + # Check the system to see if it provides GNU glob. If not, use our + # local version. + { 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 case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "gnu glob" >/dev/null 2>&1 +then : + make_cv_sys_gnu_glob=yes +else case e in #( + e) make_cv_sys_gnu_glob=no ;; +esac +fi +rm -rf conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 +printf '%s\n' "$make_cv_sys_gnu_glob" >&6; } + # Tell automake about this, so it can build the right .c files. + if test "$make_cv_sys_gnu_glob" = yes; then + USE_SYSTEM_GLOB_TRUE= + USE_SYSTEM_GLOB_FALSE='#' +else + USE_SYSTEM_GLOB_TRUE='#' + USE_SYSTEM_GLOB_FALSE= +fi + + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + + # Check for DOS-style pathnames. + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 +printf %s "checking whether system uses MSDOS-style paths... " >&6; } +if test ${ac_cv_dos_paths+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__ +neither MSDOS nor Windows nor OS2 +#endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_dos_paths=yes +else case e in #( + e) ac_cv_dos_paths=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 +printf '%s\n' "$ac_cv_dos_paths" >&6; } + + if test x"$ac_cv_dos_paths" = xyes +then : + +printf '%s\n' "#define HAVE_DOS_PATHS 1" >>confdefs.h + +fi + + + + + + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + + + + + + + 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 + + + if $GL_GENERATE_STDBOOL_H; then + GL_GENERATE_STDBOOL_H_TRUE= + GL_GENERATE_STDBOOL_H_FALSE='#' +else + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE= +fi +: + 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 + + + + + + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + + + + gl_source_base='tests' + gl_source_base_prefix= + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gltests_WITNESS + + + + + + + + + + + + + LIBGNU_LIBDEPS="$gl_libdeps" + + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 case e in #( + e) { { 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; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +# Perl is needed for the test suite (only) +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="perl" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl" +fi ;; +esac +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf '%s\n' "$PERL" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + +# Specialized system macros + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in #( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in #( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + int + main (int argc, char **argv) + { + /* Intimidate the compiler so that it does not + optimize the arrays away. */ + char *p = argv[0]; + ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; + ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; + return use_ascii (argc) == use_ebcdic (*p); + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else case e in #( + e) ac_cv_c_bigendian=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf '%s\n' "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf '%s\n' "#define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf '%s\n' "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Enable gettext, in "external" mode. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in #( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf '%s\n' "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + # Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else case e in #( + e) USE_NLS=yes ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf '%s\n' "$MSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf '%s\n' "$GMSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac + + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf '%s\n' "$XGETTEXT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + rm -f messages.po + + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf '%s\n' "$MSGMERGE" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +# Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else case e in #( + e) with_gnu_ld=no ;; +esac +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 &5 +printf '%s\n' "$LD" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf '%s\n' "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf '%s\n' "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath was given. +if test ${enable_rpath+y} +then : + enableval=$enable_rpath; : +else case e in #( + e) enable_rpath=yes ;; +esac +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _LP64 +sixtyfour bits +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "sixtyfour bits" >/dev/null 2>&1 +then : + gl_cv_solaris_64bit=yes +else case e in #( + e) gl_cv_solaris_64bit=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf '%s\n' "$gl_cv_solaris_64bit" >&6; } + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else case e in #( + e) gt_cv_func_CFPreferencesCopyAppValue=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf '%s\n' "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf '%s\n' "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyCurrent=yes +else case e in #( + e) gt_cv_func_CFLocaleCopyCurrent=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf '%s\n' "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +printf '%s\n' "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + LIBINTL= + LTLIBINTL= + POSUB= + + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else case e in #( + e) eval "$gt_func_gnugettext_libc=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf '%s\n' "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + if test "$cross_compiling" = yes +then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + result |= 16; + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf '%s\n' "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +printf '%s\n' "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf '%s\n' "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else case e in #( + e) eval "$gt_func_gnugettext_libintl=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + fi + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +printf '%s\n' "#define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf '%s\n' "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf '%s\n' "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf '%s\n' "#define HAVE_GETTEXT 1" >>confdefs.h + + +printf '%s\n' "#define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# Checks for libraries. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (void); +int +main (void) +{ +return strerror (); + ; + return 0; +} +_ACEOF +for ac_lib in '' cposix +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_strerror=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_strerror+y} +then : + break +fi +done +if test ${ac_cv_search_strerror+y} +then : + +else case e in #( + e) ac_cv_search_strerror=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf '%s\n' "$ac_cv_search_strerror" >&6; } +ac_res=$ac_cv_search_strerror +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 +printf %s "checking for library containing getpwnam... " >&6; } +if test ${ac_cv_search_getpwnam+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getpwnam (void); +int +main (void) +{ +return getpwnam (); + ; + return 0; +} +_ACEOF +for ac_lib in '' sun +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_getpwnam=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getpwnam+y} +then : + break +fi +done +if test ${ac_cv_search_getpwnam+y} +then : + +else case e in #( + e) ac_cv_search_getpwnam=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 +printf '%s\n' "$ac_cv_search_getpwnam" >&6; } +ac_res=$ac_cv_search_getpwnam +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf '%s\n' "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_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 case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else case e in #( + e) eval "$as_ac_Header=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$as_ac_Header + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf '%s\n' "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in #( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in #( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stat_broken=no +else case e in #( + e) ac_cv_header_stat_broken=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf '%s\n' "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +printf '%s\n' "#define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf '%s\n' "#define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf '%s\n' "#define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf '%s\n' "#define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf '%s\n' "#define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "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 + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf '%s\n' "#define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timeb_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_TIMEB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "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 case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Derived from code rejected by Sun C 1.0 and similar vintage. */ + int x[] = {25, 17}; + typedef int const *iptr; + iptr foo = &x[0]; + ++foo; + if (!*foo) return 0; + } + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else case e in #( + e) ac_cv_c_const=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf '%s\n' "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf '%s\n' "#define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default" +if test "x$ac_cv_type_uid_t" = xyes +then : + +else case e in #( + e) +printf '%s\n' "#define uid_t int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default" +if test "x$ac_cv_type_gid_t" = xyes +then : + +else case e in #( + e) +printf '%s\n' "#define gid_t int" >>confdefs.h + ;; +esac +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 case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else case e in #( + e) ac_pid_type='__int64' ;; +esac +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 + + ;; +esac +fi + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else case e in #( + e) +printf '%s\n' "#define off_t long int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else case e in #( + e) +printf '%s\n' "#define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else case e in #( + e) +printf '%s\n' "#define ssize_t int" >>confdefs.h + ;; +esac +fi + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else case e in #( + e) ac_cv_type_unsigned_long_long_int=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +printf '%s\n' "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #ifndef LLONG_MAX + # define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else case e in #( + e) ac_cv_type_long_long_int=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi + fi ;; +esac +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 case e in #( + e) 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 + ;; +esac +fi + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf '%s\n' "#define HAVE_UINTMAX_T 1" >>confdefs.h + +else case e in #( + e) test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf '%s\n' "#define uintmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + +# Check for sig_atomic_t + + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include +" +if test "x$ac_cv_type_sig_atomic_t" = xyes +then : + +printf '%s\n' "#define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + + +else case e in #( + e) +printf '%s\n' "#define sig_atomic_t int" >>confdefs.h + ;; +esac +fi + + + +# Find out whether our struct stat returns nanosecond resolution timestamps. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 +printf %s "checking for nanoseconds field of struct stat... " >&6; } +if test ${ac_cv_struct_st_mtim_nsec+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # st_mtim.tv_nsec -- the usual case + # st_mtim._tv_nsec -- Solaris 2.6, if + # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 + # && !defined __EXTENSIONS__) + # st_mtim.st__tim.tv_nsec -- UnixWare 2.1.2 + # st_mtime_n -- AIX 5.2 and above + # st_mtimespec.tv_nsec -- Darwin (Mac OSX) + for ac_val in st_mtim.tv_nsec st_mtim._tv_nsec st_mtim.st__tim.tv_nsec st_mtime_n st_mtimespec.tv_nsec; do + CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main (void) +{ +struct stat s; s.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_st_mtim_nsec=$ac_val; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 +printf '%s\n' "$ac_cv_struct_st_mtim_nsec" >&6; } + + if test $ac_cv_struct_st_mtim_nsec != no; then + +printf '%s\n' "#define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h + + fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 +printf %s "checking whether to use high resolution file timestamps... " >&6; } +if test ${make_cv_file_timestamp_hi_res+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) make_cv_file_timestamp_hi_res=no + if test "$ac_cv_struct_st_mtim_nsec" != no +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if HAVE_INTTYPES_H +# include +#endif +int +main (void) +{ +char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_file_timestamp_hi_res=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 +printf '%s\n' "$make_cv_file_timestamp_hi_res" >&6; } +if test "$make_cv_file_timestamp_hi_res" = yes +then : + val=1 +else case e in #( + e) val=0 ;; +esac +fi + +printf '%s\n' "#define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h + + +if test "$make_cv_file_timestamp_hi_res" = yes +then : + # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. + # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else case e in #( + e) ac_cv_search_clock_gettime=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf '%s\n' "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "$ac_cv_search_clock_gettime" != no +then : + +printf '%s\n' "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +fi + +fi + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 +printf %s "checking for standard gettimeofday... " >&6; } +if test ${ac_cv_func_gettimeofday+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_func_gettimeofday=no + if test "$cross_compiling" = yes +then : + ac_cv_func_gettimeofday="no (cross-compiling)" +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return gettimeofday (&t, 0) != 0 + || t.tv_sec < 0 || t.tv_usec < 0; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_gettimeofday=yes +else case e in #( + e) ac_cv_func_gettimeofday=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 +printf '%s\n' "$ac_cv_func_gettimeofday" >&6; } +if test "$ac_cv_func_gettimeofday" = yes +then : + +printf '%s\n' "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes +then : + printf '%s\n' "#define HAVE_STRTOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf '%s\n' "#define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" +if test "x$ac_cv_func_strndup" = xyes +then : + printf '%s\n' "#define HAVE_STRNDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf '%s\n' "#define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf '%s\n' "#define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf '%s\n' "#define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf '%s\n' "#define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf '%s\n' "#define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktemp" "ac_cv_func_mktemp" +if test "x$ac_cv_func_mktemp" = xyes +then : + printf '%s\n' "#define HAVE_MKTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopen" "ac_cv_func_fdopen" +if test "x$ac_cv_func_fdopen" = xyes +then : + printf '%s\n' "#define HAVE_FDOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf '%s\n' "#define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf '%s\n' "#define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf '%s\n' "#define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf '%s\n' "#define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigsetmask" "ac_cv_func_sigsetmask" +if test "x$ac_cv_func_sigsetmask" = xyes +then : + printf '%s\n' "#define HAVE_SIGSETMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf '%s\n' "#define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf '%s\n' "#define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf '%s\n' "#define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf '%s\n' "#define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf '%s\n' "#define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf '%s\n' "#define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf '%s\n' "#define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf '%s\n' "#define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf '%s\n' "#define HAVE_GETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" +if test "x$ac_cv_func_setrlimit" = xyes +then : + printf '%s\n' "#define HAVE_SETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf '%s\n' "#define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf '%s\n' "#define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf '%s\n' "#define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf '%s\n' "#define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf '%s\n' "#define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf '%s\n' "#define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf '%s\n' "#define HAVE_ATEXIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty" +if test "x$ac_cv_func_isatty" = xyes +then : + printf '%s\n' "#define HAVE_ISATTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf '%s\n' "#define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf '%s\n' "#define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf '%s\n' "#define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnattr_setsigmask" "ac_cv_func_posix_spawnattr_setsigmask" +if test "x$ac_cv_func_posix_spawnattr_setsigmask" = xyes +then : + printf '%s\n' "#define HAVE_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h + +fi + + +# We need to check declarations, not just existence, because on Tru64 this +# function is not declared without special flags, which themselves cause +# other problems. We'll just use our own. +ac_fn_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h + + + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + + +if test "x$ac_cv_func_fork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +printf %s "checking for working fork... " >&6; } +if test ${ac_cv_func_fork_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_fork_works=cross +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* By R. Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_fork_works=yes +else case e in #( + e) ac_cv_func_fork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +printf '%s\n' "$ac_cv_func_fork_works" >&6; } + +else + ac_cv_func_fork_works=$ac_cv_func_fork +fi +if test "x$ac_cv_func_fork_works" = xcross; then + case $host in + *-*-amigaos* | *-*-msdosdjgpp*) + # Override, as these systems have only a dummy fork() stub + ac_cv_func_fork_works=no + ;; + *) + ac_cv_func_fork_works=yes + ;; + esac + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} +fi +ac_cv_func_vfork_works=$ac_cv_func_vfork +if test "x$ac_cv_func_vfork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +printf %s "checking for working vfork... " >&6; } +if test ${ac_cv_func_vfork_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_vfork_works=cross +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#include +#ifdef HAVE_VFORK_H +# include +#endif + +static void +do_nothing (int sig) +{ + (void) sig; +} + +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. The compiler + is told about this with #include , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +sparc_address_test (int arg) +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} + +int +main (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + /* On Solaris 2.4, changes by the child to the signal handler + also munge signal handlers in the parent. To detect this, + start by putting the parent's handler in a known state. */ + signal (SIGTERM, SIG_DFL); + + child = vfork (); + + if (child == 0) { + /* Here is another test for sparc vfork register problems. This + test uses lots of local variables, at least as many local + variables as main has allocated so far including compiler + temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris + 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should + reuse the register of parent for one of the local variables, + since it will think that parent can't possibly be used any more + in this routine. Assigning to the local variable will thus + munge parent in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); + + /* Alter the child's signal handler. */ + if (signal (SIGTERM, do_nothing) != SIG_DFL) + _exit(1); + + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent + from child file descriptors. If the child closes a descriptor + before it execs or exits, this munges the parent's descriptor + as well. Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child munge the parent's signal handler? */ + || signal (SIGTERM, SIG_DFL) != SIG_DFL + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_vfork_works=yes +else case e in #( + e) ac_cv_func_vfork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +printf '%s\n' "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +printf '%s\n' "#define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +printf '%s\n' "#define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +printf '%s\n' "#define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + + +# Rumor has it that strcasecmp lives in -lresolv on some odd systems. +# It doesn't hurt much to use our own if we can't find it so I don't +# make the effort here. +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf '%s\n' "#define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf '%s\n' "#define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcmpi" "ac_cv_func_strcmpi" +if test "x$ac_cv_func_strcmpi" = xyes +then : + printf '%s\n' "#define HAVE_STRCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncmpi" "ac_cv_func_strncmpi" +if test "x$ac_cv_func_strncmpi" = xyes +then : + printf '%s\n' "#define HAVE_STRNCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp" +if test "x$ac_cv_func_stricmp" = xyes +then : + printf '%s\n' "#define HAVE_STRICMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp" +if test "x$ac_cv_func_strnicmp" = xyes +then : + printf '%s\n' "#define HAVE_STRNICMP 1" >>confdefs.h + +fi + + +# strcoll() is used by the GNU glob library +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_strcoll_works=yes +else case e in #( + e) ac_cv_func_strcoll_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf '%s\n' "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +printf '%s\n' "#define HAVE_STRCOLL 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +printf %s "checking whether closedir returns void... " >&6; } +if test ${ac_cv_func_closedir_void+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <$ac_header_dirent> + +int +main (void) +{ + + return closedir(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_closedir_void=no +else case e in #( + e) ac_cv_func_closedir_void=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +printf '%s\n' "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +printf '%s\n' "#define CLOSEDIR_VOID 1" >>confdefs.h + +fi + + +# dir.c and our glob.c use dirent.d_type if available + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : + +printf '%s\n' "#define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + + + +# See if the user wants to add (or not) GNU Guile support + +# Check whether --with-guile was given. +if test ${with_guile+y} +then : + withval=$with_guile; +fi + + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf '%s\n' "$PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf '%s\n' "$ac_pt_PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$with_guile" != xno +then : + guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 +printf %s "checking for GNU Guile... " >&6; } + for v in $guile_versions; do + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + guile_version=$v; have_guile=yes; break +fi + done + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 +printf '%s\n' "$guile_version" >&6; } + if test "$have_guile" = yes +then : + +pkg_failed=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for guile-$guile_version" >&5 +printf %s "checking for guile-$guile_version... " >&6; } + +if test -n "$GUILE_CFLAGS"; then + pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GUILE_LIBS"; then + pkg_cv_GUILE_LIBS="$GUILE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-$guile_version" 2>&1` + else + GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (guile-$guile_version) were not met: + +$GUILE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "A pkg-config implementation could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get a pkg-config implementation, see . +See 'config.log' for more details" "$LINENO" 5; } +else + GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS + GUILE_LIBS=$pkg_cv_GUILE_LIBS + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +fi + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */ +" +if test "x$ac_cv_header_libguile_h" = xyes +then : + +printf '%s\n' "#define HAVE_GUILE 1" >>confdefs.h + +else case e in #( + e) have_guile=no ;; +esac +fi + + if test "$have_guile" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we can link GNU Guile" >&5 +printf %s "checking whether we can link GNU Guile... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} + +int +main (void) +{ + + scm_with_guile (guile_init, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_guile=yes +else case e in #( + e) have_guile=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $have_guile" >&5 +printf '%s\n' "$have_guile" >&6; } +fi + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + +fi + +fi + + if test "$have_guile" = "yes"; then + HAVE_GUILE_TRUE= + HAVE_GUILE_FALSE='#' +else + HAVE_GUILE_TRUE='#' + HAVE_GUILE_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +# Check out the wait reality. +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf '%s\n' "#define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf '%s\n' "#define HAVE_WAIT3 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 +printf %s "checking for union wait... " >&6; } +if test ${make_cv_union_wait+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +union wait status; int pid; pid = wait (&status); +#ifdef WEXITSTATUS +/* Some POSIXoid systems have both the new-style macros and the old + union wait type, and they do not work together. If union wait + conflicts with WEXITSTATUS et al, we don't want to use it at all. */ + if (WEXITSTATUS (status) != 0) pid = -1; +#ifdef WTERMSIG + /* If we have WEXITSTATUS and WTERMSIG, just use them on ints. */ + -- blow chunks here -- +#endif +#endif +#ifdef HAVE_WAITPID + /* Make sure union wait works with waitpid. */ + pid = waitpid (-1, &status, 0); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + make_cv_union_wait=yes +else case e in #( + e) make_cv_union_wait=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 +printf '%s\n' "$make_cv_union_wait" >&6; } +if test "$make_cv_union_wait" = yes +then : + +printf '%s\n' "#define HAVE_UNION_WAIT 1" >>confdefs.h + + +fi + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +if test "$PATH_SEPARATOR" = ';' +then : + +printf '%s\n' "#define HAVE_DOS_PATHS 1" >>confdefs.h + + +fi + +# See if the user wants to use pmake's "customs" distributed build capability + REMOTE=stub +use_customs=false + +# Check whether --with-customs was given. +if test ${with_customs+y} +then : + withval=$with_customs; case $withval in #( + n|no) : + : ;; #( + *) : + make_cppflags="$CPPFLAGS" + case $withval in #( + y|ye|yes) : + : ;; #( + *) : + CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs" + make_ldflags="$LDFLAGS -L$with_customs/lib" ;; +esac + +cf_test_netlibs=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 +printf %s "checking for network libraries... " >&6; } +if test ${cf_cv_netlibs+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: working..." >&5 +printf '%s\n' "working..." >&6; } +cf_cv_netlibs="" +cf_test_netlibs=yes + + for ac_func in gethostname +do : + ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf '%s\n' "#define HAVE_GETHOSTNAME 1" >>confdefs.h + +else case e in #( + e) + +{ 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 case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else case e in #( + e) ac_cv_lib_nsl_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in #( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 +printf %s "checking for gethostname in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_gethostname=yes +else case e in #( + e) ac_cv_lib_socket_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_socket_gethostname" >&6; } +if test "x$ac_cv_lib_socket_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in #( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_main=yes +else case e in #( + e) ac_cv_lib_inet_main=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf '%s\n' "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : + cf_cv_netlibs="-linet $cf_cv_netlibs" +fi + +# +if test "$ac_cv_func_lsocket" != no ; then + + for ac_func in socket +do : + ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket" +if test "x$ac_cv_func_socket" = xyes +then : + printf '%s\n' "#define HAVE_SOCKET 1" >>confdefs.h + +else case e in #( + e) + +{ 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 case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else case e in #( + e) ac_cv_lib_socket_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf '%s\n' "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in #( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 +printf %s "checking for socket in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_socket+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_socket=yes +else case e in #( + e) ac_cv_lib_bsd_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 +printf '%s\n' "$ac_cv_lib_bsd_socket" >&6; } +if test "x$ac_cv_lib_bsd_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" +else case e in #( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +fi +# + + for ac_func in gethostbyname +do : + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = xyes +then : + printf '%s\n' "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +else case e in #( + e) + +{ 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 case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (void); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else case e in #( + e) ac_cv_lib_nsl_gethostbyname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + + +cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in #( + e) + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + +done + ;; +esac +fi + +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 + + ac_fn_c_check_header_compile "$LINENO" "customs.h" "ac_cv_header_customs_h" "$ac_includes_default" +if test "x$ac_cv_header_customs_h" = xyes +then : + use_customs=true + REMOTE=cstms + LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags" +else case e in #( + e) with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes ;; +esac +fi + + ;; +esac + +fi + + +# Tell automake about this, so it can include the right .c files. + if test "$use_customs" = true; then + USE_CUSTOMS_TRUE= + USE_CUSTOMS_FALSE='#' +else + USE_CUSTOMS_TRUE='#' + USE_CUSTOMS_FALSE= +fi + + +# See if the user asked to handle case insensitive file systems. + +# Check whether --enable-case-insensitive-file-system was given. +if test ${enable_case_insensitive_file_system+y} +then : + enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes +then : + printf '%s\n' "#define HAVE_CASE_INSENSITIVE_FS 1" >>confdefs.h + +fi +fi + + +# See if we can handle the job server feature, and if the user wants it. +# Check whether --enable-job-server was given. +if test ${enable_job_server+y} +then : + enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" +else case e in #( + e) make_cv_job_server="yes" ;; +esac +fi + + +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : + has_wait_nohang=no +else case e in #( + e) has_wait_nohang=yes ;; +esac +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 +printf %s "checking for SA_RESTART... " >&6; } +if test ${make_cv_sa_restart+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return SA_RESTART; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sa_restart=yes +else case e in #( + e) make_cv_sa_restart=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 +printf '%s\n' "$make_cv_sa_restart" >&6; } + +if test "$make_cv_sa_restart" != no +then : + +printf '%s\n' "#define HAVE_SA_RESTART 1" >>confdefs.h + + +fi + +# Only allow jobserver on systems that support it +case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in #( + */no/*) : + make_cv_job_server=no ;; #( + *) : + ;; +esac + +# Also supported on OS2 and MinGW +case $host_os in #( + os2*|mingw*) : + make_cv_job_server=yes ;; #( + *) : + ;; +esac + +# If we support it and the user didn't disable it, build with jobserver +case /$make_cv_job_server/$user_job_server/ in #( + */no/*) : + : no jobserver ;; #( + *) : + +printf '%s\n' "#define MAKE_JOBSERVER 1" >>confdefs.h + + ;; +esac + +# If dl*() functions are supported we can enable the load operation +ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlopen" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL_DLOPEN $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlsym" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL_DLSYM $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlerror" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h + + +# Check whether --enable-load was given. +if test ${enable_load+y} +then : + enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" +else case e in #( + e) make_cv_load="yes" ;; +esac +fi + + +case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ in #( + */no/*) : + make_cv_load=no ;; #( + *) : + ;; +esac + +# We might need -ldl +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dl +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_dlopen=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : + +else case e in #( + e) ac_cv_search_dlopen=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf '%s\n' "$ac_cv_search_dlopen" >&6; } +ac_res=$ac_cv_search_dlopen +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else case e in #( + e) make_cv_load= ;; +esac +fi + + +fi + +case /$make_cv_load/$user_load/ in #( + */no/*) : + make_cv_load=no ;; #( + *) : + +printf '%s\n' "#define MAKE_LOAD 1" >>confdefs.h + + ;; +esac + +# If we want load support, we might need to link with export-dynamic. +# See if we can figure it out. Unfortunately this is very difficult. +# For example passing -rdynamic to the SunPRO linker gives a warning +# but succeeds and creates a shared object, not an executable! +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 +printf %s "checking If the linker accepts -Wl,--export-dynamic... " >&6; } + old_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-Wl,--export-dynamic + +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 +printf %s "checking If the linker accepts -rdynamic... " >&6; } + LDFLAGS="$old_LDFLAGS -rdynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-rdynamic + +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$old_LDFLAGS" + +fi + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : + +printf '%s\n' "#define MAKE_SYMLINKS 1" >>confdefs.h + + +fi + +# Use posix_spawn if we have support and the user didn't disable it + +# Check whether --enable-posix-spawn was given. +if test ${enable_posix_spawn+y} +then : + enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" +else case e in #( + e) make_cv_posix_spawn="yes" ;; +esac +fi + + +case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in #( + */no/*) : + make_cv_posix_spawn=no ;; #( + *) : + ;; +esac + +if test "$make_cv_posix_spawn" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 +printf %s "checking for posix_spawn that fails synchronously... " >&6; } +if test ${make_cv_synchronous_posix_spawn+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) make_cv_synchronous_posix_spawn=no + if test "$cross_compiling" = yes +then : + make_cv_synchronous_posix_spawn="no (cross-compiling)" +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + extern char **environ; + int main () { + char path[] = "./xxx-non-existent"; + char *argv[] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_synchronous_posix_spawn=yes +else case e in #( + e) make_cv_synchronous_posix_spawn=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 +printf '%s\n' "$make_cv_synchronous_posix_spawn" >&6; } +fi + +case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in #( + */no/*) : + make_cv_posix_spawn=no ;; #( + *) : + +printf '%s\n' "#define USE_POSIX_SPAWN 1" >>confdefs.h + + ;; +esac + +# Find the SCCS commands, so we can include them in our default rules. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 +printf %s "checking for location of SCCS get command... " >&6; } +if test ${make_cv_path_sccs_get+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + if test -f /usr/sccs/get +then : + make_cv_path_sccs_get=/usr/sccs/get +else case e in #( + e) make_cv_path_sccs_get=get ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf '%s\n' "$make_cv_path_sccs_get" >&6; } + +printf '%s\n' "#define SCCS_GET \"$make_cv_path_sccs_get\"" >>confdefs.h + + +ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later. +if (/usr/sccs/admin -n s.conftest || admin -n s.conftest) >/dev/null 2>&1 && + test -f s.conftest +then : + # We successfully created an SCCS file. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 +printf %s "checking if SCCS get command understands -G... " >&6; } +if test ${make_cv_sys_get_minus_G+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 && + test -f conftoast +then : + make_cv_sys_get_minus_G=yes +else case e in #( + e) make_cv_sys_get_minus_G=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 +printf '%s\n' "$make_cv_sys_get_minus_G" >&6; } + if test "$make_cv_sys_get_minus_G" = yes +then : + +printf '%s\n' "#define SCCS_GET_MINUS_G 1" >>confdefs.h + + +fi + +fi +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + + +printf '%s\n' "#define MAKE_HOST \"$host\"" >>confdefs.h + +MAKE_HOST="$host" + + +w32_target_env=no + if false; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + +case $host in #( + *-*-mingw32) : + if true; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + w32_target_env=yes + +printf '%s\n' "#define WINDOWS32 1" >>confdefs.h + + +printf '%s\n' "#define HAVE_DOS_PATHS 1" >>confdefs.h + + ;; #( + *) : + ;; +esac + + +printf '%s\n' "#define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'" >>confdefs.h + + + +printf '%s\n' "#define HAVE_DECL_GETLOADAVG $HAVE_DECL_GETLOADAVG" >>confdefs.h + + +# Remember that we ran configure to generate config.h + + +printf '%s\n' "#define MK_CONFIGURE 1" >>confdefs.h + + +# Include the Maintainer's Makefile section, if it's here. + +MAINT_MAKEFILE=/dev/null +if test -r "$srcdir/maintMakefile" +then : + MAINT_MAKEFILE="$srcdir/maintMakefile" + +fi + + +# Allow building with dmalloc +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 +printf %s "checking if malloc debugging is wanted... " >&6; } + +# Check whether --with-dmalloc was given. +if test ${with_dmalloc+y} +then : + withval=$with_dmalloc; if test "$withval" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +printf '%s\n' "#define WITH_DMALLOC 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi + + + +# Forcibly disable SET_MAKE. If it's set it breaks things like the test +# scripts, etc. +SET_MAKE= + +# Sanity check and inform the user of what we found + +if test "x$make_badcust" = xyes +then : + +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo + +fi + +case $with_customs in #( + ""|n|no|y|ye|yes) : + : ;; #( + *) : + if test -f "$with_customs/lib/libcustoms.a" +then : + : +else case e in #( + e) echo + echo "WARNING: '$with_customs/lib' does not appear to contain the" + echo " Customs library. You must build and install Customs" + echo " before compiling GNU make." + echo + ;; +esac +fi ;; +esac + +if test "x$has_wait_nohang" = xno +then : + echo + echo "WARNING: Your system has neither waitpid() nor wait3()." + echo " Without one of these, signal handling is unreliable." + echo " You should be aware that running GNU make with -j" + echo " could result in erratic behavior." + echo + +fi + +if test "x$make_cv_job_server" = xno && test "x$user_job_server" = xyes +then : + echo + echo "WARNING: Make job server requires a POSIX-ish system that" + echo " supports the pipe(), sigaction(), and either" + echo " waitpid() or wait3() functions. Your system doesn't" + echo " appear to provide one or more of those." + echo " Disabling job server support." + echo + +fi + +if test "x$make_cv_load" = xno && test "x$user_load" = xyes +then : + echo + echo "WARNING: 'load' support requires a POSIX-ish system that" + echo " supports the dlopen(), dlsym(), and dlerror() functions." + echo " Your system doesn't appear to provide one or more of these." + echo " Disabling 'load' support." + echo + +fi + +if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes +then : + echo + echo "WARNING: posix_spawn() is not supported on this system." + echo + +fi + +# autoconf initializes $prefix to NONE. + if test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr; then + KNOWN_PREFIX_TRUE= + KNOWN_PREFIX_FALSE='#' +else + KNOWN_PREFIX_TRUE='#' + KNOWN_PREFIX_FALSE= +fi + + +# Specify what files are to be created. +ac_config_files="$ac_config_files build.cfg tests/config-flags.pm Makefile lib/Makefile doc/Makefile po/Makefile.in" + +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +ac_config_links="$ac_config_links build.sh:build.sh" + + +# OK, do it! + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +ac_cache_dump | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf '%s\n' "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf '%s\n' "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf '%s\n' "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf '%s\n' "done" >&6; } +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi + + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + gl_LIBOBJDEPS=$gl_libobjdeps + + + + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + gltests_LIBOBJDEPS=$gltests_libobjdeps + + + +if test -z "${HAVE_GUILE_TRUE}" && test -z "${HAVE_GUILE_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GUILE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_CUSTOMS_TRUE}" && test -z "${USE_CUSTOMS_FALSE}"; then + as_fn_error $? "conditional \"USE_CUSTOMS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${KNOWN_PREFIX_TRUE}" && test -z "${KNOWN_PREFIX_FALSE}"; then + as_fn_error $? "conditional \"KNOWN_PREFIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +case $CONFIG_STATUS in #( + -*) : + CONFIG_STATUS=./$CONFIG_STATUS ;; #( + */*) : + ;; #( + *) : + CONFIG_STATUS=./$CONFIG_STATUS ;; +esac + +ac_write_fail=0 +ac_clean_CONFIG_STATUS='"$CONFIG_STATUS"' +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf '%s\n' "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >"$CONFIG_STATUS" <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>"$CONFIG_STATUS" <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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 + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ------------------------------------- ## +## Main body of "$CONFIG_STATUS" script. ## +## ------------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x "$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Make home page: . +General help using GNU software: ." + +_ACEOF +ac_cs_config=`printf '%s\n' "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +GNU Make config.status 4.4 +configured by $0, generated by GNU Autoconf 2.73, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2026 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || { + awk '' >"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf '%s\n' "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf '%s\n' "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf '%s\n' "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf '%s\n' "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf '%s\n' "$ac_log" +} >&5 + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;; + "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "build.sh") CONFIG_LINKS="$CONFIG_LINKS build.sh:build.sh" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + +if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then + ac_cs_awk_getline=: + ac_cs_awk_pipe_init= + ac_cs_awk_read_file=' + while ((getline aline < (F[key])) > 0) + print(aline) + close(F[key])' + ac_cs_awk_pipe_fini= +else + ac_cs_awk_getline=false + ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" + ac_cs_awk_read_file=' + print "|#_!!_#|" + print "cat " F[key] " &&" + '$ac_cs_awk_pipe_init + # The final ':' finishes the AND list. + ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' +fi +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + +# Create commands to substitute file output variables. +{ + echo 'cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1' && + printf '%s\n' 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && + printf '%s\n' "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' && + echo "_ACAWK" && + echo "_ACEOF" +} >conf$$files.sh && +. ./conf$$files.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +rm -f conf$$files.sh + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | sed -n '$='` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | sed -n '$='` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >"$CONFIG_STATUS" || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + \$ac_cs_awk_pipe_init +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + if (nfields == 3 && !substed) { + key = field[2] + if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { + \$ac_cs_awk_read_file + next + } + } + print line +} +\$ac_cs_awk_pipe_fini +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >"$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + suffix = P[macro] D[macro] + while (suffix ~ /[\t ]$/) { + suffix = substr(suffix, 1, length(suffix) - 1) + } + # Preserve the white space surrounding the "#". + print prefix "define", macro suffix + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf '%s\n' "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf '%s\n' "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf '%s\n' "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf '%s\n' "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | +if $ac_cs_awk_getline; then + $AWK -f "$ac_tmp/subs.awk" +else + $AWK -f "$ac_tmp/subs.awk" | $SHELL +fi \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf '%s\n' "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf '%s\n' "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf '%s\n' "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +printf '%s\n' "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf '%s\n' "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf '%s\n' "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See 'config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_CONFIG_STATUS= + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + case $CONFIG_STATUS in #( + -*) : + ac_no_opts=-- ;; #( + *) : + ac_no_opts= ;; +esac + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $ac_no_opts "$CONFIG_STATUS" $ac_config_status_args || + ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + diff --git a/local/recipes/dev/gnu-make/source/configure.ac b/local/recipes/dev/gnu-make/source/configure.ac new file mode 100644 index 0000000000..9f68897129 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/configure.ac @@ -0,0 +1,554 @@ +# Process this file with autoconf to produce a configure script. +# +# 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 +# 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 . + +AC_INIT([GNU Make],[4.4],[bug-make@gnu.org]) + +AC_PREREQ([2.69]) + +# Autoconf setup +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_SRCDIR([src/vpath.c]) +AC_CONFIG_HEADERS([src/config.h]) + +AC_CONFIG_LIBOBJ_DIR([lib]) + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +AM_INIT_AUTOMAKE([1.16.1 foreign -Werror -Wall]) + +# Checks for programs. +AC_USE_SYSTEM_EXTENSIONS +AC_PROG_CC + +# Configure gnulib +gl_EARLY +gl_INIT + +AC_PROG_INSTALL +AC_PROG_RANLIB +AC_PROG_CPP +AC_CHECK_PROG([AR], [ar], [ar], [ar]) +# Perl is needed for the test suite (only) +AC_CHECK_PROG([PERL], [perl], [perl], [perl]) + +# Specialized system macros +AC_CANONICAL_HOST +AC_C_BIGENDIAN + +# Enable gettext, in "external" mode. +AM_GNU_GETTEXT_VERSION([0.19.4]) +AM_GNU_GETTEXT([external]) + +# Checks for libraries. +AC_SEARCH_LIBS([strerror],[cposix]) +AC_SEARCH_LIBS([getpwnam], [sun]) + +AC_HEADER_DIRENT +AC_HEADER_STAT + +AC_CHECK_HEADERS([stdlib.h locale.h unistd.h limits.h fcntl.h string.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_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 +AC_CACHE_CHECK([whether to use high resolution file timestamps], + [make_cv_file_timestamp_hi_res], +[ make_cv_file_timestamp_hi_res=no + AS_IF([test "$ac_cv_struct_st_mtim_nsec" != no], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#if HAVE_INTTYPES_H +# include +#endif]], + [[char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1];]])], + [make_cv_file_timestamp_hi_res=yes]) + ])]) +AS_IF([test "$make_cv_file_timestamp_hi_res" = yes], [val=1], [val=0]) +AC_DEFINE_UNQUOTED([FILE_TIMESTAMP_HI_RES], [$val], + [Use high resolution file timestamps if nonzero.]) + +AS_IF([test "$make_cv_file_timestamp_hi_res" = yes], +[ # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. + # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. + AC_SEARCH_LIBS([clock_gettime], [rt posix4]) + AS_IF([test "$ac_cv_search_clock_gettime" != no], + [ AC_DEFINE([HAVE_CLOCK_GETTIME], [1], + [Define to 1 if you have the clock_gettime function.]) + ]) +]) + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +AC_CACHE_CHECK([for standard gettimeofday], [ac_cv_func_gettimeofday], + [ac_cv_func_gettimeofday=no + AC_RUN_IFELSE([AC_LANG_SOURCE([[#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return gettimeofday (&t, 0) != 0 + || t.tv_sec < 0 || t.tv_usec < 0; + }]])], + [ac_cv_func_gettimeofday=yes], + [ac_cv_func_gettimeofday=no], + [ac_cv_func_gettimeofday="no (cross-compiling)"])]) +AS_IF([test "$ac_cv_func_gettimeofday" = yes], +[ AC_DEFINE([HAVE_GETTIMEOFDAY], [1], + [Define to 1 if you have a standard gettimeofday function]) +]) + +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 \ + mkfifo getrlimit setrlimit setvbuf pipe strerror strsignal \ + lstat readlink atexit isatty ttyname pselect posix_spawn \ + posix_spawnattr_setsigmask]) + +# 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_CHECK_DECLS([bsd_signal], [], [], [[#define _GNU_SOURCE 1 +#include ]]) + +AC_FUNC_FORK + +# 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_CHECK_FUNCS([strcasecmp strncasecmp strcmpi strncmpi stricmp strnicmp]) + +# strcoll() is used by the GNU glob library +AC_FUNC_STRCOLL +AC_FUNC_CLOSEDIR_VOID + +# dir.c and our glob.c use dirent.d_type if available +AC_STRUCT_DIRENT_D_TYPE + +# See if the user wants to add (or not) GNU Guile support +AC_ARG_WITH([guile], [AS_HELP_STRING([--with-guile], + [Support GNU Guile for embedded scripting])]) + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. +PKG_PROG_PKG_CONFIG + +AS_IF([test "x$with_guile" != xno], +[ guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + AC_MSG_CHECKING([for GNU Guile]) + for v in $guile_versions; do + PKG_CHECK_EXISTS([guile-$v], [guile_version=$v; have_guile=yes; break], []) + done + AC_MSG_RESULT([$guile_version]) + AS_IF([test "$have_guile" = yes], + [ PKG_CHECK_MODULES(GUILE, [guile-$guile_version]) + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + AC_CHECK_HEADER([libguile.h], + [AC_DEFINE([HAVE_GUILE], [1], [Embed GNU Guile support])], + [have_guile=no], + [/* Avoid configuration error warnings. */]) + AS_IF([test "$have_guile" = yes], + [ AC_MSG_CHECKING([whether we can link GNU Guile]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} +]], [[ + scm_with_guile (guile_init, 0); +]])], + [have_guile=yes], + [have_guile=no]) + AC_MSG_RESULT([$have_guile])]) + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + ]) +]) + +AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = "yes"]) + +AC_CHECK_DECLS([sys_siglist, _sys_siglist, __sys_siglist], , , + [AC_INCLUDES_DEFAULT +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif +]) + + +# Check out the wait reality. +AC_CHECK_HEADERS([sys/wait.h],[],[],[[#include ]]) +AC_CHECK_FUNCS([waitpid wait3]) +AC_CACHE_CHECK([for union wait], [make_cv_union_wait], +[ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include +#include ]], + [[union wait status; int pid; pid = wait (&status); +#ifdef WEXITSTATUS +/* Some POSIXoid systems have both the new-style macros and the old + union wait type, and they do not work together. If union wait + conflicts with WEXITSTATUS et al, we don't want to use it at all. */ + if (WEXITSTATUS (status) != 0) pid = -1; +#ifdef WTERMSIG + /* If we have WEXITSTATUS and WTERMSIG, just use them on ints. */ + -- blow chunks here -- +#endif +#endif +#ifdef HAVE_WAITPID + /* Make sure union wait works with waitpid. */ + pid = waitpid (-1, &status, 0); +#endif + ]])], + [make_cv_union_wait=yes], + [make_cv_union_wait=no]) +]) +AS_IF([test "$make_cv_union_wait" = yes], +[ AC_DEFINE([HAVE_UNION_WAIT], [1], + [Define to 1 if you have the 'union wait' type in .]) +]) + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +AS_IF([test "$PATH_SEPARATOR" = ';'], +[ AC_DEFINE([HAVE_DOS_PATHS], [1], + [Define to 1 if your system requires backslashes or drive specs in pathnames.]) +]) + +# See if the user wants to use pmake's "customs" distributed build capability +AC_SUBST([REMOTE]) REMOTE=stub +use_customs=false +AC_ARG_WITH([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], + [y|ye|yes], [:], + [CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs" + make_ldflags="$LDFLAGS -L$with_customs/lib"]) + CF_NETLIBS + AC_CHECK_HEADER([customs.h], + [use_customs=true + REMOTE=cstms + LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags"], + [with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes]) + ]) +]) + +# Tell automake about this, so it can include the right .c files. +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], + 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], + 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"]) + +AS_IF([test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no], + [has_wait_nohang=no], + [has_wait_nohang=yes]) + +AC_CACHE_CHECK([for SA_RESTART], [make_cv_sa_restart], [ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[return SA_RESTART;]])], + [make_cv_sa_restart=yes], + [make_cv_sa_restart=no])]) + +AS_IF([test "$make_cv_sa_restart" != no], +[ AC_DEFINE([HAVE_SA_RESTART], [1], + [Define to 1 if defines the SA_RESTART constant.]) +]) + +# Only allow jobserver on systems that support it +AS_CASE([/$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/], + [*/no/*], [make_cv_job_server=no]) + +# Also supported on OS2 and MinGW +AS_CASE([$host_os], [os2*|mingw*], [make_cv_job_server=yes]) + +# If we support it and the user didn't disable it, build with jobserver +AS_CASE([/$make_cv_job_server/$user_job_server/], + [*/no/*], [: no jobserver], + [AC_DEFINE(MAKE_JOBSERVER, 1, + [Define to 1 to enable job server support in GNU make.]) + ]) + +# If dl*() functions are supported we can enable the load operation +AC_CHECK_DECLS([dlopen, dlsym, dlerror], [], [], + [[#include ]]) + +AC_ARG_ENABLE([load], + AS_HELP_STRING([--disable-load],[disable support for the 'load' operation]), + [make_cv_load="$enableval" user_load="$enableval"], + [make_cv_load="yes"]) + +AS_CASE([/$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/], + [*/no/*], [make_cv_load=no]) + +# We might need -ldl +AS_IF([test "$make_cv_load" = yes], [ + AC_SEARCH_LIBS([dlopen], [dl], [], [make_cv_load=]) + ]) + +AS_CASE([/$make_cv_load/$user_load/], + [*/no/*], [make_cv_load=no], + [AC_DEFINE(MAKE_LOAD, 1, + [Define to 1 to enable 'load' support in GNU make.]) + ]) + +# If we want load support, we might need to link with export-dynamic. +# See if we can figure it out. Unfortunately this is very difficult. +# For example passing -rdynamic to the SunPRO linker gives a warning +# but succeeds and creates a shared object, not an executable! +AS_IF([test "$make_cv_load" = yes], [ + AC_MSG_CHECKING([If the linker accepts -Wl,--export-dynamic]) + old_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" + AC_LINK_IFELSE([AC_LANG_SOURCE([int main(){}])], + [AC_MSG_RESULT([yes]) + AC_SUBST([AM_LDFLAGS], [-Wl,--export-dynamic])], + [AC_MSG_RESULT([no]) + AC_MSG_CHECKING([If the linker accepts -rdynamic]) + LDFLAGS="$old_LDFLAGS -rdynamic" + AC_LINK_IFELSE([AC_LANG_SOURCE([int main(){}])], + [AC_MSG_RESULT([yes]) + AC_SUBST([AM_LDFLAGS], [-rdynamic])], + [AC_MSG_RESULT([no])]) + ]) + LDFLAGS="$old_LDFLAGS" +]) + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +AS_IF([test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes], + [ AC_DEFINE([MAKE_SYMLINKS], [1], + [Define to 1 to enable symbolic link timestamp checking.]) +]) + +# Use posix_spawn if we have support and the user didn't disable it + +AC_ARG_ENABLE([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"]) + +AS_CASE([/$ac_cv_header_spawn/$ac_cv_func_posix_spawn/], + [*/no/*], [make_cv_posix_spawn=no]) + +AS_IF([test "$make_cv_posix_spawn" = yes], + AC_CACHE_CHECK([for posix_spawn that fails synchronously], + [make_cv_synchronous_posix_spawn], + [make_cv_synchronous_posix_spawn=no + AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include + #include + extern char **environ; + int main () { + char path[[]] = "./xxx-non-existent"; + char *argv[[]] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + }]])], + [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/], + [*/no/*], [make_cv_posix_spawn=no], + [AC_DEFINE(USE_POSIX_SPAWN, 1, [Define to 1 to use posix_spawn().]) + ]) + +# Find the SCCS commands, so we can include them in our default rules. + +AC_CACHE_CHECK([for location of SCCS get command], [make_cv_path_sccs_get], [ + AS_IF([test -f /usr/sccs/get], + [make_cv_path_sccs_get=/usr/sccs/get], + [make_cv_path_sccs_get=get]) +]) +AC_DEFINE_UNQUOTED([SCCS_GET], ["$make_cv_path_sccs_get"], + [Define to the name of the SCCS 'get' command.]) + +ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later. +AS_IF([(/usr/sccs/admin -n s.conftest || admin -n s.conftest) >/dev/null 2>&1 && + test -f s.conftest], +[ # We successfully created an SCCS file. + AC_CACHE_CHECK([if SCCS get command understands -G], [make_cv_sys_get_minus_G], + [AS_IF([$make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 && + test -f conftoast], + [make_cv_sys_get_minus_G=yes], + [make_cv_sys_get_minus_G=no]) + ]) + AS_IF([test "$make_cv_sys_get_minus_G" = yes], + [AC_DEFINE([SCCS_GET_MINUS_G], [1], + [Define to 1 if the SCCS 'get' command understands the '-G' option.]) + ]) +]) +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + +AC_DEFINE_UNQUOTED([MAKE_HOST],["$host"],[Build host information.]) +MAKE_HOST="$host" +AC_SUBST([MAKE_HOST]) + +w32_target_env=no +AM_CONDITIONAL([WINDOWSENV], [false]) + +AS_CASE([$host], + [*-*-mingw32], + [AM_CONDITIONAL([WINDOWSENV], [true]) + w32_target_env=yes + 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 +AS_IF([test -r "$srcdir/maintMakefile"], +[ MAINT_MAKEFILE="$srcdir/maintMakefile" +]) +AC_SUBST_FILE([MAINT_MAKEFILE]) + +# Allow building with dmalloc +AM_WITH_DMALLOC + +# Forcibly disable SET_MAKE. If it's set it breaks things like the test +# scripts, etc. +SET_MAKE= + +# Sanity check and inform the user of what we found + +AS_IF([test "x$make_badcust" = xyes], [ +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo +]) + +AS_CASE([$with_customs], +[""|n|no|y|ye|yes], [:], +[AS_IF([test -f "$with_customs/lib/libcustoms.a"], [:], +[ echo + echo "WARNING: '$with_customs/lib' does not appear to contain the" + echo " Customs library. You must build and install Customs" + echo " before compiling GNU make." + echo +])]) + +AS_IF([test "x$has_wait_nohang" = xno], +[ echo + echo "WARNING: Your system has neither waitpid() nor wait3()." + echo " Without one of these, signal handling is unreliable." + echo " You should be aware that running GNU make with -j" + echo " could result in erratic behavior." + echo +]) + +AS_IF([test "x$make_cv_job_server" = xno && test "x$user_job_server" = xyes], +[ echo + echo "WARNING: Make job server requires a POSIX-ish system that" + echo " supports the pipe(), sigaction(), and either" + echo " waitpid() or wait3() functions. Your system doesn't" + echo " appear to provide one or more of those." + echo " Disabling job server support." + echo +]) + +AS_IF([test "x$make_cv_load" = xno && test "x$user_load" = xyes], +[ echo + echo "WARNING: 'load' support requires a POSIX-ish system that" + echo " supports the dlopen(), dlsym(), and dlerror() functions." + echo " Your system doesn't appear to provide one or more of these." + echo " Disabling 'load' support." + echo +]) + +AS_IF([test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes], +[ echo + echo "WARNING: posix_spawn() is not supported on this system." + 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([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 + +dnl Local Variables: +dnl comment-start: "dnl " +dnl comment-end: "" +dnl comment-start-skip: "\\bdnl\\b\\s *" +dnl compile-command: "make configure config.h.in" +dnl End: diff --git a/local/recipes/dev/gnu-make/source/configure~ b/local/recipes/dev/gnu-make/source/configure~ new file mode 100755 index 0000000000..58a1d4f3e5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/configure~ @@ -0,0 +1,16404 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.71 for GNU Make 4.4. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else \$as_nop + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else \$as_nop + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else $as_nop + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Make' +PACKAGE_TARNAME='make' +PACKAGE_VERSION='4.4' +PACKAGE_STRING='GNU Make 4.4' +PACKAGE_BUGREPORT='bug-make@gnu.org' +PACKAGE_URL='https://www.gnu.org/software/make/' + +ac_unique_file="src/vpath.c" +ac_config_libobj_dir=lib +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_func_c_list= +ac_subst_vars='gltests_LIBOBJDEPS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LIBOBJDEPS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +KNOWN_PREFIX_FALSE +KNOWN_PREFIX_TRUE +WINDOWSENV_FALSE +WINDOWSENV_TRUE +MAKE_HOST +AM_LDFLAGS +USE_CUSTOMS_FALSE +USE_CUSTOMS_TRUE +REMOTE +HAVE_GUILE_FALSE +HAVE_GUILE_TRUE +GUILE_LIBS +GUILE_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +POSUB +LTLIBINTL +LIBINTL +INTLLIBS +LTLIBICONV +LIBICONV +INTL_MACOSX_LIBS +XGETTEXT_EXTRA_OPTIONS +MSGMERGE +XGETTEXT_015 +XGETTEXT +GMSGFMT_015 +MSGFMT_015 +GMSGFMT +MSGFMT +GETTEXT_MACRO_VERSION +USE_NLS +SED +PERL +LIBGNU_LTLIBDEPS +LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS +gltests_WITNESS +GL_GENERATE_STDBOOL_H_FALSE +GL_GENERATE_STDBOOL_H_TRUE +STDBOOL_H +HAVE__BOOL +USE_SYSTEM_GLOB +USE_SYSTEM_GLOB_FALSE +USE_SYSTEM_GLOB_TRUE +HOST_CPU_C_ABI +HOST_CPU +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE +GETLOADAVG_LIBS +GL_GNULIB_GETLOADAVG +HAVE_DECL_GETLOADAVG +GL_GENERATE_ALLOCA_H_FALSE +GL_GENERATE_ALLOCA_H_TRUE +ALLOCA_H +HAVE_ALLOCA_H +ALLOCA +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +RANLIB +ARFLAGS +AR +EGREP +GREP +CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='MAINT_MAKEFILE' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_largefile +enable_year2038 +enable_cross_guesses +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_guile +with_customs +enable_case_insensitive_file_system +enable_job_server +enable_load +enable_posix_spawn +with_dmalloc +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GUILE_CFLAGS +GUILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures GNU Make 4.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/make] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Make 4.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --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 + --enable-case-insensitive-file-system + assume file systems are case insensitive + --disable-job-server disallow recursive make communication during -jN + --disable-load disable support for the 'load' operation + --disable-posix-spawn disable support for posix_spawn() + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + --with-guile Support GNU Guile for embedded scripting + --with-customs=DIR enable remote jobs via Customs--see README.customs + --with-dmalloc use dmalloc, as in http://www.dmalloc.com + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + GUILE_CFLAGS + C compiler flags for GUILE, overriding pkg-config + GUILE_LIBS linker flags for GUILE, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +GNU Make home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Make configure 4.4 +generated by GNU Autoconf 2.71 + +Copyright (C) 2021 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + ac_compile="$ac_save_ac_compile" + +} # ac_fn_check_decl + +# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +# ---------------------------------------------------- +# Tries to find if the field MEMBER exists in type AGGR, after including +# INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else $as_nop + eval "$4=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$4 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.71. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" +as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +gt_needs="$gt_needs " +as_fn_append ac_header_c_list " vfork.h vfork_h HAVE_VFORK_H" +as_fn_append ac_func_c_list " fork HAVE_FORK" +as_fn_append ac_func_c_list " vfork HAVE_VFORK" + +# Auxiliary files required by this configure script. +ac_aux_files="config.rpath config.guess config.sub compile missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Autoconf setup + + +ac_config_headers="$ac_config_headers src/config.h" + + + + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +am__api_version='1.16' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + SET_MAKE= +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if printf "%s\n" 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='make' + VERSION='4.4' + + +printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + +# Checks for programs. + + + + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf "%s\n" "${_am_result}" >&6; } + +# Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else $as_nop + ac_file='' +fi +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else $as_nop + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else $as_nop + gl_cv_compiler_clang=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf "%s\n" "$gl_cv_compiler_clang" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else $as_nop + gl_cv_compiler_check_decl_option=none +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf "%s\n" "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else $as_nop + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } + + printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf "%s\n" "#define _MINIX 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h + +else $as_nop + MINIX= +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else $as_nop + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else $as_nop + gl_cv_compiler_clang=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf "%s\n" "$gl_cv_compiler_clang" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else $as_nop + gl_cv_compiler_check_decl_option=none +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf "%s\n" "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# Configure gnulib + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + + + + + case "$host_os" in + openbsd*) + +printf "%s\n" "#define _ISOC11_SOURCE 1" >>confdefs.h + + ;; + esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 +printf %s "checking for Minix Amsterdam compiler... " >&6; } +if test ${gl_cv_c_amsterdam_compiler+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Amsterdam" >/dev/null 2>&1 +then : + gl_cv_c_amsterdam_compiler=yes +else $as_nop + gl_cv_c_amsterdam_compiler=no +fi +rm -rf conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +printf "%s\n" "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + : + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + +# Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO" +then : + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test ${ac_cv_sys_file_offset_bits+y} +then : + printf %s "(cached) " >&6 +else $as_nop + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h +;; +esac +rm -rf conftest* + case $ac_cv_sys_file_offset_bits in #( + unknown) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } +if test ${ac_cv_sys_large_files+y} +then : + printf %s "(cached) " >&6 +else $as_nop + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _LARGE_FILES +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (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 + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_y2038=yes +else $as_nop + gl_cv_type_time_t_y2038=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_y2038" >&5 +printf "%s\n" "$gl_cv_type_time_t_y2038" >&6; } + if test "$gl_cv_type_time_t_y2038" = no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit time_t with _TIME_BITS=64" >&5 +printf %s "checking for 64-bit time_t with _TIME_BITS=64... " >&6; } +if test ${gl_cv_type_time_t_bits_macro+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_bits_macro=yes +else $as_nop + gl_cv_type_time_t_bits_macro=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_bits_macro" >&5 +printf "%s\n" "$gl_cv_type_time_t_bits_macro" >&6; } + if test "$gl_cv_type_time_t_bits_macro" = yes; then + +printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h + + +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 alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + + + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: + + + + + + + + + + # Check whether --enable-cross-guesses was given. +if test ${enable_cross_guesses+y} +then : + enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 +printf "%s\n" "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} + enableval=conservative + fi + gl_cross_guesses="$enableval" +else $as_nop + gl_cross_guesses=conservative +fi + + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ + + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else $as_nop + +printf "%s\n" "#define size_t unsigned int" >>confdefs.h + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else $as_nop + ac_cv_working_alloca_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf "%s\n" "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test $ac_cv_working_alloca_h = yes; then + ac_cv_func_alloca_works=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +else $as_nop + ac_cv_func_alloca_works=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf "%s\n" "$ac_cv_func_alloca_works" >&6; } +fi + +if test $ac_cv_func_alloca_works = yes; then + +printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + + + + + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else $as_nop + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf "%s\n" "$ac_cv_c_stack_direction" >&6; } +printf "%s\n" "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + +else $as_nop + +printf "%s\n" "#define eaccess access" >>confdefs.h + +fi + + + + HAVE_DECL_GETLOADAVG=1; + + + + + + + + + + + GL_GNULIB_GETLOADAVG=0 + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 +printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else $as_nop + ac_cv_c_undeclared_builtin_options=$ac_arg +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See \`config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _MSC_VER +MicrosoftCompiler +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "MicrosoftCompiler" >/dev/null 2>&1 +then : + rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if test -f conftest.o; then + gl_asmext='s' + gl_c_asm_opt='-S' + else + gl_asmext='asm' + gl_c_asm_opt='-c -Fa' + fi + rm -f conftest* + +else $as_nop + gl_asmext='s' + gl_c_asm_opt='-S' + +fi +rm -rf conftest* + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 +printf %s "checking host CPU and C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$host_cpu" in + + i[34567]86 ) + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=x86_64-x32 +else $as_nop + gl_cv_host_cpu_c_abi=x86_64 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else $as_nop + gl_cv_host_cpu_c_abi=i386 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __aarch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=arm64-ilp32 +else $as_nop + gl_cv_host_cpu_c_abi=arm64 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else $as_nop + # Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=hppa64 +else $as_nop + gl_cv_host_cpu_c_abi=hppa +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=ia64-ilp32 +else $as_nop + gl_cv_host_cpu_c_abi=ia64 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mips64 +else $as_nop + # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mipsn32 +else $as_nop + gl_cv_host_cpu_c_abi=mips +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=powerpc64-elfv2 +else $as_nop + gl_cv_host_cpu_c_abi=powerpc64 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else $as_nop + gl_cv_host_cpu_c_abi=powerpc +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cpu=riscv64 +else $as_nop + cpu=riscv32 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else $as_nop + main_abi=ilp32 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=d +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=f +else $as_nop + float_abi='' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=s390x +else $as_nop + gl_cv_host_cpu_c_abi=s390 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=sparc64 +else $as_nop + gl_cv_host_cpu_c_abi=sparc +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 +printf "%s\n" "$gl_cv_host_cpu_c_abi" >&6; } + + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + + + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <&5 +printf %s "checking for 64-bit off_t... " >&6; } +if test ${gl_cv_type_off_t_64+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_off_t_64=yes +else $as_nop + gl_cv_type_off_t_64=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 +printf "%s\n" "$gl_cv_type_off_t_64" >&6; } + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 +printf %s "checking for 64-bit st_size... " >&6; } +if test ${gl_cv_member_st_size_64+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_member_st_size_64=yes +else $as_nop + gl_cv_member_st_size_64=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 +printf "%s\n" "$gl_cv_member_st_size_64" >&6; } + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac + +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 + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C 1999 requires bool, true, and false to be macros, + C 2023 and C++ 2011 overrule that, so do not test for that. + Although C 1999 requires __bool_true_false_are_defined and + _Bool, C 2023 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + +int +main (void) +{ + + 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 : + ac_cv_header_stdbool_h=yes +else $as_nop + ac_cv_header_stdbool_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +printf "%s\n" "$ac_cv_header_stdbool_h" >&6; } + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 +printf %s "checking for C compiler option to allow warnings... " >&6; } +if test ${gl_cv_cc_wallow+y} +then : + printf %s "(cached) " >&6 +else $as_nop + rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 +printf "%s\n" "$gl_cv_cc_wallow" >&6; } + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + + + + + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 + (eval $gl_command) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + + + + + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + + + + + + + + + + + + + gl_source_base='lib' + gl_source_base_prefix= + + + if test $ac_cv_func_alloca_works = no; then + : + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 +printf %s "checking for alloca as a compiler built-in... " >&6; } +if test ${gl_cv_rpl_alloca+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Need own alloca" >/dev/null 2>&1 +then : + gl_cv_rpl_alloca=yes +else $as_nop + gl_cv_rpl_alloca=no +fi +rm -rf conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 +printf "%s\n" "$gl_cv_rpl_alloca" >&6; } + if test $gl_cv_rpl_alloca = yes; then + +printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h + + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + + + + + + + case "$GL_GENERATE_ALLOCA_H" in + false) ALLOCA_H='' ;; + true) + if test -z "$ALLOCA_H"; then + ALLOCA_H="${gl_source_base_prefix}alloca.h" + fi + ;; + *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_ALLOCA_H; then + GL_GENERATE_ALLOCA_H_TRUE= + GL_GENERATE_ALLOCA_H_FALSE='#' +else + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE= +fi +: + if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE='#' + fi + + + + + + + + + + + + + + + + + + +# Persuade glibc to declare getloadavg(). + + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + +else $as_nop + gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +printf %s "checking for elf_begin in -lelf... " >&6; } +if test ${ac_cv_lib_elf_elf_begin+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char elf_begin (); +int +main (void) +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_elf_elf_begin=yes +else $as_nop + ac_cv_lib_elf_elf_begin=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +printf "%s\n" "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes +then : + LIBS="-lelf $LIBS" +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 +printf %s "checking for kvm_open in -lkvm... " >&6; } +if test ${ac_cv_lib_kvm_kvm_open+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lkvm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char kvm_open (); +int +main (void) +{ +return kvm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kvm_kvm_open=yes +else $as_nop + ac_cv_lib_kvm_kvm_open=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 +printf "%s\n" "$ac_cv_lib_kvm_kvm_open" >&6; } +if test "x$ac_cv_lib_kvm_kvm_open" = xyes +then : + LIBS="-lkvm $LIBS" +fi + + # Check for the 4.4BSD definition of getloadavg. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 +printf %s "checking for getloadavg in -lutil... " >&6; } +if test ${ac_cv_lib_util_getloadavg+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char getloadavg (); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_getloadavg=yes +else $as_nop + ac_cv_lib_util_getloadavg=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 +printf "%s\n" "$ac_cv_lib_util_getloadavg" >&6; } +if test "x$ac_cv_lib_util_getloadavg" = xyes +then : + LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes +fi + + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 +printf %s "checking for getloadavg in -lgetloadavg... " >&6; } +if test ${ac_cv_lib_getloadavg_getloadavg+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgetloadavg $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char getloadavg (); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_getloadavg_getloadavg=yes +else $as_nop + ac_cv_lib_getloadavg_getloadavg=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 +printf "%s\n" "$ac_cv_lib_getloadavg_getloadavg" >&6; } +if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes +then : + LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes +else $as_nop + LIBS=$gl_getloadavg_LIBS +fi + + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 +printf %s "checking for kstat_open in -lkstat... " >&6; } +if test ${ac_cv_lib_kstat_kstat_open+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lkstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char kstat_open (); +int +main (void) +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kstat_kstat_open=yes +else $as_nop + ac_cv_lib_kstat_kstat_open=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 +printf "%s\n" "$ac_cv_lib_kstat_kstat_open" >&6; } +if test "x$ac_cv_lib_kstat_kstat_open" = xyes +then : + printf "%s\n" "#define HAVE_LIBKSTAT 1" >>confdefs.h + + LIBS="-lkstat $LIBS" + +fi + + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 +printf %s "checking for perfstat_cpu_total in -lperfstat... " >&6; } +if test ${ac_cv_lib_perfstat_perfstat_cpu_total+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lperfstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char perfstat_cpu_total (); +int +main (void) +{ +return perfstat_cpu_total (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_perfstat_perfstat_cpu_total=yes +else $as_nop + ac_cv_lib_perfstat_perfstat_cpu_total=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 +printf "%s\n" "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } +if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes +then : + printf "%s\n" "#define HAVE_LIBPERFSTAT 1" >>confdefs.h + + LIBS="-lperfstat $LIBS" + +fi + + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf "%s\n" "#define DGUX 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 +printf %s "checking for dg_sys_info in -ldgc... " >&6; } +if test ${ac_cv_lib_dgc_dg_sys_info+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldgc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dg_sys_info (); +int +main (void) +{ +return dg_sys_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dgc_dg_sys_info=yes +else $as_nop + ac_cv_lib_dgc_dg_sys_info=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 +printf "%s\n" "$ac_cv_lib_dgc_dg_sys_info" >&6; } +if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes +then : + printf "%s\n" "#define HAVE_LIBDGC 1" >>confdefs.h + + LIBS="-ldgc $LIBS" + +fi + +fi + + fi + fi +fi + + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getloadavg" = xyes +then : + +else $as_nop + HAVE_DECL_GETLOADAVG=0 +fi + + + if test $HAVE_GETLOADAVG = 0; then + GL_COND_OBJ_GETLOADAVG_TRUE= + GL_COND_OBJ_GETLOADAVG_FALSE='#' +else + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE= +fi +: + if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE='#' + fi + + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : + + +# Figure out what our getloadavg.c needs. + + + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + + for ac_func in pstat_getdynamic +do : + ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic" +if test "x$ac_cv_func_pstat_getdynamic" = xyes +then : + printf "%s\n" "#define HAVE_PSTAT_GETDYNAMIC 1" >>confdefs.h + gl_func_getloadavg_done=yes +fi + +done +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + +printf "%s\n" "#define SVR4 1" >>confdefs.h + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf "%s\n" "#define UMAX 1" >>confdefs.h + + +printf "%s\n" "#define UMAX4_3 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes; printf "%s\n" "#define UMAX 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf "%s\n" "#define HAVE_MACH_MACH_H 1" >>confdefs.h + +fi + +fi + + for ac_header in nlist.h +do : + ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" +if test "x$ac_cv_header_nlist_h" = xyes +then : + printf "%s\n" "#define HAVE_NLIST_H 1" >>confdefs.h + ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include +" +if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h + + +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +printf "%s\n" "#define N_NAME_POINTER 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi + +done + +fi + + + + + + + + + + GL_GNULIB_GETLOADAVG=1 + + + + + +printf "%s\n" "#define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h + + + + + + # Check the system to see if it provides GNU glob. If not, use our + # local version. + { 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. */ + + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "gnu glob" >/dev/null 2>&1 +then : + make_cv_sys_gnu_glob=yes +else $as_nop + make_cv_sys_gnu_glob=no +fi +rm -rf conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 +printf "%s\n" "$make_cv_sys_gnu_glob" >&6; } + # Tell automake about this, so it can build the right .c files. + if test "$make_cv_sys_gnu_glob" = yes; then + USE_SYSTEM_GLOB_TRUE= + USE_SYSTEM_GLOB_FALSE='#' +else + USE_SYSTEM_GLOB_TRUE='#' + USE_SYSTEM_GLOB_FALSE= +fi + + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + + # Check for DOS-style pathnames. + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 +printf %s "checking whether system uses MSDOS-style paths... " >&6; } +if test ${ac_cv_dos_paths+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__ +neither MSDOS nor Windows nor OS2 +#endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_dos_paths=yes +else $as_nop + ac_cv_dos_paths=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 +printf "%s\n" "$ac_cv_dos_paths" >&6; } + + if test x"$ac_cv_dos_paths" = xyes +then : + +printf "%s\n" "#define HAVE_DOS_PATHS 1" >>confdefs.h + +fi + + + + + + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + + + + + + + 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 + + + if $GL_GENERATE_STDBOOL_H; then + GL_GENERATE_STDBOOL_H_TRUE= + GL_GENERATE_STDBOOL_H_FALSE='#' +else + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE= +fi +: + 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 + + + + + + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + + + + gl_source_base='tests' + gl_source_base_prefix= + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gltests_WITNESS + + + + + + + + + + + + + LIBGNU_LIBDEPS="$gl_libdeps" + + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Perl is needed for the test suite (only) +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="perl" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl" +fi +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf "%s\n" "$PERL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + +# Specialized system macros + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else $as_nop + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else $as_nop + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main (void) +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else $as_nop + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf "%s\n" "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Enable gettext, in "external" mode. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + # Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else $as_nop + USE_NLS=yes +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf "%s\n" "$MSGFMT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf "%s\n" "$GMSGFMT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac + + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf "%s\n" "$XGETTEXT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + rm -f messages.po + + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf "%s\n" "$MSGMERGE" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +# Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else $as_nop + with_gnu_ld=no +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 &5 +printf "%s\n" "$LD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf "%s\n" "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath was given. +if test ${enable_rpath+y} +then : + enableval=$enable_rpath; : +else $as_nop + enable_rpath=yes +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _LP64 +sixtyfour bits +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "sixtyfour bits" >/dev/null 2>&1 +then : + gl_cv_solaris_64bit=yes +else $as_nop + gl_cv_solaris_64bit=no +fi +rm -rf conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf "%s\n" "$gl_cv_solaris_64bit" >&6; } + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else $as_nop + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else $as_nop + gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else $as_nop + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyCurrent=yes +else $as_nop + gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf "%s\n" "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +printf "%s\n" "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + LIBINTL= + LTLIBINTL= + POSUB= + + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else $as_nop + eval "$gt_func_gnugettext_libc=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf "%s\n" "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + if test "$cross_compiling" = yes +then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + result |= 16; + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf "%s\n" "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf "%s\n" "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else $as_nop + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else $as_nop + eval "$gt_func_gnugettext_libintl=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + fi + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf "%s\n" "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf "%s\n" "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h + + +printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# Checks for libraries. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char strerror (); +int +main (void) +{ +return strerror (); + ; + return 0; +} +_ACEOF +for ac_lib in '' cposix +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_strerror=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_strerror+y} +then : + break +fi +done +if test ${ac_cv_search_strerror+y} +then : + +else $as_nop + ac_cv_search_strerror=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf "%s\n" "$ac_cv_search_strerror" >&6; } +ac_res=$ac_cv_search_strerror +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 +printf %s "checking for library containing getpwnam... " >&6; } +if test ${ac_cv_search_getpwnam+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char getpwnam (); +int +main (void) +{ +return getpwnam (); + ; + return 0; +} +_ACEOF +for ac_lib in '' sun +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_getpwnam=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getpwnam+y} +then : + break +fi +done +if test ${ac_cv_search_getpwnam+y} +then : + +else $as_nop + ac_cv_search_getpwnam=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 +printf "%s\n" "$ac_cv_search_getpwnam" >&6; } +ac_res=$ac_cv_search_getpwnam +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +printf %s "checking for $ac_hdr that defines DIR... " >&6; } +if eval test \${$as_ac_Header+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else $as_nop + eval "$as_ac_Header=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$as_ac_Header + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else $as_nop + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else $as_nop + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stat_broken=no +else $as_nop + ac_cv_header_stat_broken=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf "%s\n" "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +printf "%s\n" "#define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "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 + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf "%s\n" "#define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timeb_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIMEB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "spawn.h" "ac_cv_header_spawn_h" "$ac_includes_default" +if test "x$ac_cv_header_spawn_h" = xyes +then : + printf "%s\n" "#define HAVE_SPAWN_H 1" >>confdefs.h + +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else $as_nop + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf "%s\n" "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf "%s\n" "#define const /**/" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +printf %s "checking for uid_t in sys/types.h... " >&6; } +if test ${ac_cv_type_uid_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "uid_t" >/dev/null 2>&1 +then : + ac_cv_type_uid_t=yes +else $as_nop + ac_cv_type_uid_t=no +fi +rm -rf conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +printf "%s\n" "$ac_cv_type_uid_t" >&6; } +if test $ac_cv_type_uid_t = no; then + +printf "%s\n" "#define uid_t int" >>confdefs.h + + +printf "%s\n" "#define gid_t int" >>confdefs.h + +fi + + + ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default +" +if test "x$ac_cv_type_pid_t" = xyes +then : + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else $as_nop + ac_pid_type='__int64' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h + + +fi + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else $as_nop + +printf "%s\n" "#define off_t long int" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else $as_nop + +printf "%s\n" "#define size_t unsigned int" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else $as_nop + +printf "%s\n" "#define ssize_t int" >>confdefs.h + +fi + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else $as_nop + ac_cv_type_unsigned_long_long_int=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + if test "$cross_compiling" = yes +then : + : +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #ifndef LLONG_MAX + # define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else $as_nop + ac_cv_type_long_long_int=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then + +printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default" +if test "x$ac_cv_type_intmax_t" = xyes +then : + +printf "%s\n" "#define HAVE_INTMAX_T 1" >>confdefs.h + +else $as_nop + test $ac_cv_type_long_long_int = yes \ + && ac_type='long long int' \ + || ac_type='long int' + +printf "%s\n" "#define intmax_t $ac_type" >>confdefs.h + +fi + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf "%s\n" "#define HAVE_UINTMAX_T 1" >>confdefs.h + +else $as_nop + test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf "%s\n" "#define uintmax_t $ac_type" >>confdefs.h + +fi + + + +# Check for sig_atomic_t + + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include +" +if test "x$ac_cv_type_sig_atomic_t" = xyes +then : + +printf "%s\n" "#define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + + +else $as_nop + +printf "%s\n" "#define sig_atomic_t int" >>confdefs.h + +fi + + + +# Find out whether our struct stat returns nanosecond resolution timestamps. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 +printf %s "checking for nanoseconds field of struct stat... " >&6; } +if test ${ac_cv_struct_st_mtim_nsec+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # st_mtim.tv_nsec -- the usual case + # st_mtim._tv_nsec -- Solaris 2.6, if + # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 + # && !defined __EXTENSIONS__) + # st_mtim.st__tim.tv_nsec -- UnixWare 2.1.2 + # st_mtime_n -- AIX 5.2 and above + # st_mtimespec.tv_nsec -- Darwin (Mac OSX) + for ac_val in st_mtim.tv_nsec st_mtim._tv_nsec st_mtim.st__tim.tv_nsec st_mtime_n st_mtimespec.tv_nsec; do + CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main (void) +{ +struct stat s; s.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_st_mtim_nsec=$ac_val; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 +printf "%s\n" "$ac_cv_struct_st_mtim_nsec" >&6; } + + if test $ac_cv_struct_st_mtim_nsec != no; then + +printf "%s\n" "#define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h + + fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 +printf %s "checking whether to use high resolution file timestamps... " >&6; } +if test ${make_cv_file_timestamp_hi_res+y} +then : + printf %s "(cached) " >&6 +else $as_nop + make_cv_file_timestamp_hi_res=no + if test "$ac_cv_struct_st_mtim_nsec" != no +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if HAVE_INTTYPES_H +# include +#endif +int +main (void) +{ +char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_file_timestamp_hi_res=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 +printf "%s\n" "$make_cv_file_timestamp_hi_res" >&6; } +if test "$make_cv_file_timestamp_hi_res" = yes +then : + val=1 +else $as_nop + val=0 +fi + +printf "%s\n" "#define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h + + +if test "$make_cv_file_timestamp_hi_res" = yes +then : + # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. + # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char clock_gettime (); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else $as_nop + ac_cv_search_clock_gettime=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "$ac_cv_search_clock_gettime" != no +then : + +printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +fi + +fi + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 +printf %s "checking for standard gettimeofday... " >&6; } +if test ${ac_cv_func_gettimeofday+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_func_gettimeofday=no + if test "$cross_compiling" = yes +then : + ac_cv_func_gettimeofday="no (cross-compiling)" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return gettimeofday (&t, 0) != 0 + || t.tv_sec < 0 || t.tv_usec < 0; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_gettimeofday=yes +else $as_nop + ac_cv_func_gettimeofday=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 +printf "%s\n" "$ac_cv_func_gettimeofday" >&6; } +if test "$ac_cv_func_gettimeofday" = yes +then : + +printf "%s\n" "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes +then : + printf "%s\n" "#define HAVE_STRTOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" +if test "x$ac_cv_func_strndup" = xyes +then : + printf "%s\n" "#define HAVE_STRNDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf "%s\n" "#define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf "%s\n" "#define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf "%s\n" "#define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf "%s\n" "#define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf "%s\n" "#define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktemp" "ac_cv_func_mktemp" +if test "x$ac_cv_func_mktemp" = xyes +then : + printf "%s\n" "#define HAVE_MKTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopen" "ac_cv_func_fdopen" +if test "x$ac_cv_func_fdopen" = xyes +then : + printf "%s\n" "#define HAVE_FDOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf "%s\n" "#define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf "%s\n" "#define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf "%s\n" "#define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigsetmask" "ac_cv_func_sigsetmask" +if test "x$ac_cv_func_sigsetmask" = xyes +then : + printf "%s\n" "#define HAVE_SIGSETMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf "%s\n" "#define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf "%s\n" "#define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf "%s\n" "#define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf "%s\n" "#define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf "%s\n" "#define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf "%s\n" "#define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf "%s\n" "#define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf "%s\n" "#define HAVE_GETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" +if test "x$ac_cv_func_setrlimit" = xyes +then : + printf "%s\n" "#define HAVE_SETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf "%s\n" "#define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf "%s\n" "#define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf "%s\n" "#define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf "%s\n" "#define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf "%s\n" "#define HAVE_ATEXIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty" +if test "x$ac_cv_func_isatty" = xyes +then : + printf "%s\n" "#define HAVE_ISATTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf "%s\n" "#define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf "%s\n" "#define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnattr_setsigmask" "ac_cv_func_posix_spawnattr_setsigmask" +if test "x$ac_cv_func_posix_spawnattr_setsigmask" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h + +fi + + +# We need to check declarations, not just existence, because on Tru64 this +# function is not declared without special flags, which themselves cause +# other problems. We'll just use our own. +ac_fn_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h + + + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + + +if test "x$ac_cv_func_fork" = xyes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +printf %s "checking for working fork... " >&6; } +if test ${ac_cv_func_fork_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + ac_cv_func_fork_works=cross +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* By Ruediger Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_fork_works=yes +else $as_nop + ac_cv_func_fork_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +printf "%s\n" "$ac_cv_func_fork_works" >&6; } + +else + ac_cv_func_fork_works=$ac_cv_func_fork +fi +if test "x$ac_cv_func_fork_works" = xcross; then + case $host in + *-*-amigaos* | *-*-msdosdjgpp*) + # Override, as these systems have only a dummy fork() stub + ac_cv_func_fork_works=no + ;; + *) + ac_cv_func_fork_works=yes + ;; + esac + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +printf "%s\n" "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} +fi +ac_cv_func_vfork_works=$ac_cv_func_vfork +if test "x$ac_cv_func_vfork" = xyes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +printf %s "checking for working vfork... " >&6; } +if test ${ac_cv_func_vfork_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + ac_cv_func_vfork_works=cross +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#include +#ifdef HAVE_VFORK_H +# include +#endif + +static void +do_nothing (int sig) +{ + (void) sig; +} + +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. The compiler + is told about this with #include , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +sparc_address_test (int arg) +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} + +int +main (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + /* On Solaris 2.4, changes by the child to the signal handler + also munge signal handlers in the parent. To detect this, + start by putting the parent's handler in a known state. */ + signal (SIGTERM, SIG_DFL); + + child = vfork (); + + if (child == 0) { + /* Here is another test for sparc vfork register problems. This + test uses lots of local variables, at least as many local + variables as main has allocated so far including compiler + temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris + 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should + reuse the register of parent for one of the local variables, + since it will think that parent can't possibly be used any more + in this routine. Assigning to the local variable will thus + munge parent in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); + + /* Alter the child's signal handler. */ + if (signal (SIGTERM, do_nothing) != SIG_DFL) + _exit(1); + + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent + from child file descriptors. If the child closes a descriptor + before it execs or exits, this munges the parent's descriptor + as well. Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child munge the parent's signal handler? */ + || signal (SIGTERM, SIG_DFL) != SIG_DFL + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_vfork_works=yes +else $as_nop + ac_cv_func_vfork_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +printf "%s\n" "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +printf "%s\n" "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +printf "%s\n" "#define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +printf "%s\n" "#define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +printf "%s\n" "#define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + + +# Rumor has it that strcasecmp lives in -lresolv on some odd systems. +# It doesn't hurt much to use our own if we can't find it so I don't +# make the effort here. +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf "%s\n" "#define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcmpi" "ac_cv_func_strcmpi" +if test "x$ac_cv_func_strcmpi" = xyes +then : + printf "%s\n" "#define HAVE_STRCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncmpi" "ac_cv_func_strncmpi" +if test "x$ac_cv_func_strncmpi" = xyes +then : + printf "%s\n" "#define HAVE_STRNCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp" +if test "x$ac_cv_func_stricmp" = xyes +then : + printf "%s\n" "#define HAVE_STRICMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp" +if test "x$ac_cv_func_strnicmp" = xyes +then : + printf "%s\n" "#define HAVE_STRNICMP 1" >>confdefs.h + +fi + + +# strcoll() is used by the GNU glob library +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on glibc systems. + *-gnu*) ac_cv_func_strcoll_works=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_strcoll_works=no ;; + esac +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_strcoll_works=yes +else $as_nop + ac_cv_func_strcoll_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf "%s\n" "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +printf "%s\n" "#define HAVE_STRCOLL 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +printf %s "checking whether closedir returns void... " >&6; } +if test ${ac_cv_func_closedir_void+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <$ac_header_dirent> + +int +main (void) +{ + + return closedir(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_closedir_void=no +else $as_nop + ac_cv_func_closedir_void=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +printf "%s\n" "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +printf "%s\n" "#define CLOSEDIR_VOID 1" >>confdefs.h + +fi + + +# dir.c and our glob.c use dirent.d_type if available + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + + + +# See if the user wants to add (or not) GNU Guile support + +# Check whether --with-guile was given. +if test ${with_guile+y} +then : + withval=$with_guile; +fi + + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$with_guile" != xno +then : + guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 +printf %s "checking for GNU Guile... " >&6; } + for v in $guile_versions; do + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + guile_version=$v; have_guile=yes; break +fi + done + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 +printf "%s\n" "$guile_version" >&6; } + if test "$have_guile" = yes +then : + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&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" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GUILE_LIBS"; then + pkg_cv_GUILE_LIBS="$GUILE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-$guile_version" 2>&1` + else + GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (guile-$guile_version) were not met: + +$GUILE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details" "$LINENO" 5; } +else + GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS + GUILE_LIBS=$pkg_cv_GUILE_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +fi + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */ +" +if test "x$ac_cv_header_libguile_h" = xyes +then : + +printf "%s\n" "#define HAVE_GUILE 1" >>confdefs.h + +else $as_nop + have_guile=no +fi + + if test "$have_guile" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we can link GNU Guile" >&5 +printf %s "checking whether we can link GNU Guile... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} + +int +main (void) +{ + + scm_with_guile (guile_init, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_guile=yes +else $as_nop + have_guile=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_guile" >&5 +printf "%s\n" "$have_guile" >&6; } +fi + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + +fi + +fi + + if test "$have_guile" = "yes"; then + HAVE_GUILE_TRUE= + HAVE_GUILE_FALSE='#' +else + HAVE_GUILE_TRUE='#' + HAVE_GUILE_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +# Check out the wait reality. +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf "%s\n" "#define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf "%s\n" "#define HAVE_WAIT3 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 +printf %s "checking for union wait... " >&6; } +if test ${make_cv_union_wait+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +union wait status; int pid; pid = wait (&status); +#ifdef WEXITSTATUS +/* Some POSIXoid systems have both the new-style macros and the old + union wait type, and they do not work together. If union wait + conflicts with WEXITSTATUS et al, we don't want to use it at all. */ + if (WEXITSTATUS (status) != 0) pid = -1; +#ifdef WTERMSIG + /* If we have WEXITSTATUS and WTERMSIG, just use them on ints. */ + -- blow chunks here -- +#endif +#endif +#ifdef HAVE_WAITPID + /* Make sure union wait works with waitpid. */ + pid = waitpid (-1, &status, 0); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + make_cv_union_wait=yes +else $as_nop + make_cv_union_wait=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 +printf "%s\n" "$make_cv_union_wait" >&6; } +if test "$make_cv_union_wait" = yes +then : + +printf "%s\n" "#define HAVE_UNION_WAIT 1" >>confdefs.h + + +fi + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +if test "$PATH_SEPARATOR" = ';' +then : + +printf "%s\n" "#define HAVE_DOS_PATHS 1" >>confdefs.h + + +fi + +# See if the user wants to use pmake's "customs" distributed build capability + REMOTE=stub +use_customs=false + +# Check whether --with-customs was given. +if test ${with_customs+y} +then : + withval=$with_customs; case $withval in #( + n|no) : + : ;; #( + *) : + make_cppflags="$CPPFLAGS" + case $withval in #( + y|ye|yes) : + : ;; #( + *) : + CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs" + make_ldflags="$LDFLAGS -L$with_customs/lib" ;; +esac + +cf_test_netlibs=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 +printf %s "checking for network libraries... " >&6; } +if test ${cf_cv_netlibs+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: working..." >&5 +printf "%s\n" "working..." >&6; } +cf_cv_netlibs="" +cf_test_netlibs=yes + + for ac_func in gethostname +do : + ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h + +else $as_nop + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lnsl" >&5 +printf %s "checking for gethostname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char gethostname (); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else $as_nop + ac_cv_lib_nsl_gethostname=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf "%s\n" "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else $as_nop + + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 +printf %s "checking for gethostname in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_gethostname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char gethostname (); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_gethostname=yes +else $as_nop + ac_cv_lib_socket_gethostname=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 +printf "%s\n" "$ac_cv_lib_socket_gethostname" >&6; } +if test "x$ac_cv_lib_socket_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else $as_nop + + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + +fi + + +fi + + +fi + +done +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_main=yes +else $as_nop + ac_cv_lib_inet_main=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf "%s\n" "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : + cf_cv_netlibs="-linet $cf_cv_netlibs" +fi + +# +if test "$ac_cv_func_lsocket" != no ; then + + for ac_func in socket +do : + ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket" +if test "x$ac_cv_func_socket" = xyes +then : + printf "%s\n" "#define HAVE_SOCKET 1" >>confdefs.h + +else $as_nop + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +printf %s "checking for socket in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_socket+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char socket (); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else $as_nop + ac_cv_lib_socket_socket=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf "%s\n" "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else $as_nop + + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 +printf %s "checking for socket in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_socket+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char socket (); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_socket=yes +else $as_nop + ac_cv_lib_bsd_socket=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 +printf "%s\n" "$ac_cv_lib_bsd_socket" >&6; } +if test "x$ac_cv_lib_bsd_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" +else $as_nop + + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + +fi + + +fi + + +fi + +done +fi +# + + for ac_func in gethostbyname +do : + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = xyes +then : + printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +else $as_nop + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +printf %s "checking for gethostbyname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else $as_nop + ac_cv_lib_nsl_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf "%s\n" "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + + +cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else $as_nop + + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null + +fi + + +fi + +done + +fi + +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 + + ac_fn_c_check_header_compile "$LINENO" "customs.h" "ac_cv_header_customs_h" "$ac_includes_default" +if test "x$ac_cv_header_customs_h" = xyes +then : + use_customs=true + REMOTE=cstms + LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags" +else $as_nop + with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes +fi + + ;; +esac + +fi + + +# Tell automake about this, so it can include the right .c files. + if test "$use_customs" = true; then + USE_CUSTOMS_TRUE= + USE_CUSTOMS_FALSE='#' +else + USE_CUSTOMS_TRUE='#' + USE_CUSTOMS_FALSE= +fi + + +# See if the user asked to handle case insensitive file systems. + +# Check whether --enable-case-insensitive-file-system was given. +if test ${enable_case_insensitive_file_system+y} +then : + enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes +then : + printf "%s\n" "#define HAVE_CASE_INSENSITIVE_FS 1" >>confdefs.h + +fi +fi + + +# See if we can handle the job server feature, and if the user wants it. +# Check whether --enable-job-server was given. +if test ${enable_job_server+y} +then : + enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" +else $as_nop + make_cv_job_server="yes" +fi + + +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : + has_wait_nohang=no +else $as_nop + has_wait_nohang=yes +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 +printf %s "checking for SA_RESTART... " >&6; } +if test ${make_cv_sa_restart+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return SA_RESTART; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sa_restart=yes +else $as_nop + make_cv_sa_restart=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 +printf "%s\n" "$make_cv_sa_restart" >&6; } + +if test "$make_cv_sa_restart" != no +then : + +printf "%s\n" "#define HAVE_SA_RESTART 1" >>confdefs.h + + +fi + +# Only allow jobserver on systems that support it +case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in #( + */no/*) : + make_cv_job_server=no ;; #( + *) : + ;; +esac + +# Also supported on OS2 and MinGW +case $host_os in #( + os2*|mingw*) : + make_cv_job_server=yes ;; #( + *) : + ;; +esac + +# If we support it and the user didn't disable it, build with jobserver +case /$make_cv_job_server/$user_job_server/ in #( + */no/*) : + : no jobserver ;; #( + *) : + +printf "%s\n" "#define MAKE_JOBSERVER 1" >>confdefs.h + + ;; +esac + +# If dl*() functions are supported we can enable the load operation +ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlopen" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_DLOPEN $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlsym" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_DLSYM $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlerror" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h + + +# Check whether --enable-load was given. +if test ${enable_load+y} +then : + enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" +else $as_nop + make_cv_load="yes" +fi + + +case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ in #( + */no/*) : + make_cv_load=no ;; #( + *) : + ;; +esac + +# We might need -ldl +if test "$make_cv_load" = yes +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dl +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_dlopen=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : + +else $as_nop + ac_cv_search_dlopen=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf "%s\n" "$ac_cv_search_dlopen" >&6; } +ac_res=$ac_cv_search_dlopen +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else $as_nop + make_cv_load= +fi + + +fi + +case /$make_cv_load/$user_load/ in #( + */no/*) : + make_cv_load=no ;; #( + *) : + +printf "%s\n" "#define MAKE_LOAD 1" >>confdefs.h + + ;; +esac + +# If we want load support, we might need to link with export-dynamic. +# See if we can figure it out. Unfortunately this is very difficult. +# For example passing -rdynamic to the SunPRO linker gives a warning +# but succeeds and creates a shared object, not an executable! +if test "$make_cv_load" = yes +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 +printf %s "checking If the linker accepts -Wl,--export-dynamic... " >&6; } + old_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + AM_LDFLAGS=-Wl,--export-dynamic + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 +printf %s "checking If the linker accepts -rdynamic... " >&6; } + LDFLAGS="$old_LDFLAGS -rdynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + AM_LDFLAGS=-rdynamic + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$old_LDFLAGS" + +fi + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : + +printf "%s\n" "#define MAKE_SYMLINKS 1" >>confdefs.h + + +fi + +# Use posix_spawn if we have support and the user didn't disable it + +# Check whether --enable-posix-spawn was given. +if test ${enable_posix_spawn+y} +then : + enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" +else $as_nop + make_cv_posix_spawn="yes" +fi + + +case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in #( + */no/*) : + make_cv_posix_spawn=no ;; #( + *) : + ;; +esac + +if test "$make_cv_posix_spawn" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 +printf %s "checking for posix_spawn that fails synchronously... " >&6; } +if test ${make_cv_synchronous_posix_spawn+y} +then : + printf %s "(cached) " >&6 +else $as_nop + make_cv_synchronous_posix_spawn=no + if test "$cross_compiling" = yes +then : + make_cv_synchronous_posix_spawn="no (cross-compiling)" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + extern char **environ; + int main () { + char path[] = "./xxx-non-existent"; + char *argv[] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_synchronous_posix_spawn=yes +else $as_nop + make_cv_synchronous_posix_spawn=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 +printf "%s\n" "$make_cv_synchronous_posix_spawn" >&6; } +fi + +case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in #( + */no/*) : + make_cv_posix_spawn=no ;; #( + *) : + +printf "%s\n" "#define USE_POSIX_SPAWN 1" >>confdefs.h + + ;; +esac + +# Find the SCCS commands, so we can include them in our default rules. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 +printf %s "checking for location of SCCS get command... " >&6; } +if test ${make_cv_path_sccs_get+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + if test -f /usr/sccs/get +then : + make_cv_path_sccs_get=/usr/sccs/get +else $as_nop + make_cv_path_sccs_get=get +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf "%s\n" "$make_cv_path_sccs_get" >&6; } + +printf "%s\n" "#define SCCS_GET \"$make_cv_path_sccs_get\"" >>confdefs.h + + +ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later. +if (/usr/sccs/admin -n s.conftest || admin -n s.conftest) >/dev/null 2>&1 && + test -f s.conftest +then : + # We successfully created an SCCS file. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 +printf %s "checking if SCCS get command understands -G... " >&6; } +if test ${make_cv_sys_get_minus_G+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 && + test -f conftoast +then : + make_cv_sys_get_minus_G=yes +else $as_nop + make_cv_sys_get_minus_G=no +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 +printf "%s\n" "$make_cv_sys_get_minus_G" >&6; } + if test "$make_cv_sys_get_minus_G" = yes +then : + +printf "%s\n" "#define SCCS_GET_MINUS_G 1" >>confdefs.h + + +fi + +fi +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + + +printf "%s\n" "#define MAKE_HOST \"$host\"" >>confdefs.h + +MAKE_HOST="$host" + + +w32_target_env=no + if false; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + +case $host in #( + *-*-mingw32) : + if true; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + w32_target_env=yes + +printf "%s\n" "#define WINDOWS32 1" >>confdefs.h + + +printf "%s\n" "#define HAVE_DOS_PATHS 1" >>confdefs.h + + ;; #( + *) : + ;; +esac + + +printf "%s\n" "#define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'" >>confdefs.h + + + +printf "%s\n" "#define HAVE_DECL_GETLOADAVG $HAVE_DECL_GETLOADAVG" >>confdefs.h + + +# Remember that we ran configure to generate config.h + + +printf "%s\n" "#define MK_CONFIGURE 1" >>confdefs.h + + +# Include the Maintainer's Makefile section, if it's here. + +MAINT_MAKEFILE=/dev/null +if test -r "$srcdir/maintMakefile" +then : + MAINT_MAKEFILE="$srcdir/maintMakefile" + +fi + + +# Allow building with dmalloc +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 +printf %s "checking if malloc debugging is wanted... " >&6; } + +# Check whether --with-dmalloc was given. +if test ${with_dmalloc+y} +then : + withval=$with_dmalloc; if test "$withval" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define WITH_DMALLOC 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + +# Forcibly disable SET_MAKE. If it's set it breaks things like the test +# scripts, etc. +SET_MAKE= + +# Sanity check and inform the user of what we found + +if test "x$make_badcust" = xyes +then : + +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo + +fi + +case $with_customs in #( + ""|n|no|y|ye|yes) : + : ;; #( + *) : + if test -f "$with_customs/lib/libcustoms.a" +then : + : +else $as_nop + echo + echo "WARNING: '$with_customs/lib' does not appear to contain the" + echo " Customs library. You must build and install Customs" + echo " before compiling GNU make." + echo + +fi ;; +esac + +if test "x$has_wait_nohang" = xno +then : + echo + echo "WARNING: Your system has neither waitpid() nor wait3()." + echo " Without one of these, signal handling is unreliable." + echo " You should be aware that running GNU make with -j" + echo " could result in erratic behavior." + echo + +fi + +if test "x$make_cv_job_server" = xno && test "x$user_job_server" = xyes +then : + echo + echo "WARNING: Make job server requires a POSIX-ish system that" + echo " supports the pipe(), sigaction(), and either" + echo " waitpid() or wait3() functions. Your system doesn't" + echo " appear to provide one or more of those." + echo " Disabling job server support." + echo + +fi + +if test "x$make_cv_load" = xno && test "x$user_load" = xyes +then : + echo + echo "WARNING: 'load' support requires a POSIX-ish system that" + echo " supports the dlopen(), dlsym(), and dlerror() functions." + echo " Your system doesn't appear to provide one or more of these." + echo " Disabling 'load' support." + echo + +fi + +if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes +then : + echo + echo "WARNING: posix_spawn() is not supported on this system." + echo + +fi + +# autoconf initializes $prefix to NONE. + if test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr; then + KNOWN_PREFIX_TRUE= + KNOWN_PREFIX_FALSE='#' +else + KNOWN_PREFIX_TRUE='#' + KNOWN_PREFIX_FALSE= +fi + + +# Specify what files are to be created. +ac_config_files="$ac_config_files build.cfg tests/config-flags.pm Makefile lib/Makefile doc/Makefile po/Makefile.in" + +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +ac_config_links="$ac_config_links build.sh:build.sh" + + +# OK, do it! + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + gl_LIBOBJDEPS=$gl_libobjdeps + + + + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + gltests_LIBOBJDEPS=$gltests_libobjdeps + + + +if test -z "${HAVE_GUILE_TRUE}" && test -z "${HAVE_GUILE_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GUILE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_CUSTOMS_TRUE}" && test -z "${USE_CUSTOMS_FALSE}"; then + as_fn_error $? "conditional \"USE_CUSTOMS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${KNOWN_PREFIX_TRUE}" && test -z "${KNOWN_PREFIX_FALSE}"; then + as_fn_error $? "conditional \"KNOWN_PREFIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.71. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Make home page: . +General help using GNU software: ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +GNU Make config.status 4.4 +configured by $0, generated by GNU Autoconf 2.71, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2021 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;; + "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "build.sh") CONFIG_LINKS="$CONFIG_LINKS build.sh:build.sh" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + +if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then + ac_cs_awk_getline=: + ac_cs_awk_pipe_init= + ac_cs_awk_read_file=' + while ((getline aline < (F[key])) > 0) + print(aline) + close(F[key])' + ac_cs_awk_pipe_fini= +else + ac_cs_awk_getline=false + ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" + ac_cs_awk_read_file=' + print "|#_!!_#|" + print "cat " F[key] " &&" + '$ac_cs_awk_pipe_init + # The final `:' finishes the AND list. + ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' +fi +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + +# Create commands to substitute file output variables. +{ + echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" && + echo 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && + echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' && + echo "_ACAWK" && + echo "_ACEOF" +} >conf$$files.sh && +. ./conf$$files.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +rm -f conf$$files.sh + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + \$ac_cs_awk_pipe_init +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + if (nfields == 3 && !substed) { + key = field[2] + if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { + \$ac_cs_awk_read_file + next + } + } + print line +} +\$ac_cs_awk_pipe_fini +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | +if $ac_cs_awk_getline; then + $AWK -f "$ac_tmp/subs.awk" +else + $AWK -f "$ac_tmp/subs.awk" | $SHELL +fi \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +printf "%s\n" "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + diff --git a/local/recipes/dev/gnu-make/source/doc/Makefile.am b/local/recipes/dev/gnu-make/source/doc/Makefile.am new file mode 100644 index 0000000000..18d577b10a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/Makefile.am @@ -0,0 +1,24 @@ +# -*-Makefile-*-, or close enough +# 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 +# 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 . + +TEXI2HTML = texi2html +TEXI2HTML_FLAGS = -split_chapter + +info_TEXINFOS = make.texi +make_TEXINFOS = fdl.texi make-stds.texi + +CLEANFILES = make*.html diff --git a/local/recipes/dev/gnu-make/source/doc/Makefile.in b/local/recipes/dev/gnu-make/source/doc/Makefile.in new file mode 100644 index 0000000000..b7fdc07f31 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/Makefile.in @@ -0,0 +1,846 @@ +# Makefile.in generated by automake 1.18.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2025 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# -*-Makefile-*-, or close enough +# 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 +# the terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3 of the License, or (at your option) any later +# version. +# +# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# this program. If not, see . +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ + $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/alloca.m4 \ + $(top_srcdir)/m4/asm-underscore.m4 \ + $(top_srcdir)/m4/dospaths.m4 $(top_srcdir)/m4/eaccess.m4 \ + $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/findprog-in.m4 \ + $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gnulib-common.m4 \ + $(top_srcdir)/m4/gnulib-comp.m4 \ + $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/sig_atomic_t.m4 \ + $(top_srcdir)/m4/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) +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/version.texi \ + $(srcdir)/stamp-vti $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) +am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) +am__v_DVIPS_0 = @echo " DVIPS " $@; +am__v_DVIPS_1 = +AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@) +am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@) +am__v_MAKEINFO_0 = @echo " MAKEINFO" $@; +am__v_MAKEINFO_1 = +AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@) +am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@) +am__v_INFOHTML_0 = @echo " INFOHTML" $@; +am__v_INFOHTML_1 = +AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@) +am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@) +am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@; +am__v_TEXI2DVI_1 = +AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@) +am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@) +am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@; +am__v_TEXI2PDF_1 = +AM_V_texinfo = $(am__v_texinfo_@AM_V@) +am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@) +am__v_texinfo_0 = -q +am__v_texinfo_1 = +AM_V_texidevnull = $(am__v_texidevnull_@AM_V@) +am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) +am__v_texidevnull_0 = > /dev/null +am__v_texidevnull_1 = +INFO_DEPS = $(srcdir)/make.info +TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex +am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux +DVIS = make.dvi +PDFS = make.pdf +PSS = make.ps +HTMLS = make.html +TEXINFOS = make.texi +TEXI2DVI = texi2dvi +TEXI2PDF = $(TEXI2DVI) --pdf --batch +MAKEINFOHTML = $(MAKEINFO) --html +AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) +DVIPS = dvips +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__installdirs = "$(DESTDIR)$(infodir)" +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ + } +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(make_TEXINFOS) $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/mdate-sh \ + $(top_srcdir)/build-aux/texinfo.tex +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +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@ +GUILE_CFLAGS = @GUILE_CFLAGS@ +GUILE_LIBS = @GUILE_LIBS@ +HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE__BOOL = @HAVE__BOOL@ +HOST_CPU = @HOST_CPU@ +HOST_CPU_C_ABI = @HOST_CPU_C_ABI@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ +LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKE_HOST = @MAKE_HOST@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +REMOTE = @REMOTE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STDBOOL_H = @STDBOOL_H@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ +am__tar = @am__tar@ +am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +gltests_WITNESS = @gltests_WITNESS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +TEXI2HTML = texi2html +TEXI2HTML_FLAGS = -split_chapter +info_TEXINFOS = make.texi +make_TEXINFOS = fdl.texi make-stds.texi +CLEANFILES = make*.html +all: all-am + +.SUFFIXES: +.SUFFIXES: .dvi .html .info .pdf .ps .texi +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +.texi.info: + $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \ + am__cwd=`pwd` && $(am__cd) $(srcdir) && \ + rm -rf $$backupdir && mkdir $$backupdir && \ + if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ + for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ + if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ + done; \ + else :; fi && \ + cd "$$am__cwd"; \ + if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $@ $<; \ + then \ + rc=0; \ + $(am__cd) $(srcdir); \ + else \ + rc=$$?; \ + $(am__cd) $(srcdir) && \ + $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ + fi; \ + rm -rf $$backupdir; exit $$rc + +.texi.dvi: + $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2DVI) $(AM_TEXI2FLAGS) -I $(srcdir) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \ + $< + +.texi.pdf: + $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2PDF) $(AM_TEXI2FLAGS) -I $(srcdir) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \ + $< + +.texi.html: + $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp) + $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $(@:.html=.htp) $<; \ + then \ + rm -rf $@ && mv $(@:.html=.htp) $@; \ + else \ + rm -rf $(@:.html=.htp); exit 1; \ + fi +$(srcdir)/make.info: make.texi $(srcdir)/version.texi $(make_TEXINFOS) +make.dvi: make.texi $(srcdir)/version.texi $(make_TEXINFOS) +make.pdf: make.texi $(srcdir)/version.texi $(make_TEXINFOS) +make.html: make.texi $(srcdir)/version.texi $(make_TEXINFOS) +$(srcdir)/version.texi: $(srcdir)/stamp-vti +$(srcdir)/stamp-vti: make.texi $(top_srcdir)/configure + @(dir=.; test -f ./make.texi || dir=$(srcdir); \ + set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/make.texi`; \ + echo "@set UPDATED $$1 $$2 $$3"; \ + echo "@set UPDATED-MONTH $$2 $$3"; \ + echo "@set EDITION $(VERSION)"; \ + echo "@set VERSION $(VERSION)") > vti.tmp$$$$ && \ + (cmp -s vti.tmp$$$$ $(srcdir)/version.texi \ + || (echo "Updating $(srcdir)/version.texi" && \ + cp vti.tmp$$$$ $(srcdir)/version.texi.tmp$$$$ && \ + mv $(srcdir)/version.texi.tmp$$$$ $(srcdir)/version.texi)) && \ + rm -f vti.tmp$$$$ $(srcdir)/version.texi.$$$$ + @cp $(srcdir)/version.texi $@ + +mostlyclean-vti: + -rm -f vti.tmp* $(srcdir)/version.texi.tmp* + +maintainer-clean-vti: + -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi +.dvi.ps: + $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(DVIPS) $(AM_V_texinfo) -o $@ $< + +uninstall-dvi-am: + @$(NORMAL_UNINSTALL) + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ + rm -f "$(DESTDIR)$(dvidir)/$$f"; \ + done + +uninstall-html-am: + @$(NORMAL_UNINSTALL) + @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ + rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ + done + +uninstall-info-am: + @$(PRE_UNINSTALL) + @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ + if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ + then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ + done; \ + else :; fi + @$(NORMAL_UNINSTALL) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ + (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ + echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ + rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ + else :; fi); \ + done + +uninstall-pdf-am: + @$(NORMAL_UNINSTALL) + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ + done + +uninstall-ps-am: + @$(NORMAL_UNINSTALL) + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ + rm -f "$(DESTDIR)$(psdir)/$$f"; \ + done + +dist-info: $(INFO_DEPS) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; \ + for base in $$list; do \ + case $$base in \ + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ + base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ + for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ + if test -f $$file; then \ + relfile=`expr "$$file" : "$$d/\(.*\)"`; \ + test -f "$(distdir)/$$relfile" || \ + cp -p $$file "$(distdir)/$$relfile"; \ + else :; fi; \ + done; \ + done + +mostlyclean-aminfo: + -$(am__rm_rf) make.t2d make.t2p + +clean-aminfo: + -$(am__rm_rf) make.dvi make.pdf make.ps make.html + +maintainer-clean-aminfo: + @list='$(INFO_DEPS)'; for i in $$list; do \ + i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ + echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ + rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ + done +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-info +check-am: all-am +check: check-am +all-am: Makefile $(INFO_DEPS) +installdirs: + for dir in "$(DESTDIR)$(infodir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -$(am__rm_f) $(CLEANFILES) + +distclean-generic: + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-aminfo clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: $(DVIS) + +html: html-am + +html-am: $(HTMLS) + +info: info-am + +info-am: $(INFO_DEPS) + +install-data-am: install-info-am + +install-dvi: install-dvi-am + +install-dvi-am: $(DVIS) + @$(NORMAL_INSTALL) + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ + done +install-exec-am: + +install-html: install-html-am + +install-html-am: $(HTMLS) + @$(NORMAL_INSTALL) + @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ + $(am__strip_dir) \ + d2=$$d$$p; \ + if test -d "$$d2"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ + echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ + else \ + list2="$$list2 $$d2"; \ + fi; \ + done; \ + test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ + done; } +install-info: install-info-am + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \ + fi; \ + for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ + for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ + $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ + if test -f $$ifile; then \ + echo "$$ifile"; \ + else : ; fi; \ + done; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done + @$(POST_INSTALL) + @if $(am__can_run_installinfo); then \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ + install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ + done; \ + else : ; fi +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: $(PDFS) + @$(NORMAL_INSTALL) + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done +install-ps: install-ps-am + +install-ps-am: $(PSS) + @$(NORMAL_INSTALL) + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti + +pdf: pdf-am + +pdf-am: $(PDFS) + +ps: ps-am + +ps-am: $(PSS) + +uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ + uninstall-pdf-am uninstall-ps-am + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-aminfo clean-generic \ + cscopelist-am ctags-am dist-info distclean distclean-generic \ + 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 \ + maintainer-clean maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti mostlyclean \ + mostlyclean-aminfo mostlyclean-generic mostlyclean-vti pdf \ + pdf-am ps ps-am tags-am uninstall uninstall-am \ + uninstall-dvi-am uninstall-html-am uninstall-info-am \ + uninstall-pdf-am uninstall-ps-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/local/recipes/dev/gnu-make/source/doc/fdl.texi b/local/recipes/dev/gnu-make/source/doc/fdl.texi new file mode 100644 index 0000000000..eaf3da0e92 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/fdl.texi @@ -0,0 +1,505 @@ +@c The GNU Free Documentation License. +@center Version 1.3, 3 November 2008 + +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. + +@display +Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. +@uref{https://fsf.org/} + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +@end display + +@enumerate 0 +@item +PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document @dfn{free} in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of ``copyleft'', which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +@item +APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The ``Document'', below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as ``you''. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A ``Modified Version'' of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A ``Secondary Section'' is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The ``Invariant Sections'' are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The ``Cover Texts'' are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A ``Transparent'' copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not ``Transparent'' is called ``Opaque''. + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, La@TeX{} input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG@. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for +output purposes only. + +The ``Title Page'' means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, ``Title Page'' means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +The ``publisher'' means any person or entity that distributes copies +of the Document to the public. + +A section ``Entitled XYZ'' means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as ``Acknowledgements'', +``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' +of such a section when you modify the Document means that it remains a +section ``Entitled XYZ'' according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +@item +VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +@item +COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +@item +MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +@enumerate A +@item +Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +@item +List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +@item +State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +@item +Preserve all the copyright notices of the Document. + +@item +Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +@item +Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +@item +Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +@item +Include an unaltered copy of this License. + +@item +Preserve the section Entitled ``History'', Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled ``History'' in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +@item +Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the ``History'' section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +@item +For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +@item +Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +@item +Delete any section Entitled ``Endorsements''. Such a section +may not be included in the Modified Version. + +@item +Do not retitle any existing section to be Entitled ``Endorsements'' or +to conflict in title with any Invariant Section. + +@item +Preserve any Warranty Disclaimers. +@end enumerate + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled ``Endorsements'', provided it contains +nothing but endorsements of your Modified Version by various +parties---for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +@item +COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled ``History'' +in the various original documents, forming one section Entitled +``History''; likewise combine any sections Entitled ``Acknowledgements'', +and any sections Entitled ``Dedications''. You must delete all +sections Entitled ``Endorsements.'' + +@item +COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +@item +AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an ``aggregate'' if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +@item +TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled ``Acknowledgements'', +``Dedications'', or ``History'', the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +@item +TERMINATION + +You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. + +@item +FUTURE REVISIONS OF THIS LICENSE + +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/licenses/}. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License ``or any later version'' applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. + +@item +RELICENSING + +``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the +site means any set of copyrightable works thus published on the MMC +site. + +``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. + +``Incorporate'' means to publish or republish a Document, in whole or +in part, as part of another Document. + +An MMC is ``eligible for relicensing'' if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole +or in part into the MMC, (1) had no cover texts or invariant sections, +and (2) were thus incorporated prior to November 1, 2008. + +The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. + +@end enumerate + +@page +@heading ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +@smallexample +@group + Copyright (C) @var{year} @var{your name}. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. A copy of the license is included in the section entitled ``GNU + Free Documentation License''. +@end group +@end smallexample + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the ``with@dots{}Texts.''@: line with this: + +@smallexample +@group + with the Invariant Sections being @var{list their titles}, with + the Front-Cover Texts being @var{list}, and with the Back-Cover Texts + being @var{list}. +@end group +@end smallexample + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +@c Local Variables: +@c ispell-local-pdict: "ispell-dict" +@c End: diff --git a/local/recipes/dev/gnu-make/source/doc/make-stds.texi b/local/recipes/dev/gnu-make/source/doc/make-stds.texi new file mode 100644 index 0000000000..b0745a8a3e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/make-stds.texi @@ -0,0 +1,1173 @@ +@comment This file is included by both standards.texi and make.texinfo. +@comment It was broken out of standards.texi on 1/6/93 by roland. + +@node Makefile Conventions +@chapter Makefile Conventions +@cindex makefile, conventions for +@cindex conventions for makefiles +@cindex standards for makefiles + +@c Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001, +@c 2004, 2005, 2006, 2007, 2008, 2010, 2013, 2014, 2015 +@c Free Software Foundation, Inc. +@c +@c Permission is granted to copy, distribute and/or modify this document +@c under the terms of the GNU Free Documentation License, Version 1.3 +@c or any later version published by the Free Software Foundation; +@c with no Invariant Sections, with no +@c Front-Cover Texts, and with no Back-Cover Texts. +@c A copy of the license is included in the section entitled ``GNU +@c Free Documentation License''. + +This +@ifinfo +node +@end ifinfo +@iftex +@ifset CODESTD +section +@end ifset +@ifclear CODESTD +chapter +@end ifclear +@end iftex +describes conventions for writing the Makefiles for GNU programs. +Using Automake will help you write a Makefile that follows these +conventions. For more information on portable Makefiles, see +@sc{posix} and @ref{Portable Make, Portable Make Programming,, autoconf, +Autoconf}. + + +@menu +* Makefile Basics:: General conventions for Makefiles. +* Utilities in Makefiles:: Utilities to be used in Makefiles. +* Command Variables:: Variables for specifying commands. +* DESTDIR:: Supporting staged installs. +* Directory Variables:: Variables for installation directories. +* Standard Targets:: Standard targets for users. +* Install Command Categories:: Three categories of commands in the @samp{install} + rule: normal, pre-install and post-install. +@end menu + +@node Makefile Basics +@section General Conventions for Makefiles + +Every Makefile should contain this line: + +@example +SHELL = /bin/sh +@end example + +@noindent +to avoid trouble on systems where the @code{SHELL} variable might be +inherited from the environment. (This is never a problem with GNU +@code{make}.) + +Different @code{make} programs have incompatible suffix lists and +implicit rules, and this sometimes creates confusion or misbehavior. So +it is a good idea to set the suffix list explicitly using only the +suffixes you need in the particular Makefile, like this: + +@example +.SUFFIXES: +.SUFFIXES: .c .o +@end example + +@noindent +The first line clears out the suffix list, the second introduces all +suffixes which may be subject to implicit rules in this Makefile. + +Don't assume that @file{.} is in the path for command execution. When +you need to run programs that are a part of your package during the +make, please make sure that it uses @file{./} if the program is built as +part of the make or @file{$(srcdir)/} if the file is an unchanging part +of the source code. Without one of these prefixes, the current search +path is used. + +The distinction between @file{./} (the @dfn{build directory}) and +@file{$(srcdir)/} (the @dfn{source directory}) is important because +users can build in a separate directory using the @samp{--srcdir} option +to @file{configure}. A rule of the form: + +@smallexample +foo.1 : foo.man sedscript + sed -f sedscript foo.man > foo.1 +@end smallexample + +@noindent +will fail when the build directory is not the source directory, because +@file{foo.man} and @file{sedscript} are in the source directory. + +When using GNU @code{make}, relying on @samp{VPATH} to find the source +file will work in the case where there is a single dependency file, +since the @code{make} automatic variable @samp{$<} will represent the +source file wherever it is. (Many versions of @code{make} set @samp{$<} +only in implicit rules.) A Makefile target like + +@smallexample +foo.o : bar.c + $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o +@end smallexample + +@noindent +should instead be written as + +@smallexample +foo.o : bar.c + $(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@@ +@end smallexample + +@noindent +in order to allow @samp{VPATH} to work correctly. When the target has +multiple dependencies, using an explicit @samp{$(srcdir)} is the easiest +way to make the rule work well. For example, the target above for +@file{foo.1} is best written as: + +@smallexample +foo.1 : foo.man sedscript + sed -f $(srcdir)/sedscript $(srcdir)/foo.man > $@@ +@end smallexample + +GNU distributions usually contain some files which are not source +files---for example, Info files, and the output from Autoconf, Automake, +Bison or Flex. Since these files normally appear in the source +directory, they should always appear in the source directory, not in the +build directory. So Makefile rules to update them should put the +updated files in the source directory. + +However, if a file does not appear in the distribution, then the +Makefile should not put it in the source directory, because building a +program in ordinary circumstances should not modify the source directory +in any way. + +Try to make the build and installation targets, at least (and all their +subtargets) work correctly with a parallel @code{make}. + +@node Utilities in Makefiles +@section Utilities in Makefiles + +Write the Makefile commands (and any shell scripts, such as +@code{configure}) to run under @code{sh} (both the traditional Bourne +shell and the @sc{posix} shell), not @code{csh}. Don't use any +special features of @code{ksh} or @code{bash}, or @sc{posix} features +not widely supported in traditional Bourne @code{sh}. + +The @code{configure} script and the Makefile rules for building and +installation should not use any utilities directly except these: + +@c dd find +@c gunzip gzip md5sum +@c mkfifo mknod tee uname + +@example +awk cat cmp cp diff echo egrep expr false grep install-info ln ls +mkdir mv printf pwd rm rmdir sed sleep sort tar test touch tr true +@end example + +Compression programs such as @code{gzip} can be used in the +@code{dist} rule. + +Generally, stick to the widely-supported (usually +@sc{posix}-specified) options and features of these programs. For +example, don't use @samp{mkdir -p}, convenient as it may be, because a +few systems don't support it at all and with others, it is not safe +for parallel execution. For a list of known incompatibilities, see +@ref{Portable Shell, Portable Shell Programming,, autoconf, Autoconf}. + + +It is a good idea to avoid creating symbolic links in makefiles, since a +few file systems don't support them. + +The Makefile rules for building and installation can also use compilers +and related programs, but should do so via @code{make} variables so that the +user can substitute alternatives. Here are some of the programs we +mean: + +@example +ar bison cc flex install ld ldconfig lex +make makeinfo ranlib texi2dvi yacc +@end example + +Use the following @code{make} variables to run those programs: + +@example +$(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX) +$(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC) +@end example + +When you use @code{ranlib} or @code{ldconfig}, you should make sure +nothing bad happens if the system does not have the program in question. +Arrange to ignore an error from that command, and print a message before +the command to tell the user that failure of this command does not mean +a problem. (The Autoconf @samp{AC_PROG_RANLIB} macro can help with +this.) + +If you use symbolic links, you should implement a fallback for systems +that don't have symbolic links. + +Additional utilities that can be used via Make variables are: + +@example +chgrp chmod chown mknod +@end example + +It is ok to use other utilities in Makefile portions (or scripts) +intended only for particular systems where you know those utilities +exist. + +@node Command Variables +@section Variables for Specifying Commands + +Makefiles should provide variables for overriding certain commands, options, +and so on. + +In particular, you should run most utility programs via variables. +Thus, if you use Bison, have a variable named @code{BISON} whose default +value is set with @samp{BISON = bison}, and refer to it with +@code{$(BISON)} whenever you need to use Bison. + +File management utilities such as @code{ln}, @code{rm}, @code{mv}, and +so on, need not be referred to through variables in this way, since users +don't need to replace them with other programs. + +Each program-name variable should come with an options variable that is +used to supply options to the program. Append @samp{FLAGS} to the +program-name variable name to get the options variable name---for +example, @code{BISONFLAGS}. (The names @code{CFLAGS} for the C +compiler, @code{YFLAGS} for yacc, and @code{LFLAGS} for lex, are +exceptions to this rule, but we keep them because they are standard.) +Use @code{CPPFLAGS} in any compilation command that runs the +preprocessor, and use @code{LDFLAGS} in any compilation command that +does linking as well as in any direct use of @code{ld}. + +If there are C compiler options that @emph{must} be used for proper +compilation of certain files, do not include them in @code{CFLAGS}. +Users expect to be able to specify @code{CFLAGS} freely themselves. +Instead, arrange to pass the necessary options to the C compiler +independently of @code{CFLAGS}, by writing them explicitly in the +compilation commands or by defining an implicit rule, like this: + +@smallexample +CFLAGS = -g +ALL_CFLAGS = -I. $(CFLAGS) +.c.o: + $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $< +@end smallexample + +Do include the @samp{-g} option in @code{CFLAGS}, because that is not +@emph{required} for proper compilation. You can consider it a default +that is only recommended. If the package is set up so that it is +compiled with GCC by default, then you might as well include @samp{-O} +in the default value of @code{CFLAGS} as well. + +Put @code{CFLAGS} last in the compilation command, after other variables +containing compiler options, so the user can use @code{CFLAGS} to +override the others. + +@code{CFLAGS} should be used in every invocation of the C compiler, +both those which do compilation and those which do linking. + +Every Makefile should define the variable @code{INSTALL}, which is the +basic command for installing a file into the system. + +Every Makefile should also define the variables @code{INSTALL_PROGRAM} +and @code{INSTALL_DATA}. (The default for @code{INSTALL_PROGRAM} should +be @code{$(INSTALL)}; the default for @code{INSTALL_DATA} should be +@code{$@{INSTALL@} -m 644}.) Then it should use those variables as the +commands for actual installation, for executables and non-executables +respectively. Minimal use of these variables is as follows: + +@example +$(INSTALL_PROGRAM) foo $(bindir)/foo +$(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a +@end example + +However, it is preferable to support a @code{DESTDIR} prefix on the +target files, as explained in the next section. + +It is acceptable, but not required, to install multiple files in one +command, with the final argument being a directory, as in: + +@example +$(INSTALL_PROGRAM) foo bar baz $(bindir) +@end example + + +@node DESTDIR +@section @code{DESTDIR}: Support for Staged Installs + +@vindex DESTDIR +@cindex staged installs +@cindex installations, staged + +@code{DESTDIR} is a variable prepended to each installed target file, +like this: + +@example +$(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo +$(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a +@end example + +The @code{DESTDIR} variable is specified by the user on the @code{make} +command line as an absolute file name. For example: + +@example +make DESTDIR=/tmp/stage install +@end example + +@noindent +@code{DESTDIR} should be supported only in the @code{install*} and +@code{uninstall*} targets, as those are the only targets where it is +useful. + +If your installation step would normally install +@file{/usr/local/bin/foo} and @file{/usr/@/local/@/lib/@/libfoo.a}, then an +installation invoked as in the example above would install +@file{/tmp/stage/usr/local/bin/foo} and +@file{/tmp/stage/usr/local/lib/libfoo.a} instead. + +Prepending the variable @code{DESTDIR} to each target in this way +provides for @dfn{staged installs}, where the installed files are not +placed directly into their expected location but are instead copied +into a temporary location (@code{DESTDIR}). However, installed files +maintain their relative directory structure and any embedded file names +will not be modified. + +You should not set the value of @code{DESTDIR} in your @file{Makefile} +at all; then the files are installed into their expected locations by +default. Also, specifying @code{DESTDIR} should not change the +operation of the software in any way, so its value should not be +included in any file contents. + +@code{DESTDIR} support is commonly used in package creation. It is +also helpful to users who want to understand what a given package will +install where, and to allow users who don't normally have permissions +to install into protected areas to build and install before gaining +those permissions. Finally, it can be useful with tools such as +@code{stow}, where code is installed in one place but made to appear +to be installed somewhere else using symbolic links or special mount +operations. So, we strongly recommend GNU packages support +@code{DESTDIR}, though it is not an absolute requirement. + + +@node Directory Variables +@section Variables for Installation Directories + +Installation directories should always be named by variables, so it is +easy to install in a nonstandard place. The standard names for these +variables and the values they should have in GNU packages are +described below. They are based on a standard file system layout; +variants of it are used in GNU/Linux and other modern operating +systems. + +Installers are expected to override these values when calling +@command{make} (e.g., @kbd{make prefix=/usr install}) or +@command{configure} (e.g., @kbd{configure --prefix=/usr}). GNU +packages should not try to guess which value should be appropriate for +these variables on the system they are being installed onto: use the +default settings specified here so that all GNU packages behave +identically, allowing the installer to achieve any desired layout. + +@cindex directories, creating installation +@cindex installation directories, creating +All installation directories, and their parent directories, should be +created (if necessary) before they are installed into. + +These first two variables set the root for the installation. All the +other installation directories should be subdirectories of one of +these two, and nothing should be directly installed into these two +directories. + +@table @code +@item prefix +@vindex prefix +A prefix used in constructing the default values of the variables listed +below. The default value of @code{prefix} should be @file{/usr/local}. +When building the complete GNU system, the prefix will be empty and +@file{/usr} will be a symbolic link to @file{/}. +(If you are using Autoconf, write it as @samp{@@prefix@@}.) + +Running @samp{make install} with a different value of @code{prefix} from +the one used to build the program should @emph{not} recompile the +program. + +@item exec_prefix +@vindex exec_prefix +A prefix used in constructing the default values of some of the +variables listed below. The default value of @code{exec_prefix} should +be @code{$(prefix)}. +(If you are using Autoconf, write it as @samp{@@exec_prefix@@}.) + +Generally, @code{$(exec_prefix)} is used for directories that contain +machine-specific files (such as executables and subroutine libraries), +while @code{$(prefix)} is used directly for other directories. + +Running @samp{make install} with a different value of @code{exec_prefix} +from the one used to build the program should @emph{not} recompile the +program. +@end table + +Executable programs are installed in one of the following directories. + +@table @code +@item bindir +@vindex bindir +The directory for installing executable programs that users can run. +This should normally be @file{/usr/local/bin}, but write it as +@file{$(exec_prefix)/bin}. +(If you are using Autoconf, write it as @samp{@@bindir@@}.) + +@item sbindir +@vindex sbindir +The directory for installing executable programs that can be run from +the shell, but are only generally useful to system administrators. This +should normally be @file{/usr/local/sbin}, but write it as +@file{$(exec_prefix)/sbin}. +(If you are using Autoconf, write it as @samp{@@sbindir@@}.) + +@item libexecdir +@vindex libexecdir +@comment This paragraph adjusted to avoid overfull hbox --roland 5jul94 +The directory for installing executable programs to be run by other +programs rather than by users. This directory should normally be +@file{/usr/local/libexec}, but write it as @file{$(exec_prefix)/libexec}. +(If you are using Autoconf, write it as @samp{@@libexecdir@@}.) + +The definition of @samp{libexecdir} is the same for all packages, so +you should install your data in a subdirectory thereof. Most packages +install their data under @file{$(libexecdir)/@var{package-name}/}, +possibly within additional subdirectories thereof, such as +@file{$(libexecdir)/@var{package-name}/@var{machine}/@var{version}}. +@end table + +Data files used by the program during its execution are divided into +categories in two ways. + +@itemize @bullet +@item +Some files are normally modified by programs; others are never normally +modified (though users may edit some of these). + +@item +Some files are architecture-independent and can be shared by all +machines at a site; some are architecture-dependent and can be shared +only by machines of the same kind and operating system; others may never +be shared between two machines. +@end itemize + +This makes for six different possibilities. However, we want to +discourage the use of architecture-dependent files, aside from object +files and libraries. It is much cleaner to make other data files +architecture-independent, and it is generally not hard. + +Here are the variables Makefiles should use to specify directories +to put these various kinds of files in: + +@table @samp +@item datarootdir +The root of the directory tree for read-only architecture-independent +data files. This should normally be @file{/usr/local/share}, but +write it as @file{$(prefix)/share}. (If you are using Autoconf, write +it as @samp{@@datarootdir@@}.) @samp{datadir}'s default value is +based on this variable; so are @samp{infodir}, @samp{mandir}, and +others. + +@item datadir +The directory for installing idiosyncratic read-only +architecture-independent data files for this program. This is usually +the same place as @samp{datarootdir}, but we use the two separate +variables so that you can move these program-specific files without +altering the location for Info files, man pages, etc. + +@c raggedright (not until next Texinfo release) +This should normally be @file{/usr/local/share}, but write it as +@file{$(datarootdir)}. (If you are using Autoconf, write it as +@samp{@@datadir@@}.) +@c end raggedright + +The definition of @samp{datadir} is the same for all packages, so you +should install your data in a subdirectory thereof. Most packages +install their data under @file{$(datadir)/@var{package-name}/}. + +@item sysconfdir +The directory for installing read-only data files that pertain to a +single machine--that is to say, files for configuring a host. Mailer +and network configuration files, @file{/etc/passwd}, and so forth belong +here. All the files in this directory should be ordinary ASCII text +files. This directory should normally be @file{/usr/local/etc}, but +write it as @file{$(prefix)/etc}. +(If you are using Autoconf, write it as @samp{@@sysconfdir@@}.) + +Do not install executables here in this directory (they probably belong +in @file{$(libexecdir)} or @file{$(sbindir)}). Also do not install +files that are modified in the normal course of their use (programs +whose purpose is to change the configuration of the system excluded). +Those probably belong in @file{$(localstatedir)}. + +@item sharedstatedir +The directory for installing architecture-independent data files which +the programs modify while they run. This should normally be +@file{/usr/local/com}, but write it as @file{$(prefix)/com}. +(If you are using Autoconf, write it as @samp{@@sharedstatedir@@}.) + +@item localstatedir +The directory for installing data files which the programs modify while +they run, and that pertain to one specific machine. Users should never +need to modify files in this directory to configure the package's +operation; put such configuration information in separate files that go +in @file{$(datadir)} or @file{$(sysconfdir)}. @file{$(localstatedir)} +should normally be @file{/usr/local/var}, but write it as +@file{$(prefix)/var}. +(If you are using Autoconf, write it as @samp{@@localstatedir@@}.) + +@item runstatedir +The directory for installing data files which the programs modify +while they run, that pertain to one specific machine, and which need +not persist longer than the execution of the program---which is +generally long-lived, for example, until the next reboot. PID files +for system daemons are a typical use. In addition, this directory +should not be cleaned except perhaps at reboot, while the general +@file{/tmp} (@code{TMPDIR}) may be cleaned arbitrarily. This should +normally be @file{/var/run}, but write it as +@file{$(localstatedir)/run}. Having it as a separate variable allows +the use of @file{/run} if desired, for example. (If you are using +Autoconf 2.70 or later, write it as @samp{@@runstatedir@@}.) +@end table + +These variables specify the directory for installing certain specific +types of files, if your program has them. Every GNU package should +have Info files, so every program needs @samp{infodir}, but not all +need @samp{libdir} or @samp{lispdir}. + +@table @samp +@item includedir +The directory for installing header files to be included by user +programs with the C @samp{#include} preprocessor directive. This +should normally be @file{/usr/local/include}, but write it as +@file{$(prefix)/include}. +(If you are using Autoconf, write it as @samp{@@includedir@@}.) + +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 +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}. +(If you are using Autoconf, you can write it as @samp{@@oldincludedir@@}.) + +The Makefile commands should check whether the value of +@code{oldincludedir} is empty. If it is, they should not try to use +it; they should cancel the second installation of the header files. + +A package should not replace an existing header in this directory unless +the header came from the same package. Thus, if your Foo package +provides a header file @file{foo.h}, then it should install the header +file in the @code{oldincludedir} directory if either (1) there is no +@file{foo.h} there or (2) the @file{foo.h} that exists came from the Foo +package. + +To tell whether @file{foo.h} came from the Foo package, put a magic +string in the file---part of a comment---and @code{grep} for that string. + +@item docdir +The directory for installing documentation files (other than Info) for +this package. By default, it should be +@file{/usr/local/share/doc/@var{yourpkg}}, but it should be written as +@file{$(datarootdir)/doc/@var{yourpkg}}. (If you are using Autoconf, +write it as @samp{@@docdir@@}.) The @var{yourpkg} subdirectory, which +may include a version number, prevents collisions among files with +common names, such as @file{README}. + +@item infodir +The directory for installing the Info files for this package. By +default, it should be @file{/usr/local/share/info}, but it should be +written as @file{$(datarootdir)/info}. (If you are using Autoconf, +write it as @samp{@@infodir@@}.) @code{infodir} is separate from +@code{docdir} for compatibility with existing practice. + +@item htmldir +@itemx dvidir +@itemx pdfdir +@itemx psdir +Directories for installing documentation files in the particular +format. They should all be set to @code{$(docdir)} by default. (If +you are using Autoconf, write them as @samp{@@htmldir@@}, +@samp{@@dvidir@@}, etc.) Packages which supply several translations +of their documentation should install them in +@samp{$(htmldir)/}@var{ll}, @samp{$(pdfdir)/}@var{ll}, etc. where +@var{ll} is a locale abbreviation such as @samp{en} or @samp{pt_BR}. + +@item libdir +The directory for object files and libraries of object code. Do not +install executables here, they probably ought to go in @file{$(libexecdir)} +instead. The value of @code{libdir} should normally be +@file{/usr/local/lib}, but write it as @file{$(exec_prefix)/lib}. +(If you are using Autoconf, write it as @samp{@@libdir@@}.) + +@item lispdir +The directory for installing any Emacs Lisp files in this package. By +default, it should be @file{/usr/local/share/emacs/site-lisp}, but it +should be written as @file{$(datarootdir)/emacs/site-lisp}. + +If you are using Autoconf, write the default as @samp{@@lispdir@@}. +In order to make @samp{@@lispdir@@} work, you need the following lines +in your @file{configure.ac} file: + +@example +lispdir='$@{datarootdir@}/emacs/site-lisp' +AC_SUBST(lispdir) +@end example + +@item localedir +The directory for installing locale-specific message catalogs for this +package. By default, it should be @file{/usr/local/share/locale}, but +it should be written as @file{$(datarootdir)/locale}. (If you are +using Autoconf, write it as @samp{@@localedir@@}.) This directory +usually has a subdirectory per locale. +@end table + +Unix-style man pages are installed in one of the following: + +@table @samp +@item mandir +The top-level directory for installing the man pages (if any) for this +package. It will normally be @file{/usr/local/share/man}, but you +should write it as @file{$(datarootdir)/man}. (If you are using +Autoconf, write it as @samp{@@mandir@@}.) + +@item man1dir +The directory for installing section 1 man pages. Write it as +@file{$(mandir)/man1}. +@item man2dir +The directory for installing section 2 man pages. Write it as +@file{$(mandir)/man2} +@item @dots{} + +@strong{Don't make the primary documentation for any GNU software be a +man page. Write a manual in Texinfo instead. Man pages are just for +the sake of people running GNU software on Unix, which is a secondary +application only.} + +@item manext +The file name extension for the installed man page. This should contain +a period followed by the appropriate digit; it should normally be @samp{.1}. + +@item man1ext +The file name extension for installed section 1 man pages. +@item man2ext +The file name extension for installed section 2 man pages. +@item @dots{} +Use these names instead of @samp{manext} if the package needs to install man +pages in more than one section of the manual. +@end table + +And finally, you should set the following variable: + +@table @samp +@item srcdir +The directory for the sources being compiled. The value of this +variable is normally inserted by the @code{configure} shell script. +(If you are using Autoconf, use @samp{srcdir = @@srcdir@@}.) +@end table + +For example: + +@smallexample +@c I have changed some of the comments here slightly to fix an overfull +@c hbox, so the make manual can format correctly. --roland +# Common prefix for installation directories. +# NOTE: This directory must exist when you start the install. +prefix = /usr/local +datarootdir = $(prefix)/share +datadir = $(datarootdir) +exec_prefix = $(prefix) +# Where to put the executable for the command 'gcc'. +bindir = $(exec_prefix)/bin +# Where to put the directories used by the compiler. +libexecdir = $(exec_prefix)/libexec +# Where to put the Info files. +infodir = $(datarootdir)/info +@end smallexample + +If your program installs a large number of files into one of the +standard user-specified directories, it might be useful to group them +into a subdirectory particular to that program. If you do this, you +should write the @code{install} rule to create these subdirectories. + +Do not expect the user to include the subdirectory name in the value of +any of the variables listed above. The idea of having a uniform set of +variable names for installation directories is to enable the user to +specify the exact same values for several different GNU packages. In +order for this to be useful, all the packages must be designed so that +they will work sensibly when the user does so. + +At times, not all of these variables may be implemented in the current +release of Autoconf and/or Automake; but as of Autoconf@tie{}2.60, we +believe all of them are. When any are missing, the descriptions here +serve as specifications for what Autoconf will implement. As a +programmer, you can either use a development version of Autoconf or +avoid using these variables until a stable release is made which +supports them. + + +@node Standard Targets +@section Standard Targets for Users + +All GNU programs should have the following targets in their Makefiles: + +@table @samp +@item all +Compile the entire program. This should be the default target. This +target need not rebuild any documentation files; Info files should +normally be included in the distribution, and DVI (and other +documentation format) files should be made only when explicitly asked +for. + +By default, the Make rules should compile and link with @samp{-g}, so +that executable programs have debugging symbols. Otherwise, you are +essentially helpless in the face of a crash, and it is often far from +easy to reproduce with a fresh build. + +@item install +Compile the program and copy the executables, libraries, and so on to +the file names where they should reside for actual use. If there is a +simple test to verify that a program is properly installed, this target +should run that test. + +Do not strip executables when installing them. This helps eventual +debugging that may be needed later, and nowadays disk space is cheap +and dynamic loaders typically ensure debug sections are not loaded during +normal execution. Users that need stripped binaries may invoke the +@code{install-strip} target to do that. + +If possible, write the @code{install} target rule so that it does not +modify anything in the directory where the program was built, provided +@samp{make all} has just been done. This is convenient for building the +program under one user name and installing it under another. + +The commands should create all the directories in which files are to be +installed, if they don't already exist. This includes the directories +specified as the values of the variables @code{prefix} and +@code{exec_prefix}, as well as all subdirectories that are needed. +One way to do this is by means of an @code{installdirs} target +as described below. + +Use @samp{-} before any command for installing a man page, so that +@code{make} will ignore any errors. This is in case there are systems +that don't have the Unix man page documentation system installed. + +The way to install Info files is to copy them into @file{$(infodir)} +with @code{$(INSTALL_DATA)} (@pxref{Command Variables}), and then run +the @code{install-info} program if it is present. @code{install-info} +is a program that edits the Info @file{dir} file to add or update the +menu entry for the given Info file; it is part of the Texinfo package. + +Here is a sample rule to install an Info file that also tries to +handle some additional situations, such as @code{install-info} not +being present. + +@comment This example has been carefully formatted for the Make manual. +@comment Please do not reformat it without talking to bug-make@gnu.org. +@smallexample +do-install-info: foo.info installdirs + $(NORMAL_INSTALL) +# Prefer an info file in . to one in srcdir. + if test -f foo.info; then d=.; \ + else d="$(srcdir)"; fi; \ + $(INSTALL_DATA) $$d/foo.info \ + "$(DESTDIR)$(infodir)/foo.info" +# Run install-info only if it exists. +# Use 'if' instead of just prepending '-' to the +# line so we notice real errors from install-info. +# Use '$(SHELL) -c' because some shells do not +# fail gracefully when there is an unknown command. + $(POST_INSTALL) + if $(SHELL) -c 'install-info --version' \ + >/dev/null 2>&1; then \ + install-info --dir-file="$(DESTDIR)$(infodir)/dir" \ + "$(DESTDIR)$(infodir)/foo.info"; \ + else true; fi +@end smallexample + +When writing the @code{install} target, you must classify all the +commands into three categories: normal ones, @dfn{pre-installation} +commands and @dfn{post-installation} commands. @xref{Install Command +Categories}. + +@item install-html +@itemx install-dvi +@itemx install-pdf +@itemx install-ps +These targets install documentation in formats other than Info; +they're intended to be called explicitly by the person installing the +package, if that format is desired. GNU prefers Info files, so these +must be installed by the @code{install} target. + +When you have many documentation files to install, we recommend that +you avoid collisions and clutter by arranging for these targets to +install in subdirectories of the appropriate installation directory, +such as @code{htmldir}. As one example, if your package has multiple +manuals, and you wish to install HTML documentation with many files +(such as the ``split'' mode output by @code{makeinfo --html}), you'll +certainly want to use subdirectories, or two nodes with the same name +in different manuals will overwrite each other. + +Please make these @code{install-@var{format}} targets invoke the +commands for the @var{format} target, for example, by making +@var{format} a dependency. + +@item uninstall +Delete all the installed files---the copies that the @samp{install} +and @samp{install-*} targets create. + +This rule should not modify the directories where compilation is done, +only the directories where files are installed. + +The uninstallation commands are divided into three categories, just like +the installation commands. @xref{Install Command Categories}. + +@item install-strip +Like @code{install}, but strip the executable files while installing +them. In simple cases, this target can use the @code{install} target in +a simple way: + +@smallexample +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \ + install +@end smallexample + +But if the package installs scripts as well as real executables, the +@code{install-strip} target can't just refer to the @code{install} +target; it has to strip the executables but not the scripts. + +@code{install-strip} should not strip the executables in the build +directory which are being copied for installation. It should only strip +the copies that are installed. + +Normally we do not recommend stripping an executable unless you are sure +the program has no bugs. However, it can be reasonable to install a +stripped executable for actual execution while saving the unstripped +executable elsewhere in case there is a bug. + +@item clean +Delete all files in the current directory that are normally created by +building the program. Also delete files in other directories if they +are created by this makefile. However, don't delete the files that +record the configuration. Also preserve files that could be made by +building, but normally aren't because the distribution comes with +them. There is no need to delete parent directories that were created +with @samp{mkdir -p}, since they could have existed anyway. + +Delete @file{.dvi} files here if they are not part of the distribution. + +@item distclean +Delete all files in the current directory (or created by this +makefile) that are created by configuring or building the program. If +you have unpacked the source and built the program without creating +any other files, @samp{make distclean} should leave only the files +that were in the distribution. However, there is no need to delete +parent directories that were created with @samp{mkdir -p}, since they +could have existed anyway. + +@item mostlyclean +Like @samp{clean}, but may refrain from deleting a few files that people +normally don't want to recompile. For example, the @samp{mostlyclean} +target for GCC does not delete @file{libgcc.a}, because recompiling it +is rarely necessary and takes a lot of time. + +@item maintainer-clean +Delete almost everything that can be reconstructed with this Makefile. +This typically includes everything deleted by @code{distclean}, plus +more: C source files produced by Bison, tags tables, Info files, and +so on. + +The reason we say ``almost everything'' is that running the command +@samp{make maintainer-clean} should not delete @file{configure} even +if @file{configure} can be remade using a rule in the Makefile. More +generally, @samp{make maintainer-clean} should not delete anything +that needs to exist in order to run @file{configure} and then begin to +build the program. Also, there is no need to delete parent +directories that were created with @samp{mkdir -p}, since they could +have existed anyway. These are the only exceptions; +@code{maintainer-clean} should delete everything else that can be +rebuilt. + +The @samp{maintainer-clean} target is intended to be used by a maintainer of +the package, not by ordinary users. You may need special tools to +reconstruct some of the files that @samp{make maintainer-clean} deletes. +Since these files are normally included in the distribution, we don't +take care to make them easy to reconstruct. If you find you need to +unpack the full distribution again, don't blame us. + +To help make users aware of this, the commands for the special +@code{maintainer-clean} target should start with these two: + +@smallexample +@@echo 'This command is intended for maintainers to use; it' +@@echo 'deletes files that may need special tools to rebuild.' +@end smallexample + +@item TAGS +Update a tags table for this program. +@c ADR: how? + +@item info +Generate any Info files needed. The best way to write the rules is as +follows: + +@smallexample +info: foo.info + +foo.info: foo.texi chap1.texi chap2.texi + $(MAKEINFO) $(srcdir)/foo.texi +@end smallexample + +@noindent +You must define the variable @code{MAKEINFO} in the Makefile. It should +run the @code{makeinfo} program, which is part of the Texinfo +distribution. + +Normally a GNU distribution comes with Info files, and that means the +Info files are present in the source directory. Therefore, the Make +rule for an info file should update it in the source directory. When +users build the package, ordinarily Make will not update the Info files +because they will already be up to date. + +@item dvi +@itemx html +@itemx pdf +@itemx ps +Generate documentation files in the given format. These targets +should always exist, but any or all can be a no-op if the given output +format cannot be generated. These targets should not be dependencies +of the @code{all} target; the user must manually invoke them. + +Here's an example rule for generating DVI files from Texinfo: + +@smallexample +dvi: foo.dvi + +foo.dvi: foo.texi chap1.texi chap2.texi + $(TEXI2DVI) $(srcdir)/foo.texi +@end smallexample + +@noindent +You must define the variable @code{TEXI2DVI} in the Makefile. It +should run the program @code{texi2dvi}, which is part of the Texinfo +distribution. (@code{texi2dvi} uses @TeX{} to do the real work of +formatting. @TeX{} is not distributed with Texinfo.) Alternatively, +write only the dependencies, and allow GNU @code{make} to provide the +command. + +Here's another example, this one for generating HTML from Texinfo: + +@smallexample +html: foo.html + +foo.html: foo.texi chap1.texi chap2.texi + $(TEXI2HTML) $(srcdir)/foo.texi +@end smallexample + +@noindent +Again, you would define the variable @code{TEXI2HTML} in the Makefile; +for example, it might run @code{makeinfo --no-split --html} +(@command{makeinfo} is part of the Texinfo distribution). + +@item dist +Create a distribution tar file for this program. The tar file should be +set up so that the file names in the tar file start with a subdirectory +name which is the name of the package it is a distribution for. This +name can include the version number. + +For example, the distribution tar file of GCC version 1.40 unpacks into +a subdirectory named @file{gcc-1.40}. + +The easiest way to do this is to create a subdirectory appropriately +named, use @code{ln} or @code{cp} to install the proper files in it, and +then @code{tar} that subdirectory. + +Compress the tar file with @code{gzip}. For example, the actual +distribution file for GCC version 1.40 is called @file{gcc-1.40.tar.gz}. +It is ok to support other free compression formats as well. + +The @code{dist} target should explicitly depend on all non-source files +that are in the distribution, to make sure they are up to date in the +distribution. +@ifset CODESTD +@xref{Releases, , Making Releases}. +@end ifset +@ifclear CODESTD +@xref{Releases, , Making Releases, standards, GNU Coding Standards}. +@end ifclear + +@item check +Perform self-tests (if any). The user must build the program before +running the tests, but need not install the program; you should write +the self-tests so that they work when the program is built but not +installed. +@end table + +The following targets are suggested as conventional names, for programs +in which they are useful. + +@table @code +@item installcheck +Perform installation tests (if any). The user must build and install +the program before running the tests. You should not assume that +@file{$(bindir)} is in the search path. + +@item installdirs +It's useful to add a target named @samp{installdirs} to create the +directories where files are installed, and their parent directories. +There is a script called @file{mkinstalldirs} which is convenient for +this; you can find it in the Gnulib package. +You can use a rule like this: + +@comment This has been carefully formatted to look decent in the Make manual. +@comment Please be sure not to make it extend any further to the right.--roland +@smallexample +# Make sure all installation directories (e.g. $(bindir)) +# actually exist by making them if necessary. +installdirs: mkinstalldirs + $(srcdir)/mkinstalldirs $(bindir) $(datadir) \ + $(libdir) $(infodir) \ + $(mandir) +@end smallexample + +@noindent +or, if you wish to support @env{DESTDIR} (strongly encouraged), + +@smallexample +# Make sure all installation directories (e.g. $(bindir)) +# actually exist by making them if necessary. +installdirs: mkinstalldirs + $(srcdir)/mkinstalldirs \ + $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) \ + $(DESTDIR)$(libdir) $(DESTDIR)$(infodir) \ + $(DESTDIR)$(mandir) +@end smallexample + +This rule should not modify the directories where compilation is done. +It should do nothing but create installation directories. +@end table + +@node Install Command Categories +@section Install Command Categories + +@cindex pre-installation commands +@cindex post-installation commands +When writing the @code{install} target, you must classify all the +commands into three categories: normal ones, @dfn{pre-installation} +commands and @dfn{post-installation} commands. + +Normal commands move files into their proper places, and set their +modes. They may not alter any files except the ones that come entirely +from the package they belong to. + +Pre-installation and post-installation commands may alter other files; +in particular, they can edit global configuration files or data bases. + +Pre-installation commands are typically executed before the normal +commands, and post-installation commands are typically run after the +normal commands. + +The most common use for a post-installation command is to run +@code{install-info}. This cannot be done with a normal command, since +it alters a file (the Info directory) which does not come entirely and +solely from the package being installed. It is a post-installation +command because it needs to be done after the normal command which +installs the package's Info files. + +Most programs don't need any pre-installation commands, but we have the +feature just in case it is needed. + +To classify the commands in the @code{install} rule into these three +categories, insert @dfn{category lines} among them. A category line +specifies the category for the commands that follow. + +A category line consists of a tab and a reference to a special Make +variable, plus an optional comment at the end. There are three +variables you can use, one for each category; the variable name +specifies the category. Category lines are no-ops in ordinary execution +because these three Make variables are normally undefined (and you +@emph{should not} define them in the makefile). + +Here are the three possible category lines, each with a comment that +explains what it means: + +@smallexample + $(PRE_INSTALL) # @r{Pre-install commands follow.} + $(POST_INSTALL) # @r{Post-install commands follow.} + $(NORMAL_INSTALL) # @r{Normal commands follow.} +@end smallexample + +If you don't use a category line at the beginning of the @code{install} +rule, all the commands are classified as normal until the first category +line. If you don't use any category lines, all the commands are +classified as normal. + +These are the category lines for @code{uninstall}: + +@smallexample + $(PRE_UNINSTALL) # @r{Pre-uninstall commands follow.} + $(POST_UNINSTALL) # @r{Post-uninstall commands follow.} + $(NORMAL_UNINSTALL) # @r{Normal commands follow.} +@end smallexample + +Typically, a pre-uninstall command would be used for deleting entries +from the Info directory. + +If the @code{install} or @code{uninstall} target has any dependencies +which act as subroutines of installation, then you should start +@emph{each} dependency's commands with a category line, and start the +main target's commands with a category line also. This way, you can +ensure that each command is placed in the right category regardless of +which of the dependencies actually run. + +Pre-installation and post-installation commands should not run any +programs except for these: + +@example +[ basename bash cat chgrp chmod chown cmp cp dd diff echo +egrep expand expr false fgrep find getopt grep gunzip gzip +hostname install install-info kill ldconfig ln ls md5sum +mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee +test touch true uname xargs yes +@end example + +@cindex binary packages +The reason for distinguishing the commands in this way is for the sake +of making binary packages. Typically a binary package contains all the +executables and other files that need to be installed, and has its own +method of installing them---so it does not need to run the normal +installation commands. But installing the binary package does need to +execute the pre-installation and post-installation commands. + +Programs to build binary packages work by extracting the +pre-installation and post-installation commands. Here is one way of +extracting the pre-installation commands (the @option{-s} option to +@command{make} is needed to silence messages about entering +subdirectories): + +@smallexample +make -s -n install -o all \ + PRE_INSTALL=pre-install \ + POST_INSTALL=post-install \ + NORMAL_INSTALL=normal-install \ + | gawk -f pre-install.awk +@end smallexample + +@noindent +where the file @file{pre-install.awk} could contain this: + +@smallexample +$0 ~ /^(normal-install|post-install)[ \t]*$/ @{on = 0@} +on @{print $0@} +$0 ~ /^pre-install[ \t]*$/ @{on = 1@} +@end smallexample diff --git a/local/recipes/dev/gnu-make/source/doc/make.1 b/local/recipes/dev/gnu-make/source/doc/make.1 new file mode 100644 index 0000000000..0fd0104d97 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/make.1 @@ -0,0 +1,416 @@ +.TH MAKE 1 "31 May 2022" "GNU" "User Commands" +.SH NAME +make \- GNU make utility to maintain groups of programs +.SH SYNOPSIS +.B make +[\fIOPTION\fR]... [\fITARGET\fR]... +.SH DESCRIPTION +.LP +The +.I make +utility will determine automatically which pieces of a large program need to +be recompiled, and issue the commands to recompile them. The manual describes +the GNU implementation of +.BR make , +which was written by Richard Stallman and Roland McGrath, and is currently +maintained by Paul Smith. Our examples show C programs, since they are very +common, but you can use +.B make +with any programming language whose compiler can be run with a shell command. +In fact, +.B make +is not limited to programs. You can use it to describe any task where some +files must be updated automatically from others whenever the others change. +.LP +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 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, +this simple shell command: +.sp 1 +.RS +.B make +.RE +.sp 1 +suffices to perform all necessary recompilations. +The +.B make +program uses the makefile description and the last-modification times of the +files to decide which of the files need to be updated. For each of those +files, it issues the commands recorded in the makefile. +.LP +.B make +executes commands in the +.I makefile +to update one or more +.IR targets , +where +.I target +is typically a program. +If no +.B \-f +option is present, +.B make +will look for the makefiles +.IR GNUmakefile , +.IR makefile , +and +.IR Makefile , +in that order. +.LP +Normally you should call your makefile either +.I makefile +or +.IR Makefile . +(We recommend +.I Makefile +because it appears prominently near the beginning of a directory +listing, right near other important files such as +.IR README .) +The first name checked, +.IR GNUmakefile , +is not recommended for most makefiles. You should use this name if you have a +makefile that is specific to GNU +.BR make , +and will not be understood by other versions of +.BR make . +If +.I makefile +is '\-', the standard input is read. +.LP +.B make +updates a target if it depends on prerequisite files +that have been modified since the target was last modified, +or if the target does not exist. +.SH OPTIONS +.sp 1 +.TP 0.5i +\fB\-b\fR, \fB\-m\fR +These options are ignored for compatibility with other versions of +.BR make . +.TP 0.5i +\fB\-B\fR, \fB\-\-always\-make\fR +Unconditionally make all targets. +.TP 0.5i +\fB\-C\fR \fIdir\fR, \fB\-\-directory\fR=\fIdir\fR +Change to directory +.I dir +before reading the makefiles or doing anything else. +If multiple +.B \-C +options are specified, each is interpreted relative to the +previous one: +.BR "\-C " / +.BR "\-C " etc +is equivalent to +.BR "\-C " /etc. +This is typically used with recursive invocations of +.BR make . +.TP 0.5i +.B \-d +Print debugging information in addition to normal processing. +The debugging information says which files are being considered for +remaking, which file-times are being compared and with what results, +which files actually need to be remade, which implicit rules are +considered and which are applied---everything interesting about how +.B make +decides what to do. +.TP 0.5i +.BI \-\-debug "[=FLAGS]" +Print debugging information in addition to normal processing. +If the +.I FLAGS +are omitted, then the behavior is the same as if +.B \-d +was specified. +.I FLAGS +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 basic +for basic debugging, +.I verbose +for more verbose basic debugging, +.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 +Give variables taken from the environment precedence over variables +from makefiles. +.TP 0.5i +\fB\-E\fR \fIstring\fR, \fB\-\-eval\fR \fIstring\fR +Interpret \fIstring\fR using the \fBeval\fR function, before parsing any +makefiles. +.TP 0.5i +\fB\-f\fR \fIfile\fR, \fB\-\-file\fR=\fIfile\fR, \fB\-\-makefile\fR=\fIFILE\fR +Use +.I file +as a makefile. +.TP 0.5i +\fB\-i\fR, \fB\-\-ignore\-errors\fR +Ignore all errors in commands executed to remake files. +.TP 0.5i +\fB\-I\fR \fIdir\fR, \fB\-\-include\-dir\fR=\fIdir\fR +Specifies a directory +.I dir +to search for included makefiles. +If several +.B \-I +options are used to specify several directories, the directories are +searched in the order specified. +Unlike the arguments to other flags of +.BR make , +directories given with +.B \-I +flags may come directly after the flag: +.BI \-I dir +is allowed, as well as +.B \-I +.IR dir . +This syntax is allowed for compatibility with the C +preprocessor's +.B \-I +flag. +.TP 0.5i +\fB\-j\fR [\fIjobs\fR], \fB\-\-jobs\fR[=\fIjobs\fR] +Specifies the number of +.I jobs +(commands) to run simultaneously. +If there is more than one +.B \-j +option, the last one is effective. +If the +.B \-j +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 +be remade, the other dependencies of these targets can be processed +all the same. +.TP 0.5i +\fB\-l\fR [\fIload\fR], \fB\-\-load\-average\fR[=\fIload\fR] +Specifies that no new jobs (commands) should be started if there are +others jobs running and the load average is at least +.I load +(a floating-point number). +With no argument, removes a previous load limit. +.TP 0.5i +\fB\-L\fR, \fB\-\-check\-symlink\-times\fR +Use the latest mtime between symlinks and target. +.TP 0.5i +\fB\-n\fR, \fB\-\-just\-print\fR, \fB\-\-dry\-run\fR, \fB\-\-recon\fR +Print the commands that would be executed, but do not execute them (except in +certain circumstances). +.TP 0.5i +\fB\-o\fR \fIfile\fR, \fB\-\-old\-file\fR=\fIfile\fR, \fB\-\-assume\-old\fR=\fIfile\fR +Do not remake the file +.I file +even if it is older than its dependencies, and do not remake anything +on account of changes in +.IR file . +Essentially the file is treated as very old and its rules are ignored. +.TP 0.5i +\fB\-O\fR[\fItype\fR], \fB\-\-output\-sync\fR[=\fItype\fR] +When running multiple jobs in parallel with \fB-j\fR, ensure the output of +each job is collected together rather than interspersed with output from +other jobs. If +.I type +is not specified or is +.B target +the output from the entire recipe for each target is grouped together. If +.I type +is +.B line +the output from each command line within a recipe is grouped together. +If +.I type +is +.B recurse +output from an entire recursive make is grouped together. If +.I type +is +.B none +output synchronization is disabled. +.TP 0.5i +\fB\-p\fR, \fB\-\-print\-data\-base\fR +Print the data base (rules and variable values) that results from +reading the makefiles; then execute as usual or as otherwise +specified. +This also prints the version information given by the +.B \-v +switch (see below). +To print the data base without trying to remake any files, use +.IR "make \-p \-f/dev/null" . +.TP 0.5i +\fB\-q\fR, \fB\-\-question\fR +``Question mode''. +Do not run any commands, or print anything; just return an exit status +that is zero if the specified targets are already up to date, nonzero +otherwise. +.TP 0.5i +\fB\-r\fR, \fB\-\-no\-builtin\-rules\fR +Eliminate use of the built\-in implicit rules. +Also clear out the default list of suffixes for suffix rules. +.TP 0.5i +\fB\-R\fR, \fB\-\-no\-builtin\-variables\fR +Don't define any built\-in variables. +.TP 0.5i +\fB\-s\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR +Silent operation; do not print the commands as they are executed. +.TP 0.5i +.B \-\-no\-silent +Cancel the effect of the \fB\-s\fR option. +.TP 0.5i +\fB\-S\fR, \fB\-\-no\-keep\-going\fR, \fB\-\-stop\fR +Cancel the effect of the +.B \-k +option. +.TP 0.5i +\fB\-t\fR, \fB\-\-touch\fR +Touch files (mark them up to date without really changing them) +instead of running their commands. +This is used to pretend that the commands were done, in order to fool +future invocations of +.BR make . +.TP 0.5i +.B \-\-trace +Information about the disposition of each target is printed (why the target is +being rebuilt and what commands are run to rebuild it). +.TP 0.5i +\fB\-v\fR, \fB\-\-version\fR +Print the version of the +.B make +program plus a copyright, a list of authors and a notice that there +is no warranty. +.TP 0.5i +\fB\-w\fR, \fB\-\-print\-directory\fR +Print a message containing the working directory +before and after other processing. +This may be useful for tracking down errors from complicated nests of +recursive +.B make +commands. +.TP 0.5i +.B \-\-no\-print\-directory +Turn off +.BR \-w , +even if it was turned on implicitly. +.TP 0.5i +.BI \-\-shuffle "[=MODE]" +Enable shuffling of goal and prerequisite ordering. +.I MODE +is one of +.I none +to disable shuffle mode, +.I random +to shuffle prerequisites in random order, +.I reverse +to consider prerequisites in reverse order, or an integer +.I +which enables +.I random +mode with a specific +.I seed +value. If +.I MODE +is omitted the default is +.IR random . +.TP 0.5i +\fB\-W\fR \fIfile\fR, \fB\-\-what\-if\fR=\fIfile\fR, \fB\-\-new\-file\fR=\fIfile\fR, \fB\-\-assume\-new\fR=\fIfile\fR +Pretend that the target +.I file +has just been modified. +When used with the +.B \-n +flag, this shows you what would happen if you were to modify that file. +Without +.BR \-n , +it is almost the same as running a +.I touch +command on the given file before running +.BR make , +except that the modification time is changed only in the imagination of +.BR make . +.TP 0.5i +.B \-\-warn\-undefined\-variables +Warn when an undefined variable is referenced. +.SH "EXIT STATUS" +GNU +.B make +exits with a status of zero if all makefiles were successfully parsed +and no targets that were built failed. A status of one will be returned +if the +.B \-q +flag was used and +.B make +determines that a target needs to be rebuilt. A status of two will be +returned if any errors were encountered. +.SH "SEE ALSO" +The full documentation for +.B make +is maintained as a Texinfo manual. If the +.B info +and +.B make +programs are properly installed at your site, the command +.IP +.B info make +.PP +should give you access to the complete manual. +.SH BUGS +See the chapter ``Problems and Bugs'' in +.IR "The GNU Make Manual" . +.SH AUTHOR +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-2022 Free Software Foundation, Inc. +This file is part of +.IR "GNU make" . +.LP +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. +.LP +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. +.LP +You should have received a copy of the GNU General Public License along with +this program. If not, see +.IR https://www.gnu.org/licenses/ . diff --git a/local/recipes/dev/gnu-make/source/doc/make.info b/local/recipes/dev/gnu-make/source/doc/make.info new file mode 100644 index 0000000000..2125e16bc3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/make.info @@ -0,0 +1,221 @@ +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.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, 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, + Version 1.3 or any later version published by the Free Software + Foundation; with no Invariant Sections, with the Front-Cover Texts + being "A GNU Manual," and with the Back-Cover Texts as in (a) + below. A copy of the license is included in the section entitled + "GNU Free Documentation License." + + (a) The FSF's Back-Cover Text is: "You have the freedom to copy and + modify this GNU manual. Buying copies from the FSF supports it in + developing GNU and promoting software freedom." +INFO-DIR-SECTION Software development +START-INFO-DIR-ENTRY +* Make: (make). Remake files automatically. +END-INFO-DIR-ENTRY + + +Indirect: +make.info-1: 1391 +make.info-2: 302239 +make.info-3: 626899 + +Tag Table: +(Indirect) +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/local/recipes/dev/gnu-make/source/doc/make.info-1 b/local/recipes/dev/gnu-make/source/doc/make.info-1 new file mode 100644 index 0000000000..521a80d2ff --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/make.info-1 @@ -0,0 +1,7235 @@ +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.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, 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, + Version 1.3 or any later version published by the Free Software + Foundation; with no Invariant Sections, with the Front-Cover Texts + being "A GNU Manual," and with the Back-Cover Texts as in (a) + below. A copy of the license is included in the section entitled + "GNU Free Documentation License." + + (a) The FSF's Back-Cover Text is: "You have the freedom to copy and + modify this GNU manual. Buying copies from the FSF supports it in + developing GNU and promoting software freedom." +INFO-DIR-SECTION Software development +START-INFO-DIR-ENTRY +* Make: (make). Remake files automatically. +END-INFO-DIR-ENTRY + + +File: make.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir) + +GNU 'make' +********** + +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.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, 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, + Version 1.3 or any later version published by the Free Software + Foundation; with no Invariant Sections, with the Front-Cover Texts + being "A GNU Manual," and with the Back-Cover Texts as in (a) + below. A copy of the license is included in the section entitled + "GNU Free Documentation License." + + (a) The FSF's Back-Cover Text is: "You have the freedom to copy and + modify this GNU manual. Buying copies from the FSF supports it in + developing GNU and promoting software freedom." + +* Menu: + +* Overview:: Overview of 'make'. +* Introduction:: An introduction to 'make'. +* Makefiles:: Makefiles tell 'make' what to do. +* Rules:: Rules describe when a file must be remade. +* Recipes:: Recipes say how to remake a file. +* Using Variables:: You can use variables to avoid repetition. +* Conditionals:: Use or ignore parts of the makefile based + on the values of variables. +* Functions:: Many powerful ways to manipulate text. +* Invoking make: Running. How to invoke 'make' on the command line. +* Implicit Rules:: Use implicit rules to treat many files alike, + based on their file names. +* Archives:: How 'make' can update library archives. +* Extending make:: Using extensions to 'make'. +* Integrating make:: Integrating 'make' with other tools. +* Features:: Features GNU 'make' has over other 'make's. +* Missing:: What GNU 'make' lacks from other 'make's. +* Makefile Conventions:: Conventions for writing makefiles for + GNU programs. +* Quick Reference:: A quick reference for experienced users. +* Error Messages:: A list of common errors generated by 'make'. +* Complex Makefile:: A real example of a straightforward, + but nontrivial, makefile. + +* GNU Free Documentation License:: License for copying this manual. +* Concept Index:: Index of Concepts. +* Name Index:: Index of Functions, Variables, & Directives. + + -- The Detailed Node Listing -- + +Overview of 'make' + +* Preparing:: Preparing and running 'make'. +* Reading:: On reading this text. +* Bugs:: Problems and bugs. + +An Introduction to Makefiles + +* Rule Introduction:: What a rule looks like. +* Simple Makefile:: A simple makefile. +* How Make Works:: How 'make' processes this makefile. +* Variables Simplify:: Variables make makefiles simpler. +* make Deduces:: Letting 'make' deduce the recipes. +* Combine By Prerequisite:: Another style of makefile. +* Cleanup:: Rules for cleaning the directory. + +Writing Makefiles + +* Makefile Contents:: What makefiles contain. +* Makefile Names:: How to name your makefile. +* Include:: How one makefile can use another makefile. +* MAKEFILES Variable:: The environment can specify extra makefiles. +* Remaking Makefiles:: How makefiles get remade. +* Overriding Makefiles:: How to override part of one makefile + with another makefile. +* Reading Makefiles:: How makefiles are read in. +* Parsing Makefiles:: How makefiles are parsed. +* Secondary Expansion:: How and when secondary expansion is performed. + +What Makefiles Contain + +* Splitting Lines:: Splitting long lines in makefiles + +Writing Rules + +* Rule Example:: An example explained. +* Rule Syntax:: General syntax explained. +* Prerequisite Types:: There are two types of prerequisites. +* Wildcards:: Using wildcard characters such as '*'. +* Directory Search:: Searching other directories for source files. +* Phony Targets:: Using a target that is not a real file's name. +* Force Targets:: You can use a target without a recipe + or prerequisites to mark other targets + as phony. +* Empty Targets:: When only the date matters and the + files are empty. +* Special Targets:: Targets with special built-in meanings. +* Multiple Targets:: When to make use of several targets in a rule. +* Multiple Rules:: How to use several rules with the same target. +* Static Pattern:: Static pattern rules apply to multiple targets + and can vary the prerequisites according to + the target name. +* Double-Colon:: How to use a special kind of rule to allow + several independent rules for one target. +* Automatic Prerequisites:: How to automatically generate rules giving + prerequisites from source files themselves. + +Using Wildcard Characters in File Names + +* Wildcard Examples:: Several examples. +* Wildcard Pitfall:: Problems to avoid. +* Wildcard Function:: How to cause wildcard expansion where + it does not normally take place. + +Searching Directories for Prerequisites + +* General Search:: Specifying a search path that applies + to every prerequisite. +* Selective Search:: Specifying a search path + for a specified class of names. +* Search Algorithm:: When and how search paths are applied. +* Recipes/Search:: How to write recipes that work together + with search paths. +* Implicit/Search:: How search paths affect implicit rules. +* Libraries/Search:: Directory search for link libraries. + +Static Pattern Rules + +* Static Usage:: The syntax of static pattern rules. +* Static versus Implicit:: When are they better than implicit rules? + +Writing Recipes in Rules + +* Recipe Syntax:: Recipe syntax features and pitfalls. +* Echoing:: How to control when recipes are echoed. +* Execution:: How recipes are executed. +* Parallel:: How recipes can be executed in parallel. +* Errors:: What happens after a recipe execution error. +* Interrupts:: What happens when a recipe is interrupted. +* Recursion:: Invoking 'make' from makefiles. +* Canned Recipes:: Defining canned recipes. +* Empty Recipes:: Defining useful, do-nothing recipes. + +Recipe Syntax + +* Splitting Recipe Lines:: Breaking long recipe lines for readability. +* Variables in Recipes:: Using 'make' variables in recipes. + +Recipe Execution + +* One Shell:: One shell for all lines in a recipe. +* Choosing the Shell:: How 'make' chooses the shell used + to run recipes. + +Parallel Execution + +* Parallel Disable:: Disabling parallel execution +* Parallel Output:: Handling output during parallel execution +* Parallel Input:: Handling input during parallel execution + +Recursive Use of 'make' + +* MAKE Variable:: The special effects of using '$(MAKE)'. +* Variables/Recursion:: How to communicate variables to a sub-'make'. +* Options/Recursion:: How to communicate options to a sub-'make'. +* -w Option:: How the '-w' or '--print-directory' option + helps debug use of recursive 'make' commands. + +How to Use Variables + +* Reference:: How to use the value of a variable. +* Flavors:: Variables come in two flavors. +* Advanced:: Advanced features for referencing a variable. +* Values:: All the ways variables get their values. +* Setting:: How to set a variable in the makefile. +* Appending:: How to append more text to the old value + of a variable. +* Override Directive:: How to set a variable in the makefile even if + the user has set it with a command argument. +* Multi-Line:: An alternate way to set a variable + to a multi-line string. +* Undefine Directive:: How to undefine a variable so that it appears + as if it was never set. +* Environment:: Variable values can come from the environment. +* Target-specific:: Variable values can be defined on a per-target + basis. +* Pattern-specific:: Target-specific variable values can be applied + to a group of targets that match a pattern. +* 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 + substitutions on the value. +* Computed Names:: Computing the name of the variable to refer to. + +Conditional Parts of Makefiles + +* Conditional Example:: Example of a conditional +* Conditional Syntax:: The syntax of conditionals. +* Testing Flags:: Conditionals that test flags. + +Functions for Transforming Text + +* Syntax of Functions:: How to write a function call. +* 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. +* Value Function:: Return the un-expanded value of a variable. +* Eval Function:: Evaluate the arguments as makefile syntax. +* Origin Function:: Find where a variable got its value. +* Flavor Function:: Find out the flavor of a variable. +* Make Control Functions:: Functions that control how make runs. +* Shell Function:: Substitute the output of a shell command. +* Guile Function:: Use GNU Guile embedded scripting language. + +How to Run 'make' + +* 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 + +Using Implicit Rules + +* Using Implicit:: How to use an existing implicit rule + to get the recipes for updating a file. +* Catalogue of Rules:: A list of built-in rules. +* Implicit Variables:: How to change what predefined rules do. +* Chained Rules:: How to use a chain of implicit rules. +* Pattern Rules:: How to define new implicit rules. +* Last Resort:: How to define a recipe for rules which + cannot find any. +* Suffix Rules:: The old-fashioned style of implicit rule. +* Implicit Rule Search:: The precise algorithm for applying + implicit rules. + +Defining and Redefining Pattern Rules + +* Pattern Intro:: An introduction to pattern rules. +* Pattern Examples:: Examples of pattern rules. +* Automatic Variables:: How to use automatic variables in the + recipe of implicit rules. +* Pattern Match:: How patterns match. +* Match-Anything Rules:: Precautions you should take prior to + defining rules that can match any + target file whatever. +* Canceling Rules:: How to override or cancel built-in rules. + +Using 'make' to Update Archive Files + +* Archive Members:: Archive members as targets. +* Archive Update:: The implicit rule for archive member targets. +* Archive Pitfalls:: Dangers to watch out for when using archives. +* Archive Suffix Rules:: You can write a special kind of suffix rule + for updating archives. + +Implicit Rule for Archive Member Targets + +* Archive Symbols:: How to update archive symbol directories. + +Extending GNU 'make' + +* Guile Integration:: Using Guile as an embedded scripting language. +* Loading Objects:: Loading dynamic objects as extensions. + +GNU Guile Integration + +* Guile Types:: Converting Guile types to 'make' strings. +* Guile Interface:: Invoking 'make' functions from Guile. +* Guile Example:: Example using Guile in 'make'. + +Loading Dynamic Objects + +* load Directive:: Loading dynamic objects as extensions. +* Remaking Loaded Objects:: How loaded objects get remade. +* Loaded Object API:: Programmatic interface for loaded objects. +* Loaded Object Example:: Example of a loaded object + +Integrating GNU 'make' + +* Job Slots:: Share job slots with GNU 'make'. +* Terminal Output:: Control output to terminals. + +Sharing Job Slots with GNU 'make' + +* POSIX Jobserver:: Using the jobserver on POSIX systems. +* Windows Jobserver:: Using the jobserver on Windows systems. + + + +File: make.info, Node: Overview, Next: Introduction, Prev: Top, Up: Top + +1 Overview of 'make' +******************** + +The 'make' utility automatically determines which pieces of a large +program need to be recompiled, and issues commands to recompile them. +This manual describes GNU 'make', which was implemented by Richard +Stallman and Roland McGrath. Development since Version 3.76 has been +handled by Paul D. Smith. + + GNU 'make' conforms to section 6.2 of 'IEEE Standard 1003.2-1992' +(POSIX.2). + + Our examples show C programs, since they are most common, but you can +use 'make' with any programming language whose compiler can be run with +a shell command. Indeed, 'make' is not limited to programs. You can +use it to describe any task where some files must be updated +automatically from others whenever the others change. + +* Menu: + +* Preparing:: Preparing and running 'make'. +* Reading:: On reading this text. +* Bugs:: Problems and bugs. + + +File: make.info, Node: Preparing, Next: Reading, Prev: Overview, Up: Overview + +Preparing and Running Make +========================== + +To prepare to use 'make', you must write a file called the "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. + + Once a suitable makefile exists, each time you change some source +files, this simple shell command: + + make + +suffices to perform all necessary recompilations. The 'make' program +uses the makefile data base and the last-modification times of the files +to decide which of the files need to be updated. For each of those +files, it issues the recipes recorded in the data base. + + You can provide command line arguments to 'make' to control which +files should be recompiled, or how. *Note How to Run 'make': Running. + + +File: make.info, Node: Reading, Next: Bugs, Prev: Preparing, Up: Overview + +1.1 How to Read This Manual +=========================== + +If you are new to 'make', or are looking for a general introduction, +read the first few sections of each chapter, skipping the later +sections. In each chapter, the first few sections contain introductory +or general information and the later sections contain specialized or +technical information. The exception is the second chapter, *note An +Introduction to Makefiles: Introduction, all of which is introductory. + + If you are familiar with other 'make' programs, see *note Features of +GNU 'make': Features, which lists the enhancements GNU 'make' has, and +*note Incompatibilities and Missing Features: Missing, which explains +the few things GNU 'make' lacks that others have. + + For a quick summary, see *note Options Summary::, *note Quick +Reference::, and *note Special Targets::. + + +File: make.info, Node: Bugs, Prev: Reading, Up: Overview + +1.2 Problems and Bugs +===================== + +If you have problems with GNU 'make' or think you've found a bug, please +report it to the developers; we cannot promise to do anything but we +might well want to fix it. + + Before reporting a bug, make sure you've actually found a real bug. +Carefully reread the documentation and see if it really says you can do +what you're trying to do. If it's not clear whether you should be able +to do something or not, report that too; it's a bug in the +documentation! + + Before reporting a bug or trying to fix it yourself, try to isolate +it to the smallest possible makefile that reproduces the problem. Then +send us the makefile and the exact results 'make' gave you, including +any error or warning messages. Please don't paraphrase these messages: +it's best to cut and paste them into your report. When generating this +small makefile, be sure to not use any non-free or unusual tools in your +recipes: you can almost always emulate what such a tool would do with +simple shell commands. Finally, be sure to explain what you expected to +occur; this will help us decide whether the problem was really in the +documentation. + + Once you have a precise problem you can report it in one of two ways. +Either send electronic mail to: + + bug-make@gnu.org + +or use our Web-based project management tool, at: + + 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 +with the command 'make --version'. Be sure also to 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 +'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 + +2 An Introduction to Makefiles +****************************** + +You need a file called a "makefile" to tell 'make' what to do. Most +often, the makefile tells 'make' how to compile and link a program. + + In this chapter, we will discuss a simple makefile that describes how +to compile and link a text editor which consists of eight C source files +and three header files. The makefile can also tell 'make' how to run +miscellaneous commands when explicitly asked (for example, to remove +certain files as a clean-up operation). To see a more complex example +of a makefile, see *note Complex Makefile::. + + When 'make' recompiles the editor, each changed C source file must be +recompiled. If a header file has changed, each C source file that +includes the header file must be recompiled to be safe. Each +compilation produces an object file corresponding to the source file. +Finally, if any source file has been recompiled, all the object files, +whether newly made or saved from previous compilations, must be linked +together to produce the new executable editor. + +* Menu: + +* Rule Introduction:: What a rule looks like. +* Simple Makefile:: A simple makefile. +* How Make Works:: How 'make' processes this makefile. +* Variables Simplify:: Variables make makefiles simpler. +* make Deduces:: Letting 'make' deduce the recipes. +* Combine By Prerequisite:: Another style of makefile. +* Cleanup:: Rules for cleaning the directory. + + +File: make.info, Node: Rule Introduction, Next: Simple Makefile, Prev: Introduction, Up: Introduction + +2.1 What a Rule Looks Like +========================== + +A simple makefile consists of "rules" with the following shape: + + TARGET ... : PREREQUISITES ... + RECIPE + ... + ... + + A "target" is usually the name of a file that is generated by a +program; examples of targets are executable or object files. A target +can also be the name of an action to carry out, such as 'clean' (*note +Phony Targets::). + + A "prerequisite" is a file that is used as input to create the +target. A target often depends on several files. + + A "recipe" is an action that 'make' carries out. A recipe may have +more than one command, either on the same line or each on its own line. +*Please note:* you need to put a tab character at the beginning of every +recipe line! This is an obscurity that catches the unwary. If you +prefer to prefix your recipes with a character other than tab, you can +set the '.RECIPEPREFIX' variable to an alternate character (*note +Special Variables::). + + Usually a recipe is in a rule with prerequisites and serves to create +a target file if any of the prerequisites change. However, the rule +that specifies a recipe for the target need not have prerequisites. For +example, the rule containing the delete command associated with the +target 'clean' does not have prerequisites. + + A "rule", then, explains how and when to remake certain files which +are the targets of the particular rule. 'make' carries out the recipe +on the prerequisites to create or update the target. A rule can also +explain how and when to carry out an action. *Note Writing Rules: +Rules. + + A makefile may contain other text besides rules, but a simple +makefile need only contain rules. Rules may look somewhat more +complicated than shown in this template, but all fit the pattern more or +less. + + +File: make.info, Node: Simple Makefile, Next: How Make Works, Prev: Rule Introduction, Up: Introduction + +2.2 A Simple Makefile +===================== + +Here is a straightforward makefile that describes the way an executable +file called 'edit' depends on eight object files which, in turn, depend +on eight C source and three header files. + + In this example, all the C files include 'defs.h', but only those +defining editing commands include 'command.h', and only low level files +that change the editor buffer include 'buffer.h'. + + edit : main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + cc -o edit main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + + main.o : main.c defs.h + cc -c main.c + kbd.o : kbd.c defs.h command.h + cc -c kbd.c + command.o : command.c defs.h command.h + cc -c command.c + display.o : display.c defs.h buffer.h + cc -c display.c + insert.o : insert.c defs.h buffer.h + cc -c insert.c + search.o : search.c defs.h buffer.h + cc -c search.c + files.o : files.c defs.h buffer.h command.h + cc -c files.c + utils.o : utils.c defs.h + cc -c utils.c + clean : + rm edit main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + +We split each long line into two lines using backslash/newline; this is +like using one long line, but is easier to read. *Note Splitting Long +Lines: Splitting Lines. + + To use this makefile to create the executable file called 'edit', +type: + + make + + To use this makefile to delete the executable file and all the object +files from the directory, type: + + make clean + + In the example makefile, the targets include the executable file +'edit', and the object files 'main.o' and 'kbd.o'. The prerequisites +are files such as 'main.c' and 'defs.h'. In fact, each '.o' file is +both a target and a prerequisite. Recipes include 'cc -c main.c' and +'cc -c kbd.c'. + + When a target is a file, it needs to be recompiled or relinked if any +of its prerequisites change. In addition, any prerequisites that are +themselves automatically generated should be updated first. In this +example, 'edit' depends on each of the eight object files; the object +file 'main.o' depends on the source file 'main.c' and on the header file +'defs.h'. + + A recipe may follow each line that contains a target and +prerequisites. These recipes say how to update the target file. A tab +character (or whatever character is specified by the '.RECIPEPREFIX' +variable; *note Special Variables::) must come at the beginning of every +line in the recipe to distinguish recipes from other lines in the +makefile. (Bear in mind that '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 'make' does is execute the recipe you +have specified when the target file needs to be updated.) + + The target 'clean' is not a file, but merely the name of an action. +Since you normally do not want to carry out the actions in this rule, +'clean' is not a prerequisite of any other rule. Consequently, 'make' +never does anything with it unless you tell it specifically. Note that +this rule not only is not a prerequisite, it also does not have any +prerequisites, so the only purpose of the rule is to run the specified +recipe. Targets that do not refer to files but are just actions are +called "phony targets". *Note Phony Targets::, for information about +this kind of target. *Note Errors in Recipes: Errors, to see how to +cause 'make' to ignore errors from 'rm' or any other command. + + +File: make.info, Node: How Make Works, Next: Variables Simplify, Prev: Simple Makefile, Up: Introduction + +2.3 How 'make' Processes a Makefile +=================================== + +By default, 'make' starts with the first target (not targets whose names +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. + + Thus, when you give the command: + + make + +'make' reads the makefile in the current directory and begins by +processing the first rule. In the example, this rule is for relinking +'edit'; but before 'make' can fully process this rule, it must process +the rules for the files that 'edit' depends on, which in this case are +the object files. Each of these files is processed according to its own +rule. These rules say to update each '.o' file by compiling its source +file. The recompilation must be done if the source file, or any of the +header files named as prerequisites, is more recent than the object +file, or if the object file does not exist. + + The other rules are processed because their targets appear as +prerequisites of the goal. If some other rule is not depended on by the +goal (or anything it depends on, etc.), that rule is not processed, +unless you tell 'make' to do so (with a command such as 'make clean'). + + Before recompiling an object file, 'make' considers updating its +prerequisites, the source file and header files. This makefile does not +specify anything to be done for them--the '.c' and '.h' files are not +the targets of any rules--so 'make' does nothing for these files. But +'make' would update automatically generated C programs, such as those +made by Bison or Yacc, by their own rules at this time. + + After recompiling whichever object files need it, 'make' decides +whether to relink 'edit'. This must be done if the file 'edit' does not +exist, or if any of the object files are newer than it. If an object +file was just recompiled, it is now newer than 'edit', so 'edit' is +relinked. + + Thus, if we change the file 'insert.c' and run 'make', 'make' will +compile that file to update 'insert.o', and then link 'edit'. If we +change the file 'command.h' and run 'make', 'make' will recompile the +object files 'kbd.o', 'command.o' and 'files.o' and then link the file +'edit'. + + +File: make.info, Node: Variables Simplify, Next: make Deduces, Prev: How Make Works, Up: Introduction + +2.4 Variables Make Makefiles Simpler +==================================== + +In our example, we had to list all the object files twice in the rule +for 'edit' (repeated here): + + edit : main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + cc -o edit main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + + Such duplication is error-prone; if a new object file is added to the +system, we might add it to one list and forget the other. We can +eliminate the risk and simplify the makefile by using a variable. +"Variables" allow a text string to be defined once and substituted in +multiple places later (*note How to Use Variables: Using Variables.). + + It is standard practice for every makefile to have a variable named +'objects', 'OBJECTS', 'objs', 'OBJS', 'obj', or 'OBJ' which is a list of +all object file names. We would define such a variable 'objects' with a +line like this in the makefile: + + objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + +Then, each place we want to put a list of the object file names, we can +substitute the variable's value by writing '$(objects)' (*note How to +Use Variables: Using Variables.). + + Here is how the complete simple makefile looks when you use a +variable for the object files: + + objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + + edit : $(objects) + cc -o edit $(objects) + main.o : main.c defs.h + cc -c main.c + kbd.o : kbd.c defs.h command.h + cc -c kbd.c + command.o : command.c defs.h command.h + cc -c command.c + display.o : display.c defs.h buffer.h + cc -c display.c + insert.o : insert.c defs.h buffer.h + cc -c insert.c + search.o : search.c defs.h buffer.h + cc -c search.c + files.o : files.c defs.h buffer.h command.h + cc -c files.c + utils.o : utils.c defs.h + cc -c utils.c + clean : + rm edit $(objects) + + +File: make.info, Node: make Deduces, Next: Combine By Prerequisite, Prev: Variables Simplify, Up: Introduction + +2.5 Letting 'make' Deduce the Recipes +===================================== + +It is not necessary to spell out the recipes for compiling the +individual C source files, because 'make' can figure them out: it has an +"implicit rule" for updating a '.o' file from a correspondingly named +'.c' file using a 'cc -c' command. For example, it will use the recipe +'cc -c main.c -o main.o' to compile 'main.c' into 'main.o'. We can +therefore omit the recipes from the rules for the object files. *Note +Using Implicit Rules: Implicit Rules. + + When a '.c' file is used automatically in this way, it is also +automatically added to the list of prerequisites. We can therefore omit +the '.c' files from the prerequisites, provided we omit the recipe. + + Here is the entire example, with both of these changes, and a +variable 'objects' as suggested above: + + objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + + edit : $(objects) + cc -o edit $(objects) + + main.o : defs.h + kbd.o : defs.h command.h + command.o : defs.h command.h + display.o : defs.h buffer.h + insert.o : defs.h buffer.h + search.o : defs.h buffer.h + files.o : defs.h buffer.h command.h + utils.o : defs.h + + .PHONY : clean + clean : + rm edit $(objects) + +This is how we would write the makefile in actual practice. (The +complications associated with 'clean' are described elsewhere. See +*note Phony Targets::, and *note Errors in Recipes: Errors.) + + Because implicit rules are so convenient, they are important. You +will see them used frequently. + + +File: make.info, Node: Combine By Prerequisite, Next: Cleanup, Prev: make Deduces, Up: Introduction + +2.6 Another Style of Makefile +============================= + +When the objects of a makefile are created only by implicit rules, an +alternative style of makefile is possible. In this style of makefile, +you group entries by their prerequisites instead of by their targets. +Here is what one looks like: + + objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + + edit : $(objects) + cc -o edit $(objects) + + $(objects) : defs.h + kbd.o command.o files.o : command.h + display.o insert.o search.o files.o : buffer.h + +Here 'defs.h' is given as a prerequisite of all the object files; +'command.h' and 'buffer.h' are prerequisites of the specific object +files listed for them. + + Whether this is better is a matter of taste: it is more compact, but +some people dislike it because they find it clearer to put all the +information about each target in one place. + + +File: make.info, Node: Cleanup, Prev: Combine By Prerequisite, Up: Introduction + +2.7 Rules for Cleaning the Directory +==================================== + +Compiling a program is not the only thing you might want to write rules +for. Makefiles commonly tell how to do a few other things besides +compiling a program: for example, how to delete all the object files and +executables so that the directory is 'clean'. + + Here is how we could write a 'make' rule for cleaning our example +editor: + + clean: + rm edit $(objects) + + In practice, we might want to write the rule in a somewhat more +complicated manner to handle unanticipated situations. We would do +this: + + .PHONY : clean + clean : + -rm edit $(objects) + +This prevents 'make' from getting confused by an actual file called +'clean' and causes it to continue in spite of errors from 'rm'. (See +*note Phony Targets::, and *note Errors in Recipes: Errors.) + +A rule such as this should not be placed at the beginning of the +makefile, because we do not want it to run by default! Thus, in the +example makefile, we want the rule for 'edit', which recompiles the +editor, to remain the default goal. + + Since 'clean' is not a prerequisite of 'edit', this rule will not run +at all if we give the command 'make' with no arguments. In order to +make the rule run, we have to type 'make clean'. *Note How to Run +'make': Running. + + +File: make.info, Node: Makefiles, Next: Rules, Prev: Introduction, Up: Top + +3 Writing Makefiles +******************* + +The information that tells 'make' how to recompile a system comes from +reading a data base called the "makefile". + +* Menu: + +* Makefile Contents:: What makefiles contain. +* Makefile Names:: How to name your makefile. +* Include:: How one makefile can use another makefile. +* MAKEFILES Variable:: The environment can specify extra makefiles. +* Remaking Makefiles:: How makefiles get remade. +* Overriding Makefiles:: How to override part of one makefile + with another makefile. +* Reading Makefiles:: How makefiles are read in. +* Parsing Makefiles:: How makefiles are parsed. +* Secondary Expansion:: How and when secondary expansion is performed. + + +File: make.info, Node: Makefile Contents, Next: Makefile Names, Prev: Makefiles, Up: Makefiles + +3.1 What Makefiles Contain +========================== + +Makefiles contain five kinds of things: "explicit rules", "implicit +rules", "variable definitions", "directives", and "comments". Rules, +variables, and directives are described at length in later chapters. + + * An "explicit rule" says when and how to remake one or more files, + called the rule's "targets". It lists the other files that the + targets depend on, called the "prerequisites" of the target, and + may also give a recipe to use to create or update the targets. + *Note Writing Rules: Rules. + + * An "implicit rule" says when and how to remake a class of files + based on their names. It describes how a target may depend on a + file with a name similar to the target and gives a recipe to create + or update such a target. *Note Using Implicit Rules: Implicit + Rules. + + * A "variable definition" is a line that specifies a text string + value for a variable that can be substituted into the text later. + The simple makefile example shows a variable definition for + 'objects' as a list of all object files (*note Variables Make + Makefiles Simpler: Variables Simplify.). + + * A "directive" is an instruction for 'make' to do something special + while reading the makefile. These include: + + * Reading another makefile (*note Including Other Makefiles: + Include.). + + * Deciding (based on the values of variables) whether to use or + ignore a part of the makefile (*note Conditional Parts of + Makefiles: Conditionals.). + + * Defining a variable from a verbatim string containing multiple + lines (*note Defining Multi-Line Variables: Multi-Line.). + + * '#' in a line of a makefile starts a "comment". It and the rest of + the line are ignored, except that a trailing backslash not escaped + by another backslash will continue the comment across multiple + lines. A line containing just a comment (with perhaps spaces + before it) is effectively blank, and is ignored. If you want a + literal '#', escape it with a backslash (e.g., '\#'). Comments may + appear on any line in the makefile, although they are treated + specially in certain situations. + + You cannot use comments within variable references or function + calls: any instance of '#' will be treated literally (rather than + as the start of a comment) inside a variable reference or function + call. + + Comments within a recipe are passed to the shell, just as with any + other recipe text. The shell decides how to interpret it: whether + or not this is a comment is up to the shell. + + Within a 'define' directive, comments are not ignored during the + definition of the variable, but rather kept intact in the value of + the variable. When the variable is expanded they will either be + treated as 'make' comments or as recipe text, depending on the + context in which the variable is evaluated. + +* Menu: + +* Splitting Lines:: Splitting long lines in makefiles + + +File: make.info, Node: Splitting Lines, Prev: Makefile Contents, Up: Makefile Contents + +3.1.1 Splitting Long Lines +-------------------------- + +Makefiles use a "line-based" syntax in which the newline character is +special and marks the end of a statement. GNU 'make' has no limit on +the length of a statement line, up to the amount of memory in your +computer. + + However, it is difficult to read lines which are too long to display +without wrapping or scrolling. So, you can format your makefiles for +readability by adding newlines into the middle of a statement: you do +this by escaping the internal newlines with a backslash ('\') character. +Where we need to make a distinction we will refer to "physical lines" as +a single line ending with a newline (regardless of whether it is +escaped) and a "logical line" being a complete statement including all +escaped newlines up to the first non-escaped newline. + + The way in which backslash/newline combinations are handled depends +on whether the statement is a recipe line or a non-recipe line. +Handling of backslash/newline in a recipe line is discussed later (*note +Splitting Recipe Lines::). + + Outside of recipe lines, backslash/newlines are converted into a +single space character. Once that is done, all whitespace around the +backslash/newline is condensed into a single space: this includes all +whitespace preceding the backslash, all whitespace at the beginning of +the line after the backslash/newline, and any consecutive +backslash/newline combinations. + + If the '.POSIX' special target is defined then backslash/newline +handling is modified slightly to conform to POSIX.2: first, whitespace +preceding a backslash is not removed and second, consecutive +backslash/newlines are not condensed. + +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, and newline: + + var := one$\ + word + + After 'make' removes the backslash/newline and condenses the +following line into a single space, this is equivalent to: + + var := one$ word + + Then 'make' will perform variable expansion. The variable reference +'$ ' refers to a variable with the one-character name " " (space) which +does not exist, and so expands to the empty string, giving a final +assignment which is the equivalent of: + + var := oneword + + +File: make.info, Node: Makefile Names, Next: Include, Prev: Makefile Contents, Up: Makefiles + +3.2 What Name to Give Your Makefile +=================================== + +By default, when 'make' looks for the makefile, it tries the following +names, in order: 'GNUmakefile', 'makefile' and 'Makefile'. + + Normally you should call your makefile either 'makefile' or +'Makefile'. (We recommend 'Makefile' because it appears prominently +near the beginning of a directory listing, right near other important +files such as 'README'.) The first name checked, 'GNUmakefile', is not +recommended for most makefiles. You should use this name if you have a +makefile that is specific to GNU 'make', and will not be understood by +other versions of 'make'. Other 'make' programs look for 'makefile' and +'Makefile', but not 'GNUmakefile'. + + If 'make' finds none of these names, it does not use any makefile. +Then you must specify a goal with a command argument, and 'make' will +attempt to figure out how to remake it using only its built-in implicit +rules. *Note Using Implicit Rules: Implicit Rules. + + If you want to use a nonstandard name for your makefile, you can +specify the makefile name with the '-f' or '--file' option. The +arguments '-f NAME' or '--file=NAME' tell 'make' to read the file NAME +as the makefile. If you use more than one '-f' or '--file' option, you +can specify several makefiles. All the makefiles are effectively +concatenated in the order specified. The default makefile names +'GNUmakefile', 'makefile' and 'Makefile' are not checked automatically +if you specify '-f' or '--file'. + + +File: make.info, Node: Include, Next: MAKEFILES Variable, Prev: Makefile Names, Up: Makefiles + +3.3 Including Other Makefiles +============================= + +The 'include' directive tells 'make' to suspend reading the current +makefile and read one or more other makefiles before continuing. The +directive is a line in the makefile that looks like this: + + include FILENAMES... + +FILENAMES can contain shell file name patterns. If FILENAMES is empty, +nothing is included and no error is printed. + + Extra spaces are allowed and ignored at the beginning of the line, +but the first character must not be a tab (or the value of +'.RECIPEPREFIX')--if the line begins with a tab, it will be considered a +recipe line. Whitespace is required between 'include' and the file +names, and between file names; extra whitespace is ignored there and at +the end of the directive. A comment starting with '#' is allowed at the +end of the line. If the file names contain any variable or function +references, they are expanded. *Note How to Use Variables: Using +Variables. + + For example, if you have three '.mk' files, 'a.mk', 'b.mk', and +'c.mk', and '$(bar)' expands to 'bish bash', then the following +expression + + include foo *.mk $(bar) + + is equivalent to + + include foo a.mk b.mk c.mk bish bash + + When 'make' processes an 'include' directive, it suspends reading of +the containing makefile and reads from each listed file in turn. When +that is finished, 'make' resumes reading the makefile in which the +directive appears. + + One occasion for using 'include' directives is when several programs, +handled by individual makefiles in various directories, need to use a +common set of variable definitions (*note Setting Variables: Setting.) +or pattern rules (*note Defining and Redefining Pattern Rules: Pattern +Rules.). + + Another such occasion is when you want to generate prerequisites from +source files automatically; the prerequisites can be put in a file that +is included by the main makefile. This practice is generally cleaner +than that of somehow appending the prerequisites to the end of the main +makefile as has been traditionally done with other versions of 'make'. +*Note Automatic Prerequisites::. + + 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' 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'. + + 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 +or cannot be remade, with no error message, use the '-include' directive +instead of 'include', like this: + + -include FILENAMES... + + This acts like 'include' in every way except that there is no error +(not even a warning) if any of the FILENAMES (or any prerequisites of +any of the FILENAMES) do not exist or cannot be remade. + + For compatibility with some other 'make' implementations, 'sinclude' +is another name for '-include'. + + ---------- Footnotes ---------- + + (1) GNU Make compiled for MS-DOS and MS-Windows behaves as if PREFIX +has been defined to be the root of the DJGPP tree hierarchy. + + +File: make.info, Node: MAKEFILES Variable, Next: Remaking Makefiles, Prev: Include, Up: Makefiles + +3.4 The Variable 'MAKEFILES' +============================ + +If the environment variable 'MAKEFILES' is defined, 'make' considers its +value as a list of names (separated by whitespace) of additional +makefiles to be read before the others. This works much like the +'include' directive: various directories are searched for those files +(*note Including Other Makefiles: Include.). 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 +'MAKEFILES' are not found. + + The main use of 'MAKEFILES' is in communication between recursive +invocations of 'make' (*note Recursive Use of 'make': Recursion.). It +usually is not desirable to set the environment variable before a +top-level invocation of 'make', because it is usually better not to mess +with a makefile from outside. However, if you are running 'make' +without a specific makefile, a makefile in 'MAKEFILES' can do useful +things to help the built-in implicit rules work better, such as defining +search paths (*note Directory Search::). + + Some users are tempted to set 'MAKEFILES' in the environment +automatically on login, and program makefiles to expect this to be done. +This is a very bad idea, because such makefiles will fail to work if run +by anyone else. It is much better to write explicit 'include' +directives in the makefiles. *Note Including Other Makefiles: Include. + + +File: make.info, Node: Remaking Makefiles, Next: Overriding Makefiles, Prev: MAKEFILES Variable, Up: Makefiles + +3.5 How Makefiles Are Remade +============================ + +Sometimes makefiles can be remade from other files, such as RCS or SCCS +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, 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, +perhaps for efficiency reasons, you can use any normal method 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 +(*note Using Empty Recipes: 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 (*note +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 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 +Give Your Makefile: Makefile Names. Unlike makefiles explicitly +requested with '-f' or '--file' options, 'make' is not certain that +these makefiles should exist. However, if a default makefile does not +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 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 +out-of-date makefile to decide which targets to touch. So the '-t' +option has no effect on updating makefiles; they are really updated even +if '-t' is specified. Likewise, '-q' (or '--question') and '-n' (or +'--just-print') do not prevent updating of makefiles, because an +out-of-date makefile would result in the wrong output for other targets. +Thus, 'make -f mfile -n foo' will update 'mfile', read it in, and then +print the recipe to update 'foo' and its prerequisites without running +it. The recipe printed for 'foo' will be the one specified in the +updated contents of 'mfile'. + + However, on occasion you might actually wish to prevent updating of +even the makefiles. You can do this by specifying the makefiles as +goals in the command line as well as specifying them as makefiles. When +the makefile name is specified explicitly as a goal, the options '-t' +and so on do apply to them. + + Thus, 'make -f mfile -n mfile foo' would read the makefile 'mfile', +print the recipe needed to update it without actually running it, and +then print the recipe needed to update 'foo' without running that. The +recipe for 'foo' will be the one specified by the existing contents of +'mfile'. + + +File: make.info, Node: Overriding Makefiles, Next: Reading Makefiles, Prev: Remaking Makefiles, Up: Makefiles + +3.6 Overriding Part of Another Makefile +======================================= + +Sometimes it is useful to have a makefile that is mostly just like +another makefile. You can often use the 'include' directive to include +one in the other, and add more targets or variable definitions. +However, it is invalid for two makefiles to give different recipes for +the same target. But there is another way. + + In the containing makefile (the one that wants to include the other), +you can use a match-anything pattern rule to say that to remake any +target that cannot be made from the information in the containing +makefile, 'make' should look in another makefile. *Note Pattern +Rules::, for more information on pattern rules. + + For example, if you have a makefile called 'Makefile' that says how +to make the target 'foo' (and other targets), you can write a makefile +called 'GNUmakefile' that contains: + + foo: + frobnicate > foo + + %: force + @$(MAKE) -f Makefile $@ + force: ; + + If you say 'make foo', 'make' will find 'GNUmakefile', read it, and +see that to make 'foo', it needs to run the recipe 'frobnicate > foo'. +If you say 'make bar', 'make' will find no way to make 'bar' in +'GNUmakefile', so it will use the recipe from the pattern rule: 'make -f +Makefile bar'. If 'Makefile' provides a rule for updating 'bar', 'make' +will apply the rule. And likewise for any other target that +'GNUmakefile' does not say how to make. + + The way this works is that the pattern rule has a pattern of just +'%', so it matches any target whatever. The rule specifies a +prerequisite 'force', to guarantee that the recipe will be run even if +the target file already exists. We give the 'force' target an empty +recipe to prevent 'make' from searching for an implicit rule to build +it--otherwise it would apply the same match-anything rule to 'force' +itself and create a prerequisite loop! + + +File: make.info, Node: Reading Makefiles, Next: Parsing Makefiles, Prev: Overriding Makefiles, Up: Makefiles + +3.7 How 'make' Reads a Makefile +=============================== + +GNU 'make' does its work in two distinct phases. During the first phase +it reads all the makefiles, included makefiles, etc. and internalizes +all the variables and their values and implicit and explicit rules, and +builds a dependency graph of all the targets and their prerequisites. +During the second phase, 'make' uses this internalized data to determine +which targets need to be updated and run the recipes necessary to update +them. + + It's important to understand this two-phase approach because it has a +direct impact on how variable and function expansion happens; this is +often a source of some confusion when writing makefiles. Below is a +summary of the different constructs that can be found in a makefile, and +the phase in which expansion happens for each part of the construct. + + We say that expansion is "immediate" if it happens during the first +phase: 'make' will expand that part of the construct as the makefile is +parsed. We say that expansion is "deferred" if it is not immediate. +Expansion of a deferred construct part is delayed until the expansion is +used: either when it is referenced in an immediate context, or when it +is needed during the second phase. + + You may not be familiar with some of these constructs yet. You can +reference this section as you become familiar with them, in later +chapters. + +Variable Assignment +------------------- + +Variable definitions are parsed as follows: + + IMMEDIATE = DEFERRED + IMMEDIATE ?= DEFERRED + IMMEDIATE := IMMEDIATE + IMMEDIATE ::= IMMEDIATE + IMMEDIATE :::= IMMEDIATE-WITH-ESCAPE + IMMEDIATE += DEFERRED or IMMEDIATE + IMMEDIATE != IMMEDIATE + + define IMMEDIATE + DEFERRED + endef + + define IMMEDIATE = + DEFERRED + endef + + define IMMEDIATE ?= + DEFERRED + endef + + define IMMEDIATE := + IMMEDIATE + endef + + define IMMEDIATE ::= + IMMEDIATE + endef + + define IMMEDIATE :::= + IMMEDIATE-WITH-ESCAPE + endef + + define IMMEDIATE += + DEFERRED or IMMEDIATE + endef + + define IMMEDIATE != + IMMEDIATE + endef + + For the append operator '+=', the right-hand side is considered +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 is considered a +recursively expanded variable (and will thus be re-evaluated on each +reference). + +Conditional Directives +---------------------- + +Conditional directives are parsed immediately. This means, for example, +that automatic variables cannot be used in conditional directives, as +automatic variables are not set until the recipe for that rule is +invoked. If you need to use automatic variables in a conditional +directive you _must_ move the condition into the recipe and use shell +conditional syntax instead. + +Rule Definition +--------------- + +A rule is always expanded the same way, regardless of the form: + + IMMEDIATE : IMMEDIATE ; DEFERRED + DEFERRED + + That is, the target and prerequisite sections are expanded +immediately, and the recipe used to build the target is always deferred. +This is true for explicit rules, pattern rules, suffix rules, static +pattern rules, and simple prerequisite definitions. + + +File: make.info, Node: Parsing Makefiles, Next: Secondary Expansion, Prev: Reading Makefiles, Up: Makefiles + +3.8 How Makefiles Are Parsed +============================ + +GNU 'make' parses makefiles line-by-line. Parsing proceeds using the +following steps: + + 1. Read in a full logical line, including backslash-escaped lines + (*note Splitting Long Lines: Splitting Lines.). + + 2. Remove comments (*note What Makefiles Contain: Makefile Contents.). + + 3. If the line begins with the recipe prefix character and we are in a + rule context, add the line to the current recipe and read the next + line (*note Recipe Syntax::). + + 4. Expand elements of the line which appear in an _immediate_ + expansion context (*note How 'make' Reads a Makefile: Reading + Makefiles.). + + 5. Scan the line for a separator character, such as ':' or '=', to + determine whether the line is a macro assignment or a rule (*note + Recipe Syntax::). + + 6. Internalize the resulting operation and read the next line. + + An important consequence of this is that a macro can expand to an +entire rule, _if it is one line long_. This will work: + + myrule = target : ; echo built + + $(myrule) + + However, this will not work because 'make' does not re-split lines +after it has expanded them: + + define myrule + target: + echo built + endef + + $(myrule) + + The above makefile results in the definition of a target 'target' +with prerequisites 'echo' and 'built', as if the makefile contained +'target: echo built', rather than a rule with a recipe. Newlines still +present in a line after expansion is complete are ignored as normal +whitespace. + + In order to properly expand a multi-line macro you must use the +'eval' function: this causes the 'make' parser to be run on the results +of the expanded macro (*note Eval Function::). + + +File: make.info, Node: Secondary Expansion, Prev: Parsing Makefiles, Up: Makefiles + +3.9 Secondary Expansion +======================= + +Previously we learned that GNU 'make' works in two distinct phases: a +read-in phase and a target-update phase (*note How 'make' Reads a +Makefile: Reading Makefiles.). GNU make also has the ability to enable +a _second expansion_ of the prerequisites (only) for some or all targets +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 '.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 + TWOVAR = twofile + myfile: $(ONEVAR) $$(TWOVAR) + + After the first expansion phase the prerequisites list of the +'myfile' target will be 'onefile' and '$(TWOVAR)'; the first (unescaped) +variable reference to ONEVAR is expanded, while the second (escaped) +variable reference is simply unescaped, without being recognized as a +variable reference. Now during the secondary expansion the first word +is expanded again but since it contains no variable or function +references it remains the value 'onefile', while the second word is now +a normal reference to the variable TWOVAR, which is expanded to the +value 'twofile'. The final result is that there are two prerequisites, +'onefile' and 'twofile'. + + Obviously, this is not a very interesting case since the same result +could more easily have been achieved simply by having both variables +appear, unescaped, in the prerequisites list. One difference becomes +apparent if the variables are reset; consider this example: + + .SECONDEXPANSION: + AVAR = top + onefile: $(AVAR) + twofile: $$(AVAR) + AVAR = bottom + + Here the prerequisite of 'onefile' will be expanded immediately, and +resolve to the value 'top', while the prerequisite of 'twofile' will not +be full expanded until the secondary expansion and yield a value of +'bottom'. + + This is marginally more exciting, but the true power of this feature +only becomes apparent when you discover that secondary expansions always +take place within the scope of the automatic variables for that target. +This means that you can use variables such as '$@', '$*', etc. during +the second expansion and they will have their expected values, just as +in the recipe. All you have to do is defer the expansion by escaping +the '$'. Also, secondary expansion occurs for both explicit and +implicit (pattern) rules. Knowing this, the possible uses for this +feature increase dramatically. For example: + + .SECONDEXPANSION: + main_OBJS := main.o try.o test.o + lib_OBJS := lib.o api.o + + main lib: $$($$@_OBJS) + + Here, after the initial expansion the prerequisites of both the +'main' and 'lib' targets will be '$($@_OBJS)'. During the secondary +expansion, the '$@' variable is set to the name of the target and so the +expansion for the 'main' target will yield '$(main_OBJS)', or 'main.o +try.o test.o', while the secondary expansion for the 'lib' target will +yield '$(lib_OBJS)', or 'lib.o api.o'. + + You can also mix in functions here, as long as they are properly +escaped: + + main_SRCS := main.c try.c test.c + lib_SRCS := lib.c api.c + + .SECONDEXPANSION: + main lib: $$(patsubst %.c,%.o,$$($$@_SRCS)) + + This version allows users to specify source files rather than object +files, but gives the same resulting prerequisites list as the previous +example. + + Evaluation of automatic variables during the secondary expansion +phase, especially of the target name variable '$$@', behaves similarly +to evaluation within recipes. However, there are some subtle +differences and "corner cases" which come into play for the different +types of rule definitions that 'make' understands. The subtleties of +using the different automatic variables are described below. + +Secondary Expansion of Explicit Rules +------------------------------------- + +During the secondary expansion of explicit rules, '$$@' and '$$%' +evaluate, respectively, to the file name of the target and, when the +target is an archive member, the target member name. The '$$<' variable +evaluates to the first prerequisite in the first rule for this target. +'$$^' and '$$+' evaluate to the list of all prerequisites of rules _that +have already appeared_ for the same target ('$$+' with repetitions and +'$$^' without). The following example will help illustrate these +behaviors: + + .SECONDEXPANSION: + + foo: foo.1 bar.1 $$< $$^ $$+ # line #1 + + foo: foo.2 bar.2 $$< $$^ $$+ # line #2 + + foo: foo.3 bar.3 $$< $$^ $$+ # line #3 + + In the first prerequisite list, all three variables ('$$<', '$$^', +and '$$+') expand to the empty string. In the second, they will have +values 'foo.1', 'foo.1 bar.1', and 'foo.1 bar.1' respectively. In the +third they will have values 'foo.1', 'foo.1 bar.1 foo.2 bar.2', and +'foo.1 bar.1 foo.2 bar.2 foo.1 foo.1 bar.1 foo.1 bar.1' respectively. + + Rules undergo secondary expansion in makefile order, except that the +rule with the recipe is always evaluated last. + + The variables '$$?' and '$$*' are not available and expand to the +empty string. + +Secondary Expansion of Static Pattern Rules +------------------------------------------- + +Rules for secondary expansion of static pattern rules are identical to +those for explicit rules, above, with one exception: for static pattern +rules the '$$*' variable is set to the pattern stem. As with explicit +rules, '$$?' is not available and expands to the empty string. + +Secondary Expansion of Implicit Rules +------------------------------------- + +As 'make' searches for an implicit rule, it substitutes the stem and +then performs secondary expansion for every rule with a matching target +pattern. The value of the automatic variables is derived in the same +fashion as for static pattern rules. As an example: + + .SECONDEXPANSION: + + foo: bar + + foo foz: fo%: bo% + + %oo: $$< $$^ $$+ $$* + + When the implicit rule is tried for target 'foo', '$$<' expands to +'bar', '$$^' expands to 'bar boo', '$$+' also expands to 'bar boo', and +'$$*' expands to 'f'. + + Note that the directory prefix (D), as described in *note Implicit +Rule Search Algorithm: Implicit Rule Search, is appended (after +expansion) to all the patterns in the prerequisites list. As an +example: + + .SECONDEXPANSION: + + /tmp/foo.o: + + %.o: $$(addsuffix /%.c,foo bar) foo.h + @echo $^ + + The prerequisite list printed, after the secondary expansion and +directory prefix reconstruction, will be '/tmp/foo/foo.c /tmp/bar/foo.c +foo.h'. If you are not interested in this reconstruction, you can use +'$$*' instead of '%' in the prerequisites list. + + +File: make.info, Node: Rules, Next: Recipes, Prev: Makefiles, Up: Top + +4 Writing Rules +*************** + +A "rule" appears in the makefile and says when and how to remake certain +files, called the rule's "targets" (most often only one per rule). It +lists the other files that are the "prerequisites" of the target, and +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 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 +by the makefile (often with a target called 'all'). *Note Arguments to +Specify the Goals: Goals. + +* Menu: + +* Rule Example:: An example explained. +* Rule Syntax:: General syntax explained. +* Prerequisite Types:: There are two types of prerequisites. +* Wildcards:: Using wildcard characters such as '*'. +* Directory Search:: Searching other directories for source files. +* Phony Targets:: Using a target that is not a real file's name. +* Force Targets:: You can use a target without a recipe + or prerequisites to mark other targets + as phony. +* Empty Targets:: When only the date matters and the + files are empty. +* Special Targets:: Targets with special built-in meanings. +* Multiple Targets:: When to make use of several targets in a rule. +* Multiple Rules:: How to use several rules with the same target. +* Static Pattern:: Static pattern rules apply to multiple targets + and can vary the prerequisites according to + the target name. +* Double-Colon:: How to use a special kind of rule to allow + several independent rules for one target. +* Automatic Prerequisites:: How to automatically generate rules giving + prerequisites from source files themselves. + + +File: make.info, Node: Rule Example, Next: Rule Syntax, Prev: Rules, Up: Rules + +4.1 Rule Example +================ + +Here is an example of a rule: + + foo.o : foo.c defs.h # module for twiddling the frobs + cc -c -g foo.c + + Its target is 'foo.o' and its prerequisites are 'foo.c' and 'defs.h'. +It has one command in the recipe: 'cc -c -g foo.c'. The recipe starts +with a tab to identify it as a recipe. + + This rule says two things: + + * How to decide whether 'foo.o' is out of date: it is out of date if + it does not exist, or if either 'foo.c' or 'defs.h' is more recent + than it. + + * How to update the file 'foo.o': by running 'cc' as stated. The + recipe does not explicitly mention 'defs.h', but we presume that + 'foo.c' includes it, and that is why 'defs.h' was added to the + prerequisites. + + +File: make.info, Node: Rule Syntax, Next: Prerequisite Types, Prev: Rule Example, Up: Rules + +4.2 Rule Syntax +=============== + +In general, a rule looks like this: + + TARGETS : PREREQUISITES + RECIPE + ... + +or like this: + + TARGETS : PREREQUISITES ; RECIPE + RECIPE + ... + + The TARGETS are file names, separated by spaces. Wildcard characters +may be used (*note Using Wildcard Characters in File Names: Wildcards.) +and a name of the form 'A(M)' represents member M in archive file A +(*note Archive Members as Targets: Archive Members.). Usually there is +only one target per rule, but occasionally there is a reason to have +more (*note Multiple Targets in a Rule: Multiple Targets.). + + The RECIPE lines start with a tab character (or the first character +in the value of the '.RECIPEPREFIX' variable; *note Special +Variables::). The first recipe line may appear on the line after the +prerequisites, with a tab character, or may appear on the same line, +with a semicolon. Either way, the effect is the same. There are other +differences in the syntax of recipes. *Note Writing Recipes in Rules: +Recipes. + + Because dollar signs are used to start 'make' variable references, if +you really want a dollar sign in a target or prerequisite you must write +two of them, '$$' (*note How to Use Variables: Using Variables.). If +you have enabled secondary expansion (*note Secondary Expansion::) and +you want a literal dollar sign in the prerequisites list, you must +actually write _four_ dollar signs ('$$$$'). + + You may split a long line by inserting a backslash followed by a +newline, but this is not required, as 'make' places no limit on the +length of a line in a makefile. + + A rule tells 'make' two things: when the targets are out of date, and +how to update them when necessary. + + The criterion for being out of date is specified in terms of the +PREREQUISITES, which consist of file names separated by spaces. +(Wildcards and archive members (*note Archives::) are allowed here too.) +A target is out of date if it does not exist or if it is older than any +of the prerequisites (by comparison of last-modification times). The +idea is that the contents of the target file are computed based on +information in the prerequisites, so if any of the prerequisites +changes, the contents of the existing target file are no longer +necessarily valid. + + How to update is specified by a RECIPE. This is one or more lines to +be executed by the shell (normally 'sh'), but with some extra features +(*note Writing Recipes in Rules: Recipes.). + + +File: make.info, Node: Prerequisite Types, Next: Wildcards, Prev: Rule Syntax, Up: Rules + +4.3 Types of Prerequisites +========================== + +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 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 + + The normal prerequisites section may of course be empty. Also, you +may still declare multiple lines of prerequisites for the same target: +they are appended appropriately (normal prerequisites are appended to +the list of normal prerequisites; order-only prerequisites are appended +to the list of order-only prerequisites). Note that if you 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 +(*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 +are placed into it but, because the timestamps on directories change +whenever a file is added, removed, or renamed, we certainly don't want +to rebuild all the targets whenever the directory's timestamp changes. +One way to manage this is with order-only prerequisites: make the +directory an order-only prerequisite on all the targets: + + OBJDIR := objdir + OBJS := $(addprefix $(OBJDIR)/,foo.o bar.o baz.o) + + $(OBJDIR)/%.o : %.c + $(COMPILE.c) $(OUTPUT_OPTION) $< + + all: $(OBJS) + + $(OBJS): | $(OBJDIR) + + $(OBJDIR): + mkdir $(OBJDIR) + + Now the rule to create the 'objdir' directory will be run, if needed, +before any '.o' is built, but no '.o' will be built because the 'objdir' +directory timestamp changed. + + +File: make.info, Node: Wildcards, Next: Directory Search, Prev: Prerequisite Types, Up: Rules + +4.4 Using Wildcard Characters in File Names +=========================================== + +A single file name can specify many files using "wildcard characters". +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 '~' +is followed by a word, the string represents the home directory of the +user named by that word. For example '~john/bin' expands to +'/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 HOME. + + Wildcard expansion is performed by 'make' automatically in targets +and in prerequisites. In recipes, the shell is responsible for wildcard +expansion. In other contexts, wildcard expansion happens only if you +request it explicitly with the 'wildcard' function. + + The special significance of a wildcard character can be turned off by +preceding it with a backslash. Thus, 'foo\*bar' would refer to a +specific file whose name consists of 'foo', an asterisk, and 'bar'. + +* Menu: + +* Wildcard Examples:: Several examples. +* Wildcard Pitfall:: Problems to avoid. +* 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 + +4.4.1 Wildcard Examples +----------------------- + +Wildcards can be used in the recipe of a rule, where they are expanded +by the shell. For example, here is a rule to delete all the object +files: + + clean: + rm -f *.o + + Wildcards are also useful in the prerequisites of a rule. With the +following rule in the makefile, 'make print' will print all the '.c' +files that have changed since the last time you printed them: + + print: *.c + lpr -p $? + touch print + +This rule uses 'print' as an empty target file; see *note Empty Target +Files to Record Events: Empty Targets. (The automatic variable '$?' is +used to print only those files that have changed; see *note Automatic +Variables::.) + + Wildcard expansion does not happen when you define a variable. Thus, +if you write this: + + objects = *.o + +then the value of the variable 'objects' is the actual string '*.o'. +However, if you use the value of 'objects' in a target or prerequisite, +wildcard expansion will take place there. If you use the value of +'objects' in a recipe, the shell may perform wildcard expansion when the +recipe runs. To set 'objects' to the expansion, instead use: + + objects := $(wildcard *.o) + +*Note Wildcard Function::. + + +File: make.info, Node: Wildcard Pitfall, Next: Wildcard Function, Prev: Wildcard Examples, Up: Wildcards + +4.4.2 Pitfalls of Using Wildcards +--------------------------------- + +Now here is an example of a naive way of using wildcard expansion, that +does not do what you would intend. Suppose you would like to say that +the executable file 'foo' is made from all the object files in the +directory, and you write this: + + objects = *.o + + foo : $(objects) + cc -o foo $(CFLAGS) $(objects) + +The value of 'objects' is the actual string '*.o'. Wildcard expansion +happens in the rule for 'foo', so that each _existing_ '.o' file becomes +a prerequisite of 'foo' and will be recompiled if necessary. + + But what if you delete all the '.o' files? When a wildcard matches +no files, it is left as it is, so then 'foo' will depend on the +oddly-named file '*.o'. Since no such file is likely to exist, 'make' +will give you an error saying it cannot figure out how to make '*.o'. +This is not what you want! + + Actually it is possible to obtain the desired result with wildcard +expansion, but you need more sophisticated techniques, including the +'wildcard' function and string substitution. *Note The Function +'wildcard': Wildcard Function. + + Microsoft operating systems (MS-DOS and MS-Windows) use backslashes +to separate directories in pathnames, like so: + + c:\foo\bar\baz.c + + This is equivalent to the Unix-style 'c:/foo/bar/baz.c' (the 'c:' +part is the so-called drive letter). When 'make' runs on these systems, +it supports backslashes as well as the Unix-style forward slashes in +pathnames. However, this support does _not_ include the wildcard +expansion, where backslash is a quote character. Therefore, you _must_ +use Unix-style slashes in these cases. + + +File: make.info, Node: Wildcard Function, Prev: Wildcard Pitfall, Up: Wildcards + +4.4.3 The Function 'wildcard' +----------------------------- + +Wildcard expansion happens automatically in rules. But wildcard +expansion does not normally take place when a variable is set, or inside +the arguments of a function. If you want to do wildcard expansion in +such places, you need to use the 'wildcard' function, like this: + + $(wildcard PATTERN...) + +This string, used anywhere in a makefile, is replaced by a +space-separated list of names of existing files that match one of the +given file name patterns. If no existing file name matches a pattern, +then that pattern is omitted from the output of the 'wildcard' function. +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: + + $(wildcard *.c) + + We can change the list of C source files into a list of object files +by replacing the '.c' suffix with '.o' in the result, like this: + + $(patsubst %.c,%.o,$(wildcard *.c)) + +(Here we have used another function, 'patsubst'. *Note Functions for +String Substitution and Analysis: Text Functions.) + + Thus, a makefile to compile all C source files in the directory and +then link them together could be written as follows: + + objects := $(patsubst %.c,%.o,$(wildcard *.c)) + + foo : $(objects) + cc -o foo $(objects) + +(This takes advantage of the implicit rule for compiling C programs, so +there is no need to write explicit rules for compiling the files. *Note +The Two Flavors of Variables: Flavors, for an explanation of ':=', which +is a variant of '='.) + + +File: make.info, Node: Directory Search, Next: Phony Targets, Prev: Wildcards, Up: Rules + +4.5 Searching Directories for Prerequisites +=========================================== + +For large systems, it is often desirable to put sources in a separate +directory from the binaries. The "directory search" features of 'make' +facilitate this by searching several directories automatically to find a +prerequisite. When you redistribute the files among directories, you do +not need to change the individual rules, just the search paths. + +* Menu: + +* General Search:: Specifying a search path that applies + to every prerequisite. +* Selective Search:: Specifying a search path + for a specified class of names. +* Search Algorithm:: When and how search paths are applied. +* Recipes/Search:: How to write recipes that work together + with search paths. +* Implicit/Search:: How search paths affect implicit rules. +* Libraries/Search:: Directory search for link libraries. + + +File: make.info, Node: General Search, Next: Selective Search, Prev: Directory Search, Up: Directory Search + +4.5.1 'VPATH': Search Path for All Prerequisites +------------------------------------------------ + +The value of the 'make' variable 'VPATH' specifies a list of directories +that 'make' should search. Most often, the directories are expected to +contain prerequisite files that are not in the current directory; +however, 'make' uses 'VPATH' as a search list for both prerequisites and +targets of rules. + + Thus, if a file that is listed as a target or prerequisite does not +exist in the current directory, 'make' searches the directories listed +in 'VPATH' for a file with that name. If a file is found in one of +them, that file may become the prerequisite (see below). Rules may then +specify the names of files in the prerequisite list as if they all +existed in the current directory. *Note Writing Recipes with Directory +Search: Recipes/Search. + + In the 'VPATH' variable, directory names are separated by colons or +blanks. The order in which directories are listed is the order followed +by 'make' in its search. (On MS-DOS and MS-Windows, semi-colons are +used as separators of directory names in 'VPATH', since the colon can be +used in the pathname itself, after the drive letter.) + + For example, + + VPATH = src:../headers + +specifies a path containing two directories, 'src' and '../headers', +which 'make' searches in that order. + + With this value of 'VPATH', the following rule, + + foo.o : foo.c + +is interpreted as if it were written like this: + + foo.o : src/foo.c + +assuming the file 'foo.c' does not exist in the current directory but is +found in the directory 'src'. + + +File: make.info, Node: Selective Search, Next: Search Algorithm, Prev: General Search, Up: Directory Search + +4.5.2 The 'vpath' Directive +--------------------------- + +Similar to the 'VPATH' variable, but more selective, is the 'vpath' +directive (note lower case), which allows you to specify a search path +for a particular class of file names: those that match a particular +pattern. Thus you can supply certain search directories for one class +of file names and other directories (or none) for other file names. + + There are three forms of the 'vpath' directive: + +'vpath PATTERN DIRECTORIES' + Specify the search path DIRECTORIES for file names that match + PATTERN. + + The search path, DIRECTORIES, is a list of directories to be + searched, separated by colons (semi-colons on MS-DOS and + MS-Windows) or blanks, just like the search path used in the + 'VPATH' variable. + +'vpath PATTERN' + Clear out the search path associated with PATTERN. + +'vpath' + + Clear all search paths previously specified with 'vpath' + directives. + + A 'vpath' pattern is a string containing a '%' character. The string +must match the file name of a prerequisite that is being searched for, +the '%' character matching any sequence of zero or more characters (as +in pattern rules; *note Defining and Redefining Pattern Rules: Pattern +Rules.). For example, '%.h' matches files that end in '.h'. (If there +is no '%', the pattern must match the prerequisite exactly, which is not +useful very often.) + + '%' characters in a 'vpath' directive's pattern can be quoted with +preceding backslashes ('\'). Backslashes that would otherwise quote '%' +characters can be quoted with more backslashes. Backslashes that quote +'%' characters or other backslashes are removed from the pattern before +it is compared to file names. Backslashes that are not in danger of +quoting '%' characters go unmolested. + + When a prerequisite fails to exist in the current directory, if the +PATTERN in a 'vpath' directive matches the name of the prerequisite +file, then the DIRECTORIES in that directive are searched just like (and +before) the directories in the 'VPATH' variable. + + For example, + + vpath %.h ../headers + +tells 'make' to look for any prerequisite whose name ends in '.h' in the +directory '../headers' if the file is not found in the current +directory. + + If several 'vpath' patterns match the prerequisite file's name, then +'make' processes each matching 'vpath' directive one by one, searching +all the directories mentioned in each directive. 'make' handles +multiple 'vpath' directives in the order in which they appear in the +makefile; multiple directives with the same pattern are independent of +each other. + + Thus, + + vpath %.c foo + vpath % blish + vpath %.c bar + +will look for a file ending in '.c' in 'foo', then 'blish', then 'bar', +while + + vpath %.c foo:bar + vpath % blish + +will look for a file ending in '.c' in 'foo', then 'bar', then 'blish'. + + +File: make.info, Node: Search Algorithm, Next: Recipes/Search, Prev: Selective Search, Up: Directory Search + +4.5.3 How Directory Searches are Performed +------------------------------------------ + +When a prerequisite is found through directory search, regardless of +type (general or selective), the pathname located may not be the one +that 'make' actually provides you in the prerequisite list. Sometimes +the path discovered through directory search is thrown away. + + The algorithm 'make' uses to decide whether to keep or abandon a path +found via directory search is as follows: + + 1. If a target file does not exist at the path specified in the + makefile, directory search is performed. + + 2. If the directory search is successful, that path is kept and this + file is tentatively stored as the target. + + 3. All prerequisites of this target are examined using this same + method. + + 4. After processing the prerequisites, the target may or may not need + to be rebuilt: + + a. If the target does _not_ need to be rebuilt, the path to the + file found during directory search is used for any + prerequisite lists which contain this target. In short, if + 'make' doesn't need to rebuild the target then you use the + path found via directory search. + + b. If the target _does_ need to be rebuilt (is out-of-date), the + pathname found during directory search is _thrown away_, and + the target is rebuilt using the file name specified in the + makefile. In short, if 'make' must rebuild, then the target + is rebuilt locally, not in the directory found via directory + search. + + This algorithm may seem complex, but in practice it is quite often +exactly what you want. + + Other versions of 'make' use a simpler algorithm: if the file does +not exist, and it is found via directory search, then that pathname is +always used whether or not the target needs to be built. Thus, if the +target is rebuilt it is created at the pathname discovered during +directory search. + + If, in fact, this is the behavior you want for some or all of your +directories, you can use the 'GPATH' variable to indicate this to +'make'. + + 'GPATH' has the same syntax and format as 'VPATH' (that is, a space- +or colon-delimited list of pathnames). If an out-of-date target is +found by directory search in a directory that also appears in 'GPATH', +then that pathname is not thrown away. The target is rebuilt using the +expanded path. + + +File: make.info, Node: Recipes/Search, Next: Implicit/Search, Prev: Search Algorithm, Up: Directory Search + +4.5.4 Writing Recipes with Directory Search +------------------------------------------- + +When a prerequisite is found in another directory through directory +search, this cannot change the recipe of the rule; they will execute as +written. Therefore, you must write the recipe with care so that it will +look for the prerequisite in the directory where 'make' finds it. + + This is done with the "automatic variables" such as '$^' (*note +Automatic Variables::). For instance, the value of '$^' 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 '$@' is the +target. Thus: + + foo.o : foo.c + cc -c $(CFLAGS) $^ -o $@ + +(The variable 'CFLAGS' exists so you can specify flags for C compilation +by implicit rules; we use it here for consistency so it will affect all +C compilations uniformly; *note Variables Used by Implicit Rules: +Implicit Variables.) + + Often the prerequisites include header files as well, which you do +not want to mention in the recipe. The automatic variable '$<' is just +the first prerequisite: + + VPATH = src:../headers + foo.o : foo.c defs.h hack.h + cc -c $(CFLAGS) $< -o $@ + + +File: make.info, Node: Implicit/Search, Next: Libraries/Search, Prev: Recipes/Search, Up: Directory Search + +4.5.5 Directory Search and Implicit Rules +----------------------------------------- + +The search through the directories specified in 'VPATH' or with 'vpath' +also happens during consideration of implicit rules (*note Using +Implicit Rules: Implicit Rules.). + + For example, when a file 'foo.o' has no explicit rule, 'make' +considers implicit rules, such as the built-in rule to compile 'foo.c' +if that file exists. If such a file is lacking in the current +directory, the appropriate directories are searched for it. If 'foo.c' +exists (or is mentioned in the makefile) in any of the directories, the +implicit rule for C compilation is applied. + + The recipes of implicit rules normally use automatic variables as a +matter of necessity; consequently they will use the file names found by +directory search with no extra effort. + + +File: make.info, Node: Libraries/Search, Prev: Implicit/Search, Up: Directory Search + +4.5.6 Directory Search for Link Libraries +----------------------------------------- + +Directory search applies in a special way to libraries used with the +linker. This special feature comes into play when you write a +prerequisite whose name is of the form '-lNAME'. (You can tell +something strange is going on here because the prerequisite is normally +the name of a file, and the _file name_ of a library generally looks +like 'libNAME.a', not like '-lNAME'.) + + When a prerequisite's name has the form '-lNAME', 'make' handles it +specially by searching for the file 'libNAME.so', and, if it is not +found, for the file 'libNAME.a' in the current directory, in directories +specified by matching 'vpath' search paths and the 'VPATH' search path, +and then in the directories '/lib', '/usr/lib', and 'PREFIX/lib' +(normally '/usr/local/lib', but MS-DOS/MS-Windows versions of 'make' +behave as if PREFIX is defined to be the root of the DJGPP installation +tree). + + For example, if there is a '/usr/lib/libcurses.a' library on your +system (and no '/usr/lib/libcurses.so' file), then + + foo : foo.c -lcurses + cc $^ -o $@ + +would cause the command 'cc foo.c /usr/lib/libcurses.a -o foo' to be +executed when 'foo' is older than 'foo.c' or than +'/usr/lib/libcurses.a'. + + Although the default set of files to be searched for is 'libNAME.so' +and 'libNAME.a', this is customizable via the '.LIBPATTERNS' variable. +Each word in the value of this variable is a pattern string. When a +prerequisite like '-lNAME' is seen, 'make' will replace the percent in +each pattern in the list with NAME and perform the above directory +searches using each library file name. + + The default value for '.LIBPATTERNS' is 'lib%.so lib%.a', which +provides the default behavior described above. + + You can turn off link library expansion completely by setting this +variable to an empty value. + + +File: make.info, Node: Phony Targets, Next: Force Targets, Prev: Directory Search, Up: Rules + +4.6 Phony Targets +================= + +A phony target is one that is not really the name of a file; rather it +is just a name for a recipe to be executed when you make an explicit +request. There are two reasons to use a phony target: to avoid a +conflict with a file of the same name, and to improve performance. + + If you write a rule whose recipe will not create the target file, the +recipe will be executed every time the target comes up for remaking. +Here is an example: + + clean: + rm *.o temp + +Because the 'rm' command does not create a file named 'clean', probably +no such file will ever exist. Therefore, the 'rm' command will be +executed every time you say 'make clean'. + + In this example, the 'clean' target will not work properly if a file +named 'clean' is ever created in this directory. Since it has no +prerequisites, 'clean' would always be considered up to date and its +recipe would not be executed. To avoid this problem you can explicitly +declare the target to be phony by making it a prerequisite of the +special target '.PHONY' (*note Special Built-in Target Names: Special +Targets.) as follows: + + .PHONY: clean + clean: + rm *.o temp + +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 +number of sub-directories to be built. A simplistic way to handle this +is to define one rule with a recipe that loops over the sub-directories, +like this: + + SUBDIRS = foo bar baz + + subdirs: + for dir in $(SUBDIRS); do \ + $(MAKE) -C $$dir; \ + done + + 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 'make' is invoked with the '-k' option, which is +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. 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 +built) you can remove these problems: + + SUBDIRS = foo bar baz + + .PHONY: subdirs $(SUBDIRS) + + subdirs: $(SUBDIRS) + + $(SUBDIRS): + $(MAKE) -C $@ + + foo: baz + + Here we've also declared that the 'foo' sub-directory cannot be built +until after the 'baz' sub-directory is complete; this kind of +relationship declaration is particularly important when attempting +parallel builds. + + The implicit rule search (*note Implicit Rules::) is skipped for +'.PHONY' targets. This is why declaring a target as '.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 '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 +in one makefile './Makefile'. Since the target remade by default will +be the first one in the makefile, it is common to make this a phony +target named 'all' and give it, as prerequisites, all the individual +programs. For example: + + all : prog1 prog2 prog3 + .PHONY : all + + prog1 : prog1.o utils.o + cc -o prog1 prog1.o utils.o + + prog2 : prog2.o + cc -o prog2 prog2.o + + prog3 : prog3.o sort.o utils.o + cc -o prog3 prog3.o sort.o utils.o + +Now you can say just 'make' to remake all three programs, or specify as +arguments the ones to remake (as in 'make prog1 prog3'). Phoniness is +not inherited: the prerequisites of a phony target are not themselves +phony, unless explicitly declared to be so. + + When one phony target is a prerequisite of another, it serves as a +subroutine of the other. For example, here 'make cleanall' will delete +the object files, the difference files, and the file 'program': + + .PHONY: cleanall cleanobj cleandiff + + cleanall : cleanobj cleandiff + rm program + + cleanobj : + rm *.o + + cleandiff : + rm *.diff + + +File: make.info, Node: Force Targets, Next: Empty Targets, Prev: Phony Targets, Up: Rules + +4.7 Rules without Recipes or Prerequisites +========================================== + +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. This implies that all targets +depending on this one will always have their recipe run. + + An example will illustrate this: + + clean: FORCE + rm $(objects) + FORCE: + + Here the target 'FORCE' satisfies the special conditions, so the +target 'clean' that depends on it is forced to run its recipe. There is +nothing special about the name 'FORCE', but that is one name commonly +used this way. + + As you can see, using 'FORCE' this way has the same results as using +'.PHONY: clean'. + + Using '.PHONY' is more explicit and more efficient. However, other +versions of 'make' do not support '.PHONY'; thus 'FORCE' appears in many +makefiles. *Note Phony Targets::. + + +File: make.info, Node: Empty Targets, Next: Special Targets, Prev: Force Targets, Up: Rules + +4.8 Empty Target Files to Record Events +======================================= + +The "empty target" is a variant of the phony target; it is used to hold +recipes for an action that you request explicitly from time to time. +Unlike a phony target, this target file can really exist; but the file's +contents do not matter, and usually are empty. + + The purpose of the empty target file is to record, with its +last-modification time, when the rule's recipe was last executed. It +does so because one of the commands in the recipe is a 'touch' command +to update the target file. + + The empty target file should have some prerequisites (otherwise it +doesn't make sense). When you ask to remake the empty target, the +recipe is executed if any prerequisite is more recent than the target; +in other words, if a prerequisite has changed since the last time you +remade the target. Here is an example: + + print: foo.c bar.c + lpr -p $? + touch print + +With this rule, 'make print' will execute the 'lpr' command if either +source file has changed since the last 'make print'. The automatic +variable '$?' is used to print only those files that have changed (*note +Automatic Variables::). + + +File: make.info, Node: Special Targets, Next: Multiple Targets, Prev: Empty Targets, Up: Rules + +4.9 Special Built-in Target Names +================================= + +Certain names have special meanings if they appear as targets. + +'.PHONY' + + The prerequisites of the special target '.PHONY' are considered to + be phony targets. When it is time to consider such a target, + 'make' will run its recipe unconditionally, regardless of whether a + file with that name exists or what its last-modification time is. + *Note Phony Targets: Phony Targets. + +'.SUFFIXES' + + The prerequisites of the special target '.SUFFIXES' are the list of + suffixes to be used in checking for suffix rules. *Note + Old-Fashioned Suffix Rules: Suffix Rules. + +'.DEFAULT' + + The recipe specified for '.DEFAULT' is used for any target for + which no rules are found (either explicit rules or implicit rules). + *Note Last Resort::. If a '.DEFAULT' recipe is specified, every + file mentioned as a prerequisite, but not as a target in a rule, + will have that recipe executed on its behalf. *Note Implicit Rule + Search Algorithm: Implicit Rule Search. + +'.PRECIOUS' + + The targets which '.PRECIOUS' depends on are given the following + special treatment: if 'make' is killed or interrupted during the + execution of their recipes, the target is not deleted. *Note + Interrupting or Killing 'make': Interrupts. Also, if the target is + an intermediate file, it will not be deleted after it is no longer + needed, as is normally done. *Note Chains of Implicit Rules: + Chained Rules. In this latter respect it overlaps with the + '.SECONDARY' special target. + + You can also list the target pattern of an implicit rule (such as + '%.o') as a prerequisite file of the special target '.PRECIOUS' to + preserve intermediate files created by rules whose target patterns + match that file's name. + +'.INTERMEDIATE' + + The targets which '.INTERMEDIATE' depends on are treated as + 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). + +'.SECONDEXPANSION' + + If '.SECONDEXPANSION' is mentioned as a target anywhere in the + makefile, then all prerequisite lists defined _after_ it appears + will be expanded a second time after all makefiles have been read + in. *Note Secondary Expansion: Secondary Expansion. + +'.DELETE_ON_ERROR' + + If '.DELETE_ON_ERROR' is mentioned as a target anywhere in the + makefile, then 'make' will delete the target of a rule if it has + changed and its recipe exits with a nonzero exit status, just as it + does when it receives a signal. *Note Errors in Recipes: Errors. + +'.IGNORE' + + If you specify prerequisites for '.IGNORE', then 'make' will ignore + errors in execution of the recipe for those particular files. The + recipe for '.IGNORE' (if any) is ignored. + + If mentioned as a target with no prerequisites, '.IGNORE' says to + ignore errors in execution of recipes for all files. This usage of + '.IGNORE' is supported only for historical compatibility. Since + this affects every recipe in the makefile, it is not very useful; + we recommend you use the more selective ways to ignore errors in + specific recipes. *Note Errors in Recipes: Errors. + +'.LOW_RESOLUTION_TIME' + + If you specify prerequisites for '.LOW_RESOLUTION_TIME', 'make' + assumes that these files are created by commands that generate low + resolution time stamps. The recipe for the '.LOW_RESOLUTION_TIME' + target are ignored. + + The high resolution file time stamps of many modern file systems + lessen the chance of 'make' incorrectly concluding that a file is + up to date. Unfortunately, some hosts do not provide a way to set + a high resolution file time stamp, so commands like 'cp -p' that + explicitly set a file's time stamp must discard its sub-second + part. If a file is created by such a command, you should list it + as a prerequisite of '.LOW_RESOLUTION_TIME' so that 'make' does not + mistakenly conclude that the file is out of date. For example: + + .LOW_RESOLUTION_TIME: dst + dst: src + cp -p src dst + + Since 'cp -p' discards the sub-second part of 'src''s time stamp, + 'dst' is typically slightly older than 'src' even when it is up to + date. The '.LOW_RESOLUTION_TIME' line causes 'make' to consider + 'dst' to be up to date if its time stamp is at the start of the + same second that 'src''s time stamp is in. + + Due to a limitation of the archive format, archive member time + stamps are always low resolution. You need not list archive + members as prerequisites of '.LOW_RESOLUTION_TIME', as 'make' does + this automatically. + +'.SILENT' + + If you specify prerequisites for '.SILENT', then 'make' will not + print the recipe used to remake those particular files before + executing them. The recipe for '.SILENT' is ignored. + + If mentioned as a target with no prerequisites, '.SILENT' says not + to print any recipes before executing them. You may also use more + selective ways to silence specific recipe command lines. *Note + Recipe Echoing: Echoing. If you want to silence all recipes for a + particular run of 'make', use the '-s' or '--silent' option (*note + Options Summary::). + +'.EXPORT_ALL_VARIABLES' + + Simply by being mentioned as a target, this tells 'make' to export + 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 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. + +'.POSIX' + + If '.POSIX' is mentioned as a target, then the makefile will be + parsed and run in POSIX-conforming mode. This does _not_ mean that + only POSIX-conforming makefiles will be accepted: all advanced GNU + 'make' features are still available. Rather, this target causes + 'make' to behave as required by POSIX in those areas where 'make''s + default behavior differs. + + In particular, if this target is mentioned then recipes will be + invoked as if the shell had been passed the '-e' flag: the first + failing command in a recipe will cause the recipe to fail + immediately. + + Any defined implicit rule suffix also counts as a special target if +it appears as a target, and so does the concatenation of two suffixes, +such as '.c.o'. These targets are suffix rules, an obsolete way of +defining implicit rules (but a way still widely used). In principle, +any target name could be special in this way if you break it in two and +add both pieces to the suffix list. In practice, suffixes normally +begin with '.', so these special target names also begin with '.'. +*Note Old-Fashioned Suffix Rules: Suffix Rules. + + +File: make.info, Node: Multiple Targets, Next: Multiple Rules, Prev: Special Targets, Up: Rules + +4.10 Multiple Targets in a Rule +=============================== + +When an explicit rule has multiple targets they can be treated in one of +two possible ways: as independent targets or as grouped targets. The +manner in which they are treated is determined by the separator that +appears after the list of targets. + +Rules with Independent Targets +.............................. + +Rules that use the standard target separator, ':', define independent +targets. This is equivalent to writing the same rule once for each +target, with duplicated prerequisites and recipes. Typically, the +recipe would use automatic variables such as '$@' to specify which +target is being built. + + Rules with independent targets are useful in two cases: + + * You want just prerequisites, no recipe. For example: + + kbd.o command.o files.o: command.h + + gives an additional prerequisite to each of the three object files + mentioned. It is equivalent to writing: + + kbd.o: command.h + command.o: command.h + files.o: command.h + + * Similar recipes work for all the targets. The automatic variable + '$@' can be used to substitute the particular target to be remade + into the commands (*note Automatic Variables::). For example: + + bigoutput littleoutput : text.g + generate text.g -$(subst output,,$@) > $@ + + is equivalent to + + bigoutput : text.g + generate text.g -big > bigoutput + littleoutput : text.g + generate text.g -little > littleoutput + + Here we assume the hypothetical program 'generate' makes two types + of output, one if given '-big' and one if given '-little'. *Note + Functions for String Substitution and Analysis: Text Functions, for + an explanation of the 'subst' function. + + Suppose you would like to vary the prerequisites according to the +target, much as the variable '$@' allows you to vary the recipe. You +cannot do this with multiple targets in an ordinary rule, but you can do +it with a "static pattern rule". *Note Static Pattern Rules: Static +Pattern. + +Rules with Grouped Targets +.......................... + +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 _grouped targets_. A grouped +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 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. 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: + + foo bar biz &: baz boz + echo $^ > foo + echo $^ > bar + echo $^ > biz + + During the execution of a grouped target's recipe, the automatic +variable '$@' is set to the name of the particular target in the group +which triggered the rule. Caution must be used if relying on this +variable in the recipe of a grouped target rule. + + Unlike independent targets, a grouped target rule _must_ include a +recipe. However, targets that are members of a grouped target may also +appear in independent target rule definitions that do not have recipes. + + Each target may have only one recipe associated with it. If a +grouped target appears in either an independent target rule or in +another grouped target rule with a recipe, you will get a warning and +the latter recipe will replace the former recipe. Additionally the +target will be removed from the previous group and appear only in the +new group. + + If you would like a target to appear in multiple groups, then you +must use the double-colon grouped target separator, '&::' when declaring +all of the groups containing that target. Grouped double-colon targets +are each considered independently, and each grouped double-colon rule's +recipe is executed at most once, if at least one of its multiple targets +requires updating. + + +File: make.info, Node: Multiple Rules, Next: Static Pattern, Prev: Multiple Targets, Up: Rules + +4.11 Multiple Rules for One Target +================================== + +One file can be the target of several rules. All the prerequisites +mentioned in all the rules are merged into one list of prerequisites for +the target. If the target is older than any prerequisite from any rule, +the recipe is executed. + + There can only be one recipe to be executed for a file. If more than +one rule gives a recipe for the same file, 'make' uses the last one +given and prints an error message. (As a special case, if the file's +name begins with a dot, no error message is printed. This odd behavior +is only for compatibility with other implementations of 'make'... you +should avoid using it). Occasionally it is useful to have the same +target invoke multiple recipes which are defined in different parts of +your makefile; you can use "double-colon rules" (*note Double-Colon::) +for this. + + An extra rule with just prerequisites can be used to give a few extra +prerequisites to many files at once. For example, makefiles often have +a variable, such as 'objects', containing a list of all the compiler +output files in the system being made. An easy way to say that all of +them must be recompiled if 'config.h' changes is to write the following: + + objects = foo.o bar.o + foo.o : defs.h + bar.o : defs.h test.h + $(objects) : config.h + + This could be inserted or taken out without changing the rules that +really specify how to make the object files, making it a convenient form +to use if you wish to add the additional prerequisite intermittently. + + Another wrinkle is that the additional prerequisites could be +specified with a variable that you set with a command line argument to +'make' (*note Overriding Variables: Overriding.). For example, + + extradeps= + $(objects) : $(extradeps) + +means that the command 'make extradeps=foo.h' will consider 'foo.h' as a +prerequisite of each object file, but plain 'make' will not. + + If none of the explicit rules for a target has a recipe, then 'make' +searches for an applicable implicit rule to find one *note Using +Implicit Rules: Implicit Rules.). + + +File: make.info, Node: Static Pattern, Next: Double-Colon, Prev: Multiple Rules, Up: Rules + +4.12 Static Pattern Rules +========================= + +"Static pattern rules" are rules which specify multiple targets and +construct the prerequisite names for each target based on the target +name. They are more general than ordinary rules with multiple targets +because the targets do not have to have identical prerequisites. Their +prerequisites must be _analogous_, but not necessarily _identical_. + +* Menu: + +* Static Usage:: The syntax of static pattern rules. +* Static versus Implicit:: When are they better than implicit rules? + + +File: make.info, Node: Static Usage, Next: Static versus Implicit, Prev: Static Pattern, Up: Static Pattern + +4.12.1 Syntax of Static Pattern Rules +------------------------------------- + +Here is the syntax of a static pattern rule: + + TARGETS ...: TARGET-PATTERN: PREREQ-PATTERNS ... + RECIPE + ... + +The TARGETS list specifies the targets that the rule applies to. The +targets can contain wildcard characters, just like the targets of +ordinary rules (*note Using Wildcard Characters in File Names: +Wildcards.). + + The TARGET-PATTERN and PREREQ-PATTERNS say how to compute the +prerequisites of each target. Each target is matched against the +TARGET-PATTERN to extract a part of the target name, called the "stem". +This stem is substituted into each of the PREREQ-PATTERNS to make the +prerequisite names (one from each PREREQ-PATTERN). + + Each pattern normally contains the character '%' just once. When the +TARGET-PATTERN matches a target, the '%' can match any part of the +target name; this part is called the "stem". The rest of the pattern +must match exactly. For example, the target 'foo.o' matches the pattern +'%.o', with 'foo' as the stem. The targets 'foo.c' and 'foo.out' do not +match that pattern. + + The prerequisite names for each target are made by substituting the +stem for the '%' in each prerequisite pattern. For example, if one +prerequisite pattern is '%.c', then substitution of the stem 'foo' gives +the prerequisite name 'foo.c'. It is legitimate to write a prerequisite +pattern that does not contain '%'; then this prerequisite is the same +for all targets. + + '%' characters in pattern rules can be quoted with preceding +backslashes ('\'). Backslashes that would otherwise quote '%' +characters can be quoted with more backslashes. Backslashes that quote +'%' characters or other backslashes are removed from the pattern before +it is compared to file names or has a stem substituted into it. +Backslashes that are not in danger of quoting '%' characters go +unmolested. For example, the pattern 'the\%weird\\%pattern\\' has +'the%weird\' preceding the operative '%' character, and 'pattern\\' +following it. The final two backslashes are left alone because they +cannot affect any '%' character. + + Here is an example, which compiles each of 'foo.o' and 'bar.o' from +the corresponding '.c' file: + + objects = foo.o bar.o + + all: $(objects) + + $(objects): %.o: %.c + $(CC) -c $(CFLAGS) $< -o $@ + +Here '$<' is the automatic variable that holds the name of the +prerequisite and '$@' is the automatic variable that holds the name of +the target; see *note Automatic Variables::. + + Each target specified must match the target pattern; a warning is +issued for each target that does not. If you have a list of files, only +some of which will match the pattern, you can use the 'filter' function +to remove non-matching file names (*note Functions for String +Substitution and Analysis: Text Functions.): + + files = foo.elc bar.o lose.o + + $(filter %.o,$(files)): %.o: %.c + $(CC) -c $(CFLAGS) $< -o $@ + $(filter %.elc,$(files)): %.elc: %.el + emacs -f batch-byte-compile $< + +In this example the result of '$(filter %.o,$(files))' is '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 '$(filter %.elc,$(files))' is 'foo.elc', so that file is made +from 'foo.el'. + + Another example shows how to use '$*' in static pattern rules: + + bigoutput littleoutput : %output : text.g + generate text.g -$* > $@ + +When the 'generate' command is run, '$*' will expand to the stem, either +'big' or 'little'. + + +File: make.info, Node: Static versus Implicit, Prev: Static Usage, Up: Static Pattern + +4.12.2 Static Pattern Rules versus Implicit Rules +------------------------------------------------- + +A static pattern rule has much in common with an implicit rule defined +as a pattern rule (*note Defining and Redefining Pattern Rules: Pattern +Rules.). Both have a pattern for the target and patterns for +constructing the names of prerequisites. The difference is in how +'make' decides _when_ the rule applies. + + An implicit rule _can_ apply to any target that matches its pattern, +but it _does_ apply only when the target has no recipe otherwise +specified, and only when the prerequisites can be found. If more than +one implicit rule appears applicable, only one applies; the choice +depends on the order of rules. + + By contrast, a static pattern rule applies to the precise list of +targets that you specify in the rule. It cannot apply to any other +target and it invariably does apply to each of the targets specified. +If two conflicting rules apply, and both have recipes, that's an error. + + The static pattern rule can be better than an implicit rule for these +reasons: + + * You may wish to override the usual implicit rule for a few files + whose names cannot be categorized syntactically but can be given in + an explicit list. + + * If you cannot be sure of the precise contents of the directories + you are using, you may not be sure which other irrelevant files + might lead 'make' to use the wrong implicit rule. The choice might + depend on the order in which the implicit rule search is done. + With static pattern rules, there is no uncertainty: each rule + applies to precisely the targets specified. + + +File: make.info, Node: Double-Colon, Next: Automatic Prerequisites, Prev: Static Pattern, Up: Rules + +4.13 Double-Colon Rules +======================= + +"Double-colon" rules are explicit rules written with '::' instead of ':' +after the target names. They are handled differently from ordinary +rules when the same target appears in more than one rule. Pattern rules +with double-colons have an entirely different meaning (*note +Match-Anything Rules::). + + When a target appears in multiple rules, all the rules must be the +same type: all ordinary, or all double-colon. If they are double-colon, +each of them is independent of the others. Each double-colon rule's +recipe is executed if the target is older than any prerequisites of that +rule. If there are no prerequisites for that rule, its recipe is always +executed (even if the target already exists). This can result in +executing none, any, or all of the double-colon rules. + + Double-colon rules with the same target are in fact completely +separate from one another. Each double-colon rule is processed +individually, just as rules with different targets are processed. + + The double-colon rules for a target are executed in the order they +appear in the makefile. However, the cases where double-colon rules +really make sense are those where the order of executing the recipes +would not matter. + + Double-colon rules are somewhat obscure and not often very useful; +they provide a mechanism for cases in which the method used to update a +target differs depending on which prerequisite files caused the update, +and such cases are rare. + + Each double-colon rule should specify a recipe; if it does not, an +implicit rule will be used if one applies. *Note Using Implicit Rules: +Implicit Rules. + + +File: make.info, Node: Automatic Prerequisites, Prev: Double-Colon, Up: Rules + +4.14 Generating Prerequisites Automatically +=========================================== + +In the makefile for a program, many of the rules you need to write often +say only that some object file depends on some header file. For +example, if 'main.c' uses 'defs.h' via an '#include', you would write: + + main.o: defs.h + +You need this rule so that 'make' knows that it must remake 'main.o' +whenever 'defs.h' changes. You can see that for a large program you +would have to write dozens of such rules in your makefile. And, you +must always be very careful to update the makefile every time you add or +remove an '#include'. + + To avoid this hassle, most modern C compilers can write these rules +for you, by looking at the '#include' lines in the source files. +Usually this is done with the '-M' option to the compiler. For example, +the command: + + cc -M main.c + +generates the output: + + main.o : main.c defs.h + +Thus you no longer have to write all those rules yourself. The compiler +will do it for you. + + Note that such a rule constitutes mentioning 'main.o' in a makefile, +so it can never be considered an intermediate file by implicit rule +search. This means that 'make' won't ever remove the file after using +it; *note Chains of Implicit Rules: Chained Rules. + + With old 'make' programs, it was traditional practice to use this +compiler feature to generate prerequisites on demand with a command like +'make depend'. That command would create a file 'depend' containing all +the automatically-generated prerequisites; then the makefile could use +'include' to read them in (*note Include::). + + In GNU 'make', the feature of remaking makefiles makes this practice +obsolete--you need never tell 'make' explicitly to regenerate the +prerequisites, because it always regenerates any makefile that is out of +date. *Note Remaking Makefiles::. + + The practice we recommend for automatic prerequisite generation is to +have one makefile corresponding to each source file. For each source +file 'NAME.c' there is a makefile 'NAME.d' which lists what files the +object file 'NAME.o' depends on. That way only the source files that +have changed need to be rescanned to produce the new prerequisites. + + Here is the pattern rule to generate a file of prerequisites (i.e., a +makefile) called 'NAME.d' from a C source file called 'NAME.c': + + %.d: %.c + @set -e; rm -f $@; \ + $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \ + sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ + rm -f $@.$$$$ + +*Note Pattern Rules::, for information on defining pattern rules. The +'-e' flag to the shell causes it to exit immediately if the '$(CC)' +command (or any other command) fails (exits with a nonzero status). + + With the GNU C compiler, you may wish to use the '-MM' flag instead +of '-M'. This omits prerequisites on system header files. *Note +Options Controlling the Preprocessor: (gcc)Preprocessor Options, for +details. + + The purpose of the 'sed' command is to translate (for example): + + main.o : main.c defs.h + +into: + + main.o main.d : main.c defs.h + +This makes each '.d' file depend on all the source and header files that +the corresponding '.o' file depends on. 'make' then knows it must +regenerate the prerequisites whenever any of the source or header files +changes. + + Once you've defined the rule to remake the '.d' files, you then use +the 'include' directive to read them all in. *Note Include::. For +example: + + sources = foo.c bar.c + + include $(sources:.c=.d) + +(This example uses a substitution variable reference to translate the +list of source files 'foo.c bar.c' into a list of prerequisite +makefiles, 'foo.d bar.d'. *Note Substitution Refs::, for full +information on substitution references.) Since the '.d' files are +makefiles like any others, 'make' will remake them as necessary with no +further work from you. *Note Remaking Makefiles::. + + Note that the '.d' files contain target definitions; you should be +sure to place the 'include' directive _after_ the first, default goal in +your makefiles or run the risk of having a random object file become the +default goal. *Note How Make Works::. + + +File: make.info, Node: Recipes, Next: Using Variables, Prev: Rules, Up: Top + +5 Writing Recipes in Rules +************************** + +The recipe of a rule consists of one or more shell command lines to be +executed, one at a time, in the order they appear. Typically, the +result of executing these commands is that the target of the rule is +brought up to date. + + Users use many different shell programs, but recipes in makefiles are +always interpreted by '/bin/sh' unless the makefile specifies otherwise. +*Note Recipe Execution: Execution. + +* Menu: + +* Recipe Syntax:: Recipe syntax features and pitfalls. +* Echoing:: How to control when recipes are echoed. +* Execution:: How recipes are executed. +* Parallel:: How recipes can be executed in parallel. +* Errors:: What happens after a recipe execution error. +* Interrupts:: What happens when a recipe is interrupted. +* Recursion:: Invoking 'make' from makefiles. +* Canned Recipes:: Defining canned recipes. +* Empty Recipes:: Defining useful, do-nothing recipes. + + +File: make.info, Node: Recipe Syntax, Next: Echoing, Prev: Recipes, Up: Recipes + +5.1 Recipe Syntax +================= + +Makefiles have the unusual property that there are really two distinct +syntaxes in one file. Most of the makefile uses 'make' syntax (*note +Writing Makefiles: Makefiles.). However, recipes are meant to be +interpreted by the shell and so they are written using shell syntax. +The 'make' program does not try to understand shell syntax: it performs +only a very few specific translations on the content of the recipe +before handing it to the shell. + + Each line in the recipe must start with a tab (or the first character +in the value of the '.RECIPEPREFIX' variable; *note Special +Variables::), except that the first recipe line may be attached to the +target-and-prerequisites line with a semicolon in between. _Any_ line +in the makefile that begins with a tab and appears in a "rule context" +(that is, after a rule has been started until another rule or variable +definition) will be considered part of a recipe for that rule. Blank +lines and lines of just comments may appear among the recipe lines; they +are ignored. + + Some consequences of these rules include: + + * A blank line that begins with a tab is not blank: it's an empty + recipe (*note Empty Recipes::). + + * A comment in a recipe is not a 'make' comment; it will be passed to + the shell as-is. Whether the shell treats it as a comment or not + depends on your shell. + + * A variable definition in a "rule context" which is indented by a + tab as the first character on the line, will be considered part of + a recipe, not a 'make' variable definition, and passed to the + shell. + + * A conditional expression ('ifdef', 'ifeq', etc. *note Syntax of + Conditionals: Conditional Syntax.) in a "rule context" which is + indented by a tab as the first character on the line, will be + considered part of a recipe and be passed to the shell. + +* Menu: + +* Splitting Recipe Lines:: Breaking long recipe lines for readability. +* Variables in Recipes:: Using 'make' variables in recipes. + + +File: make.info, Node: Splitting Recipe Lines, Next: Variables in Recipes, Prev: Recipe Syntax, Up: Recipe Syntax + +5.1.1 Splitting Recipe Lines +---------------------------- + +One of the few ways in which 'make' does interpret recipes is checking +for a backslash just before the newline. As in normal makefile syntax, +a single logical recipe line can be split into multiple physical lines +in the makefile by placing a backslash before each newline. A sequence +of lines like this is considered a single recipe line, and one instance +of the shell will be invoked to run it. + + However, in contrast to how they are treated in other places in a +makefile (*note Splitting Long Lines: Splitting Lines.), +backslash/newline pairs are _not_ removed from the recipe. Both the +backslash and the newline characters are preserved and passed to the +shell. How the backslash/newline is interpreted depends on your shell. +If the first character of the next line after the backslash/newline is +the recipe prefix character (a tab by default; *note Special +Variables::), then that character (and only that character) is removed. +Whitespace is never added to the recipe. + + For example, the recipe for the all target in this makefile: + + all : + @echo no\ + space + @echo no\ + space + @echo one \ + space + @echo one\ + space + +consists of four separate shell commands where the output is: + + nospace + nospace + one space + one space + + As a more complex example, this makefile: + + all : ; @echo 'hello \ + world' ; echo "hello \ + world" + +will invoke one shell with a command of: + + echo 'hello \ + world' ; echo "hello \ + world" + +which, according to shell quoting rules, will yield the following +output: + + hello \ + world + hello world + +Notice how the backslash/newline pair was removed inside the string +quoted with double quotes ('"..."'), but not from the string quoted with +single quotes (''...''). This is the way the default shell ('/bin/sh') +handles backslash/newline pairs. If you specify a different shell in +your makefiles it may treat them differently. + + Sometimes you want to split a long line inside of single quotes, but +you don't want the backslash/newline to appear in the quoted content. +This is often the case when passing scripts to languages such as Perl, +where extraneous backslashes inside the script can change its meaning or +even be a syntax error. One simple way of handling this is to place the +quoted string, or even the entire command, into a 'make' variable then +use the variable in the recipe. In this situation the newline quoting +rules for makefiles will be used, and the backslash/newline will be +removed. If we rewrite our example above using this method: + + HELLO = 'hello \ + world' + + all : ; @echo $(HELLO) + +we will get output like this: + + hello world + + If you like, you can also use target-specific variables (*note +Target-specific Variable Values: Target-specific.) to obtain a tighter +correspondence between the variable and the recipe that uses it. + + +File: make.info, Node: Variables in Recipes, Prev: Splitting Recipe Lines, Up: Recipe Syntax + +5.1.2 Using Variables in Recipes +-------------------------------- + +The other way in which 'make' processes recipes is by expanding any +variable references in them (*note Basics of Variable References: +Reference.). This occurs after make has finished reading all the +makefiles and the target is determined to be out of date; so, the +recipes for targets which are not rebuilt are never expanded. + + Variable and function references in recipes have identical syntax and +semantics to references elsewhere in the makefile. They also have the +same quoting rules: if you want a dollar sign to appear in your recipe, +you must double it ('$$'). For shells like the default shell, that use +dollar signs to introduce variables, it's important to keep clear in +your mind whether the variable you want to reference is a 'make' +variable (use a single dollar sign) or a shell variable (use two dollar +signs). For example: + + LIST = one two three + all: + for i in $(LIST); do \ + echo $$i; \ + done + +results in the following command being passed to the shell: + + for i in one two three; do \ + echo $i; \ + done + +which generates the expected result: + + one + two + three + + +File: make.info, Node: Echoing, Next: Execution, Prev: Recipe Syntax, Up: Recipes + +5.2 Recipe Echoing +================== + +Normally 'make' prints each line of the recipe before it is executed. +We call this "echoing" because it gives the appearance that you are +typing the lines yourself. + + When a line starts with '@', the echoing of that line is suppressed. +The '@' is discarded before the line is passed to the shell. Typically +you would use this for a command whose only effect is to print +something, such as an 'echo' command to indicate progress through the +makefile: + + @echo About to make distribution files + + When 'make' is given the flag '-n' or '--just-print' it only echoes +most recipes, without executing them. *Note Summary of Options: Options +Summary. In this case even the recipe lines starting with '@' are +printed. This flag is useful for finding out which recipes 'make' +thinks are necessary without actually doing them. + + The '-s' or '--silent' flag to 'make' prevents all echoing, as if all +recipes started with '@'. A rule in the makefile for the special target +'.SILENT' without prerequisites has the same effect (*note Special +Built-in Target Names: Special Targets.). + + +File: make.info, Node: Execution, Next: Parallel, Prev: Echoing, Up: Recipes + +5.3 Recipe Execution +==================== + +When it is time to execute recipes to update a target, they are executed +by invoking a new sub-shell for each line of the recipe, unless the +'.ONESHELL' special target is in effect (*note Using One Shell: One +Shell.) (In practice, 'make' may take shortcuts that do not affect the +results.) + + *Please note:* this implies that setting shell variables and invoking +shell commands such as 'cd' that set a context local to each process +will not affect the following lines in the recipe.(1) If you want to +use 'cd' to affect the next statement, put both statements in a single +recipe line. Then 'make' will invoke one shell to run the entire line, +and the shell will execute the statements in sequence. For example: + + foo : bar/lose + cd $( ../$@ + +Here we use the shell AND operator ('&&') so that if the 'cd' command +fails, the script will fail without trying to invoke the 'gobble' +command in the wrong directory, which could cause problems (in this case +it would certainly cause '../foo' to be truncated, at least). + +* Menu: + +* One Shell:: One shell for all lines in a recipe. +* Choosing the Shell:: How 'make' chooses the shell used + to run recipes. + + ---------- Footnotes ---------- + + (1) On MS-DOS, the value of current working directory is *global*, so +changing it _will_ affect the following recipe lines on those systems. + + +File: make.info, Node: One Shell, Next: Choosing the Shell, Prev: Execution, Up: Execution + +5.3.1 Using One Shell +--------------------- + +Sometimes you would prefer that all the lines in the recipe be passed to +a single invocation of the shell. There are generally two situations +where this is useful: first, it can improve performance in makefiles +where recipes consist of many command lines, by avoiding extra +processes. Second, you might want newlines to be included in your +recipe command (for example perhaps you are using a very different +interpreter as your 'SHELL'). If the '.ONESHELL' special target appears +anywhere in the makefile then _all_ recipe lines for each target will be +provided to a single invocation of the shell. Newlines between recipe +lines will be preserved. For example: + + .ONESHELL: + foo : bar/lose + cd $( ../$@ + +would now work as expected even though the commands are on different +recipe lines. + + If '.ONESHELL' is provided, then only the first line of the recipe +will be checked for the special prefix characters ('@', '-', and '+'). +Subsequent lines will include the special characters in the recipe line +when the 'SHELL' is invoked. If you want your recipe to start with one +of these special characters you'll need to arrange for them to not be +the first characters on the first line, perhaps by adding a comment or +similar. For example, this would be a syntax error in Perl because the +first '@' is removed by make: + + .ONESHELL: + SHELL = /usr/bin/perl + .SHELLFLAGS = -e + show : + @f = qw(a b c); + print "@f\n"; + +However, either of these alternatives would work properly: + + .ONESHELL: + SHELL = /usr/bin/perl + .SHELLFLAGS = -e + show : + # Make sure "@" is not the first character on the first line + @f = qw(a b c); + print "@f\n"; + +or + + .ONESHELL: + SHELL = /usr/bin/perl + .SHELLFLAGS = -e + show : + my @f = qw(a b c); + print "@f\n"; + + As a special feature, if 'SHELL' is determined to be a POSIX-style +shell, the special prefix characters in "internal" recipe lines will be +_removed_ before the recipe is processed. This feature is intended to +allow existing makefiles to add the '.ONESHELL' special target and still +run properly without extensive modifications. Since the special prefix +characters are not legal at the beginning of a line in a POSIX shell +script this is not a loss in functionality. For example, this works as +expected: + + .ONESHELL: + foo : bar/lose + @cd $(@D) + @gobble $(@F) > ../$@ + + Even with this special feature, however, makefiles with '.ONESHELL' +will behave differently in ways that could be noticeable. For example, +normally if any line in the recipe fails, that causes the rule to fail +and no more recipe lines are processed. Under '.ONESHELL' a failure of +any but the final recipe line will not be noticed by 'make'. You can +modify '.SHELLFLAGS' to add the '-e' option to the shell which will +cause any failure anywhere in the command line to cause the shell to +fail, but this could itself cause your recipe to behave differently. +Ultimately you may need to harden your recipe lines to allow them to +work with '.ONESHELL'. + + +File: make.info, Node: Choosing the Shell, Prev: One Shell, Up: Execution + +5.3.2 Choosing the Shell +------------------------ + +The program used as the shell is taken from the variable 'SHELL'. If +this variable is not set in your makefile, the program '/bin/sh' is used +as the shell. The argument(s) passed to the shell are taken from the +variable '.SHELLFLAGS'. The default value of '.SHELLFLAGS' is '-c' +normally, or '-ec' in POSIX-conforming mode. + + Unlike most variables, the variable 'SHELL' is never set from the +environment. This is because the 'SHELL' environment variable is used +to specify your personal choice of shell program for interactive use. +It would be very bad for personal choices like this to affect the +functioning of makefiles. *Note Variables from the Environment: +Environment. + + Furthermore, when you do set 'SHELL' in your makefile that value is +_not_ exported in the environment to recipe lines that 'make' invokes. +Instead, the value inherited from the user's environment, if any, is +exported. You can override this behavior by explicitly exporting +'SHELL' (*note Communicating Variables to a Sub-'make': +Variables/Recursion.), forcing it to be passed in the environment to +recipe lines. + + However, on MS-DOS and MS-Windows the value of 'SHELL' in the +environment *is* used, since on those systems most users do not set this +variable, and therefore it is most likely set specifically to be used by +'make'. On MS-DOS, if the setting of 'SHELL' is not suitable for +'make', you can set the variable 'MAKESHELL' to the shell that 'make' +should use; if set it will be used as the shell instead of the value of +'SHELL'. + +Choosing a Shell in DOS and Windows +................................... + +Choosing a shell in MS-DOS and MS-Windows is much more complex than on +other systems. + + On MS-DOS, if 'SHELL' is not set, the value of the variable 'COMSPEC' +(which is always set) is used instead. + + The processing of lines that set the variable 'SHELL' in Makefiles is +different on MS-DOS. The stock shell, 'command.com', is ridiculously +limited in its functionality and many users of 'make' tend to install a +replacement shell. Therefore, on MS-DOS, 'make' examines the value of +'SHELL', and changes its behavior based on whether it points to a +Unix-style or DOS-style shell. This allows reasonable functionality +even if 'SHELL' points to 'command.com'. + + If 'SHELL' points to a Unix-style shell, 'make' on MS-DOS +additionally checks whether that shell can indeed be found; if not, it +ignores the line that sets 'SHELL'. In MS-DOS, GNU 'make' searches for +the shell in the following places: + + 1. In the precise place pointed to by the value of 'SHELL'. For + example, if the makefile specifies 'SHELL = /bin/sh', 'make' will + look in the directory '/bin' on the current drive. + + 2. In the current directory. + + 3. In each of the directories in the 'PATH' variable, in order. + + In every directory it examines, 'make' will first look for the +specific file ('sh' in the example above). If this is not found, it +will also look in that directory for that file with one of the known +extensions which identify executable files. For example '.exe', '.com', +'.bat', '.btm', '.sh', and some others. + + If any of these attempts is successful, the value of 'SHELL' will be +set to the full pathname of the shell as found. However, if none of +these is found, the value of 'SHELL' will not be changed, and thus the +line that sets it will be effectively ignored. This is so 'make' will +only support features specific to a Unix-style shell if such a shell is +actually installed on the system where 'make' runs. + + Note that this extended search for the shell is limited to the cases +where 'SHELL' is set from the Makefile; if it is set in the environment +or command line, you are expected to set it to the full pathname of the +shell, exactly as things are on Unix. + + The effect of the above DOS-specific processing is that a Makefile +that contains 'SHELL = /bin/sh' (as many Unix makefiles do), will work +on MS-DOS unaltered if you have e.g. 'sh.exe' installed in some +directory along your 'PATH'. + + +File: make.info, Node: Parallel, Next: Errors, Prev: Execution, Up: Recipes + +5.4 Parallel Execution +====================== + +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 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. + + 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). + + Handling recursive 'make' invocations raises issues for parallel +execution. For more information on this, see *note Communicating +Options to a Sub-'make': Options/Recursion. + + If a recipe fails (is killed by a signal or exits with a nonzero +status), and errors are not ignored for that recipe (*note Errors in +Recipes: Errors.), the remaining recipe lines to remake the same target +will not be run. If a recipe fails and the '-k' or '--keep-going' +option was not given (*note Summary of Options: Options Summary.), +'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. + + When the system is heavily loaded, you will probably want to run +fewer jobs than when it is lightly loaded. You can use the '-l' option +to tell 'make' to limit the number of jobs to run at once, based on the +load average. The '-l' or '--max-load' option is followed by a +floating-point number. For example, + + -l 2.5 + +will not let 'make' start more than one job if the load average is above +2.5. The '-l' option with no following number removes the load limit, +if one was given with a previous '-l' option. + + More precisely, when '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 lower than the limit given with '-l', 'make' waits until the load +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 + + +File: make.info, Node: Parallel Disable, Next: Parallel Output, Prev: Parallel, Up: Parallel + +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 +appears as soon as it is generated, with the result that messages from +different recipes may be interspersed, sometimes even appearing on the +same line. This can make reading the output very difficult. + + To avoid this you can use the '--output-sync' ('-O') option. This +option instructs 'make' to save the output from the commands it invokes +and print it all once the commands are completed. Additionally, if +there are multiple recursive 'make' invocations running in parallel, +they will communicate so that only one of them is generating output at a +time. + + If working directory printing is enabled (*note The +'--print-directory' Option: -w Option.), the enter/leave messages are +printed around each output grouping. If you prefer not to see these +messages add the '--no-print-directory' option to 'MAKEFLAGS'. + + There are four levels of granularity when synchronizing output, +specified by giving an argument to the option (e.g., '-Oline' or +'--output-sync=recurse'). + +'none' + This is the default: all output is sent directly as it is generated + and no synchronization is performed. + +'line' + Output from each individual line of the recipe is grouped and + printed as soon as that line is complete. If a recipe consists of + multiple lines, they may be interspersed with lines from other + recipes. + +'target' + Output from the entire recipe for each target is grouped and + printed once the target is complete. This is the default if the + '--output-sync' or '-O' option is given with no argument. + +'recurse' + Output from each recursive invocation of 'make' is grouped and + printed once the recursive invocation is complete. + + Regardless of the mode chosen, the total build time will be the same. +The only difference is in how the output appears. + + The 'target' and 'recurse' modes both collect the output of the +entire recipe of a target and display it uninterrupted when the recipe +completes. The difference between them is in how recipes that contain +recursive invocations of 'make' are treated (*note Recursive Use of +'make': Recursion.). For all recipes which have no recursive lines, the +'target' and 'recurse' modes behave identically. + + If the 'recurse' mode is chosen, recipes that contain recursive +'make' invocations are treated the same as other targets: the output +from the recipe, including the output from the recursive 'make', is +saved and printed after the entire recipe is complete. This ensures +output from all the targets built by a given recursive 'make' instance +are grouped together, which may make the output easier to understand. +However it also leads to long periods of time during the build where no +output is seen, followed by large bursts of output. If you are not +watching the build as it proceeds, but instead viewing a log of the +build after the fact, this may be the best option for you. + + If you are watching the output, the long gaps of quiet during the +build can be frustrating. The 'target' output synchronization mode +detects when 'make' is going to be invoked recursively, using the +standard methods, and it will not synchronize the output of those lines. +The recursive 'make' will perform the synchronization for its targets +and the output from each will be displayed immediately when it +completes. Be aware that output from recursive lines of the recipe are +not synchronized (for example if the recursive line prints a message +before running 'make', that message will not be synchronized). + + The 'line' mode can be useful for front-ends that are watching the +output of 'make' to track when recipes are started and completed. + + Some programs invoked by 'make' may behave differently if they +determine they're writing output to a terminal versus a file (often +described as "interactive" vs. "non-interactive" modes). For example, +many programs that can display colorized output will not do so if they +determine they are not writing to a terminal. If your makefile invokes +a program like this then using the output synchronization options will +cause the program to believe it's running in "non-interactive" mode even +though the output will ultimately go to the terminal. + + +File: make.info, Node: Parallel Input, Prev: Parallel Output, Up: Parallel + +5.4.3 Input During Parallel Execution +------------------------------------- + +Two processes cannot both take input from the same device at the same +time. To make sure that only one recipe tries to take input from the +terminal at once, 'make' will invalidate the standard input streams of +all but one running recipe. If another recipe attempts to read from +standard input it will usually incur a fatal error (a 'Broken pipe' +signal). + + It is unpredictable which recipe will have a valid standard input +stream (which will come from the terminal, or wherever you redirect the +standard input of 'make'). The first recipe run will always get it +first, and the first recipe started after that one finishes will get it +next, and so on. + + We will change how this aspect of 'make' works if we find a better +alternative. In the mean time, you should not rely on any recipe using +standard input at all if you are using the parallel execution feature; +but if you are not using this feature, then standard input works +normally in all recipes. + + +File: make.info, Node: Errors, Next: Interrupts, Prev: Parallel, Up: Recipes + +5.5 Errors in Recipes +===================== + +After each shell invocation returns, 'make' looks at its exit status. +If the shell completed successfully (the exit status is zero), the next +line in the recipe is executed in a new shell; after the last line is +finished, the rule is finished. + + If there is an error (the exit status is nonzero), 'make' gives up on +the current rule, and perhaps on all rules. + + Sometimes the failure of a certain recipe line does not indicate a +problem. For example, you may use the 'mkdir' command to ensure that a +directory exists. If the directory already exists, 'mkdir' will report +an error, but you probably want 'make' to continue regardless. + + To ignore errors in a recipe line, write a '-' at the beginning of +the line's text (after the initial tab). The '-' is discarded before +the line is passed to the shell for execution. + + For example, + + clean: + -rm -f *.o + +This causes 'make' to continue even if 'rm' is unable to remove a file. + + When you run 'make' with the '-i' or '--ignore-errors' flag, errors +are ignored in all recipes of all rules. A rule in the makefile for the +special target '.IGNORE' has the same effect, if there are no +prerequisites. This is less flexible but sometimes useful. + + When errors are to be ignored, because of either a '-' or the '-i' +flag, 'make' treats an error return just like success, except that it +prints out a message that tells you the status code the shell exited +with, and says that the error has been ignored. + + When an error happens that 'make' has not been told to ignore, it +implies that the current target cannot be correctly remade, and neither +can any other that depends on it either directly or indirectly. No +further recipes will be executed for these targets, since their +preconditions have not been achieved. + + Normally 'make' gives up immediately in this circumstance, returning +a nonzero status. However, if the '-k' or '--keep-going' flag is +specified, 'make' continues to consider the other prerequisites of the +pending targets, remaking them if necessary, before it gives up and +returns nonzero status. For example, after an error in compiling one +object file, 'make -k' will continue compiling other object files even +though it already knows that linking them will be impossible. *Note +Summary of Options: Options Summary. + + The usual behavior assumes that your purpose is to get the specified +targets up to date; once 'make' learns that this is impossible, it might +as well report the failure immediately. The '-k' option says that the +real purpose is to test as many of the changes made in the program as +possible, perhaps to find several independent problems so that you can +correct them all before the next attempt to compile. This is why Emacs' +'compile' command passes the '-k' flag by default. + + Usually when a recipe line fails, if it has changed the target file +at all, the file is corrupted and cannot be used--or at least it is not +completely updated. Yet the file's time stamp says that it is now up to +date, so the next time 'make' runs, it will not try to update that file. +The situation is just the same as when the shell is killed by a signal; +*note Interrupts::. So generally the right thing to do is to delete the +target file if the recipe fails after beginning to change the file. +'make' will do this if '.DELETE_ON_ERROR' appears as a target. This is +almost always what you want 'make' to do, but it is not historical +practice; so for compatibility, you must explicitly request it. + + +File: make.info, Node: Interrupts, Next: Recursion, Prev: Errors, Up: Recipes + +5.6 Interrupting or Killing 'make' +================================== + +If 'make' gets a fatal signal while a shell is executing, it may delete +the target file that the recipe was supposed to update. This is done if +the target file's last-modification time has changed since 'make' first +checked it. + + The purpose of deleting the target is to make sure that it is remade +from scratch when 'make' is next run. Why is this? Suppose you type +'Ctrl-c' while a compiler is running, and it has begun to write an +object file 'foo.o'. The 'Ctrl-c' kills the compiler, resulting in an +incomplete file whose last-modification time is newer than the source +file 'foo.c'. But 'make' also receives the 'Ctrl-c' signal and deletes +this incomplete file. If 'make' did not do this, the next invocation of +'make' would think that 'foo.o' did not require updating--resulting in a +strange error message from the linker when it tries to link an object +file half of which is missing. + + You can prevent the deletion of a target file in this way by making +the special target '.PRECIOUS' depend on it. Before remaking a target, +'make' checks to see whether it appears on the prerequisites of +'.PRECIOUS', and thereby decides whether the target should be deleted if +a signal happens. Some reasons why you might do this are that the +target is updated in some atomic fashion, or exists only to record a +modification-time (its contents do not matter), or must exist at all +times to prevent other sorts of trouble. + + Although 'make' does its best to clean up there are certain +situations in which cleanup is impossible. For example, 'make' may be +killed by an uncatchable signal. Or, one of the programs make invokes +may be killed or crash, leaving behind an up-to-date but corrupt target +file: 'make' will not realize that this failure requires the target to +be cleaned. Or 'make' itself may encounter a bug and crash. + + For these reasons it's best to write _defensive recipes_, which won't +leave behind corrupted targets even if they fail. Most commonly these +recipes create temporary files rather than updating the target directly, +then rename the temporary file to the final target name. Some compilers +already behave this way, so that you don't need to write a defensive +recipe. + + +File: make.info, Node: Recursion, Next: Canned Recipes, Prev: Interrupts, Up: Recipes + +5.7 Recursive Use of 'make' +=========================== + +Recursive use of 'make' means using 'make' as a command in a makefile. +This technique is useful when you want separate makefiles for various +subsystems that compose a larger system. For example, suppose you have +a sub-directory 'subdir' which has its own makefile, and you would like +the containing directory's makefile to run 'make' on the sub-directory. +You can do it by writing this: + + subsystem: + cd subdir && $(MAKE) + +or, equivalently, this (*note Summary of Options: Options Summary.): + + subsystem: + $(MAKE) -C subdir + + You can write recursive 'make' commands just by copying this example, +but there are many things to know about how they work and why, and about +how the sub-'make' relates to the top-level 'make'. You may also find +it useful to declare targets that invoke recursive 'make' commands as +'.PHONY' (for more discussion on when this is useful, see *note Phony +Targets::). + + For your convenience, when GNU 'make' starts (after it has processed +any '-C' options) it sets the variable 'CURDIR' to the pathname of the +current working directory. This value is never touched by 'make' again: +in particular note that if you include files from other directories the +value of 'CURDIR' does not change. The value has the same precedence it +would have if it were set in the makefile (by default, an environment +variable 'CURDIR' will not override this value). Note that setting this +variable has no impact on the operation of 'make' (it does not cause +'make' to change its working directory, for example). + +* Menu: + +* MAKE Variable:: The special effects of using '$(MAKE)'. +* Variables/Recursion:: How to communicate variables to a sub-'make'. +* Options/Recursion:: How to communicate options to a sub-'make'. +* -w Option:: How the '-w' or '--print-directory' option + helps debug use of recursive 'make' commands. + + +File: make.info, Node: MAKE Variable, Next: Variables/Recursion, Prev: Recursion, Up: Recursion + +5.7.1 How the 'MAKE' Variable Works +----------------------------------- + +Recursive 'make' commands should always use the variable 'MAKE', not the +explicit command name 'make', as shown here: + + subsystem: + cd subdir && $(MAKE) + + The value of this variable is the file name with which 'make' was +invoked. If this file name was '/bin/make', then the recipe executed is +'cd subdir && /bin/make'. If you use a special version of 'make' to run +the top-level makefile, the same special version will be executed for +recursive invocations. + + As a special feature, using the variable 'MAKE' in the recipe of a +rule alters the effects of the '-t' ('--touch'), '-n' ('--just-print'), +or '-q' ('--question') option. Using the 'MAKE' variable has the same +effect as using a '+' character at the beginning of the recipe line. +*Note Instead of Executing the Recipes: Instead of Execution. This +special feature is only enabled if the 'MAKE' variable appears directly +in the recipe: it does not apply if the 'MAKE' variable is referenced +through expansion of another variable. In the latter case you must use +the '+' token to get these special effects. + + Consider the command 'make -t' in the above example. (The '-t' +option marks targets as up to date without actually running any recipes; +see *note Instead of Execution::.) Following the usual definition of +'-t', a 'make -t' command in the example would create a file named +'subsystem' and do nothing else. What you really want it to do is run +'cd subdir && make -t'; but that would require executing the recipe, and +'-t' says not to execute recipes. + + The special feature makes this do what you want: whenever a recipe +line of a rule contains the variable 'MAKE', the flags '-t', '-n' and +'-q' do not apply to that line. Recipe lines containing 'MAKE' are +executed normally despite the presence of a flag that causes most +recipes not to be run. The usual 'MAKEFLAGS' mechanism passes the flags +to the sub-'make' (*note Communicating Options to a Sub-'make': +Options/Recursion.), so your request to touch the files, or print the +recipes, is propagated to the subsystem. + + +File: make.info, Node: Variables/Recursion, Next: Options/Recursion, Prev: MAKE Variable, Up: Recursion + +5.7.2 Communicating Variables to a Sub-'make' +--------------------------------------------- + +Variable values of the top-level 'make' can be passed to the sub-'make' +through the environment by explicit request. These variables are +defined in the sub-'make' as defaults, but they do not override +variables defined in the makefile used by the sub-'make' unless you use +the '-e' switch (*note Summary of Options: Options Summary.). + + To pass down, or "export", a variable, 'make' adds the variable and +its value to the environment for running each line of the recipe. The +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 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 +passed to the sub-'make'. You can force 'make' to export its value for +'SHELL' by using the 'export' directive, described below. *Note +Choosing the Shell::. + + The special variable 'MAKEFLAGS' is always exported (unless you +unexport it). 'MAKEFILES' is exported if you set it to anything. + + 'make' automatically passes down variable values that were defined on +the command line, by putting them in the 'MAKEFLAGS' variable. *Note +Options/Recursion::. + + Variables are _not_ normally passed down if they were created by +default by 'make' (*note Variables Used by Implicit Rules: Implicit +Variables.). The sub-'make' will define these for itself. + + If you want to export specific variables to a sub-'make', use the +'export' directive, like this: + + export VARIABLE ... + +If you want to _prevent_ a variable from being exported, use the +'unexport' directive, like this: + + unexport VARIABLE ... + +In both of these forms, the arguments to 'export' and 'unexport' are +expanded, and so could be variables or functions which expand to a (list +of) variable names to be (un)exported. + + As a convenience, you can define a variable and export it at the same +time by doing: + + export VARIABLE = value + +has the same result as: + + VARIABLE = value + export VARIABLE + +and + + export VARIABLE := value + +has the same result as: + + VARIABLE := value + export VARIABLE + + Likewise, + + export VARIABLE += value + +is just like: + + VARIABLE += value + export VARIABLE + +*Note Appending More Text to Variables: Appending. + + You may notice that the 'export' and 'unexport' directives work in +'make' in the same way they work in the shell, 'sh'. + + If you want all variables to be exported by default, you can use +'export' by itself: + + export + +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. + + 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 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. + + 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 +which is the depth of the level as a decimal number. The value is '0' +for the top-level 'make'; '1' for a sub-'make', '2' for a +sub-sub-'make', and so on. The incrementation happens when 'make' sets +up the environment for a recipe. + + The main use of 'MAKELEVEL' is to test it in a conditional directive +(*note Conditional Parts of Makefiles: Conditionals.); this way you can +write a makefile that behaves one way if run recursively and another way +if run directly by you. + + You can use the variable 'MAKEFILES' to cause all sub-'make' commands +to use additional makefiles. The value of 'MAKEFILES' is 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-'make' to read before +the usual or specified ones. *Note The Variable 'MAKEFILES': MAKEFILES +Variable. + + +File: make.info, Node: Options/Recursion, Next: -w Option, Prev: Variables/Recursion, Up: Recursion + +5.7.3 Communicating Options to a Sub-'make' +------------------------------------------- + +Flags such as '-s' and '-k' are passed automatically to the sub-'make' +through the variable 'MAKEFLAGS'. This variable is set up automatically +by 'make' to contain the flag letters that 'make' received. Thus, if +you do 'make -ks' then 'MAKEFLAGS' gets the value 'ks'. + + As a consequence, every sub-'make' gets a value for 'MAKEFLAGS' in +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 +appeared on the command line. *Note Overriding Variables: Overriding. + + The options '-C', '-f', '-o', and '-W' are not put into 'MAKEFLAGS'; +these options are not passed down. + + The '-j' option is a special case (*note Parallel Execution: +Parallel.). If you set it to some numeric value 'N' and your operating +system supports it (most any UNIX system will; others typically won't), +the parent 'make' and all the sub-'make's will communicate to ensure +that there are only 'N' jobs running at the same time between them all. +Note that any job that is marked recursive (*note Instead of Executing +Recipes: Instead of Execution.) doesn't count against the total jobs +(otherwise we could get 'N' sub-'make's running and have no slots left +over for any real work!) + + If your operating system doesn't support the above communication, +then no '-j' is added to 'MAKEFLAGS', so that sub-'make's run in +non-parallel mode. If the '-j' option were passed down to sub-'make's +you would get many more jobs running in parallel than you asked for. If +you give '-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. + + If you do not want to pass the other flags down, you must change the +value of 'MAKEFLAGS', for example like this: + + subsystem: + cd subdir && $(MAKE) MAKEFLAGS= + + The command line variable definitions really appear in the variable +'MAKEOVERRIDES', and 'MAKEFLAGS' contains a reference to this variable. +If you do want to pass flags down normally, but don't want to pass down +the command line variable definitions, you can reset 'MAKEOVERRIDES' to +empty, like this: + + MAKEOVERRIDES = + +This is not usually useful to do. However, some systems have a small +fixed limit on the size of the environment, and putting so much +information into the value of 'MAKEFLAGS' can exceed it. If you see the +error message 'Arg list too long', this may be the problem. (For strict +compliance with POSIX.2, changing 'MAKEOVERRIDES' does not affect +'MAKEFLAGS' if the special target '.POSIX' appears in the makefile. You +probably do not care about this.) + + A similar variable 'MFLAGS' exists also, for historical +compatibility. It has the same value as 'MAKEFLAGS' except that it does +not contain the command line variable definitions, and it always begins +with a hyphen unless it is empty ('MAKEFLAGS' begins with a hyphen only +when it begins with an option that has no single-letter version, such as +'--warn-undefined-variables'). 'MFLAGS' was traditionally used +explicitly in the recursive 'make' command, like this: + + subsystem: + cd subdir && $(MAKE) $(MFLAGS) + +but now 'MAKEFLAGS' makes this usage redundant. If you want your +makefiles to be compatible with old 'make' programs, use this technique; +it will work fine with more modern 'make' versions too. + + The 'MAKEFLAGS' variable can also be useful if you want to have +certain options, such as '-k' (*note Summary of Options: Options +Summary.), set each time you run 'make'. You simply put a value for +'MAKEFLAGS' in your environment. You can also set 'MAKEFLAGS' in a +makefile, to specify additional flags that should also be in effect for +that makefile. (Note that you cannot use 'MFLAGS' this way. That +variable is set only for compatibility; 'make' does not interpret a +value you set for it in any way.) + + When 'make' interprets the value of 'MAKEFLAGS' (either from the +environment or from a makefile), it first prepends a hyphen if the value +does not already begin with one. Then it chops the value into words +separated by blanks, and parses these words as if they were options +given on the command line (except that '-C', '-f', '-h', '-o', '-W', and +their long-named versions are ignored; and there is no error for an +invalid option). + + If you do put 'MAKEFLAGS' in your environment, you should be sure not +to include any options that will drastically affect the actions of +'make' and undermine the purpose of makefiles and of 'make' itself. For +instance, the '-t', '-n', and '-q' options, if put in one of these +variables, could have disastrous consequences and would certainly have +at least surprising and probably annoying effects. + + If you'd like to run other implementations of 'make' in addition to +GNU 'make', and hence do not want to add GNU 'make'-specific flags to +the 'MAKEFLAGS' variable, you can add them to the 'GNUMAKEFLAGS' +variable instead. This variable is parsed just before 'MAKEFLAGS', in +the same way as 'MAKEFLAGS'. When 'make' constructs 'MAKEFLAGS' to pass +to a recursive 'make' it will include all flags, even those taken from +'GNUMAKEFLAGS'. As a result, after parsing 'GNUMAKEFLAGS' GNU 'make' +sets this variable to the empty string to avoid duplicating flags during +recursion. + + It's best to use 'GNUMAKEFLAGS' only with flags which won't +materially change the behavior of your makefiles. If your makefiles +require GNU make anyway then simply use 'MAKEFLAGS'. Flags such as +'--no-print-directory' or '--output-sync' may be appropriate for +'GNUMAKEFLAGS'. + + +File: make.info, Node: -w Option, Prev: Options/Recursion, Up: Recursion + +5.7.4 The '--print-directory' Option +------------------------------------ + +If you use several levels of recursive 'make' invocations, the '-w' or +'--print-directory' option can make the output a lot easier to +understand by showing each directory as 'make' starts processing it and +as 'make' finishes processing it. For example, if 'make -w' is run in +the directory '/u/gnu/make', 'make' will print a line of the form: + + make: Entering directory `/u/gnu/make'. + +before doing anything else, and a line of the form: + + make: Leaving directory `/u/gnu/make'. + +when processing is completed. + + Normally, you do not need to specify this option because 'make' does +it for you: '-w' is turned on automatically when you use the '-C' +option, and in sub-'make's. 'make' will not automatically turn on '-w' +if you also use '-s', which says to be silent, or if you use +'--no-print-directory' to explicitly disable it. + + +File: make.info, Node: Canned Recipes, Next: Empty Recipes, Prev: Recursion, Up: Recipes + +5.8 Defining Canned Recipes +=========================== + +When the same sequence of commands is useful in making various targets, +you can define it as a canned sequence with the 'define' directive, and +refer to the canned sequence from the recipes for those targets. The +canned sequence is actually a variable, so the name must not conflict +with other variable names. + + Here is an example of defining a canned recipe: + + define run-yacc = + yacc $(firstword $^) + mv y.tab.c $@ + endef + +Here 'run-yacc' is the name of the variable being defined; 'endef' marks +the end of the definition; the lines in between are the commands. The +'define' directive does not expand variable references and function +calls in the canned sequence; the '$' characters, parentheses, variable +names, and so on, all become part of the value of the variable you are +defining. *Note Defining Multi-Line Variables: Multi-Line, for a +complete explanation of 'define'. + + The first command in this example runs Yacc on the first prerequisite +of whichever rule uses the canned sequence. The output file from Yacc +is always named 'y.tab.c'. The second command moves the output to the +rule's target file name. + + To use the canned sequence, substitute the variable into the recipe +of a rule. You can substitute it like any other variable (*note Basics +of Variable References: Reference.). Because variables defined by +'define' are recursively expanded variables, all the variable references +you wrote inside the 'define' are expanded now. For example: + + foo.c : foo.y + $(run-yacc) + +'foo.y' will be substituted for the variable '$^' when it occurs in +'run-yacc''s value, and 'foo.c' for '$@'. + + This is a realistic example, but this particular one is not needed in +practice because 'make' has an implicit rule to figure out these +commands based on the file names involved (*note Using Implicit Rules: +Implicit Rules.). + + In recipe execution, each line of a canned sequence is treated just +as if the line appeared on its own in the rule, preceded by a tab. In +particular, 'make' invokes a separate sub-shell for each line. You can +use the special prefix characters that affect command lines ('@', '-', +and '+') on each line of a canned sequence. *Note Writing Recipes in +Rules: Recipes. For example, using this canned sequence: + + define frobnicate = + @echo "frobnicating target $@" + frob-step-1 $< -o $@-step-1 + frob-step-2 $@-step-1 -o $@ + endef + +'make' will not echo the first line, the 'echo' command. But it _will_ +echo the following two recipe lines. + + On the other hand, prefix characters on the recipe line that refers +to a canned sequence apply to every line in the sequence. So the rule: + + frob.out: frob.in + @$(frobnicate) + +does not echo _any_ recipe lines. (*Note Recipe Echoing: Echoing, for a +full explanation of '@'.) + + +File: make.info, Node: Empty Recipes, Prev: Canned Recipes, Up: Recipes + +5.9 Using Empty Recipes +======================= + +It is sometimes useful to define recipes which do nothing. This is done +simply by giving a recipe that consists of nothing but whitespace. For +example: + + target: ; + +defines an empty recipe for 'target'. You could also use a line +beginning with a recipe prefix character to define an empty recipe, but +this would be confusing because such a line looks empty. + + 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 '.DEFAULT' special target; +*note Implicit Rules:: and *note Defining Last-Resort Default Rules: +Last Resort.). + + 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 +exist the empty recipe ensures that 'make' won't complain that it +doesn't know how to build the target, and 'make' will assume the target +is out of date. + + You may be inclined to define empty recipes for targets that are not +actual files, but only exist so that their prerequisites can be remade. +However, this is not the best way to do that, because the prerequisites +may not be remade properly if the target file actually does exist. +*Note Phony Targets: Phony Targets, for a better way to do this. + + +File: make.info, Node: Using Variables, Next: Conditionals, Prev: Recipes, Up: Top + +6 How to Use Variables +********************** + +A "variable" is a name defined in a makefile to represent a string of +text, called the variable's "value". These values are substituted by +explicit request into targets, prerequisites, recipes, and other parts +of the makefile. (In some other versions of 'make', variables are +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. 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 write output in, or anything else you can imagine. + + A variable name may be any sequence of characters not containing ':', +'#', '=', or whitespace. However, variable names containing characters +other than letters, numbers, and underscores should be considered +carefully, as in some shells they cannot be passed through the +environment to a sub-'make' (*note Communicating Variables to a +Sub-'make': Variables/Recursion.). Variable names beginning with '.' +and an uppercase letter may be given special meaning in future versions +of 'make'. + + Variable names are case-sensitive. The names 'foo', 'FOO', and 'Foo' +all refer to different variables. + + It is traditional to use upper case letters in variable names, but we +recommend using lower case letters for variable names that serve +internal purposes in the makefile, and reserving upper case for +parameters that control implicit rules or for parameters that the user +should override with command options (*note Overriding Variables: +Overriding.). + + A few variables have names that are a single punctuation character or +just a few characters. These are the "automatic variables", and they +have particular specialized uses. *Note Automatic Variables::. + +* Menu: + +* Reference:: How to use the value of a variable. +* Flavors:: Variables come in two flavors. +* Advanced:: Advanced features for referencing a variable. +* Values:: All the ways variables get their values. +* Setting:: How to set a variable in the makefile. +* Appending:: How to append more text to the old value + of a variable. +* Override Directive:: How to set a variable in the makefile even if + the user has set it with a command argument. +* Multi-Line:: An alternate way to set a variable + to a multi-line string. +* Undefine Directive:: How to undefine a variable so that it appears + as if it was never set. +* Environment:: Variable values can come from the environment. +* Target-specific:: Variable values can be defined on a per-target + basis. +* Pattern-specific:: Target-specific variable values can be applied + to a group of targets that match a pattern. +* Suppressing Inheritance:: Suppress inheritance of variables. +* Special Variables:: Variables with special meaning or behavior. + + +File: make.info, Node: Reference, Next: Flavors, Prev: Using Variables, Up: Using Variables + +6.1 Basics of Variable References +================================= + +To substitute a variable's value, write a dollar sign followed by the +name of the variable in parentheses or braces: either '$(foo)' or +'${foo}' is a valid reference to the variable 'foo'. This special +significance of '$' is why you must write '$$' to have the effect of a +single dollar sign in a file name or recipe. + + Variable references can be used in any context: targets, +prerequisites, recipes, most directives, and new variable values. Here +is an example of a common case, where a variable holds the names of all +the object files in a program: + + objects = program.o foo.o utils.o + program : $(objects) + cc -o program $(objects) + + $(objects) : defs.h + + Variable references work by strict textual substitution. Thus, the +rule + + foo = c + prog.o : prog.$(foo) + $(foo)$(foo) -$(foo) prog.$(foo) + +could be used to compile a C program 'prog.c'. Since spaces before the +variable value are ignored in variable assignments, the value of 'foo' +is precisely 'c'. (Don't actually write your makefiles this way!) + + A dollar sign followed by a character other than a dollar sign, +open-parenthesis or open-brace treats that single character as the +variable name. Thus, you could reference the variable 'x' with '$x'. +However, this practice can lead to confusion (e.g., '$foo' refers to the +variable 'f' followed by the string 'oo') so we recommend using +parentheses or braces around all variables, even single-letter +variables, unless omitting them gives significant readability +improvements. One place where readability is often improved is +automatic variables (*note Automatic Variables::). + + +File: make.info, Node: Flavors, Next: Advanced, Prev: Reference, Up: Using Variables + +6.2 The Two Flavors of Variables +================================ + +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 + +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 +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 +"recursive expansion". + + For example, + + foo = $(bar) + bar = $(ugh) + ugh = Huh? + + all:;echo $(foo) + +will echo 'Huh?': '$(foo)' expands to '$(bar)' which expands to '$(ugh)' +which finally expands to 'Huh?'. + + This flavor of variable is the only sort supported by most other +versions of 'make'. It has its advantages and its disadvantages. An +advantage (most would say) is that: + + CFLAGS = $(include_dirs) -O + include_dirs = -Ifoo -Ibar + +will do what was intended: when 'CFLAGS' is expanded in a recipe, it +will expand to '-Ifoo -Ibar -O'. A major disadvantage is that you +cannot append something on the end of a variable, as in + + CFLAGS = $(CFLAGS) -O + +because it will cause an infinite loop in the variable expansion. +(Actually 'make' detects the infinite loop and reports an error.) + + Another disadvantage is that any functions (*note Functions for +Transforming Text: Functions.) referenced in the definition will be +executed every time the variable is expanded. This makes 'make' run +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. + + +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 '::=' is added to the POSIX standard for POSIX Issue 8). + + 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 + x := later + +is equivalent to + + y := foo bar + x := later + + 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 +'MAKELEVEL', which is changed when it is passed down from level to +level. (*Note Communicating Variables to a Sub-'make': +Variables/Recursion, for information about 'MAKELEVEL'.) + + ifeq (0,${MAKELEVEL}) + whoami := $(shell whoami) + host-type := $(shell arch) + MAKE := ${MAKE} host-type=${host-type} whoami=${whoami} + endif + +An advantage of this use of ':=' is that a typical 'descend into a +directory' recipe then looks like this: + + ${subdirs}: + ${MAKE} -C $@ all + + Simply expanded variables generally make complicated makefile +programming more predictable because they work like variables in most +programming languages. They allow you to redefine a variable using its +own value (or its value processed in some way by one of the expansion +functions) and to use the expansion functions much more efficiently +(*note Functions for Transforming Text: Functions.). + + You can also use them to introduce controlled leading whitespace into +variable values. Leading whitespace characters are discarded from your +input before substitution of variable references and function calls; +this means you can include leading spaces in a variable value by +protecting them with variable references, like this: + + nullstring := + space := $(nullstring) # end of the line + +Here the value of the variable 'space' is precisely one space. The +comment '# end of the line' is included here just for clarity. Since +trailing space characters are _not_ stripped from variable values, just +a space at the end of the line would have the same effect (but be rather +hard to read). If you put whitespace at the end of a variable value, it +is a good idea to put a comment like that at the end of the line to make +your intent clear. Conversely, if you do _not_ want any whitespace +characters at the end of your variable value, you must remember not to +put a random comment on the end of the line after some whitespace, such +as this: + + dir := /foo/bar # directory to put the frobs in + +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!) + + +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: + + FOO ?= bar + +is exactly equivalent to this (*note The 'origin' Function: Origin +Function.): + + ifeq ($(origin FOO), undefined) + FOO = bar + endif + + Note that a variable set to an empty value is still defined, so '?=' +will not set that variable. + + +File: make.info, Node: Advanced, Next: Values, Prev: Flavors, Up: Using Variables + +6.3 Advanced Features for Reference to Variables +================================================ + +This section describes some advanced features you can use to reference +variables in more flexible ways. + +* Menu: + +* Substitution Refs:: Referencing a variable with + substitutions on the value. +* Computed Names:: Computing the name of the variable to refer to. + + +File: make.info, Node: Substitution Refs, Next: Computed Names, Prev: Advanced, Up: Advanced + +6.3.1 Substitution References +----------------------------- + +A "substitution reference" substitutes the value of a variable with +alterations that you specify. It has the form '$(VAR:A=B)' (or +'${VAR:A=B}') and its meaning is to take the value of the variable VAR, +replace every A at the end of a word with B in that value, and +substitute the resulting string. + + When we say "at the end of a word", we mean that A must appear either +followed by whitespace or at the end of the value in order to be +replaced; other occurrences of A in the value are unaltered. For +example: + + foo := a.o b.o l.a c.o + bar := $(foo:.o=.c) + +sets 'bar' to 'a.c b.c l.a c.c'. *Note Setting Variables: Setting. + + A substitution reference is shorthand for the 'patsubst' expansion +function (*note Functions for String Substitution and Analysis: Text +Functions.): '$(VAR:A=B)' is equivalent to '$(patsubst %A,%B,VAR)'. We +provide substitution references as well as 'patsubst' for compatibility +with other implementations of 'make'. + + Another type of substitution reference lets you use the full power of +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: + + foo := a.o b.o l.a c.o + bar := $(foo:%.o=%.c) + +sets 'bar' to 'a.c b.c l.a c.c'. + + +File: make.info, Node: Computed Names, Prev: Substitution Refs, Up: Advanced + +6.3.2 Computed Variable Names +----------------------------- + +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 +example, + + x = y + y = z + a := $($(x)) + +defines 'a' as 'z': the '$(x)' inside '$($(x))' expands to 'y', so +'$($(x))' expands to '$(y)' which in turn expands to 'z'. Here the name +of the variable to reference is not stated explicitly; it is computed by +expansion of '$(x)'. The reference '$(x)' here is nested within the +outer variable reference. + + The previous example shows two levels of nesting, but any number of +levels is possible. For example, here are three levels: + + x = y + y = z + z = u + a := $($($(x))) + +Here the innermost '$(x)' expands to 'y', so '$($(x))' expands to '$(y)' +which in turn expands to 'z'; now we have '$(z)', which becomes 'u'. + + References to recursively-expanded variables within a variable name +are re-expanded in the usual fashion. For example: + + x = $(y) + y = z + z = Hello + a := $($(x)) + +defines 'a' as 'Hello': '$($(x))' becomes '$($(y))' which becomes '$(z)' +which becomes 'Hello'. + + Nested variable references can also contain modified references and +function invocations (*note Functions for Transforming Text: +Functions.), just like any other reference. For example, using the +'subst' function (*note Functions for String Substitution and Analysis: +Text Functions.): + + x = variable1 + variable2 := Hello + y = $(subst 1,2,$(x)) + z = y + a := $($($(z))) + +eventually defines 'a' as 'Hello'. It is doubtful that anyone would +ever want to write a nested reference as convoluted as this one, but it +works: '$($($(z)))' expands to '$($(y))' which becomes '$($(subst +1,2,$(x)))'. This gets the value 'variable1' from 'x' and changes it by +substitution to 'variable2', so that the entire string becomes +'$(variable2)', a simple variable reference whose value is 'Hello'. + + A computed variable name need not consist entirely of a single +variable reference. It can contain several variable references, as well +as some invariant text. For example, + + a_dirs := dira dirb + 1_dirs := dir1 dir2 + + a_files := filea fileb + 1_files := file1 file2 + + ifeq "$(use_a)" "yes" + a1 := a + else + a1 := 1 + endif + + ifeq "$(use_dirs)" "yes" + df := dirs + else + df := files + endif + + dirs := $($(a1)_$(df)) + +will give 'dirs' the same value as 'a_dirs', '1_dirs', 'a_files' or +'1_files' depending on the settings of 'use_a' and 'use_dirs'. + + Computed variable names can also be used in substitution references: + + a_objects := a.o b.o c.o + 1_objects := 1.o 2.o 3.o + + sources := $($(a1)_objects:.o=.c) + +defines 'sources' as either 'a.c b.c c.c' or '1.c 2.c 3.c', depending on +the value of 'a1'. + + The only restriction on this sort of use of nested variable +references is that they cannot specify part of the name of a function to +be called. This is because the test for a recognized function name is +done before the expansion of nested references. For example, + + ifdef do_sort + func := sort + else + func := strip + endif + + bar := a d b g q c + + foo := $($(func) $(bar)) + +attempts to give 'foo' the value of the variable 'sort a d b g q c' or +'strip a d b g q c', rather than giving 'a d b g q c' as the argument to +either the 'sort' or the 'strip' function. This restriction could be +removed in the future if that change is shown to be a good idea. + + You can also use computed variable names in the left-hand side of a +variable assignment, or in a 'define' directive, as in: + + dir = foo + $(dir)_sources := $(wildcard $(dir)/*.c) + define $(dir)_print = + lpr $($(dir)_sources) + endef + +This example defines the variables 'dir', 'foo_sources', and +'foo_print'. + + Note that "nested variable references" are quite different from +"recursively expanded variables" (*note The Two Flavors of Variables: +Flavors.), though both are used together in complex ways when doing +makefile programming. + + +File: make.info, Node: Values, Next: Setting, Prev: Advanced, Up: Using Variables + +6.4 How Variables Get Their Values +================================== + +Variables can get values in several different ways: + + * You can specify an overriding value when you run 'make'. *Note + Overriding Variables: Overriding. + + * You can specify a value in the makefile, either with an assignment + (*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. + + * Several "automatic" variables are given new values for each rule. + Each of these has a single conventional use. *Note Automatic + Variables::. + + * Several variables have constant initial values. *Note Variables + Used by Implicit Rules: Implicit Variables. + + +File: make.info, Node: Setting, Next: Appending, Prev: Values, Up: Using Variables + +6.5 Setting Variables +===================== + +To set a variable from the makefile, write a line starting with the +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' 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. 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 +use. + + There is no limit on the length of the value of a variable except the +amount of memory on the computer. You can split the value of a variable +into multiple physical lines for readability (*note Splitting Long +Lines: Splitting Lines.). + + Most variable names are considered to have the empty string as a +value if you have never set them. Several variables have built-in +initial values that are not empty, but you can set them in the usual +ways (*note Variables Used by Implicit Rules: Implicit Variables.). +Several special variables are set automatically to a new value for each +rule; these are called the "automatic" variables (*note Automatic +Variables::). + + If you'd like a variable to be set to a value only if it's not +already set, then you can use the shorthand operator '?=' instead of +'='. These two settings of the variable 'FOO' are identical (*note The +'origin' Function: Origin Function.): + + FOO ?= bar + +and + + ifeq ($(origin FOO), undefined) + FOO = bar + endif + + The shell assignment operator '!=' can be used to execute a shell +script and set a variable to its output. This operator first evaluates +the right-hand side, then passes that result to the shell for execution. +If the result of the execution ends in a newline, that one newline is +removed; all other newlines are replaced by spaces. The resulting +string is then placed into the named recursively-expanded variable. For +example: + + hash != printf '\043' + file_list != find . -name '*.c' + + If the result of the execution could produce a '$', and you don't +intend what follows that to be interpreted as a make variable or +function reference, then you must replace every '$' with '$$' as part of +the execution. Alternatively, you can set a simply expanded variable to +the result of running a program using the 'shell' function call. *Note +The 'shell' Function: Shell Function. For example: + + hash := $(shell printf '\043') + var := $(shell find . -name "*.c") + + As with the 'shell' function, the exit status of the just-invoked +shell script is stored in the '.SHELLSTATUS' variable. + + +File: make.info, Node: Appending, Next: Override Directive, Prev: Setting, Up: Using Variables + +6.6 Appending More Text to Variables +==================================== + +Often it is useful to add more text to the value of a variable already +defined. You do this with a line containing '+=', like this: + + objects += another.o + +This takes the value of the variable 'objects', and adds the text +'another.o' to it (preceded by a single space, if it has a value +already). Thus: + + objects = main.o foo.o bar.o utils.o + objects += another.o + +sets 'objects' to 'main.o foo.o bar.o utils.o another.o'. + + Using '+=' is similar to: + + objects = main.o foo.o bar.o utils.o + objects := $(objects) another.o + +but differs in ways that become important when you use more complex +values. + + When the variable in question has not been defined before, '+=' acts +just like normal '=': it defines a recursively-expanded variable. +However, when there _is_ a previous definition, exactly what '+=' does +depends on what flavor of variable you defined originally. *Note The +Two Flavors of Variables: Flavors, for an explanation of the two flavors +of variables. + + When you add to a variable's value with '+=', 'make' acts essentially +as if you had included the extra text in the initial definition of the +variable. If you defined it first with ':=' or '::=', making it a +simply-expanded variable, '+=' adds to that simply-expanded definition, +and expands the new text before appending it to the old value just as +':=' does (see *note Setting Variables: Setting, for a full explanation +of ':=' or '::='). In fact, + + variable := value + variable += more + +is exactly equivalent to: + + variable := value + variable := $(variable) more + + On the other hand, when you use '+=' with a variable that you defined +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 + +is roughly equivalent to: + + temp = value + variable = $(temp) more + +except that of course it never defines a variable called 'temp'. The +importance of this comes when the variable's old value contains variable +references. Take this common example: + + CFLAGS = $(includes) -O + ... + CFLAGS += -pg # enable profiling + +The first line defines the 'CFLAGS' variable with a reference to another +variable, 'includes'. ('CFLAGS' is used by the rules for C compilation; +*note Catalogue of Built-In Rules: Catalogue of Rules.) Using '=' for +the definition makes 'CFLAGS' a recursively-expanded variable, meaning +'$(includes) -O' is _not_ expanded when 'make' processes the definition +of 'CFLAGS'. Thus, 'includes' need not be defined yet for its value to +take effect. It only has to be defined before any reference to +'CFLAGS'. If we tried to append to the value of 'CFLAGS' without using +'+=', we might do it like this: + + CFLAGS := $(CFLAGS) -pg # enable profiling + +This is pretty close, but not quite what we want. Using ':=' redefines +'CFLAGS' as a simply-expanded variable; this means 'make' expands the +text '$(CFLAGS) -pg' before setting the variable. If 'includes' is not +yet defined, we get ' -O -pg', and a later definition of 'includes' will +have no effect. Conversely, by using '+=' we set 'CFLAGS' to the +_unexpanded_ value '$(includes) -O -pg'. Thus we preserve the reference +to 'includes', so if that variable gets defined at any later point, a +reference like '$(CFLAGS)' still uses its value. + + +File: make.info, Node: Override Directive, Next: Multi-Line, Prev: Appending, Up: Using Variables + +6.7 The 'override' Directive +============================ + +If a variable has been set with a command argument (*note Overriding +Variables: Overriding.), 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 'override' directive, +which is a line that looks like this: + + override VARIABLE = VALUE + +or + + override VARIABLE := VALUE + + To append more text to a variable defined on the command line, use: + + override VARIABLE += MORE TEXT + +*Note Appending More Text to Variables: Appending. + + Variable assignments marked with the 'override' flag have a higher +priority than all other assignments, except another 'override'. +Subsequent assignments or appends to this variable which are not marked +'override' will be ignored. + + The 'override' directive was not invented for escalation in the war +between makefiles and command arguments. It was invented so you can +alter and add to values that the user specifies with command arguments. + + For example, suppose you always want the '-g' switch when you run the +C compiler, but you would like to allow the user to specify the other +switches with a command argument just as usual. You could use this +'override' directive: + + override CFLAGS += -g + + You can also use 'override' directives with 'define' directives. +This is done as you might expect: + + override define foo = + bar + endef + +*Note Defining Multi-Line Variables: Multi-Line. + + +File: make.info, Node: Multi-Line, Next: Undefine Directive, Prev: Override Directive, Up: Using Variables + +6.8 Defining Multi-Line Variables +================================= + +Another way to set the value of a variable is to use the 'define' +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 (*note Defining Canned Recipes: Canned +Recipes.), and also sections of makefile syntax to use with 'eval' +(*note Eval Function::). + + The 'define' directive is followed on the same line by the name of +the variable being defined and an (optional) assignment operator, and +nothing more. The value to give the variable appears on the following +lines. The end of the value is marked by a line containing just the +word 'endef'. + + Aside from this difference in syntax, 'define' works just like any +other variable definition. The variable name may contain function and +variable references, which are expanded when the directive is read to +find the actual variable name to use. + + The final newline before the 'endef' is not included in the value; if +you want your value to contain a trailing newline you must include a +blank line. For example in order to define a variable that contains a +newline character you must use _two_ empty lines, not one: + + define newline + + + endef + + You may omit the variable assignment operator if you prefer. If +omitted, 'make' assumes it to be '=' and creates a recursively-expanded +variable (*note The Two Flavors of Variables: Flavors.). When using a +'+=' operator, the value is appended to the previous value as with any +other append operation: with a single space separating the old and new +values. + + You may nest 'define' directives: 'make' will keep track of nested +directives and report an error if they are not all properly closed with +'endef'. Note that lines beginning with the recipe prefix character are +considered part of a recipe, so any 'define' or 'endef' strings +appearing on such a line will not be considered 'make' directives. + + define two-lines + echo foo + echo $(bar) + endef + + When used in a recipe, the previous example is functionally +equivalent to this: + + two-lines = echo foo; echo $(bar) + +since two commands separated by semicolon behave much like two separate +shell commands. However, note that using two separate lines means +'make' will invoke the shell twice, running an independent sub-shell for +each line. *Note Recipe Execution: Execution. + + If you want variable definitions made with 'define' to take +precedence over command-line variable definitions, you can use the +'override' directive together with 'define': + + override define two-lines = + foo + $(bar) + endef + +*Note The 'override' Directive: Override Directive. + + +File: make.info, Node: Undefine Directive, Next: Environment, Prev: Multi-Line, Up: Using Variables + +6.9 Undefining Variables +======================== + +If you want to clear a variable, setting its value to empty is usually +sufficient. Expanding such a variable will yield the same result (empty +string) regardless of whether it was set or not. However, if you are +using the 'flavor' (*note Flavor Function::) and 'origin' (*note Origin +Function::) functions, there is a difference between a variable that was +never set and a variable with an empty value. In such situations you +may want to use the 'undefine' directive to make a variable appear as if +it was never set. For example: + + foo := foo + bar = bar + + undefine foo + undefine bar + + $(info $(origin foo)) + $(info $(flavor bar)) + + This example will print "undefined" for both variables. + + If you want to undefine a command-line variable definition, you can +use the 'override' directive together with 'undefine', similar to how +this is done for variable definitions: + + override undefine CFLAGS + + +File: make.info, Node: Environment, Next: Target-specific, Prev: Undefine Directive, Up: Using Variables + +6.10 Variables from the Environment +=================================== + +Variables in 'make' can come from the environment in which 'make' is +run. Every environment variable that 'make' sees when it starts up is +transformed into a 'make' variable with the same name and value. +However, an explicit assignment in the makefile, or with a command +argument, overrides the environment. (If the '-e' flag is specified, +then values from the environment override assignments in the makefile. +*Note Summary of Options: Options Summary. But this is not recommended +practice.) + + Thus, by setting the variable 'CFLAGS' in your environment, you can +cause all C compilations in most makefiles to use the compiler switches +you prefer. This is safe for variables with standard or conventional +meanings because you know that no makefile will use them for other +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, 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 +is not wise for makefiles to depend for their functioning on environment +variables set up outside their control, since this would cause different +users to get different results from the same makefile. This is against +the whole purpose of most makefiles. + + Such problems would be especially likely with the variable 'SHELL', +which is normally present in the environment to specify the user's +choice of interactive shell. It would be very undesirable for this +choice to affect 'make'; so, 'make' handles the 'SHELL' environment +variable in a special way; see *note Choosing the Shell::. + + +File: make.info, Node: Target-specific, Next: Pattern-specific, Prev: Environment, Up: Using Variables + +6.11 Target-specific Variable Values +==================================== + +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). 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::). + + 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 +of a target's recipe (and in other target-specific assignments). + + Set a target-specific variable value like this: + + TARGET ... : VARIABLE-ASSIGNMENT + + Target-specific variable assignments can be prefixed with any or all +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 '::='), 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" +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 +environment if the '-e' option is in force) will take precedence. +Specifying the 'override' directive will allow the target-specific +variable value to be preferred. + + There is one more special feature of target-specific variables: when +you define a target-specific variable that variable value is also in +effect for all prerequisites of this target, and all their +prerequisites, etc. (unless those prerequisites override that variable +with their own target-specific variable value). So, for example, a +statement like this: + + prog : CFLAGS = -g + prog : prog.o foo.o bar.o + +will set 'CFLAGS' to '-g' in the recipe for 'prog', but it will also set +'CFLAGS' to '-g' in the recipes that create 'prog.o', 'foo.o', and +'bar.o', and any recipes which create their prerequisites. + + Be aware that a given prerequisite will only be built once per +invocation of make, at most. If the same file is a prerequisite of +multiple targets, and each of those targets has a different value for +the same target-specific variable, then the first target to be built +will cause that prerequisite to be built and the prerequisite will +inherit the target-specific value from the first target. It will ignore +the target-specific values from any other targets. + + +File: make.info, Node: Pattern-specific, Next: Suppressing Inheritance, Prev: Target-specific, Up: Using Variables + +6.12 Pattern-specific Variable Values +===================================== + +In addition to target-specific variable values (*note Target-specific +Variable Values: Target-specific.), GNU 'make' supports pattern-specific +variable values. In this form, the variable is defined for any target +that matches the pattern specified. + + Set a pattern-specific variable value like this: + + PATTERN ... : VARIABLE-ASSIGNMENT + where PATTERN is a %-pattern. As with target-specific variable +values, multiple PATTERN values create a pattern-specific variable value +for each pattern individually. The VARIABLE-ASSIGNMENT can be any valid +form of assignment. Any command line variable setting will take +precedence, unless 'override' is specified. + + For example: + + %.o : CFLAGS = -O + +will assign 'CFLAGS' the value of '-O' for all targets matching the +pattern '%.o'. + + If a target matches more than one pattern, the matching +pattern-specific variables with longer stems are interpreted first. +This results in more specific variables taking precedence over the more +generic ones, for example: + + %.o: %.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ + + lib/%.o: CFLAGS := -fPIC -g + %.o: CFLAGS := -g + + all: foo.o lib/bar.o + + In this example the first definition of the 'CFLAGS' variable will be +used to update 'lib/bar.o' even though the second one also applies to +this target. Pattern-specific variables which result in the same stem +length are considered in the order in which they were defined in the +makefile. + + Pattern-specific variables are searched after any target-specific +variables defined explicitly for that target, and before target-specific +variables defined for the parent target. + + +File: make.info, Node: Suppressing Inheritance, Next: Special Variables, Prev: Pattern-specific, Up: Using Variables + +6.13 Suppressing Inheritance +============================ + +As described in previous sections, 'make' variables are inherited by +prerequisites. This capability allows you to modify the behavior of a +prerequisite based on which targets caused it to be rebuilt. For +example, you might set a target-specific variable on a 'debug' target, +then running 'make debug' will cause that variable to be inherited by +all prerequisites of 'debug', while just running 'make all' (for +example) would not have that assignment. + + Sometimes, however, you may not want a variable to be inherited. For +these situations, 'make' provides the 'private' modifier. Although this +modifier can be used with any variable assignment, it makes the most +sense with target- and pattern-specific variables. Any variable marked +'private' will be visible to its local target but will not be inherited +by prerequisites of that target. A global variable marked 'private' +will be visible in the global scope but will not be inherited by any +target, and hence will not be visible in any recipe. + + As an example, consider this makefile: + EXTRA_CFLAGS = + + prog: private EXTRA_CFLAGS = -L/usr/local/lib + prog: a.o b.o + + Due to the 'private' modifier, 'a.o' and 'b.o' will not inherit the +'EXTRA_CFLAGS' variable assignment from the 'prog' target. + + +File: make.info, Node: Special Variables, Prev: Suppressing Inheritance, Up: Using Variables + +6.14 Other Special Variables +============================ + +GNU 'make' supports some variables that have special properties. + +'MAKEFILE_LIST' + Contains the name of each makefile that is parsed by 'make', in the + order in which it was parsed. The name is appended just before + 'make' begins to parse the makefile. Thus, if the first thing a + makefile does is examine the last word in this variable, it will be + the name of the current makefile. Once the current makefile has + used 'include', however, the last word will be the just-included + makefile. + + If a makefile named 'Makefile' has this content: + + name1 := $(lastword $(MAKEFILE_LIST)) + + include inc.mk + + name2 := $(lastword $(MAKEFILE_LIST)) + + all: + @echo name1 = $(name1) + @echo name2 = $(name2) + + then you would expect to see this output: + + name1 = Makefile + name2 = inc.mk + +'.DEFAULT_GOAL' + Sets the default goal to be used if no targets were specified on + the command line (*note Arguments to Specify the Goals: Goals.). + The '.DEFAULT_GOAL' variable allows you to discover the current + default goal, restart the default goal selection algorithm by + clearing its value, or to explicitly set the default goal. The + following example illustrates these cases: + + # Query the default goal. + ifeq ($(.DEFAULT_GOAL),) + $(warning no default goal is set) + endif + + .PHONY: foo + foo: ; @echo $@ + + $(warning default goal is $(.DEFAULT_GOAL)) + + # Reset the default goal. + .DEFAULT_GOAL := + + .PHONY: bar + bar: ; @echo $@ + + $(warning default goal is $(.DEFAULT_GOAL)) + + # Set our own. + .DEFAULT_GOAL := foo + + This makefile prints: + + no default goal is set + default goal is foo + default goal is bar + foo + + Note that assigning more than one target name to '.DEFAULT_GOAL' is + invalid and will result in an error. + +'MAKE_RESTARTS' + This variable is set only if this instance of 'make' has restarted + (*note How Makefiles Are Remade: Remaking Makefiles.): it will + contain the number of times this instance has restarted. Note this + is not the same as recursion (counted by the 'MAKELEVEL' variable). + You should not set, modify, or export this variable. + +'MAKE_TERMOUT' +'MAKE_TERMERR' + When 'make' starts it will check whether stdout and stderr will + show their output on a terminal. If so, it will set 'MAKE_TERMOUT' + and 'MAKE_TERMERR', respectively, to the name of the terminal + device (or 'true' if this cannot be determined). If set these + variables will be marked for export. These variables will not be + changed by 'make' and they will not be modified if already set. + + These values can be used (particularly in combination with output + synchronization (*note Output During Parallel Execution: Parallel + Output.) to determine whether 'make' itself is writing to a + terminal; they can be tested to decide whether to force recipe + commands to generate colorized output for example. + + If you invoke a sub-'make' and redirect its stdout or stderr it is + your responsibility to reset or unexport these variables as well, + if your makefiles rely on them. + +'.RECIPEPREFIX' + The first character of the value of this variable is used as the + character make assumes is introducing a recipe line. If the + variable is empty (as it is by default) that character is the + standard tab character. For example, this is a valid makefile: + + .RECIPEPREFIX = > + all: + > @echo Hello, world + + The value of '.RECIPEPREFIX' can be changed multiple times; once + set it stays in effect for all rules parsed until it is modified. + +'.VARIABLES' + Expands to a list of the _names_ of all global variables defined so + far. This includes variables which have empty values, as well as + built-in variables (*note Variables Used by Implicit Rules: + Implicit Variables.), but does not include any variables which are + only defined in a target-specific context. Note that any value you + assign to this variable will be ignored; it will always return its + special value. + +'.FEATURES' + Expands to a list of special features supported by this version of + 'make'. Possible values include, but are not limited to: + + 'archives' + Supports 'ar' (archive) files using special file name syntax. + *Note Using 'make' to Update Archive Files: Archives. + + 'check-symlink' + Supports the '-L' ('--check-symlink-times') flag. *Note + Summary of Options: Options Summary. + + 'else-if' + 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. + + 'order-only' + 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 + Match: Pattern Match. + + 'target-specific' + Supports target-specific and pattern-specific variable + assignments. *Note Target-specific Variable Values: + Target-specific. + + 'undefine' + Supports the 'undefine' directive. *Note Undefine + Directive::. + +'.INCLUDE_DIRS' + Expands to a list of directories that 'make' searches for included + 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 + targets for which it is set. These prerequisites differ from + normal prerequisites in that they do not appear in any of the + automatic variables (*note Automatic Variables::). This allows + prerequisites to be defined which do not impact the recipe. + + Consider a rule to link a program: + + myprog: myprog.o file1.o file2.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) + + Now suppose you want to enhance this makefile to ensure that + updates to the compiler cause the program to be re-linked. You can + add the compiler as a prerequisite, but you must ensure that it's + not passed as an argument to link command. You'll need something + like this: + + myprog: myprog.o file1.o file2.o $(CC) + $(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 + target-specific variables provides a simpler solution: + + myprog: myprog.o file1.o file2.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) + myprog: .EXTRA_PREREQS = $(CC) + + This feature can also be useful if you want to add prerequisites to + a makefile you cannot easily modify: you can create a new file such + as 'extra.mk': + + myprog: .EXTRA_PREREQS = $(CC) + + then invoke 'make -f extra.mk -f Makefile'. + + Setting '.EXTRA_PREREQS' globally will cause those prerequisites to + be added to all targets (which did not themselves override it with + a target-specific value). Note 'make' is smart enough not to add a + prerequisite listed in '.EXTRA_PREREQS' as a prerequisite to + itself. + + +File: make.info, Node: Conditionals, Next: Functions, Prev: Using Variables, Up: Top + +7 Conditional Parts of Makefiles +******************************** + +A "conditional" directive causes part of a makefile to be obeyed 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 'make' actually "sees" in +the makefile, so they _cannot_ be used to control recipes at the time of +execution. + +* Menu: + +* Conditional Example:: Example of a conditional +* Conditional Syntax:: The syntax of conditionals. +* Testing Flags:: Conditionals that test flags. + + +File: make.info, Node: Conditional Example, Next: Conditional Syntax, Prev: Conditionals, Up: Conditionals + +7.1 Example of a Conditional +============================ + +The following example of a conditional tells 'make' to use one set of +libraries if the 'CC' variable is 'gcc', and a different set of +libraries otherwise. It works by controlling which of two recipe lines +will be used for the rule. The result is that 'CC=gcc' as an argument +to 'make' changes not only which compiler is used but also which +libraries are linked. + + libs_for_gcc = -lgnu + normal_libs = + + foo: $(objects) + ifeq ($(CC),gcc) + $(CC) -o foo $(objects) $(libs_for_gcc) + else + $(CC) -o foo $(objects) $(normal_libs) + endif + + This conditional uses three directives: one 'ifeq', one 'else' and +one 'endif'. + + The 'ifeq' directive begins the conditional, and specifies the +condition. It contains two arguments, separated by a comma and +surrounded by parentheses. Variable substitution is performed on both +arguments and then they are compared. The lines of the makefile +following the 'ifeq' are obeyed if the two arguments match; otherwise +they are ignored. + + The 'else' directive causes the following lines to be obeyed if the +previous conditional failed. In the example above, this means that the +second alternative linking command is used whenever the first +alternative is not used. It is optional to have an 'else' in a +conditional. + + The 'endif' directive ends the conditional. Every conditional must +end with an 'endif'. Unconditional makefile text follows. + + As this example illustrates, conditionals work at the textual level: +the lines of the conditional are treated as part of the makefile, or +ignored, according to the condition. This is why the larger syntactic +units of the makefile, such as rules, may cross the beginning or the end +of the conditional. + + When the variable 'CC' has the value 'gcc', the above example has +this effect: + + foo: $(objects) + $(CC) -o foo $(objects) $(libs_for_gcc) + +When the variable 'CC' has any other value, the effect is this: + + foo: $(objects) + $(CC) -o foo $(objects) $(normal_libs) + + Equivalent results can be obtained in another way by conditionalizing +a variable assignment and then using the variable unconditionally: + + libs_for_gcc = -lgnu + normal_libs = + + ifeq ($(CC),gcc) + libs=$(libs_for_gcc) + else + libs=$(normal_libs) + endif + + foo: $(objects) + $(CC) -o foo $(objects) $(libs) + + +File: make.info, Node: Conditional Syntax, Next: Testing Flags, Prev: Conditional Example, Up: Conditionals + +7.2 Syntax of Conditionals +========================== + +The syntax of a simple conditional with no 'else' is as follows: + + CONDITIONAL-DIRECTIVE + TEXT-IF-TRUE + endif + +The TEXT-IF-TRUE may be any lines of text, to be considered as part of +the makefile if the condition is true. If the condition is false, no +text is used instead. + + The syntax of a complex conditional is as follows: + + CONDITIONAL-DIRECTIVE + TEXT-IF-TRUE + else + TEXT-IF-FALSE + endif + + or: + + CONDITIONAL-DIRECTIVE-ONE + TEXT-IF-ONE-IS-TRUE + else CONDITIONAL-DIRECTIVE-TWO + TEXT-IF-TWO-IS-TRUE + else + TEXT-IF-ONE-AND-TWO-ARE-FALSE + endif + +There can be as many "'else' CONDITIONAL-DIRECTIVE" clauses as +necessary. Once a given condition is true, TEXT-IF-TRUE is used and no +other clause is used; if no condition is true then TEXT-IF-FALSE is +used. The TEXT-IF-TRUE and TEXT-IF-FALSE can be any number of lines of +text. + + The syntax of the CONDITIONAL-DIRECTIVE is the same whether the +conditional is simple or complex; after an 'else' or not. There are +four different directives that test different conditions. Here is a +table of them: + +'ifeq (ARG1, ARG2)' +'ifeq 'ARG1' 'ARG2'' +'ifeq "ARG1" "ARG2"' +'ifeq "ARG1" 'ARG2'' +'ifeq 'ARG1' "ARG2"' + Expand all variable references in ARG1 and ARG2 and compare them. + If they are identical, the TEXT-IF-TRUE is effective; otherwise, + the TEXT-IF-FALSE, if any, is effective. + + Often you want to test if a variable has a non-empty value. When + the value results from complex expansions of variables and + functions, expansions you would consider empty may actually contain + whitespace characters and thus are not seen as empty. However, you + can use the 'strip' function (*note Text Functions::) to avoid + interpreting whitespace as a non-empty value. For example: + + ifeq ($(strip $(foo)),) + TEXT-IF-EMPTY + endif + + will evaluate TEXT-IF-EMPTY even if the expansion of '$(foo)' + contains whitespace characters. + +'ifneq (ARG1, ARG2)' +'ifneq 'ARG1' 'ARG2'' +'ifneq "ARG1" "ARG2"' +'ifneq "ARG1" 'ARG2'' +'ifneq 'ARG1' "ARG2"' + Expand all variable references in ARG1 and ARG2 and compare them. + If they are different, the TEXT-IF-TRUE is effective; otherwise, + the TEXT-IF-FALSE, if any, is effective. + +'ifdef VARIABLE-NAME' + The 'ifdef' form takes the _name_ of a variable as its argument, + not a reference to a variable. If the value of that variable has a + non-empty value, the TEXT-IF-TRUE is effective; otherwise, the + TEXT-IF-FALSE, if any, is effective. Variables that have never + been defined have an empty value. The text VARIABLE-NAME is + expanded, so it could be a variable or function that expands to the + name of a variable. For example: + + bar = true + foo = bar + ifdef $(foo) + frobozz = yes + endif + + The variable reference '$(foo)' is expanded, yielding 'bar', which + is considered to be the name of a variable. The variable 'bar' is + not expanded, but its value is examined to determine if it is + non-empty. + + Note that 'ifdef' only tests whether a variable has a value. It + does not expand the variable to see if that value is nonempty. + Consequently, tests using 'ifdef' return true for all definitions + except those like 'foo ='. To test for an empty value, use + 'ifeq ($(foo),)'. For example, + + bar = + foo = $(bar) + ifdef foo + frobozz = yes + else + frobozz = no + endif + + sets 'frobozz' to 'yes', while: + + foo = + ifdef foo + frobozz = yes + else + frobozz = no + endif + + sets 'frobozz' to 'no'. + +'ifndef VARIABLE-NAME' + If the variable VARIABLE-NAME has an empty value, the TEXT-IF-TRUE + is effective; otherwise, the TEXT-IF-FALSE, if any, is effective. + The rules for expansion and testing of VARIABLE-NAME are identical + to the 'ifdef' directive. + + Extra spaces are allowed and ignored at the beginning of the +conditional directive line, but a tab is not allowed. (If the line +begins with a tab, it will be considered part of a recipe for a rule.) +Aside from this, extra spaces or tabs may be inserted with no effect +anywhere except within the directive name or within an argument. A +comment starting with '#' may appear at the end of the line. + + The other two directives that play a part in a conditional are 'else' +and 'endif'. Each of these directives is written as one word, with no +arguments. Extra spaces are allowed and ignored at the beginning of the +line, and spaces or tabs at the end. A comment starting with '#' may +appear at the end of the line. + + Conditionals affect which lines of the makefile 'make' uses. If the +condition is true, 'make' reads the lines of the TEXT-IF-TRUE as part of +the makefile; if the condition is false, '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. + + 'make' evaluates conditionals when it reads a makefile. +Consequently, you cannot use automatic variables in the tests of +conditionals because they are not defined until recipes are run (*note +Automatic Variables::). + + To prevent intolerable confusion, it is not permitted to start a +conditional in one makefile and end it in another. However, you may +write an 'include' directive within a conditional, provided you do not +attempt to terminate the conditional inside the included file. + + +File: make.info, Node: Testing Flags, Prev: Conditional Syntax, Up: Conditionals + +7.3 Conditionals that Test Flags +================================ + +You can write a conditional that tests 'make' command flags such as '-t' +by using the variable 'MAKEFLAGS' together with the 'findstring' +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 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,$(word 1,-$(MAKEFLAGS)))) + +touch archive.a + +ranlib -t archive.a + else + ranlib archive.a + endif + +The '+' prefix marks those recipe lines as "recursive" so that they will +be executed despite use of the '-t' flag. *Note Recursive Use of +'make': Recursion. + + +File: make.info, Node: Functions, Next: Running, Prev: Conditionals, Up: Top + +8 Functions for Transforming Text +********************************* + +"Functions" allow you to do text processing in the makefile to compute +the files to operate on or the commands to use in recipes. You use a +function in a "function call", where you give the name of the function +and some text (the "arguments") for the function to operate on. The +result of the function's processing is substituted into the makefile at +the point of the call, just as a variable might be substituted. + +* Menu: + +* Syntax of Functions:: How to write a function call. +* 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. +* Value Function:: Return the un-expanded value of a variable. +* Eval Function:: Evaluate the arguments as makefile syntax. +* Origin Function:: Find where a variable got its value. +* Flavor Function:: Find out the flavor of a variable. +* Make Control Functions:: Functions that control how make runs. +* Shell Function:: Substitute the output of a shell command. +* Guile Function:: Use GNU Guile embedded scripting language. + + +File: make.info, Node: Syntax of Functions, Next: Text Functions, Prev: Functions, Up: Functions + +8.1 Function Call Syntax +======================== + +A function call resembles a variable reference. It can appear anywhere +a variable reference can appear, and it is expanded using the same rules +as variable references. A function call looks like this: + + $(FUNCTION ARGUMENTS) + +or like this: + + ${FUNCTION ARGUMENTS} + + Here FUNCTION is a function name; one of a short list of names that +are part of 'make'. You can also essentially create your own functions +by using the 'call' built-in function. + + The 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 +'$(subst a,b,$(x))', not '$(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. + +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. + + 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:= + space:= $(empty) $(empty) + foo:= a b c + bar:= $(subst $(space),$(comma),$(foo)) + # bar is now 'a,b,c'. + +Here the 'subst' function replaces each space with a comma, through the +value of 'foo', and substitutes the result. + + +File: make.info, Node: Text Functions, Next: File Name Functions, Prev: Syntax of Functions, Up: Functions + +8.2 Functions for String Substitution and Analysis +================================================== + +Here are some functions that operate on strings: + +'$(subst FROM,TO,TEXT)' + Performs a textual replacement on the text TEXT: each occurrence of + FROM is replaced by TO. The result is substituted for the function + call. For example, + + $(subst ee,EE,feet on the street) + + produces the value 'fEEt on the strEEt'. + +'$(patsubst PATTERN,REPLACEMENT,TEXT)' + Finds whitespace-separated words in TEXT that match PATTERN and + 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. 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 + quote '%' characters can be quoted with more backslashes. + Backslashes that quote '%' characters or other backslashes are + removed from the pattern before it is compared file names or has a + stem substituted into it. Backslashes that are not in danger of + quoting '%' characters go unmolested. For example, the pattern + 'the\%weird\\%pattern\\' has 'the%weird\' preceding the operative + '%' character, and 'pattern\\' following it. The final two + backslashes are left alone because they cannot affect any '%' + character. + + Whitespace between words is folded into single space characters; + leading and trailing whitespace is discarded. + + For example, + + $(patsubst %.c,%.o,x.c.c bar.c) + + produces the value 'x.c.o bar.o'. + + Substitution references (*note Substitution References: + Substitution Refs.) are a simpler way to get the effect of the + 'patsubst' function: + + $(VAR:PATTERN=REPLACEMENT) + + is equivalent to + + $(patsubst PATTERN,REPLACEMENT,$(VAR)) + + The second shorthand simplifies one of the most common uses of + 'patsubst': replacing the suffix at the end of file names. + + $(VAR:SUFFIX=REPLACEMENT) + + is equivalent to + + $(patsubst %SUFFIX,%REPLACEMENT,$(VAR)) + + For example, you might have a list of object files: + + objects = foo.o bar.o baz.o + + To get the list of corresponding source files, you could simply + write: + + $(objects:.o=.c) + + instead of using the general form: + + $(patsubst %.o,%.c,$(objects)) + +'$(strip STRING)' + Removes leading and trailing whitespace from STRING and replaces + each internal sequence of one or more whitespace characters with a + single space. Thus, '$(strip a b c )' results in 'a b c'. + + The function 'strip' can be very useful when used in conjunction + with conditionals. When comparing something with the empty string + '' using 'ifeq' or 'ifneq', you usually want a string of just + whitespace to match the empty string (*note Conditionals::). + + Thus, the following may fail to have the desired results: + + .PHONY: all + ifneq "$(needs_made)" "" + all: $(needs_made) + else + all:;@echo 'Nothing to make!' + endif + + Replacing the variable reference '$(needs_made)' with the function + call '$(strip $(needs_made))' in the 'ifneq' directive would make + it more robust. + +'$(findstring FIND,IN)' + Searches IN for an occurrence of FIND. If it occurs, the value is + FIND; otherwise, the value is empty. You can use this function in + a conditional to test for the presence of a specific substring in a + given string. Thus, the two examples, + + $(findstring a,a b c) + $(findstring a,b c) + + produce the values 'a' and '' (the empty string), respectively. + *Note Testing Flags::, for a practical application of 'findstring'. + +'$(filter PATTERN...,TEXT)' + Returns all whitespace-separated words in TEXT that _do_ match any + of the PATTERN words, removing any words that _do not_ match. The + patterns are written using '%', just like the patterns used in the + 'patsubst' function above. + + The 'filter' function can be used to separate out different types + of strings (such as file names) in a variable. For example: + + sources := foo.c bar.c baz.s ugh.h + foo: $(sources) + cc $(filter %.c %.s,$(sources)) -o foo + + says that 'foo' depends of 'foo.c', 'bar.c', 'baz.s' and 'ugh.h' + but only 'foo.c', 'bar.c' and 'baz.s' should be specified in the + command to the compiler. + +'$(filter-out PATTERN...,TEXT)' + Returns all whitespace-separated words in TEXT that _do not_ match + any of the PATTERN words, removing the words that _do_ match one or + more. This is the exact opposite of the 'filter' function. + + For example, given: + + objects=main1.o foo.o main2.o bar.o + mains=main1.o main2.o + + the following generates a list which contains all the object files + not in 'mains': + + $(filter-out $(mains),$(objects)) + +'$(sort LIST)' + Sorts the words of LIST in lexical order, removing duplicate words. + The output is a list of words separated by single spaces. Thus, + + $(sort foo bar lose) + + returns the value 'bar foo lose'. + + Incidentally, since 'sort' removes duplicate words, you can use it + for this purpose even if you don't care about the sort order. + +'$(word N,TEXT)' + Returns the Nth word of TEXT. The legitimate values of N start + from 1. If N is bigger than the number of words in TEXT, the value + is empty. For example, + + $(word 2, foo bar baz) + + returns 'bar'. + +'$(wordlist S,E,TEXT)' + Returns the list of words in TEXT starting with word S and ending + with word E (inclusive). The legitimate values of S start from 1; + E may start from 0. If S is bigger than the number of words in + TEXT, the value is empty. If E is bigger than the number of words + in TEXT, words up to the end of TEXT are returned. If S is greater + than E, nothing is returned. For example, + + $(wordlist 2, 3, foo bar baz) + + returns 'bar baz'. + +'$(words TEXT)' + Returns the number of words in TEXT. Thus, the last word of TEXT + is '$(word $(words TEXT),TEXT)'. + +'$(firstword NAMES...)' + The argument NAMES is regarded as a series of names, separated by + whitespace. The value is the first name in the series. The rest + of the names are ignored. + + For example, + + $(firstword foo bar) + + produces the result 'foo'. Although '$(firstword TEXT)' is the + same as '$(word 1,TEXT)', the 'firstword' function is retained for + its simplicity. + +'$(lastword NAMES...)' + The argument NAMES is regarded as a series of names, separated by + whitespace. The value is the last name in the series. + + For example, + + $(lastword foo bar) + + produces the result 'bar'. Although '$(lastword TEXT)' is the same + as '$(word $(words TEXT),TEXT)', the 'lastword' function was added + for its simplicity and better performance. + + Here is a realistic example of the use of 'subst' and 'patsubst'. +Suppose that a makefile uses the 'VPATH' variable to specify a list of +directories that 'make' should search for prerequisite files (*note +'VPATH' Search Path for All Prerequisites: General Search.). This +example shows how to tell the C compiler to search for header files in +the same list of directories. + + The value of 'VPATH' is a list of directories separated by colons, +such as 'src:../headers'. First, the 'subst' function is used to change +the colons to spaces: + + $(subst :, ,$(VPATH)) + +This produces 'src ../headers'. Then 'patsubst' is used to turn each +directory name into a '-I' flag. These can be added to the value of the +variable 'CFLAGS', which is passed automatically to the C compiler, like +this: + + override CFLAGS += $(patsubst %,-I%,$(subst :, ,$(VPATH))) + +The effect is to append the text '-Isrc -I../headers' to the previously +given value of 'CFLAGS'. The 'override' directive is used so that the +new value is assigned even if the previous value of 'CFLAGS' was +specified with a command argument (*note The 'override' Directive: +Override Directive.). + + +File: make.info, Node: File Name Functions, Next: Conditional Functions, Prev: Text Functions, Up: Functions + +8.3 Functions for File Names +============================ + +Several of the built-in expansion functions relate specifically to +taking apart file names or lists of file names. + + Each of the following functions performs a specific transformation on +a file name. The argument of the function is regarded as a series of +file names, separated by whitespace. (Leading and trailing whitespace +is ignored.) Each file name in the series is transformed in the same +way and the results are concatenated with single spaces between them. + +'$(dir NAMES...)' + Extracts the directory-part of each file name in NAMES. The + directory-part of the file name is everything up through (and + including) the last slash in it. If the file name contains no + slash, the directory part is the string './'. For example, + + $(dir src/foo.c hacks) + + produces the result 'src/ ./'. + +'$(notdir NAMES...)' + Extracts all but the directory-part of each file name in NAMES. If + the file name contains no slash, it is left unchanged. Otherwise, + everything through the last slash is removed from it. + + A file name that ends with a slash becomes an empty string. This + is unfortunate, because it means that the result does not always + have the same number of whitespace-separated file names as the + argument had; but we do not see any other valid alternative. + + For example, + + $(notdir src/foo.c hacks) + + produces the result 'foo.c hacks'. + +'$(suffix NAMES...)' + Extracts the suffix of each file name in NAMES. If the file name + contains a period, the suffix is everything starting with the last + period. Otherwise, the suffix is the empty string. This + frequently means that the result will be empty when NAMES is not, + and if NAMES contains multiple file names, the result may contain + fewer file names. + + For example, + + $(suffix src/foo.c src-1.0/bar.c hacks) + + produces the result '.c .c'. + +'$(basename NAMES...)' + Extracts all but the suffix of each file name in NAMES. If the + file name contains a period, the basename is everything starting up + to (and not including) the last period. Periods in the directory + part are ignored. If there is no period, the basename is the + entire file name. For example, + + $(basename src/foo.c src-1.0/bar hacks) + + produces the result 'src/foo src-1.0/bar hacks'. + +'$(addsuffix SUFFIX,NAMES...)' + The argument NAMES is regarded as a series of names, separated by + whitespace; SUFFIX is used as a unit. The value of SUFFIX is + appended to the end of each individual name and the resulting + larger names are concatenated with single spaces between them. For + example, + + $(addsuffix .c,foo bar) + + produces the result 'foo.c bar.c'. + +'$(addprefix PREFIX,NAMES...)' + The argument NAMES is regarded as a series of names, separated by + whitespace; PREFIX is used as a unit. The value of PREFIX is + prepended to the front of each individual name and the resulting + larger names are concatenated with single spaces between them. For + example, + + $(addprefix src/,foo bar) + + produces the result 'src/foo src/bar'. + +'$(join LIST1,LIST2)' + Concatenates the two arguments word by word: the two first words + (one from each argument) concatenated form the first word of the + result, the two second words form the second word of the result, + and so on. So the Nth word of the result comes from the Nth word + of each argument. If one argument has more words that the other, + the extra words are copied unchanged into the result. + + For example, '$(join a b,.c .o)' produces 'a.c b.o'. + + Whitespace between the words in the lists is not preserved; it is + replaced with a single space. + + This function can merge the results of the 'dir' and 'notdir' + functions, to produce the original list of files which was given to + those two functions. + +'$(wildcard PATTERN)' + The argument PATTERN is a file name pattern, typically containing + wildcard characters (as in shell file name patterns). The result + of 'wildcard' is a space-separated list of the names of existing + files that match the pattern. *Note Using Wildcard Characters in + File Names: Wildcards. + +'$(realpath NAMES...)' + For each file name in NAMES return the canonical absolute name. A + canonical name does not contain any '.' or '..' components, nor any + repeated path separators ('/') or symlinks. In case of a failure + the empty string is returned. Consult the 'realpath(3)' + documentation for a list of possible failure causes. + +'$(abspath NAMES...)' + For each file name in NAMES return an absolute name that does not + contain any '.' or '..' components, nor any repeated path + separators ('/'). Note that, in contrast to 'realpath' function, + 'abspath' does not resolve symlinks and does not require the file + names to refer to an existing file or directory. Use the + 'wildcard' function to test for existence. + + +File: make.info, Node: Conditional Functions, Next: Let Function, Prev: File Name Functions, Up: Functions + +8.4 Functions for Conditionals +============================== + +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. + +'$(if CONDITION,THEN-PART[,ELSE-PART])' + The 'if' function provides support for conditional expansion in a + functional context (as opposed to the GNU 'make' makefile + conditionals such as 'ifeq' (*note Syntax of Conditionals: + Conditional Syntax.)). + + The first argument, CONDITION, first has all preceding and trailing + whitespace stripped, then is expanded. If it expands to any + non-empty string, then the condition is considered to be true. If + it expands to an empty string, the condition is considered to be + false. + + If the condition is true then the second argument, THEN-PART, is + evaluated and this is used as the result of the evaluation of the + entire 'if' function. + + If the condition is false then the third argument, ELSE-PART, is + evaluated and this is the result of the 'if' function. If there is + no third argument, the 'if' function evaluates to nothing (the + empty string). + + Note that only one of the THEN-PART or the ELSE-PART will be + evaluated, never both. Thus, either can contain side-effects (such + as 'shell' function calls, etc.) + +'$(or CONDITION1[,CONDITION2[,CONDITION3...]])' + The 'or' function provides a "short-circuiting" OR operation. Each + argument is expanded, in order. If an argument expands to a + non-empty string the processing stops and the result of the + expansion is that string. If, after all arguments are expanded, + all of them are false (empty), then the result of the expansion is + the empty string. + +'$(and CONDITION1[,CONDITION2[,CONDITION3...]])' + The 'and' function provides a "short-circuiting" AND operation. + Each argument is expanded, in order. If an argument expands to an + 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. + +'$(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: Let Function, Up: Functions + +8.6 The 'foreach' Function +========================== + +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: + + $(foreach 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. Then for each word of the expanded value of LIST, the +variable named by the expanded value of VAR is set to that word, and +TEXT is expanded. Presumably TEXT contains references to that variable, +so its expansion will be different each time. + + The result is that TEXT is expanded as many times as there are +whitespace-separated words in LIST. The multiple expansions of TEXT are +concatenated, with spaces between them, to make the result of 'foreach'. + + This simple example sets the variable 'files' to the list of all +files in the directories in the list 'dirs': + + dirs := a b c d + files := $(foreach dir,$(dirs),$(wildcard $(dir)/*)) + + Here TEXT is '$(wildcard $(dir)/*)'. The first repetition finds the +value 'a' for 'dir', so it produces the same result as '$(wildcard +a/*)'; the second repetition produces the result of '$(wildcard b/*)'; +and the third, that of '$(wildcard c/*)'. + + This example has the same result (except for setting 'dirs') as the +following example: + + files := $(wildcard a/* b/* c/* d/*) + + When TEXT is complicated, you can improve readability by giving it a +name, with an additional variable: + + find_files = $(wildcard $(dir)/*) + dirs := a b c d + files := $(foreach dir,$(dirs),$(find_files)) + +Here we use the variable 'find_files' this way. We use plain '=' to +define a recursively-expanding variable, so that its value contains an +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'. + + 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 +names, but are probably not what you intended. For example, + + files := $(foreach Esta-escrito-en-espanol!,b c ch,$(find_files)) + +might be useful if the value of 'find_files' references the variable +whose name is 'Esta-escrito-en-espanol!' (es un nombre bastante largo, +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.7 The 'file' Function +======================= + +The 'file' function allows the makefile to write to or read from a file. +Two modes of writing are supported: overwrite, where the text is written +to the beginning of the file and any existing content is lost, and +append, where the text is written to the end of the file, preserving the +existing content. In both cases the file is created if it does not +exist. It is a fatal error if the file cannot be opened for writing, or +if the write operation fails. The 'file' function expands to the empty +string when writing to a file. + + When reading from a file, the 'file' function expands to the verbatim +contents of the file, except that the final newline (if there is one) +will be stripped. Attempting to read from a non-existent file expands +to the empty string. + + The syntax of the 'file' function is: + + $(file OP FILENAME[,TEXT]) + + When the 'file' function is evaluated all its arguments are expanded +first, then the file indicated by FILENAME will be opened in the mode +described by OP. + + The operator OP can be '>' to indicate the file will be overwritten +with new content, '>>' to indicate the current contents of the file will +be appended to, or '<' to indicate the contents of the file will be read +in. The FILENAME specifies the file to be written to or read from. +There may optionally be whitespace between the operator and the file +name. + + When reading files, it is an error to provide a TEXT value. + + When writing files, TEXT will be written to the file. If TEXT does +not already end in a newline a final newline will be written (even if +TEXT is the empty string). If the TEXT argument is not given at all, +nothing will be written. + + For example, the 'file' function can be useful if your build system +has a limited command line size and your recipe runs a command that can +accept arguments from a file as well. Many commands use the convention +that an argument prefixed with an '@' specifies a file containing more +arguments. Then you might write your recipe in this way: + + program: $(OBJECTS) + $(file >$@.in,$^) + $(CMD) $(CMDFLAGS) @$@.in + @rm $@.in + + If the command required each argument to be on a separate line of the +input file, you might write your recipe like this: + + program: $(OBJECTS) + $(file >$@.in) $(foreach O,$^,$(file >>$@.in,$O)) + $(CMD) $(CMDFLAGS) @$@.in + @rm $@.in + + +File: make.info, Node: Call Function, Next: Value Function, Prev: File Function, Up: Functions + +8.8 The 'call' Function +======================= + +The 'call' function is unique in that it can be used to create new +parameterized functions. You can write a complex expression as the +value of a variable, then use 'call' to expand it with different values. + + The syntax of the 'call' function is: + + $(call VARIABLE,PARAM,PARAM,...) + + When 'make' expands this function, it assigns each PARAM to temporary +variables '$(1)', '$(2)', etc. The variable '$(0)' will contain +VARIABLE. There is no maximum number of parameter arguments. There is +no minimum, either, but it doesn't make sense to use 'call' with no +parameters. + + Then VARIABLE is expanded as a 'make' variable in the context of +these temporary assignments. Thus, any reference to '$(1)' in the value +of VARIABLE will resolve to the first PARAM in the invocation of 'call'. + + Note that VARIABLE is the _name_ of a variable, not a _reference_ to +that variable. Therefore you would not normally use a '$' or +parentheses when writing it. (You can, however, use a variable +reference in the name if you want the name not to be a constant.) + + If VARIABLE is the name of a built-in function, the built-in function +is always invoked (even if a 'make' variable by that name also exists). + + The 'call' function expands the PARAM arguments before assigning them +to temporary variables. This means that VARIABLE values containing +references to built-in functions that have special expansion rules, like +'foreach' or 'if', may not work as you expect. + + Some examples may make this clearer. + + This macro simply reverses its arguments: + + reverse = $(2) $(1) + + foo = $(call reverse,a,b) + +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': + + pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH))))) + + LS := $(call pathsearch,ls) + +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 +higher-level 'call'. For example, here is an implementation of a "map" +function: + + map = $(foreach a,$(2),$(call $(1),$(a))) + + 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'. + + A final caution: be careful when adding whitespace to the arguments +to 'call'. As with other functions, any whitespace contained in the +second and subsequent arguments is kept; this can cause strange effects. +It's generally safest to remove all extraneous whitespace when providing +parameters to 'call'. + + +File: make.info, Node: Value Function, Next: Eval Function, Prev: Call Function, Up: Functions + +8.9 The 'value' Function +======================== + +The 'value' function provides a way for you to use the value of a +variable _without_ having it expanded. Please note that this does not +undo expansions which have already occurred; for example if you create a +simply expanded variable its value is expanded during the definition; in +that case the 'value' function will return the same result as using the +variable directly. + + The syntax of the 'value' function is: + + $(value VARIABLE) + + Note that VARIABLE is the _name_ of a variable, not a _reference_ to +that variable. Therefore you would not normally use a '$' or +parentheses when writing it. (You can, however, use a variable +reference in the name if you want the name not to be a constant.) + + The result of this function is a string containing the value of +VARIABLE, without any expansion occurring. For example, in this +makefile: + + FOO = $PATH + + all: + @echo $(FOO) + @echo $(value FOO) + +The first output line would be 'ATH', since the "$P" would be expanded +as a 'make' variable, while the second output line would be the current +value of your '$PATH' environment variable, since the 'value' function +avoided the expansion. + + The 'value' function is most often used in conjunction with the +'eval' function (*note Eval Function::). + + +File: make.info, Node: Eval Function, Next: Origin Function, Prev: Value Function, Up: Functions + +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 +evaluating other variables and functions. The argument to the 'eval' +function is expanded, then the results of that expansion are parsed as +makefile syntax. The expanded results can define new 'make' variables, +targets, implicit or explicit rules, etc. + + The result of the 'eval' function is always the empty string; thus, +it can be placed virtually anywhere in a makefile without causing syntax +errors. + + It's important to realize that the 'eval' argument is expanded +_twice_; first by the 'eval' function, then the results of that +expansion are expanded again when they are parsed as makefile syntax. +This means you may need to provide extra levels of escaping for "$" +characters when using 'eval'. The 'value' function (*note Value +Function::) can sometimes be useful in these situations, to circumvent +unwanted expansions. + + Here is an example of how 'eval' can be used; this example combines a +number of concepts and other functions. Although it might seem overly +complex to use 'eval' in this example, rather than just writing out the +rules, consider two things: first, the template definition (in +'PROGRAM_template') could need to be much more complex than it is here; +and second, you might put the complex, "generic" part of this example +into another makefile, then include it in all the individual makefiles. +Now your individual makefiles are quite straightforward. + + PROGRAMS = server client + + server_OBJS = server.o server_priv.o server_access.o + server_LIBS = priv protocol + + client_OBJS = client.o client_api.o client_mem.o + client_LIBS = protocol + + # Everything after this is generic + + .PHONY: all + all: $(PROGRAMS) + + define PROGRAM_template = + $(1): $$($(1)_OBJS) $$($(1)_LIBS:%=-l%) + ALL_OBJS += $$($(1)_OBJS) + endef + + $(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog)))) + + $(PROGRAMS): + $(LINK.o) $^ $(LDLIBS) -o $@ + + clean: + rm -f $(ALL_OBJS) $(PROGRAMS) + + +File: make.info, Node: Origin Function, Next: Flavor Function, Prev: Eval Function, Up: Functions + +8.11 The 'origin' Function +========================== + +The 'origin' function is unlike most other functions in that it does not +operate on the values of variables; it tells you something _about_ a +variable. Specifically, it tells you where it came from. + + The syntax of the 'origin' function is: + + $(origin VARIABLE) + + Note that VARIABLE is the _name_ of a variable to inquire about, not +a _reference_ to that variable. Therefore you would not normally use a +'$' or parentheses when writing it. (You can, however, use a variable +reference in the name if you want the name not to be a constant.) + + The result of this function is a string telling you how the variable +VARIABLE was defined: + +'undefined' + + if VARIABLE was never defined. + +'default' + + if VARIABLE has a default definition, as is usual with 'CC' and so + on. *Note Variables Used by Implicit Rules: Implicit Variables. + Note that if you have redefined a default variable, the 'origin' + function will return the origin of the later definition. + +'environment' + + if VARIABLE was inherited from the environment provided to 'make'. + +'environment override' + + if VARIABLE was inherited from the environment provided to 'make', + and is overriding a setting for VARIABLE in the makefile as a + result of the '-e' option (*note Summary of Options: Options + Summary.). + +'file' + + if VARIABLE was defined in a makefile. + +'command line' + + if VARIABLE was defined on the command line. + +'override' + + if VARIABLE was defined with an 'override' directive in a makefile + (*note The 'override' Directive: Override Directive.). + +'automatic' + + if VARIABLE is an automatic variable defined for the execution of + the recipe for each rule (*note Automatic Variables::). + + This information is primarily useful (other than for your curiosity) +to determine if you want to believe the value of a variable. For +example, suppose you have a makefile 'foo' that includes another +makefile 'bar'. You want a variable 'bletch' to be defined in 'bar' if +you run the command 'make -f bar', even if the environment contains a +definition of 'bletch'. However, if 'foo' defined 'bletch' before +including 'bar', you do not want to override that definition. This +could be done by using an 'override' directive in 'foo', giving that +definition precedence over the later definition in 'bar'; unfortunately, +the 'override' directive would also override any command line +definitions. So, 'bar' could include: + + ifdef bletch + ifeq "$(origin bletch)" "environment" + bletch = barf, gag, etc. + endif + endif + +If 'bletch' has been defined from the environment, this will redefine +it. + + If you want to override a previous definition of 'bletch' if it came +from the environment, even under '-e', you could instead write: + + ifneq "$(findstring environment,$(origin bletch))" "" + bletch = barf, gag, etc. + endif + + Here the redefinition takes place if '$(origin bletch)' returns +either 'environment' or 'environment override'. *Note Functions for +String Substitution and Analysis: Text Functions. + + +File: make.info, Node: Flavor Function, Next: Make Control Functions, Prev: Origin Function, Up: Functions + +8.12 The 'flavor' Function +========================== + +The 'flavor' function, like the 'origin' function, does not operate on +the values of variables but rather it tells you something _about_ a +variable. Specifically, it tells you the flavor of a variable (*note +The Two Flavors of Variables: Flavors.). + + The syntax of the 'flavor' function is: + + $(flavor VARIABLE) + + Note that VARIABLE is the _name_ of a variable to inquire about, not +a _reference_ to that variable. Therefore you would not normally use a +'$' or parentheses when writing it. (You can, however, use a variable +reference in the name if you want the name not to be a constant.) + + The result of this function is a string that identifies the flavor of +the variable VARIABLE: + +'undefined' + + if VARIABLE was never defined. + +'recursive' + + if VARIABLE is a recursively expanded variable. + +'simple' + + if VARIABLE is a simply expanded variable. + + +File: make.info, Node: Make Control Functions, Next: Shell Function, Prev: Flavor Function, Up: Functions + +8.13 Functions That Control Make +================================ + +These functions control the way make runs. Generally, they are used to +provide information to the user of the makefile or to cause make to stop +if some sort of environmental error is detected. + +'$(error TEXT...)' + Generates a fatal error where the message is TEXT. Note that the + error is generated whenever this function is evaluated. So, if you + put it inside a recipe or on the right side of a recursive variable + assignment, it won't be evaluated until later. The TEXT will be + expanded before the error is generated. + + For example, + + ifdef ERROR1 + $(error error is $(ERROR1)) + endif + + will generate a fatal error during the read of the makefile if the + 'make' variable 'ERROR1' is defined. Or, + + ERR = $(error found an error!) + + .PHONY: err + err: ; $(ERR) + + will generate a fatal error while 'make' is running, if the 'err' + target is invoked. + +'$(warning TEXT...)' + This function works similarly to the 'error' function, above, + except that 'make' doesn't exit. Instead, TEXT is expanded and the + resulting message is displayed, but processing of the makefile + continues. + + The result of the expansion of this function is the empty string. + +'$(info TEXT...)' + This function does nothing more than print its (expanded) + argument(s) to standard output. No makefile name or line number is + added. The result of the expansion of this function is the empty + string. + diff --git a/local/recipes/dev/gnu-make/source/doc/make.info-2 b/local/recipes/dev/gnu-make/source/doc/make.info-2 new file mode 100644 index 0000000000..186be0babb --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/make.info-2 @@ -0,0 +1,6852 @@ +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.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, 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, + Version 1.3 or any later version published by the Free Software + Foundation; with no Invariant Sections, with the Front-Cover Texts + being "A GNU Manual," and with the Back-Cover Texts as in (a) + below. A copy of the license is included in the section entitled + "GNU Free Documentation License." + + (a) The FSF's Back-Cover Text is: "You have the freedom to copy and + modify this GNU manual. Buying copies from the FSF supports it in + developing GNU and promoting software freedom." +INFO-DIR-SECTION Software development +START-INFO-DIR-ENTRY +* Make: (make). Remake files automatically. +END-INFO-DIR-ENTRY + + +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 +======================================== + +Normally, when an error happens in executing a shell command, 'make' +gives up immediately, returning a nonzero status. No further recipes +are executed for any target. The error implies that the goal cannot be +correctly remade, and 'make' reports this as soon as it knows. + + When you are compiling a program that you have just changed, this is +not what you want. Instead, you would rather that 'make' try compiling +every file that can be tried, to show you as many compilation errors as +possible. + + On these occasions, you should use the '-k' or '--keep-going' flag. +This tells 'make' to continue to consider the other prerequisites of the +pending targets, remaking them if necessary, before it gives up and +returns nonzero status. For example, after an error in compiling one +object file, 'make -k' will continue compiling other object files even +though it already knows that linking them will be impossible. In +addition to continuing after failed shell commands, '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 '-k', it is a fatal error (*note Summary of +Options: Options Summary.). + + The usual behavior of 'make' assumes that your purpose is to get the +goals up to date; once 'make' learns that this is impossible, it might +as well report the failure immediately. The '-k' flag says that the +real purpose is to test as much as possible of the changes made in the +program, perhaps to find several independent problems so that you can +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: 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. + + 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: + +'-b' +'-m' + These options are ignored for compatibility with other versions of + 'make'. + +'-B' +'--always-make' + Consider all targets out-of-date. GNU 'make' proceeds to consider + targets and their prerequisites using the normal algorithms; + however, all targets so considered are always remade regardless of + the status of their prerequisites. To avoid infinite recursion, if + 'MAKE_RESTARTS' (*note Other Special Variables: Special Variables.) + is set to a number greater than 0 this option is disabled when + considering whether to remake makefiles (*note How Makefiles Are + Remade: Remaking Makefiles.). + +'-C DIR' +'--directory=DIR' + Change to directory DIR before reading the makefiles. If multiple + '-C' options are specified, each is interpreted relative to the + previous one: '-C / -C etc' is equivalent to '-C /etc'. This is + typically used with recursive invocations of 'make' (*note + Recursive Use of 'make': Recursion.). + +'-d' + + Print debugging information in addition to normal processing. The + debugging information says which files are being considered for + remaking, which file-times are being compared and with what + results, which files actually need to be remade, which implicit + rules are considered and which are applied--everything interesting + about how 'make' decides what to do. The '-d' option is equivalent + to '--debug=a' (see below). + +'--debug[=OPTIONS]' + + Print debugging information in addition to normal processing. + Various levels and types of output can be chosen. With no + arguments, print the "basic" level of debugging. Possible + arguments are below; only the first character is considered, and + values must be comma- or space-separated. + + 'a (all)' + All types of debugging output are enabled. This is equivalent + to using '-d'. + + 'b (basic)' + Basic debugging prints each target that was found to be + out-of-date, and whether the build was successful or not. + + 'v (verbose)' + A level above 'basic'; includes messages about which makefiles + were parsed, prerequisites that did not need to be rebuilt, + etc. This option also enables 'basic' messages. + + 'i (implicit)' + Prints messages describing the implicit rule searches for each + target. This option also enables 'basic' messages. + + 'j (jobs)' + Prints messages giving details on the invocation of specific + sub-commands. + + 'm (makefile)' + By default, the above messages are not enabled while trying to + remake the makefiles. This option enables messages while + rebuilding makefiles, too. Note that the 'all' option does + 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 + take effect. + +'-e' +'--environment-overrides' + Give variables taken from the environment precedence over variables + from makefiles. *Note Variables from the Environment: Environment. + +'-E STRING' +'--eval=STRING' + + Evaluate STRING as makefile syntax. This is a command-line version + of the 'eval' function (*note Eval Function::). The evaluation is + performed after the default rules and variables have been defined, + but before any makefiles are read. + +'-f FILE' +'--file=FILE' +'--makefile=FILE' + Read the file named FILE as a makefile. *Note Writing Makefiles: + Makefiles. + +'-h' +'--help' + + Remind you of the options that 'make' understands and then exit. + +'-i' +'--ignore-errors' + Ignore all errors in recipes executed to remake files. *Note + Errors in Recipes: Errors. + +'-I DIR' +'--include-dir=DIR' + 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. 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]' + Specifies the number of recipes (jobs) to run simultaneously. With + no argument, 'make' runs as many recipes simultaneously as + possible. If there is more than one '-j' option, the last one is + effective. *Note Parallel Execution: Parallel, for more + 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 + failed, and those that depend on it, cannot be remade, the other + prerequisites of these targets can be processed all the same. + *Note Testing the Compilation of a Program: Testing. + +'-l [LOAD]' +'--load-average[=LOAD]' +'--max-load[=LOAD]' + Specifies that no new recipes should be started if there are other + recipes running and the load average is at least LOAD (a + floating-point number). With no argument, removes a previous load + limit. *Note Parallel Execution: Parallel. + +'-L' +'--check-symlink-times' + On systems that support symbolic links, this option causes 'make' + to consider the timestamps on any symbolic links in addition to the + timestamp on the file referenced by those links. When this option + is provided, the most recent timestamp among the file and the + symbolic links is taken as the modification time for this target + file. + +'-n' +'--just-print' +'--dry-run' +'--recon' + + Print the recipe that would be executed, but do not execute it + (except in certain circumstances). *Note Instead of Executing + Recipes: Instead of Execution. + +'-o FILE' +'--old-file=FILE' +'--assume-old=FILE' + Do not remake the file FILE even if it is older than its + prerequisites, and do not remake anything on account of changes in + FILE. Essentially the file is treated as very old and its rules + are ignored. *Note Avoiding Recompilation of Some Files: Avoiding + Compilation. + +'-O[TYPE]' +'--output-sync[=TYPE]' + Ensure that the complete output from each recipe is printed in one + uninterrupted sequence. This option is only useful when using the + '--jobs' option to run multiple recipes simultaneously (*note + Parallel Execution: Parallel.) Without this option output will be + displayed as it is generated by the recipes. + + With no type or the type 'target', output from the entire recipe of + each target is grouped together. With the type 'line', output from + each line in the recipe is grouped together. With the type + 'recurse', the output from an entire recursive make is grouped + together. With the type 'none', no output synchronization is + performed. *Note Output During Parallel Execution: Parallel + Output. + +'-p' +'--print-data-base' + Print the data base (rules and variable values) that results from + reading the makefiles; then execute as usual or as otherwise + specified. This also prints the version information given by the + '-v' switch (see below). To print the data base without trying to + remake any files, use 'make -qp'. To print the data base of + predefined rules and variables, use 'make -p -f /dev/null'. The + data base output contains file name and line number information for + recipe and variable definitions, so it can be a useful debugging + tool in complex environments. + +'-q' +'--question' + "Question mode". Do not run any recipes, or print anything; just + 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. *Note Instead of Executing Recipes: Instead + of Execution. + +'-r' +'--no-builtin-rules' + Eliminate use of the built-in implicit rules (*note Using Implicit + Rules: Implicit Rules.). You can still define your own by writing + pattern rules (*note Defining and Redefining Pattern Rules: Pattern + Rules.). The '-r' option also clears out the default list of + suffixes for suffix rules (*note Old-Fashioned Suffix Rules: Suffix + Rules.). But you can still define your own suffixes with a rule + for '.SUFFIXES', and then define your own suffix rules. Note that + only _rules_ are affected by the '-r' option; default variables + remain in effect (*note Variables Used by Implicit Rules: Implicit + Variables.); see the '-R' option below. + +'-R' +'--no-builtin-variables' + Eliminate use of the built-in rule-specific variables (*note + Variables Used by Implicit Rules: Implicit Variables.). You can + still define your own, of course. The '-R' option also + automatically enables the '-r' option (see above), since it doesn't + make sense to have implicit rules without any definitions for the + variables that they use. + +'-s' +'--silent' +'--quiet' + + Silent operation; do not print the recipes as they are executed. + *Note Recipe Echoing: Echoing. + +'-S' +'--no-keep-going' +'--stop' + + Cancel the effect of the '-k' option. This is never necessary + except in a recursive 'make' where '-k' might be inherited from the + 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' + + Touch files (mark them up to date without really changing them) + instead of running their recipes. This is used to pretend that the + recipes were done, in order to fool future invocations of 'make'. + *Note Instead of Executing Recipes: Instead of Execution. + +'--trace' + Show tracing information for 'make' execution. Using '--trace' is + shorthand for '--debug=print,why'. + +'-v' +'--version' + Print the version of the 'make' program plus a copyright, a list of + authors, and a notice that there is no warranty; then exit. + +'-w' +'--print-directory' + Print a message containing the working directory both before and + after executing the makefile. This may be useful for tracking down + errors from complicated nests of recursive 'make' commands. *Note + Recursive Use of 'make': Recursion. (In practice, you rarely need + to specify this option since 'make' does it for you; see *note The + '--print-directory' Option: -w Option.) + +'--no-print-directory' + Disable printing of the working directory under '-w'. This option + is useful when '-w' is turned on automatically, but you do not want + to see the extra messages. *Note The '--print-directory' Option: + -w Option. + +'-W FILE' +'--what-if=FILE' +'--new-file=FILE' +'--assume-new=FILE' + Pretend that the target FILE has just been modified. When used + with the '-n' flag, this shows you what would happen if you were to + modify that file. Without '-n', it is almost the same as running a + 'touch' command on the given file before running 'make', except + that the modification time is changed only in the imagination of + 'make'. *Note Instead of Executing Recipes: Instead of Execution. + +'--warn-undefined-variables' + Issue a warning message whenever 'make' sees a reference to an + undefined variable. This can be helpful when you are trying to + debug makefiles which use variables in complex ways. + + +File: make.info, Node: Implicit Rules, Next: Archives, Prev: Running, Up: Top + +10 Using Implicit Rules +*********************** + +Certain standard ways of remaking target files are used very often. For +example, one customary way to make an object file is from a C source +file using the C compiler, 'cc'. + + "Implicit rules" tell 'make' how to use customary techniques so that +you do not have to specify them in detail when you want to use 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 '.c' file and makes a '.o' file. So 'make' applies +the implicit rule for C compilation when it sees this combination of +file name endings. + + A chain of implicit rules can apply in sequence; for example, 'make' +will remake a '.o' file from a '.y' file by way of a '.c' file. + + The built-in implicit rules use several variables in their recipes so +that, by changing the values of the variables, you can change the way +the implicit rule works. For example, the variable 'CFLAGS' controls +the flags given to the C compiler by the implicit rule for C +compilation. + + You can define your own implicit rules by writing "pattern rules". + + "Suffix rules" are a more limited way to define implicit rules. +Pattern rules are more general and clearer, but suffix rules are +retained for compatibility. + +* Menu: + +* Using Implicit:: How to use an existing implicit rule + to get the recipes for updating a file. +* Catalogue of Rules:: A list of built-in rules. +* Implicit Variables:: How to change what predefined rules do. +* Chained Rules:: How to use a chain of implicit rules. +* Pattern Rules:: How to define new implicit rules. +* Last Resort:: How to define a recipe for rules which + cannot find any. +* Suffix Rules:: The old-fashioned style of implicit rule. +* Implicit Rule Search:: The precise algorithm for applying + implicit rules. + + +File: make.info, Node: Using Implicit, Next: Catalogue of Rules, Prev: Implicit Rules, Up: Implicit Rules + +10.1 Using Implicit Rules +========================= + +To allow 'make' to find a customary method for updating a target file, +all you have to do is refrain from specifying recipes yourself. Either +write a rule with no recipe, or don't write a rule at all. Then 'make' +will figure out which implicit rule to use based on which kind of source +file exists or can be made. + + For example, suppose the makefile looks like this: + + foo : foo.o bar.o + cc -o foo foo.o bar.o $(CFLAGS) $(LDFLAGS) + +Because you mention 'foo.o' but do not give a rule for it, 'make' will +automatically look for an implicit rule that tells how to update it. +This happens whether or not the file 'foo.o' currently exists. + + If an implicit rule is found, it can supply both a recipe and one or +more prerequisites (the source files). You would want to write a rule +for 'foo.o' with no recipe if you need to specify additional +prerequisites, such as header files, that the implicit rule cannot +supply. + + Each implicit rule has a target pattern and prerequisite patterns. +There may be many implicit rules with the same target pattern. For +example, numerous rules make '.o' files: one, from a '.c' file with the +C compiler; another, from a '.p' file with the Pascal compiler; and so +on. The rule that actually applies is the one whose prerequisites exist +or can be made. So, if you have a file 'foo.c', 'make' will run the C +compiler; otherwise, if you have a file 'foo.p', 'make' will run the +Pascal compiler; and so on. + + Of course, when you write the makefile, you know which implicit rule +you want 'make' to use, and you know it will choose that one because you +know which possible prerequisite files are supposed to exist. *Note +Catalogue of Built-In Rules: Catalogue of Rules, for a catalogue of all +the predefined implicit rules. + + Above, we said an implicit rule applies if the required prerequisites +"exist or can be made". A file "can be made" if it is mentioned +explicitly in the makefile as a target or a prerequisite, or if an +implicit rule can be recursively found for how to make it. When an +implicit prerequisite is the result of another implicit rule, we say +that "chaining" is occurring. *Note Chains of Implicit Rules: Chained +Rules. + + In general, 'make' searches for an implicit rule for each target, and +for each double-colon rule, that has no recipe. A file that is +mentioned only as a prerequisite is considered a target whose rule +specifies nothing, so implicit rule search happens for it. *Note +Implicit Rule Search Algorithm: Implicit Rule Search, for the details of +how the search is done. + + Note that explicit prerequisites do not influence implicit rule +search. For example, consider this explicit rule: + + foo.o: foo.p + +The prerequisite on 'foo.p' does not necessarily mean that 'make' will +remake 'foo.o' according to the implicit rule to make an object file, a +'.o' file, from a Pascal source file, a '.p' file. For example, if +'foo.c' also exists, the implicit rule to make an object file from a C +source file is used instead, because it appears before the Pascal rule +in the list of predefined implicit rules (*note Catalogue of Built-In +Rules: Catalogue of Rules.). + + If you do not want an implicit rule to be used for a target that has +no recipe, you can give that target an empty recipe by writing a +semicolon (*note Defining Empty Recipes: Empty Recipes.). + + +File: make.info, Node: Catalogue of Rules, Next: Implicit Variables, Prev: Using Implicit, Up: Implicit Rules + +10.2 Catalogue of Built-In Rules +================================ + +Here is a catalogue of predefined implicit rules which are always +available unless the makefile explicitly overrides or cancels them. +*Note Canceling Implicit Rules: Canceling Rules, for information on +canceling or overriding an implicit rule. The '-r' or +'--no-builtin-rules' option cancels all predefined rules. + + This manual only documents the default rules available on POSIX-based +operating systems. Other operating systems, such as VMS, Windows, OS/2, +etc. may have different sets of default rules. To see the full list of +default rules and variables available in your version of GNU 'make', run +'make -p' in a directory with no makefile. + + Not all of these rules will always be defined, even when the '-r' +option is not given. Many of the predefined implicit rules are +implemented in 'make' as suffix rules, so which ones will be defined +depends on the "suffix list" (the list of prerequisites of the special +target '.SUFFIXES'). The default suffix list is: '.out', '.a', '.ln', +'.o', '.c', '.cc', '.C', '.cpp', '.p', '.f', '.F', '.m', '.r', '.y', +'.l', '.ym', '.lm', '.s', '.S', '.mod', '.sym', '.def', '.h', '.info', +'.dvi', '.tex', '.texinfo', '.texi', '.txinfo', '.w', '.ch' '.web', +'.sh', '.elc', '.el'. All of the implicit rules described below whose +prerequisites have one of these suffixes are actually suffix rules. If +you modify the suffix list, the only predefined suffix rules in effect +will be those named by one or two of the suffixes that are on the list +you specify; rules whose suffixes fail to be on the list are disabled. +*Note Old-Fashioned Suffix Rules: Suffix Rules, for full details on +suffix rules. + +Compiling C programs + 'N.o' is made automatically from 'N.c' with a recipe of the form + '$(CC) $(CPPFLAGS) $(CFLAGS) -c'. + +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' 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) + $(PFLAGS) -c'. + +Compiling Fortran and Ratfor programs + 'N.o' is made automatically from 'N.r', 'N.F' or 'N.f' by running + the Fortran compiler. The precise recipe used is as follows: + + '.f' + '$(FC) $(FFLAGS) -c'. + '.F' + '$(FC) $(FFLAGS) $(CPPFLAGS) -c'. + '.r' + '$(FC) $(FFLAGS) $(RFLAGS) -c'. + +Preprocessing Fortran and Ratfor programs + 'N.f' is made automatically from 'N.r' or '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: + + '.F' + '$(FC) $(CPPFLAGS) $(FFLAGS) -F'. + '.r' + '$(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)'. + +Assembling and preprocessing assembler programs + 'N.o' is made automatically from 'N.s' by running the assembler, + 'as'. The precise recipe is '$(AS) $(ASFLAGS)'. + + 'N.s' is made automatically from 'N.S' by running the C + preprocessor, 'cpp'. The precise recipe is '$(CPP) $(CPPFLAGS)'. + +Linking a single object file + '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 + source file. It will also do the right thing if there are multiple + object files (presumably coming from various other source files), + one of which has a name matching that of the executable file. + Thus, + + x: y.o z.o + + when 'x.c', 'y.c' and 'z.c' all exist will execute: + + cc -c x.c -o x.o + cc -c y.c -o y.o + cc -c z.c -o z.o + cc x.o y.o z.o -o x + rm -f x.o + rm -f y.o + rm -f z.o + + In more complicated cases, such as when there is no object file + whose name derives from the executable file name, you must write an + explicit recipe for linking. + + Each kind of file automatically made into '.o' object files will be + automatically linked by using the compiler ('$(CC)', '$(FC)' or + '$(PC)'; the C compiler '$(CC)' is used to assemble '.s' files) + without the '-c' option. This could be done by using the '.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. + +Yacc for C programs + 'N.c' is made automatically from 'N.y' by running Yacc with the + recipe '$(YACC) $(YFLAGS)'. + +Lex for C programs + 'N.c' is made automatically from 'N.l' by running Lex. The actual + recipe is '$(LEX) $(LFLAGS)'. + +Lex for Ratfor programs + 'N.r' is made automatically from 'N.l' by running Lex. The actual + recipe is '$(LEX) $(LFLAGS)'. + + The convention of using the same suffix '.l' for all Lex files + regardless of whether they produce C code or Ratfor code makes it + impossible for 'make' to determine automatically which of the two + languages you are using in any particular case. If 'make' is + called upon to remake an object file from a '.l' file, it must + guess which compiler to use. It will guess the C compiler, because + that is more common. If you are using Ratfor, make sure 'make' + knows this by mentioning 'N.r' in the makefile. Or, if you are + using Ratfor exclusively, with no C files, remove '.c' from the + list of implicit rule suffixes with: + + .SUFFIXES: + .SUFFIXES: .o .r .f .l ... + +Making Lint Libraries from C, Yacc, or Lex programs + 'N.ln' is made from 'N.c' by running 'lint'. The precise recipe is + '$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i'. The same recipe is used on + the C code produced from 'N.y' or 'N.l'. + +TeX and Web + 'N.dvi' is made from 'N.tex' with the recipe '$(TEX)'. 'N.tex' is + made from 'N.web' with '$(WEAVE)', or from 'N.w' (and from 'N.ch' + if it exists or can be made) with '$(CWEAVE)'. 'N.p' is made from + 'N.web' with '$(TANGLE)' and 'N.c' is made from 'N.w' (and from + 'N.ch' if it exists or can be made) with '$(CTANGLE)'. + +Texinfo and Info + 'N.dvi' is made from 'N.texinfo', 'N.texi', or 'N.txinfo', with the + recipe '$(TEXI2DVI) $(TEXI2DVI_FLAGS)'. 'N.info' is made from + 'N.texinfo', 'N.texi', or 'N.txinfo', with the recipe + '$(MAKEINFO) $(MAKEINFO_FLAGS)'. + +RCS + Any file 'N' is extracted if necessary from an RCS file named + either 'N,v' or 'RCS/N,v'. The precise recipe used is + '$(CO) $(COFLAGS)'. 'N' will not be extracted from RCS if it + already exists, even if the RCS file is newer. The rules for RCS + are terminal (*note Match-Anything Pattern Rules: Match-Anything + Rules.), so RCS files cannot be generated from another source; they + must actually exist. + +SCCS + Any file 'N' is extracted if necessary from an SCCS file named + either 's.N' or 'SCCS/s.N'. The precise recipe used is + '$(GET) $(GFLAGS)'. The rules for SCCS are terminal (*note + Match-Anything Pattern Rules: Match-Anything Rules.), so SCCS files + cannot be generated from another source; they must actually exist. + + For the benefit of SCCS, a file 'N' is copied from '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. + + 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 + comparable (or inferior) proprietary software, you support the free + software movement. + + Usually, you want to change only the variables listed in the table +above, which are documented in the following section. + + However, the recipes in built-in implicit rules actually use +variables such as 'COMPILE.c', 'LINK.p', and 'PREPROCESS.S', whose +values contain the recipes listed above. + + 'make' follows the convention that the rule to compile a '.X' source +file uses the variable 'COMPILE.X'. Similarly, the rule to produce an +executable from a '.X' file uses 'LINK.X'; and the rule to preprocess a +'.X' file uses 'PREPROCESS.X'. + + Every rule that produces an object file uses the variable +'OUTPUT_OPTION'. 'make' defines this variable either to contain '-o +$@', or to be empty, depending on a compile-time option. You need the +'-o' option to ensure that the output goes into the right file when the +source file is in a different directory, as when using 'VPATH' (*note +Directory Search::). However, compilers on some systems do not accept a +'-o' switch for object files. If you use such a system, and use +'VPATH', some compilations will put their output in the wrong place. A +possible workaround for this problem is to give 'OUTPUT_OPTION' the +value '; mv $*.o $@'. + + +File: make.info, Node: Implicit Variables, Next: Chained Rules, Prev: Catalogue of Rules, Up: Implicit Rules + +10.3 Variables Used by Implicit Rules +===================================== + +The recipes in built-in implicit rules make liberal use of certain +predefined variables. You can alter the values of these variables in +the makefile, with arguments to 'make', or in the environment to alter +how the implicit rules work without redefining the rules themselves. +You can cancel all variables used by implicit rules with the '-R' or +'--no-builtin-variables' option. + + For example, the recipe used to compile a C source file actually says +'$(CC) -c $(CFLAGS) $(CPPFLAGS)'. The default values of the variables +used are 'cc' and nothing, resulting in the command 'cc -c'. By +redefining 'CC' to 'ncc', you could cause 'ncc' to be used for all C +compilations performed by the implicit rule. By redefining 'CFLAGS' to +be '-g', you could pass the '-g' option to each compilation. _All_ +implicit rules that do C compilation use '$(CC)' to get the program name +for the compiler and _all_ include '$(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 'CC') and those that contain arguments +for the programs (like 'CFLAGS'). (The "name of a program" may also +contain some command arguments, but it must start with an actual +executable program name.) If a variable value contains more than one +argument, separate them with spaces. + + The following tables describe of some of the more commonly-used +predefined variables. This list is not exhaustive, and the default +values shown here may not be what 'make' selects for your environment. +To see the complete list of predefined variables for your instance of +GNU 'make' you can run 'make -p' in a directory with no makefiles. + + Here is a table of some of the more common variables used as names of +programs in built-in rules: + +'AR' + Archive-maintaining program; default 'ar'. + +'AS' + Program for compiling assembly files; default 'as'. + +'CC' + Program for compiling C programs; default 'cc'. + +'CXX' + Program for compiling C++ programs; default 'g++'. + +'CPP' + Program for running the C preprocessor, with results to standard + output; default '$(CC) -E'. + +'FC' + Program for compiling or preprocessing Fortran and Ratfor programs; + default 'f77'. + +'M2C' + Program to use to compile Modula-2 source code; default 'm2c'. + +'PC' + Program for compiling Pascal programs; default 'pc'. + +'CO' + Program for extracting a file from RCS; default 'co'. + +'GET' + Program for extracting a file from SCCS; default 'get'. + +'LEX' + Program to use to turn Lex grammars into source code; default + 'lex'. + +'YACC' + Program to use to turn Yacc grammars into source code; default + 'yacc'. + +'LINT' + Program to use to run lint on source code; default 'lint'. + +'MAKEINFO' + Program to convert a Texinfo source file into an Info file; default + 'makeinfo'. + +'TEX' + Program to make TeX DVI files from TeX source; default 'tex'. + +'TEXI2DVI' + Program to make TeX DVI files from Texinfo source; default + 'texi2dvi'. + +'WEAVE' + Program to translate Web into TeX; default 'weave'. + +'CWEAVE' + Program to translate C Web into TeX; default 'cweave'. + +'TANGLE' + Program to translate Web into Pascal; default 'tangle'. + +'CTANGLE' + Program to translate C Web into C; default 'ctangle'. + +'RM' + Command to remove a file; default 'rm -f'. + + Here is a table of variables whose values are additional arguments +for the programs above. The default values for all of these is the +empty string, unless otherwise noted. + +'ARFLAGS' + Flags to give the archive-maintaining program; default 'rv'. + +'ASFLAGS' + Extra flags to give to the assembler (when explicitly invoked on a + '.s' or '.S' file). + +'CFLAGS' + Extra flags to give to the C compiler. + +'CXXFLAGS' + Extra flags to give to the C++ compiler. + +'COFLAGS' + Extra flags to give to the RCS 'co' program. + +'CPPFLAGS' + Extra flags to give to the C preprocessor and programs that use it + (the C and Fortran compilers). + +'FFLAGS' + Extra flags to give to the Fortran compiler. + +'GFLAGS' + Extra flags to give to the SCCS 'get' program. + +'LDFLAGS' + Extra flags to give to compilers when they are supposed to invoke + the linker, 'ld', such as '-L'. Libraries ('-lfoo') should be + added to the 'LDLIBS' variable instead. + +'LDLIBS' + Library flags or names given to compilers when they are supposed to + invoke the linker, 'ld'. 'LOADLIBES' is a deprecated (but still + supported) alternative to 'LDLIBS'. Non-library linker flags, such + as '-L', should go in the 'LDFLAGS' variable. + +'LFLAGS' + Extra flags to give to Lex. + +'YFLAGS' + Extra flags to give to Yacc. + +'PFLAGS' + Extra flags to give to the Pascal compiler. + +'RFLAGS' + Extra flags to give to the Fortran compiler for Ratfor programs. + +'LINTFLAGS' + Extra flags to give to lint. + + +File: make.info, Node: Chained Rules, Next: Pattern Rules, Prev: Implicit Variables, Up: Implicit Rules + +10.4 Chains of Implicit Rules +============================= + +Sometimes a file can be made by a sequence of implicit rules. For +example, a file 'N.o' could be made from 'N.y' by running first Yacc and +then 'cc'. Such a sequence is called a "chain". + + If the file 'N.c' exists, or is mentioned in the makefile, no special +searching is required: 'make' finds that the object file can be made by +C compilation from 'N.c'; later on, when considering how to make 'N.c', +the rule for running Yacc is used. Ultimately both 'N.c' and 'N.o' are +updated. + + However, even if 'N.c' does not exist and is not mentioned, 'make' +knows how to envision it as the missing link between 'N.o' and 'N.y'! +In this case, 'N.c' is called an "intermediate file". Once '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. + + Intermediate files are remade using their rules just like all other +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 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 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' 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 +and 'cc'. Then both 'foo.y' and 'foo.c' are intermediate files that are +deleted at the end. + + No single implicit rule can appear more than once in a chain. This +means that 'make' will not even consider such a ridiculous thing as +making 'foo' from 'foo.o.o' by running the linker twice. This +constraint has the added benefit of preventing any infinite loop in the +search for an implicit rule chain. + + There are some special implicit rules to optimize certain cases that +would otherwise be handled by rule chains. For example, making 'foo' +from 'foo.c' could be handled by compiling and linking with separate +chained rules, using 'foo.o' as an intermediate file. But what actually +happens is that a special rule for this case does the compilation and +linking with a single 'cc' command. The optimized rule is used in +preference to the step-by-step chain because it comes earlier in the +ordering of rules. + + Finally, for performance reasons 'make' will not consider +non-terminal match-anything rules (i.e., '%:') when searching for a rule +to build a prerequisite of an implicit rule (*note Match-Anything +Rules::). + + +File: make.info, Node: Pattern Rules, Next: Last Resort, Prev: Chained Rules, Up: Implicit Rules + +10.5 Defining and Redefining Pattern Rules +========================================== + +You define an implicit rule by writing a "pattern rule". A pattern rule +looks like an ordinary rule, except that its target contains the +character '%' (exactly one of them). The target is considered a pattern +for matching file names; the '%' can match any nonempty substring, while +other characters match only themselves. The prerequisites likewise use +'%' to show how their names relate to the target name. + + Thus, a pattern rule '%.o : %.c' says how to make any file 'STEM.o' +from another file 'STEM.c'. + + Note that expansion using '%' in pattern rules occurs *after* any +variable or function expansions, which take place when the makefile is +read. *Note How to Use Variables: Using Variables, and *note Functions +for Transforming Text: Functions. + +* Menu: + +* Pattern Intro:: An introduction to pattern rules. +* Pattern Examples:: Examples of pattern rules. +* Automatic Variables:: How to use automatic variables in the + recipe of implicit rules. +* Pattern Match:: How patterns match. +* Match-Anything Rules:: Precautions you should take prior to + defining rules that can match any + target file whatever. +* Canceling Rules:: How to override or cancel built-in rules. + + +File: make.info, Node: Pattern Intro, Next: Pattern Examples, Prev: Pattern Rules, Up: Pattern Rules + +10.5.1 Introduction to Pattern Rules +------------------------------------ + +A pattern rule contains the character '%' (exactly one of them) in the +target; otherwise, it looks exactly like an ordinary rule. The target +is a pattern for matching file names; the '%' matches any nonempty +substring, while other characters match only themselves. + + For example, '%.c' as a pattern matches any file name that ends in +'.c'. 's.%.c' as a pattern matches any file name that starts with 's.', +ends in '.c' and is at least five characters long. (There must be at +least one character to match the '%'.) The substring that the '%' +matches is called the "stem". + + '%' in a prerequisite of a pattern rule stands for the same stem that +was matched by the '%' in the target. In order for the pattern rule to +apply, its target pattern must match the file name under consideration +and all of its prerequisites (after pattern substitution) must name +files that exist or can be made. These files become prerequisites of +the target. + + Thus, a rule of the form + + %.o : %.c ; RECIPE... + +specifies how to make a file 'N.o', with another file 'N.c' as its +prerequisite, provided that 'N.c' exists or can be made. + + There may also be prerequisites that do not use '%'; such a +prerequisite attaches to every file made by this pattern rule. These +unvarying prerequisites are useful occasionally. + + A pattern rule need not have any prerequisites that contain '%', or +in fact any prerequisites at all. Such a rule is effectively a general +wildcard. It provides a way to make any file that matches the target +pattern. *Note Last Resort::. + + More than one pattern rule may match a target. In this case 'make' +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. 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 + +10.5.2 Pattern Rule Examples +---------------------------- + +Here are some examples of pattern rules actually predefined in 'make'. +First, the rule that compiles '.c' files into '.o' files: + + %.o : %.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ + +defines a rule that can make any file 'X.o' from 'X.c'. The recipe uses +the automatic variables '$@' and '$<' to substitute the names of the +target file and the source file in each case where the rule applies +(*note Automatic Variables::). + + Here is a second built-in rule: + + % :: RCS/%,v + $(CO) $(COFLAGS) $< + +defines a rule that can make any file 'X' whatsoever from a +corresponding file 'X,v' in the sub-directory 'RCS'. Since the target +is '%', this rule will apply to any file whatever, provided the +appropriate prerequisite file exists. The double colon makes the rule +"terminal", which means that its prerequisite may not be an intermediate +file (*note Match-Anything Pattern Rules: Match-Anything Rules.). + + This pattern rule has two targets: + + %.tab.c %.tab.h: %.y + bison -d $< + +This tells 'make' that the recipe 'bison -d X.y' will make both +'X.tab.c' and 'X.tab.h'. If the file 'foo' depends on the files +'parse.tab.o' and 'scan.o' and the file 'scan.o' depends on the file +'parse.tab.h', when 'parse.y' is changed, the recipe 'bison -d parse.y' +will be executed only once, and the prerequisites of both 'parse.tab.o' +and 'scan.o' will be satisfied. (Presumably the file 'parse.tab.o' will +be recompiled from 'parse.tab.c' and the file 'scan.o' from 'scan.c', +while 'foo' is linked from 'parse.tab.o', 'scan.o', and its other +prerequisites, and it will execute happily ever after.) + + +File: make.info, Node: Automatic Variables, Next: Pattern Match, Prev: Pattern Examples, Up: Pattern Rules + +10.5.3 Automatic Variables +-------------------------- + +Suppose you are writing a pattern rule to compile a '.c' file into a +'.o' file: how do you write the 'cc' command so that it operates on the +right source file name? You cannot write the name in the recipe, +because the name is different each time the implicit rule is applied. + + What you do is use a special feature of 'make', the "automatic +variables". These variables have values computed afresh for each rule +that is executed, based on the target and prerequisites of the rule. In +this example, you would use '$@' for the object file name and '$<' for +the source file name. + + It's very important that you recognize the limited scope in which +automatic variable values are available: they only have values within +the recipe. In particular, you cannot use them anywhere within the +target list of a rule; they have no value there and will expand to the +empty string. Also, they cannot be accessed directly within the +prerequisite list of a rule. A common mistake is attempting to use '$@' +within the prerequisites list; this will not work. However, there is a +special feature of GNU 'make', secondary expansion (*note Secondary +Expansion::), which will allow automatic variable values to be used in +prerequisite lists. + + Here is a table of automatic variables: + +'$@' + The file name of the target of the rule. If the target is an + archive member, then '$@' is the name of the archive file. In a + pattern rule that has multiple targets (*note Introduction to + Pattern Rules: Pattern Intro.), '$@' is the name of whichever + target caused the rule's recipe to be run. + +'$%' + The target member name, when the target is an archive member. + *Note Archives::. For example, if the target is 'foo.a(bar.o)' + then '$%' is 'bar.o' and '$@' is 'foo.a'. '$%' is empty when the + target is not an archive member. + +'$<' + The name of the first prerequisite. If the target got its recipe + from an implicit rule, this will be the first prerequisite added by + the implicit rule (*note Implicit Rules::). + +'$?' + 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 (*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 + used (*note Archives::). A target has only one prerequisite on + each other file it depends on, no matter how many times each file + is listed as a prerequisite. So if you list a prerequisite more + than once for a target, the value of '$^' contains just one copy of + the name. This list does *not* contain any of the order-only + prerequisites; for those see the '$|' variable, below. + +'$+' + This is like '$^', but prerequisites listed more than once are + duplicated in the order they were listed in the makefile. This is + primarily useful for use in linking commands where it is meaningful + to repeat library file names in a particular order. + +'$|' + The names of all the order-only prerequisites, with spaces between + them. + +'$*' + The stem with which an implicit rule matches (*note How Patterns + Match: Pattern Match.). If the target is 'dir/a.foo.b' and the + target pattern is 'a.%.b' then the stem is 'dir/foo'. The stem is + useful for constructing names of related files. + + In a static pattern rule, the stem is part of the file name that + matched the '%' in the target pattern. + + In an explicit rule, there is no stem; so '$*' cannot be determined + in that way. Instead, if the target name ends with a recognized + suffix (*note Old-Fashioned Suffix Rules: Suffix Rules.), '$*' is + set to the target name minus the suffix. For example, if the + target name is 'foo.c', then '$*' is set to 'foo', since '.c' is a + suffix. GNU 'make' does this bizarre thing only for compatibility + with other implementations of 'make'. You should generally avoid + using '$*' except in implicit rules or static pattern rules. + + If the target name in an explicit rule does not end with a + recognized suffix, '$*' is set to the empty string for that rule. + + 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 +name within the directory. The variant variables' names are formed by +appending 'D' or 'F', respectively. The functions 'dir' and 'notdir' +can be used to obtain a similar effect (*note Functions for File Names: +File Name Functions.). Note, however, that the 'D' variants all omit +the trailing slash which always appears in the output of the 'dir' +function. Here is a table of the variants: + +'$(@D)' + The directory part of the file name of the target, with the + trailing slash removed. If the value of '$@' is 'dir/foo.o' then + '$(@D)' is 'dir'. This value is '.' if '$@' does not contain a + slash. + +'$(@F)' + The file-within-directory part of the file name of the target. If + the value of '$@' is 'dir/foo.o' then '$(@F)' is 'foo.o'. '$(@F)' + is equivalent to '$(notdir $@)'. + +'$(*D)' +'$(*F)' + The directory part and the file-within-directory part of the stem; + 'dir' and 'foo' in this example. + +'$(%D)' +'$(%F)' + The directory part and the file-within-directory part of the target + archive member name. This makes sense only for archive member + targets of the form 'ARCHIVE(MEMBER)' and is useful only when + MEMBER may contain a directory name. (*Note Archive Members as + Targets: Archive Members.) + +'$( + #include + #include + #include + #include + + #include + + int plugin_is_GPL_compatible; + + char * + gen_tmpfile(const char *nm, int argc, char **argv) + { + int fd; + + /* Compute the size of the filename and allocate space for it. */ + int len = strlen (argv[0]) + 6 + 1; + char *buf = gmk_alloc (len); + + strcpy (buf, argv[0]); + strcat (buf, "XXXXXX"); + + fd = mkstemp(buf); + if (fd >= 0) + { + /* Don't leak the file descriptor. */ + close (fd); + return buf; + } + + /* Failure. */ + fprintf (stderr, "mkstemp(%s) failed: %s\n", buf, strerror (errno)); + gmk_free (buf); + return NULL; + } + + int + 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, +load it, and use it: + + all: + @echo Temporary file: $(mk-temp tmpfile.) + + load mk_temp.so + + mk_temp.so: mk_temp.c + $(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 +building 'make', typically called 'libgnumake-VERSION.dll.a', where +VERSION is the version of the load object API. So the recipe to produce +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 + + 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 + + +File: make.info, Node: Integrating make, Next: Features, Prev: Extending make, Up: Top + +13 Integrating GNU 'make' +************************* + +GNU 'make' is often one component in a larger system of tools, including +integrated development environments, compiler toolchains, and others. +The role of 'make' is to start commands and determine whether they +succeeded or not: no special integration is needed to accomplish that. +However, sometimes it is convenient to bind 'make' more tightly with +other parts of the system, both higher-level (tools that invoke 'make') +and lower-level (tools that 'make' invokes). + +* Menu: + +* Job Slots:: Share job slots with GNU 'make'. +* Terminal Output:: Control output to terminals. + + +File: make.info, Node: Job Slots, Next: Terminal Output, Prev: Integrating make, Up: Integrating make + +13.1 Sharing Job Slots with GNU 'make' +====================================== + +GNU 'make' has the ability to run multiple recipes in parallel (*note +Parallel Execution: Parallel.) and to cap the total number of parallel +jobs even across recursive invocations of 'make' (*note Communicating +Options to a Sub-'make': Options/Recursion.). Tools that 'make' invokes +which are also able to run multiple operations in parallel, either using +multiple threads or multiple processes, can be enhanced to participate +in GNU '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 'make'. + + GNU 'make' uses a method called the "jobserver" to control the 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, '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 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. + + 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 +jobserver back to the jobserver before they exit, even under error +conditions. Remember that the implicit job slot should *not* be +returned to the jobserver! Returning too few slots means that those +slots will be lost for the rest of the build process; returning too many +slots means that extra slots will be available. The top-level 'make' +command will print an error message at the end of the build if it +detects an incorrect number of slots available in the jobserver. + + As an example, suppose you are implementing a linker which provides +for multithreaded operation. You would like to enhance the linker so +that if it is invoked by GNU 'make' it can participate in the jobserver +protocol to control how many threads are used during link. First you +will need to modify the linker to determine if the 'MAKEFLAGS' +environment variable is set. Next you will need to parse the value of +that variable to determine if the jobserver is available, and how to +access it. If it is available then you can access it to obtain job +slots controlling how much parallelism your tool can use. Once done +your tool must return those job slots back to the jobserver. + +* Menu: + +* POSIX Jobserver:: Using the jobserver on POSIX systems. +* Windows Jobserver:: Using the jobserver on Windows systems. + + +File: make.info, Node: POSIX Jobserver, Next: Windows Jobserver, Prev: Job Slots, Up: Job Slots + +13.1.1 POSIX Jobserver Interaction +---------------------------------- + +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. 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. 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: + + * 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 + 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 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 + +13.1.2 Windows Jobserver Interaction +------------------------------------ + +On Windows systems the jobserver is implemented as a named semaphore. +The semaphore will be set with an initial count equal to the number of +available slots; to obtain a slot you must wait on the semaphore (with +or without a timeout). To release a slot, release the semaphore. + + To access the semaphore you must parse the 'MAKEFLAGS' variable and +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: + + * 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. + + * Your tool should be sure to release the semaphore for 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. + + +File: make.info, Node: Terminal Output, Prev: Job Slots, Up: Integrating make + +13.2 Synchronized Terminal Output +================================= + +Normally GNU 'make' will invoke all commands with access to the same +standard and error outputs that 'make' itself was started with. A +number of tools will detect whether the output is a terminal or +not-a-terminal, and use this information to change the output style. +For example if the output goes to a terminal the tool may add control +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 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 +without interference from other commands. This means that all tools +invoked by 'make' will believe that their output is not going to be +displayed on a terminal, even when it will be (because 'make' will +display it there after the command is completed). + + In order to facilitate tools which would like to determine whether or +not their output will be displayed on a terminal, GNU 'make' will set +the 'MAKE_TERMOUT' and 'MAKE_TERMERR' environment variables before +invoking any commands. Tools which would like to determine whether +standard or error output (respectively) will be displayed on a terminal +can check these environment variables to determine if they exist and +contain a non-empty value. If so the tool can assume that the output +will (eventually) be displayed on a terminal. If the variables are not +set or have an empty value, then the tool should fall back to its normal +methods of detecting whether output is going to a terminal or not. + + The content of the variables can be parsed to determine the type of +terminal which will be used to display the output. + + Similarly, environments which invoke 'make' and would like to capture +the output and eventually display it on a terminal (or some display +which can interpret terminal control characters) can set these variables +before invoking 'make'. GNU 'make' will not modify these environment +variables if they already exist when it starts. + + +File: make.info, Node: Features, Next: Missing, Prev: Integrating make, Up: Top + +14 Features of GNU 'make' +************************* + +Here is a summary of the features of GNU 'make', for comparison with and +credit to other versions of 'make'. We consider the features of 'make' +in 4.2 BSD systems as a baseline. If you are concerned with writing +portable makefiles, you should not use the features of 'make' listed +here, nor the ones in *note Missing::. + + Many features come from the version of 'make' in System V. + + * The 'VPATH' variable and its special meaning. *Note Searching + Directories for Prerequisites: Directory Search. This feature + exists in System V 'make', but is undocumented. It is documented + in 4.3 BSD 'make' (which says it mimics System V's 'VPATH' + feature). + + * Included makefiles. *Note Including Other Makefiles: Include. + Allowing multiple files to be included with a single directive is a + GNU extension. + + * Variables are read from and communicated via the environment. + *Note Variables from the Environment: Environment. + + * Options passed through the variable 'MAKEFLAGS' to recursive + invocations of 'make'. *Note Communicating Options to a + Sub-'make': Options/Recursion. + + * The automatic variable '$%' is set to the member name in an archive + reference. *Note Automatic Variables::. + + * The automatic variables '$@', '$*', '$<', '$%', and '$?' have + corresponding forms like '$(@F)' and '$(@D)'. We have generalized + this to '$^' as an obvious extension. *Note Automatic Variables::. + + * Substitution variable references. *Note Basics of Variable + References: Reference. + + * The command line options '-b' and '-m', accepted and ignored. In + System V 'make', these options actually do something. + + * Execution of recursive commands to run 'make' via the variable + 'MAKE' even if '-n', '-q' or '-t' is specified. *Note Recursive + Use of 'make': Recursion. + + * Support for suffix '.a' in suffix rules. *Note Archive Suffix + Rules::. This feature is obsolete in GNU 'make', because the + general feature of rule chaining (*note Chains of Implicit Rules: + Chained Rules.) allows one pattern rule for installing members in + an archive (*note Archive Update::) to be sufficient. + + * The arrangement of lines and backslash/newline combinations in + recipes is retained when the recipes are printed, so they appear as + they do in the makefile, except for the stripping of initial + whitespace. + + The following features were inspired by various other versions of +'make'. In some cases it is unclear exactly which versions inspired +which others. + + * Pattern rules using '%'. This has been implemented in several + versions of 'make'. We're not sure who invented it first, but it's + been spread around a bit. *Note Defining and Redefining Pattern + Rules: Pattern Rules. + + * Rule chaining and implicit intermediate files. This was + implemented by Stu Feldman in his version of 'make' for AT&T Eighth + Edition Research Unix, and later by Andrew Hume of AT&T Bell Labs + in his 'mk' program (where he terms it "transitive closure"). We + do not really know if we got this from either of them or thought it + up ourselves at the same time. *Note Chains of Implicit Rules: + Chained Rules. + + * The automatic variable '$^' containing a list of all prerequisites + of the current target. We did not invent this, but we have no idea + who did. *Note Automatic Variables::. The automatic variable '$+' + is a simple extension of '$^'. + + * The "what if" flag ('-W' in GNU 'make') was (as far as we know) + invented by Andrew Hume in 'mk'. *Note Instead of Executing + Recipes: Instead of Execution. + + * The concept of doing several things at once (parallelism) exists in + many incarnations of 'make' and similar programs, though not in the + System V or BSD implementations. *Note Recipe Execution: + Execution. + + * A number of different build tools that support parallelism also + support collecting output and displaying as a single block. *Note + Output During Parallel Execution: Parallel Output. + + * Modified variable references using pattern substitution come from + SunOS 4. *Note Basics of Variable References: Reference. This + functionality was provided in GNU 'make' by the 'patsubst' function + before the alternate syntax was implemented for compatibility with + SunOS 4. It is not altogether clear who inspired whom, since GNU + 'make' had 'patsubst' before SunOS 4 was released. + + * The special significance of '+' characters preceding recipe lines + (*note Instead of Executing Recipes: Instead of Execution.) is + mandated by 'IEEE Standard 1003.2-1992' (POSIX.2). + + * The '+=' syntax to append to the value of a variable comes from + SunOS 4 'make'. *Note Appending More Text to Variables: Appending. + + * The syntax 'ARCHIVE(MEM1 MEM2...)' to list multiple members in a + single archive file comes from SunOS 4 'make'. *Note Archive + Members::. + + * The '-include' directive to include makefiles with no error for a + nonexistent file comes from SunOS 4 'make'. (But note that SunOS 4 + 'make' does not allow multiple makefiles to be specified in one + '-include' directive.) The same feature appears with the name + 'sinclude' in SGI 'make' and perhaps others. + + * The '!=' shell assignment operator exists in many BSD of 'make' and + is purposefully implemented here to behave identically to those + implementations. + + * Various build management tools are implemented using scripting + languages such as Perl or Python and thus provide a natural + embedded scripting language, similar to GNU 'make''s integration of + GNU Guile. + + The remaining features are inventions new in GNU 'make': + + * Use the '-v' or '--version' option to print version and copyright + information. + + * Use the '-h' or '--help' option to summarize the options to 'make'. + + * Simply-expanded variables. *Note The Two Flavors of Variables: + Flavors. + + * Pass command line variable assignments automatically through the + variable 'MAKE' to recursive 'make' invocations. *Note Recursive + Use of 'make': Recursion. + + * Use the '-C' or '--directory' command option to change directory. + *Note Summary of Options: Options Summary. + + * Make verbatim variable definitions with 'define'. *Note Defining + Multi-Line Variables: Multi-Line. + + * Declare phony targets with the special target '.PHONY'. + + Andrew Hume of AT&T Bell Labs implemented a similar feature with a + different syntax in his 'mk' program. This seems to be a case of + parallel discovery. *Note Phony Targets: Phony Targets. + + * Manipulate text by calling functions. *Note Functions for + Transforming Text: Functions. + + * Use the '-o' or '--old-file' option to pretend a file's + modification-time is old. *Note Avoiding Recompilation of Some + Files: Avoiding Compilation. + + * Conditional execution. + + This feature has been implemented numerous times in various + versions of 'make'; it seems a natural extension derived from the + features of the C preprocessor and similar macro languages and is + not a revolutionary concept. *Note Conditional Parts of Makefiles: + Conditionals. + + * Specify a search path for included makefiles. *Note Including + Other Makefiles: Include. + + * Specify extra makefiles to read with an environment variable. + *Note The Variable 'MAKEFILES': MAKEFILES Variable. + + * Strip leading sequences of './' from file names, so that './FILE' + and 'FILE' are considered to be the same file. + + * Use a special search method for library prerequisites written in + the form '-lNAME'. *Note Directory Search for Link Libraries: + Libraries/Search. + + * Allow suffixes for suffix rules (*note Old-Fashioned Suffix Rules: + Suffix Rules.) to contain any characters. In other versions of + 'make', they must begin with '.' and not contain any '/' + characters. + + * Keep track of the current level of 'make' recursion using the + variable 'MAKELEVEL'. *Note Recursive Use of 'make': Recursion. + + * Provide any goals given on the command line in the variable + 'MAKECMDGOALS'. *Note Arguments to Specify the Goals: Goals. + + * Specify static pattern rules. *Note Static Pattern Rules: Static + Pattern. + + * Provide selective 'vpath' search. *Note Searching Directories for + Prerequisites: Directory Search. + + * Provide computed variable references. *Note Basics of Variable + References: Reference. + + * Update makefiles. *Note How Makefiles Are Remade: Remaking + Makefiles. System V 'make' has a very, very limited form of this + functionality in that it will check out SCCS files for makefiles. + + * Various new built-in implicit rules. *Note Catalogue of Built-In + Rules: Catalogue of Rules. + + * Load dynamic objects which can modify the behavior of 'make'. + *Note Loading Dynamic Objects: Loading Objects. + + +File: make.info, Node: Missing, Next: Makefile Conventions, Prev: Features, Up: Top + +15 Incompatibilities and Missing Features +***************************************** + +The 'make' programs in various other systems support a few features that +are not implemented in GNU 'make'. The POSIX.2 standard ('IEEE Standard +1003.2-1992') which specifies 'make' does not require any of these +features. + + * A target of the form 'FILE((ENTRY))' stands for a member of archive + file FILE. The member is chosen, not by name, but by being an + object file which defines the linker symbol ENTRY. + + This feature was not put into GNU 'make' because of the + non-modularity of putting knowledge into 'make' of the internal + format of archive file symbol tables. *Note Updating Archive + Symbol Directories: Archive Symbols. + + * Suffixes (used in suffix rules) that end with the character '~' + have a special meaning to System V 'make'; they refer to the SCCS + file that corresponds to the file one would get without the '~'. + For example, the suffix rule '.c~.o' would make the file 'N.o' from + the SCCS file 's.N.c'. For complete coverage, a whole series of + such suffix rules is required. *Note Old-Fashioned Suffix Rules: + Suffix Rules. + + In GNU 'make', this entire series of cases is handled by two + pattern rules for extraction from SCCS, in combination with the + general feature of rule chaining. *Note Chains of Implicit Rules: + Chained Rules. + + * In System V and 4.3 BSD 'make', files found by 'VPATH' search + (*note Searching Directories for Prerequisites: Directory Search.) + have their names changed inside recipes. We feel it is much + cleaner to always use automatic variables and thus make this + feature unnecessary. + + * In some Unix 'make's, the automatic variable '$*' appearing in the + prerequisites of a rule has the amazingly strange "feature" of + expanding to the full name of the _target of that rule_. We cannot + imagine what went on in the minds of Unix 'make' developers to do + this; it is utterly inconsistent with the normal definition of + '$*'. + + * In some Unix 'make's, implicit rule search (*note Using Implicit + Rules: Implicit Rules.) is apparently done for _all_ targets, not + just those without recipes. This means you can do: + + foo.o: + cc -c foo.c + + and Unix 'make' will intuit that 'foo.o' depends on 'foo.c'. + + We feel that such usage is broken. The prerequisite properties of + 'make' are well-defined (for GNU 'make', at least), and doing such + a thing simply does not fit the model. + + * GNU 'make' does not include any built-in implicit rules for + compiling or preprocessing EFL programs. If we hear of anyone who + is using EFL, we will gladly add them. + + * It appears that in SVR4 'make', a suffix rule can be specified with + no recipe, and it is treated as if it had an empty recipe (*note + Empty Recipes::). For example: + + .c.a: + + will override the built-in '.c.a' suffix rule. + + We feel that it is cleaner for a rule without a recipe to always + simply add to the prerequisite list for the target. The above + example can be easily rewritten to get the desired behavior in GNU + 'make': + + .c.a: ; + + * Some versions of 'make' invoke the shell with the '-e' flag, except + under '-k' (*note Testing the Compilation of a Program: Testing.). + The '-e' flag tells the shell to exit as soon as any program it + runs returns a nonzero status. We feel it is cleaner to write each + line of the recipe to stand on its own and not require this special + treatment. + + +File: make.info, Node: Makefile Conventions, Next: Quick Reference, Prev: Missing, Up: Top + +16 Makefile Conventions +*********************** + +This node describes conventions for writing the Makefiles for GNU +programs. Using Automake will help you write a Makefile that follows +these conventions. For more information on portable Makefiles, see +POSIX and *note Portable Make Programming: (autoconf)Portable Make. + +* Menu: + +* Makefile Basics:: General conventions for Makefiles. +* Utilities in Makefiles:: Utilities to be used in Makefiles. +* Command Variables:: Variables for specifying commands. +* DESTDIR:: Supporting staged installs. +* Directory Variables:: Variables for installation directories. +* Standard Targets:: Standard targets for users. +* Install Command Categories:: Three categories of commands in the 'install' + rule: normal, pre-install and post-install. + + +File: make.info, Node: Makefile Basics, Next: Utilities in Makefiles, Up: Makefile Conventions + +16.1 General Conventions for Makefiles +====================================== + +Every Makefile should contain this line: + + SHELL = /bin/sh + +to avoid trouble on systems where the 'SHELL' variable might be +inherited from the environment. (This is never a problem with GNU +'make'.) + + Different 'make' programs have incompatible suffix lists and implicit +rules, and this sometimes creates confusion or misbehavior. So it is a +good idea to set the suffix list explicitly using only the suffixes you +need in the particular Makefile, like this: + + .SUFFIXES: + .SUFFIXES: .c .o + +The first line clears out the suffix list, the second introduces all +suffixes which may be subject to implicit rules in this Makefile. + + Don't assume that '.' is in the path for command execution. When you +need to run programs that are a part of your package during the make, +please make sure that it uses './' if the program is built as part of +the make or '$(srcdir)/' if the file is an unchanging part of the source +code. Without one of these prefixes, the current search path is used. + + The distinction between './' (the "build directory") and '$(srcdir)/' +(the "source directory") is important because users can build in a +separate directory using the '--srcdir' option to 'configure'. A rule +of the form: + + foo.1 : foo.man sedscript + sed -f sedscript foo.man > foo.1 + +will fail when the build directory is not the source directory, because +'foo.man' and 'sedscript' are in the source directory. + + When using GNU 'make', relying on 'VPATH' to find the source file +will work in the case where there is a single dependency file, since the +'make' automatic variable '$<' will represent the source file wherever +it is. (Many versions of 'make' set '$<' only in implicit rules.) A +Makefile target like + + foo.o : bar.c + $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o + +should instead be written as + + foo.o : bar.c + $(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@ + +in order to allow 'VPATH' to work correctly. When the target has +multiple dependencies, using an explicit '$(srcdir)' is the easiest way +to make the rule work well. For example, the target above for 'foo.1' +is best written as: + + foo.1 : foo.man sedscript + sed -f $(srcdir)/sedscript $(srcdir)/foo.man > $@ + + GNU distributions usually contain some files which are not source +files--for example, Info files, and the output from Autoconf, Automake, +Bison or Flex. Since these files normally appear in the source +directory, they should always appear in the source directory, not in the +build directory. So Makefile rules to update them should put the +updated files in the source directory. + + However, if a file does not appear in the distribution, then the +Makefile should not put it in the source directory, because building a +program in ordinary circumstances should not modify the source directory +in any way. + + Try to make the build and installation targets, at least (and all +their subtargets) work correctly with a parallel 'make'. + + +File: make.info, Node: Utilities in Makefiles, Next: Command Variables, Prev: Makefile Basics, Up: Makefile Conventions + +16.2 Utilities in Makefiles +=========================== + +Write the Makefile commands (and any shell scripts, such as 'configure') +to run under 'sh' (both the traditional Bourne shell and the POSIX +shell), not 'csh'. Don't use any special features of 'ksh' or 'bash', +or POSIX features not widely supported in traditional Bourne 'sh'. + + The 'configure' script and the Makefile rules for building and +installation should not use any utilities directly except these: + + awk cat cmp cp diff echo egrep expr false grep install-info ln ls + mkdir mv printf pwd rm rmdir sed sleep sort tar test touch tr true + + Compression programs such as 'gzip' can be used in the 'dist' rule. + + Generally, stick to the widely-supported (usually POSIX-specified) +options and features of these programs. For example, don't use 'mkdir +-p', convenient as it may be, because a few systems don't support it at +all and with others, it is not safe for parallel execution. For a list +of known incompatibilities, see *note Portable Shell Programming: +(autoconf)Portable Shell. + + It is a good idea to avoid creating symbolic links in makefiles, +since a few file systems don't support them. + + The Makefile rules for building and installation can also use +compilers and related programs, but should do so via 'make' variables so +that the user can substitute alternatives. Here are some of the +programs we mean: + + ar bison cc flex install ld ldconfig lex + make makeinfo ranlib texi2dvi yacc + + Use the following 'make' variables to run those programs: + + $(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX) + $(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC) + + When you use 'ranlib' or 'ldconfig', you should make sure nothing bad +happens if the system does not have the program in question. Arrange to +ignore an error from that command, and print a message before the +command to tell the user that failure of this command does not mean a +problem. (The Autoconf 'AC_PROG_RANLIB' macro can help with this.) + + If you use symbolic links, you should implement a fallback for +systems that don't have symbolic links. + + Additional utilities that can be used via Make variables are: + + chgrp chmod chown mknod + + It is ok to use other utilities in Makefile portions (or scripts) +intended only for particular systems where you know those utilities +exist. + + +File: make.info, Node: Command Variables, Next: DESTDIR, Prev: Utilities in Makefiles, Up: Makefile Conventions + +16.3 Variables for Specifying Commands +====================================== + +Makefiles should provide variables for overriding certain commands, +options, and so on. + + In particular, you should run most utility programs via variables. +Thus, if you use Bison, have a variable named 'BISON' whose default +value is set with 'BISON = bison', and refer to it with '$(BISON)' +whenever you need to use Bison. + + File management utilities such as 'ln', 'rm', 'mv', and so on, need +not be referred to through variables in this way, since users don't need +to replace them with other programs. + + Each program-name variable should come with an options variable that +is used to supply options to the program. Append 'FLAGS' to the +program-name variable name to get the options variable name--for +example, 'BISONFLAGS'. (The names 'CFLAGS' for the C compiler, 'YFLAGS' +for yacc, and 'LFLAGS' for lex, are exceptions to this rule, but we keep +them because they are standard.) Use 'CPPFLAGS' in any compilation +command that runs the preprocessor, and use 'LDFLAGS' in any compilation +command that does linking as well as in any direct use of 'ld'. + + If there are C compiler options that _must_ be used for proper +compilation of certain files, do not include them in 'CFLAGS'. Users +expect to be able to specify 'CFLAGS' freely themselves. Instead, +arrange to pass the necessary options to the C compiler independently of +'CFLAGS', by writing them explicitly in the compilation commands or by +defining an implicit rule, like this: + + CFLAGS = -g + ALL_CFLAGS = -I. $(CFLAGS) + .c.o: + $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $< + + Do include the '-g' option in 'CFLAGS', because that is not +_required_ for proper compilation. You can consider it a default that +is only recommended. If the package is set up so that it is compiled +with GCC by default, then you might as well include '-O' in the default +value of 'CFLAGS' as well. + + Put 'CFLAGS' last in the compilation command, after other variables +containing compiler options, so the user can use 'CFLAGS' to override +the others. + + 'CFLAGS' should be used in every invocation of the C compiler, both +those which do compilation and those which do linking. + + Every Makefile should define the variable 'INSTALL', which is the +basic command for installing a file into the system. + + Every Makefile should also define the variables 'INSTALL_PROGRAM' and +'INSTALL_DATA'. (The default for 'INSTALL_PROGRAM' should be +'$(INSTALL)'; the default for 'INSTALL_DATA' should be '${INSTALL} -m +644'.) Then it should use those variables as the commands for actual +installation, for executables and non-executables respectively. Minimal +use of these variables is as follows: + + $(INSTALL_PROGRAM) foo $(bindir)/foo + $(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a + + However, it is preferable to support a 'DESTDIR' prefix on the target +files, as explained in the next section. + + It is acceptable, but not required, to install multiple files in one +command, with the final argument being a directory, as in: + + $(INSTALL_PROGRAM) foo bar baz $(bindir) + + +File: make.info, Node: DESTDIR, Next: Directory Variables, Prev: Command Variables, Up: Makefile Conventions + +16.4 'DESTDIR': Support for Staged Installs +=========================================== + +'DESTDIR' is a variable prepended to each installed target file, like +this: + + $(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo + $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a + + The 'DESTDIR' variable is specified by the user on the 'make' command +line as an absolute file name. For example: + + make DESTDIR=/tmp/stage install + +'DESTDIR' should be supported only in the 'install*' and 'uninstall*' +targets, as those are the only targets where it is useful. + + If your installation step would normally install '/usr/local/bin/foo' +and '/usr/local/lib/libfoo.a', then an installation invoked as in the +example above would install '/tmp/stage/usr/local/bin/foo' and +'/tmp/stage/usr/local/lib/libfoo.a' instead. + + Prepending the variable 'DESTDIR' to each target in this way provides +for "staged installs", where the installed files are not placed directly +into their expected location but are instead copied into a temporary +location ('DESTDIR'). However, installed files maintain their relative +directory structure and any embedded file names will not be modified. + + You should not set the value of 'DESTDIR' in your 'Makefile' at all; +then the files are installed into their expected locations by default. +Also, specifying 'DESTDIR' should not change the operation of the +software in any way, so its value should not be included in any file +contents. + + 'DESTDIR' support is commonly used in package creation. It is also +helpful to users who want to understand what a given package will +install where, and to allow users who don't normally have permissions to +install into protected areas to build and install before gaining those +permissions. Finally, it can be useful with tools such as 'stow', where +code is installed in one place but made to appear to be installed +somewhere else using symbolic links or special mount operations. So, we +strongly recommend GNU packages support 'DESTDIR', though it is not an +absolute requirement. + + +File: make.info, Node: Directory Variables, Next: Standard Targets, Prev: DESTDIR, Up: Makefile Conventions + +16.5 Variables for Installation Directories +=========================================== + +Installation directories should always be named by variables, so it is +easy to install in a nonstandard place. The standard names for these +variables and the values they should have in GNU packages are described +below. They are based on a standard file system layout; variants of it +are used in GNU/Linux and other modern operating systems. + + Installers are expected to override these values when calling 'make' +(e.g., 'make prefix=/usr install') or 'configure' (e.g., 'configure +--prefix=/usr'). GNU packages should not try to guess which value +should be appropriate for these variables on the system they are being +installed onto: use the default settings specified here so that all GNU +packages behave identically, allowing the installer to achieve any +desired layout. + + All installation directories, and their parent directories, should be +created (if necessary) before they are installed into. + + These first two variables set the root for the installation. All the +other installation directories should be subdirectories of one of these +two, and nothing should be directly installed into these two +directories. + +'prefix' + A prefix used in constructing the default values of the variables + listed below. The default value of 'prefix' should be + '/usr/local'. When building the complete GNU system, the prefix + will be empty and '/usr' will be a symbolic link to '/'. (If you + are using Autoconf, write it as '@prefix@'.) + + Running 'make install' with a different value of 'prefix' from the + one used to build the program should _not_ recompile the program. + +'exec_prefix' + A prefix used in constructing the default values of some of the + variables listed below. The default value of 'exec_prefix' should + be '$(prefix)'. (If you are using Autoconf, write it as + '@exec_prefix@'.) + + Generally, '$(exec_prefix)' is used for directories that contain + machine-specific files (such as executables and subroutine + libraries), while '$(prefix)' is used directly for other + directories. + + Running 'make install' with a different value of 'exec_prefix' from + the one used to build the program should _not_ recompile the + program. + + Executable programs are installed in one of the following +directories. + +'bindir' + The directory for installing executable programs that users can + run. This should normally be '/usr/local/bin', but write it as + '$(exec_prefix)/bin'. (If you are using Autoconf, write it as + '@bindir@'.) + +'sbindir' + The directory for installing executable programs that can be run + from the shell, but are only generally useful to system + administrators. This should normally be '/usr/local/sbin', but + write it as '$(exec_prefix)/sbin'. (If you are using Autoconf, + write it as '@sbindir@'.) + +'libexecdir' + The directory for installing executable programs to be run by other + programs rather than by users. This directory should normally be + '/usr/local/libexec', but write it as '$(exec_prefix)/libexec'. + (If you are using Autoconf, write it as '@libexecdir@'.) + + The definition of 'libexecdir' is the same for all packages, so you + should install your data in a subdirectory thereof. Most packages + install their data under '$(libexecdir)/PACKAGE-NAME/', possibly + within additional subdirectories thereof, such as + '$(libexecdir)/PACKAGE-NAME/MACHINE/VERSION'. + + Data files used by the program during its execution are divided into +categories in two ways. + + * Some files are normally modified by programs; others are never + normally modified (though users may edit some of these). + + * Some files are architecture-independent and can be shared by all + machines at a site; some are architecture-dependent and can be + shared only by machines of the same kind and operating system; + others may never be shared between two machines. + + This makes for six different possibilities. However, we want to +discourage the use of architecture-dependent files, aside from object +files and libraries. It is much cleaner to make other data files +architecture-independent, and it is generally not hard. + + Here are the variables Makefiles should use to specify directories to +put these various kinds of files in: + +'datarootdir' + The root of the directory tree for read-only + architecture-independent data files. This should normally be + '/usr/local/share', but write it as '$(prefix)/share'. (If you are + using Autoconf, write it as '@datarootdir@'.) 'datadir''s default + value is based on this variable; so are 'infodir', 'mandir', and + others. + +'datadir' + The directory for installing idiosyncratic read-only + architecture-independent data files for this program. This is + usually the same place as 'datarootdir', but we use the two + separate variables so that you can move these program-specific + files without altering the location for Info files, man pages, etc. + + This should normally be '/usr/local/share', but write it as + '$(datarootdir)'. (If you are using Autoconf, write it as + '@datadir@'.) + + The definition of 'datadir' is the same for all packages, so you + should install your data in a subdirectory thereof. Most packages + install their data under '$(datadir)/PACKAGE-NAME/'. + +'sysconfdir' + The directory for installing read-only data files that pertain to a + single machine-that is to say, files for configuring a host. + Mailer and network configuration files, '/etc/passwd', and so forth + belong here. All the files in this directory should be ordinary + ASCII text files. This directory should normally be + '/usr/local/etc', but write it as '$(prefix)/etc'. (If you are + using Autoconf, write it as '@sysconfdir@'.) + + Do not install executables here in this directory (they probably + belong in '$(libexecdir)' or '$(sbindir)'). Also do not install + files that are modified in the normal course of their use (programs + whose purpose is to change the configuration of the system + excluded). Those probably belong in '$(localstatedir)'. + +'sharedstatedir' + The directory for installing architecture-independent data files + which the programs modify while they run. This should normally be + '/usr/local/com', but write it as '$(prefix)/com'. (If you are + using Autoconf, write it as '@sharedstatedir@'.) + +'localstatedir' + The directory for installing data files which the programs modify + while they run, and that pertain to one specific machine. Users + should never need to modify files in this directory to configure + the package's operation; put such configuration information in + separate files that go in '$(datadir)' or '$(sysconfdir)'. + '$(localstatedir)' should normally be '/usr/local/var', but write + it as '$(prefix)/var'. (If you are using Autoconf, write it as + '@localstatedir@'.) + +'runstatedir' + The directory for installing data files which the programs modify + while they run, that pertain to one specific machine, and which + need not persist longer than the execution of the program--which is + generally long-lived, for example, until the next reboot. PID + files for system daemons are a typical use. In addition, this + directory should not be cleaned except perhaps at reboot, while the + general '/tmp' ('TMPDIR') may be cleaned arbitrarily. This should + normally be '/var/run', but write it as '$(localstatedir)/run'. + Having it as a separate variable allows the use of '/run' if + desired, for example. (If you are using Autoconf 2.70 or later, + write it as '@runstatedir@'.) + + These variables specify the directory for installing certain specific +types of files, if your program has them. Every GNU package should have +Info files, so every program needs 'infodir', but not all need 'libdir' +or 'lispdir'. + +'includedir' + The directory for installing header files to be included by user + programs with the C '#include' preprocessor directive. This should + normally be '/usr/local/include', but write it as + '$(prefix)/include'. (If you are using Autoconf, write it as + '@includedir@'.) + + 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 + 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 + 'includedir' and one specified by 'oldincludedir'. + +'oldincludedir' + The directory for installing '#include' header files for use with + 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 + 'oldincludedir' is empty. If it is, they should not try to use it; + they should cancel the second installation of the header files. + + A package should not replace an existing header in this directory + unless the header came from the same package. Thus, if your Foo + package provides a header file 'foo.h', then it should install the + header file in the 'oldincludedir' directory if either (1) there is + no 'foo.h' there or (2) the 'foo.h' that exists came from the Foo + package. + + To tell whether 'foo.h' came from the Foo package, put a magic + string in the file--part of a comment--and 'grep' for that string. + +'docdir' + The directory for installing documentation files (other than Info) + for this package. By default, it should be + '/usr/local/share/doc/YOURPKG', but it should be written as + '$(datarootdir)/doc/YOURPKG'. (If you are using Autoconf, write it + as '@docdir@'.) The YOURPKG subdirectory, which may include a + version number, prevents collisions among files with common names, + such as 'README'. + +'infodir' + The directory for installing the Info files for this package. By + default, it should be '/usr/local/share/info', but it should be + written as '$(datarootdir)/info'. (If you are using Autoconf, + write it as '@infodir@'.) 'infodir' is separate from 'docdir' for + compatibility with existing practice. + +'htmldir' +'dvidir' +'pdfdir' +'psdir' + Directories for installing documentation files in the particular + format. They should all be set to '$(docdir)' by default. (If you + are using Autoconf, write them as '@htmldir@', '@dvidir@', etc.) + Packages which supply several translations of their documentation + should install them in '$(htmldir)/'LL, '$(pdfdir)/'LL, etc. where + LL is a locale abbreviation such as 'en' or 'pt_BR'. + +'libdir' + The directory for object files and libraries of object code. Do + not install executables here, they probably ought to go in + '$(libexecdir)' instead. The value of 'libdir' should normally be + '/usr/local/lib', but write it as '$(exec_prefix)/lib'. (If you + are using Autoconf, write it as '@libdir@'.) + +'lispdir' + The directory for installing any Emacs Lisp files in this package. + By default, it should be '/usr/local/share/emacs/site-lisp', but it + should be written as '$(datarootdir)/emacs/site-lisp'. + + If you are using Autoconf, write the default as '@lispdir@'. In + order to make '@lispdir@' work, you need the following lines in + your 'configure.ac' file: + + lispdir='${datarootdir}/emacs/site-lisp' + AC_SUBST(lispdir) + +'localedir' + The directory for installing locale-specific message catalogs for + this package. By default, it should be '/usr/local/share/locale', + but it should be written as '$(datarootdir)/locale'. (If you are + using Autoconf, write it as '@localedir@'.) This directory usually + has a subdirectory per locale. + + Unix-style man pages are installed in one of the following: + +'mandir' + The top-level directory for installing the man pages (if any) for + this package. It will normally be '/usr/local/share/man', but you + should write it as '$(datarootdir)/man'. (If you are using + Autoconf, write it as '@mandir@'.) + +'man1dir' + The directory for installing section 1 man pages. Write it as + '$(mandir)/man1'. +'man2dir' + The directory for installing section 2 man pages. Write it as + '$(mandir)/man2' +'...' + + *Don't make the primary documentation for any GNU software be a man + page. Write a manual in Texinfo instead. Man pages are just for + the sake of people running GNU software on Unix, which is a + secondary application only.* + +'manext' + The file name extension for the installed man page. This should + contain a period followed by the appropriate digit; it should + normally be '.1'. + +'man1ext' + The file name extension for installed section 1 man pages. +'man2ext' + The file name extension for installed section 2 man pages. +'...' + Use these names instead of 'manext' if the package needs to install + man pages in more than one section of the manual. + + And finally, you should set the following variable: + +'srcdir' + The directory for the sources being compiled. The value of this + variable is normally inserted by the 'configure' shell script. (If + you are using Autoconf, use 'srcdir = @srcdir@'.) + + For example: + + # Common prefix for installation directories. + # NOTE: This directory must exist when you start the install. + prefix = /usr/local + datarootdir = $(prefix)/share + datadir = $(datarootdir) + exec_prefix = $(prefix) + # Where to put the executable for the command 'gcc'. + bindir = $(exec_prefix)/bin + # Where to put the directories used by the compiler. + libexecdir = $(exec_prefix)/libexec + # Where to put the Info files. + infodir = $(datarootdir)/info + + If your program installs a large number of files into one of the +standard user-specified directories, it might be useful to group them +into a subdirectory particular to that program. If you do this, you +should write the 'install' rule to create these subdirectories. + + Do not expect the user to include the subdirectory name in the value +of any of the variables listed above. The idea of having a uniform set +of variable names for installation directories is to enable the user to +specify the exact same values for several different GNU packages. In +order for this to be useful, all the packages must be designed so that +they will work sensibly when the user does so. + + At times, not all of these variables may be implemented in the +current release of Autoconf and/or Automake; but as of Autoconf 2.60, we +believe all of them are. When any are missing, the descriptions here +serve as specifications for what Autoconf will implement. As a +programmer, you can either use a development version of Autoconf or +avoid using these variables until a stable release is made which +supports them. + + +File: make.info, Node: Standard Targets, Next: Install Command Categories, Prev: Directory Variables, Up: Makefile Conventions + +16.6 Standard Targets for Users +=============================== + +All GNU programs should have the following targets in their Makefiles: + +'all' + Compile the entire program. This should be the default target. + This target need not rebuild any documentation files; Info files + should normally be included in the distribution, and DVI (and other + documentation format) files should be made only when explicitly + asked for. + + By default, the Make rules should compile and link with '-g', so + that executable programs have debugging symbols. Otherwise, you + are essentially helpless in the face of a crash, and it is often + far from easy to reproduce with a fresh build. + +'install' + Compile the program and copy the executables, libraries, and so on + to the file names where they should reside for actual use. If + there is a simple test to verify that a program is properly + installed, this target should run that test. + + Do not strip executables when installing them. This helps eventual + debugging that may be needed later, and nowadays disk space is + cheap and dynamic loaders typically ensure debug sections are not + loaded during normal execution. Users that need stripped binaries + may invoke the 'install-strip' target to do that. + + If possible, write the 'install' target rule so that it does not + modify anything in the directory where the program was built, + provided 'make all' has just been done. This is convenient for + building the program under one user name and installing it under + another. + + The commands should create all the directories in which files are + to be installed, if they don't already exist. This includes the + directories specified as the values of the variables 'prefix' and + 'exec_prefix', as well as all subdirectories that are needed. One + way to do this is by means of an 'installdirs' target as described + below. + + Use '-' before any command for installing a man page, so that + 'make' will ignore any errors. This is in case there are systems + that don't have the Unix man page documentation system installed. + + The way to install Info files is to copy them into '$(infodir)' + with '$(INSTALL_DATA)' (*note Command Variables::), and then run + the 'install-info' program if it is present. 'install-info' is a + program that edits the Info 'dir' file to add or update the menu + entry for the given Info file; it is part of the Texinfo package. + + Here is a sample rule to install an Info file that also tries to + handle some additional situations, such as 'install-info' not being + present. + + do-install-info: foo.info installdirs + $(NORMAL_INSTALL) + # Prefer an info file in . to one in srcdir. + if test -f foo.info; then d=.; \ + else d="$(srcdir)"; fi; \ + $(INSTALL_DATA) $$d/foo.info \ + "$(DESTDIR)$(infodir)/foo.info" + # Run install-info only if it exists. + # Use 'if' instead of just prepending '-' to the + # line so we notice real errors from install-info. + # Use '$(SHELL) -c' because some shells do not + # fail gracefully when there is an unknown command. + $(POST_INSTALL) + if $(SHELL) -c 'install-info --version' \ + >/dev/null 2>&1; then \ + install-info --dir-file="$(DESTDIR)$(infodir)/dir" \ + "$(DESTDIR)$(infodir)/foo.info"; \ + else true; fi + + When writing the 'install' target, you must classify all the + commands into three categories: normal ones, "pre-installation" + commands and "post-installation" commands. *Note Install Command + Categories::. + +'install-html' +'install-dvi' +'install-pdf' +'install-ps' + These targets install documentation in formats other than Info; + they're intended to be called explicitly by the person installing + the package, if that format is desired. GNU prefers Info files, so + these must be installed by the 'install' target. + + When you have many documentation files to install, we recommend + that you avoid collisions and clutter by arranging for these + targets to install in subdirectories of the appropriate + installation directory, such as 'htmldir'. As one example, if your + package has multiple manuals, and you wish to install HTML + documentation with many files (such as the "split" mode output by + 'makeinfo --html'), you'll certainly want to use subdirectories, or + two nodes with the same name in different manuals will overwrite + each other. + + Please make these 'install-FORMAT' targets invoke the commands for + the FORMAT target, for example, by making FORMAT a dependency. + +'uninstall' + Delete all the installed files--the copies that the 'install' and + 'install-*' targets create. + + This rule should not modify the directories where compilation is + done, only the directories where files are installed. + + The uninstallation commands are divided into three categories, just + like the installation commands. *Note Install Command + Categories::. + +'install-strip' + Like 'install', but strip the executable files while installing + them. In simple cases, this target can use the 'install' target in + a simple way: + + install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \ + install + + But if the package installs scripts as well as real executables, + the 'install-strip' target can't just refer to the 'install' + target; it has to strip the executables but not the scripts. + + 'install-strip' should not strip the executables in the build + directory which are being copied for installation. It should only + strip the copies that are installed. + + Normally we do not recommend stripping an executable unless you are + sure the program has no bugs. However, it can be reasonable to + install a stripped executable for actual execution while saving the + unstripped executable elsewhere in case there is a bug. + +'clean' + Delete all files in the current directory that are normally created + by building the program. Also delete files in other directories if + they are created by this makefile. However, don't delete the files + that record the configuration. Also preserve files that could be + made by building, but normally aren't because the distribution + comes with them. There is no need to delete parent directories + that were created with 'mkdir -p', since they could have existed + anyway. + + Delete '.dvi' files here if they are not part of the distribution. + +'distclean' + Delete all files in the current directory (or created by this + makefile) that are created by configuring or building the program. + If you have unpacked the source and built the program without + creating any other files, 'make distclean' should leave only the + files that were in the distribution. However, there is no need to + delete parent directories that were created with 'mkdir -p', since + they could have existed anyway. + +'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. + +'maintainer-clean' + Delete almost everything that can be reconstructed with this + Makefile. This typically includes everything deleted by + 'distclean', plus more: C source files produced by Bison, tags + tables, Info files, and so on. + + The reason we say "almost everything" is that running the command + 'make maintainer-clean' should not delete 'configure' even if + 'configure' can be remade using a rule in the Makefile. More + generally, 'make maintainer-clean' should not delete anything that + needs to exist in order to run 'configure' and then begin to build + the program. Also, there is no need to delete parent directories + that were created with 'mkdir -p', since they could have existed + anyway. These are the only exceptions; 'maintainer-clean' should + delete everything else that can be rebuilt. + + The 'maintainer-clean' target is intended to be used by a + maintainer of the package, not by ordinary users. You may need + special tools to reconstruct some of the files that 'make + maintainer-clean' deletes. Since these files are normally included + in the distribution, we don't take care to make them easy to + reconstruct. If you find you need to unpack the full distribution + again, don't blame us. + + To help make users aware of this, the commands for the special + 'maintainer-clean' target should start with these two: + + @echo 'This command is intended for maintainers to use; it' + @echo 'deletes files that may need special tools to rebuild.' + +'TAGS' + Update a tags table for this program. + +'info' + Generate any Info files needed. The best way to write the rules is + as follows: + + info: foo.info + + foo.info: foo.texi chap1.texi chap2.texi + $(MAKEINFO) $(srcdir)/foo.texi + + You must define the variable 'MAKEINFO' in the Makefile. It should + run the 'makeinfo' program, which is part of the Texinfo + distribution. + + Normally a GNU distribution comes with Info files, and that means + the Info files are present in the source directory. Therefore, the + Make rule for an info file should update it in the source + directory. When users build the package, ordinarily Make will not + update the Info files because they will already be up to date. + +'dvi' +'html' +'pdf' +'ps' + Generate documentation files in the given format. These targets + should always exist, but any or all can be a no-op if the given + output format cannot be generated. These targets should not be + dependencies of the 'all' target; the user must manually invoke + them. + + Here's an example rule for generating DVI files from Texinfo: + + dvi: foo.dvi + + foo.dvi: foo.texi chap1.texi chap2.texi + $(TEXI2DVI) $(srcdir)/foo.texi + + You must define the variable 'TEXI2DVI' in the Makefile. It should + run the program 'texi2dvi', which is part of the Texinfo + distribution. ('texi2dvi' uses TeX to do the real work of + formatting. TeX is not distributed with Texinfo.) Alternatively, + write only the dependencies, and allow GNU 'make' to provide the + command. + + Here's another example, this one for generating HTML from Texinfo: + + html: foo.html + + foo.html: foo.texi chap1.texi chap2.texi + $(TEXI2HTML) $(srcdir)/foo.texi + + Again, you would define the variable 'TEXI2HTML' in the Makefile; + for example, it might run 'makeinfo --no-split --html' ('makeinfo' + is part of the Texinfo distribution). + +'dist' + Create a distribution tar file for this program. The tar file + should be set up so that the file names in the tar file start with + a subdirectory name which is the name of the package it is a + distribution for. This name can include the version number. + + For example, the distribution tar file of GCC version 1.40 unpacks + into a subdirectory named 'gcc-1.40'. + + The easiest way to do this is to create a subdirectory + appropriately named, use 'ln' or 'cp' to install the proper files + in it, and then 'tar' that subdirectory. + + Compress the tar file with 'gzip'. For example, the actual + distribution file for GCC version 1.40 is called 'gcc-1.40.tar.gz'. + It is ok to support other free compression formats as well. + + The 'dist' target should explicitly depend on all non-source files + that are in the distribution, to make sure they are up to date in + the distribution. *Note Making Releases: (standards)Releases. + +'check' + Perform self-tests (if any). The user must build the program + before running the tests, but need not install the program; you + should write the self-tests so that they work when the program is + built but not installed. + + The following targets are suggested as conventional names, for +programs in which they are useful. + +'installcheck' + Perform installation tests (if any). The user must build and + install the program before running the tests. You should not + assume that '$(bindir)' is in the search path. + +'installdirs' + It's useful to add a target named 'installdirs' to create the + directories where files are installed, and their parent + directories. There is a script called 'mkinstalldirs' which is + convenient for this; you can find it in the Gnulib package. You + can use a rule like this: + + # Make sure all installation directories (e.g. $(bindir)) + # actually exist by making them if necessary. + installdirs: mkinstalldirs + $(srcdir)/mkinstalldirs $(bindir) $(datadir) \ + $(libdir) $(infodir) \ + $(mandir) + + or, if you wish to support 'DESTDIR' (strongly encouraged), + + # Make sure all installation directories (e.g. $(bindir)) + # actually exist by making them if necessary. + installdirs: mkinstalldirs + $(srcdir)/mkinstalldirs \ + $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) \ + $(DESTDIR)$(libdir) $(DESTDIR)$(infodir) \ + $(DESTDIR)$(mandir) + + This rule should not modify the directories where compilation is + done. It should do nothing but create installation directories. + + +File: make.info, Node: Install Command Categories, Prev: Standard Targets, Up: Makefile Conventions + +16.7 Install Command Categories +=============================== + +When writing the 'install' target, you must classify all the commands +into three categories: normal ones, "pre-installation" commands and +"post-installation" commands. + + Normal commands move files into their proper places, and set their +modes. They may not alter any files except the ones that come entirely +from the package they belong to. + + Pre-installation and post-installation commands may alter other +files; in particular, they can edit global configuration files or data +bases. + + Pre-installation commands are typically executed before the normal +commands, and post-installation commands are typically run after the +normal commands. + + The most common use for a post-installation command is to run +'install-info'. This cannot be done with a normal command, since it +alters a file (the Info directory) which does not come entirely and +solely from the package being installed. It is a post-installation +command because it needs to be done after the normal command which +installs the package's Info files. + + Most programs don't need any pre-installation commands, but we have +the feature just in case it is needed. + + To classify the commands in the 'install' rule into these three +categories, insert "category lines" among them. A category line +specifies the category for the commands that follow. + + A category line consists of a tab and a reference to a special Make +variable, plus an optional comment at the end. There are three +variables you can use, one for each category; the variable name +specifies the category. Category lines are no-ops in ordinary execution +because these three Make variables are normally undefined (and you +_should not_ define them in the makefile). + + Here are the three possible category lines, each with a comment that +explains what it means: + + $(PRE_INSTALL) # Pre-install commands follow. + $(POST_INSTALL) # Post-install commands follow. + $(NORMAL_INSTALL) # Normal commands follow. + + If you don't use a category line at the beginning of the 'install' +rule, all the commands are classified as normal until the first category +line. If you don't use any category lines, all the commands are +classified as normal. + + These are the category lines for 'uninstall': + + $(PRE_UNINSTALL) # Pre-uninstall commands follow. + $(POST_UNINSTALL) # Post-uninstall commands follow. + $(NORMAL_UNINSTALL) # Normal commands follow. + + Typically, a pre-uninstall command would be used for deleting entries +from the Info directory. + + If the 'install' or 'uninstall' target has any dependencies which act +as subroutines of installation, then you should start _each_ +dependency's commands with a category line, and start the main target's +commands with a category line also. This way, you can ensure that each +command is placed in the right category regardless of which of the +dependencies actually run. + + Pre-installation and post-installation commands should not run any +programs except for these: + + [ basename bash cat chgrp chmod chown cmp cp dd diff echo + egrep expand expr false fgrep find getopt grep gunzip gzip + hostname install install-info kill ldconfig ln ls md5sum + mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee + test touch true uname xargs yes + + The reason for distinguishing the commands in this way is for the +sake of making binary packages. Typically a binary package contains all +the executables and other files that need to be installed, and has its +own method of installing them--so it does not need to run the normal +installation commands. But installing the binary package does need to +execute the pre-installation and post-installation commands. + + Programs to build binary packages work by extracting the +pre-installation and post-installation commands. Here is one way of +extracting the pre-installation commands (the '-s' option to 'make' is +needed to silence messages about entering subdirectories): + + make -s -n install -o all \ + PRE_INSTALL=pre-install \ + POST_INSTALL=post-install \ + NORMAL_INSTALL=normal-install \ + | gawk -f pre-install.awk + +where the file 'pre-install.awk' could contain this: + + $0 ~ /^(normal-install|post-install)[ \t]*$/ {on = 0} + on {print $0} + $0 ~ /^pre-install[ \t]*$/ {on = 1} + + +File: make.info, Node: Quick Reference, Next: Error Messages, Prev: Makefile Conventions, Up: Top + +Appendix A Quick Reference +************************** + +This appendix summarizes the directives, text manipulation functions, +and special variables which GNU 'make' understands. *Note Special +Targets::, *note Catalogue of Built-In Rules: Catalogue of Rules, and +*note Summary of Options: Options Summary, for other summaries. + + Here is a summary of the directives GNU 'make' recognizes: + +'define VARIABLE' +'define VARIABLE =' +'define VARIABLE :=' +'define VARIABLE ::=' +'define VARIABLE :::=' +'define VARIABLE +=' +'define VARIABLE ?=' +'endef' + Define multi-line variables. + *Note Multi-Line::. + +'undefine VARIABLE' + Undefining variables. + *Note Undefine Directive::. + +'ifdef VARIABLE' +'ifndef VARIABLE' +'ifeq (A,B)' +'ifeq "A" "B"' +'ifeq 'A' 'B'' +'ifneq (A,B)' +'ifneq "A" "B"' +'ifneq 'A' 'B'' +'else' +'endif' + Conditionally evaluate part of the makefile. + *Note Conditionals::. + +'include FILE' +'-include FILE' +'sinclude FILE' + Include another makefile. + *Note Including Other Makefiles: Include. + +'override VARIABLE-ASSIGNMENT' + Define a variable, overriding any previous definition, even one + from the command line. + *Note The 'override' Directive: Override Directive. + +'export' + Tell 'make' to export all variables to child processes by default. + *Note Communicating Variables to a Sub-'make': Variables/Recursion. + +'export VARIABLE' +'export VARIABLE-ASSIGNMENT' +'unexport VARIABLE' + Tell 'make' whether or not to export a particular variable to child + processes. + *Note Communicating Variables to a Sub-'make': Variables/Recursion. + +'private VARIABLE-ASSIGNMENT' + Do not allow this variable assignment to be inherited by + prerequisites. + *Note Suppressing Inheritance::. + +'vpath PATTERN PATH' + Specify a search path for files matching a '%' pattern. + *Note The 'vpath' Directive: Selective Search. + +'vpath PATTERN' + Remove all search paths previously specified for PATTERN. + +'vpath' + Remove all search paths previously specified in any 'vpath' + directive. + + Here is a summary of the built-in functions (*note Functions::): + +'$(subst FROM,TO,TEXT)' + Replace FROM with TO in TEXT. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(patsubst PATTERN,REPLACEMENT,TEXT)' + Replace words matching PATTERN with REPLACEMENT in TEXT. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(strip STRING)' + Remove excess whitespace characters from STRING. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(findstring FIND,TEXT)' + Locate FIND in TEXT. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(filter PATTERN...,TEXT)' + Select words in TEXT that match one of the PATTERN words. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(filter-out PATTERN...,TEXT)' + Select words in TEXT that _do not_ match any of the PATTERN words. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(sort LIST)' + Sort the words in LIST lexicographically, removing duplicates. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(word N,TEXT)' + Extract the Nth word (one-origin) of TEXT. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(words TEXT)' + Count the number of words in TEXT. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(wordlist S,E,TEXT)' + Returns the list of words in TEXT from S to E. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(firstword NAMES...)' + Extract the first word of NAMES. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(lastword NAMES...)' + Extract the last word of NAMES. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(dir NAMES...)' + Extract the directory part of each file name. + *Note Functions for File Names: File Name Functions. + +'$(notdir NAMES...)' + Extract the non-directory part of each file name. + *Note Functions for File Names: File Name Functions. + +'$(suffix NAMES...)' + Extract the suffix (the last '.' and following characters) of each + file name. + *Note Functions for File Names: File Name Functions. + +'$(basename NAMES...)' + Extract the base name (name without suffix) of each file name. + *Note Functions for File Names: File Name Functions. + +'$(addsuffix SUFFIX,NAMES...)' + Append SUFFIX to each word in NAMES. + *Note Functions for File Names: File Name Functions. + +'$(addprefix PREFIX,NAMES...)' + Prepend PREFIX to each word in NAMES. + *Note Functions for File Names: File Name Functions. + +'$(join LIST1,LIST2)' + Join two parallel lists of words. + *Note Functions for File Names: File Name Functions. + +'$(wildcard PATTERN...)' + Find file names matching a shell file name pattern (_not_ a '%' + pattern). + *Note The Function 'wildcard': Wildcard Function. + +'$(realpath NAMES...)' + For each file name in NAMES, expand to an absolute name that does + not contain any '.', '..', nor symlinks. + *Note Functions for File Names: File Name Functions. + +'$(abspath NAMES...)' + For each file name in NAMES, expand to an absolute name that does + not contain any '.' or '..' components, but preserves symlinks. + *Note Functions for File Names: File Name Functions. + +'$(error TEXT...)' + When this function is evaluated, 'make' generates a fatal error + with the message TEXT. + *Note Functions That Control Make: Make Control Functions. + +'$(warning TEXT...)' + When this function is evaluated, 'make' generates a warning with + the message TEXT. + *Note Functions That Control Make: Make Control Functions. + +'$(shell COMMAND)' + Execute a shell command and return its output. + *Note The 'shell' Function: Shell Function. + +'$(origin VARIABLE)' + Return a string describing how the 'make' variable VARIABLE was + defined. + *Note The 'origin' Function: Origin Function. + +'$(flavor VARIABLE)' + Return a string describing the flavor of the 'make' variable + 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. + *Note The 'foreach' Function: Foreach Function. + +'$(if CONDITION,THEN-PART[,ELSE-PART])' + Evaluate the condition CONDITION; if it's non-empty substitute the + expansion of the THEN-PART otherwise substitute the expansion of + the ELSE-PART. + *Note Functions for Conditionals: Conditional Functions. + +'$(or CONDITION1[,CONDITION2[,CONDITION3...]])' + Evaluate each condition CONDITIONN one at a time; substitute the + first non-empty expansion. If all expansions are empty, substitute + the empty string. + *Note Functions for Conditionals: Conditional Functions. + +'$(and CONDITION1[,CONDITION2[,CONDITION3...]])' + Evaluate each condition CONDITIONN one at a time; if any expansion + results in the empty string substitute the empty string. If all + expansions result in a non-empty string, substitute the expansion + 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. + *Note The 'call' Function: Call Function. + +'$(eval TEXT)' + Evaluate TEXT then read the results as makefile commands. Expands + to the empty string. + *Note The 'eval' Function: Eval Function. + +'$(file OP FILENAME,TEXT)' + Expand the arguments, then open the file FILENAME using mode OP and + write TEXT to that file. + *Note The 'file' Function: File Function. + +'$(value VAR)' + Evaluates to the contents of the variable VAR, with no expansion + performed on it. + *Note The 'value' Function: Value Function. + + Here is a summary of the automatic variables. *Note Automatic +Variables::, for full information. + +'$@' + The file name of the target. + +'$%' + The target member name, when the target is an archive member. + +'$<' + The name of the first prerequisite. + +'$?' + The names of all the prerequisites that are newer than the target, + with spaces between them. For prerequisites which are archive + members, only the named member is used (*note Archives::). + +'$^' +'$+' + The names of all the prerequisites, with spaces between them. For + prerequisites which are archive members, only the named member is + used (*note Archives::). The value of '$^' omits duplicate + prerequisites, while '$+' retains them and preserves their order. + +'$*' + The stem with which an implicit rule matches (*note How Patterns + Match: Pattern Match.). + +'$(@D)' +'$(@F)' + The directory part and the file-within-directory part of '$@'. + +'$(*D)' +'$(*F)' + The directory part and the file-within-directory part of '$*'. + +'$(%D)' +'$(%F)' + The directory part and the file-within-directory part of '$%'. + +'$( tar-`sed -e '/version_string/!d' \ + -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \ + -e q + version.c`.shar.Z + + .PHONY: dist + dist: $(SRCS) $(AUX) + echo tar-`sed \ + -e '/version_string/!d' \ + -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \ + -e q + version.c` > .fname + -rm -rf `cat .fname` + mkdir `cat .fname` + ln $(SRCS) $(AUX) `cat .fname` + tar chZf `cat .fname`.tar.Z `cat .fname` + -rm -rf `cat .fname` .fname + + tar.zoo: $(SRCS) $(AUX) + -rm -rf tmp.dir + -mkdir tmp.dir + -rm tar.zoo + for X in $(SRCS) $(AUX) ; do \ + echo $$X ; \ + sed 's/$$/^M/' $$X \ + > tmp.dir/$$X ; done + cd tmp.dir ; zoo aM ../tar.zoo * + -rm -rf tmp.dir + + +File: make.info, Node: GNU Free Documentation License, Next: Concept Index, Prev: Complex Makefile, Up: Top + +Appendix D GNU Free Documentation License +***************************************** + + Version 1.3, 3 November 2008 + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + functional and useful document "free" in the sense of freedom: to + assure everyone the effective freedom to copy and redistribute it, + with or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the + author and publisher a way to get credit for their work, while not + being considered responsible for modifications made by others. + + This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. + It complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same freedoms + that the software does. But this License is not limited to + software manuals; it can be used for any textual work, regardless + of subject matter or whether it is published as a printed book. We + recommend this License principally for works whose purpose is + instruction or reference. + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work, in any medium, + that contains a notice placed by the copyright holder saying it can + be distributed under the terms of this License. Such a notice + grants a world-wide, royalty-free license, unlimited in duration, + to use that work under the conditions stated herein. The + "Document", below, refers to any such manual or work. Any member + of the public is a licensee, and is addressed as "you". You accept + the license if you copy, modify or distribute the work in a way + requiring permission under copyright law. + + A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A "Secondary Section" is a named appendix or a front-matter section + of the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall + subject (or to related matters) and contains nothing that could + fall directly within that overall subject. (Thus, if the Document + is in part a textbook of mathematics, a Secondary Section may not + explain any mathematics.) The relationship could be a matter of + historical connection with the subject or with related matters, or + of legal, commercial, philosophical, ethical or political position + regarding them. + + The "Invariant Sections" are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in the + notice that says that the Document is released under this License. + If a section does not fit the above definition of Secondary then it + is not allowed to be designated as Invariant. The Document may + contain zero Invariant Sections. If the Document does not identify + any Invariant Sections then there are none. + + The "Cover Texts" are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice + that says that the Document is released under this License. A + Front-Cover Text may be at most 5 words, and a Back-Cover Text may + be at most 25 words. + + A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images composed + of pixels) generic paint programs or (for drawings) some widely + available drawing editor, and that is suitable for input to text + formatters or for automatic translation to a variety of formats + suitable for input to text formatters. A copy made in an otherwise + Transparent file format whose markup, or absence of markup, has + been arranged to thwart or discourage subsequent modification by + readers is not Transparent. An image format is not Transparent if + used for any substantial amount of text. A copy that is not + "Transparent" is called "Opaque". + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available DTD, and standard-conforming + simple HTML, PostScript or PDF designed for human modification. + Examples of transparent image formats include PNG, XCF and JPG. + Opaque formats include proprietary formats that can be read and + edited only by proprietary word processors, SGML or XML for which + the DTD and/or processing tools are not generally available, and + the machine-generated HTML, PostScript or PDF produced by some word + processors for output purposes only. + + The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For + works in formats which do not have any title page as such, "Title + Page" means the text near the most prominent appearance of the + work's title, preceding the beginning of the body of the text. + + The "publisher" means any person or entity that distributes copies + of the Document to the public. + + A section "Entitled XYZ" means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ + stands for a specific section name mentioned below, such as + "Acknowledgements", "Dedications", "Endorsements", or "History".) + To "Preserve the Title" of such a section when you modify the + Document means that it remains a section "Entitled XYZ" according + to this definition. + + The Document may include Warranty Disclaimers next to the notice + which states that this License applies to the Document. These + Warranty Disclaimers are considered to be included by reference in + this License, but only as regards disclaiming warranties: any other + implication that these Warranty Disclaimers may have is void and + has no effect on the meaning of this License. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that you + add no other conditions whatsoever to those of this License. You + may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, + you may accept compensation in exchange for copies. If you + distribute a large enough number of copies you must also follow the + conditions in section 3. + + You may also lend copies, under the same conditions stated above, + and you may publicly display copies. + + 3. COPYING IN QUANTITY + + If you publish printed copies (or copies in media that commonly + have printed covers) of the Document, numbering more than 100, and + the Document's license notice requires Cover Texts, you must + enclose the copies in covers that carry, clearly and legibly, all + these Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The + front cover must present the full title with all words of the title + equally prominent and visible. You may add other material on the + covers in addition. Copying with changes limited to the covers, as + long as they preserve the title of the Document and satisfy these + conditions, can be treated as verbatim copying in other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + + If you publish or distribute Opaque copies of the Document + numbering more than 100, you must either include a machine-readable + Transparent copy along with each Opaque copy, or state in or with + each Opaque copy a computer-network location from which the general + network-using public has access to download using public-standard + network protocols a complete Transparent copy of the Document, free + of added material. If you use the latter option, you must take + reasonably prudent steps, when you begin distribution of Opaque + copies in quantity, to ensure that this Transparent copy will + remain thus accessible at the stated location until at least one + year after the last time you distribute an Opaque copy (directly or + through your agents or retailers) of that edition to the public. + + It is requested, but not required, that you contact the authors of + the Document well before redistributing any large number of copies, + to give them a chance to provide you with an updated version of the + Document. + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document + under the conditions of sections 2 and 3 above, provided that you + release the Modified Version under precisely this License, with the + Modified Version filling the role of the Document, thus licensing + distribution and modification of the Modified Version to whoever + possesses a copy of it. In addition, you must do these things in + the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title + distinct from that of the Document, and from those of previous + versions (which should, if there were any, be listed in the + History section of the Document). You may use the same title + as a previous version if the original publisher of that + version gives permission. + + B. List on the Title Page, as authors, one or more persons or + entities responsible for authorship of the modifications in + the Modified Version, together with at least five of the + principal authors of the Document (all of its principal + authors, if it has fewer than five), unless they release you + from this requirement. + + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + + D. Preserve all the copyright notices of the Document. + + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + + F. Include, immediately after the copyright notices, a license + notice giving the public permission to use the Modified + Version under the terms of this License, in the form shown in + the Addendum below. + + G. Preserve in that license notice the full lists of Invariant + Sections and required Cover Texts given in the Document's + license notice. + + H. Include an unaltered copy of this License. + + I. Preserve the section Entitled "History", Preserve its Title, + and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on the + Title Page. If there is no section Entitled "History" in the + Document, create one stating the title, year, authors, and + publisher of the Document as given on its Title Page, then add + an item describing the Modified Version as stated in the + previous sentence. + + J. Preserve the network location, if any, given in the Document + for public access to a Transparent copy of the Document, and + likewise the network locations given in the Document for + previous versions it was based on. These may be placed in the + "History" section. You may omit a network location for a work + that was published at least four years before the Document + itself, or if the original publisher of the version it refers + to gives permission. + + K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section + all the substance and tone of each of the contributor + acknowledgements and/or dedications given therein. + + L. Preserve all the Invariant Sections of the Document, unaltered + in their text and in their titles. Section numbers or the + equivalent are not considered part of the section titles. + + M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + + N. Do not retitle any existing section to be Entitled + "Endorsements" or to conflict in title with any Invariant + Section. + + O. Preserve any Warranty Disclaimers. + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no + material copied from the Document, you may at your option designate + some or all of these sections as invariant. To do this, add their + titles to the list of Invariant Sections in the Modified Version's + license notice. These titles must be distinct from any other + section titles. + + You may add a section Entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties--for example, statements of peer review or that the text + has been approved by an organization as the authoritative + definition of a standard. + + You may add a passage of up to five words as a Front-Cover Text, + and a passage of up to 25 words as a Back-Cover Text, to the end of + the list of Cover Texts in the Modified Version. Only one passage + of Front-Cover Text and one of Back-Cover Text may be added by (or + through arrangements made by) any one entity. If the Document + already includes a cover text for the same cover, previously added + by you or by arrangement made by the same entity you are acting on + behalf of, you may not add another; but you may replace the old + one, on explicit permission from the previous publisher that added + the old one. + + The author(s) and publisher(s) of the Document do not by this + License give permission to use their names for publicity for or to + assert or imply endorsement of any Modified Version. + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under + this License, under the terms defined in section 4 above for + modified versions, provided that you include in the combination all + of the Invariant Sections of all of the original documents, + unmodified, and list them all as Invariant Sections of your + combined work in its license notice, and that you preserve all + their Warranty Disclaimers. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name + but different contents, make the title of each such section unique + by adding at the end of it, in parentheses, the name of the + original author or publisher of that section if known, or else a + unique number. Make the same adjustment to the section titles in + the list of Invariant Sections in the license notice of the + combined work. + + In the combination, you must combine any sections Entitled + "History" in the various original documents, forming one section + Entitled "History"; likewise combine any sections Entitled + "Acknowledgements", and any sections Entitled "Dedications". You + must delete all sections Entitled "Endorsements." + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the documents + in all other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert + a copy of this License into the extracted document, and follow this + License in all other respects regarding verbatim copying of that + document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other + separate and independent documents or works, in or on a volume of a + storage or distribution medium, is called an "aggregate" if the + copyright resulting from the compilation is not used to limit the + legal rights of the compilation's users beyond what the individual + works permit. When the Document is included in an aggregate, this + License does not apply to the other works in the aggregate which + are not themselves derivative works of the Document. + + If the Cover Text requirement of section 3 is applicable to these + copies of the Document, then if the Document is less than one half + of the entire aggregate, the Document's Cover Texts may be placed + on covers that bracket the Document within the aggregate, or the + electronic equivalent of covers if the Document is in electronic + form. Otherwise they must appear on printed covers that bracket + the whole aggregate. + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section + 4. Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License, and all the license notices in the + Document, and any Warranty Disclaimers, provided that you also + include the original English version of this License and the + original versions of those notices and disclaimers. In case of a + disagreement between the translation and the original version of + this License or a notice or disclaimer, the original version will + prevail. + + If a section in the Document is Entitled "Acknowledgements", + "Dedications", or "History", the requirement (section 4) to + Preserve its Title (section 1) will typically require changing the + actual title. + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense, or distribute it is void, + and will automatically terminate your rights under this License. + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the + copyright holder fails to notify you of the violation by some + reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from + that copyright holder, and you cure the violation prior to 30 days + after your receipt of the notice. + + Termination of your rights under this section does not terminate + the licenses of parties who have received copies or rights from you + under this License. If your rights have been terminated and not + permanently reinstated, receipt of a copy of some or all of the + same material does not give you any rights to use it. + + 10. FUTURE REVISIONS OF THIS LICENSE + + 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 + . + + Each version of the License is given a distinguishing version + number. If the Document specifies that a particular numbered + version of this License "or any later version" applies to it, you + have the option of following the terms and conditions either of + that specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If the + Document does not specify a version number of this License, you may + choose any version ever published (not as a draft) by the Free + Software Foundation. If the Document specifies that a proxy can + decide which future versions of this License can be used, that + proxy's public statement of acceptance of a version permanently + authorizes you to choose that version for the Document. + + 11. RELICENSING + + "Massive Multiauthor Collaboration Site" (or "MMC Site") means any + World Wide Web server that publishes copyrightable works and also + provides prominent facilities for anybody to edit those works. A + public wiki that anybody can edit is an example of such a server. + A "Massive Multiauthor Collaboration" (or "MMC") contained in the + site means any set of copyrightable works thus published on the MMC + site. + + "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 + license published by Creative Commons Corporation, a not-for-profit + corporation with a principal place of business in San Francisco, + California, as well as future copyleft versions of that license + published by that same organization. + + "Incorporate" means to publish or republish a Document, in whole or + in part, as part of another Document. + + An MMC is "eligible for relicensing" if it is licensed under this + License, and if all works that were first published under this + License somewhere other than this MMC, and subsequently + incorporated in whole or in part into the MMC, (1) had no cover + texts or invariant sections, and (2) were thus incorporated prior + to November 1, 2008. + + The operator of an MMC Site may republish an MMC contained in the + site under CC-BY-SA on the same site at any time before August 1, + 2009, provided the MMC is eligible for relicensing. + +ADDENDUM: How to use this License for your documents +==================================================== + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and license +notices just after the title page: + + Copyright (C) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. A copy of the license is included in the section entitled ``GNU + Free Documentation License''. + + If you have Invariant Sections, Front-Cover Texts and Back-Cover +Texts, replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with + the Front-Cover Texts being LIST, and with the Back-Cover Texts + being LIST. + + If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + + If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of free +software license, such as the GNU General Public License, to permit +their use in free software. + + +File: make.info, Node: Concept Index, Next: Name Index, Prev: GNU Free Documentation License, Up: Top + +Index of Concepts +***************** + +[index] +* Menu: + +* !=: Setting. (line 6) +* !=, expansion: Reading Makefiles. (line 34) +* # (comments), in makefile: Makefile Contents. (line 41) +* # (comments), in recipes: Recipe Syntax. (line 29) +* #include: Automatic Prerequisites. + (line 16) +* $, in function call: Syntax of Functions. (line 6) +* $, in rules: Rule Syntax. (line 33) +* $, 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 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 27) +* * (wildcard character): Wildcards. (line 6) +* +, and define: Canned Recipes. (line 49) +* +, and recipe execution: Instead of Execution. + (line 67) +* +, and recipes: MAKE Variable. (line 18) +* +=: Appending. (line 6) +* +=, expansion: Reading Makefiles. (line 34) +* +=, expansion <1>: Reading Makefiles. (line 34) +* ,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 346) +* --assume-new, and recursion: Options/Recursion. (line 30) +* --assume-old: Avoiding Compilation. + (line 6) +* --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 30) +* --dry-run: Echoing. (line 18) +* --dry-run <1>: Instead of Execution. + (line 14) +* --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 107) +* --file, and recursion: Options/Recursion. (line 30) +* --help: Options Summary. (line 113) +* --ignore-errors: Errors. (line 30) +* --ignore-errors <1>: Options Summary. (line 118) +* --include-dir: Include. (line 53) +* --include-dir <1>: Options Summary. (line 123) +* --jobs: Parallel. (line 6) +* --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 176) +* --keep-going: Errors. (line 46) +* --keep-going <1>: Testing. (line 16) +* --keep-going <2>: Options Summary. (line 152) +* --load-average: Parallel. (line 35) +* --load-average <1>: Options Summary. (line 159) +* --makefile: Makefile Names. (line 23) +* --makefile <1>: Makefile Arguments. (line 6) +* --makefile <2>: Options Summary. (line 108) +* --max-load: Parallel. (line 35) +* --max-load <1>: Options Summary. (line 160) +* --new-file: Instead of Execution. + (line 41) +* --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 337) +* --old-file: Avoiding Compilation. + (line 6) +* --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 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 224) +* --quiet: Echoing. (line 24) +* --quiet <1>: Options Summary. (line 255) +* --recon: Echoing. (line 18) +* --recon <1>: Instead of Execution. + (line 14) +* --recon <2>: Options Summary. (line 178) +* --shuffle: Options Summary. (line 269) +* --silent: Echoing. (line 24) +* --silent <1>: Options Summary. (line 254) +* --stop: Options Summary. (line 262) +* --touch: Instead of Execution. + (line 24) +* --touch <1>: Options Summary. (line 312) +* --touch, and recursion: MAKE Variable. (line 35) +* --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 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 30) +* -d: Options Summary. (line 33) +* -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 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 117) +* -I <1>: Options Summary. (line 122) +* -j: Parallel. (line 6) +* -j <1>: Options Summary. (line 133) +* -j, and archive update: Archive Pitfalls. (line 6) +* -j, and recursion: Options/Recursion. (line 33) +* -k: Errors. (line 46) +* -k <1>: Testing. (line 16) +* -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) +* -M (to compiler): Automatic Prerequisites. + (line 18) +* -MM (to GNU compiler): Automatic Prerequisites. + (line 67) +* -n: Echoing. (line 18) +* -n <1>: Instead of Execution. + (line 14) +* -n <2>: Options Summary. (line 175) +* -O: Parallel Output. (line 11) +* -o: Avoiding Compilation. + (line 6) +* -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 223) +* -r: Options Summary. (line 231) +* -R: Options Summary. (line 244) +* -s: Echoing. (line 24) +* -s <1>: Options Summary. (line 253) +* -S: Options Summary. (line 260) +* -t: Instead of Execution. + (line 24) +* -t <1>: Options Summary. (line 311) +* -t, and recursion: MAKE Variable. (line 35) +* -v: Options Summary. (line 323) +* -W: Instead of Execution. + (line 41) +* -w: Options Summary. (line 328) +* -W <1>: Options Summary. (line 343) +* -w, and -C: -w Option. (line 20) +* -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. + (line 6) +* .c: Catalogue of Rules. (line 35) +* .C: Catalogue of Rules. (line 39) +* .cc: Catalogue of Rules. (line 39) +* .ch: Catalogue of Rules. (line 153) +* .cpp: Catalogue of Rules. (line 39) +* .d: Automatic Prerequisites. + (line 80) +* .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 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 86) +* .ONESHELL, use of: One Shell. (line 6) +* .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 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) +* :::=: Immediate Assignment. + (line 6) +* :::= <1>: Setting. (line 6) +* ::=: Simple Assignment. (line 9) +* ::= <1>: Setting. (line 6) +* :=: Simple Assignment. (line 9) +* := <1>: Setting. (line 6) +* =: Recursive Assignment. + (line 6) +* = <1>: Setting. (line 6) +* =, expansion: Reading Makefiles. (line 34) +* ? (wildcard character): Wildcards. (line 6) +* ?=: Conditional Assignment. + (line 6) +* ?= <1>: Setting. (line 6) +* ?=, expansion: Reading Makefiles. (line 34) +* @ (in recipes): Echoing. (line 6) +* @, and define: Canned Recipes. (line 49) +* [...] (wildcard characters): Wildcards. (line 6) +* \ (backslash), for continuation lines: Simple Makefile. (line 41) +* \ (backslash), in recipes: Splitting Recipe Lines. + (line 6) +* \ (backslash), to quote %: Selective Search. (line 39) +* \ (backslash), to quote % <1>: Static Usage. (line 37) +* \ (backslash), to quote % <2>: Text Functions. (line 27) +* __.SYMDEF: Archive Symbols. (line 6) +* ~ (tilde): Wildcards. (line 16) +* abspath: File Name Functions. (line 120) +* algorithm for directory search: Search Algorithm. (line 6) +* all (standard target): Goals. (line 73) +* appending to variables: Appending. (line 6) +* ar: Implicit Variables. (line 40) +* archive: Archives. (line 6) +* archive member targets: Archive Members. (line 6) +* archive symbol directory updating: Archive Symbols. (line 6) +* archive, and -j: Archive Pitfalls. (line 6) +* archive, and parallel execution: Archive Pitfalls. (line 6) +* archive, suffix rule for: Archive Suffix Rules. + (line 6) +* Arg list too long: Options/Recursion. (line 66) +* arguments of functions: Syntax of Functions. (line 6) +* as: Catalogue of Rules. (line 79) +* as <1>: Implicit Variables. (line 43) +* 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) +* automatic variables: Automatic Variables. (line 6) +* automatic variables in prerequisites: Automatic Variables. (line 17) +* backquotes: Shell Function. (line 6) +* backslash (\), for continuation lines: Simple Makefile. (line 41) +* backslash (\), in recipes: Splitting Recipe Lines. + (line 6) +* backslash (\), to quote %: Selective Search. (line 39) +* backslash (\), to quote % <1>: Static Usage. (line 37) +* 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) +* basename: File Name Functions. (line 56) +* binary packages: Install Command Categories. + (line 80) +* broken pipe: Parallel Input. (line 11) +* bugs, reporting: Bugs. (line 6) +* built-in special targets: Special Targets. (line 6) +* C++, rule to compile: Catalogue of Rules. (line 39) +* C, rule to compile: Catalogue of Rules. (line 35) +* canned recipes: Canned Recipes. (line 6) +* cc: Catalogue of Rules. (line 35) +* cc <1>: Implicit Variables. (line 46) +* cd (shell command): Execution. (line 12) +* cd (shell command) <1>: MAKE Variable. (line 16) +* chains of rules: Chained Rules. (line 6) +* check (standard target): Goals. (line 115) +* clean (standard target): Goals. (line 76) +* clean target: Simple Makefile. (line 85) +* clean target <1>: Cleanup. (line 11) +* cleaning up: Cleanup. (line 6) +* clobber (standard target): Goals. (line 87) +* 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 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 94) +* compilation, testing: Testing. (line 6) +* computed variable name: Computed Names. (line 6) +* conditional expansion: Conditional Functions. + (line 6) +* conditional variable assignment: Conditional Assignment. + (line 6) +* conditionals: Conditionals. (line 6) +* continuation lines: Simple Makefile. (line 41) +* controlling make: Make Control Functions. + (line 6) +* conventions for makefiles: Makefile Conventions. + (line 6) +* convert guile types: Guile Types. (line 6) +* ctangle: Catalogue of Rules. (line 153) +* ctangle <1>: Implicit Variables. (line 103) +* cweave: Catalogue of Rules. (line 153) +* cweave <1>: Implicit Variables. (line 97) +* 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 12) +* default goal <1>: Rules. (line 11) +* default makefile name: Makefile Names. (line 6) +* default rules, last-resort: Last Resort. (line 6) +* define, expansion: Reading Makefiles. (line 34) +* defining variables verbatim: Multi-Line. (line 6) +* deletion of target files: Errors. (line 63) +* deletion of target files <1>: Interrupts. (line 6) +* directive: Makefile Contents. (line 28) +* directories, creating installation: Directory Variables. (line 20) +* directories, printing them: -w Option. (line 6) +* directories, updating archive symbol: Archive Symbols. (line 6) +* directory part: File Name Functions. (line 16) +* directory search (VPATH): Directory Search. (line 6) +* directory search (VPATH), and implicit rules: Implicit/Search. + (line 6) +* directory search (VPATH), and link libraries: Libraries/Search. + (line 6) +* 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) +* dollar sign ($), in rules: Rule Syntax. (line 33) +* dollar sign ($), in variable name: Computed Names. (line 6) +* 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 156) +* E2BIG: Options/Recursion. (line 66) +* echoing of recipes: Echoing. (line 6) +* editor: Introduction. (line 22) +* Emacs (M-x compile): Errors. (line 61) +* empty recipes: Empty Recipes. (line 6) +* empty targets: Empty Targets. (line 6) +* environment: Environment. (line 6) +* environment, and recursion: Variables/Recursion. (line 6) +* environment, SHELL in: Choosing the Shell. (line 12) +* error, stopping on: Make Control Functions. + (line 11) +* errors (in recipes): Errors. (line 6) +* errors with wildcards: Wildcard Pitfall. (line 6) +* evaluating makefile syntax: Eval Function. (line 6) +* example of loaded objects: Loaded Object Example. + (line 6) +* example using Guile: Guile Example. (line 6) +* execution, in parallel: Parallel. (line 6) +* execution, instead of: Instead of Execution. + (line 6) +* execution, of recipes: Execution. (line 6) +* exit status (errors): Errors. (line 6) +* 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 103) +* explicit rules, secondary expansion of: Secondary Expansion. + (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 51) +* f77 <1>: Implicit Variables. (line 57) +* FDL, GNU Free Documentation License: GNU Free Documentation License. + (line 6) +* features of GNU make: Features. (line 6) +* features, missing: Missing. (line 6) +* file name functions: File Name Functions. (line 6) +* file name of makefile: Makefile Names. (line 6) +* file name of makefile, how to specify: Makefile Names. (line 31) +* file name prefix, adding: File Name Functions. (line 78) +* file name suffix: File Name Functions. (line 42) +* file name suffix, adding: File Name Functions. (line 67) +* file name with wildcards: Wildcards. (line 6) +* file name, abspath of: File Name Functions. (line 120) +* file name, basename of: File Name Functions. (line 56) +* file name, directory part: File Name Functions. (line 16) +* file name, nondirectory part: File Name Functions. (line 26) +* file name, realpath of: File Name Functions. (line 113) +* file, reading from: File Function. (line 6) +* file, writing to: File Function. (line 6) +* files, assuming new: Instead of Execution. + (line 41) +* files, assuming old: Avoiding Compilation. + (line 6) +* files, avoiding recompilation of: Avoiding Compilation. + (line 6) +* files, intermediate: Chained Rules. (line 16) +* 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 51) +* function arguments, special characters in: Syntax of Functions. + (line 40) +* functions: Functions. (line 6) +* functions, for controlling make: Make Control Functions. + (line 6) +* functions, for file names: File Name Functions. (line 6) +* functions, for text: Text Functions. (line 6) +* functions, syntax of: Syntax of Functions. (line 6) +* functions, user defined: Call Function. (line 6) +* g++: Catalogue of Rules. (line 39) +* g++ <1>: Implicit Variables. (line 49) +* gcc: Catalogue of Rules. (line 35) +* generating prerequisites automatically: Include. (line 51) +* generating prerequisites automatically <1>: Automatic Prerequisites. + (line 6) +* get: Catalogue of Rules. (line 176) +* get <1>: Implicit Variables. (line 69) +* globbing (wildcards): Wildcards. (line 6) +* 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) +* Guile: Guile Function. (line 6) +* Guile <1>: Guile Integration. (line 6) +* Guile example: Guile Example. (line 6) +* guile, conversion of types: Guile Types. (line 6) +* home directory: Wildcards. (line 16) +* IEEE Standard 1003.2: Overview. (line 13) +* 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 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 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 160) +* inheritance, suppressing: Suppressing Inheritance. + (line 6) +* input during parallel execution: Parallel Input. (line 6) +* install (standard target): Goals. (line 93) +* installation directories, creating: Directory Variables. (line 20) +* 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 63) +* intermediate targets, explicit: Special Targets. (line 48) +* interrupt: Interrupts. (line 6) +* job slots: Parallel. (line 6) +* 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) +* jobserver on POSIX: POSIX Jobserver. (line 6) +* jobserver on Windows: Windows Jobserver. (line 6) +* 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 86) +* lex: Catalogue of Rules. (line 125) +* lex <1>: Implicit Variables. (line 73) +* 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 86) +* lint: Catalogue of Rules. (line 147) +* lint <1>: Implicit Variables. (line 80) +* 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) +* loaded object example: Loaded Object Example. + (line 6) +* loaded object licensing: Loaded Object API. (line 31) +* loaded objects: Loading Objects. (line 6) +* loaded objects, remaking of: Remaking Loaded Objects. + (line 6) +* long lines, splitting: Splitting Lines. (line 6) +* 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 73) +* m2c <1>: Implicit Variables. (line 60) +* macro: Using Variables. (line 10) +* make depend: Automatic Prerequisites. + (line 37) +* make extensions: Extending make. (line 6) +* make integration: Integrating make. (line 6) +* make interface to guile: Guile Interface. (line 6) +* make procedures in guile: Guile Interface. (line 6) +* makefile: Introduction. (line 7) +* makefile name: Makefile Names. (line 6) +* makefile name, how to specify: Makefile Names. (line 31) +* makefile rule parts: Rule Introduction. (line 6) +* makefile syntax, evaluating: Eval Function. (line 6) +* makefile, and MAKEFILES variable: MAKEFILES Variable. (line 6) +* makefile, conventions for: Makefile Conventions. + (line 6) +* makefile, how make processes: How Make Works. (line 6) +* makefile, how to write: Makefiles. (line 6) +* makefile, including: Include. (line 6) +* makefile, overriding: Overriding Makefiles. + (line 6) +* makefile, reading: Reading Makefiles. (line 6) +* makefile, remaking of: Remaking Makefiles. (line 6) +* makefile, simple: Simple Makefile. (line 6) +* 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 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. + (line 12) +* 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 73) +* mostlyclean (standard target): Goals. (line 79) +* multi-line variable definition: Multi-Line. (line 6) +* multiple rules for one target: Multiple Rules. (line 6) +* multiple rules for one target (::): Double-Colon. (line 6) +* multiple targets: Multiple Targets. (line 6) +* multiple targets, in pattern rule: Pattern Intro. (line 44) +* name of makefile: Makefile Names. (line 6) +* name of makefile, how to specify: Makefile Names. (line 31) +* nested variable reference: Computed Names. (line 6) +* newline, quoting, in makefile: Simple Makefile. (line 41) +* newline, quoting, in recipes: Splitting Recipe Lines. + (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) +* OBJECTS: Variables Simplify. (line 20) +* objects, loaded: Loading Objects. (line 6) +* objs: Variables Simplify. (line 20) +* OBJS: Variables Simplify. (line 20) +* 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 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 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 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 47) +* pattern rule: Pattern Intro. (line 6) +* 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 47) +* pc <1>: Implicit Variables. (line 63) +* phony targets: Phony Targets. (line 6) +* phony targets and recipe execution: Instead of Execution. + (line 75) +* pitfalls of wildcards: Wildcard Pitfall. (line 6) +* plugin_is_GPL_compatible: Loaded Object API. (line 31) +* portability: Features. (line 6) +* POSIX: Overview. (line 13) +* 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 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 103) +* prerequisites: Rule Syntax. (line 47) +* prerequisites, and automatic variables: Automatic Variables. + (line 17) +* prerequisites, automatic generation: Include. (line 51) +* prerequisites, automatic generation <1>: Automatic Prerequisites. + (line 6) +* prerequisites, introduction to: Rule Introduction. (line 8) +* 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 63) +* preserving with .PRECIOUS: Special Targets. (line 32) +* 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) +* printing directories: -w Option. (line 6) +* printing messages: Make Control Functions. + (line 43) +* printing of recipes: Echoing. (line 6) +* printing user warnings: Make Control Functions. + (line 35) +* problems and bugs, reporting: Bugs. (line 6) +* problems with wildcards: Wildcard Pitfall. (line 6) +* processing a makefile: How Make Works. (line 6) +* question mode: Instead of Execution. + (line 32) +* 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 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 185) +* recipe lines, single shell: One Shell. (line 6) +* recipe syntax: Recipe Syntax. (line 6) +* recipe, execution: Execution. (line 6) +* recipes: Rule Syntax. (line 25) +* recipes <1>: Recipes. (line 6) +* recipes setting shell variables: Execution. (line 12) +* recipes, and directory search: Recipes/Search. (line 6) +* recipes, backslash (\) in: Splitting Recipe Lines. + (line 6) +* recipes, canned: Canned Recipes. (line 6) +* recipes, comments in: Recipe Syntax. (line 29) +* recipes, echoing: Echoing. (line 6) +* recipes, empty: Empty Recipes. (line 6) +* recipes, errors in: Errors. (line 6) +* recipes, execution in parallel: Parallel. (line 6) +* recipes, how to write: Recipes. (line 6) +* recipes, instead of executing: Instead of Execution. + (line 6) +* recipes, introduction to: Rule Introduction. (line 8) +* recipes, quoting newlines in: Splitting Recipe Lines. + (line 6) +* recipes, splitting: Splitting Recipe Lines. + (line 6) +* recipes, using variables in: Variables in Recipes. + (line 6) +* recompilation: Introduction. (line 22) +* recompilation, avoiding: Avoiding Compilation. + (line 6) +* recording events with empty targets: Empty Targets. (line 6) +* recursion: Recursion. (line 6) +* 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 30) +* recursion, and -w: -w Option. (line 20) +* recursion, and command line variable definitions: Options/Recursion. + (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 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 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 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) +* rm: Implicit Variables. (line 106) +* rm (shell command): Simple Makefile. (line 85) +* rm (shell command) <1>: Wildcard Examples. (line 12) +* rm (shell command) <2>: Phony Targets. (line 20) +* rm (shell command) <3>: Errors. (line 27) +* rule prerequisites: Rule Syntax. (line 47) +* rule syntax: Rule Syntax. (line 6) +* rule targets: Rule Syntax. (line 18) +* rule, double-colon (::): Double-Colon. (line 6) +* rule, explicit, definition of: Makefile Contents. (line 10) +* rule, how to write: Rules. (line 6) +* rule, implicit: Implicit Rules. (line 6) +* rule, implicit, and directory search: Implicit/Search. (line 6) +* rule, implicit, and VPATH: Implicit/Search. (line 6) +* rule, implicit, chains of: Chained Rules. (line 6) +* rule, implicit, definition of: Makefile Contents. (line 16) +* rule, implicit, how to use: Using Implicit. (line 6) +* rule, implicit, introduction to: make Deduces. (line 6) +* rule, implicit, predefined: Catalogue of Rules. (line 6) +* rule, introduction to: Rule Introduction. (line 6) +* rule, multiple for one target: Multiple Rules. (line 6) +* rule, no recipe or prerequisites: Force Targets. (line 6) +* rule, pattern: Pattern Intro. (line 6) +* rule, static pattern: Static Pattern. (line 6) +* rule, static pattern versus implicit: Static versus Implicit. + (line 6) +* rule, with multiple targets: Multiple Targets. (line 6) +* rules, and $: Rule Syntax. (line 33) +* 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) +* search path for prerequisites (VPATH), and implicit rules: Implicit/Search. + (line 6) +* search path for prerequisites (VPATH), and link libraries: Libraries/Search. + (line 6) +* searching for strings: Text Functions. (line 105) +* secondary expansion: Secondary Expansion. (line 6) +* secondary expansion and explicit rules: Secondary Expansion. + (line 103) +* secondary expansion and implicit rules: Secondary Expansion. + (line 143) +* secondary expansion and static pattern rules: Secondary Expansion. + (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 160) +* selecting word lists: Text Functions. (line 169) +* sequences of commands: Canned Recipes. (line 6) +* 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) +* shar (standard target): Goals. (line 104) +* shell command, function for: Shell Function. (line 6) +* shell file name pattern (in include): Include. (line 13) +* 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 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) +* signal: Interrupts. (line 6) +* silent operation: Echoing. (line 6) +* simple makefile: Simple Makefile. (line 6) +* simple variable expansion: Using Variables. (line 6) +* simplifying with variables: Variables Simplify. (line 6) +* 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) +* splitting long lines: Splitting Lines. (line 6) +* splitting recipes: Splitting Recipe Lines. + (line 6) +* staged installs: DESTDIR. (line 6) +* standard input: Parallel Input. (line 6) +* standards conformance: Overview. (line 13) +* standards for makefiles: Makefile Conventions. + (line 6) +* static pattern rule: Static Pattern. (line 6) +* static pattern rule, syntax of: Static Usage. (line 6) +* static pattern rule, versus implicit: Static versus Implicit. + (line 6) +* static pattern rules, secondary expansion of: Secondary Expansion. + (line 135) +* stem: Static Usage. (line 17) +* stem <1>: Pattern Match. (line 6) +* 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 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) +* suffix rule: Suffix Rules. (line 6) +* suffix rule, for archive: Archive Suffix Rules. + (line 6) +* suffix, adding: File Name Functions. (line 67) +* suffix, function to find: File Name Functions. (line 42) +* suffix, substituting in variables: Substitution Refs. (line 6) +* suppressing inheritance: Suppressing Inheritance. + (line 6) +* switches: Options Summary. (line 6) +* symbol directories, updating archive: Archive Symbols. (line 6) +* syntax of recipe: Recipe Syntax. (line 6) +* syntax of rules: Rule Syntax. (line 6) +* 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 153) +* tangle <1>: Implicit Variables. (line 100) +* tar (standard target): Goals. (line 101) +* target: Rules. (line 6) +* target pattern, implicit: Pattern Intro. (line 9) +* 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 103) +* target, multiple in pattern rule: Pattern Intro. (line 44) +* target, multiple rules for one: Multiple Rules. (line 6) +* target, touching: Instead of Execution. + (line 24) +* target-specific variables: Target-specific. (line 6) +* targets: Rule Syntax. (line 18) +* targets without a file: Phony Targets. (line 6) +* targets, built-in special: Special Targets. (line 6) +* targets, empty: Empty Targets. (line 6) +* targets, force: Force Targets. (line 6) +* targets, grouped: Multiple Targets. (line 61) +* targets, independent: Multiple Targets. (line 14) +* 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 153) +* tex <1>: Implicit Variables. (line 87) +* 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 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) +* touching files: Instead of Execution. + (line 24) +* 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 354) +* undefining variable: Undefine Directive. (line 6) +* updating archive symbol directories: Archive Symbols. (line 6) +* updating loaded objects: Remaking Loaded Objects. + (line 6) +* updating makefiles: Remaking Makefiles. (line 6) +* user defined functions: Call Function. (line 6) +* value: Using Variables. (line 6) +* value, how a variable gets it: Values. (line 6) +* variable: Using Variables. (line 6) +* variable definition: Makefile Contents. (line 22) +* variable references in recipes: Variables in Recipes. + (line 6) +* variables: Variables Simplify. (line 6) +* variables, $ in name: Computed Names. (line 6) +* variables, and implicit rule: Automatic Variables. (line 6) +* 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 25) +* variables, computed names: Computed Names. (line 6) +* 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) +* variables, exporting: Variables/Recursion. (line 6) +* variables, flavor of: Flavor Function. (line 6) +* variables, flavors: Flavors. (line 6) +* variables, how they get their values: Values. (line 6) +* variables, how to reference: Reference. (line 6) +* 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) +* variables, origin of: Origin Function. (line 6) +* variables, overriding: Override Directive. (line 6) +* variables, overriding with arguments: Overriding. (line 6) +* variables, pattern-specific: Pattern-specific. (line 6) +* variables, recursively expanded: Flavors. (line 6) +* variables, setting: Setting. (line 6) +* 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 354) +* varying prerequisites: Static Pattern. (line 6) +* verbatim variable definition: Multi-Line. (line 6) +* vpath: Directory Search. (line 6) +* VPATH, and implicit rules: Implicit/Search. (line 6) +* VPATH, and link libraries: Libraries/Search. (line 6) +* warnings, printing: Make Control Functions. + (line 35) +* weave: Catalogue of Rules. (line 153) +* weave <1>: Implicit Variables. (line 94) +* 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: 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) +* wildcard, in archive member: Archive Members. (line 36) +* wildcard, in include: Include. (line 13) +* 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 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 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 121) +* yacc <1>: Implicit Variables. (line 77) +* yacc <2>: Canned Recipes. (line 18) +* Yacc, rule to run: Catalogue of Rules. (line 121) + diff --git a/local/recipes/dev/gnu-make/source/doc/make.info-3 b/local/recipes/dev/gnu-make/source/doc/make.info-3 new file mode 100644 index 0000000000000000000000000000000000000000..d10e16b5e4897e128581c8295f4013be3eac55eb GIT binary patch literal 19645 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 literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/doc/make.texi b/local/recipes/dev/gnu-make/source/doc/make.texi new file mode 100644 index 0000000000..e3a3ade460 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/make.texi @@ -0,0 +1,13722 @@ +\input texinfo @c -*- Texinfo -*- +@c %**start of header +@setfilename make.info + +@include version.texi +@set EDITION 0.76 + +@settitle GNU @code{make} +@setchapternewpage odd +@c Combine the variable and function indices: +@syncodeindex vr fn +@c Combine the program and concept indices: +@syncodeindex pg cp +@c FSF publishers: format makebook.texi instead of using this file directly. +@c ISBN confirmed by Jasimin Huang on 25 Mar 2009 +@set ISBN 1-882114-83-3 +@c %**end of header + +@copying +This file documents the GNU @code{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 @value{EDITION}, last updated @value{UPDATED}, +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, 2021, 2022 Free Software Foundation, Inc. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,'' +and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License.'' + +(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and +modify this GNU manual. Buying copies from the FSF supports it in +developing GNU and promoting software freedom.'' +@end quotation +@end copying + +@c finalout + +@c ISPELL CHECK: done, 10 June 1993 --roland +@c ISPELL CHECK: done, 2000-06-25 --Martin Buchholz + + +@dircategory Software development +@direntry +* Make: (make). Remake files automatically. +@end direntry + +@iftex +@shorttitlepage GNU Make +@end iftex +@titlepage +@title GNU Make +@subtitle A Program for Directing Recompilation +@subtitle GNU @code{make} Version @value{VERSION} +@subtitle @value{UPDATED-MONTH} +@author Richard M. Stallman, Roland McGrath, Paul D. Smith +@page +@vskip 0pt plus 1filll +@insertcopying +@sp 2 +Published by the Free Software Foundation @* +51 Franklin St. -- Fifth Floor @* +Boston, MA 02110-1301 USA @* +ISBN @value{ISBN} @* +@sp 2 +Cover art by Etienne Suvasa. +@end titlepage + +@summarycontents +@contents + +@ifnottex +@node Top, Overview, (dir), (dir) +@top GNU @code{make} + +@insertcopying +@end ifnottex + +@menu +* Overview:: Overview of @code{make}. +* Introduction:: An introduction to @code{make}. +* Makefiles:: Makefiles tell @code{make} what to do. +* Rules:: Rules describe when a file must be remade. +* Recipes:: Recipes say how to remake a file. +* Using Variables:: You can use variables to avoid repetition. +* Conditionals:: Use or ignore parts of the makefile based + on the values of variables. +* Functions:: Many powerful ways to manipulate text. +* Invoking make: Running. How to invoke @code{make} on the command line. +* Implicit Rules:: Use implicit rules to treat many files alike, + based on their file names. +* Archives:: How @code{make} can update library archives. +* Extending make:: Using extensions to @code{make}. +* Integrating make:: Integrating @code{make} with other tools. +* Features:: Features GNU @code{make} has over other @code{make}s. +* Missing:: What GNU @code{make} lacks from other @code{make}s. +* Makefile Conventions:: Conventions for writing makefiles for + GNU programs. +* Quick Reference:: A quick reference for experienced users. +* Error Messages:: A list of common errors generated by @code{make}. +* Complex Makefile:: A real example of a straightforward, + but nontrivial, makefile. + +* GNU Free Documentation License:: License for copying this manual. +* Concept Index:: Index of Concepts. +* Name Index:: Index of Functions, Variables, & Directives. + +@detailmenu + --- The Detailed Node Listing --- + +Overview of @code{make} + +* Preparing:: Preparing and running @code{make}. +* Reading:: On reading this text. +* Bugs:: Problems and bugs. + +An Introduction to Makefiles + +* Rule Introduction:: What a rule looks like. +* Simple Makefile:: A simple makefile. +* How Make Works:: How @code{make} processes this makefile. +* Variables Simplify:: Variables make makefiles simpler. +* make Deduces:: Letting @code{make} deduce the recipes. +* Combine By Prerequisite:: Another style of makefile. +* Cleanup:: Rules for cleaning the directory. + +Writing Makefiles + +* Makefile Contents:: What makefiles contain. +* Makefile Names:: How to name your makefile. +* Include:: How one makefile can use another makefile. +* MAKEFILES Variable:: The environment can specify extra makefiles. +* Remaking Makefiles:: How makefiles get remade. +* Overriding Makefiles:: How to override part of one makefile + with another makefile. +* Reading Makefiles:: How makefiles are read in. +* Parsing Makefiles:: How makefiles are parsed. +* Secondary Expansion:: How and when secondary expansion is performed. + +What Makefiles Contain + +* Splitting Lines:: Splitting long lines in makefiles + +Writing Rules + +* Rule Example:: An example explained. +* Rule Syntax:: General syntax explained. +* Prerequisite Types:: There are two types of prerequisites. +* Wildcards:: Using wildcard characters such as `*'. +* Directory Search:: Searching other directories for source files. +* Phony Targets:: Using a target that is not a real file's name. +* Force Targets:: You can use a target without a recipe + or prerequisites to mark other targets + as phony. +* Empty Targets:: When only the date matters and the + files are empty. +* Special Targets:: Targets with special built-in meanings. +* Multiple Targets:: When to make use of several targets in a rule. +* Multiple Rules:: How to use several rules with the same target. +* Static Pattern:: Static pattern rules apply to multiple targets + and can vary the prerequisites according to + the target name. +* Double-Colon:: How to use a special kind of rule to allow + several independent rules for one target. +* Automatic Prerequisites:: How to automatically generate rules giving + prerequisites from source files themselves. + +Using Wildcard Characters in File Names + +* Wildcard Examples:: Several examples. +* Wildcard Pitfall:: Problems to avoid. +* Wildcard Function:: How to cause wildcard expansion where + it does not normally take place. + +Searching Directories for Prerequisites + +* General Search:: Specifying a search path that applies + to every prerequisite. +* Selective Search:: Specifying a search path + for a specified class of names. +* Search Algorithm:: When and how search paths are applied. +* Recipes/Search:: How to write recipes that work together + with search paths. +* Implicit/Search:: How search paths affect implicit rules. +* Libraries/Search:: Directory search for link libraries. + +Static Pattern Rules + +* Static Usage:: The syntax of static pattern rules. +* Static versus Implicit:: When are they better than implicit rules? + +Writing Recipes in Rules + +* Recipe Syntax:: Recipe syntax features and pitfalls. +* Echoing:: How to control when recipes are echoed. +* Execution:: How recipes are executed. +* Parallel:: How recipes can be executed in parallel. +* Errors:: What happens after a recipe execution error. +* Interrupts:: What happens when a recipe is interrupted. +* Recursion:: Invoking @code{make} from makefiles. +* Canned Recipes:: Defining canned recipes. +* Empty Recipes:: Defining useful, do-nothing recipes. + +Recipe Syntax + +* Splitting Recipe Lines:: Breaking long recipe lines for readability. +* Variables in Recipes:: Using @code{make} variables in recipes. + +Recipe Execution + +* One Shell:: One shell for all lines in a recipe. +* Choosing the Shell:: How @code{make} chooses the shell used + to run recipes. + +Parallel Execution + +* Parallel Disable:: Disabling parallel execution +* Parallel Output:: Handling output during parallel execution +* Parallel Input:: Handling input during parallel execution + +Recursive Use of @code{make} + +* MAKE Variable:: The special effects of using @samp{$(MAKE)}. +* Variables/Recursion:: How to communicate variables to a sub-@code{make}. +* Options/Recursion:: How to communicate options to a sub-@code{make}. +* -w Option:: How the @samp{-w} or @samp{--print-directory} option + helps debug use of recursive @code{make} commands. + +How to Use Variables + +* Reference:: How to use the value of a variable. +* Flavors:: Variables come in two flavors. +* Advanced:: Advanced features for referencing a variable. +* Values:: All the ways variables get their values. +* Setting:: How to set a variable in the makefile. +* Appending:: How to append more text to the old value + of a variable. +* Override Directive:: How to set a variable in the makefile even if + the user has set it with a command argument. +* Multi-Line:: An alternate way to set a variable + to a multi-line string. +* Undefine Directive:: How to undefine a variable so that it appears + as if it was never set. +* Environment:: Variable values can come from the environment. +* Target-specific:: Variable values can be defined on a per-target + basis. +* Pattern-specific:: Target-specific variable values can be applied + to a group of targets that match a pattern. +* 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 + substitutions on the value. +* Computed Names:: Computing the name of the variable to refer to. + +Conditional Parts of Makefiles + +* Conditional Example:: Example of a conditional +* Conditional Syntax:: The syntax of conditionals. +* Testing Flags:: Conditionals that test flags. + +Functions for Transforming Text + +* Syntax of Functions:: How to write a function call. +* 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. +* Value Function:: Return the un-expanded value of a variable. +* Eval Function:: Evaluate the arguments as makefile syntax. +* Origin Function:: Find where a variable got its value. +* Flavor Function:: Find out the flavor of a variable. +* Make Control Functions:: Functions that control how make runs. +* Shell Function:: Substitute the output of a shell command. +* Guile Function:: Use GNU Guile embedded scripting language. + +How to Run @code{make} + +* 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 @code{make} keeps its temporary files. +* Options Summary:: Summary of Options + +Using Implicit Rules + +* Using Implicit:: How to use an existing implicit rule + to get the recipes for updating a file. +* Catalogue of Rules:: A list of built-in rules. +* Implicit Variables:: How to change what predefined rules do. +* Chained Rules:: How to use a chain of implicit rules. +* Pattern Rules:: How to define new implicit rules. +* Last Resort:: How to define a recipe for rules which + cannot find any. +* Suffix Rules:: The old-fashioned style of implicit rule. +* Implicit Rule Search:: The precise algorithm for applying + implicit rules. + +Defining and Redefining Pattern Rules + +* Pattern Intro:: An introduction to pattern rules. +* Pattern Examples:: Examples of pattern rules. +* Automatic Variables:: How to use automatic variables in the + recipe of implicit rules. +* Pattern Match:: How patterns match. +* Match-Anything Rules:: Precautions you should take prior to + defining rules that can match any + target file whatever. +* Canceling Rules:: How to override or cancel built-in rules. + +Using @code{make} to Update Archive Files + +* Archive Members:: Archive members as targets. +* Archive Update:: The implicit rule for archive member targets. +* Archive Pitfalls:: Dangers to watch out for when using archives. +* Archive Suffix Rules:: You can write a special kind of suffix rule + for updating archives. + +Implicit Rule for Archive Member Targets + +* Archive Symbols:: How to update archive symbol directories. + +Extending GNU @code{make} + +* Guile Integration:: Using Guile as an embedded scripting language. +* Loading Objects:: Loading dynamic objects as extensions. + +GNU Guile Integration + +* Guile Types:: Converting Guile types to @code{make} strings. +* Guile Interface:: Invoking @code{make} functions from Guile. +* Guile Example:: Example using Guile in @code{make}. + +Loading Dynamic Objects + +* load Directive:: Loading dynamic objects as extensions. +* Remaking Loaded Objects:: How loaded objects get remade. +* Loaded Object API:: Programmatic interface for loaded objects. +* Loaded Object Example:: Example of a loaded object + +Integrating GNU @code{make} + +* Job Slots:: Share job slots with GNU @code{make}. +* Terminal Output:: Control output to terminals. + +Sharing Job Slots with GNU @code{make} + +* POSIX Jobserver:: Using the jobserver on POSIX systems. +* Windows Jobserver:: Using the jobserver on Windows systems. + +@end detailmenu +@end menu + +@node Overview, Introduction, Top, Top +@comment node-name, next, previous, up +@chapter Overview of @code{make} + +The @code{make} utility automatically determines which pieces of a large +program need to be recompiled, and issues commands to recompile them. +This manual describes GNU @code{make}, which was implemented by Richard +Stallman and Roland McGrath. Development since Version 3.76 has been +handled by Paul D. Smith. + +GNU @code{make} conforms to section 6.2 of @cite{IEEE Standard +1003.2-1992} (POSIX.2). +@cindex POSIX +@cindex IEEE Standard 1003.2 +@cindex standards conformance + +Our examples show C programs, since they are most common, but you can use +@code{make} with any programming language whose compiler can be run with a +shell command. Indeed, @code{make} is not limited to programs. You can +use it to describe any task where some files must be updated automatically +from others whenever the others change. + +@menu +* Preparing:: Preparing and running @code{make}. +* Reading:: On reading this text. +* Bugs:: Problems and bugs. +@end menu + +@node Preparing, Reading, Overview, Overview +@ifnottex +@heading Preparing and Running Make +@end ifnottex + +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. + +Once a suitable makefile exists, each time you change some source files, +this simple shell command: + +@example +make +@end example + +@noindent +suffices to perform all necessary recompilations. The @code{make} program +uses the makefile data base and the last-modification times of the files to +decide which of the files need to be updated. For each of those files, it +issues the recipes recorded in the data base. + +You can provide command line arguments to @code{make} to control which +files should be recompiled, or how. @xref{Running, ,How to Run +@code{make}}. + +@node Reading, Bugs, Preparing, Overview +@section How to Read This Manual + +If you are new to @code{make}, or are looking for a general +introduction, read the first few sections of each chapter, skipping the +later sections. In each chapter, the first few sections contain +introductory or general information and the later sections contain +specialized or technical information. +@ifnottex +The exception is the second chapter, @ref{Introduction, ,An +Introduction to Makefiles}, all of which is introductory. +@end ifnottex +@iftex +The exception is @ref{Introduction, ,An Introduction to Makefiles}, +all of which is introductory. +@end iftex + +If you are familiar with other @code{make} programs, see @ref{Features, +,Features of GNU @code{make}}, which lists the enhancements GNU +@code{make} has, and @ref{Missing, ,Incompatibilities and Missing +Features}, which explains the few things GNU @code{make} lacks that +others have. + +For a quick summary, see @ref{Options Summary}, @ref{Quick Reference}, +and @ref{Special Targets}. + +@node Bugs, , Reading, Overview +@section Problems and Bugs +@cindex reporting bugs +@cindex bugs, reporting +@cindex problems and bugs, reporting + +If you have problems with GNU @code{make} or think you've found a bug, +please report it to the developers; we cannot promise to do anything but +we might well want to fix it. + +Before reporting a bug, make sure you've actually found a real bug. +Carefully reread the documentation and see if it really says you can do +what you're trying to do. If it's not clear whether you should be able +to do something or not, report that too; it's a bug in the +documentation! + +Before reporting a bug or trying to fix it yourself, try to isolate it +to the smallest possible makefile that reproduces the problem. Then +send us the makefile and the exact results @code{make} gave you, +including any error or warning messages. Please don't paraphrase +these messages: it's best to cut and paste them into your report. +When generating this small makefile, be sure to not use any non-free +or unusual tools in your recipes: you can almost always emulate what +such a tool would do with simple shell commands. Finally, be sure to +explain what you expected to occur; this will help us decide whether +the problem was really in the documentation. + +Once you have a precise problem you can report it in one of two ways. +Either send electronic mail to: + +@example + bug-make@@gnu.org +@end example + +@noindent +or use our Web-based project management tool, at: + +@example + https://savannah.gnu.org/projects/make/ +@end example + +@noindent +In addition to the information above, please be careful to include the +version number of @code{make} you are using. You can get this +information with the command @samp{make --version}. Be sure also to +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 + +You need a file called a @dfn{makefile} to tell @code{make} what to do. +Most often, the makefile tells @code{make} how to compile and link a +program. +@cindex makefile + +In this chapter, we will discuss a simple makefile that describes how to +compile and link a text editor which consists of eight C source files +and three header files. The makefile can also tell @code{make} how to +run miscellaneous commands when explicitly asked (for example, to remove +certain files as a clean-up operation). To see a more complex example +of a makefile, see @ref{Complex Makefile}. + +When @code{make} recompiles the editor, each changed C source file +must be recompiled. If a header file has changed, each C source file +that includes the header file must be recompiled to be safe. Each +compilation produces an object file corresponding to the source file. +Finally, if any source file has been recompiled, all the object files, +whether newly made or saved from previous compilations, must be linked +together to produce the new executable editor. +@cindex recompilation +@cindex editor + +@menu +* Rule Introduction:: What a rule looks like. +* Simple Makefile:: A simple makefile. +* How Make Works:: How @code{make} processes this makefile. +* Variables Simplify:: Variables make makefiles simpler. +* make Deduces:: Letting @code{make} deduce the recipes. +* Combine By Prerequisite:: Another style of makefile. +* Cleanup:: Rules for cleaning the directory. +@end menu + +@node Rule Introduction, Simple Makefile, Introduction, Introduction +@comment node-name, next, previous, up +@section What a Rule Looks Like +@cindex rule, introduction to +@cindex makefile rule parts +@cindex parts of makefile rule + +A simple makefile consists of ``rules'' with the following shape: + +@cindex targets, introduction to +@cindex prerequisites, introduction to +@cindex recipes, introduction to +@example +@group +@var{target} @dots{} : @var{prerequisites} @dots{} + @var{recipe} + @dots{} + @dots{} +@end group +@end example + +A @dfn{target} is usually the name of a file that is generated by a +program; examples of targets are executable or object files. A target +can also be the name of an action to carry out, such as @samp{clean} +(@pxref{Phony Targets}). + +A @dfn{prerequisite} is a file that is used as input to create the +target. A target often depends on several files. + +@cindex tabs in rules +A @dfn{recipe} is an action that @code{make} carries out. A recipe +may have more than one command, either on the same line or each on its +own line. @strong{Please note:} you need to put a tab character at +the beginning of every recipe line! This is an obscurity that catches +the unwary. If you prefer to prefix your recipes with a character +other than tab, you can set the @code{.RECIPEPREFIX} variable to an +alternate character (@pxref{Special Variables}). + +Usually a recipe is in a rule with prerequisites and serves to create a +target file if any of the prerequisites change. However, the rule that +specifies a recipe for the target need not have prerequisites. For +example, the rule containing the delete command associated with the +target @samp{clean} does not have prerequisites. + +A @dfn{rule}, then, explains how and when to remake certain files +which are the targets of the particular rule. @code{make} carries out +the recipe on the prerequisites to create or update the target. A +rule can also explain how and when to carry out an action. +@xref{Rules, , Writing Rules}. + +A makefile may contain other text besides rules, but a simple makefile +need only contain rules. Rules may look somewhat more complicated +than shown in this template, but all fit the pattern more or less. + +@node Simple Makefile, How Make Works, Rule Introduction, Introduction +@section A Simple Makefile +@cindex simple makefile +@cindex makefile, simple + +Here is a straightforward makefile that describes the way an +executable file called @code{edit} depends on eight object files +which, in turn, depend on eight C source and three header files. + +In this example, all the C files include @file{defs.h}, but only those +defining editing commands include @file{command.h}, and only low +level files that change the editor buffer include @file{buffer.h}. + +@example +@group +edit : main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + cc -o edit main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + +main.o : main.c defs.h + cc -c main.c +kbd.o : kbd.c defs.h command.h + cc -c kbd.c +command.o : command.c defs.h command.h + cc -c command.c +display.o : display.c defs.h buffer.h + cc -c display.c +insert.o : insert.c defs.h buffer.h + cc -c insert.c +search.o : search.c defs.h buffer.h + cc -c search.c +files.o : files.c defs.h buffer.h command.h + cc -c files.c +utils.o : utils.c defs.h + cc -c utils.c +clean : + rm edit main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o +@end group +@end example + +@noindent +We split each long line into two lines using backslash/newline; this is +like using one long line, but is easier to read. @xref{Splitting Lines, +, Splitting Long Lines}. +@cindex continuation lines +@cindex @code{\} (backslash), for continuation lines +@cindex backslash (@code{\}), for continuation lines +@cindex quoting newline, in makefile +@cindex newline, quoting, in makefile + +To use this makefile to create the executable file called @file{edit}, +type: + +@example +make +@end example + +To use this makefile to delete the executable file and all the object +files from the directory, type: + +@example +make clean +@end example + +In the example makefile, the targets include the executable file +@samp{edit}, and the object files @samp{main.o} and @samp{kbd.o}. The +prerequisites are files such as @samp{main.c} and @samp{defs.h}. +In fact, each @samp{.o} file is both a target and a prerequisite. +Recipes include @w{@samp{cc -c main.c}} and @w{@samp{cc -c kbd.c}}. + +When a target is a file, it needs to be recompiled or relinked if any +of its prerequisites change. In addition, any prerequisites that are +themselves automatically generated should be updated first. In this +example, @file{edit} depends on each of the eight object files; the +object file @file{main.o} depends on the source file @file{main.c} and +on the header file @file{defs.h}. + +A recipe may follow each line that contains a target and +prerequisites. These recipes say how to update the target file. A +tab character (or whatever character is specified by the +@code{.RECIPEPREFIX} variable; @pxref{Special Variables}) must come at +the beginning of every line in the recipe to distinguish recipes from +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.) +@cindex recipe + +The target @samp{clean} is not a file, but merely the name of an +action. Since you normally do not want to carry out the actions in +this rule, @samp{clean} is not a prerequisite of any other rule. +Consequently, @code{make} never does anything with it unless you tell +it specifically. Note that this rule not only is not a prerequisite, +it also does not have any prerequisites, so the only purpose of the +rule is to run the specified recipe. Targets that do not refer to +files but are just actions are called @dfn{phony targets}. +@xref{Phony Targets}, for information about this kind of target. +@xref{Errors, , Errors in Recipes}, to see how to cause @code{make} +to ignore errors from @code{rm} or any other command. +@cindex @code{clean} target +@cindex @code{rm} (shell command) + +@node How Make Works, Variables Simplify, Simple Makefile, Introduction +@comment node-name, next, previous, up +@section How @code{make} Processes a Makefile +@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{.} 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 + +In the simple example of the previous section, the default goal is to +update the executable program @file{edit}; therefore, we put that rule +first. + +Thus, when you give the command: + +@example +make +@end example + +@noindent +@code{make} reads the makefile in the current directory and begins by +processing the first rule. In the example, this rule is for relinking +@file{edit}; but before @code{make} can fully process this rule, it +must process the rules for the files that @file{edit} depends on, +which in this case are the object files. Each of these files is +processed according to its own rule. These rules say to update each +@samp{.o} file by compiling its source file. The recompilation must +be done if the source file, or any of the header files named as +prerequisites, is more recent than the object file, or if the object +file does not exist. + +The other rules are processed because their targets appear as +prerequisites of the goal. If some other rule is not depended on by the +goal (or anything it depends on, etc.), that rule is not processed, +unless you tell @code{make} to do so (with a command such as +@w{@code{make clean}}). + +Before recompiling an object file, @code{make} considers updating its +prerequisites, the source file and header files. This makefile does not +specify anything to be done for them---the @samp{.c} and @samp{.h} files +are not the targets of any rules---so @code{make} does nothing for these +files. But @code{make} would update automatically generated C programs, +such as those made by Bison or Yacc, by their own rules at this time. + +After recompiling whichever object files need it, @code{make} decides +whether to relink @file{edit}. This must be done if the file +@file{edit} does not exist, or if any of the object files are newer than +it. If an object file was just recompiled, it is now newer than +@file{edit}, so @file{edit} is relinked. +@cindex relinking + +Thus, if we change the file @file{insert.c} and run @code{make}, +@code{make} will compile that file to update @file{insert.o}, and then +link @file{edit}. If we change the file @file{command.h} and run +@code{make}, @code{make} will recompile the object files @file{kbd.o}, +@file{command.o} and @file{files.o} and then link the file @file{edit}. + +@node Variables Simplify, make Deduces, How Make Works, Introduction +@section Variables Make Makefiles Simpler +@cindex variables +@cindex simplifying with variables + +In our example, we had to list all the object files twice in the rule for +@file{edit} (repeated here): + +@example +@group +edit : main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + cc -o edit main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o +@end group +@end example + +@cindex @code{objects} +Such duplication is error-prone; if a new object file is added to the +system, we might add it to one list and forget the other. We can eliminate +the risk and simplify the makefile by using a variable. @dfn{Variables} +allow a text string to be defined once and substituted in multiple places +later (@pxref{Using Variables, ,How to Use Variables}). + +@cindex @code{OBJECTS} +@cindex @code{objs} +@cindex @code{OBJS} +@cindex @code{obj} +@cindex @code{OBJ} +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: + +@example +@group +objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o +@end group +@end example + +@noindent +Then, each place we want to put a list of the object file names, we can +substitute the variable's value by writing @samp{$(objects)} +(@pxref{Using Variables, ,How to Use Variables}). + +Here is how the complete simple makefile looks when you use a variable +for the object files: + +@example +@group +objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + +edit : $(objects) + cc -o edit $(objects) +main.o : main.c defs.h + cc -c main.c +kbd.o : kbd.c defs.h command.h + cc -c kbd.c +command.o : command.c defs.h command.h + cc -c command.c +display.o : display.c defs.h buffer.h + cc -c display.c +insert.o : insert.c defs.h buffer.h + cc -c insert.c +search.o : search.c defs.h buffer.h + cc -c search.c +files.o : files.c defs.h buffer.h command.h + cc -c files.c +utils.o : utils.c defs.h + cc -c utils.c +clean : + rm edit $(objects) +@end group +@end example + +@node make Deduces, Combine By Prerequisite, Variables Simplify, Introduction +@section Letting @code{make} Deduce the Recipes +@cindex deducing recipes (implicit rules) +@cindex implicit rule, introduction to +@cindex rule, implicit, introduction to + +It is not necessary to spell out the recipes for compiling the individual +C source files, because @code{make} can figure them out: it has an +@dfn{implicit rule} for updating a @samp{.o} file from a correspondingly +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}. + +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 +the @samp{.c} files from the prerequisites, provided we omit the recipe. + +Here is the entire example, with both of these changes, and a variable +@code{objects} as suggested above: + +@example +@group +objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + +edit : $(objects) + cc -o edit $(objects) + +main.o : defs.h +kbd.o : defs.h command.h +command.o : defs.h command.h +display.o : defs.h buffer.h +insert.o : defs.h buffer.h +search.o : defs.h buffer.h +files.o : defs.h buffer.h command.h +utils.o : defs.h + +.PHONY : clean +clean : + rm edit $(objects) +@end group +@end example + +@noindent +This is how we would write the makefile in actual practice. (The +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. + +@node Combine By Prerequisite, Cleanup, make Deduces, Introduction +@section Another Style of Makefile +@cindex combining rules by prerequisite + +When the objects of a makefile are created only by implicit rules, an +alternative style of makefile is possible. In this style of makefile, +you group entries by their prerequisites instead of by their targets. +Here is what one looks like: + +@example +@group +objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + +edit : $(objects) + cc -o edit $(objects) + +$(objects) : defs.h +kbd.o command.o files.o : command.h +display.o insert.o search.o files.o : buffer.h +@end group +@end example + +@noindent +Here @file{defs.h} is given as a prerequisite of all the object files; +@file{command.h} and @file{buffer.h} are prerequisites of the specific +object files listed for them. + +Whether this is better is a matter of taste: it is more compact, but some +people dislike it because they find it clearer to put all the information +about each target in one place. + +@node Cleanup, , Combine By Prerequisite, Introduction +@section Rules for Cleaning the Directory +@cindex cleaning up +@cindex removing, to clean up + +Compiling a program is not the only thing you might want to write rules +for. Makefiles commonly tell how to do a few other things besides +compiling a program: for example, how to delete all the object files +and executables so that the directory is @samp{clean}. + +@cindex @code{clean} target +Here is how we +could write a @code{make} rule for cleaning our example editor: + +@example +@group +clean: + rm edit $(objects) +@end group +@end example + +In practice, we might want to write the rule in a somewhat more +complicated manner to handle unanticipated situations. We would do this: + +@example +@group +.PHONY : clean +clean : + -rm edit $(objects) +@end group +@end example + +@noindent +This prevents @code{make} from getting confused by an actual file +called @file{clean} and causes it to continue in spite of errors from +@code{rm}. (See @ref{Phony Targets}, and @ref{Errors, ,Errors in +Recipes}.) + +@noindent +A rule such as this should not be placed at the beginning of the +makefile, because we do not want it to run by default! Thus, in the +example makefile, we want the rule for @code{edit}, which recompiles +the editor, to remain the default goal. + +Since @code{clean} is not a prerequisite of @code{edit}, this rule will not +run at all if we give the command @samp{make} with no arguments. In +order to make the rule run, we have to type @samp{make clean}. +@xref{Running, ,How to Run @code{make}}. + +@node Makefiles, Rules, Introduction, Top +@chapter Writing Makefiles + +@cindex makefile, how to write +The information that tells @code{make} how to recompile a system comes from +reading a data base called the @dfn{makefile}. + +@menu +* Makefile Contents:: What makefiles contain. +* Makefile Names:: How to name your makefile. +* Include:: How one makefile can use another makefile. +* MAKEFILES Variable:: The environment can specify extra makefiles. +* Remaking Makefiles:: How makefiles get remade. +* Overriding Makefiles:: How to override part of one makefile + with another makefile. +* Reading Makefiles:: How makefiles are read in. +* Parsing Makefiles:: How makefiles are parsed. +* Secondary Expansion:: How and when secondary expansion is performed. +@end menu + +@node Makefile Contents, Makefile Names, Makefiles, Makefiles +@section What Makefiles Contain + +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. + +@itemize @bullet +@cindex rule, explicit, definition of +@cindex explicit rule, definition of +@item +An @dfn{explicit rule} says when and how to remake one or more files, +called the rule's @dfn{targets}. It lists the other files that the +targets depend on, called the @dfn{prerequisites} of the target, and +may also give a recipe to use to create or update the targets. +@xref{Rules, ,Writing Rules}. + +@cindex rule, implicit, definition of +@cindex implicit rule, definition of +@item +An @dfn{implicit rule} says when and how to remake a class of files +based on their names. It describes how a target may depend on a file +with a name similar to the target and gives a recipe to create or +update such a target. @xref{Implicit Rules, ,Using Implicit Rules}. + +@cindex variable definition +@item +A @dfn{variable definition} is a line that specifies a text string +value for a variable that can be substituted into the text later. The +simple makefile example shows a variable definition for @code{objects} +as a list of all object files (@pxref{Variables Simplify, , Variables +Make Makefiles Simpler}). + +@cindex directive +@item +A @dfn{directive} is an instruction for @code{make} to do something +special while reading the makefile. These include: + +@itemize @bullet +@item +Reading another makefile (@pxref{Include, ,Including Other Makefiles}). + +@item +Deciding (based on the values of variables) whether to use or +ignore a part of the makefile (@pxref{Conditionals, ,Conditional Parts of Makefiles}). + +@item +Defining a variable from a verbatim string containing multiple lines +(@pxref{Multi-Line, ,Defining Multi-Line Variables}). +@end itemize + +@cindex comments, in makefile +@cindex @code{#} (comments), in makefile +@item +@samp{#} in a line of a makefile starts a @dfn{comment}. It and the +rest of the line are ignored, except that a trailing backslash not +escaped by another backslash will continue the comment across multiple +lines. A line containing just a comment (with perhaps spaces before +it) is effectively blank, and is ignored. If you want a literal +@code{#}, escape it with a backslash (e.g., @code{\#}). Comments may +appear on any line in the makefile, although they are treated +specially in certain situations. + +You cannot use comments within variable references or function calls: +any instance of @code{#} will be treated literally (rather than as the +start of a comment) inside a variable reference or function call. + +Comments within a recipe are passed to the shell, just as with any +other recipe text. The shell decides how to interpret it: whether or +not this is a comment is up to the shell. + +Within a @code{define} directive, comments are not ignored during the +definition of the variable, but rather kept intact in the value of the +variable. When the variable is expanded they will either be treated +as @code{make} comments or as recipe text, depending on the context in +which the variable is evaluated. +@end itemize + +@menu +* Splitting Lines:: Splitting long lines in makefiles +@end menu + +@node Splitting Lines, , Makefile Contents, Makefile Contents +@subsection Splitting Long Lines +@cindex splitting long lines +@cindex long lines, splitting +@cindex backslash (@code{\}), to quote newlines + +Makefiles use a ``line-based'' syntax in which the newline character +is special and marks the end of a statement. GNU @code{make} has no +limit on the length of a statement line, up to the amount of memory in +your computer. + +However, it is difficult to read lines which are too long to display +without wrapping or scrolling. So, you can format your makefiles for +readability by adding newlines into the middle of a statement: you do +this by escaping the internal newlines with a backslash (@code{\}) +character. Where we need to make a distinction we will refer to +``physical lines'' as a single line ending with a newline (regardless +of whether it is escaped) and a ``logical line'' being a complete +statement including all escaped newlines up to the first non-escaped +newline. + +The way in which backslash/newline combinations are handled depends on +whether the statement is a recipe line or a non-recipe line. Handling +of backslash/newline in a recipe line is discussed later +(@pxref{Splitting Recipe Lines}). + +Outside of recipe lines, backslash/newlines are converted into a +single space character. Once that is done, all whitespace around the +backslash/newline is condensed into a single space: this includes all +whitespace preceding the backslash, all whitespace at the beginning of +the line after the backslash/newline, and any consecutive +backslash/newline combinations. + +If the @code{.POSIX} special target is defined then backslash/newline +handling is modified slightly to conform to POSIX.2: first, whitespace +preceding a backslash is not removed and second, consecutive +backslash/newlines are not condensed. + +@subsubheading Splitting Without Adding Whitespace +@cindex whitespace, avoiding on line split +@cindex removing whitespace from split lines + +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, and newline: + +@example +var := one$\ + word +@end example + +After @code{make} removes the backslash/newline and condenses the +following line into a single space, this is equivalent to: + +@example +var := one$ word +@end example + +Then @code{make} will perform variable expansion. The variable +reference @samp{$ } refers to a variable with the one-character name +`` '' (space) which does not exist, and so expands to the empty +string, giving a final assignment which is the equivalent of: + +@example +var := oneword +@end example + + +@node Makefile Names, Include, Makefile Contents, Makefiles +@section What Name to Give Your Makefile +@cindex makefile name +@cindex name of makefile +@cindex default makefile name +@cindex file name of makefile + +@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}. +@findex Makefile +@findex GNUmakefile +@findex makefile + +@cindex @code{README} +Normally you should call your makefile either @file{makefile} or +@file{Makefile}. (We recommend @file{Makefile} because it appears +prominently near the beginning of a directory listing, right near other +important files such as @file{README}.) The first name checked, +@file{GNUmakefile}, is not recommended for most makefiles. You should +use this name if you have a makefile that is specific to GNU +@code{make}, and will not be understood by other versions of +@code{make}. Other @code{make} programs look for @file{makefile} and +@file{Makefile}, but not @file{GNUmakefile}. + +If @code{make} finds none of these names, it does not use any makefile. +Then you must specify a goal with a command argument, and @code{make} +will attempt to figure out how to remake it using only its built-in +implicit rules. @xref{Implicit Rules, ,Using Implicit Rules}. + +@cindex @code{-f} +@cindex @code{--file} +@cindex @code{--makefile} +If you want to use a nonstandard name for your makefile, you can specify +the makefile name with the @samp{-f} or @samp{--file} option. The +arguments @w{@samp{-f @var{name}}} or @w{@samp{--file=@var{name}}} tell +@code{make} to read the file @var{name} as the makefile. If you use +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}. +@cindex specifying makefile name +@cindex makefile name, how to specify +@cindex name of makefile, how to specify +@cindex file name of makefile, how to specify + +@node Include, MAKEFILES Variable, Makefile Names, Makefiles +@section Including Other Makefiles +@cindex including other makefiles +@cindex makefile, including + +@findex include +The @code{include} directive tells @code{make} to suspend reading the +current makefile and read one or more other makefiles before continuing. +The directive is a line in the makefile that looks like this: + +@example +include @var{filenames}@dots{} +@end example + +@noindent +@var{filenames} can contain shell file name patterns. If +@var{filenames} is empty, nothing is included and no error is printed. +@cindex shell file name pattern (in @code{include}) +@cindex shell wildcards (in @code{include}) +@cindex wildcard, in @code{include} + +Extra spaces are allowed and ignored at the beginning of the line, but +the first character must not be a tab (or the value of +@code{.RECIPEPREFIX})---if the line begins with a tab, it will be +considered a recipe line. Whitespace is required between +@code{include} and the file names, and between file names; extra +whitespace is ignored there and at the end of the directive. A +comment starting with @samp{#} is allowed at the end of the line. If +the file names contain any variable or function references, they are +expanded. @xref{Using Variables, ,How to Use Variables}. + +For example, if you have three @file{.mk} files, @file{a.mk}, +@file{b.mk}, and @file{c.mk}, and @code{$(bar)} expands to +@code{bish bash}, then the following expression + +@example +include foo *.mk $(bar) +@end example + +is equivalent to + +@example +include foo a.mk b.mk c.mk bish bash +@end example + +When @code{make} processes an @code{include} directive, it suspends +reading of the containing makefile and reads from each listed file in +turn. When that is finished, @code{make} resumes reading the +makefile in which the directive appears. + +One occasion for using @code{include} directives is when several programs, +handled by individual makefiles in various directories, need to use a +common set of variable definitions +(@pxref{Setting, ,Setting Variables}) or pattern rules +(@pxref{Pattern Rules, ,Defining and Redefining Pattern Rules}). + +Another such occasion is when you want to generate prerequisites from +source files automatically; the prerequisites can be put in a file that +is included by the main makefile. This practice is generally cleaner +than that of somehow appending the prerequisites to the end of the main +makefile as has been traditionally done with other versions of +@code{make}. @xref{Automatic Prerequisites}. +@cindex prerequisites, automatic generation +@cindex automatic generation of prerequisites +@cindex generating prerequisites automatically + +@cindex @code{-I} +@cindex @code{--include-dir} +@cindex included makefiles, default directories +@cindex default directories for included makefiles +@findex /usr/gnu/include +@findex /usr/local/include +@findex /usr/include +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} options are searched +(@pxref{Options Summary, ,Summary of Options}). +Then the following directories (if they exist) +are searched, in this order: +@file{@var{prefix}/include} (normally @file{/usr/local/include} +@footnote{GNU Make compiled for MS-DOS and MS-Windows behaves as if +@var{prefix} has been defined to be the root of the DJGPP tree +hierarchy.}) +@file{/usr/gnu/include}, +@file{/usr/local/include}, @file{/usr/include}. + +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}} +directive instead of @code{include}, like this: + +@example +-include @var{filenames}@dots{} +@end example + +This acts like @code{include} in every way except that there is no +error (not even a warning) if any of the @var{filenames} (or any +prerequisites of any of the @var{filenames}) do not exist or cannot be +remade. + +For compatibility with some other @code{make} implementations, +@code{sinclude} is another name for @w{@code{-include}}. + +@node MAKEFILES Variable, Remaking Makefiles, Include, Makefiles +@section The Variable @code{MAKEFILES} +@cindex makefile, and @code{MAKEFILES} variable +@cindex including (@code{MAKEFILES} variable) + +@vindex MAKEFILES +If the environment variable @code{MAKEFILES} is defined, @code{make} +considers its value as a list of names (separated by whitespace) of +additional makefiles to be read before the others. This works much +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. + +@cindex recursion, and @code{MAKEFILES} variable +The main use of @code{MAKEFILES} is in communication between recursive +invocations of @code{make} (@pxref{Recursion, ,Recursive Use of +@code{make}}). It usually is not desirable to set the environment +variable before a top-level invocation of @code{make}, because it is +usually better not to mess with a makefile from outside. However, if +you are running @code{make} without a specific makefile, a makefile in +@code{MAKEFILES} can do useful things to help the built-in implicit +rules work better, such as defining search paths (@pxref{Directory Search}). + +Some users are tempted to set @code{MAKEFILES} in the environment +automatically on login, and program makefiles to expect this to be done. +This is a very bad idea, because such makefiles will fail to work if run by +anyone else. It is much better to write explicit @code{include} directives +in the makefiles. @xref{Include, , Including Other Makefiles}. + +@node Remaking Makefiles, Overriding Makefiles, MAKEFILES Variable, Makefiles +@section How Makefiles Are Remade +@cindex updating makefiles +@cindex remaking makefiles +@cindex makefile, remaking of +Sometimes makefiles can be remade from other files, such as RCS or SCCS +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, 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 +on them, perhaps for efficiency reasons, you can use any normal method +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 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; +@pxref{Makefile Names, ,What Name to Give Your Makefile}. Unlike +makefiles explicitly requested with @samp{-f} or @samp{--file} options, +@code{make} is not certain that these makefiles should exist. However, +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 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}), +you would not want to use an out-of-date makefile to decide which +targets to touch. So the @samp{-t} option has no effect on updating +makefiles; they are really updated even if @samp{-t} is specified. +Likewise, @samp{-q} (or @samp{--question}) and @samp{-n} (or +@samp{--just-print}) do not prevent updating of makefiles, because an +out-of-date makefile would result in the wrong output for other targets. +Thus, @samp{make -f mfile -n foo} will update @file{mfile}, read it in, +and then print the recipe to update @file{foo} and its prerequisites +without running it. The recipe printed for @file{foo} will be the one +specified in the updated contents of @file{mfile}. + +However, on occasion you might actually wish to prevent updating of even +the makefiles. You can do this by specifying the makefiles as goals in +the command line as well as specifying them as makefiles. When the +makefile name is specified explicitly as a goal, the options @samp{-t} +and so on do apply to them. + +Thus, @samp{make -f mfile -n mfile foo} would read the makefile +@file{mfile}, print the recipe needed to update it without actually +running it, and then print the recipe needed to update @file{foo} +without running that. The recipe for @file{foo} will be the one +specified by the existing contents of @file{mfile}. + +@node Overriding Makefiles, Reading Makefiles, Remaking Makefiles, Makefiles +@section Overriding Part of Another Makefile + +@cindex overriding makefiles +@cindex makefile, overriding +Sometimes it is useful to have a makefile that is mostly just like +another makefile. You can often use the @samp{include} directive to +include one in the other, and add more targets or variable definitions. +However, it is invalid for two makefiles to give different recipes for +the same target. But there is another way. + +@cindex match-anything rule, used to override +In the containing makefile (the one that wants to include the other), +you can use a match-anything pattern rule to say that to remake any +target that cannot be made from the information in the containing +makefile, @code{make} should look in another makefile. +@xref{Pattern Rules}, for more information on pattern rules. + +For example, if you have a makefile called @file{Makefile} that says how +to make the target @samp{foo} (and other targets), you can write a +makefile called @file{GNUmakefile} that contains: + +@example +foo: + frobnicate > foo + +%: force + @@$(MAKE) -f Makefile $@@ +force: ; +@end example + +If you say @samp{make foo}, @code{make} will find @file{GNUmakefile}, +read it, and see that to make @file{foo}, it needs to run the recipe +@samp{frobnicate > foo}. If you say @samp{make bar}, @code{make} will +find no way to make @file{bar} in @file{GNUmakefile}, so it will use the +recipe from the pattern rule: @samp{make -f Makefile bar}. If +@file{Makefile} provides a rule for updating @file{bar}, @code{make} +will apply the rule. And likewise for any other target that +@file{GNUmakefile} does not say how to make. + +The way this works is that the pattern rule has a pattern of just +@samp{%}, so it matches any target whatever. The rule specifies a +prerequisite @file{force}, to guarantee that the recipe will be run even +if the target file already exists. We give the @file{force} target an +empty recipe to prevent @code{make} from searching for an implicit rule to +build it---otherwise it would apply the same match-anything rule to +@file{force} itself and create a prerequisite loop! + +@node Reading Makefiles, Parsing Makefiles, Overriding Makefiles, Makefiles +@section How @code{make} Reads a Makefile +@cindex reading makefiles +@cindex makefile, reading + +GNU @code{make} does its work in two distinct phases. During the +first phase it reads all the makefiles, included makefiles, etc. and +internalizes all the variables and their values and implicit and +explicit rules, and builds a dependency graph of all the targets and +their prerequisites. During the second phase, @code{make} uses this +internalized data to determine which targets need to be updated and +run the recipes necessary to update them. + +It's important to understand this two-phase approach because it has a +direct impact on how variable and function expansion happens; this is +often a source of some confusion when writing makefiles. Below is a +summary of the different constructs that can be found in a makefile, +and the phase in which expansion happens for each part of the +construct. + +We say that expansion is @dfn{immediate} if it happens during the +first phase: @code{make} will expand that part of the construct as the +makefile is parsed. We say that expansion is @dfn{deferred} if it is +not immediate. Expansion of a deferred construct part is delayed +until the expansion is used: either when it is referenced in an +immediate context, or when it is needed during the second phase. + +You may not be familiar with some of these constructs yet. You can +reference this section as you become familiar with them, in later +chapters. + +@subheading Variable Assignment +@cindex +=, expansion +@cindex =, expansion +@cindex ?=, expansion +@cindex +=, expansion +@cindex !=, expansion +@cindex define, expansion + +Variable definitions are parsed as follows: + +@example +@var{immediate} = @var{deferred} +@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} + +define @var{immediate} + @var{deferred} +endef + +define @var{immediate} = + @var{deferred} +endef + +define @var{immediate} ?= + @var{deferred} +endef + +define @var{immediate} := + @var{immediate} +endef + +define @var{immediate} ::= + @var{immediate} +endef + +define @var{immediate} :::= + @var{immediate-with-escape} +endef + +define @var{immediate} += + @var{deferred} or @var{immediate} +endef + +define @var{immediate} != + @var{immediate} +endef +@end example + +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 is considered a +recursively expanded variable (and will thus be re-evaluated on each +reference). + +@subheading Conditional Directives +@cindex ifdef, expansion +@cindex ifeq, expansion +@cindex ifndef, expansion +@cindex ifneq, expansion + +Conditional directives are parsed immediately. This means, for +example, that automatic variables cannot be used in conditional +directives, as automatic variables are not set until the recipe for +that rule is invoked. If you need to use automatic variables in a +conditional directive you @emph{must} move the condition into the +recipe and use shell conditional syntax instead. + +@subheading Rule Definition +@cindex target, expansion +@cindex prerequisite, expansion +@cindex implicit rule, expansion +@cindex pattern rule, expansion +@cindex explicit rule, expansion + +A rule is always expanded the same way, regardless of the form: + +@example +@var{immediate} : @var{immediate} ; @var{deferred} + @var{deferred} +@end example + +That is, the target and prerequisite sections are expanded +immediately, and the recipe used to build the target is always +deferred. This is true for explicit rules, pattern rules, suffix +rules, static pattern rules, and simple prerequisite definitions. + +@node Parsing Makefiles, Secondary Expansion, Reading Makefiles, Makefiles +@section How Makefiles Are Parsed +@cindex parsing makefiles +@cindex makefiles, parsing + +GNU @code{make} parses makefiles line-by-line. Parsing proceeds using +the following steps: + +@enumerate +@item +Read in a full logical line, including backslash-escaped lines +(@pxref{Splitting Lines, , Splitting Long Lines}). + +@item +Remove comments (@pxref{Makefile Contents, , What Makefiles Contain}). + +@item +If the line begins with the recipe prefix character and we are in a +rule context, add the line to the current recipe and read the next +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}). + +@item +Scan the line for a separator character, such as @samp{:} or @samp{=}, +to determine whether the line is a macro assignment or a rule +(@pxref{Recipe Syntax}). + +@item +Internalize the resulting operation and read the next line. +@end enumerate + +An important consequence of this is that a macro can expand to an +entire rule, @emph{if it is one line long}. This will work: + +@example +myrule = target : ; echo built + +$(myrule) +@end example + +However, this will not work because @code{make} does not re-split lines +after it has expanded them: + +@example +define myrule +target: + echo built +endef + +$(myrule) +@end example + +The above makefile results in the definition of a target @samp{target} +with prerequisites @samp{echo} and @samp{built}, as if the makefile +contained @code{target: echo built}, rather than a rule with a recipe. +Newlines still present in a line after expansion is complete are +ignored as normal whitespace. + +In order to properly expand a multi-line macro you must use the +@code{eval} function: this causes the @code{make} parser to be run on +the results of the expanded macro (@pxref{Eval Function}). + +@node Secondary Expansion, , Parsing Makefiles, Makefiles +@section Secondary Expansion +@cindex secondary expansion +@cindex expansion, secondary + +@findex .SECONDEXPANSION +Previously we learned that GNU @code{make} works in two distinct +phases: a read-in phase and a target-update phase (@pxref{Reading +Makefiles, , How @code{make} Reads a Makefile}). GNU make also has +the ability to enable a @emph{second expansion} of the prerequisites +(only) for some or all targets defined in the makefile. In order for +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 @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: +ONEVAR = onefile +TWOVAR = twofile +myfile: $(ONEVAR) $$(TWOVAR) +@end example + +After the first expansion phase the prerequisites list of the +@file{myfile} target will be @code{onefile} and @code{$(TWOVAR)}; the +first (unescaped) variable reference to @var{ONEVAR} is expanded, +while the second (escaped) variable reference is simply unescaped, +without being recognized as a variable reference. Now during the +secondary expansion the first word is expanded again but since it +contains no variable or function references it remains the value +@file{onefile}, while the second word is now a normal reference to the +variable @var{TWOVAR}, which is expanded to the value @file{twofile}. +The final result is that there are two prerequisites, @file{onefile} +and @file{twofile}. + +Obviously, this is not a very interesting case since the same result +could more easily have been achieved simply by having both variables +appear, unescaped, in the prerequisites list. One difference becomes +apparent if the variables are reset; consider this example: + +@example +.SECONDEXPANSION: +AVAR = top +onefile: $(AVAR) +twofile: $$(AVAR) +AVAR = bottom +@end example + +Here the prerequisite of @file{onefile} will be expanded immediately, +and resolve to the value @file{top}, while the prerequisite of +@file{twofile} will not be full expanded until the secondary expansion +and yield a value of @file{bottom}. + +This is marginally more exciting, but the true power of this feature +only becomes apparent when you discover that secondary expansions +always take place within the scope of the automatic variables for that +target. This means that you can use variables such as @code{$@@}, +@code{$*}, etc. during the second expansion and they will have their +expected values, just as in the recipe. All you have to do is defer +the expansion by escaping the @code{$}. Also, secondary expansion +occurs for both explicit and implicit (pattern) rules. Knowing this, +the possible uses for this feature increase dramatically. For +example: + +@example +.SECONDEXPANSION: +main_OBJS := main.o try.o test.o +lib_OBJS := lib.o api.o + +main lib: $$($$@@_OBJS) +@end example + +Here, after the initial expansion the prerequisites of both the +@file{main} and @file{lib} targets will be @code{$($@@_OBJS)}. During +the secondary expansion, the @code{$@@} variable is set to the name of +the target and so the expansion for the @file{main} target will yield +@code{$(main_OBJS)}, or @code{main.o try.o test.o}, while the +secondary expansion for the @file{lib} target will yield +@code{$(lib_OBJS)}, or @code{lib.o api.o}. + +You can also mix in functions here, as long as they are properly escaped: + +@example +main_SRCS := main.c try.c test.c +lib_SRCS := lib.c api.c + +.SECONDEXPANSION: +main lib: $$(patsubst %.c,%.o,$$($$@@_SRCS)) +@end example + +This version allows users to specify source files rather than object +files, but gives the same resulting prerequisites list as the previous +example. + +Evaluation of automatic variables during the secondary expansion +phase, especially of the target name variable @code{$$@@}, behaves +similarly to evaluation within recipes. However, there are some +subtle differences and ``corner cases'' which come into play for the +different types of rule definitions that @code{make} understands. The +subtleties of using the different automatic variables are described +below. + +@subheading Secondary Expansion of Explicit Rules +@cindex secondary expansion and explicit rules +@cindex explicit rules, secondary expansion of + +During the secondary expansion of explicit rules, @code{$$@@} and +@code{$$%} evaluate, respectively, to the file name of the target and, +when the target is an archive member, the target member name. The +@code{$$<} variable evaluates to the first prerequisite in the first +rule for this target. @code{$$^} and @code{$$+} evaluate to the list +of all prerequisites of rules @emph{that have already appeared} for +the same target (@code{$$+} with repetitions and @code{$$^} +without). The following example will help illustrate these behaviors: + +@example +.SECONDEXPANSION: + +foo: foo.1 bar.1 $$< $$^ $$+ # line #1 + +foo: foo.2 bar.2 $$< $$^ $$+ # line #2 + +foo: foo.3 bar.3 $$< $$^ $$+ # line #3 +@end example + +In the first prerequisite list, all three variables (@code{$$<}, +@code{$$^}, and @code{$$+}) expand to the empty string. In the +second, they will have values @code{foo.1}, @code{foo.1 bar.1}, and +@code{foo.1 bar.1} respectively. In the third they will have values +@code{foo.1}, @code{foo.1 bar.1 foo.2 bar.2}, and @code{foo.1 bar.1 +foo.2 bar.2 foo.1 foo.1 bar.1 foo.1 bar.1} respectively. + +Rules undergo secondary expansion in makefile order, except that +the rule with the recipe is always evaluated last. + +The variables @code{$$?} and @code{$$*} are not available and expand +to the empty string. + +@subheading Secondary Expansion of Static Pattern Rules +@cindex secondary expansion and static pattern rules +@cindex static pattern rules, secondary expansion of + +Rules for secondary expansion of static pattern rules are identical to +those for explicit rules, above, with one exception: for static +pattern rules the @code{$$*} variable is set to the pattern stem. As +with explicit rules, @code{$$?} is not available and expands to the +empty string. + +@subheading Secondary Expansion of Implicit Rules +@cindex secondary expansion and implicit rules +@cindex implicit rules, secondary expansion of + +As @code{make} searches for an implicit rule, it substitutes the stem +and then performs secondary expansion for every rule with a matching +target pattern. The value of the automatic variables is derived in +the same fashion as for static pattern rules. As an example: + +@example +.SECONDEXPANSION: + +foo: bar + +foo foz: fo%: bo% + +%oo: $$< $$^ $$+ $$* +@end example + +When the implicit rule is tried for target @file{foo}, @code{$$<} +expands to @file{bar}, @code{$$^} expands to @file{bar boo}, +@code{$$+} also expands to @file{bar boo}, and @code{$$*} expands to +@file{f}. + +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: + +@example +.SECONDEXPANSION: + +/tmp/foo.o: + +%.o: $$(addsuffix /%.c,foo bar) foo.h + @@echo $^ +@end example + +The prerequisite list printed, after the secondary expansion and +directory prefix reconstruction, will be @file{/tmp/foo/foo.c +/tmp/bar/foo.c foo.h}. If you are not interested in this +reconstruction, you can use @code{$$*} instead of @code{%} in the +prerequisites list. + +@node Rules, Recipes, Makefiles, Top +@chapter Writing Rules +@cindex writing rules +@cindex rule, how to write +@cindex target +@cindex prerequisite + +A @dfn{rule} appears in the makefile and says when and how to remake +certain files, called the rule's @dfn{targets} (most often only one per rule). +It lists the other files that are the @dfn{prerequisites} of the target, and +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 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 +the makefile (often with a target called @samp{all}). +@xref{Goals, ,Arguments to Specify the Goals}. + +@menu +* Rule Example:: An example explained. +* Rule Syntax:: General syntax explained. +* Prerequisite Types:: There are two types of prerequisites. +* Wildcards:: Using wildcard characters such as `*'. +* Directory Search:: Searching other directories for source files. +* Phony Targets:: Using a target that is not a real file's name. +* Force Targets:: You can use a target without a recipe + or prerequisites to mark other targets + as phony. +* Empty Targets:: When only the date matters and the + files are empty. +* Special Targets:: Targets with special built-in meanings. +* Multiple Targets:: When to make use of several targets in a rule. +* Multiple Rules:: How to use several rules with the same target. +* Static Pattern:: Static pattern rules apply to multiple targets + and can vary the prerequisites according to + the target name. +* Double-Colon:: How to use a special kind of rule to allow + several independent rules for one target. +* Automatic Prerequisites:: How to automatically generate rules giving + prerequisites from source files themselves. +@end menu + +@ifnottex +@node Rule Example, Rule Syntax, Rules, Rules +@section Rule Example + +Here is an example of a rule: + +@example +foo.o : foo.c defs.h # module for twiddling the frobs + cc -c -g foo.c +@end example + +Its target is @file{foo.o} and its prerequisites are @file{foo.c} and +@file{defs.h}. It has one command in the recipe: @samp{cc -c -g foo.c}. +The recipe starts with a tab to identify it as a recipe. + +This rule says two things: + +@itemize @bullet +@item +How to decide whether @file{foo.o} is out of date: it is out of date +if it does not exist, or if either @file{foo.c} or @file{defs.h} is +more recent than it. + +@item +How to update the file @file{foo.o}: by running @code{cc} as stated. +The recipe does not explicitly mention @file{defs.h}, but we presume +that @file{foo.c} includes it, and that is why @file{defs.h} was added +to the prerequisites. +@end itemize +@end ifnottex + +@node Rule Syntax, Prerequisite Types, Rule Example, Rules +@section Rule Syntax + +@cindex rule syntax +@cindex syntax of rules +In general, a rule looks like this: + +@example +@var{targets} : @var{prerequisites} + @var{recipe} + @dots{} +@end example + +@noindent +or like this: + +@example +@var{targets} : @var{prerequisites} ; @var{recipe} + @var{recipe} + @dots{} +@end example + +@cindex targets +@cindex rule targets +The @var{targets} are file names, separated by spaces. Wildcard +characters may be used (@pxref{Wildcards, ,Using Wildcard Characters +in File Names}) and a name of the form @file{@var{a}(@var{m})} +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}). + +@cindex recipes +@cindex tab character (in commands) +The @var{recipe} lines start with a tab character (or the first +character in the value of the @code{.RECIPEPREFIX} variable; +@pxref{Special Variables}). The first recipe line may appear on the line +after the prerequisites, with a tab character, or may appear on the +same line, with a semicolon. Either way, the effect is the same. +There are other differences in the syntax of recipes. +@xref{Recipes, ,Writing Recipes in Rules}. + +@cindex dollar sign (@code{$}), in rules +@cindex @code{$}, in rules +@cindex rules, and @code{$} +Because dollar signs are used to start @code{make} variable +references, if you really want a dollar sign in a target or +prerequisite you must write two of them, @samp{$$} (@pxref{Using +Variables, ,How to Use Variables}). If you have enabled secondary +expansion (@pxref{Secondary Expansion}) and you want a literal dollar +sign in the prerequisites list, you must actually write @emph{four} +dollar signs (@samp{$$$$}). + +You may split a long line by inserting a backslash followed by a +newline, but this is not required, as @code{make} places no limit on +the length of a line in a makefile. + +A rule tells @code{make} two things: when the targets are out of date, +and how to update them when necessary. + +@cindex prerequisites +@cindex rule prerequisites +The criterion for being out of date is specified in terms of the +@var{prerequisites}, which consist of file names separated by spaces. +(Wildcards and archive members (@pxref{Archives}) are allowed here too.) +A target is out of date if it does not exist or if it is older than any +of the prerequisites (by comparison of last-modification times). The +idea is that the contents of the target file are computed based on +information in the prerequisites, so if any of the prerequisites changes, +the contents of the existing target file are no longer necessarily +valid. + +How to update is specified by a @var{recipe}. This is one or more +lines to be executed by the shell (normally @samp{sh}), but with some +extra features (@pxref{Recipes, ,Writing Recipes in Rules}). + +@node Prerequisite Types, Wildcards, Rule Syntax, Rules +@comment node-name, next, previous, up +@section Types of Prerequisites +@cindex prerequisite types +@cindex types of prerequisites + +@cindex prerequisites, normal +@cindex normal prerequisites +@cindex prerequisites, order-only +@cindex order-only prerequisites +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 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} +@end example + +The normal prerequisites section may of course be empty. Also, you +may still declare multiple lines of prerequisites for the same target: +they are appended appropriately (normal prerequisites are appended to +the list of normal prerequisites; order-only prerequisites are +appended to the list of order-only prerequisites). Note that if you +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 +any targets are placed into it but, because the timestamps on +directories change whenever a file is added, removed, or renamed, we +certainly don't want to rebuild all the targets whenever the +directory's timestamp changes. One way to manage this is with +order-only prerequisites: make the directory an order-only +prerequisite on all the targets: + +@example +OBJDIR := objdir +OBJS := $(addprefix $(OBJDIR)/,foo.o bar.o baz.o) + +$(OBJDIR)/%.o : %.c + $(COMPILE.c) $(OUTPUT_OPTION) $< + +all: $(OBJS) + +$(OBJS): | $(OBJDIR) + +$(OBJDIR): + mkdir $(OBJDIR) +@end example + +Now the rule to create the @file{objdir} directory will be run, if +needed, before any @samp{.o} is built, but no @samp{.o} will be built +because the @file{objdir} directory timestamp changed. + +@node Wildcards, Directory Search, Prerequisite Types, Rules +@section Using Wildcard Characters in File Names +@cindex wildcard +@cindex file name with wildcards +@cindex globbing (wildcards) + +@cindex @code{*} (wildcard character) +@cindex @code{?} (wildcard character) +@cindex @code{[@dots{}]} (wildcard characters) +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}. + +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{~}) +@cindex home directory +The character @samp{~} 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 @file{~/bin} expands to @file{/home/you/bin}. +If the @samp{~} is followed by a word, the string represents the home +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}. + +Wildcard expansion is performed by @code{make} automatically in +targets and in prerequisites. In recipes, the shell is responsible +for wildcard expansion. In other contexts, wildcard expansion happens +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}. + +@menu +* Wildcard Examples:: Several examples. +* Wildcard Pitfall:: Problems to avoid. +* Wildcard Function:: How to cause wildcard expansion where + it does not normally take place. +@end menu + +@node Wildcard Examples, Wildcard Pitfall, Wildcards, Wildcards +@subsection Wildcard Examples + +Wildcards can be used in the recipe of a rule, where they are expanded +by the shell. For example, here is a rule to delete all the object files: + +@example +@group +clean: + rm -f *.o +@end group +@end example +@cindex @code{rm} (shell command) + +Wildcards are also useful in the prerequisites of a rule. With the +following rule in the makefile, @samp{make print} will print all the +@samp{.c} files that have changed since the last time you printed them: + +@example +print: *.c + lpr -p $? + touch print +@end example + +@cindex @code{print} target +@cindex @code{lpr} (shell command) +@cindex @code{touch} (shell command) +@noindent +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}.) + +Wildcard expansion does not happen when you define a variable. Thus, if +you write this: + +@example +objects = *.o +@end example + +@noindent +then the value of the variable @code{objects} is the actual string +@samp{*.o}. However, if you use the value of @code{objects} in a +target or prerequisite, wildcard expansion will take place there. If +you use the value of @code{objects} in a recipe, the shell may perform +wildcard expansion when the recipe runs. To set @code{objects} to the +expansion, instead use: + +@example +objects := $(wildcard *.o) +@end example + +@noindent +@xref{Wildcard Function}. + +@node Wildcard Pitfall, Wildcard Function, Wildcard Examples, Wildcards +@subsection Pitfalls of Using Wildcards +@cindex wildcard pitfalls +@cindex pitfalls of wildcards +@cindex mistakes with wildcards +@cindex errors with wildcards +@cindex problems with wildcards + +Now here is an example of a naive way of using wildcard expansion, that +does not do what you would intend. Suppose you would like to say that the +executable file @file{foo} is made from all the object files in the +directory, and you write this: + +@example +objects = *.o + +foo : $(objects) + cc -o foo $(CFLAGS) $(objects) +@end example + +@noindent +The value of @code{objects} is the actual string @samp{*.o}. Wildcard +expansion happens in the rule for @file{foo}, so that each @emph{existing} +@samp{.o} file becomes a prerequisite of @file{foo} and will be recompiled if +necessary. + +But what if you delete all the @samp{.o} files? When a wildcard matches +no files, it is left as it is, so then @file{foo} will depend on the +oddly-named file @file{*.o}. Since no such file is likely to exist, +@code{make} will give you an error saying it cannot figure out how to +make @file{*.o}. This is not what you want! + +Actually it is possible to obtain the desired result with wildcard +expansion, but you need more sophisticated techniques, including the +@code{wildcard} function and string substitution. +@ifnottex +@xref{Wildcard Function, ,The Function @code{wildcard}}. +@end ifnottex +@iftex +These are described in the following section. +@end iftex + +@cindex wildcards and MS-DOS/MS-Windows backslashes +@cindex backslashes in pathnames and wildcard expansion + +Microsoft operating systems (MS-DOS and MS-Windows) use backslashes to +separate directories in pathnames, like so: + +@example + c:\foo\bar\baz.c +@end example + +This is equivalent to the Unix-style @file{c:/foo/bar/baz.c} (the +@file{c:} part is the so-called drive letter). When @code{make} runs on +these systems, it supports backslashes as well as the Unix-style forward +slashes in pathnames. However, this support does @emph{not} include the +wildcard expansion, where backslash is a quote character. Therefore, +you @emph{must} use Unix-style slashes in these cases. + + +@node Wildcard Function, , Wildcard Pitfall, Wildcards +@subsection The Function @code{wildcard} +@findex wildcard + +Wildcard expansion happens automatically in rules. But wildcard expansion +does not normally take place when a variable is set, or inside the +arguments of a function. If you want to do wildcard expansion in such +places, you need to use the @code{wildcard} function, like this: + +@example +$(wildcard @var{pattern}@dots{}) +@end example + +@noindent +This string, used anywhere in a makefile, is replaced by a +space-separated list of names of existing files that match one of the +given file name patterns. If no existing file name matches a pattern, +then that pattern is omitted from the output of the @code{wildcard} +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: + +@example +$(wildcard *.c) +@end example + +We can change the list of C source files into a list of object files by +replacing the @samp{.c} suffix with @samp{.o} in the result, like this: + +@example +$(patsubst %.c,%.o,$(wildcard *.c)) +@end example + +@noindent +(Here we have used another function, @code{patsubst}. +@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: + +@example +objects := $(patsubst %.c,%.o,$(wildcard *.c)) + +foo : $(objects) + cc -o foo $(objects) +@end example + +@noindent +(This takes advantage of the implicit rule for compiling C programs, so +there is no need to write explicit rules for compiling the files. +@xref{Flavors, ,The Two Flavors of Variables}, for an explanation of +@samp{:=}, which is a variant of @samp{=}.) + +@node Directory Search, Phony Targets, Wildcards, Rules +@section Searching Directories for Prerequisites +@vindex VPATH +@findex vpath +@cindex vpath +@cindex search path for prerequisites (@code{VPATH}) +@cindex directory search (@code{VPATH}) + +For large systems, it is often desirable to put sources in a separate +directory from the binaries. The @dfn{directory search} features of +@code{make} facilitate this by searching several directories +automatically to find a prerequisite. When you redistribute the files +among directories, you do not need to change the individual rules, +just the search paths. + +@menu +* General Search:: Specifying a search path that applies + to every prerequisite. +* Selective Search:: Specifying a search path + for a specified class of names. +* Search Algorithm:: When and how search paths are applied. +* Recipes/Search:: How to write recipes that work together + with search paths. +* Implicit/Search:: How search paths affect implicit rules. +* Libraries/Search:: Directory search for link libraries. +@end menu + +@node General Search, Selective Search, Directory Search, Directory Search +@subsection @code{VPATH}: Search Path for All Prerequisites +@vindex VPATH + +The value of the @code{make} variable @code{VPATH} specifies a list of +directories that @code{make} should search. Most often, the +directories are expected to contain prerequisite files that are not in the +current directory; however, @code{make} uses @code{VPATH} as a search +list for both prerequisites and targets of rules. + +Thus, if a file that is listed as a target or prerequisite does not exist +in the current directory, @code{make} searches the directories listed in +@code{VPATH} for a file with that name. If a file is found in one of +them, that file may become the prerequisite (see below). Rules may then +specify the names of files in the prerequisite list as if they all +existed in the current directory. @xref{Recipes/Search, ,Writing Recipes with Directory Search}. + +In the @code{VPATH} variable, directory names are separated by colons or +blanks. The order in which directories are listed is the order followed +by @code{make} in its search. (On MS-DOS and MS-Windows, semi-colons +are used as separators of directory names in @code{VPATH}, since the +colon can be used in the pathname itself, after the drive letter.) + +For example, + +@example +VPATH = src:../headers +@end example + +@noindent +specifies a path containing two directories, @file{src} and +@file{../headers}, which @code{make} searches in that order. + +With this value of @code{VPATH}, the following rule, + +@example +foo.o : foo.c +@end example + +@noindent +is interpreted as if it were written like this: + +@example +foo.o : src/foo.c +@end example + +@noindent +assuming the file @file{foo.c} does not exist in the current directory but +is found in the directory @file{src}. + +@node Selective Search, Search Algorithm, General Search, Directory Search +@subsection The @code{vpath} Directive +@findex vpath + +Similar to the @code{VPATH} variable, but more selective, is the +@code{vpath} directive (note lower case), which allows you to specify a +search path for a particular class of file names: those that match a +particular pattern. Thus you can supply certain search directories for +one class of file names and other directories (or none) for other file +names. + +There are three forms of the @code{vpath} directive: + +@table @code +@item vpath @var{pattern} @var{directories} +Specify the search path @var{directories} for file names that match +@var{pattern}. + +The search path, @var{directories}, is a list of directories to be +searched, separated by colons (semi-colons on MS-DOS and MS-Windows) or +blanks, just like the search path used in the @code{VPATH} variable. + +@item vpath @var{pattern} +Clear out the search path associated with @var{pattern}. + +@c Extra blank line makes sure this gets two lines. +@item vpath + +Clear all search paths previously specified with @code{vpath} directives. +@end table + +A @code{vpath} pattern is a string containing a @samp{%} character. The +string must match the file name of a prerequisite that is being searched +for, the @samp{%} character matching any sequence of zero or more +characters (as in pattern rules; @pxref{Pattern Rules, ,Defining and +Redefining Pattern Rules}). For example, @code{%.h} matches files that +end in @code{.h}. (If there is no @samp{%}, the pattern must match the +prerequisite exactly, which is not useful very often.) + +@cindex @code{%}, quoting in @code{vpath} +@cindex @code{%}, quoting with @code{\} (backslash) +@cindex @code{\} (backslash), to quote @code{%} +@cindex backslash (@code{\}), to quote @code{%} +@cindex quoting @code{%}, in @code{vpath} +@samp{%} characters in a @code{vpath} directive's pattern can be quoted +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. + +When a prerequisite fails to exist in the current directory, if the +@var{pattern} in a @code{vpath} directive matches the name of the +prerequisite file, then the @var{directories} in that directive are searched +just like (and before) the directories in the @code{VPATH} variable. + +For example, + +@example +vpath %.h ../headers +@end example + +@noindent +tells @code{make} to look for any prerequisite whose name ends in @file{.h} +in the directory @file{../headers} if the file is not found in the current +directory. + +If several @code{vpath} patterns match the prerequisite file's name, then +@code{make} processes each matching @code{vpath} directive one by one, +searching all the directories mentioned in each directive. @code{make} +handles multiple @code{vpath} directives in the order in which they +appear in the makefile; multiple directives with the same pattern are +independent of each other. + +@need 750 +Thus, + +@example +@group +vpath %.c foo +vpath % blish +vpath %.c bar +@end group +@end example + +@noindent +will look for a file ending in @samp{.c} in @file{foo}, then +@file{blish}, then @file{bar}, while + +@example +@group +vpath %.c foo:bar +vpath % blish +@end group +@end example + +@noindent +will look for a file ending in @samp{.c} in @file{foo}, then +@file{bar}, then @file{blish}. + +@node Search Algorithm, Recipes/Search, Selective Search, Directory Search +@subsection How Directory Searches are Performed +@cindex algorithm for directory search +@cindex directory search algorithm + +When a prerequisite is found through directory search, regardless of type +(general or selective), the pathname located may not be the one that +@code{make} actually provides you in the prerequisite list. Sometimes +the path discovered through directory search is thrown away. + +The algorithm @code{make} uses to decide whether to keep or abandon a +path found via directory search is as follows: + +@enumerate +@item +If a target file does not exist at the path specified in the makefile, +directory search is performed. + +@item +If the directory search is successful, that path is kept and this file +is tentatively stored as the target. + +@item +All prerequisites of this target are examined using this same method. + +@item +After processing the prerequisites, the target may or may not need to be +rebuilt: + +@enumerate a +@item +If the target does @emph{not} need to be rebuilt, the path to the file +found during directory search is used for any prerequisite lists which +contain this target. In short, if @code{make} doesn't need to rebuild +the target then you use the path found via directory search. + +@item +If the target @emph{does} need to be rebuilt (is out-of-date), the +pathname found during directory search is @emph{thrown away}, and the +target is rebuilt using the file name specified in the makefile. In +short, if @code{make} must rebuild, then the target is rebuilt locally, +not in the directory found via directory search. +@end enumerate +@end enumerate + +This algorithm may seem complex, but in practice it is quite often +exactly what you want. + +@cindex traditional directory search (GPATH) +@cindex directory search, traditional (GPATH) +Other versions of @code{make} use a simpler algorithm: if the file does +not exist, and it is found via directory search, then that pathname is +always used whether or not the target needs to be built. Thus, if the +target is rebuilt it is created at the pathname discovered during +directory search. + +@vindex GPATH +If, in fact, this is the behavior you want for some or all of your +directories, you can use the @code{GPATH} variable to indicate this to +@code{make}. + +@code{GPATH} has the same syntax and format as @code{VPATH} (that is, a +space- or colon-delimited list of pathnames). If an out-of-date target +is found by directory search in a directory that also appears in +@code{GPATH}, then that pathname is not thrown away. The target is +rebuilt using the expanded path. + +@node Recipes/Search, Implicit/Search, Search Algorithm, Directory Search +@subsection Writing Recipes with Directory Search +@cindex recipes, and directory search +@cindex directory search (@code{VPATH}), and recipes + +When a prerequisite is found in another directory through directory search, +this cannot change the recipe of the rule; they will execute as written. +Therefore, you must write the recipe with care so that it will look for +the prerequisite in the directory where @code{make} finds it. + +This is done with the @dfn{automatic variables} such as @samp{$^} +(@pxref{Automatic Variables}). +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: + +@example +foo.o : foo.c + cc -c $(CFLAGS) $^ -o $@@ +@end example + +@noindent +(The variable @code{CFLAGS} exists so you can specify flags for C +compilation by implicit rules; we use it here for consistency so it will +affect all C compilations uniformly; +@pxref{Implicit Variables, ,Variables Used by Implicit Rules}.) + +Often the prerequisites include header files as well, which you do not +want to mention in the recipe. The automatic variable @samp{$<} is +just the first prerequisite: + +@example +VPATH = src:../headers +foo.o : foo.c defs.h hack.h + cc -c $(CFLAGS) $< -o $@@ +@end example + +@node Implicit/Search, Libraries/Search, Recipes/Search, Directory Search +@subsection Directory Search and Implicit Rules +@cindex @code{VPATH}, and implicit rules +@cindex directory search (@code{VPATH}), and implicit rules +@cindex search path for prerequisites (@code{VPATH}), and implicit rules +@cindex implicit rule, and directory search +@cindex implicit rule, and @code{VPATH} +@cindex rule, implicit, and directory search +@cindex rule, implicit, and @code{VPATH} + +The search through the directories specified in @code{VPATH} or with +@code{vpath} also happens during consideration of implicit rules +(@pxref{Implicit Rules, ,Using Implicit Rules}). + +For example, when a file @file{foo.o} has no explicit rule, @code{make} +considers implicit rules, such as the built-in rule to compile +@file{foo.c} if that file exists. If such a file is lacking in the +current directory, the appropriate directories are searched for it. If +@file{foo.c} exists (or is mentioned in the makefile) in any of the +directories, the implicit rule for C compilation is applied. + +The recipes of implicit rules normally use automatic variables as a +matter of necessity; consequently they will use the file names found by +directory search with no extra effort. + +@node Libraries/Search, , Implicit/Search, Directory Search +@subsection Directory Search for Link Libraries +@cindex link libraries, and directory search +@cindex libraries for linking, directory search +@cindex directory search (@code{VPATH}), and link libraries +@cindex @code{VPATH}, and link libraries +@cindex search path for prerequisites (@code{VPATH}), and link libraries +@cindex @code{-l} (library search) +@cindex link libraries, patterns matching +@cindex @code{.LIBPATTERNS}, and link libraries +@vindex .LIBPATTERNS + +Directory search applies in a special way to libraries used with the +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}}.) + +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}, +and, if it is not found, for the file @file{lib@var{name}.a} in the current +directory, in directories specified by matching @code{vpath} +search paths and the @code{VPATH} search path, and then in the +directories @file{/lib}, @file{/usr/lib}, and @file{@var{prefix}/lib} +(normally @file{/usr/local/lib}, but MS-DOS/MS-Windows versions of +@code{make} behave as if @var{prefix} is defined to be the root of the +DJGPP installation tree). + +For example, if there is a @file{/usr/lib/libcurses.a} library on your +system (and no @file{/usr/lib/libcurses.so} file), then + +@example +@group +foo : foo.c -lcurses + cc $^ -o $@@ +@end group +@end example + +@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}. + +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 +via the @code{.LIBPATTERNS} variable. Each word in the value of this +variable is a pattern string. When a prerequisite like +@samp{-l@var{name}} is seen, @code{make} will replace the percent in +each pattern in the list with @var{name} and perform the above directory +searches using each library file name. + +The default value for @code{.LIBPATTERNS} is @samp{lib%.so lib%.a}, +which provides the default behavior described above. + +You can turn off link library expansion completely by setting this +variable to an empty value. + +@node Phony Targets, Force Targets, Directory Search, Rules +@section Phony Targets +@cindex phony targets +@cindex targets, phony +@cindex targets without a file + +A phony target is one that is not really the name of a file; rather it +is just a name for a recipe to be executed when you make an explicit +request. There are two reasons to use a phony target: to avoid a +conflict with a file of the same name, and to improve performance. + +If you write a rule whose recipe will not create the target file, the +recipe will be executed every time the target comes up for remaking. +Here is an example: + +@example +@group +clean: + rm *.o temp +@end group +@end example + +@noindent +Because the @code{rm} command does not create a file named @file{clean}, +probably no such file will ever exist. Therefore, the @code{rm} command +will be executed every time you say @samp{make clean}. +@cindex @code{rm} (shell command) + +@findex .PHONY +In this example, the @file{clean} target will not work properly if a +file named @file{clean} is ever created in this directory. Since it +has no prerequisites, @file{clean} would always be considered up to +date and its recipe would not be executed. To avoid this problem you +can explicitly declare the target to be phony by making it a +prerequisite of the special target @code{.PHONY} +(@pxref{Special Targets, ,Special Built-in Target Names}) as follows: + +@example +@group +.PHONY: clean +clean: + rm *.o temp +@end group +@end example + +@noindent +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 +lists a number of sub-directories to be built. A simplistic way to +handle this is to define one rule with a recipe that loops over the +sub-directories, like this: + +@example +@group +SUBDIRS = foo bar baz + +subdirs: + for dir in $(SUBDIRS); do \ + $(MAKE) -C $$dir; \ + done +@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 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 +be built) you can remove these problems: + +@example +@group +SUBDIRS = foo bar baz + +.PHONY: subdirs $(SUBDIRS) + +subdirs: $(SUBDIRS) + +$(SUBDIRS): + $(MAKE) -C $@@ + +foo: baz +@end group +@end example + +Here we've also declared that the @file{foo} sub-directory cannot be +built until after the @file{baz} sub-directory is complete; this kind of +relationship declaration is particularly important when attempting +parallel builds. + +The implicit rule search (@pxref{Implicit Rules}) is skipped for +@code{.PHONY} targets. This is why declaring a target as +@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} 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 +makefile @file{./Makefile}. Since the target remade by default will be the +first one in the makefile, it is common to make this a phony target named +@samp{all} and give it, as prerequisites, all the individual programs. For +example: + +@example +all : prog1 prog2 prog3 +.PHONY : all + +prog1 : prog1.o utils.o + cc -o prog1 prog1.o utils.o + +prog2 : prog2.o + cc -o prog2 prog2.o + +prog3 : prog3.o sort.o utils.o + cc -o prog3 prog3.o sort.o utils.o +@end example + +@noindent +Now you can say just @samp{make} to remake all three programs, or +specify as arguments the ones to remake (as in @samp{make prog1 +prog3}). Phoniness is not inherited: the prerequisites of a phony +target are not themselves phony, unless explicitly declared to be so. + +When one phony target is a prerequisite of another, it serves as a subroutine +of the other. For example, here @samp{make cleanall} will delete the +object files, the difference files, and the file @file{program}: + +@example +.PHONY: cleanall cleanobj cleandiff + +cleanall : cleanobj cleandiff + rm program + +cleanobj : + rm *.o + +cleandiff : + rm *.diff +@end example + +@node Force Targets, Empty Targets, Phony Targets, Rules +@section Rules without Recipes or Prerequisites +@cindex force targets +@cindex targets, force +@cindex @code{FORCE} +@cindex rule, no recipe or prerequisites + +If a rule has no prerequisites or recipe, and the target of the rule +is a nonexistent file, then @code{make} imagines this target to have +been updated whenever its rule is run. This implies that all targets +depending on this one will always have their recipe run. + +An example will illustrate this: + +@example +@group +clean: FORCE + rm $(objects) +FORCE: +@end group +@end example + +Here the target @samp{FORCE} satisfies the special conditions, so the +target @file{clean} that depends on it is forced to run its recipe. +There is nothing special about the name @samp{FORCE}, but that is one +name commonly used this way. + +As you can see, using @samp{FORCE} this way has the same results as using +@samp{.PHONY: clean}. + +Using @samp{.PHONY} is more explicit and more efficient. However, +other versions of @code{make} do not support @samp{.PHONY}; thus +@samp{FORCE} appears in many makefiles. @xref{Phony Targets}. + +@node Empty Targets, Special Targets, Force Targets, Rules +@section Empty Target Files to Record Events +@cindex empty targets +@cindex targets, empty +@cindex recording events with empty targets + +The @dfn{empty target} is a variant of the phony target; it is used to hold +recipes for an action that you request explicitly from time to time. +Unlike a phony target, this target file can really exist; but the file's +contents do not matter, and usually are empty. + +The purpose of the empty target file is to record, with its +last-modification time, when the rule's recipe was last executed. It +does so because one of the commands in the recipe is a @code{touch} +command to update the target file. + +The empty target file should have some prerequisites (otherwise it +doesn't make sense). When you ask to remake the empty target, the +recipe is executed if any prerequisite is more recent than the target; +in other words, if a prerequisite has changed since the last time you +remade the target. Here is an example: + +@example +print: foo.c bar.c + lpr -p $? + touch print +@end example +@cindex @code{print} target +@cindex @code{lpr} (shell command) +@cindex @code{touch} (shell command) + +@noindent +With this rule, @samp{make print} will execute the @code{lpr} command if +either source file has changed since the last @samp{make print}. The +automatic variable @samp{$?} is used to print only those files that have +changed (@pxref{Automatic Variables}). + +@node Special Targets, Multiple Targets, Empty Targets, Rules +@section Special Built-in Target Names +@cindex special targets +@cindex built-in special targets +@cindex targets, built-in special + +Certain names have special meanings if they appear as targets. + +@table @code +@findex .PHONY +@item .PHONY + +The prerequisites of the special target @code{.PHONY} are considered to +be phony targets. When it is time to consider such a target, +@code{make} will run its recipe unconditionally, regardless of +whether a file with that name exists or what its last-modification +time is. @xref{Phony Targets, ,Phony Targets}. + +@findex .SUFFIXES +@item .SUFFIXES + +The prerequisites of the special target @code{.SUFFIXES} are the list +of suffixes to be used in checking for suffix rules. +@xref{Suffix Rules, , Old-Fashioned Suffix Rules}. + +@findex .DEFAULT +@item .DEFAULT + +The recipe specified for @code{.DEFAULT} is used for any target for +which no rules are found (either explicit rules or implicit rules). +@xref{Last Resort}. If a @code{.DEFAULT} recipe is specified, every +file mentioned as a prerequisite, but not as a target in a rule, will have +that recipe executed on its behalf. @xref{Implicit Rule Search, +,Implicit Rule Search Algorithm}. + +@findex .PRECIOUS +@item .PRECIOUS +@cindex precious targets +@cindex preserving with @code{.PRECIOUS} + +The targets which @code{.PRECIOUS} depends on are given the following +special treatment: if @code{make} is killed or interrupted during the +execution of their recipes, the target is not deleted. +@xref{Interrupts, ,Interrupting or Killing @code{make}}. Also, if the +target is an intermediate file, it will not be deleted after it is no +longer needed, as is normally done. @xref{Chained Rules, ,Chains of +Implicit Rules}. In this latter respect it overlaps with the +@code{.SECONDARY} special target. + +You can also list the target pattern of an implicit rule (such as +@samp{%.o}) as a prerequisite file of the special target @code{.PRECIOUS} +to preserve intermediate files created by rules whose target patterns +match that file's name. + +@findex .INTERMEDIATE +@item .INTERMEDIATE +@cindex intermediate targets, explicit + +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 +@cindex preserving with @code{.SECONDARY} + +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). + +@findex .SECONDEXPANSION +@item .SECONDEXPANSION + +If @code{.SECONDEXPANSION} is mentioned as a target anywhere in the +makefile, then all prerequisite lists defined @emph{after} it appears +will be expanded a second time after all makefiles have been read in. +@xref{Secondary Expansion, ,Secondary Expansion}. + +@findex .DELETE_ON_ERROR +@item .DELETE_ON_ERROR +@cindex removing targets on failure + +If @code{.DELETE_ON_ERROR} is mentioned as a target anywhere in the +makefile, then @code{make} will delete the target of a rule if it has +changed and its recipe exits with a nonzero exit status, just as it +does when it receives a signal. @xref{Errors, ,Errors in Recipes}. + +@findex .IGNORE +@item .IGNORE + +If you specify prerequisites for @code{.IGNORE}, then @code{make} will +ignore errors in execution of the recipe for those particular files. +The recipe for @code{.IGNORE} (if any) is ignored. + +If mentioned as a target with no prerequisites, @code{.IGNORE} says to +ignore errors in execution of recipes for all files. This usage of +@samp{.IGNORE} is supported only for historical compatibility. Since +this affects every recipe in the makefile, it is not very useful; we +recommend you use the more selective ways to ignore errors in specific +recipes. @xref{Errors, ,Errors in Recipes}. + +@findex .LOW_RESOLUTION_TIME +@item .LOW_RESOLUTION_TIME + +If you specify prerequisites for @code{.LOW_RESOLUTION_TIME}, +@command{make} assumes that these files are created by commands that +generate low resolution time stamps. The recipe for the +@code{.LOW_RESOLUTION_TIME} target are ignored. + +The high resolution file time stamps of many modern file systems +lessen the chance of @command{make} incorrectly concluding that a file +is up to date. Unfortunately, some hosts do not provide a way to set a +high resolution file time stamp, so commands like @samp{cp -p} that +explicitly set a file's time stamp must discard its sub-second part. +If a file is created by such a command, you should list it as a +prerequisite of @code{.LOW_RESOLUTION_TIME} so that @command{make} +does not mistakenly conclude that the file is out of date. For +example: + +@example +@group +.LOW_RESOLUTION_TIME: dst +dst: src + cp -p src dst +@end group +@end example + +Since @samp{cp -p} discards the sub-second part of @file{src}'s time +stamp, @file{dst} is typically slightly older than @file{src} even when +it is up to date. The @code{.LOW_RESOLUTION_TIME} line causes +@command{make} to consider @file{dst} to be up to date if its time stamp +is at the start of the same second that @file{src}'s time stamp is in. + +Due to a limitation of the archive format, archive member time stamps +are always low resolution. You need not list archive members as +prerequisites of @code{.LOW_RESOLUTION_TIME}, as @command{make} does this +automatically. + +@findex .SILENT +@item .SILENT + +If you specify prerequisites for @code{.SILENT}, then @code{make} will +not print the recipe used to remake those particular files before +executing them. The recipe for @code{.SILENT} is ignored. + +If mentioned as a target with no prerequisites, @code{.SILENT} says +not to print any recipes before executing them. You may also use more +selective ways to silence specific recipe command lines. +@xref{Echoing, ,Recipe Echoing}. If you want to silence all recipes +for a particular run of @code{make}, use the @samp{-s} or +@w{@samp{--silent}} option (@pxref{Options Summary}). + +@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. 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 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 +@cindex recipe execution, single invocation + +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. +@xref{Execution, ,Recipe Execution}. + +@findex .POSIX +@item .POSIX +@cindex POSIX-conforming mode, setting + +If @code{.POSIX} is mentioned as a target, then the makefile will be +parsed and run in POSIX-conforming mode. This does @emph{not} mean +that only POSIX-conforming makefiles will be accepted: all advanced +GNU @code{make} features are still available. Rather, this target +causes @code{make} to behave as required by POSIX in those areas +where @code{make}'s default behavior differs. + +In particular, if this target is mentioned then recipes will be +invoked as if the shell had been passed the @code{-e} flag: the first +failing command in a recipe will cause the recipe to fail immediately. +@end table + +Any defined implicit rule suffix also counts as a special target if it +appears as a target, and so does the concatenation of two suffixes, such +as @samp{.c.o}. These targets are suffix rules, an obsolete way of +defining implicit rules (but a way still widely used). In principle, any +target name could be special in this way if you break it in two and add +both pieces to the suffix list. In practice, suffixes normally begin with +@samp{.}, so these special target names also begin with @samp{.}. +@xref{Suffix Rules, ,Old-Fashioned Suffix Rules}. + +@node Multiple Targets, Multiple Rules, Special Targets, Rules +@section Multiple Targets in a Rule +@cindex multiple targets +@cindex several targets in a rule +@cindex targets, multiple +@cindex rule, with multiple targets + +When an explicit rule has multiple targets they can be treated in one +of two possible ways: as independent targets or as grouped targets. +The manner in which they are treated is determined by the separator that +appears after the list of targets. + +@subsubheading Rules with Independent Targets +@cindex independent targets +@cindex targets, independent + +Rules that use the standard target separator, @code{:}, define +independent targets. This is equivalent to writing the same rule once +for each target, with duplicated prerequisites and recipes. Typically, +the recipe would use automatic variables such as @samp{$@@} to specify +which target is being built. + +Rules with independent targets are useful in two cases: + +@itemize @bullet +@item +You want just prerequisites, no recipe. For example: + +@example +kbd.o command.o files.o: command.h +@end example + +@noindent +gives an additional prerequisite to each of the three object files +mentioned. It is equivalent to writing: + +@example +kbd.o: command.h +command.o: command.h +files.o: command.h +@end example + +@item +Similar recipes work for all the targets. The automatic variable +@samp{$@@} can be used to substitute the particular target to be +remade into the commands (@pxref{Automatic Variables}). For example: + +@example +@group +bigoutput littleoutput : text.g + generate text.g -$(subst output,,$@@) > $@@ +@end group +@end example +@findex subst + +@noindent +is equivalent to + +@example +bigoutput : text.g + generate text.g -big > bigoutput +littleoutput : text.g + generate text.g -little > littleoutput +@end example + +@noindent +Here we assume the hypothetical program @code{generate} makes two +types of output, one if given @samp{-big} and one if given +@samp{-little}. +@xref{Text Functions, ,Functions for String Substitution and Analysis}, +for an explanation of the @code{subst} function. +@end itemize + +Suppose you would like to vary the prerequisites according to the +target, much as the variable @samp{$@@} allows you to vary the recipe. +You cannot do this with multiple targets in an ordinary rule, but you +can do it with a @dfn{static pattern rule}. @xref{Static Pattern, +,Static Pattern Rules}. + +@subsubheading Rules with Grouped Targets +@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''). + +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: + +@example +@group +foo bar biz &: baz boz + echo $^ > foo + echo $^ > bar + echo $^ > biz +@end group +@end example + +During the execution of a grouped target's recipe, the automatic +variable @samp{$@@} is set to the name of the particular target in the +group which triggered the rule. Caution must be used if relying on +this variable in the recipe of a grouped target rule. + +Unlike independent targets, a grouped target rule @emph{must} include +a recipe. However, targets that are members of a grouped target may +also appear in independent target rule definitions that do not have +recipes. + +Each target may have only one recipe associated with it. If a grouped +target appears in either an independent target rule or in another +grouped target rule with a recipe, you will get a warning and the +latter recipe will replace the former recipe. Additionally the target +will be removed from the previous group and appear only in the new +group. + +If you would like a target to appear in multiple groups, then you must +use the double-colon grouped target separator, @code{&::} when +declaring all of the groups containing that target. Grouped +double-colon targets are each considered independently, and each +grouped double-colon rule's recipe is executed at most once, if at +least one of its multiple targets requires updating. + +@node Multiple Rules, Static Pattern, Multiple Targets, Rules +@section Multiple Rules for One Target +@cindex multiple rules for one target +@cindex several rules for one target +@cindex rule, multiple for one target +@cindex target, multiple rules for one + +One file can be the target of several rules. All the prerequisites +mentioned in all the rules are merged into one list of prerequisites for +the target. If the target is older than any prerequisite from any rule, +the recipe is executed. + +There can only be one recipe to be executed for a file. If more than +one rule gives a recipe for the same file, @code{make} uses the last +one given and prints an error message. (As a special case, if the +file's name begins with a dot, no error message is printed. This odd +behavior is only for compatibility with other implementations of +@code{make}@dots{} you should avoid using it). Occasionally it is +useful to have the same target invoke multiple recipes which are +defined in different parts of your makefile; you can use +@dfn{double-colon rules} (@pxref{Double-Colon}) for this. + +An extra rule with just prerequisites can be used to give a few extra +prerequisites to many files at once. For example, makefiles often +have a variable, such as @code{objects}, containing a list of all the +compiler output files in the system being made. An easy way to say +that all of them must be recompiled if @file{config.h} changes is to +write the following: + +@example +objects = foo.o bar.o +foo.o : defs.h +bar.o : defs.h test.h +$(objects) : config.h +@end example + +This could be inserted or taken out without changing the rules that really +specify how to make the object files, making it a convenient form to use if +you wish to add the additional prerequisite intermittently. + +Another wrinkle is that the additional prerequisites could be +specified with a variable that you set with a command line argument to +@code{make} (@pxref{Overriding, ,Overriding Variables}). For example, + +@example +@group +extradeps= +$(objects) : $(extradeps) +@end group +@end example + +@noindent +means that the command @samp{make extradeps=foo.h} will consider +@file{foo.h} as a prerequisite of each object file, but plain @samp{make} +will not. + +If none of the explicit rules for a target has a recipe, then @code{make} +searches for an applicable implicit rule to find one +@pxref{Implicit Rules, ,Using Implicit Rules}). + +@node Static Pattern, Double-Colon, Multiple Rules, Rules +@section Static Pattern Rules +@cindex static pattern rule +@cindex rule, static pattern +@cindex pattern rules, static (not implicit) +@cindex varying prerequisites +@cindex prerequisites, varying (static pattern) + +@dfn{Static pattern rules} are rules which specify multiple targets and +construct the prerequisite names for each target based on the target name. +They are more general than ordinary rules with multiple targets because the +targets do not have to have identical prerequisites. Their prerequisites must +be @emph{analogous}, but not necessarily @emph{identical}. + +@menu +* Static Usage:: The syntax of static pattern rules. +* Static versus Implicit:: When are they better than implicit rules? +@end menu + +@node Static Usage, Static versus Implicit, Static Pattern, Static Pattern +@subsection Syntax of Static Pattern Rules +@cindex static pattern rule, syntax of +@cindex pattern rules, static, syntax of + +Here is the syntax of a static pattern rule: + +@example +@var{targets} @dots{}: @var{target-pattern}: @var{prereq-patterns} @dots{} + @var{recipe} + @dots{} +@end example + +@noindent +The @var{targets} list specifies the targets that the rule applies to. +The targets can contain wildcard characters, just like the targets of +ordinary rules (@pxref{Wildcards, ,Using Wildcard Characters in File +Names}). + +@cindex target pattern, static (not implicit) +@cindex stem +The @var{target-pattern} and @var{prereq-patterns} say how to compute the +prerequisites of each target. Each target is matched against the +@var{target-pattern} to extract a part of the target name, called the +@dfn{stem}. This stem is substituted into each of the @var{prereq-patterns} +to make the prerequisite names (one from each @var{prereq-pattern}). + +Each pattern normally contains the character @samp{%} just once. When the +@var{target-pattern} matches a target, the @samp{%} can match any part of +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. + +@cindex prerequisite pattern, static (not implicit) +The prerequisite names for each target are made by substituting the stem +for the @samp{%} in each prerequisite pattern. For example, if one +prerequisite pattern is @file{%.c}, then substitution of the stem +@samp{foo} gives the prerequisite name @file{foo.c}. It is legitimate +to write a prerequisite pattern that does not contain @samp{%}; then this +prerequisite is the same for all targets. + +@cindex @code{%}, quoting in static pattern +@cindex @code{%}, quoting with @code{\} (backslash) +@cindex @code{\} (backslash), to quote @code{%} +@cindex backslash (@code{\}), to quote @code{%} +@cindex quoting @code{%}, in static pattern +@samp{%} characters in pattern rules can be quoted 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 or has a stem substituted into it. +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. + +Here is an example, which compiles each of @file{foo.o} and @file{bar.o} +from the corresponding @file{.c} file: + +@example +@group +objects = foo.o bar.o + +all: $(objects) + +$(objects): %.o: %.c + $(CC) -c $(CFLAGS) $< -o $@@ +@end group +@end example + +@noindent +Here @samp{$<} is the automatic variable that holds the name of the +prerequisite and @samp{$@@} is the automatic variable that holds the name +of the target; see @ref{Automatic Variables}. + +Each target specified must match the target pattern; a warning is issued +for each target that does not. If you have a list of files, only some of +which will match the pattern, you can use the @code{filter} function to +remove non-matching file names (@pxref{Text Functions, ,Functions for String Substitution and Analysis}): + +@example +files = foo.elc bar.o lose.o + +$(filter %.o,$(files)): %.o: %.c + $(CC) -c $(CFLAGS) $< -o $@@ +$(filter %.elc,$(files)): %.elc: %.el + emacs -f batch-byte-compile $< +@end example + +@noindent +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}. + +Another example shows how to use @code{$*} in static pattern rules: +@vindex $*@r{, and static pattern} + +@example +@group +bigoutput littleoutput : %output : text.g + generate text.g -$* > $@@ +@end group +@end example + +@noindent +When the @code{generate} command is run, @code{$*} will expand to the +stem, either @samp{big} or @samp{little}. + +@node Static versus Implicit, , Static Usage, Static Pattern +@subsection Static Pattern Rules versus Implicit Rules +@cindex rule, static pattern versus implicit +@cindex static pattern rule, versus implicit + +A static pattern rule has much in common with an implicit rule defined as a +pattern rule (@pxref{Pattern Rules, ,Defining and Redefining Pattern Rules}). +Both have a pattern for the target and patterns for constructing the +names of prerequisites. The difference is in how @code{make} decides +@emph{when} the rule applies. + +An implicit rule @emph{can} apply to any target that matches its pattern, +but it @emph{does} apply only when the target has no recipe otherwise +specified, and only when the prerequisites can be found. If more than one +implicit rule appears applicable, only one applies; the choice depends on +the order of rules. + +By contrast, a static pattern rule applies to the precise list of targets +that you specify in the rule. It cannot apply to any other target and it +invariably does apply to each of the targets specified. If two conflicting +rules apply, and both have recipes, that's an error. + +The static pattern rule can be better than an implicit rule for these +reasons: + +@itemize @bullet +@item +You may wish to override the usual implicit rule for a few +files whose names cannot be categorized syntactically but +can be given in an explicit list. + +@item +If you cannot be sure of the precise contents of the directories +you are using, you may not be sure which other irrelevant files +might lead @code{make} to use the wrong implicit rule. The choice +might depend on the order in which the implicit rule search is done. +With static pattern rules, there is no uncertainty: each rule applies +to precisely the targets specified. +@end itemize + +@node Double-Colon, Automatic Prerequisites, Static Pattern, Rules +@section Double-Colon Rules +@cindex double-colon rules +@cindex rule, double-colon (@code{::}) +@cindex multiple rules for one target (@code{::}) +@cindex @code{::} rules (double-colon) + +@dfn{Double-colon} rules are explicit rules written with @samp{::} +instead of @samp{:} after the target names. They are handled +differently from ordinary rules when the same target appears in more +than one rule. Pattern rules with double-colons have an entirely +different meaning (@pxref{Match-Anything Rules}). + +When a target appears in multiple rules, all the rules must be the same +type: all ordinary, or all double-colon. If they are double-colon, each +of them is independent of the others. Each double-colon rule's recipe +is executed if the target is older than any prerequisites of that rule. +If there are no prerequisites for that rule, its recipe is always +executed (even if the target already exists). This can result in +executing none, any, or all of the double-colon rules. + +Double-colon rules with the same target are in fact completely separate +from one another. Each double-colon rule is processed individually, just +as rules with different targets are processed. + +The double-colon rules for a target are executed in the order they appear +in the makefile. However, the cases where double-colon rules really make +sense are those where the order of executing the recipes would not matter. + +Double-colon rules are somewhat obscure and not often very useful; they +provide a mechanism for cases in which the method used to update a target +differs depending on which prerequisite files caused the update, and such +cases are rare. + +Each double-colon rule should specify a recipe; if it does not, an +implicit rule will be used if one applies. +@xref{Implicit Rules, ,Using Implicit Rules}. + +@node Automatic Prerequisites, , Double-Colon, Rules +@section Generating Prerequisites Automatically +@cindex prerequisites, automatic generation +@cindex automatic generation of prerequisites +@cindex generating prerequisites automatically + +In the makefile for a program, many of the rules you need to write often +say only that some object file depends on some header +file. For example, if @file{main.c} uses @file{defs.h} via an +@code{#include}, you would write: + +@example +main.o: defs.h +@end example + +@noindent +You need this rule so that @code{make} knows that it must remake +@file{main.o} whenever @file{defs.h} changes. You can see that for a +large program you would have to write dozens of such rules in your +makefile. And, you must always be very careful to update the makefile +every time you add or remove an @code{#include}. +@cindex @code{#include} + +@cindex @code{-M} (to compiler) +To avoid this hassle, most modern C compilers can write these rules for +you, by looking at the @code{#include} lines in the source files. +Usually this is done with the @samp{-M} option to the compiler. +For example, the command: + +@example +cc -M main.c +@end example + +@noindent +generates the output: + +@example +main.o : main.c defs.h +@end example + +@noindent +Thus you no longer have to write all those rules yourself. +The compiler will do it for you. + +Note that such a rule constitutes mentioning @file{main.o} in a +makefile, so it can never be considered an intermediate file by +implicit rule search. This means that @code{make} won't ever remove +the file after using it; @pxref{Chained Rules, ,Chains of Implicit +Rules}. + +@cindex @code{make depend} +With old @code{make} programs, it was traditional practice to use this +compiler feature to generate prerequisites on demand with a command like +@samp{make depend}. That command would create a file @file{depend} +containing all the automatically-generated prerequisites; then the +makefile could use @code{include} to read them in (@pxref{Include}). + +In GNU @code{make}, the feature of remaking makefiles makes this +practice obsolete---you need never tell @code{make} explicitly to +regenerate the prerequisites, because it always regenerates any makefile +that is out of date. @xref{Remaking Makefiles}. + +The practice we recommend for automatic prerequisite generation is to have +one makefile corresponding to each source file. For each source file +@file{@var{name}.c} there is a makefile @file{@var{name}.d} which lists +what files the object file @file{@var{name}.o} depends on. That way +only the source files that have changed need to be rescanned to produce +the new prerequisites. + +Here is the pattern rule to generate a file of prerequisites (i.e., a makefile) +called @file{@var{name}.d} from a C source file called @file{@var{name}.c}: + +@smallexample +@group +%.d: %.c + @@set -e; rm -f $@@; \ + $(CC) -M $(CPPFLAGS) $< > $@@.$$$$; \ + sed 's,\($*\)\.o[ :]*,\1.o $@@ : ,g' < $@@.$$$$ > $@@; \ + rm -f $@@.$$$$ +@end group +@end smallexample + +@noindent +@xref{Pattern Rules}, for information on defining pattern rules. The +@samp{-e} flag to the shell causes it to exit immediately if the +@code{$(CC)} command (or any other command) fails (exits with a +nonzero status). +@cindex @code{-e} (shell flag) + +@cindex @code{-MM} (to GNU compiler) +With the GNU C compiler, you may wish to use the @samp{-MM} flag instead +of @samp{-M}. This omits prerequisites on system header files. +@xref{Preprocessor Options, , Options Controlling the Preprocessor, +gcc, Using GNU CC}, for details. + +@cindex @code{sed} (shell command) +The purpose of the @code{sed} command is to translate (for example): + +@example +main.o : main.c defs.h +@end example + +@noindent +into: + +@example +main.o main.d : main.c defs.h +@end example + +@noindent +@cindex @code{.d} +This makes each @samp{.d} file depend on all the source and header files +that the corresponding @samp{.o} file depends on. @code{make} then +knows it must regenerate the prerequisites whenever any of the source or +header files changes. + +Once you've defined the rule to remake the @samp{.d} files, +you then use the @code{include} directive to read them all in. +@xref{Include}. For example: + +@example +@group +sources = foo.c bar.c + +include $(sources:.c=.d) +@end group +@end example + +@noindent +(This example uses a substitution variable reference to translate the +list of source files @samp{foo.c bar.c} into a list of prerequisite +makefiles, @samp{foo.d bar.d}. @xref{Substitution Refs}, for full +information on substitution references.) Since the @samp{.d} files are +makefiles like any others, @code{make} will remake them as necessary +with no further work from you. @xref{Remaking Makefiles}. + +Note that the @samp{.d} files contain target definitions; you should +be sure to place the @code{include} directive @emph{after} the first, +default goal in your makefiles or run the risk of having a random +object file become the default goal. +@xref{How Make Works}. + +@node Recipes, Using Variables, Rules, Top +@chapter Writing Recipes in Rules +@cindex recipes +@cindex recipes, how to write +@cindex writing recipes + +The recipe of a rule consists of one or more shell command lines to +be executed, one at a time, in the order they appear. Typically, the +result of executing these commands is that the target of the rule is +brought up to date. + +Users use many different shell programs, but recipes in makefiles are +always interpreted by @file{/bin/sh} unless the makefile specifies +otherwise. @xref{Execution, ,Recipe Execution}. + +@menu +* Recipe Syntax:: Recipe syntax features and pitfalls. +* Echoing:: How to control when recipes are echoed. +* Execution:: How recipes are executed. +* Parallel:: How recipes can be executed in parallel. +* Errors:: What happens after a recipe execution error. +* Interrupts:: What happens when a recipe is interrupted. +* Recursion:: Invoking @code{make} from makefiles. +* Canned Recipes:: Defining canned recipes. +* Empty Recipes:: Defining useful, do-nothing recipes. +@end menu + +@node Recipe Syntax, Echoing, Recipes, Recipes +@section Recipe Syntax +@cindex recipe syntax +@cindex syntax of recipe + +Makefiles have the unusual property that there are really two distinct +syntaxes in one file. Most of the makefile uses @code{make} syntax +(@pxref{Makefiles, ,Writing Makefiles}). However, recipes are meant +to be interpreted by the shell and so they are written using shell +syntax. The @code{make} program does not try to understand shell +syntax: it performs only a very few specific translations on the +content of the recipe before handing it to the shell. + +Each line in the recipe must start with a tab (or the first character +in the value of the @code{.RECIPEPREFIX} variable; @pxref{Special +Variables}), except that the first recipe line may be attached to the +target-and-prerequisites line with a semicolon in between. @emph{Any} +line in the makefile that begins with a tab and appears in a ``rule +context'' (that is, after a rule has been started until another rule +or variable definition) will be considered part of a recipe for that +rule. Blank lines and lines of just comments may appear among the +recipe lines; they are ignored. + +Some consequences of these rules include: + +@itemize @bullet +@item +A blank line that begins with a tab is not blank: it's an empty +recipe (@pxref{Empty Recipes}). + +@cindex comments, in recipes +@cindex recipes, comments in +@cindex @code{#} (comments), in recipes +@item +A comment in a recipe is not a @code{make} comment; it will be +passed to the shell as-is. Whether the shell treats it as a comment +or not depends on your shell. + +@item +A variable definition in a ``rule context'' which is indented by a tab +as the first character on the line, will be considered part of a +recipe, not a @code{make} variable definition, and passed to the +shell. + +@item +A conditional expression (@code{ifdef}, @code{ifeq}, +etc. @pxref{Conditional Syntax, ,Syntax of Conditionals}) in a ``rule +context'' which is indented by a tab as the first character on the +line, will be considered part of a recipe and be passed to the shell. + +@end itemize + +@menu +* Splitting Recipe Lines:: Breaking long recipe lines for readability. +* Variables in Recipes:: Using @code{make} variables in recipes. +@end menu + +@node Splitting Recipe Lines, Variables in Recipes, Recipe Syntax, Recipe Syntax +@subsection Splitting Recipe Lines +@cindex recipes, splitting +@cindex splitting recipes +@cindex recipes, backslash (@code{\}) in +@cindex recipes, quoting newlines in +@cindex backslash (@code{\}), in recipes +@cindex @code{\} (backslash), in recipes +@cindex quoting newline, in recipes +@cindex newline, quoting, in recipes + +One of the few ways in which @code{make} does interpret recipes is +checking for a backslash just before the newline. As in normal +makefile syntax, a single logical recipe line can be split into +multiple physical lines in the makefile by placing a backslash before +each newline. A sequence of lines like this is considered a single +recipe line, and one instance of the shell will be invoked to run it. + +However, in contrast to how they are treated in other places in a +makefile (@pxref{Splitting Lines, , Splitting Long Lines}), +backslash/newline pairs are @emph{not} removed from the recipe. Both +the backslash and the newline characters are preserved and passed to +the shell. How the backslash/newline is interpreted depends on your +shell. If the first character of the next line after the +backslash/newline is the recipe prefix character (a tab by default; +@pxref{Special Variables}), then that character (and only that +character) is removed. Whitespace is never added to the recipe. + +For example, the recipe for the all target in this makefile: + +@example +@group +all : + @@echo no\ +space + @@echo no\ + space + @@echo one \ + space + @@echo one\ + space +@end group +@end example + +@noindent +consists of four separate shell commands where the output is: + +@example +@group +nospace +nospace +one space +one space +@end group +@end example + +As a more complex example, this makefile: + +@example +@group +all : ; @@echo 'hello \ + world' ; echo "hello \ + world" +@end group +@end example + +@noindent +will invoke one shell with a command of: + +@example +@group +echo 'hello \ +world' ; echo "hello \ + world" +@end group +@end example + +@noindent +which, according to shell quoting rules, will yield the following output: + +@example +@group +hello \ +world +hello world +@end group +@end example + +@noindent +Notice how the backslash/newline pair was removed inside the string +quoted with double quotes (@code{"@dots{}"}), but not from the string +quoted with single quotes (@code{'@dots{}'}). This is the way the +default shell (@file{/bin/sh}) handles backslash/newline pairs. If +you specify a different shell in your makefiles it may treat them +differently. + +Sometimes you want to split a long line inside of single quotes, but +you don't want the backslash/newline to appear in the quoted content. +This is often the case when passing scripts to languages such as Perl, +where extraneous backslashes inside the script can change its meaning +or even be a syntax error. One simple way of handling this is to +place the quoted string, or even the entire command, into a +@code{make} variable then use the variable in the recipe. In this +situation the newline quoting rules for makefiles will be used, and +the backslash/newline will be removed. If we rewrite our example +above using this method: + +@example +@group +HELLO = 'hello \ +world' + +all : ; @@echo $(HELLO) +@end group +@end example + +@noindent +we will get output like this: + +@example +@group +hello world +@end group +@end example + +If you like, you can also use target-specific variables +(@pxref{Target-specific, ,Target-specific Variable Values}) to obtain +a tighter correspondence between the variable and the recipe that +uses it. + +@node Variables in Recipes, , Splitting Recipe Lines, Recipe Syntax +@subsection Using Variables in Recipes +@cindex variable references in recipes +@cindex recipes, using variables in + +The other way in which @code{make} processes recipes is by expanding +any variable references in them (@pxref{Reference,Basics of Variable +References}). This occurs after make has finished reading all the +makefiles and the target is determined to be out of date; so, the +recipes for targets which are not rebuilt are never expanded. + +Variable and function references in recipes have identical syntax and +semantics to references elsewhere in the makefile. They also have the +same quoting rules: if you want a dollar sign to appear in your +recipe, you must double it (@samp{$$}). For shells like the default +shell, that use dollar signs to introduce variables, it's important to +keep clear in your mind whether the variable you want to reference is +a @code{make} variable (use a single dollar sign) or a shell variable +(use two dollar signs). For example: + +@example +@group +LIST = one two three +all: + for i in $(LIST); do \ + echo $$i; \ + done +@end group +@end example + +@noindent +results in the following command being passed to the shell: + +@example +@group +for i in one two three; do \ + echo $i; \ +done +@end group +@end example + +@noindent +which generates the expected result: + +@example +@group +one +two +three +@end group +@end example + +@node Echoing, Execution, Recipe Syntax, Recipes +@section Recipe Echoing +@cindex echoing of recipes +@cindex silent operation +@cindex @code{@@} (in recipes) +@cindex recipes, echoing +@cindex printing of recipes + +Normally @code{make} prints each line of the recipe before it is +executed. We call this @dfn{echoing} because it gives the appearance +that you are typing the lines yourself. + +When a line starts with @samp{@@}, the echoing of that line is suppressed. +The @samp{@@} is discarded before the line is passed to the shell. +Typically you would use this for a command whose only effect is to print +something, such as an @code{echo} command to indicate progress through +the makefile: + +@example +@@echo About to make distribution files +@end example + +@cindex @code{-n} +@cindex @code{--just-print} +@cindex @code{--dry-run} +@cindex @code{--recon} +When @code{make} is given the flag @samp{-n} or @samp{--just-print} it +only echoes most recipes, without executing them. @xref{Options +Summary, ,Summary of Options}. In this case even the recipe lines +starting with @samp{@@} are printed. This flag is useful for finding +out which recipes @code{make} thinks are necessary without actually +doing them. + +@cindex @code{-s} +@cindex @code{--silent} +@cindex @code{--quiet} +@findex .SILENT +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}). + +@node Execution, Parallel, Echoing, Recipes +@section Recipe Execution +@cindex recipe, execution +@cindex execution, of recipes +@vindex @code{SHELL} @r{(recipe execution)} + +When it is time to execute recipes to update a target, they are +executed by invoking a new sub-shell for each line of the recipe, +unless the @code{.ONESHELL} special target is in effect +(@pxref{One Shell, ,Using One Shell}) (In practice, @code{make} may +take shortcuts that do not affect the results.) + +@cindex @code{cd} (shell command) +@cindex shell variables, setting in recipes +@cindex recipes setting shell variables +@strong{Please note:} this implies that setting shell variables and +invoking shell commands such as @code{cd} that set a context local to +each process will not affect the following lines in the recipe.@footnote{On +MS-DOS, the value of current working directory is @strong{global}, so +changing it @emph{will} affect the following recipe lines on those +systems.} If you want to use @code{cd} to affect the next statement, +put both statements in a single recipe line. Then @code{make} will +invoke one shell to run the entire line, and the shell will execute +the statements in sequence. For example: + +@example +foo : bar/lose + cd $( ../$@@ +@end example + +@noindent +Here we use the shell AND operator (@code{&&}) so that if the +@code{cd} command fails, the script will fail without trying to invoke +the @code{gobble} command in the wrong directory, which could cause +problems (in this case it would certainly cause @file{../foo} to be +truncated, at least). + +@menu +* One Shell:: One shell for all lines in a recipe. +* Choosing the Shell:: How @code{make} chooses the shell used + to run recipes. +@end menu + +@node One Shell, Choosing the Shell, Execution, Execution +@subsection Using One Shell +@cindex recipe lines, single shell +@cindex @code{.ONESHELL}, use of +@findex .ONESHELL + +Sometimes you would prefer that all the lines in the recipe be passed +to a single invocation of the shell. There are generally two +situations where this is useful: first, it can improve performance in +makefiles where recipes consist of many command lines, by avoiding +extra processes. Second, you might want newlines to be included in +your recipe command (for example perhaps you are using a very +different interpreter as your @code{SHELL}). If the @code{.ONESHELL} +special target appears anywhere in the makefile then @emph{all} +recipe lines for each target will be provided to a single invocation +of the shell. Newlines between recipe lines will be preserved. For +example: + +@example +.ONESHELL: +foo : bar/lose + cd $( ../$@@ +@end example + +@noindent +would now work as expected even though the commands are on different +recipe lines. + +If @code{.ONESHELL} is provided, then only the first line of the +recipe will be checked for the special prefix characters (@samp{@@}, +@samp{-}, and @samp{+}). Subsequent lines will include the special +characters in the recipe line when the @code{SHELL} is invoked. If +you want your recipe to start with one of these special characters +you'll need to arrange for them to not be the first characters on the +first line, perhaps by adding a comment or similar. For example, this +would be a syntax error in Perl because the first @samp{@@} is removed +by make: + +@example +.ONESHELL: +SHELL = /usr/bin/perl +.SHELLFLAGS = -e +show : + @@f = qw(a b c); + print "@@f\n"; +@end example + +@noindent +However, either of these alternatives would work properly: + +@example +.ONESHELL: +SHELL = /usr/bin/perl +.SHELLFLAGS = -e +show : + # Make sure "@@" is not the first character on the first line + @@f = qw(a b c); + print "@@f\n"; +@end example + +@noindent +or + +@example +.ONESHELL: +SHELL = /usr/bin/perl +.SHELLFLAGS = -e +show : + my @@f = qw(a b c); + print "@@f\n"; +@end example + +As a special feature, if @code{SHELL} is determined to be a +POSIX-style shell, the special prefix characters in ``internal'' +recipe lines will be @emph{removed} before the recipe is processed. +This feature is intended to allow existing makefiles to add the +@code{.ONESHELL} special target and still run properly without +extensive modifications. Since the special prefix characters are not +legal at the beginning of a line in a POSIX shell script this is not a +loss in functionality. For example, this works as expected: + +@example +.ONESHELL: +foo : bar/lose + @@cd $(@@D) + @@gobble $(@@F) > ../$@@ +@end example + +Even with this special feature, however, makefiles with +@code{.ONESHELL} will behave differently in ways that could be +noticeable. For example, normally if any line in the recipe fails, +that causes the rule to fail and no more recipe lines are processed. +Under @code{.ONESHELL} a failure of any but the final recipe line will +not be noticed by @code{make}. You can modify @code{.SHELLFLAGS} to +add the @code{-e} option to the shell which will cause any failure +anywhere in the command line to cause the shell to fail, but this +could itself cause your recipe to behave differently. Ultimately you +may need to harden your recipe lines to allow them to work with +@code{.ONESHELL}. + +@node Choosing the Shell, , One Shell, Execution +@subsection Choosing the Shell +@cindex shell, choosing the +@cindex @code{SHELL}, value of +@cindex @code{.SHELLFLAGS}, value of + +@vindex SHELL +@vindex .SHELLFLAGS +The program used as the shell is taken from the variable @code{SHELL}. +If this variable is not set in your makefile, the program +@file{/bin/sh} is used as the shell. The argument(s) passed to the +shell are taken from the variable @code{.SHELLFLAGS}. The default +value of @code{.SHELLFLAGS} is @code{-c} normally, or @code{-ec} in +POSIX-conforming mode. + +@cindex environment, @code{SHELL} in +Unlike most variables, the variable @code{SHELL} is never set from the +environment. This is because the @code{SHELL} environment variable is +used to specify your personal choice of shell program for interactive +use. It would be very bad for personal choices like this to affect the +functioning of makefiles. @xref{Environment, ,Variables from the +Environment}. + +Furthermore, when you do set @code{SHELL} in your makefile that value +is @emph{not} exported in the environment to recipe lines that +@code{make} invokes. Instead, the value inherited from the user's +environment, if any, is exported. You can override this behavior by +explicitly exporting @code{SHELL} (@pxref{Variables/Recursion, +,Communicating Variables to a Sub-@code{make}}), forcing it to be +passed in the environment to recipe lines. + +@vindex @code{MAKESHELL} @r{(MS-DOS alternative to @code{SHELL})} +However, on MS-DOS and MS-Windows the value of @code{SHELL} in the +environment @strong{is} used, since on those systems most users do not +set this variable, and therefore it is most likely set specifically to +be used by @code{make}. On MS-DOS, if the setting of @code{SHELL} is +not suitable for @code{make}, you can set the variable +@code{MAKESHELL} to the shell that @code{make} should use; if set it +will be used as the shell instead of the value of @code{SHELL}. + +@subsubheading Choosing a Shell in DOS and Windows +@cindex shell, in DOS and Windows +@cindex DOS, choosing a shell in +@cindex Windows, choosing a shell in + +Choosing a shell in MS-DOS and MS-Windows is much more complex than on +other systems. + +@vindex COMSPEC +On MS-DOS, if @code{SHELL} is not set, the value of the variable +@code{COMSPEC} (which is always set) is used instead. + +@cindex @code{SHELL}, MS-DOS specifics +The processing of lines that set the variable @code{SHELL} in Makefiles +is different on MS-DOS. The stock shell, @file{command.com}, is +ridiculously limited in its functionality and many users of @code{make} +tend to install a replacement shell. Therefore, on MS-DOS, @code{make} +examines the value of @code{SHELL}, and changes its behavior based on +whether it points to a Unix-style or DOS-style shell. This allows +reasonable functionality even if @code{SHELL} points to +@file{command.com}. + +If @code{SHELL} points to a Unix-style shell, @code{make} on MS-DOS +additionally checks whether that shell can indeed be found; if not, it +ignores the line that sets @code{SHELL}. In MS-DOS, GNU @code{make} +searches for the shell in the following places: + +@enumerate +@item +In the precise place pointed to by the value of @code{SHELL}. For +example, if the makefile specifies @samp{SHELL = /bin/sh}, @code{make} +will look in the directory @file{/bin} on the current drive. + +@item +In the current directory. + +@item +In each of the directories in the @code{PATH} variable, in order. + +@end enumerate + +In every directory it examines, @code{make} will first look for the +specific file (@file{sh} in the example above). If this is not found, +it will also look in that directory for that file with one of the known +extensions which identify executable files. For example @file{.exe}, +@file{.com}, @file{.bat}, @file{.btm}, @file{.sh}, and some others. + +If any of these attempts is successful, the value of @code{SHELL} will +be set to the full pathname of the shell as found. However, if none of +these is found, the value of @code{SHELL} will not be changed, and thus +the line that sets it will be effectively ignored. This is so +@code{make} will only support features specific to a Unix-style shell if +such a shell is actually installed on the system where @code{make} runs. + +Note that this extended search for the shell is limited to the cases +where @code{SHELL} is set from the Makefile; if it is set in the +environment or command line, you are expected to set it to the full +pathname of the shell, exactly as things are on Unix. + +The effect of the above DOS-specific processing is that a Makefile that +contains @samp{SHELL = /bin/sh} (as many Unix makefiles do), will work +on MS-DOS unaltered if you have e.g.@: @file{sh.exe} installed in some +directory along your @code{PATH}. + +@vindex SHELL +@vindex .SHELLFLAGS + +@node Parallel, Errors, Execution, Recipes +@section Parallel Execution +@cindex recipes, execution in parallel +@cindex parallel execution +@cindex execution, in parallel +@cindex job slots +@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 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. + +If the @samp{-j} option is followed by an integer, this is the number of +recipes to execute at once; this is called the number of @dfn{job slots}. +If there is nothing looking like an integer after the @samp{-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). + +Handling recursive @code{make} invocations raises issues for parallel +execution. For more information on this, see @ref{Options/Recursion, +,Communicating Options to a Sub-@code{make}}. + +If a recipe fails (is killed by a signal or exits with a nonzero +status), and errors are not ignored for that recipe (@pxref{Errors, +,Errors in Recipes}), the remaining recipe lines to remake the same +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. + +@cindex load average +@cindex limiting jobs based on load +@cindex jobs, limiting based on load +@cindex @code{-l} (load average) +@cindex @code{--max-load} +@cindex @code{--load-average} +When the system is heavily loaded, you will probably want to run fewer jobs +than when it is lightly loaded. You can use the @samp{-l} option to tell +@code{make} to limit the number of jobs to run at once, based on the load +average. The @samp{-l} or @samp{--max-load} +option is followed by a floating-point number. For +example, + +@example +-l 2.5 +@end 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. + +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 +lower than the limit given with @samp{-l}, @code{make} waits until the load +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 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 + +When running several recipes in parallel the output from each +recipe appears as soon as it is generated, with the result that +messages from different recipes may be interspersed, sometimes even +appearing on the same line. This can make reading the output very +difficult. + +@cindex @code{--output-sync} +@cindex @code{-O} +To avoid this you can use the @samp{--output-sync} (@samp{-O}) option. +This option instructs @code{make} to save the output from the commands +it invokes and print it all once the commands are completed. +Additionally, if there are multiple recursive @code{make} invocations +running in parallel, they will communicate so that only one of them is +generating output at a time. + +If working directory printing is enabled (@pxref{-w Option, ,The +@samp{--print-directory} Option}), the enter/leave messages are +printed around each output grouping. If you prefer not to see these +messages add the @samp{--no-print-directory} option to @code{MAKEFLAGS}. + +There are four levels of granularity when synchronizing output, +specified by giving an argument to the option (e.g., @samp{-Oline} or +@samp{--output-sync=recurse}). + +@table @code +@item none +This is the default: all output is sent directly as it is generated and +no synchronization is performed. + +@item line +Output from each individual line of the recipe is grouped and printed +as soon as that line is complete. If a recipe consists of multiple +lines, they may be interspersed with lines from other recipes. + +@item target +Output from the entire recipe for each target is grouped and printed +once the target is complete. This is the default if the +@code{--output-sync} or @code{-O} option is given with no argument. + +@item recurse +Output from each recursive invocation of @code{make} is grouped and +printed once the recursive invocation is complete. + +@end table + +Regardless of the mode chosen, the total build time will be the same. +The only difference is in how the output appears. + +The @samp{target} and @samp{recurse} modes both collect the output of +the entire recipe of a target and display it uninterrupted when the +recipe completes. The difference between them is in how recipes that +contain recursive invocations of @code{make} are treated +(@pxref{Recursion, ,Recursive Use of @code{make}}). For all recipes +which have no recursive lines, the @samp{target} and @samp{recurse} +modes behave identically. + +If the @samp{recurse} mode is chosen, recipes that contain recursive +@code{make} invocations are treated the same as other targets: the +output from the recipe, including the output from the recursive +@code{make}, is saved and printed after the entire recipe is complete. +This ensures output from all the targets built by a given recursive +@code{make} instance are grouped together, which may make the output +easier to understand. However it also leads to long periods of time +during the build where no output is seen, followed by large bursts of +output. If you are not watching the build as it proceeds, but instead +viewing a log of the build after the fact, this may be the best option +for you. + +If you are watching the output, the long gaps of quiet during the +build can be frustrating. The @samp{target} output synchronization +mode detects when @code{make} is going to be invoked recursively, +using the standard methods, and it will not synchronize the output of +those lines. The recursive @code{make} will perform the +synchronization for its targets and the output from each will be +displayed immediately when it completes. Be aware that output from +recursive lines of the recipe are not synchronized (for example if +the recursive line prints a message before running @code{make}, that +message will not be synchronized). + +The @samp{line} mode can be useful for front-ends that are watching +the output of @code{make} to track when recipes are started and +completed. + +Some programs invoked by @code{make} may behave differently if they +determine they're writing output to a terminal versus a file (often +described as ``interactive'' vs. ``non-interactive'' modes). For +example, many programs that can display colorized output will not do +so if they determine they are not writing to a terminal. If your +makefile invokes a program like this then using the output +synchronization options will cause the program to believe it's running +in ``non-interactive'' mode even though the output will ultimately go +to the terminal. + +@node Parallel Input, , Parallel Output, Parallel +@subsection Input During Parallel Execution +@cindex input during parallel execution +@cindex parallel execution, input during +@cindex standard input + +Two processes cannot both take input from the same device at the same +time. To make sure that only one recipe tries to take input from the +terminal at once, @code{make} will invalidate the standard input +streams of all but one running recipe. If another recipe attempts to +read from standard input it will usually incur a fatal error (a +@samp{Broken pipe} signal). +@cindex broken pipe + +It is unpredictable which recipe will have a valid standard input stream +(which will come from the terminal, or wherever you redirect the standard +input of @code{make}). The first recipe run will always get it first, and +the first recipe started after that one finishes will get it next, and so +on. + +We will change how this aspect of @code{make} works if we find a better +alternative. In the mean time, you should not rely on any recipe using +standard input at all if you are using the parallel execution feature; but +if you are not using this feature, then standard input works normally in +all recipes. + +@node Errors, Interrupts, Parallel, Recipes +@section Errors in Recipes +@cindex errors (in recipes) +@cindex recipes, errors in +@cindex exit status (errors) + +After each shell invocation returns, @code{make} looks at its exit +status. If the shell completed successfully (the exit status is +zero), the next line in the recipe is executed in a new shell; after +the last line is finished, the rule is finished. + +If there is an error (the exit status is nonzero), @code{make} gives up on +the current rule, and perhaps on all rules. + +Sometimes the failure of a certain recipe line does not indicate a problem. +For example, you may use the @code{mkdir} command to ensure that a +directory exists. If the directory already exists, @code{mkdir} will +report an error, but you probably want @code{make} to continue regardless. + +@cindex @code{-} (in recipes) +To ignore errors in a recipe line, write a @samp{-} at the beginning +of the line's text (after the initial tab). The @samp{-} is discarded +before the line is passed to the shell for execution. + +For example, + +@example +@group +clean: + -rm -f *.o +@end group +@end example +@cindex @code{rm} (shell command) + +@noindent +This causes @code{make} to continue even if @code{rm} is unable to +remove a file. + +@cindex @code{-i} +@cindex @code{--ignore-errors} +@findex .IGNORE +When you run @code{make} with the @samp{-i} or @samp{--ignore-errors} +flag, errors are ignored in all recipes of all rules. A rule in the +makefile for the special target @code{.IGNORE} has the same effect, if +there are no prerequisites. This is less flexible but sometimes useful. + +When errors are to be ignored, because of either a @samp{-} or the +@samp{-i} flag, @code{make} treats an error return just like success, +except that it prints out a message that tells you the status code +the shell exited with, and says that the error has been ignored. + +When an error happens that @code{make} has not been told to ignore, +it implies that the current target cannot be correctly remade, and neither +can any other that depends on it either directly or indirectly. No further +recipes will be executed for these targets, since their preconditions +have not been achieved. + + +@cindex @code{-k} +@cindex @code{--keep-going} +Normally @code{make} gives up immediately in this circumstance, returning a +nonzero status. However, if the @samp{-k} or @samp{--keep-going} +flag is specified, @code{make} +continues to consider the other prerequisites of the pending targets, +remaking them if necessary, before it gives up and returns nonzero status. +For example, after an error in compiling one object file, @samp{make -k} +will continue compiling other object files even though it already knows +that linking them will be impossible. @xref{Options Summary, ,Summary of Options}. + +The usual behavior assumes that your purpose is to get the specified +targets up to date; once @code{make} learns that this is impossible, it +might as well report the failure immediately. The @samp{-k} option says +that the real purpose is to test as many of the changes made in the +program as possible, perhaps to find several independent problems so +that you can correct them all before the next attempt to compile. This +is why Emacs' @code{compile} command passes the @samp{-k} flag by +default. +@cindex Emacs (@code{M-x compile}) + +@findex .DELETE_ON_ERROR +@cindex deletion of target files +@cindex removal of target files +@cindex target, deleting on error +Usually when a recipe line fails, if it has changed the target file at all, +the file is corrupted and cannot be used---or at least it is not +completely updated. Yet the file's time stamp says that it is now up to +date, so the next time @code{make} runs, it will not try to update that +file. The situation is just the same as when the shell is killed by a +signal; @pxref{Interrupts}. So generally the right thing to do is to +delete the target file if the recipe fails after beginning to change +the file. @code{make} will do this if @code{.DELETE_ON_ERROR} appears +as a target. This is almost always what you want @code{make} to do, but +it is not historical practice; so for compatibility, you must explicitly +request it. + +@node Interrupts, Recursion, Errors, Recipes +@section Interrupting or Killing @code{make} +@cindex interrupt +@cindex signal +@cindex deletion of target files +@cindex removal of target files +@cindex target, deleting on interrupt +@cindex killing (interruption) + +If @code{make} gets a fatal signal while a shell is executing, it may +delete the target file that the recipe was supposed to update. This is +done if the target file's last-modification time has changed since +@code{make} first checked it. + +The purpose of deleting the target is to make sure that it is remade from +scratch when @code{make} is next run. Why is this? Suppose you type +@kbd{Ctrl-c} while a compiler is running, and it has begun to write an +object file @file{foo.o}. The @kbd{Ctrl-c} kills the compiler, resulting +in an incomplete file whose last-modification time is newer than the source +file @file{foo.c}. But @code{make} also receives the @kbd{Ctrl-c} signal +and deletes this incomplete file. If @code{make} did not do this, the next +invocation of @code{make} would think that @file{foo.o} did not require +updating---resulting in a strange error message from the linker when it +tries to link an object file half of which is missing. + +@findex .PRECIOUS +You can prevent the deletion of a target file in this way by making the +special target @code{.PRECIOUS} depend on it. Before remaking a target, +@code{make} checks to see whether it appears on the prerequisites of +@code{.PRECIOUS}, and thereby decides whether the target should be deleted +if a signal happens. Some reasons why you might do this are that the +target is updated in some atomic fashion, or exists only to record a +modification-time (its contents do not matter), or must exist at all +times to prevent other sorts of trouble. + +Although @code{make} does its best to clean up there are certain situations +in which cleanup is impossible. For example, @code{make} may be killed by +an uncatchable signal. Or, one of the programs make invokes may be killed +or crash, leaving behind an up-to-date but corrupt target file: @code{make} +will not realize that this failure requires the target to be cleaned. Or +@code{make} itself may encounter a bug and crash. + +For these reasons it's best to write @emph{defensive recipes}, which won't +leave behind corrupted targets even if they fail. Most commonly these +recipes create temporary files rather than updating the target directly, +then rename the temporary file to the final target name. Some compilers +already behave this way, so that you don't need to write a defensive recipe. + +@node Recursion, Canned Recipes, Interrupts, Recipes +@section Recursive Use of @code{make} +@cindex recursion +@cindex subdirectories, recursion for + +Recursive use of @code{make} means using @code{make} as a command in a +makefile. This technique is useful when you want separate makefiles for +various subsystems that compose a larger system. For example, suppose you +have a sub-directory @file{subdir} which has its own makefile, and you would +like the containing directory's makefile to run @code{make} on the +sub-directory. You can do it by writing this: + +@example +subsystem: + cd subdir && $(MAKE) +@end example + +@noindent +or, equivalently, this (@pxref{Options Summary, ,Summary of Options}): + +@example +subsystem: + $(MAKE) -C subdir +@end example +@cindex @code{-C} +@cindex @code{--directory} + +You can write recursive @code{make} commands just by copying this example, +but there are many things to know about how they work and why, and about +how the sub-@code{make} relates to the top-level @code{make}. You may +also find it useful to declare targets that invoke recursive +@code{make} commands as @samp{.PHONY} (for more discussion on when +this is useful, see @ref{Phony Targets}). + +@vindex @code{CURDIR} +For your convenience, when GNU @code{make} starts (after it has +processed any @code{-C} options) it sets the variable @code{CURDIR} to +the pathname of the current working directory. This value is never +touched by @code{make} again: in particular note that if you include +files from other directories the value of @code{CURDIR} does not +change. The value has the same precedence it would have if it were +set in the makefile (by default, an environment variable @code{CURDIR} +will not override this value). Note that setting this variable has no +impact on the operation of @code{make} (it does not cause @code{make} +to change its working directory, for example). + +@menu +* MAKE Variable:: The special effects of using @samp{$(MAKE)}. +* Variables/Recursion:: How to communicate variables to a sub-@code{make}. +* Options/Recursion:: How to communicate options to a sub-@code{make}. +* -w Option:: How the @samp{-w} or @samp{--print-directory} option + helps debug use of recursive @code{make} commands. +@end menu + +@node MAKE Variable, Variables/Recursion, Recursion, Recursion +@subsection How the @code{MAKE} Variable Works +@vindex MAKE +@cindex recursion, and @code{MAKE} variable + +Recursive @code{make} commands should always use the variable @code{MAKE}, +not the explicit command name @samp{make}, as shown here: + +@example +@group +subsystem: + cd subdir && $(MAKE) +@end group +@end example + +The value of this variable is the file name with which @code{make} was +invoked. If this file name was @file{/bin/make}, then the recipe executed +is @samp{cd subdir && /bin/make}. If you use a special version of +@code{make} to run the top-level makefile, the same special version will be +executed for recursive invocations. +@cindex @code{cd} (shell command) + +@cindex +, and recipes +As a special feature, using the variable @code{MAKE} in the recipe of +a rule alters the effects of the @samp{-t} (@samp{--touch}), @samp{-n} +(@samp{--just-print}), or @samp{-q} (@w{@samp{--question}}) option. +Using the @code{MAKE} variable has the same effect as using a @samp{+} +character at the beginning of the recipe line. @xref{Instead of +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. + +Consider the command @samp{make -t} in the above example. (The +@samp{-t} option marks targets as up to date without actually running +any recipes; see @ref{Instead of Execution}.) Following the usual +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. +@cindex @code{-t}, and recursion +@cindex recursion, and @code{-t} +@cindex @code{--touch}, and recursion + +The special feature makes this do what you want: whenever a recipe +line of a rule contains the variable @code{MAKE}, the flags @samp{-t}, +@samp{-n} and @samp{-q} do not apply to that line. Recipe lines +containing @code{MAKE} are executed normally despite the presence of a +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. + +@node Variables/Recursion, Options/Recursion, MAKE Variable, Recursion +@subsection Communicating Variables to a Sub-@code{make} +@cindex sub-@code{make} +@cindex environment, and recursion +@cindex exporting variables +@cindex variables, environment +@cindex variables, exporting +@cindex recursion, and environment +@cindex recursion, and variables + +Variable values of the top-level @code{make} can be passed to the +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}). + +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 +recipe. The sub-@code{make}, in turn, uses the environment to +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 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. +Instead, the value of the @code{SHELL} variable from the invoking +environment is passed to the sub-@code{make}. You can force +@code{make} to export its value for @code{SHELL} by using the +@code{export} directive, described below. @xref{Choosing the Shell}. + +The special variable @code{MAKEFLAGS} is always exported (unless you +unexport it). @code{MAKEFILES} is exported if you set it to anything. + +@code{make} automatically passes down variable values that were defined +on the command line, by putting them in the @code{MAKEFLAGS} variable. +@iftex +See the next section. +@end iftex +@ifnottex +@xref{Options/Recursion}. +@end ifnottex + +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. + +@findex export +If you want to export specific variables to a sub-@code{make}, use the +@code{export} directive, like this: + +@example +export @var{variable} @dots{} +@end example + +@noindent +@findex unexport +If you want to @emph{prevent} a variable from being exported, use the +@code{unexport} directive, like this: + +@example +unexport @var{variable} @dots{} +@end example + +@noindent +In both of these forms, the arguments to @code{export} and +@code{unexport} are expanded, and so could be variables or functions +which expand to a (list of) variable names to be (un)exported. + +As a convenience, you can define a variable and export it at the same +time by doing: + +@example +export @var{variable} = value +@end example + +@noindent +has the same result as: + +@example +@var{variable} = value +export @var{variable} +@end example + +@noindent +and + +@example +export @var{variable} := value +@end example + +@noindent +has the same result as: + +@example +@var{variable} := value +export @var{variable} +@end example + +Likewise, + +@example +export @var{variable} += value +@end example + +@noindent +is just like: + +@example +@var{variable} += value +export @var{variable} +@end example + +@noindent +@xref{Appending, ,Appending More Text to Variables}. + +You may notice that the @code{export} and @code{unexport} directives +work in @code{make} in the same way they work in the shell, @code{sh}. + +If you want all variables to be exported by default, you can use +@code{export} by itself: + +@example +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. + +@findex .EXPORT_ALL_VARIABLES +@cindex compatibility in exporting +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 +As a special feature, the variable @code{MAKELEVEL} is changed when it +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. + +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. + +@vindex MAKEFILES +You can use the variable @code{MAKEFILES} to cause all sub-@code{make} +commands to use additional makefiles. The value of @code{MAKEFILES} is +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}}. + +@node Options/Recursion, -w Option, Variables/Recursion, Recursion +@subsection Communicating Options to a Sub-@code{make} +@cindex options, and recursion +@cindex recursion, and options + +@vindex MAKEFLAGS +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}. + +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 +Likewise variables defined on the command line are passed to the +sub-@code{make} through @code{MAKEFLAGS}. Words in the value of +@code{MAKEFLAGS} that contain @samp{=}, @code{make} treats as variable +definitions just as if they appeared on the command line. +@xref{Overriding, ,Overriding Variables}. + +@cindex @code{-C}, and recursion +@cindex @code{-f}, and recursion +@cindex @code{-o}, and recursion +@cindex @code{-W}, and recursion +@cindex @code{--directory}, and recursion +@cindex @code{--file}, and recursion +@cindex @code{--old-file}, and recursion +@cindex @code{--assume-old}, and recursion +@cindex @code{--assume-new}, and recursion +@cindex @code{--new-file}, and recursion +@cindex recursion, and @code{-C} +@cindex recursion, and @code{-f} +@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. + +@cindex @code{-j}, and recursion +@cindex @code{--jobs}, and recursion +@cindex recursion, and @code{-j} +@cindex job slots, and recursion +The @samp{-j} option is a special case (@pxref{Parallel, ,Parallel Execution}). +If you set it to some numeric value @samp{N} and your operating system +supports it (most any UNIX system will; others typically won't), the +parent @code{make} and all the sub-@code{make}s will communicate to +ensure that there are only @samp{N} jobs running at the same time +between them all. Note that any job that is marked recursive +(@pxref{Instead of Execution, ,Instead of Executing Recipes}) +doesn't count against the total jobs (otherwise we could get @samp{N} +sub-@code{make}s running and have no slots left over for any real work!) + +If your operating system doesn't support the above communication, then +no @samp{-j} is added to @code{MAKEFLAGS}, so that sub-@code{make}s +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. + +If you do not want to pass the other flags down, you must change the +value of @code{MAKEFLAGS}, for example like this: + +@example +subsystem: + cd subdir && $(MAKE) MAKEFLAGS= +@end example + +@vindex MAKEOVERRIDES +The command line variable definitions really appear in the variable +@code{MAKEOVERRIDES}, and @code{MAKEFLAGS} contains a reference to this +variable. If you do want to pass flags down normally, but don't want to +pass down the command line variable definitions, you can reset +@code{MAKEOVERRIDES} to empty, like this: + +@example +MAKEOVERRIDES = +@end example + +@noindent +@cindex Arg list too long +@cindex E2BIG +This is not usually useful to do. However, some systems have a small +fixed limit on the size of the environment, and putting so much +information into the value of @code{MAKEFLAGS} can exceed it. If you +see the error message @samp{Arg list too long}, this may be the problem. +@findex .POSIX +@cindex POSIX +(For strict compliance with POSIX.2, changing @code{MAKEOVERRIDES} does +not affect @code{MAKEFLAGS} if the special target @samp{.POSIX} appears +in the makefile. You probably do not care about this.) + +@vindex MFLAGS +A similar variable @code{MFLAGS} exists also, for historical +compatibility. It has the same value as @code{MAKEFLAGS} except that it +does not contain the command line variable definitions, and it always +begins with a hyphen unless it is empty (@code{MAKEFLAGS} begins with a +hyphen only when it begins with an option that has no single-letter +version, such as @samp{--warn-undefined-variables}). @code{MFLAGS} was +traditionally used explicitly in the recursive @code{make} command, like +this: + +@example +subsystem: + cd subdir && $(MAKE) $(MFLAGS) +@end example + +@noindent +but now @code{MAKEFLAGS} makes this usage redundant. If you want your +makefiles to be compatible with old @code{make} programs, use this +technique; it will work fine with more modern @code{make} versions too. + +@cindex setting options from environment +@cindex options, setting from environment +@cindex setting options in makefiles +@cindex options, setting in makefiles +The @code{MAKEFLAGS} variable can also be useful if you want to have +certain options, such as @samp{-k} (@pxref{Options Summary, ,Summary of +Options}), set each time you run @code{make}. You simply put a value for +@code{MAKEFLAGS} in your environment. You can also set @code{MAKEFLAGS} in +a makefile, to specify additional flags that should also be in effect for +that makefile. (Note that you cannot use @code{MFLAGS} this way. That +variable is set only for compatibility; @code{make} does not interpret a +value you set for it in any way.) + +When @code{make} interprets the value of @code{MAKEFLAGS} (either from the +environment or from a makefile), it first prepends a hyphen if the value +does not already begin with one. Then it chops the value into words +separated by blanks, and parses these words as if they were options given +on the command line (except that @samp{-C}, @samp{-f}, @samp{-h}, +@samp{-o}, @samp{-W}, and their long-named versions are ignored; and there +is no error for an invalid option). + +If you do put @code{MAKEFLAGS} in your environment, you should be sure not +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. + +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 +@code{make}-specific flags to the @code{MAKEFLAGS} variable, you can +add them to the @code{GNUMAKEFLAGS} variable instead. This variable +is parsed just before @code{MAKEFLAGS}, in the same way as +@code{MAKEFLAGS}. When @code{make} constructs @code{MAKEFLAGS} to +pass to a recursive @code{make} it will include all flags, even those +taken from @code{GNUMAKEFLAGS}. As a result, after parsing +@code{GNUMAKEFLAGS} GNU @code{make} sets this variable to the empty +string to avoid duplicating flags during recursion. + +It's best to use @code{GNUMAKEFLAGS} only with flags which won't +materially change the behavior of your makefiles. If your makefiles +require GNU make anyway then simply use @code{MAKEFLAGS}. Flags such +as @samp{--no-print-directory} or @samp{--output-sync} may be +appropriate for @code{GNUMAKEFLAGS}. + +@node -w Option, , Options/Recursion, Recursion +@subsection The @samp{--print-directory} Option +@cindex directories, printing them +@cindex printing directories +@cindex recursion, and printing directories + +If you use several levels of recursive @code{make} invocations, the +@samp{-w} or @w{@samp{--print-directory}} option can make the output a +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: + +@example +make: Entering directory `/u/gnu/make'. +@end example + +@noindent +before doing anything else, and a line of the form: + +@example +make: Leaving directory `/u/gnu/make'. +@end example + +@noindent +when processing is completed. + +@cindex @code{-C}, and @code{-w} +@cindex @code{--directory}, and @code{--print-directory} +@cindex recursion, and @code{-w} +@cindex @code{-w}, and @code{-C} +@cindex @code{-w}, and recursion +@cindex @code{--print-directory}, and @code{--directory} +@cindex @code{--print-directory}, and recursion +@cindex @code{--no-print-directory} +@cindex @code{--print-directory}, disabling +@cindex @code{-w}, disabling +Normally, you do not need to specify this option because @samp{make} +does it for you: @samp{-w} is turned on automatically when you use the +@samp{-C} option, and in sub-@code{make}s. @code{make} will not +automatically turn on @samp{-w} if you also use @samp{-s}, which says to +be silent, or if you use @samp{--no-print-directory} to explicitly +disable it. + +@node Canned Recipes, Empty Recipes, Recursion, Recipes +@section Defining Canned Recipes +@cindex canned recipes +@cindex recipes, canned +@cindex sequences of commands +@cindex commands, sequences of + +When the same sequence of commands is useful in making various +targets, you can define it as a canned sequence with the @code{define} +directive, and refer to the canned sequence from the recipes for those +targets. The canned sequence is actually a variable, so the name must +not conflict with other variable names. + +Here is an example of defining a canned recipe: + +@example +define run-yacc = +yacc $(firstword $^) +mv y.tab.c $@@ +endef +@end example +@cindex @code{yacc} + +@noindent +Here @code{run-yacc} is the name of the variable being defined; +@code{endef} marks the end of the definition; the lines in between are the +commands. The @code{define} directive does not expand variable references +and function calls in the canned sequence; the @samp{$} characters, +parentheses, variable names, and so on, all become part of the value of the +variable you are defining. +@xref{Multi-Line, ,Defining Multi-Line Variables}, +for a complete explanation of @code{define}. + +The first command in this example runs Yacc on the first prerequisite of +whichever rule uses the canned sequence. The output file from Yacc is +always named @file{y.tab.c}. The second command moves the output to the +rule's target file name. + +To use the canned sequence, substitute the variable into the recipe of a +rule. You can substitute it like any other variable +(@pxref{Reference, ,Basics of Variable References}). +Because variables defined by @code{define} are recursively expanded +variables, all the variable references you wrote inside the @code{define} +are expanded now. For example: + +@example +foo.c : foo.y + $(run-yacc) +@end example + +@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{$@@}. + +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 +commands based on the file names involved +(@pxref{Implicit Rules, ,Using Implicit Rules}). + +@cindex @@, and @code{define} +@cindex -, and @code{define} +@cindex +, and @code{define} +In recipe execution, each line of a canned sequence is treated just as +if the line appeared on its own in the rule, preceded by a tab. In +particular, @code{make} invokes a separate sub-shell for each line. You +can use the special prefix characters that affect command lines +(@samp{@@}, @samp{-}, and @samp{+}) on each line of a canned sequence. +@xref{Recipes, ,Writing Recipes in Rules}. +For example, using this canned sequence: + +@example +define frobnicate = +@@echo "frobnicating target $@@" +frob-step-1 $< -o $@@-step-1 +frob-step-2 $@@-step-1 -o $@@ +endef +@end example + +@noindent +@code{make} will not echo the first line, the @code{echo} command. +But it @emph{will} echo the following two recipe lines. + +On the other hand, prefix characters on the recipe line that refers to +a canned sequence apply to every line in the sequence. So the rule: + +@example +frob.out: frob.in + @@$(frobnicate) +@end example + +@noindent +does not echo @emph{any} recipe lines. +(@xref{Echoing, ,Recipe Echoing}, for a full explanation of @samp{@@}.) + +@node Empty Recipes, , Canned Recipes, Recipes +@section Using Empty Recipes +@cindex empty recipes +@cindex recipes, empty + +It is sometimes useful to define recipes which do nothing. This is done +simply by giving a recipe that consists of nothing but whitespace. For +example: + +@example +target: ; +@end example + +@noindent +defines an empty recipe for @file{target}. You could also use a line +beginning with a recipe prefix character to define an empty recipe, +but this would be confusing because such a line looks empty. + +@findex .DEFAULT@r{, and empty recipes} +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}). + +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 +exist the empty recipe ensures that @code{make} won't complain that it +doesn't know how to build the target, and @code{make} will assume the +target is out of date. + +You may be inclined to define empty recipes for targets that are not +actual files, but only exist so that their prerequisites can be +remade. However, this is not the best way to do that, because the +prerequisites may not be remade properly if the target file actually +does exist. @xref{Phony Targets, ,Phony Targets}, for a better way to +do this. + +@node Using Variables, Conditionals, Recipes, Top +@chapter How to Use Variables +@cindex variable +@cindex value +@cindex recursive variable expansion +@cindex simple variable expansion + +A @dfn{variable} is a name defined in a makefile to represent a string +of text, called the variable's @dfn{value}. These values are +substituted by explicit request into targets, prerequisites, recipes, +and other parts of the makefile. (In some other versions of @code{make}, +variables are called @dfn{macros}.) +@cindex macro + +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. 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 +write output in, or anything else you can imagine. + +A variable name may be any sequence of characters not containing +@samp{:}, @samp{#}, @samp{=}, or whitespace. However, variable names +containing characters other than letters, numbers, and underscores +should be considered carefully, as in some shells they cannot be +passed through the environment to a sub-@code{make} +(@pxref{Variables/Recursion, ,Communicating Variables to a +Sub-@code{make}}). Variable names beginning with @samp{.} and an +uppercase letter may be given special meaning in future versions of +@code{make}. + +Variable names are case-sensitive. The names @samp{foo}, @samp{FOO}, +and @samp{Foo} all refer to different variables. + +It is traditional to use upper case letters in variable names, but we +recommend using lower case letters for variable names that serve internal +purposes in the makefile, and reserving upper case for parameters that +control implicit rules or for parameters that the user should override with +command options (@pxref{Overriding, ,Overriding Variables}). + +A few variables have names that are a single punctuation character or +just a few characters. These are the @dfn{automatic variables}, and +they have particular specialized uses. @xref{Automatic Variables}. + +@menu +* Reference:: How to use the value of a variable. +* Flavors:: Variables come in two flavors. +* Advanced:: Advanced features for referencing a variable. +* Values:: All the ways variables get their values. +* Setting:: How to set a variable in the makefile. +* Appending:: How to append more text to the old value + of a variable. +* Override Directive:: How to set a variable in the makefile even if + the user has set it with a command argument. +* Multi-Line:: An alternate way to set a variable + to a multi-line string. +* Undefine Directive:: How to undefine a variable so that it appears + as if it was never set. +* Environment:: Variable values can come from the environment. +* Target-specific:: Variable values can be defined on a per-target + basis. +* Pattern-specific:: Target-specific variable values can be applied + to a group of targets that match a pattern. +* Suppressing Inheritance:: Suppress inheritance of variables. +* Special Variables:: Variables with special meaning or behavior. +@end menu + +@node Reference, Flavors, Using Variables, Using Variables +@section Basics of Variable References +@cindex variables, how to reference +@cindex reference to variables +@cindex @code{$}, in variable reference +@cindex dollar sign (@code{$}), in variable reference + +To substitute a variable's value, write a dollar sign followed by the name +of the variable in parentheses or braces: either @samp{$(foo)} or +@samp{$@{foo@}} is a valid reference to the variable @code{foo}. This +special significance of @samp{$} is why you must write @samp{$$} to have +the effect of a single dollar sign in a file name or recipe. + +Variable references can be used in any context: targets, prerequisites, +recipes, most directives, and new variable values. Here is an +example of a common case, where a variable holds the names of all the +object files in a program: + +@example +@group +objects = program.o foo.o utils.o +program : $(objects) + cc -o program $(objects) + +$(objects) : defs.h +@end group +@end example + +Variable references work by strict textual substitution. Thus, the rule + +@example +@group +foo = c +prog.o : prog.$(foo) + $(foo)$(foo) -$(foo) prog.$(foo) +@end group +@end example + +@noindent +could be used to compile a C program @file{prog.c}. Since spaces before +the variable value are ignored in variable assignments, the value of +@code{foo} is precisely @samp{c}. (Don't actually write your makefiles +this way!) + +A dollar sign followed by a character other than a dollar sign, +open-parenthesis or open-brace treats that single character as the +variable name. Thus, you could reference the variable @code{x} with +@samp{$x}. However, this practice can lead to confusion (e.g., +@samp{$foo} refers to the variable @code{f} followed by the string +@code{oo}) so we recommend using parentheses or braces around all +variables, even single-letter variables, unless omitting them gives +significant readability improvements. One place where readability is +often improved is automatic variables (@pxref{Automatic Variables}). + +@node Flavors, Advanced, Reference, Using Variables +@section The Two Flavors of Variables +@cindex flavors of variables +@cindex recursive variable expansion +@cindex variables, flavors +@cindex recursively expanded variables +@cindex variables, recursively 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{=} +(@pxref{Setting, ,Setting Variables}) or by the @code{define} directive +(@pxref{Multi-Line, ,Defining Multi-Line Variables}). The value you specify +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}. + +For example, + +@example +foo = $(bar) +bar = $(ugh) +ugh = Huh? + +all:;echo $(foo) +@end example + +@noindent +will echo @samp{Huh?}: @samp{$(foo)} expands to @samp{$(bar)} which +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. +An advantage (most would say) is that: + +@example +CFLAGS = $(include_dirs) -O +include_dirs = -Ifoo -Ibar +@end example + +@noindent +will do what was intended: when @samp{CFLAGS} is expanded in a recipe, +it will expand to @samp{-Ifoo -Ibar -O}. A major disadvantage is that you +cannot append something on the end of a variable, as in + +@example +CFLAGS = $(CFLAGS) -O +@end example + +@noindent +because it will cause an infinite loop in the variable expansion. +(Actually @code{make} detects the infinite loop and reports an error.) +@cindex loops in variable expansion +@cindex variables, loops in expansion + +Another disadvantage is that any functions +(@pxref{Functions, ,Functions for Transforming Text}) +referenced in the definition will be executed every time the variable is +expanded. This makes @code{make} run slower; worse, it causes the +@code{wildcard} and @code{shell} functions to give unpredictable results +because you cannot easily control when they are called, or even how many +times. + +@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 +@cindex variables, simply expanded +@cindex := +@cindex ::= +@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{::=} is added to +the POSIX standard for POSIX Issue 8). + +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 + +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 +also shows use of the variable @code{MAKELEVEL}, which is changed +when it is passed down from level to level. +(@xref{Variables/Recursion, , Communicating Variables to a +Sub-@code{make}}, for information about @code{MAKELEVEL}.) + +@vindex MAKELEVEL +@vindex MAKE +@example +@group +ifeq (0,$@{MAKELEVEL@}) +whoami := $(shell whoami) +host-type := $(shell arch) +MAKE := $@{MAKE@} host-type=$@{host-type@} whoami=$@{whoami@} +endif +@end group +@end example + +@noindent +An advantage of this use of @samp{:=} is that a typical +`descend into a directory' recipe then looks like this: + +@example +@group +$@{subdirs@}: + $@{MAKE@} -C $@@ all +@end group +@end example + +Simply expanded variables generally make complicated makefile programming +more predictable because they work like variables in most programming +languages. They allow you to redefine a variable using its own value (or +its value processed in some way by one of the expansion functions) and to +use the expansion functions much more efficiently +(@pxref{Functions, ,Functions for Transforming Text}). + +@cindex spaces, in variable values +@cindex whitespace, in variable values +@cindex variables, spaces in values +You can also use them to introduce controlled leading whitespace into +variable values. Leading whitespace characters are discarded from your +input before substitution of variable references and function calls; +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 +Here the value of the variable @code{space} is precisely one space. The +comment @w{@samp{# end of the line}} is included here just for clarity. +Since trailing space characters are @emph{not} stripped from variable +values, just a space at the end of the line would have the same effect +(but be rather hard to read). If you put whitespace at the end of a +variable value, it is a good idea to put a comment like that at the end +of the line to make your intent clear. Conversely, if you do @emph{not} +want any whitespace characters at the end of your variable value, you +must remember not to put a random comment on the end of the line after +some whitespace, such as this: + +@example +dir := /foo/bar # directory to put the frobs in +@end example + +@noindent +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 ?= +There is another assignment operator for variables, @samp{?=}. This +is called a conditional variable assignment operator, because it only +has an effect if the variable is not yet defined. This statement: + +@example +FOO ?= bar +@end example + +@noindent +is exactly equivalent to this +(@pxref{Origin Function, ,The @code{origin} Function}): + +@example +ifeq ($(origin FOO), undefined) + FOO = bar +endif +@end example + +Note that a variable set to an empty value is still defined, so +@samp{?=} will not set that variable. + +@node Advanced, Values, Flavors, Using Variables +@section Advanced Features for Reference to Variables +@cindex reference to variables + +This section describes some advanced features you can use to reference +variables in more flexible ways. + +@menu +* Substitution Refs:: Referencing a variable with + substitutions on the value. +* Computed Names:: Computing the name of the variable to refer to. +@end menu + +@node Substitution Refs, Computed Names, Advanced, Advanced +@subsection Substitution References +@cindex modified variable reference +@cindex substitution variable reference +@cindex variables, modified reference +@cindex variables, substitution reference + +@cindex variables, substituting suffix in +@cindex suffix, substituting in variables +A @dfn{substitution reference} substitutes the value of a variable with +alterations that you specify. It has the form +@samp{$(@var{var}:@var{a}=@var{b})} (or +@samp{$@{@var{var}:@var{a}=@var{b}@}}) and its meaning is to take the value +of the variable @var{var}, replace every @var{a} at the end of a word with +@var{b} in that value, and substitute the resulting string. + +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: + +@example +foo := a.o b.o l.a c.o +bar := $(foo:.o=.c) +@end example + +@noindent +sets @samp{bar} to @samp{a.c b.c l.a c.c}. @xref{Setting, ,Setting Variables}. + +A substitution reference is shorthand for the @code{patsubst} +expansion function (@pxref{Text Functions, ,Functions for String Substitution and Analysis}): +@samp{$(@var{var}:@var{a}=@var{b})} is equivalent to +@samp{$(patsubst %@var{a},%@var{b},@var{var})}. We provide +substitution references as well as @code{patsubst} for compatibility +with other implementations of @code{make}. + +@findex patsubst +Another type of substitution reference lets you use the full power of +the @code{patsubst} function. It has the same form +@samp{$(@var{var}:@var{a}=@var{b})} described above, except that now +@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. For example: + +@example +@group +foo := a.o b.o l.a c.o +bar := $(foo:%.o=%.c) +@end group +@end example + +@noindent +sets @samp{bar} to @samp{a.c b.c l.a c.c}. + +@node Computed Names, , Substitution Refs, Advanced +@subsection Computed Variable Names +@cindex nested variable reference +@cindex computed variable name +@cindex variables, computed names +@cindex variables, nested references +@cindex variables, @samp{$} in name +@cindex @code{$}, in variable name +@cindex dollar sign (@code{$}), in variable name + +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 +reference}. For example, + +@example +x = y +y = z +a := $($(x)) +@end example + +@noindent +defines @code{a} as @samp{z}: the @samp{$(x)} inside @samp{$($(x))} expands +to @samp{y}, so @samp{$($(x))} expands to @samp{$(y)} which in turn expands +to @samp{z}. Here the name of the variable to reference is not stated +explicitly; it is computed by expansion of @samp{$(x)}. The reference +@samp{$(x)} here is nested within the outer variable reference. + +The previous example shows two levels of nesting, but any number of levels +is possible. For example, here are three levels: + +@example +x = y +y = z +z = u +a := $($($(x))) +@end example + +@noindent +Here the innermost @samp{$(x)} expands to @samp{y}, so @samp{$($(x))} +expands to @samp{$(y)} which in turn expands to @samp{z}; now we have +@samp{$(z)}, which becomes @samp{u}. + +References to recursively-expanded variables within a variable name are +re-expanded in the usual fashion. For example: + +@example +x = $(y) +y = z +z = Hello +a := $($(x)) +@end example + +@noindent +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 +(@pxref{Text Functions, ,Functions for String Substitution and Analysis}): + +@example +@group +x = variable1 +variable2 := Hello +y = $(subst 1,2,$(x)) +z = y +a := $($($(z))) +@end group +@end example + +@noindent +eventually defines @code{a} as @samp{Hello}. It is doubtful that anyone +would ever want to write a nested reference as convoluted as this one, but +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}. + +A computed variable name need not consist entirely of a single variable +reference. It can contain several variable references, as well as some +invariant text. For example, + +@example +@group +a_dirs := dira dirb +1_dirs := dir1 dir2 +@end group + +@group +a_files := filea fileb +1_files := file1 file2 +@end group + +@group +ifeq "$(use_a)" "yes" +a1 := a +else +a1 := 1 +endif +@end group + +@group +ifeq "$(use_dirs)" "yes" +df := dirs +else +df := files +endif + +dirs := $($(a1)_$(df)) +@end group +@end example + +@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}. + +Computed variable names can also be used in substitution references: + +@example +@group +a_objects := a.o b.o c.o +1_objects := 1.o 2.o 3.o + +sources := $($(a1)_objects:.o=.c) +@end group +@end example + +@noindent +defines @code{sources} as either @samp{a.c b.c c.c} or @samp{1.c 2.c 3.c}, +depending on the value of @code{a1}. + +The only restriction on this sort of use of nested variable references +is that they cannot specify part of the name of a function to be called. +This is because the test for a recognized function name is done before +the expansion of nested references. For example, + +@example +@group +ifdef do_sort +func := sort +else +func := strip +endif +@end group + +@group +bar := a d b g q c +@end group + +@group +foo := $($(func) $(bar)) +@end group +@end example + +@noindent +attempts to give @samp{foo} the value of the variable @samp{sort a d b g +q c} or @samp{strip a d b g q c}, rather than giving @samp{a d b g q c} +as the argument to either the @code{sort} or the @code{strip} function. +This restriction could be removed in the future if that change is shown +to be a good idea. + +You can also use computed variable names in the left-hand side of a +variable assignment, or in a @code{define} directive, as in: + +@example +dir = foo +$(dir)_sources := $(wildcard $(dir)/*.c) +define $(dir)_print = +lpr $($(dir)_sources) +endef +@end example + +@noindent +This example defines the variables @samp{dir}, @samp{foo_sources}, and +@samp{foo_print}. + +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. + +@node Values, Setting, Advanced, Using Variables +@section How Variables Get Their Values +@cindex variables, how they get their values +@cindex value, how a variable gets it + +Variables can get values in several different ways: + +@itemize @bullet +@item +You can specify an overriding value when you run @code{make}. +@xref{Overriding, ,Overriding Variables}. + +@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}). + +@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. +@xref{Environment, ,Variables from the Environment}. + +@item +Several @dfn{automatic} variables are given new values for each rule. +Each of these has a single conventional use. +@xref{Automatic Variables}. + +@item +Several variables have constant initial values. +@xref{Implicit Variables, ,Variables Used by Implicit Rules}. +@end itemize + +@node Setting, Appending, Values, Using Variables +@section Setting Variables +@cindex setting variables +@cindex variables, setting +@cindex = +@cindex := +@cindex ::= +@cindex :::= +@cindex ?= +@cindex != + +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} 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. 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. + +There is no limit on the length of the value of a variable except the +amount of memory on the computer. You can split the value of a +variable into multiple physical lines for readability +(@pxref{Splitting Lines, ,Splitting Long Lines}). + +Most variable names are considered to have the empty string as a value if +you have never set them. Several variables have built-in initial values +that are not empty, but you can set them in the usual ways +(@pxref{Implicit Variables, ,Variables Used by Implicit Rules}). +Several special variables are set +automatically to a new value for each rule; these are called the +@dfn{automatic} variables (@pxref{Automatic Variables}). + +If you'd like a variable to be set to a value only if it's not already +set, then you can use the shorthand operator @samp{?=} instead of +@samp{=}. These two settings of the variable @samp{FOO} are identical +(@pxref{Origin Function, ,The @code{origin} Function}): + +@example +FOO ?= bar +@end example + +@noindent +and + +@example +ifeq ($(origin FOO), undefined) +FOO = bar +endif +@end example + +The shell assignment operator @samp{!=} can be used to execute a +shell script and set a variable to its output. This operator first +evaluates the right-hand side, then passes that result to the shell +for execution. If the result of the execution ends in a newline, that +one newline is removed; all other newlines are replaced by spaces. +The resulting string is then placed into the named +recursively-expanded variable. For example: + +@example +hash != printf '\043' +file_list != find . -name '*.c' +@end example + +If the result of the execution could produce a @code{$}, and you don't +intend what follows that to be interpreted as a make variable or +function reference, then you must replace every @code{$} with +@code{$$} as part of the execution. Alternatively, you can set a +simply expanded variable to the result of running a program using the +@code{shell} function call. @xref{Shell Function, , The @code{shell} +Function}. For example: + +@example +hash := $(shell printf '\043') +var := $(shell find . -name "*.c") +@end example + +As with the @code{shell} function, the exit status of the just-invoked +shell script is stored in the @code{.SHELLSTATUS} variable. + + +@node Appending, Override Directive, Setting, Using Variables +@section Appending More Text to Variables +@cindex += +@cindex appending to variables +@cindex variables, appending to + +Often it is useful to add more text to the value of a variable already defined. +You do this with a line containing @samp{+=}, like this: + +@example +objects += another.o +@end example + +@noindent +This takes the value of the variable @code{objects}, and adds the text +@samp{another.o} to it (preceded by a single space, if it has a value +already). Thus: + +@example +objects = main.o foo.o bar.o utils.o +objects += another.o +@end example + +@noindent +sets @code{objects} to @samp{main.o foo.o bar.o utils.o another.o}. + +Using @samp{+=} is similar to: + +@example +objects = main.o foo.o bar.o utils.o +objects := $(objects) another.o +@end example + +@noindent +but differs in ways that become important when you use more complex values. + +When the variable in question has not been defined before, @samp{+=} +acts just like normal @samp{=}: it defines a recursively-expanded +variable. However, when there @emph{is} a previous definition, exactly +what @samp{+=} does depends on what flavor of variable you defined +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, + +@example +variable := value +variable += more +@end example + +@noindent +is exactly equivalent to: + +@noindent +@example +variable := value +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{=} or @samp{:::=}, +@code{make} appends the un-expanded text to the existing value, whatever it +is. This means that + +@example +@group +variable = value +variable += more +@end group +@end example + +@noindent +is roughly equivalent to: + +@example +@group +temp = value +variable = $(temp) more +@end group +@end example + +@noindent +except that of course it never defines a variable called @code{temp}. +The importance of this comes when the variable's old value contains +variable references. Take this common example: + +@example +CFLAGS = $(includes) -O +@dots{} +CFLAGS += -pg # enable profiling +@end example + +@noindent +The first line defines the @code{CFLAGS} variable with a reference to another +variable, @code{includes}. (@code{CFLAGS} is used by the rules for C +compilation; @pxref{Catalogue of Rules, ,Catalogue of Built-In Rules}.) +Using @samp{=} for the definition makes @code{CFLAGS} a recursively-expanded +variable, meaning @w{@samp{$(includes) -O}} is @emph{not} expanded when +@code{make} processes the definition of @code{CFLAGS}. Thus, @code{includes} +need not be defined yet for its value to take effect. It only has to be +defined before any reference to @code{CFLAGS}. If we tried to append to the +value of @code{CFLAGS} without using @samp{+=}, we might do it like this: + +@example +CFLAGS := $(CFLAGS) -pg # enable profiling +@end example + +@noindent +This is pretty close, but not quite what we want. Using @samp{:=} +redefines @code{CFLAGS} as a simply-expanded variable; this means +@code{make} expands the text @w{@samp{$(CFLAGS) -pg}} before setting the +variable. If @code{includes} is not yet defined, we get @w{@samp{ -O +-pg}}, and a later definition of @code{includes} will have no effect. +Conversely, by using @samp{+=} we set @code{CFLAGS} to the +@emph{unexpanded} value @w{@samp{$(includes) -O -pg}}. Thus we preserve +the reference to @code{includes}, so if that variable gets defined at +any later point, a reference like @samp{$(CFLAGS)} still uses its +value. + +@node Override Directive, Multi-Line, Appending, Using Variables +@section The @code{override} Directive +@findex override +@cindex overriding with @code{override} +@cindex variables, overriding + +If a variable has been set with a command argument +(@pxref{Overriding, ,Overriding Variables}), +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: + +@example +override @var{variable} = @var{value} +@end example + +@noindent +or + +@example +override @var{variable} := @var{value} +@end example + +To append more text to a variable defined on the command line, use: + +@example +override @var{variable} += @var{more text} +@end example + +@noindent +@xref{Appending, ,Appending More Text to Variables}. + +Variable assignments marked with the @code{override} flag have a +higher priority than all other assignments, except another +@code{override}. Subsequent assignments or appends to this variable +which are not marked @code{override} will be ignored. + +The @code{override} directive was not invented for escalation in the war +between makefiles and command arguments. It was invented so you can alter +and add to values that the user specifies with command arguments. + +For example, suppose you always want the @samp{-g} switch when you run the +C compiler, but you would like to allow the user to specify the other +switches with a command argument just as usual. You could use this +@code{override} directive: + +@example +override CFLAGS += -g +@end example + +You can also use @code{override} directives with @code{define} directives. +This is done as you might expect: + +@example +override define foo = +bar +endef +@end example + +@noindent +@iftex +See the next section for information about @code{define}. +@end iftex +@ifnottex +@xref{Multi-Line, ,Defining Multi-Line Variables}. +@end ifnottex + +@node Multi-Line, Undefine Directive, Override Directive, Using Variables +@section Defining Multi-Line Variables +@findex define +@findex endef +@cindex multi-line variable definition +@cindex variables, multi-line +@cindex verbatim variable definition +@cindex defining variables verbatim +@cindex variables, defining verbatim + +Another way to set the value of a variable is to use the @code{define} +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}). + +The @code{define} directive is followed on the same line by the name +of the variable being defined and an (optional) assignment operator, +and nothing more. The value to give the variable appears on the +following lines. The end of the value is marked by a line containing +just the word @code{endef}. + +Aside from this difference in syntax, @code{define} works just like +any other variable definition. The variable name may contain function +and variable references, which are expanded when the directive is read +to find the actual variable name to use. + +The final newline before the @code{endef} is not included in the +value; if you want your value to contain a trailing newline you must +include a blank line. For example in order to define a variable that +contains a newline character you must use @emph{two} empty lines, not one: + +@example +define newline + + +endef +@end example + +You may omit the variable assignment operator if you prefer. If +omitted, @code{make} assumes it to be @samp{=} and creates a +recursively-expanded variable (@pxref{Flavors, ,The Two Flavors of Variables}). +When using a @samp{+=} operator, the value is appended to the previous +value as with any other append operation: with a single space +separating the old and new values. + +You may nest @code{define} directives: @code{make} will keep track of +nested directives and report an error if they are not all properly +closed with @code{endef}. Note that lines beginning with the recipe +prefix character are considered part of a recipe, so any @code{define} +or @code{endef} strings appearing on such a line will not be +considered @code{make} directives. + +@example +define two-lines +echo foo +echo $(bar) +endef +@end example + +@need 800 +When used in a recipe, the previous example is functionally equivalent +to this: + +@example +two-lines = echo foo; echo $(bar) +@end example + +@noindent +since two commands separated by semicolon behave much like two separate +shell commands. However, note that using two separate lines means +@code{make} will invoke the shell twice, running an independent sub-shell +for each line. @xref{Execution, ,Recipe Execution}. + +If you want variable definitions made with @code{define} to take +precedence over command-line variable definitions, you can use the +@code{override} directive together with @code{define}: + +@example +override define two-lines = +foo +$(bar) +endef +@end example + +@noindent +@xref{Override Directive, ,The @code{override} Directive}. + +@node Undefine Directive, Environment, Multi-Line, Using Variables +@section Undefining Variables +@findex undefine +@cindex undefining variable + +If you want to clear a variable, setting its value to empty is usually +sufficient. Expanding such a variable will yield the same result (empty +string) regardless of whether it was set or not. However, if you are +using the @code{flavor} (@pxref{Flavor Function}) and +@code{origin} (@pxref{Origin Function}) functions, there is a difference +between a variable that was never set and a variable with an empty value. +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 + +undefine foo +undefine bar + +$(info $(origin foo)) +$(info $(flavor bar)) +@end group +@end example + +This example will print ``undefined'' for both variables. + +If you want to undefine a command-line variable definition, you can use +the @code{override} directive together with @code{undefine}, similar to +how this is done for variable definitions: + +@example +override undefine CFLAGS +@end example + +@node Environment, Target-specific, Undefine Directive, Using Variables +@section Variables from the Environment + +@cindex variables, environment +@cindex environment +Variables in @code{make} can come from the environment in which +@code{make} is run. Every environment variable that @code{make} sees +when it starts up is transformed into a @code{make} variable with the +same name and value. However, an explicit assignment in the makefile, +or with a command argument, overrides the environment. (If the +@samp{-e} flag is specified, then values from the environment override +assignments in the makefile. @xref{Options Summary, ,Summary of +Options}. But this is not recommended practice.) + +Thus, by setting the variable @code{CFLAGS} in your environment, you can +cause all C compilations in most makefiles to use the compiler switches you +prefer. This is safe for variables with standard or conventional meanings +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, 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 +set up outside their control, since this would cause different users to get +different results from the same makefile. This is against the whole +purpose of most makefiles. + +@cindex SHELL, import from environment +Such problems would be especially likely with the variable +@code{SHELL}, which is normally present in the environment to specify +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}. + +@node Target-specific, Pattern-specific, Environment, Using Variables +@section Target-specific Variable Values +@cindex target-specific variables +@cindex variables, target-specific + +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). 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}). + +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 +of a target's recipe (and in other target-specific assignments). + +Set a target-specific variable value like this: + +@example +@var{target} @dots{} : @var{variable-assignment} +@end example + +Target-specific variable assignments can be prefixed with any or all of the +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{::=}), 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 +environment if the @samp{-e} option is in force) will take precedence. +Specifying the @code{override} directive will allow the target-specific +variable value to be preferred. + +There is one more special feature of target-specific variables: when +you define a target-specific variable that variable value is also in +effect for all prerequisites of this target, and all their +prerequisites, etc.@: (unless those prerequisites override that variable +with their own target-specific variable value). So, for example, a +statement like this: + +@example +prog : CFLAGS = -g +prog : prog.o foo.o bar.o +@end example + +@noindent +will set @code{CFLAGS} to @samp{-g} in the recipe for @file{prog}, but +it will also set @code{CFLAGS} to @samp{-g} in the recipes that create +@file{prog.o}, @file{foo.o}, and @file{bar.o}, and any recipes which +create their prerequisites. + +Be aware that a given prerequisite will only be built once per +invocation of make, at most. If the same file is a prerequisite of +multiple targets, and each of those targets has a different value for +the same target-specific variable, then the first target to be built +will cause that prerequisite to be built and the prerequisite will +inherit the target-specific value from the first target. It will +ignore the target-specific values from any other targets. + +@node Pattern-specific, Suppressing Inheritance, Target-specific, Using Variables +@section Pattern-specific Variable Values +@cindex pattern-specific variables +@cindex variables, pattern-specific + +In addition to target-specific variable values +(@pxref{Target-specific, ,Target-specific Variable Values}), GNU +@code{make} supports pattern-specific variable values. In this form, +the variable is defined for any target that matches the pattern +specified. + +Set a pattern-specific variable value like this: + +@example +@var{pattern} @dots{} : @var{variable-assignment} +@end example +where @var{pattern} is a %-pattern. As with target-specific variable +values, multiple @var{pattern} values create a pattern-specific variable +value for each pattern individually. The @var{variable-assignment} can +be any valid form of assignment. Any command line variable setting will +take precedence, unless @code{override} is specified. + +For example: + +@example +%.o : CFLAGS = -O +@end example + +@noindent +will assign @code{CFLAGS} the value of @samp{-O} for all targets +matching the pattern @code{%.o}. + +If a target matches more than one pattern, the matching pattern-specific +variables with longer stems are interpreted first. This results in more +specific variables taking precedence over the more generic ones, for +example: + +@example +%.o: %.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@@ + +lib/%.o: CFLAGS := -fPIC -g +%.o: CFLAGS := -g + +all: foo.o lib/bar.o +@end example + +In this example the first definition of the @code{CFLAGS} variable +will be used to update @file{lib/bar.o} even though the second one +also applies to this target. Pattern-specific variables which result +in the same stem length are considered in the order in which they +were defined in the makefile. + +Pattern-specific variables are searched after any target-specific +variables defined explicitly for that target, and before target-specific +variables defined for the parent target. + +@node Suppressing Inheritance, Special Variables, Pattern-specific, Using Variables +@section Suppressing Inheritance +@findex private +@cindex suppressing inheritance +@cindex inheritance, suppressing + +As described in previous sections, @code{make} variables are inherited +by prerequisites. This capability allows you to modify the behavior +of a prerequisite based on which targets caused it to be rebuilt. For +example, you might set a target-specific variable on a @code{debug} +target, then running @samp{make debug} will cause that variable to be +inherited by all prerequisites of @code{debug}, while just running +@samp{make all} (for example) would not have that assignment. + +Sometimes, however, you may not want a variable to be inherited. For +these situations, @code{make} provides the @code{private} modifier. +Although this modifier can be used with any variable assignment, it +makes the most sense with target- and pattern-specific variables. Any +variable marked @code{private} will be visible to its local target but +will not be inherited by prerequisites of that target. A global +variable marked @code{private} will be visible in the global scope but +will not be inherited by any target, and hence will not be visible +in any recipe. + +As an example, consider this makefile: +@example +EXTRA_CFLAGS = + +prog: private EXTRA_CFLAGS = -L/usr/local/lib +prog: a.o b.o +@end example + +Due to the @code{private} modifier, @code{a.o} and @code{b.o} will not +inherit the @code{EXTRA_CFLAGS} variable assignment from the +@code{prog} target. + +@node Special Variables, , Suppressing Inheritance, Using Variables +@comment node-name, next, previous, up +@section Other Special Variables +@cindex makefiles, and special variables +@cindex special variables + +GNU @code{make} supports some variables that have special properties. + +@table @code + +@vindex MAKEFILE_LIST @r{(list of parsed makefiles)} +@cindex makefiles, and @code{MAKEFILE_LIST} variable +@cindex including (@code{MAKEFILE_LIST} variable) +@item MAKEFILE_LIST +Contains the name of each makefile that is parsed by @code{make}, in +the order in which it was parsed. The name is appended just +before @code{make} begins to parse the makefile. Thus, if the first +thing a makefile does is examine the last word in this variable, it +will be the name of the current makefile. Once the current makefile +has used @code{include}, however, the last word will be the +just-included makefile. + +If a makefile named @code{Makefile} has this content: + +@example +@group +name1 := $(lastword $(MAKEFILE_LIST)) + +include inc.mk + +name2 := $(lastword $(MAKEFILE_LIST)) + +all: + @@echo name1 = $(name1) + @@echo name2 = $(name2) +@end group +@end example + +@noindent +then you would expect to see this output: + +@example +@group +name1 = Makefile +name2 = inc.mk +@end group +@end example + +@vindex .DEFAULT_GOAL @r{(define default goal)} +@item .DEFAULT_GOAL +Sets the default goal to be used if no targets were specified on the +command line (@pxref{Goals, , Arguments to Specify the Goals}). The +@code{.DEFAULT_GOAL} variable allows you to discover the current +default goal, restart the default goal selection algorithm by clearing +its value, or to explicitly set the default goal. The following +example illustrates these cases: + +@example +@group +# Query the default goal. +ifeq ($(.DEFAULT_GOAL),) + $(warning no default goal is set) +endif + +.PHONY: foo +foo: ; @@echo $@@ + +$(warning default goal is $(.DEFAULT_GOAL)) + +# Reset the default goal. +.DEFAULT_GOAL := + +.PHONY: bar +bar: ; @@echo $@@ + +$(warning default goal is $(.DEFAULT_GOAL)) + +# Set our own. +.DEFAULT_GOAL := foo +@end group +@end example + +This makefile prints: + +@example +@group +no default goal is set +default goal is foo +default goal is bar +foo +@end group +@end example + +Note that assigning more than one target name to @code{.DEFAULT_GOAL} is +invalid and will result in an error. + +@vindex MAKE_RESTARTS @r{(number of times @code{make} has restarted)} +@item MAKE_RESTARTS +This variable is set only if this instance of @code{make} has +restarted (@pxref{Remaking Makefiles, , How Makefiles Are Remade}): it +will contain the number of times this instance has restarted. Note +this is not the same as recursion (counted by the @code{MAKELEVEL} +variable). You should not set, modify, or export this variable. + +@vindex MAKE_TERMOUT @r{(whether stdout is a terminal)} +@vindex MAKE_TERMERR @r{(whether stderr is a terminal)} +@item MAKE_TERMOUT +@itemx MAKE_TERMERR +When @code{make} starts it will check whether stdout and stderr will +show their output on a terminal. If so, it will set +@code{MAKE_TERMOUT} and @code{MAKE_TERMERR}, respectively, to the name +of the terminal device (or @code{true} if this cannot be determined). +If set these variables will be marked for export. These variables +will not be changed by @code{make} and they will not be modified if +already set. + +These values can be used (particularly in combination with output +synchronization (@pxref{Parallel Output, ,Output During Parallel +Execution}) to determine whether @code{make} itself is writing to a +terminal; they can be tested to decide whether to force recipe +commands to generate colorized output for example. + +If you invoke a sub-@code{make} and redirect its stdout or stderr it +is your responsibility to reset or unexport these variables as well, +if your makefiles rely on them. + +@vindex .RECIPEPREFIX @r{(change the recipe prefix character)} +@item .RECIPEPREFIX +The first character of the value of this variable is used as the +character make assumes is introducing a recipe line. If the variable +is empty (as it is by default) that character is the standard tab +character. For example, this is a valid makefile: + +@example +@group +.RECIPEPREFIX = > +all: +> @@echo Hello, world +@end group +@end example + +The value of @code{.RECIPEPREFIX} can be changed multiple times; once set +it stays in effect for all rules parsed until it is modified. + +@vindex .VARIABLES @r{(list of variables)} +@item .VARIABLES +Expands to a list of the @emph{names} of all global variables defined +so far. This includes variables which have empty values, as well as +built-in variables (@pxref{Implicit Variables, , Variables Used by +Implicit Rules}), but does not include any variables which are only +defined in a target-specific context. Note that any value you assign +to this variable will be ignored; it will always return its special +value. + +@c @vindex .TARGETS @r{(list of targets)} +@c @item .TARGETS +@c The second special variable is @code{.TARGETS}. When expanded, the +@c value consists of a list of all targets defined in all makefiles read +@c up until that point. Note it's not enough for a file to be simply +@c mentioned in the makefile to be listed in this variable, even if it +@c would match an implicit rule and become an ``implicit target''. The +@c file must appear as a target, on the left-hand side of a ``:'', to be +@c considered a target for the purposes of this variable. + +@vindex .FEATURES @r{(list of supported features)} +@item .FEATURES +Expands to a list of special features supported by this version of +@code{make}. Possible values include, but are not limited to: + +@table @samp + +@item archives +Supports @code{ar} (archive) files using special file name syntax. +@xref{Archives, ,Using @code{make} to Update Archive Files}. + +@item check-symlink +Supports the @code{-L} (@code{--check-symlink-times}) flag. +@xref{Options Summary, ,Summary of Options}. + +@item else-if +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}. + +@item order-only +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 +Patterns Match}. + +@item target-specific +Supports target-specific and pattern-specific variable assignments. +@xref{Target-specific, ,Target-specific Variable Values}. + +@item undefine +Supports the @code{undefine} directive. @xref{Undefine Directive}. +@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 +Each word in this variable is a new prerequisite which is added to +targets for which it is set. These prerequisites differ from normal +prerequisites in that they do not appear in any of the automatic +variables (@pxref{Automatic Variables}). This allows prerequisites to +be defined which do not impact the recipe. + +Consider a rule to link a program: + +@example +myprog: myprog.o file1.o file2.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@@ $^ $(LDLIBS) +@end example + +Now suppose you want to enhance this makefile to ensure that updates +to the compiler cause the program to be re-linked. You can add the +compiler as a prerequisite, but you must ensure that it's not passed +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) +@end example + +Then consider having multiple extra prerequisites: they would all have +to be filtered out. Using @code{.EXTRA_PREREQS} and target-specific +variables provides a simpler solution: + +@example +myprog: myprog.o file1.o file2.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@@ $^ $(LDLIBS) +myprog: .EXTRA_PREREQS = $(CC) +@end example + +This feature can also be useful if you want to add prerequisites to a +makefile you cannot easily modify: you can create a new file such as +@file{extra.mk}: + +@example +myprog: .EXTRA_PREREQS = $(CC) +@end example + +then invoke @code{make -f extra.mk -f Makefile}. + +Setting @code{.EXTRA_PREREQS} globally will cause those prerequisites +to be added to all targets (which did not themselves override it with +a target-specific value). Note @code{make} is smart enough not to add +a prerequisite listed in @code{.EXTRA_PREREQS} as a prerequisite to +itself. + +@end table + +@node Conditionals, Functions, Using Variables, Top +@chapter Conditional Parts of Makefiles + +@cindex conditionals +A @dfn{conditional} directive causes part of a makefile to be obeyed +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. + +@menu +* Conditional Example:: Example of a conditional +* Conditional Syntax:: The syntax of conditionals. +* Testing Flags:: Conditionals that test flags. +@end menu + +@node Conditional Example, Conditional Syntax, Conditionals, Conditionals +@section Example of a Conditional + +The following example of a conditional tells @code{make} to use one +set of libraries if the @code{CC} variable is @samp{gcc}, and a +different set of libraries otherwise. It works by controlling which +of two recipe lines will be used for the rule. The result is that +@samp{CC=gcc} as an argument to @code{make} changes not only which +compiler is used but also which libraries are linked. + +@example +libs_for_gcc = -lgnu +normal_libs = + +foo: $(objects) +ifeq ($(CC),gcc) + $(CC) -o foo $(objects) $(libs_for_gcc) +else + $(CC) -o foo $(objects) $(normal_libs) +endif +@end example + +This conditional uses three directives: one @code{ifeq}, one @code{else} +and one @code{endif}. + +The @code{ifeq} directive begins the conditional, and specifies the +condition. It contains two arguments, separated by a comma and surrounded +by parentheses. Variable substitution is performed on both arguments and +then they are compared. The lines of the makefile following the +@code{ifeq} are obeyed if the two arguments match; otherwise they are +ignored. + +The @code{else} directive causes the following lines to be obeyed if the +previous conditional failed. In the example above, this means that the +second alternative linking command is used whenever the first alternative +is not used. It is optional to have an @code{else} in a conditional. + +The @code{endif} directive ends the conditional. Every conditional must +end with an @code{endif}. Unconditional makefile text follows. + +As this example illustrates, conditionals work at the textual level: +the lines of the conditional are treated as part of the makefile, or +ignored, according to the condition. This is why the larger syntactic +units of the makefile, such as rules, may cross the beginning or the +end of the conditional. + +When the variable @code{CC} has the value @samp{gcc}, the above example has +this effect: + +@example +foo: $(objects) + $(CC) -o foo $(objects) $(libs_for_gcc) +@end example + +@noindent +When the variable @code{CC} has any other value, the effect is this: + +@example +foo: $(objects) + $(CC) -o foo $(objects) $(normal_libs) +@end example + +Equivalent results can be obtained in another way by conditionalizing a +variable assignment and then using the variable unconditionally: + +@example +libs_for_gcc = -lgnu +normal_libs = + +ifeq ($(CC),gcc) + libs=$(libs_for_gcc) +else + libs=$(normal_libs) +endif + +foo: $(objects) + $(CC) -o foo $(objects) $(libs) +@end example + +@node Conditional Syntax, Testing Flags, Conditional Example, Conditionals +@section Syntax of Conditionals +@findex ifdef +@findex ifeq +@findex ifndef +@findex ifneq +@findex else +@findex endif + +The syntax of a simple conditional with no @code{else} is as follows: + +@example +@var{conditional-directive} +@var{text-if-true} +endif +@end example + +@noindent +The @var{text-if-true} may be any lines of text, to be considered as part +of the makefile if the condition is true. If the condition is false, no +text is used instead. + +The syntax of a complex conditional is as follows: + +@example +@var{conditional-directive} +@var{text-if-true} +else +@var{text-if-false} +endif +@end example + +or: + +@example +@var{conditional-directive-one} +@var{text-if-one-is-true} +else @var{conditional-directive-two} +@var{text-if-two-is-true} +else +@var{text-if-one-and-two-are-false} +endif +@end example + +@noindent +There can be as many ``@code{else} @var{conditional-directive}'' +clauses as necessary. Once a given condition is true, +@var{text-if-true} is used and no other clause is used; if no +condition is true then @var{text-if-false} is used. The +@var{text-if-true} and @var{text-if-false} can be any number of lines +of text. + +The syntax of the @var{conditional-directive} is the same whether the +conditional is simple or complex; after an @code{else} or not. There +are four different directives that test different conditions. Here is +a table of them: + +@table @code +@item ifeq (@var{arg1}, @var{arg2}) +@itemx ifeq '@var{arg1}' '@var{arg2}' +@itemx ifeq "@var{arg1}" "@var{arg2}" +@itemx ifeq "@var{arg1}" '@var{arg2}' +@itemx ifeq '@var{arg1}' "@var{arg2}" +Expand all variable references in @var{arg1} and @var{arg2} and +compare them. If they are identical, the @var{text-if-true} is +effective; otherwise, the @var{text-if-false}, if any, is effective. + +Often you want to test if a variable has a non-empty value. When the +value results from complex expansions of variables and functions, +expansions you would consider empty may actually contain whitespace +characters and thus are not seen as empty. However, you can use the +@code{strip} function (@pxref{Text Functions}) to avoid interpreting +whitespace as a non-empty value. For example: + +@example +@group +ifeq ($(strip $(foo)),) +@var{text-if-empty} +endif +@end group +@end example + +@noindent +will evaluate @var{text-if-empty} even if the expansion of +@code{$(foo)} contains whitespace characters. + +@item ifneq (@var{arg1}, @var{arg2}) +@itemx ifneq '@var{arg1}' '@var{arg2}' +@itemx ifneq "@var{arg1}" "@var{arg2}" +@itemx ifneq "@var{arg1}" '@var{arg2}' +@itemx ifneq '@var{arg1}' "@var{arg2}" +Expand all variable references in @var{arg1} and @var{arg2} and +compare them. If they are different, the @var{text-if-true} is +effective; otherwise, the @var{text-if-false}, if any, is effective. + +@item ifdef @var{variable-name} +The @code{ifdef} form takes the @emph{name} of a variable as its +argument, not a reference to a variable. If the value of that +variable has a non-empty value, the @var{text-if-true} is effective; +otherwise, the @var{text-if-false}, if any, is effective. Variables +that have never been defined have an empty value. The text +@var{variable-name} is expanded, so it could be a variable or function +that expands to the name of a variable. For example: + +@example +bar = true +foo = bar +ifdef $(foo) +frobozz = yes +endif +@end example + +The variable reference @code{$(foo)} is expanded, yielding @code{bar}, +which is considered to be the name of a variable. The variable +@code{bar} is not expanded, but its value is examined to determine if +it is non-empty. + +Note that @code{ifdef} only tests whether a variable has a value. It +does not expand the variable to see if that value is nonempty. +Consequently, tests using @code{ifdef} return true for all definitions +except those like @code{foo =}. To test for an empty value, use +@w{@code{ifeq ($(foo),)}}. For example, + +@example +bar = +foo = $(bar) +ifdef foo +frobozz = yes +else +frobozz = no +endif +@end example + +@noindent +sets @samp{frobozz} to @samp{yes}, while: + +@example +foo = +ifdef foo +frobozz = yes +else +frobozz = no +endif +@end example + +@noindent +sets @samp{frobozz} to @samp{no}. + +@item ifndef @var{variable-name} +If the variable @var{variable-name} has an empty value, the +@var{text-if-true} is effective; otherwise, the @var{text-if-false}, +if any, is effective. The rules for expansion and testing of +@var{variable-name} are identical to the @code{ifdef} directive. +@end table + +Extra spaces are allowed and ignored at the beginning of the +conditional directive line, but a tab is not allowed. (If the line +begins with a tab, it will be considered part of a recipe for a rule.) +Aside from this, extra spaces or tabs may be inserted with no effect +anywhere except within the directive name or within an argument. A +comment starting with @samp{#} may appear at the end of the line. + +The other two directives that play a part in a conditional are @code{else} +and @code{endif}. Each of these directives is written as one word, with no +arguments. Extra spaces are allowed and ignored at the beginning of the +line, and spaces or tabs at the end. A comment starting with @samp{#} may +appear at the end of the line. + +Conditionals affect which lines of the makefile @code{make} uses. If +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. + +@code{make} evaluates conditionals when it reads a makefile. +Consequently, you cannot use automatic variables in the tests of +conditionals because they are not defined until recipes are run +(@pxref{Automatic Variables}). + +To prevent intolerable confusion, it is not permitted to start a +conditional in one makefile and end it in another. However, you may +write an @code{include} directive within a conditional, provided you do +not attempt to terminate the conditional inside the included file. + +@node Testing Flags, , Conditional Syntax, Conditionals +@section Conditionals that Test Flags + +You can write a conditional that tests @code{make} command flags such as +@samp{-t} by using the variable @code{MAKEFLAGS} together with the +@code{findstring} function +(@pxref{Text Functions, , Functions for String Substitution and Analysis}). +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 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,$(word 1,-$(MAKEFLAGS)))) + +touch archive.a + +ranlib -t archive.a +else + ranlib archive.a +endif +@end example + +@noindent +The @samp{+} prefix marks those recipe lines as ``recursive'' so that +they will be executed despite use of the @samp{-t} flag. +@xref{Recursion, ,Recursive Use of @code{make}}. + +@node Functions, Running, Conditionals, Top +@chapter Functions for Transforming Text +@cindex functions + +@dfn{Functions} allow you to do text processing in the makefile to +compute the files to operate on or the commands to use in recipes. +You use a function in a @dfn{function call}, where you give the name +of the function and some text (the @dfn{arguments}) for the function +to operate on. The result of the function's processing is substituted +into the makefile at the point of the call, just as a variable might +be substituted. + +@menu +* Syntax of Functions:: How to write a function call. +* 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. +* Value Function:: Return the un-expanded value of a variable. +* Eval Function:: Evaluate the arguments as makefile syntax. +* Origin Function:: Find where a variable got its value. +* Flavor Function:: Find out the flavor of a variable. +* Make Control Functions:: Functions that control how make runs. +* Shell Function:: Substitute the output of a shell command. +* Guile Function:: Use GNU Guile embedded scripting language. +@end menu + +@node Syntax of Functions, Text Functions, Functions, Functions +@section Function Call Syntax +@cindex @code{$}, in function call +@cindex dollar sign (@code{$}), in function call +@cindex arguments of functions +@cindex functions, syntax of + +A function call resembles a variable reference. It can appear +anywhere a variable reference can appear, and it is expanded using the +same rules as variable references. A function call looks like this: + +@example +$(@var{function} @var{arguments}) +@end example + +@noindent +or like this: + +@example +$@{@var{function} @var{arguments}@} +@end example + +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. + +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 +comma:= , +empty:= +space:= $(empty) $(empty) +foo:= a b c +bar:= $(subst $(space),$(comma),$(foo)) +# @r{bar is now `a,b,c'.} +@end group +@end example + +@noindent +Here the @code{subst} function replaces each space with a comma, through +the value of @code{foo}, and substitutes the result. + +@node Text Functions, File Name Functions, Syntax of Functions, Functions +@section Functions for String Substitution and Analysis +@cindex functions, for text + +Here are some functions that operate on strings: + +@table @code +@item $(subst @var{from},@var{to},@var{text}) +@findex subst +Performs a textual replacement on the text @var{text}: each occurrence +of @var{from} is replaced by @var{to}. The result is substituted for +the function call. For example, + +@example +$(subst ee,EE,feet on the street) +@end example + +produces the value @samp{fEEt on the strEEt}. + +@item $(patsubst @var{pattern},@var{replacement},@var{text}) +@findex patsubst +Finds whitespace-separated words in @var{text} that match +@var{pattern} and replaces them with @var{replacement}. Here +@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}. 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) +@cindex @code{\} (backslash), to quote @code{%} +@cindex backslash (@code{\}), to quote @code{%} +@cindex quoting @code{%}, in @code{patsubst} +@samp{%} characters in @code{patsubst} function invocations can be +quoted 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 file names or has a stem +substituted into it. 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. + +Whitespace between words is folded into single space characters; +leading and trailing whitespace is discarded. + +For example, + +@example +$(patsubst %.c,%.o,x.c.c bar.c) +@end example + +@noindent +produces the value @samp{x.c.o bar.o}. + +Substitution references (@pxref{Substitution Refs, ,Substitution +References}) are a simpler way to get the effect of the @code{patsubst} +function: + +@example +$(@var{var}:@var{pattern}=@var{replacement}) +@end example + +@noindent +is equivalent to + +@example +$(patsubst @var{pattern},@var{replacement},$(@var{var})) +@end example + +The second shorthand simplifies one of the most common uses of +@code{patsubst}: replacing the suffix at the end of file names. + +@example +$(@var{var}:@var{suffix}=@var{replacement}) +@end example + +@noindent +is equivalent to + +@example +$(patsubst %@var{suffix},%@var{replacement},$(@var{var})) +@end example + +@noindent +For example, you might have a list of object files: + +@example +objects = foo.o bar.o baz.o +@end example + +@noindent +To get the list of corresponding source files, you could simply write: + +@example +$(objects:.o=.c) +@end example + +@noindent +instead of using the general form: + +@example +$(patsubst %.o,%.c,$(objects)) +@end example + +@item $(strip @var{string}) +@cindex stripping whitespace +@cindex whitespace, stripping +@cindex spaces, stripping +@findex strip +Removes leading and trailing whitespace from @var{string} and replaces +each internal sequence of one or more whitespace characters with a +single space. Thus, @samp{$(strip a b c )} results in @w{@samp{a b c}}. + +The function @code{strip} can be very useful when used in conjunction +with conditionals. When comparing something with the empty string +@samp{} using @code{ifeq} or @code{ifneq}, you usually want a string of +just whitespace to match the empty string (@pxref{Conditionals}). + +Thus, the following may fail to have the desired results: + +@example +.PHONY: all +ifneq "$(needs_made)" "" +all: $(needs_made) +else +all:;@@echo 'Nothing to make!' +endif +@end example + +@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. + +@item $(findstring @var{find},@var{in}) +@findex findstring +@cindex searching for strings +@cindex finding strings +@cindex strings, searching for +Searches @var{in} for an occurrence of @var{find}. If it occurs, the +value is @var{find}; otherwise, the value is empty. You can use this +function in a conditional to test for the presence of a specific +substring in a given string. Thus, the two examples, + +@example +$(findstring a,a b c) +$(findstring a,b c) +@end example + +@noindent +produce the values @samp{a} and @samp{} (the empty string), +respectively. @xref{Testing Flags}, for a practical application of +@code{findstring}. + +@need 750 +@findex filter +@cindex filtering words +@cindex words, filtering +@item $(filter @var{pattern}@dots{},@var{text}) +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. + +The @code{filter} function can be used to separate out different types +of strings (such as file names) in a variable. For example: + +@example +sources := foo.c bar.c baz.s ugh.h +foo: $(sources) + cc $(filter %.c %.s,$(sources)) -o foo +@end example + +@noindent +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. + +@item $(filter-out @var{pattern}@dots{},@var{text}) +@findex filter-out +@cindex filtering out words +@cindex words, filtering out +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. + +For example, given: + +@example +@group +objects=main1.o foo.o main2.o bar.o +mains=main1.o main2.o +@end group +@end example + +@noindent +the following generates a list which contains all the object files not +in @samp{mains}: + +@example +$(filter-out $(mains),$(objects)) +@end example + +@need 1500 +@findex sort +@cindex sorting words +@item $(sort @var{list}) +Sorts the words of @var{list} in lexical order, removing duplicate +words. The output is a list of words separated by single spaces. +Thus, + +@example +$(sort foo bar lose) +@end example + +@noindent +returns the value @samp{bar foo lose}. + +@cindex removing duplicate words +@cindex duplicate words, removing +@cindex words, removing duplicates +Incidentally, since @code{sort} removes duplicate words, you can use +it for this purpose even if you don't care about the sort order. + +@item $(word @var{n},@var{text}) +@findex word +@cindex word, selecting a +@cindex selecting a word +Returns the @var{n}th word of @var{text}. The legitimate values of +@var{n} start from 1. If @var{n} is bigger than the number of words +in @var{text}, the value is empty. For example, + +@example +$(word 2, foo bar baz) +@end example + +@noindent +returns @samp{bar}. + +@item $(wordlist @var{s},@var{e},@var{text}) +@findex wordlist +@cindex words, selecting lists of +@cindex selecting word lists +Returns the list of words in @var{text} starting with word @var{s} and +ending with word @var{e} (inclusive). The legitimate values of @var{s} +start from 1; @var{e} may start from 0. If @var{s} is bigger than the +number of words in @var{text}, the value is empty. If @var{e} is +bigger than the number of words in @var{text}, words up to the end of +@var{text} are returned. If @var{s} is greater than @var{e}, nothing +is returned. For example, + +@example +$(wordlist 2, 3, foo bar baz) +@end example + +@noindent +returns @samp{bar baz}. + +@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})}}. + +@item $(firstword @var{names}@dots{}) +@findex firstword +@cindex words, extracting first +The argument @var{names} is regarded as a series of names, separated +by whitespace. The value is the first name in the series. The rest +of the names are ignored. + +For example, + +@example +$(firstword foo bar) +@end example + +@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. + + +@item $(lastword @var{names}@dots{}) +@findex lastword +@cindex words, extracting last +The argument @var{names} is regarded as a series of names, separated +by whitespace. The value is the last name in the series. + +For example, + +@example +$(lastword foo bar) +@end example + +@noindent +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. +@end table + + +Here is a realistic example of the use of @code{subst} and +@code{patsubst}. Suppose that a makefile uses the @code{VPATH} variable +to specify a list of directories that @code{make} should search for +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. + +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 +change the colons to spaces: + +@example +$(subst :, ,$(VPATH)) +@end example + +@noindent +This produces @samp{src ../headers}. Then @code{patsubst} is used to turn +each directory name into a @samp{-I} flag. These can be added to the +value of the variable @code{CFLAGS}, which is passed automatically to the C +compiler, like this: + +@example +override CFLAGS += $(patsubst %,-I%,$(subst :, ,$(VPATH))) +@end example + +@noindent +The effect is to append the text @samp{-Isrc -I../headers} to the +previously given value of @code{CFLAGS}. The @code{override} directive is +used so that the new value is assigned even if the previous value of +@code{CFLAGS} was specified with a command argument (@pxref{Override +Directive, , The @code{override} Directive}). + +@node File Name Functions, Conditional Functions, Text Functions, Functions +@section Functions for File Names +@cindex functions, for file names +@cindex file name functions + +Several of the built-in expansion functions relate specifically to +taking apart file names or lists of file names. + +Each of the following functions performs a specific transformation on a +file name. The argument of the function is regarded as a series of file +names, separated by whitespace. (Leading and trailing whitespace is +ignored.) Each file name in the series is transformed in the same way and +the results are concatenated with single spaces between them. + +@table @code +@item $(dir @var{names}@dots{}) +@findex dir +@cindex directory part +@cindex file name, directory part +Extracts the directory-part of each file name in @var{names}. The +directory-part of the file name is everything up through (and +including) the last slash in it. If the file name contains no slash, +the directory part is the string @samp{./}. For example, + +@example +$(dir src/foo.c hacks) +@end example + +@noindent +produces the result @samp{src/ ./}. + +@item $(notdir @var{names}@dots{}) +@findex notdir +@cindex file name, nondirectory part +@cindex nondirectory part +Extracts all but the directory-part of each file name in @var{names}. +If the file name contains no slash, it is left unchanged. Otherwise, +everything through the last slash is removed from it. + +A file name that ends with a slash becomes an empty string. This is +unfortunate, because it means that the result does not always have the +same number of whitespace-separated file names as the argument had; +but we do not see any other valid alternative. + +For example, + +@example +$(notdir src/foo.c hacks) +@end example + +@noindent +produces the result @samp{foo.c hacks}. + +@item $(suffix @var{names}@dots{}) +@findex suffix +@cindex suffix, function to find +@cindex file name suffix +Extracts the suffix of each file name in @var{names}. If the file name +contains a period, the suffix is everything starting with the last +period. Otherwise, the suffix is the empty string. This frequently +means that the result will be empty when @var{names} is not, and if +@var{names} contains multiple file names, the result may contain fewer +file names. + +For example, + +@example +$(suffix src/foo.c src-1.0/bar.c hacks) +@end example + +@noindent +produces the result @samp{.c .c}. + +@item $(basename @var{names}@dots{}) +@findex basename +@cindex basename +@cindex file name, basename of +Extracts all but the suffix of each file name in @var{names}. If the +file name contains a period, the basename is everything starting up to +(and not including) the last period. Periods in the directory part are +ignored. If there is no period, the basename is the entire file name. +For example, + +@example +$(basename src/foo.c src-1.0/bar hacks) +@end example + +@noindent +produces the result @samp{src/foo src-1.0/bar hacks}. + +@c plural convention with dots (be consistent) +@item $(addsuffix @var{suffix},@var{names}@dots{}) +@findex addsuffix +@cindex suffix, adding +@cindex file name suffix, adding +The argument @var{names} is regarded as a series of names, separated +by whitespace; @var{suffix} is used as a unit. The value of +@var{suffix} is appended to the end of each individual name and the +resulting larger names are concatenated with single spaces between +them. For example, + +@example +$(addsuffix .c,foo bar) +@end example + +@noindent +produces the result @samp{foo.c bar.c}. + +@item $(addprefix @var{prefix},@var{names}@dots{}) +@findex addprefix +@cindex prefix, adding +@cindex file name prefix, adding +The argument @var{names} is regarded as a series of names, separated +by whitespace; @var{prefix} is used as a unit. The value of +@var{prefix} is prepended to the front of each individual name and the +resulting larger names are concatenated with single spaces between +them. For example, + +@example +$(addprefix src/,foo bar) +@end example + +@noindent +produces the result @samp{src/foo src/bar}. + +@item $(join @var{list1},@var{list2}) +@findex join +@cindex joining lists of words +@cindex words, joining lists +Concatenates the two arguments word by word: the two first words (one +from each argument) concatenated form the first word of the result, the +two second words form the second word of the result, and so on. So the +@var{n}th word of the result comes from the @var{n}th word of each +argument. If one argument has more words that the other, the extra +words are copied unchanged into the result. + +For example, @samp{$(join a b,.c .o)} produces @samp{a.c b.o}. + +Whitespace between the words in the lists is not preserved; it is +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. + +@item $(wildcard @var{pattern}) +@findex wildcard +@cindex wildcard, function +The argument @var{pattern} is a file name pattern, typically containing +wildcard characters (as in shell file name patterns). The result of +@code{wildcard} is a space-separated list of the names of existing files +that match the pattern. +@xref{Wildcards, ,Using Wildcard Characters in File Names}. + +@item $(realpath @var{names}@dots{}) +@findex realpath +@cindex realpath +@cindex file name, realpath of +For each file name in @var{names} return the canonical absolute name. +A canonical name does not contain any @code{.} or @code{..} components, +nor any repeated path separators (@code{/}) or symlinks. In case of a +failure the empty string is returned. Consult the @code{realpath(3)} +documentation for a list of possible failure causes. + +@item $(abspath @var{names}@dots{}) +@findex abspath +@cindex abspath +@cindex file name, abspath of +For each file name in @var{names} return an absolute name that does +not contain any @code{.} or @code{..} components, nor any repeated path +separators (@code{/}). Note that, in contrast to @code{realpath} +function, @code{abspath} does not resolve symlinks and does not require +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, Let Function, File Name Functions, Functions +@section Functions for Conditionals +@findex if +@cindex conditional expansion +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. + +@table @code +@item $(if @var{condition},@var{then-part}[,@var{else-part}]) +@findex if +The @code{if} function provides support for conditional expansion in a +functional context (as opposed to the GNU @code{make} makefile +conditionals such as @code{ifeq} (@pxref{Conditional Syntax, ,Syntax of +Conditionals})). + +The first argument, @var{condition}, first has all preceding and +trailing whitespace stripped, then is expanded. If it expands to any +non-empty string, then the condition is considered to be true. If it +expands to an empty string, the condition is considered to be false. + +If the condition is true then the second argument, @var{then-part}, is +evaluated and this is used as the result of the evaluation of the entire +@code{if} function. + +If the condition is false then the third argument, @var{else-part}, is +evaluated and this is the result of the @code{if} function. If there is +no third argument, the @code{if} function evaluates to nothing (the +empty string). + +Note that only one of the @var{then-part} or the @var{else-part} will be +evaluated, never both. Thus, either can contain side-effects (such as +@code{shell} function calls, etc.) + +@item $(or @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]]) +@findex or +The @code{or} function provides a ``short-circuiting'' OR operation. +Each argument is expanded, in order. If an argument expands to a +non-empty string the processing stops and the result of the expansion +is that string. If, after all arguments are expanded, all of them are +false (empty), then the result of the expansion is the empty string. + +@item $(and @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]]) +@findex and +The @code{and} function provides a ``short-circuiting'' AND operation. +Each argument is expanded, in order. If an argument expands to an +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 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 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: + +@example +$(foreach @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. Then for each word of the expanded +value of @var{list}, the variable named by the expanded value of @var{var} +is set to that word, and @var{text} is expanded. Presumably @var{text} +contains references to that variable, so its expansion will be different +each time. + +The result is that @var{text} is expanded as many times as there are +whitespace-separated words in @var{list}. The multiple expansions of +@var{text} are concatenated, with spaces between them, to make the result +of @code{foreach}. + +This simple example sets the variable @samp{files} to the list of all files +in the directories in the list @samp{dirs}: + +@example +dirs := a b c d +files := $(foreach dir,$(dirs),$(wildcard $(dir)/*)) +@end example + +Here @var{text} is @samp{$(wildcard $(dir)/*)}. The first repetition +finds the value @samp{a} for @code{dir}, so it produces the same result +as @samp{$(wildcard a/*)}; the second repetition produces the result +of @samp{$(wildcard b/*)}; and the third, that of @samp{$(wildcard c/*)}. + +This example has the same result (except for setting @samp{dirs}) as +the following example: + +@example +files := $(wildcard a/* b/* c/* d/*) +@end example + +When @var{text} is complicated, you can improve readability by giving it +a name, with an additional variable: + +@example +find_files = $(wildcard $(dir)/*) +dirs := a b c d +files := $(foreach dir,$(dirs),$(find_files)) +@end example + +@noindent +Here we use the variable @code{find_files} this way. We use plain @samp{=} +to define a recursively-expanding variable, so that its value contains an +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}. + +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 +are probably not what you intended. For example, + +@smallexample +files := $(foreach Esta-escrito-en-espanol!,b c ch,$(find_files)) +@end smallexample + +@noindent +might be useful if the value of @code{find_files} references the variable +whose name is @samp{Esta-escrito-en-espanol!} (es un nombre bastante largo, +no?), but it is more likely to be a mistake. + +@node File Function, Call Function, Foreach Function, Functions +@section The @code{file} Function +@findex file +@cindex writing to a file +@cindex file, writing to +@cindex reading from a file +@cindex file, reading from + +The @code{file} function allows the makefile to write to or read from +a file. Two modes of writing are supported: overwrite, where the text +is written to the beginning of the file and any existing content is +lost, and append, where the text is written to the end of the file, +preserving the existing content. In both cases the file is created if +it does not exist. It is a fatal error if the file cannot be opened +for writing, or if the write operation fails. The @code{file} +function expands to the empty string when writing to a file. + +When reading from a file, the @code{file} function expands to the +verbatim contents of the file, except that the final newline (if there +is one) will be stripped. Attempting to read from a non-existent file +expands to the empty string. + +The syntax of the @code{file} function is: + +@example +$(file @var{op} @var{filename}[,@var{text}]) +@end example + +When the @code{file} function is evaluated all its arguments are +expanded first, then the file indicated by @var{filename} will be +opened in the mode described by @var{op}. + +The operator @var{op} can be @code{>} to indicate the file will be +overwritten with new content, @code{>>} to indicate the current +contents of the file will be appended to, or @code{<} to indicate the +contents of the file will be read in. The @var{filename} specifies +the file to be written to or read from. There may optionally be +whitespace between the operator and the file name. + +When reading files, it is an error to provide a @var{text} value. + +When writing files, @var{text} will be written to the file. If +@var{text} does not already end in a newline a final newline will be +written (even if @var{text} is the empty string). If the @var{text} +argument is not given at all, nothing will be written. + +For example, the @code{file} function can be useful if your build +system has a limited command line size and your recipe runs a command +that can accept arguments from a file as well. Many commands use the +convention that an argument prefixed with an @code{@@} specifies a +file containing more arguments. Then you might write your recipe in +this way: + +@example +@group +program: $(OBJECTS) + $(file >$@@.in,$^) + $(CMD) $(CMDFLAGS) @@$@@.in + @@rm $@@.in +@end group +@end example + +If the command required each argument to be on a separate line of the +input file, you might write your recipe like this: + +@example +@group +program: $(OBJECTS) + $(file >$@@.in) $(foreach O,$^,$(file >>$@@.in,$O)) + $(CMD) $(CMDFLAGS) @@$@@.in + @@rm $@@.in +@end group +@end example + +@node Call Function, Value Function, File Function, Functions +@section The @code{call} Function +@findex call +@cindex functions, user defined +@cindex user defined functions + +The @code{call} function is unique in that it can be used to create new +parameterized functions. You can write a complex expression as the +value of a variable, then use @code{call} to expand it with different +values. + +The syntax of the @code{call} function is: + +@example +$(call @var{variable},@var{param},@var{param},@dots{}) +@end example + +When @code{make} expands this function, it assigns each @var{param} to +temporary variables @code{$(1)}, @code{$(2)}, etc. The variable +@code{$(0)} will contain @var{variable}. There is no maximum number of +parameter arguments. There is no minimum, either, but it doesn't make +sense to use @code{call} with no parameters. + +Then @var{variable} is expanded as a @code{make} variable in the context +of these temporary assignments. Thus, any reference to @code{$(1)} in +the value of @var{variable} will resolve to the first @var{param} in the +invocation of @code{call}. + +Note that @var{variable} is the @emph{name} of a variable, not a +@emph{reference} to that variable. Therefore you would not normally use +a @samp{$} or parentheses when writing it. (You can, however, use a +variable reference in the name if you want the name not to be a +constant.) + +If @var{variable} is the name of a built-in function, the built-in function +is always invoked (even if a @code{make} variable by that name also +exists). + +The @code{call} function expands the @var{param} arguments before +assigning them to temporary variables. This means that @var{variable} +values containing references to built-in functions that have special +expansion rules, like @code{foreach} or @code{if}, may not work as you +expect. + +Some examples may make this clearer. + +This macro simply reverses its arguments: + +@smallexample +reverse = $(2) $(1) + +foo = $(call reverse,a,b) +@end smallexample + +@noindent +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}: + +@smallexample +pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH))))) + +LS := $(call pathsearch,ls) +@end smallexample + +@noindent +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 +higher-level @code{call}. For example, here is an implementation of a +@dfn{map} function: + +@smallexample +map = $(foreach a,$(2),$(call $(1),$(a))) +@end smallexample + +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 @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 +second and subsequent arguments is kept; this can cause strange +effects. It's generally safest to remove all extraneous whitespace when +providing parameters to @code{call}. + +@node Value Function, Eval Function, Call Function, Functions +@comment node-name, next, previous, up +@section The @code{value} Function +@findex value +@cindex variables, unexpanded value + +The @code{value} function provides a way for you to use the value of a +variable @emph{without} having it expanded. Please note that this +does not undo expansions which have already occurred; for example if +you create a simply expanded variable its value is expanded during the +definition; in that case the @code{value} function will return the +same result as using the variable directly. + +The syntax of the @code{value} function is: + +@example +$(value @var{variable}) +@end example + +Note that @var{variable} is the @emph{name} of a variable, not a +@emph{reference} to that variable. Therefore you would not normally +use a @samp{$} or parentheses when writing it. (You can, however, use +a variable reference in the name if you want the name not to be a +constant.) + +The result of this function is a string containing the value of +@var{variable}, without any expansion occurring. For example, in this +makefile: + +@example +@group +FOO = $PATH + +all: + @@echo $(FOO) + @@echo $(value FOO) +@end group +@end example + +@noindent +The first output line would be @code{ATH}, since the ``$P'' would be +expanded as a @code{make} variable, while the second output line would +be the current value of your @code{$PATH} environment variable, since +the @code{value} function avoided the expansion. + +The @code{value} function is most often used in conjunction with the +@code{eval} function (@pxref{Eval Function}). + +@node Eval Function, Origin Function, Value Function, Functions +@comment node-name, next, previous, up +@section The @code{eval} Function +@findex eval +@cindex evaluating makefile syntax +@cindex makefile syntax, evaluating + +The @code{eval} function is very special: it allows you to define new +makefile constructs that are not constant; which are the result of +evaluating other variables and functions. The argument to the +@code{eval} function is expanded, then the results of that expansion +are parsed as makefile syntax. The expanded results can define new +@code{make} variables, targets, implicit or explicit rules, etc. + +The result of the @code{eval} function is always the empty string; +thus, it can be placed virtually anywhere in a makefile without +causing syntax errors. + +It's important to realize that the @code{eval} argument is expanded +@emph{twice}; first by the @code{eval} function, then the results of +that expansion are expanded again when they are parsed as makefile +syntax. This means you may need to provide extra levels of escaping +for ``$'' characters when using @code{eval}. The @code{value} +function (@pxref{Value Function}) can sometimes be useful in these +situations, to circumvent unwanted expansions. + +Here is an example of how @code{eval} can be used; this example +combines a number of concepts and other functions. Although it might +seem overly complex to use @code{eval} in this example, rather than +just writing out the rules, consider two things: first, the template +definition (in @code{PROGRAM_template}) could need to be much more +complex than it is here; and second, you might put the complex, +``generic'' part of this example into another makefile, then include +it in all the individual makefiles. Now your individual makefiles are +quite straightforward. + +@example +@group +PROGRAMS = server client + +server_OBJS = server.o server_priv.o server_access.o +server_LIBS = priv protocol + +client_OBJS = client.o client_api.o client_mem.o +client_LIBS = protocol + +# Everything after this is generic + +.PHONY: all +all: $(PROGRAMS) + +define PROGRAM_template = + $(1): $$($(1)_OBJS) $$($(1)_LIBS:%=-l%) + ALL_OBJS += $$($(1)_OBJS) +endef + +$(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog)))) + +$(PROGRAMS): + $(LINK.o) $^ $(LDLIBS) -o $@@ + +clean: + rm -f $(ALL_OBJS) $(PROGRAMS) +@end group +@end example + +@node Origin Function, Flavor Function, Eval Function, Functions +@section The @code{origin} Function +@findex origin +@cindex variables, origin of +@cindex origin of variable + +The @code{origin} function is unlike most other functions in that it does +not operate on the values of variables; it tells you something @emph{about} +a variable. Specifically, it tells you where it came from. + +The syntax of the @code{origin} function is: + +@example +$(origin @var{variable}) +@end example + +Note that @var{variable} is the @emph{name} of a variable to inquire about, +not a @emph{reference} to that variable. Therefore you would not normally +use a @samp{$} or parentheses when writing it. (You can, however, use a +variable reference in the name if you want the name not to be a constant.) + +The result of this function is a string telling you how the variable +@var{variable} was defined: + +@table @samp +@item undefined + +if @var{variable} was never defined. + +@item default + +if @var{variable} has a default definition, as is usual with @code{CC} +and so on. @xref{Implicit Variables, ,Variables Used by Implicit Rules}. +Note that if you have redefined a default variable, the @code{origin} +function will return the origin of the later definition. + +@item environment + +if @var{variable} was inherited from the environment provided to +@code{make}. + +@item environment override + +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}). + +@item file + +if @var{variable} was defined in a makefile. + +@item command line + +if @var{variable} was defined on the command line. + +@item override + +if @var{variable} was defined with an @code{override} directive in a +makefile (@pxref{Override Directive, ,The @code{override} Directive}). + +@item automatic + +if @var{variable} is an automatic variable defined for the execution +of the recipe for each rule (@pxref{Automatic Variables}). +@end table + +This information is primarily useful (other than for your curiosity) to +determine if you want to believe the value of a variable. For example, +suppose you have a makefile @file{foo} that includes another makefile +@file{bar}. You want a variable @code{bletch} to be defined in @file{bar} +if you run the command @w{@samp{make -f bar}}, even if the environment contains +a definition of @code{bletch}. However, if @file{foo} defined +@code{bletch} before including @file{bar}, you do not want to override that +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: + +@example +@group +ifdef bletch +ifeq "$(origin bletch)" "environment" +bletch = barf, gag, etc. +endif +endif +@end group +@end example + +@noindent +If @code{bletch} has been defined from the environment, this will redefine +it. + +If you want to override a previous definition of @code{bletch} if it came +from the environment, even under @samp{-e}, you could instead write: + +@example +@group +ifneq "$(findstring environment,$(origin bletch))" "" +bletch = barf, gag, etc. +endif +@end group +@end example + +Here the redefinition takes place if @samp{$(origin bletch)} returns either +@samp{environment} or @samp{environment override}. +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@node Flavor Function, Make Control Functions, Origin Function, Functions +@section The @code{flavor} Function +@findex flavor +@cindex variables, flavor of +@cindex flavor of variable + +The @code{flavor} function, like the @code{origin} function, does not +operate on the values of variables but rather it tells you something +@emph{about} a variable. Specifically, it tells you the flavor of a +variable (@pxref{Flavors, ,The Two Flavors of Variables}). + +The syntax of the @code{flavor} function is: + +@example +$(flavor @var{variable}) +@end example + +Note that @var{variable} is the @emph{name} of a variable to inquire about, +not a @emph{reference} to that variable. Therefore you would not normally +use a @samp{$} or parentheses when writing it. (You can, however, use a +variable reference in the name if you want the name not to be a constant.) + +The result of this function is a string that identifies the flavor of the +variable @var{variable}: + +@table @samp +@item undefined + +if @var{variable} was never defined. + +@item recursive + +if @var{variable} is a recursively expanded variable. + +@item simple + +if @var{variable} is a simply expanded variable. + +@end table + +@node Make Control Functions, Shell Function, Flavor Function, Functions +@section Functions That Control Make +@cindex functions, for controlling make +@cindex controlling make + +These functions control the way make runs. Generally, they are used to +provide information to the user of the makefile or to cause make to stop +if some sort of environmental error is detected. + +@table @code +@item $(error @var{text}@dots{}) +@findex error +@cindex error, stopping on +@cindex stopping make +Generates a fatal error where the message is @var{text}. Note that +the error is generated whenever this function is evaluated. So, if +you put it inside a recipe or on the right side of a recursive +variable assignment, it won't be evaluated until later. The +@var{text} will be expanded before the error is generated. + +For example, + +@example +ifdef ERROR1 +$(error error is $(ERROR1)) +endif +@end example + +@noindent +will generate a fatal error during the read of the makefile if the +@code{make} variable @code{ERROR1} is defined. Or, + +@example +ERR = $(error found an error!) + +.PHONY: err +err: ; $(ERR) +@end example + +@noindent +will generate a fatal error while @code{make} is running, if the +@code{err} target is invoked. + +@item $(warning @var{text}@dots{}) +@findex warning +@cindex warnings, printing +@cindex printing user warnings +This function works similarly to the @code{error} function, above, +except that @code{make} doesn't exit. Instead, @var{text} is expanded +and the resulting message is displayed, but processing of the makefile +continues. + +The result of the expansion of this function is the empty string. + +@item $(info @var{text}@dots{}) +@findex info +@cindex printing messages +This function does nothing more than print its (expanded) argument(s) +to standard output. No makefile name or line number is added. The +result of the expansion of this function is the empty string. +@end table + +@node Shell Function, Guile Function, Make Control Functions, Functions +@section The @code{shell} Function +@findex shell +@cindex command expansion +@cindex backquotes +@cindex shell command, function for + +The @code{shell} function is unlike any other function other than the +@code{wildcard} function +(@pxref{Wildcard Function, ,The Function @code{wildcard}}) in that it +communicates with the world outside of @code{make}. + +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}). + +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 +used, its exit status is placed in the @code{.SHELLSTATUS} variable. + +Here are some examples of the use of the @code{shell} function: + +@example +contents := $(shell cat foo) +@end example + +@noindent +sets @code{contents} to the contents of the file @file{foo}, with a space +(rather than a newline) separating each line. + +@example +files := $(shell echo *.c) +@end example + +@noindent +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). + +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 +@findex guile +@cindex Guile + +If GNU @code{make} is built with support for GNU Guile as an embedded +extension language then the @code{guile} function will be available. +The @code{guile} function takes one argument which is first expanded +by @code{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 @code{guile} function in the makefile. +See @ref{Guile Integration, ,GNU Guile Integration} for details on +writing extensions to @code{make} in Guile. + +You can determine whether GNU Guile support is available by checking +the @code{.FEATURES} variable for the word @var{guile}. + +@node Running, Implicit Rules, Functions, Top +@chapter How to Run @code{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 +@code{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 @code{make}, you can do any of these +things and many others. + +@cindex exit status of make +The exit status of @code{make} is always one of three values: +@table @code +@item 0 +The exit status is zero if @code{make} is successful. +@item 2 +The exit status is two if @code{make} encounters any errors. +It will print messages describing the particular errors. +@item 1 +The exit status is one if you use the @samp{-q} flag and @code{make} +determines that some target is not already up to date. +@xref{Instead of Execution, ,Instead of Executing Recipes}. +@end table + +@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 @code{make} keeps its temporary files. +* Options Summary:: Summary of Options +@end menu + +@node Makefile Arguments, Goals, Running, Running +@section Arguments to Specify the Makefile +@cindex @code{--file} +@cindex @code{--makefile} +@cindex @code{-f} + +The way to specify the name of the makefile is with the @samp{-f} or +@samp{--file} option (@samp{--makefile} also works). For example, +@samp{-f altmake} says to use the file @file{altmake} as the makefile. + +If you use the @samp{-f} flag several times and follow each @samp{-f} +with an argument, all the specified files are used jointly as +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}). + +@node Goals, Instead of Execution, Makefile Arguments, Running +@section Arguments to Specify the Goals +@cindex goal, how to specify + +The @dfn{goals} are the targets that @code{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 @code{.DEFAULT_GOAL} variable +(@pxref{Special Variables, , Other Special Variables}). + +You can also specify a different goal or goals with command line +arguments to @code{make}. Use the name of the goal as an argument. +If you specify several goals, @code{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 @samp{-} or contains an @samp{=}, in which case it will be +parsed as a switch or variable definition, respectively). Even +targets not in the makefile may be specified, if @code{make} can find +implicit rules that say how to make them. + +@vindex MAKECMDGOALS +@code{Make} will set the special variable @code{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 @file{.d} files +during @code{clean} rules (@pxref{Automatic Prerequisites}), so +@code{make} won't create them only to immediately remove them +again: + +@example +@group +sources = foo.c bar.c + +ifeq (,$(filter clean,$(MAKECMDGOALS)) +include $(sources:.c=.d) +endif +@end group +@end example + +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: + +@example +.PHONY: all +all: size nm ld ar as +@end example + +If you are working on the program @code{size}, you might want to say +@w{@samp{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 (@pxref{Phony Targets}) or empty target (@pxref{Empty +Targets, ,Empty Target Files to Record Events}). Many makefiles contain +a phony target named @file{clean} which deletes everything except source +files. Naturally, this is done only if you request it explicitly with +@w{@samp{make clean}}. Following is a list of typical phony and empty +target names. @xref{Standard Targets}, for a detailed list of all the +standard target names which GNU software packages use. + +@table @file +@item all +@cindex @code{all} @r{(standard target)} +Make all the top-level targets the makefile knows about. + +@item clean +@cindex @code{clean} @r{(standard target)} +Delete all files that are normally created by running @code{make}. + +@item mostlyclean +@cindex @code{mostlyclean} @r{(standard target)} +Like @samp{clean}, but may refrain from deleting a few files that people +normally don't want to recompile. For example, the @samp{mostlyclean} +target for GCC does not delete @file{libgcc.a}, because recompiling it +is rarely necessary and takes a lot of time. + +@item distclean +@cindex @code{distclean} @r{(standard target)} +@itemx realclean +@cindex @code{realclean} @r{(standard target)} +@itemx clobber +@cindex @code{clobber} @r{(standard target)} +Any of these targets might be defined to delete @emph{more} files than +@samp{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. + +@item install +@cindex @code{install} @r{(standard target)} +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. + +@item print +@cindex @code{print} @r{(standard target)} +Print listings of the source files that have changed. + +@item tar +@cindex @code{tar} @r{(standard target)} +Create a tar file of the source files. + +@item shar +@cindex @code{shar} @r{(standard target)} +Create a shell archive (shar file) of the source files. + +@item dist +@cindex @code{dist} @r{(standard target)} +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. + +@item TAGS +@cindex @code{TAGS} @r{(standard target)} +Update a tags table for this program. + +@item check +@cindex @code{check} @r{(standard target)} +@itemx test +@cindex @code{test} @r{(standard target)} +Perform self tests on the program this makefile builds. +@end table + +@node Instead of Execution, Avoiding Compilation, Goals, Running +@section Instead of Executing Recipes +@cindex execution, instead of +@cindex recipes, instead of executing + +The makefile tells @code{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 @code{make}. + +@comment Extra blank lines make it print better. +@table @samp +@item -n +@itemx --just-print +@itemx --dry-run +@itemx --recon +@cindex @code{--just-print} +@cindex @code{--dry-run} +@cindex @code{--recon} +@cindex @code{-n} + +``No-op''. Causes @code{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 (@pxref{MAKE +Variable, ,How the @code{MAKE} Variable Works}). Also any recipes +needed to update included makefiles are still executed +(@pxref{Remaking Makefiles, ,How Makefiles Are Remade}). + +@item -t +@itemx --touch +@cindex @code{--touch} +@cindex touching files +@cindex target, touching +@cindex @code{-t} + +``Touch''. Marks targets as up to date without actually changing +them. In other words, @code{make} pretends to update the targets but +does not really change their contents; instead only their modified +times are updated. + +@item -q +@itemx --question +@cindex @code{--question} +@cindex @code{-q} +@cindex question mode + +``Question''. Silently check whether the targets are up to date, but +do not execute recipes; the exit code shows whether any updates are +needed. + +@item -W @var{file} +@itemx --what-if=@var{file} +@itemx --assume-new=@var{file} +@itemx --new-file=@var{file} +@cindex @code{--what-if} +@cindex @code{-W} +@cindex @code{--assume-new} +@cindex @code{--new-file} +@cindex what if +@cindex files, assuming new + +``What if''. Each @samp{-W} flag is followed by a file name. The given +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. +@end table + +With the @samp{-n} flag, @code{make} prints the recipe that it would +normally execute but usually does not execute it. + +With the @samp{-t} flag, @code{make} ignores the recipes in the rules +and uses (in effect) the command @code{touch} for each target that needs to +be remade. The @code{touch} command is also printed, unless @samp{-s} or +@code{.SILENT} is used. For speed, @code{make} does not actually invoke +the program @code{touch}. It does the work directly. + +With the @samp{-q} flag, @code{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 @code{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 @code{make}. + +@cindex +, and recipe execution +The @samp{-n}, @samp{-t}, and @samp{-q} options do not affect recipe +lines that begin with @samp{+} characters or contain the strings +@samp{$(MAKE)} or @samp{$@{MAKE@}}. Note that only the line containing +the @samp{+} character or the strings @samp{$(MAKE)} or @samp{$@{MAKE@}} +is run regardless of these options. Other lines in the same rule are +not run unless they too begin with @samp{+} or contain @samp{$(MAKE)} or +@samp{$@{MAKE@}} (@xref{MAKE Variable, ,How the @code{MAKE} Variable Works}.) + +@cindex phony targets and recipe execution +The @samp{-t} flag prevents phony targets (@pxref{Phony Targets}) from +being updated, unless there are recipe lines beginning with @samp{+} +or containing @samp{$(MAKE)} or @samp{$@{MAKE@}}. + +The @samp{-W} flag provides two features: + +@itemize @bullet +@item +If you also use the @samp{-n} or @samp{-q} flag, you can see what +@code{make} would do if you were to modify some files. + +@item +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. +@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}). + +@node Avoiding Compilation, Overriding, Instead of Execution, Running +@section Avoiding Recompilation of Some Files +@cindex @code{-o} +@cindex @code{--old-file} +@cindex @code{--assume-old} +@cindex files, assuming old +@cindex files, avoiding recompilation of +@cindex recompilation, avoiding + +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, @code{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 @samp{-t} flag. This flag tells @code{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: + +@enumerate +@item +Use the command @samp{make} to recompile the source files that really +need recompilation, ensuring that the object files are up-to-date +before you begin. + +@item +Make the changes in the header files. + +@item +Use the command @samp{make -t} to mark all the object files as +up to date. The next time you run @code{make}, the changes in the +header files will not cause any recompilation. +@end enumerate + +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 @w{@samp{-o @var{file}}} flag, which marks a specified file as +``old'' (@pxref{Options Summary, ,Summary of Options}). This means +that the file itself will not be remade, and nothing else will be +remade on its account. Follow this procedure: + +@enumerate +@item +Recompile the source files that need compilation for reasons independent +of the particular header file, with @samp{make -o @var{headerfile}}. +If several header files are involved, use a separate @samp{-o} option +for each header file. + +@item +Touch all the object files with @samp{make -t}. +@end enumerate + +@node Overriding, Testing, Avoiding Compilation, Running +@section Overriding Variables +@cindex overriding variables with arguments +@cindex variables, overriding with arguments +@cindex command line variables +@cindex variables, command line + +An argument that contains @samp{=} specifies the value of a variable: +@samp{@var{v}=@var{x}} sets the value of the variable @var{v} to @var{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 +@dfn{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 +@code{CFLAGS} is included in each recipe that runs the C compiler, so a +file @file{foo.c} would be compiled something like this: + +@example +cc -c $(CFLAGS) foo.c +@end example + +Thus, whatever value you set for @code{CFLAGS} affects each compilation +that occurs. The makefile probably specifies the usual value for +@code{CFLAGS}, like this: + +@example +CFLAGS=-g +@end example + +Each time you run @code{make}, you can override this value if you +wish. For example, if you say @samp{make CFLAGS='-g -O'}, each C +compilation will be done with @samp{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 @code{CFLAGS} is only one of many standard variables that +exist just so that you can change them this way. @xref{Implicit +Variables, , Variables Used by Implicit Rules}, 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 @samp{:=} or +@samp{::=} instead of @samp{=}. But, unless you want to include a +variable reference or function call in the @emph{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 @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, Temporary Files, Overriding, Running +@section Testing the Compilation of a Program +@cindex testing compilation +@cindex compilation, testing + +Normally, when an error happens in executing a shell command, @code{make} +gives up immediately, returning a nonzero status. No further recipes are +executed for any target. The error implies that the goal cannot be +correctly remade, and @code{make} reports this as soon as it knows. + +When you are compiling a program that you have just changed, this is not +what you want. Instead, you would rather that @code{make} try compiling +every file that can be tried, to show you as many compilation errors +as possible. + +@cindex @code{-k} +@cindex @code{--keep-going} +On these occasions, you should use the @samp{-k} or +@samp{--keep-going} flag. This tells @code{make} to continue to +consider the other prerequisites of the pending targets, remaking them +if necessary, before it gives up and returns nonzero status. For +example, after an error in compiling one object file, @samp{make -k} +will continue compiling other object files even though it already +knows that linking them will be impossible. In addition to continuing +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}). + +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 +as well report the failure immediately. The @samp{-k} flag says that the +real purpose is to test as much as possible of the changes made in the +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 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 +@cindex switches + +Here is a table of all the options @code{make} understands: + +@table @samp +@item -b +@cindex @code{-b} +@itemx -m +@cindex @code{-m} +These options are ignored for compatibility with other versions of @code{make}. + +@item -B +@cindex @code{-B} +@itemx --always-make +@cindex @code{--always-make} +Consider all targets out-of-date. GNU @code{make} proceeds to +consider targets and their prerequisites using the normal algorithms; +however, all targets so considered are always remade regardless of the +status of their prerequisites. To avoid infinite recursion, if +@code{MAKE_RESTARTS} (@pxref{Special Variables, , Other Special +Variables}) is set to a number greater than 0 this option is disabled +when considering whether to remake makefiles (@pxref{Remaking +Makefiles, , How Makefiles Are Remade}). + +@item -C @var{dir} +@cindex @code{-C} +@itemx --directory=@var{dir} +@cindex @code{--directory} +Change to directory @var{dir} before reading the makefiles. If multiple +@samp{-C} options are specified, each is interpreted relative to the +previous one: @samp{-C / -C etc} is equivalent to @samp{-C /etc}. +This is typically used with recursive invocations of @code{make} +(@pxref{Recursion, ,Recursive Use of @code{make}}). + +@item -d +@cindex @code{-d} +@c Extra blank line here makes the table look better. + +Print debugging information in addition to normal processing. The +debugging information says which files are being considered for +remaking, which file-times are being compared and with what results, +which files actually need to be remade, which implicit rules are +considered and which are applied---everything interesting about how +@code{make} decides what to do. The @code{-d} option is equivalent to +@samp{--debug=a} (see below). + +@item --debug[=@var{options}] +@cindex @code{--debug} +@c Extra blank line here makes the table look better. + +Print debugging information in addition to normal processing. Various +levels and types of output can be chosen. With no arguments, print the +``basic'' level of debugging. Possible arguments are below; only the +first character is considered, and values must be comma- or +space-separated. + +@table @code +@item a (@i{all}) +All types of debugging output are enabled. This is equivalent to using +@samp{-d}. + +@item b (@i{basic}) +Basic debugging prints each target that was found to be out-of-date, and +whether the build was successful or not. + +@item v (@i{verbose}) +A level above @samp{basic}; includes messages about which makefiles were +parsed, prerequisites that did not need to be rebuilt, etc. This option +also enables @samp{basic} messages. + +@item i (@i{implicit}) +Prints messages describing the implicit rule searches for each target. +This option also enables @samp{basic} messages. + +@item j (@i{jobs}) +Prints messages giving details on the invocation of specific sub-commands. + +@item m (@i{makefile}) +By default, the above messages are not enabled while trying to remake +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. +@end table + +@item -e +@cindex @code{-e} +@itemx --environment-overrides +@cindex @code{--environment-overrides} +Give variables taken from the environment precedence +over variables from makefiles. +@xref{Environment, ,Variables from the Environment}. + +@item -E @var{string} +@cindex @code{-E} +@item --eval=@var{string} +@cindex @code{--eval} +@c Extra blank line here makes the table look better. + +Evaluate @var{string} as makefile syntax. This is a command-line +version of the @code{eval} function (@pxref{Eval Function}). The +evaluation is performed after the default rules and variables have +been defined, but before any makefiles are read. + +@item -f @var{file} +@cindex @code{-f} +@itemx --file=@var{file} +@cindex @code{--file} +@itemx --makefile=@var{file} +@cindex @code{--makefile} +Read the file named @var{file} as a makefile. +@xref{Makefiles, ,Writing Makefiles}. + +@item -h +@cindex @code{-h} +@itemx --help +@cindex @code{--help} +@c Extra blank line here makes the table look better. + +Remind you of the options that @code{make} understands and then exit. + +@item -i +@cindex @code{-i} +@itemx --ignore-errors +@cindex @code{--ignore-errors} +Ignore all errors in recipes executed to remake files. +@xref{Errors, ,Errors in Recipes}. + +@item -I @var{dir} +@cindex @code{-I} +@itemx --include-dir=@var{dir} +@cindex @code{--include-dir} +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. 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} +@itemx --jobs[=@var{jobs}] +@cindex @code{--jobs} +Specifies the number of recipes (jobs) to run simultaneously. With no +argument, @code{make} runs as many recipes simultaneously as possible. +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 +@cindex @code{--keep-going} +Continue as much as possible after an error. While the target that +failed, and those that depend on it, cannot be remade, the other +prerequisites of these targets can be processed all the same. +@xref{Testing, ,Testing the Compilation of a Program}. + +@item -l [@var{load}] +@cindex @code{-l} +@itemx --load-average[=@var{load}] +@cindex @code{--load-average} +@itemx --max-load[=@var{load}] +@cindex @code{--max-load} +Specifies that no new recipes should be started if there are other +recipes running and the load average is at least @var{load} (a +floating-point number). With no argument, removes a previous load +limit. @xref{Parallel, ,Parallel Execution}. + +@item -L +@cindex @code{-L} +@itemx --check-symlink-times +@cindex @code{--check-symlink-times} +On systems that support symbolic links, this option causes @code{make} +to consider the timestamps on any symbolic links in addition to the +timestamp on the file referenced by those links. When this option is +provided, the most recent timestamp among the file and the symbolic +links is taken as the modification time for this target file. + +@item -n +@cindex @code{-n} +@itemx --just-print +@cindex @code{--just-print} +@itemx --dry-run +@cindex @code{--dry-run} +@itemx --recon +@cindex @code{--recon} +@c Extra blank line here makes the table look better. + +Print the recipe that would be executed, but do not execute it (except +in certain circumstances). +@xref{Instead of Execution, ,Instead of Executing Recipes}. + +@item -o @var{file} +@cindex @code{-o} +@itemx --old-file=@var{file} +@cindex @code{--old-file} +@itemx --assume-old=@var{file} +@cindex @code{--assume-old} +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}. + +@item -O[@var{type}] +@cindex @code{-O} +@itemx --output-sync[=@var{type}] +@cindex @code{--output-sync} +@cindex output during parallel execution +@cindex parallel execution, output during +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. + +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 +from each line in the recipe is grouped together. With the type +@samp{recurse}, the output from an entire recursive make is grouped +together. With the type @samp{none}, no output synchronization is +performed. @xref{Parallel Output, ,Output During Parallel Execution}. + +@item -p +@cindex @code{-p} +@itemx --print-data-base +@cindex @code{--print-data-base} +@cindex data base of @code{make} rules +@cindex predefined rules and variables, printing +Print the data base (rules and variable values) that results from +reading the makefiles; then execute as usual or as otherwise +specified. This also prints the version information given by the +@samp{-v} switch (see below). To print the data base without trying +to remake any files, use @w{@samp{make -qp}}. To print the data base +of predefined rules and variables, use @w{@samp{make -p -f /dev/null}}. +The data base output contains file name and line number information for +recipe and variable definitions, so it can be a useful debugging tool +in complex environments. + +@item -q +@cindex @code{-q} +@itemx --question +@cindex @code{--question} +``Question mode''. Do not run any recipes, or print anything; just +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}. + +@item -r +@cindex @code{-r} +@itemx --no-builtin-rules +@cindex @code{--no-builtin-rules} +Eliminate use of the built-in implicit rules (@pxref{Implicit Rules, +,Using Implicit Rules}). You can still define your own by writing +pattern rules (@pxref{Pattern Rules, ,Defining and Redefining Pattern +Rules}). The @samp{-r} option also clears out the default list of +suffixes for suffix rules (@pxref{Suffix Rules, ,Old-Fashioned Suffix +Rules}). But you can still define your own suffixes with a rule for +@code{.SUFFIXES}, and then define your own suffix rules. Note that only +@emph{rules} are affected by the @code{-r} option; default variables +remain in effect (@pxref{Implicit Variables, ,Variables Used by Implicit +Rules}); see the @samp{-R} option below. + +@item -R +@cindex @code{-R} +@itemx --no-builtin-variables +@cindex @code{--no-builtin-variables} +Eliminate use of the built-in rule-specific variables (@pxref{Implicit +Variables, ,Variables Used by Implicit Rules}). You can still define +your own, of course. The @samp{-R} option also automatically enables +the @samp{-r} option (see above), since it doesn't make sense to have +implicit rules without any definitions for the variables that they use. + +@item -s +@cindex @code{-s} +@itemx --silent +@cindex @code{--silent} +@itemx --quiet +@cindex @code{--quiet} +@c Extra blank line here makes the table look better. + +Silent operation; do not print the recipes as they are executed. +@xref{Echoing, ,Recipe Echoing}. + +@item -S +@cindex @code{-S} +@itemx --no-keep-going +@cindex @code{--no-keep-going} +@itemx --stop +@cindex @code{--stop} +@c Extra blank line here makes the table look better. + +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. + +@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} +@itemx --touch +@cindex @code{--touch} +@c Extra blank line here makes the table look better. + +Touch files (mark them up to date without really changing them) +instead of running their recipes. This is used to pretend that the +recipes were done, in order to fool future invocations of +@code{make}. @xref{Instead of Execution, ,Instead of Executing Recipes}. + +@item --trace +@cindex @code{--trace} +Show tracing information for @code{make} execution. Using @code{--trace} is +shorthand for @code{--debug=print,why}. + +@item -v +@cindex @code{-v} +@itemx --version +@cindex @code{--version} +Print the version of the @code{make} program plus a copyright, a list +of authors, and a notice that there is no warranty; then exit. + +@item -w +@cindex @code{-w} +@itemx --print-directory +@cindex @code{--print-directory} +Print a message containing the working directory both before and after +executing the makefile. This may be useful for tracking down errors +from complicated nests of recursive @code{make} commands. +@xref{Recursion, ,Recursive Use of @code{make}}. (In practice, you +rarely need to specify this option since @samp{make} does it for you; +see @ref{-w Option, ,The @samp{--print-directory} Option}.) + +@item --no-print-directory +@cindex @code{--no-print-directory} +Disable printing of the working directory under @code{-w}. +This option is useful when @code{-w} is turned on automatically, +but you do not want to see the extra messages. +@xref{-w Option, ,The @samp{--print-directory} Option}. + +@item -W @var{file} +@cindex @code{-W} +@itemx --what-if=@var{file} +@cindex @code{--what-if} +@itemx --new-file=@var{file} +@cindex @code{--new-file} +@itemx --assume-new=@var{file} +@cindex @code{--assume-new} +Pretend that the target @var{file} has just been modified. When used +with the @samp{-n} flag, this shows you what would happen if you were +to modify that file. Without @samp{-n}, it is almost the same as +running a @code{touch} command on the given file before running +@code{make}, except that the modification time is changed only in the +imagination of @code{make}. +@xref{Instead of Execution, ,Instead of Executing Recipes}. + +@item --warn-undefined-variables +@cindex @code{--warn-undefined-variables} +@cindex variables, warning for undefined +@cindex undefined variables, warning message +Issue a warning message whenever @code{make} sees a reference to an +undefined variable. This can be helpful when you are trying to debug +makefiles which use variables in complex ways. +@end table + +@node Implicit Rules, Archives, Running, Top +@chapter Using Implicit Rules +@cindex implicit rule +@cindex rule, implicit + +Certain standard ways of remaking target files are used very often. For +example, one customary way to make an object file is from a C source file +using the C compiler, @code{cc}. + +@dfn{Implicit rules} tell @code{make} how to use customary techniques so +that you do not have to specify them in detail when you want to use +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. + +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. +@iftex +@xref{Chained Rules, ,Chains of Implicit Rules}. +@end iftex + +The built-in implicit rules use several variables in their recipes so +that, by changing the values of the variables, you can change the way the +implicit rule works. For example, the variable @code{CFLAGS} controls the +flags given to the C compiler by the implicit rule for C compilation. +@iftex +@xref{Implicit Variables, ,Variables Used by Implicit Rules}. +@end iftex + +You can define your own implicit rules by writing @dfn{pattern rules}. +@iftex +@xref{Pattern Rules, ,Defining and Redefining Pattern Rules}. +@end iftex + +@dfn{Suffix rules} are a more limited way to define implicit rules. +Pattern rules are more general and clearer, but suffix rules are +retained for compatibility. +@iftex +@xref{Suffix Rules, ,Old-Fashioned Suffix Rules}. +@end iftex + +@menu +* Using Implicit:: How to use an existing implicit rule + to get the recipes for updating a file. +* Catalogue of Rules:: A list of built-in rules. +* Implicit Variables:: How to change what predefined rules do. +* Chained Rules:: How to use a chain of implicit rules. +* Pattern Rules:: How to define new implicit rules. +* Last Resort:: How to define a recipe for rules which + cannot find any. +* Suffix Rules:: The old-fashioned style of implicit rule. +* Implicit Rule Search:: The precise algorithm for applying + implicit rules. +@end menu + +@node Using Implicit, Catalogue of Rules, Implicit Rules, Implicit Rules +@section Using Implicit Rules +@cindex implicit rule, how to use +@cindex rule, implicit, how to use + +To allow @code{make} to find a customary method for updating a target +file, all you have to do is refrain from specifying recipes yourself. +Either write a rule with no recipe, or don't write a rule at all. +Then @code{make} will figure out which implicit rule to use based on +which kind of source file exists or can be made. + +For example, suppose the makefile looks like this: + +@example +foo : foo.o bar.o + cc -o foo foo.o bar.o $(CFLAGS) $(LDFLAGS) +@end example + +@noindent +Because you mention @file{foo.o} but do not give a rule for it, @code{make} +will automatically look for an implicit rule that tells how to update it. +This happens whether or not the file @file{foo.o} currently exists. + +If an implicit rule is found, it can supply both a recipe and one or +more prerequisites (the source files). You would want to write a rule +for @file{foo.o} with no recipe if you need to specify additional +prerequisites, such as header files, that the implicit rule cannot +supply. + +Each implicit rule has a target pattern and prerequisite patterns. There may +be many implicit rules with the same target pattern. For example, numerous +rules make @samp{.o} files: one, from a @samp{.c} file with the C compiler; +another, from a @samp{.p} file with the Pascal compiler; and so on. The rule +that actually applies is the one whose prerequisites exist or can be made. +So, if you have a file @file{foo.c}, @code{make} will run the C compiler; +otherwise, if you have a file @file{foo.p}, @code{make} will run the Pascal +compiler; and so on. + +Of course, when you write the makefile, you know which implicit rule you +want @code{make} to use, and you know it will choose that one because you +know which possible prerequisite files are supposed to exist. +@xref{Catalogue of Rules, ,Catalogue of Built-In Rules}, +for a catalogue of all the predefined implicit rules. + +Above, we said an implicit rule applies if the required prerequisites ``exist +or can be made''. A file ``can be made'' if it is mentioned explicitly in +the makefile as a target or a prerequisite, or if an implicit rule can be +recursively found for how to make it. When an implicit prerequisite is the +result of another implicit rule, we say that @dfn{chaining} is occurring. +@xref{Chained Rules, ,Chains of Implicit Rules}. + +In general, @code{make} searches for an implicit rule for each target, and +for each double-colon rule, that has no recipe. A file that is mentioned +only as a prerequisite is considered a target whose rule specifies nothing, +so implicit rule search happens for it. @xref{Implicit Rule Search, ,Implicit Rule Search Algorithm}, for the +details of how the search is done. + +Note that explicit prerequisites do not influence implicit rule search. +For example, consider this explicit rule: + +@example +foo.o: foo.p +@end example + +@noindent +The prerequisite on @file{foo.p} does not necessarily mean that +@code{make} will remake @file{foo.o} according to the implicit rule to +make an object file, a @file{.o} file, from a Pascal source file, a +@file{.p} file. For example, if @file{foo.c} also exists, the implicit +rule to make an object file from a C source file is used instead, +because it appears before the Pascal rule in the list of predefined +implicit rules (@pxref{Catalogue of Rules, , Catalogue of Built-In +Rules}). + +If you do not want an implicit rule to be used for a target that has no +recipe, you can give that target an empty recipe by writing a semicolon +(@pxref{Empty Recipes, ,Defining Empty Recipes}). + +@node Catalogue of Rules, Implicit Variables, Using Implicit, Implicit Rules +@section Catalogue of Built-In Rules +@cindex implicit rule, predefined +@cindex rule, implicit, predefined + +Here is a catalogue of predefined implicit rules which are always +available unless the makefile explicitly overrides or cancels them. +@xref{Canceling Rules, ,Canceling Implicit Rules}, for information on +canceling or overriding an implicit rule. The @samp{-r} or +@samp{--no-builtin-rules} option cancels all predefined rules. + +This manual only documents the default rules available on POSIX-based +operating systems. Other operating systems, such as VMS, Windows, +OS/2, etc. may have different sets of default rules. To see the full +list of default rules and variables available in your version of GNU +@code{make}, run @samp{make -p} in a directory with no makefile. + +Not all of these rules will always be defined, even when the @samp{-r} +option is not given. Many of the predefined implicit rules are +implemented in @code{make} as suffix rules, so which ones will be +defined depends on the @dfn{suffix list} (the list of prerequisites of +the special target @code{.SUFFIXES}). The default suffix list is: +@code{.out}, @code{.a}, @code{.ln}, @code{.o}, @code{.c}, @code{.cc}, +@code{.C}, @code{.cpp}, @code{.p}, @code{.f}, @code{.F}, @code{.m}, +@code{.r}, @code{.y}, @code{.l}, @code{.ym}, @code{.lm}, @code{.s}, +@code{.S}, @code{.mod}, @code{.sym}, @code{.def}, @code{.h}, +@code{.info}, @code{.dvi}, @code{.tex}, @code{.texinfo}, @code{.texi}, +@code{.txinfo}, @code{.w}, @code{.ch} @code{.web}, @code{.sh}, +@code{.elc}, @code{.el}. All of the implicit rules described below +whose prerequisites have one of these suffixes are actually suffix +rules. If you modify the suffix list, the only predefined suffix +rules in effect will be those named by one or two of the suffixes that +are on the list you specify; rules whose suffixes fail to be on the +list are disabled. @xref{Suffix Rules, ,Old-Fashioned Suffix Rules}, +for full details on suffix rules. + +@table @asis +@item Compiling C programs +@cindex C, rule to compile +@pindex cc +@pindex gcc +@pindex .o +@pindex .c +@file{@var{n}.o} is made automatically from @file{@var{n}.c} with +a recipe of the form @w{@samp{$(CC) $(CPPFLAGS) $(CFLAGS) -c}}. + +@item Compiling C++ programs +@cindex C++, rule to compile +@pindex g++ +@pindex .cc +@pindex .cpp +@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 +@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}. + +@item Compiling Fortran and Ratfor programs +@cindex Fortran, rule to compile +@cindex Ratfor, rule to compile +@pindex f77 +@pindex .f +@pindex .r +@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: + +@table @samp +@item .f +@samp{$(FC) $(FFLAGS) -c}. +@item .F +@samp{$(FC) $(FFLAGS) $(CPPFLAGS) -c}. +@item .r +@samp{$(FC) $(FFLAGS) $(RFLAGS) -c}. +@end table + +@item Preprocessing Fortran and Ratfor programs +@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: + +@table @samp +@item .F +@samp{$(FC) $(CPPFLAGS) $(FFLAGS) -F}. +@item .r +@samp{$(FC) $(FFLAGS) $(RFLAGS) -F}. +@end table + +@item Compiling Modula-2 programs +@cindex Modula-2, rule to compile +@pindex m2c +@pindex .sym +@pindex .def +@pindex .mod +@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 +@cindex assembly, rule to compile +@pindex as +@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)}. + +@pindex .S +@file{@var{n}.s} is made automatically from @file{@var{n}.S} by +running the C preprocessor, @code{cpp}. The precise recipe is +@w{@samp{$(CPP) $(CPPFLAGS)}}. + +@item Linking a single object file +@cindex linking, predefined rule for +@pindex ld +@pindex .o +@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 +object files (presumably coming from various other source files), one +of which has a name matching that of the executable file. Thus, + +@example +x: y.o z.o +@end example + +@noindent +when @file{x.c}, @file{y.c} and @file{z.c} all exist will execute: + +@example +@group +cc -c x.c -o x.o +cc -c y.c -o y.o +cc -c z.c -o z.o +cc x.o y.o z.o -o x +rm -f x.o +rm -f y.o +rm -f z.o +@end group +@end example + +@noindent +In more complicated cases, such as when there is no object file whose +name derives from the executable file name, you must write an explicit +recipe for linking. + +Each kind of file automatically made into @samp{.o} object files will +be automatically linked by using the compiler (@samp{$(CC)}, +@samp{$(FC)} or @samp{$(PC)}; the C compiler @samp{$(CC)} is used to +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. + +@item Yacc for C programs +@pindex yacc +@cindex Yacc, rule to run +@pindex .y +@file{@var{n}.c} is made automatically from @file{@var{n}.y} by +running Yacc with the recipe @samp{$(YACC) $(YFLAGS)}. + +@item Lex for C programs +@pindex lex +@cindex Lex, rule to run +@pindex .l +@file{@var{n}.c} is made automatically from @file{@var{n}.l} by +running Lex. The actual recipe is @samp{$(LEX) $(LFLAGS)}. + +@item Lex for Ratfor programs +@file{@var{n}.r} is made automatically from @file{@var{n}.l} by +running Lex. The actual recipe is @samp{$(LEX) $(LFLAGS)}. + +The convention of using the same suffix @samp{.l} for all Lex files +regardless of whether they produce C code or Ratfor code makes it +impossible for @code{make} to determine automatically which of the two +languages you are using in any particular case. If @code{make} is +called upon to remake an object file from a @samp{.l} file, it must +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: + +@example +@group +.SUFFIXES: +.SUFFIXES: .o .r .f .l @dots{} +@end group +@end example + +@item Making Lint Libraries from C, Yacc, or Lex programs +@pindex lint +@cindex @code{lint}, rule to run +@pindex .ln +@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}. + +@item @TeX{} and Web +@cindex @TeX{}, rule to run +@cindex Web, rule to run +@pindex tex +@pindex cweave +@pindex weave +@pindex tangle +@pindex ctangle +@pindex .dvi +@pindex .tex +@pindex .web +@pindex .w +@pindex .ch +@file{@var{n}.dvi} is made from @file{@var{n}.tex} with the recipe +@samp{$(TEX)}. @file{@var{n}.tex} is made from @file{@var{n}.web} with +@samp{$(WEAVE)}, or from @file{@var{n}.w} (and from @file{@var{n}.ch} if +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)}. + +@item Texinfo and Info +@cindex Texinfo, rule to format +@cindex Info, rule to format +@pindex texi2dvi +@pindex makeinfo +@pindex .texinfo +@pindex .info +@pindex .texi +@pindex .txinfo +@file{@var{n}.dvi} is made from @file{@var{n}.texinfo}, +@file{@var{n}.texi}, or @file{@var{n}.txinfo}, with the recipe +@w{@samp{$(TEXI2DVI) $(TEXI2DVI_FLAGS)}}. @file{@var{n}.info} is made from +@file{@var{n}.texinfo}, @file{@var{n}.texi}, or @file{@var{n}.txinfo}, with +the recipe @w{@samp{$(MAKEINFO) $(MAKEINFO_FLAGS)}}. + +@item RCS +@cindex RCS, rule to extract from +@pindex co +@pindex ,v @r{(RCS file extension)} +Any file @file{@var{n}} is extracted if necessary from an RCS file +named either @file{@var{n},v} or @file{RCS/@var{n},v}. The precise +recipe used is @w{@samp{$(CO) $(COFLAGS)}}. @file{@var{n}} will not be +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. + +@item SCCS +@cindex SCCS, rule to extract from +@pindex get +@pindex s. @r{(SCCS file prefix)} +Any file @file{@var{n}} is extracted if necessary from an SCCS file +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. + +@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. + +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 +comparable (or inferior) proprietary software, you support the free +software movement. +@end table + +Usually, you want to change only the variables listed in the table +above, which are documented in the following section. + +However, the recipes in built-in implicit rules actually use +variables such as @code{COMPILE.c}, @code{LINK.p}, and +@code{PREPROCESS.S}, whose values contain the recipes listed above. + +@code{make} follows the convention that the rule to compile a +@file{.@var{x}} source file uses the variable @code{COMPILE.@var{x}}. +Similarly, the rule to produce an executable from a @file{.@var{x}} +file uses @code{LINK.@var{x}}; and the rule to preprocess a +@file{.@var{x}} file uses @code{PREPROCESS.@var{x}}. + +@vindex OUTPUT_OPTION +Every rule that produces an object file uses the variable +@code{OUTPUT_OPTION}. @code{make} defines this variable either to +contain @samp{-o $@@}, or to be empty, depending on a compile-time +option. You need the @samp{-o} option to ensure that the output goes +into the right file when the source file is in a different directory, +as when using @code{VPATH} (@pxref{Directory Search}). However, +compilers on some systems do not accept a @samp{-o} switch for object +files. If you use such a system, and use @code{VPATH}, some +compilations will put their output in the wrong place. +A possible workaround for this problem is to give @code{OUTPUT_OPTION} +the value @w{@samp{; mv $*.o $@@}}. + +@node Implicit Variables, Chained Rules, Catalogue of Rules, Implicit Rules +@section Variables Used by Implicit Rules +@cindex flags for compilers + +The recipes in built-in implicit rules make liberal use of certain +predefined variables. You can alter the values of these variables in +the makefile, with arguments to @code{make}, or in the environment to +alter how the implicit rules work without redefining the rules +themselves. You can cancel all variables used by implicit rules with +the @samp{-R} or @samp{--no-builtin-variables} option. + +For example, the recipe used to compile a C source file actually says +@samp{$(CC) -c $(CFLAGS) $(CPPFLAGS)}. The default values of the variables +used are @samp{cc} and nothing, resulting in the command @samp{cc -c}. By +redefining @samp{CC} to @samp{ncc}, you could cause @samp{ncc} to be +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. + +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 +programs (like @code{CFLAGS}). (The ``name of a program'' may also contain +some command arguments, but it must start with an actual executable program +name.) If a variable value contains more than one argument, separate them +with spaces. + +The following tables describe of some of the more commonly-used predefined +variables. This list is not exhaustive, and the default values shown here may +not be what @code{make} selects for your environment. To see the +complete list of predefined variables for your instance of GNU @code{make} you +can run @samp{make -p} in a directory with no makefiles. + +Here is a table of some of the more common variables used as names of +programs in built-in rules: + +@table @code +@item AR +@vindex AR +Archive-maintaining program; default @samp{ar}. +@pindex ar + +@item AS +@vindex AS +Program for compiling assembly files; default @samp{as}. +@pindex as + +@item CC +@vindex CC +Program for compiling C programs; default @samp{cc}. +@pindex cc + +@item CXX +@vindex CXX +Program for compiling C++ programs; default @samp{g++}. +@pindex g++ + +@item CPP +@vindex CPP +Program for running the C preprocessor, with results to standard output; +default @samp{$(CC) -E}. + +@item FC +@vindex FC +Program for compiling or preprocessing Fortran and Ratfor programs; +default @samp{f77}. +@pindex f77 + +@item M2C +@vindex M2C +Program to use to compile Modula-2 source code; default @samp{m2c}. +@pindex m2c + +@item PC +@vindex PC +Program for compiling Pascal programs; default @samp{pc}. +@pindex pc + +@item CO +@vindex CO +Program for extracting a file from RCS; default @samp{co}. +@pindex co + +@item GET +@vindex GET +Program for extracting a file from SCCS; default @samp{get}. +@pindex get + +@item LEX +@vindex LEX +Program to use to turn Lex grammars into source code; default @samp{lex}. +@pindex lex + +@item YACC +@vindex YACC +Program to use to turn Yacc grammars into source code; default @samp{yacc}. +@pindex yacc + +@item LINT +@vindex LINT +Program to use to run lint on source code; default @samp{lint}. +@pindex lint + +@item MAKEINFO +@vindex MAKEINFO +Program to convert a Texinfo source file into an Info file; default +@samp{makeinfo}. +@pindex makeinfo + +@item TEX +@vindex TEX +Program to make @TeX{} @sc{dvi} files from @TeX{} source; +default @samp{tex}. +@pindex tex + +@item TEXI2DVI +@vindex TEXI2DVI +Program to make @TeX{} @sc{dvi} files from Texinfo source; +default @samp{texi2dvi}. +@pindex texi2dvi + +@item WEAVE +@vindex WEAVE +Program to translate Web into @TeX{}; default @samp{weave}. +@pindex weave + +@item CWEAVE +@vindex CWEAVE +Program to translate C Web into @TeX{}; default @samp{cweave}. +@pindex cweave + +@item TANGLE +@vindex TANGLE +Program to translate Web into Pascal; default @samp{tangle}. +@pindex tangle + +@item CTANGLE +@vindex CTANGLE +Program to translate C Web into C; default @samp{ctangle}. +@pindex ctangle + +@item RM +@vindex RM +Command to remove a file; default @samp{rm -f}. +@pindex rm +@end table + +Here is a table of variables whose values are additional arguments for the +programs above. The default values for all of these is the empty +string, unless otherwise noted. + +@table @code +@item ARFLAGS +@vindex ARFLAGS +Flags to give the archive-maintaining program; default @samp{rv}. + +@item ASFLAGS +@vindex ASFLAGS +Extra flags to give to the assembler (when explicitly +invoked on a @samp{.s} or @samp{.S} file). + +@item CFLAGS +@vindex CFLAGS +Extra flags to give to the C compiler. + +@item CXXFLAGS +@vindex CXXFLAGS +Extra flags to give to the C++ compiler. + +@item COFLAGS +@vindex COFLAGS +Extra flags to give to the RCS @code{co} program. + +@item CPPFLAGS +@vindex CPPFLAGS +Extra flags to give to the C preprocessor and programs +that use it (the C and Fortran compilers). + +@item FFLAGS +@vindex FFLAGS +Extra flags to give to the Fortran compiler. + +@item GFLAGS +@vindex GFLAGS +Extra flags to give to the SCCS @code{get} program. + +@item LDFLAGS +@vindex LDFLAGS +Extra flags to give to compilers when they are supposed to invoke the linker, +@samp{ld}, such as @code{-L}. Libraries (@code{-lfoo}) should be +added to the @code{LDLIBS} variable instead. + +@item LDLIBS +@vindex LDLIBS +@vindex LOADLIBES +Library flags or names given to compilers when they are supposed to +invoke the linker, @samp{ld}. @code{LOADLIBES} is a deprecated (but +still supported) alternative to @code{LDLIBS}. Non-library linker +flags, such as @code{-L}, should go in the @code{LDFLAGS} variable. + +@item LFLAGS +@vindex LFLAGS +Extra flags to give to Lex. + +@item YFLAGS +@vindex YFLAGS +Extra flags to give to Yacc. + +@item PFLAGS +@vindex PFLAGS +Extra flags to give to the Pascal compiler. + +@item RFLAGS +@vindex RFLAGS +Extra flags to give to the Fortran compiler for Ratfor programs. + +@item LINTFLAGS +@vindex LINTFLAGS +Extra flags to give to lint. +@end table + +@node Chained Rules, Pattern Rules, Implicit Variables, Implicit Rules +@section Chains of Implicit Rules + +@cindex chains of rules +@cindex rule, implicit, chains of +Sometimes a file can be made by a sequence of implicit rules. For example, +a file @file{@var{n}.o} could be made from @file{@var{n}.y} by running +first Yacc and then @code{cc}. Such a sequence is called a @dfn{chain}. + +If the file @file{@var{n}.c} exists, or is mentioned in the makefile, no +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. + +@cindex intermediate files +@cindex files, intermediate +However, even if @file{@var{n}.c} does not exist and is not mentioned, +@code{make} knows how to envision it as the missing link between +@file{@var{n}.o} and @file{@var{n}.y}! In this case, @file{@var{n}.c} is +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. + +Intermediate files are remade using their rules just like all other +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 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 +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. + +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 +@file{foo} from @file{foo.o.o} by running the linker twice. This +constraint has the added benefit of preventing any infinite loop in the +search for an implicit rule chain. + +There are some special implicit rules to optimize certain cases that would +otherwise be handled by rule chains. For example, making @file{foo} from +@file{foo.c} could be handled by compiling and linking with separate +chained rules, using @file{foo.o} as an intermediate file. But what +actually happens is that a special rule for this case does the compilation +and linking with a single @code{cc} command. The optimized rule is used in +preference to the step-by-step chain because it comes earlier in the +ordering of rules. + +Finally, for performance reasons @code{make} will not consider non-terminal +match-anything rules (i.e., @samp{%:}) when searching for a rule to +build a prerequisite of an implicit rule (@pxref{Match-Anything Rules}). + +@node Pattern Rules, Last Resort, Chained Rules, Implicit Rules +@section Defining and Redefining Pattern Rules + +You define an implicit rule by writing a @dfn{pattern rule}. A pattern +rule looks like an ordinary rule, except that its target contains the +character @samp{%} (exactly one of them). The target is considered a +pattern for matching file names; the @samp{%} can match any nonempty +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}. + +Note that expansion using @samp{%} in pattern rules occurs +@strong{after} any variable or function expansions, which take place +when the makefile is read. @xref{Using Variables, , How to Use +Variables}, and @ref{Functions, ,Functions for Transforming Text}. + +@menu +* Pattern Intro:: An introduction to pattern rules. +* Pattern Examples:: Examples of pattern rules. +* Automatic Variables:: How to use automatic variables in the + recipe of implicit rules. +* Pattern Match:: How patterns match. +* Match-Anything Rules:: Precautions you should take prior to + defining rules that can match any + target file whatever. +* Canceling Rules:: How to override or cancel built-in rules. +@end menu + +@node Pattern Intro, Pattern Examples, Pattern Rules, Pattern Rules +@subsection Introduction to Pattern Rules +@cindex pattern rule +@cindex rule, pattern + +A pattern rule contains the character @samp{%} (exactly one of them) +in the target; otherwise, it looks exactly like an ordinary rule. The +target is a pattern for matching file names; the @samp{%} matches any +nonempty substring, while other characters match only themselves. +@cindex target pattern, implicit +@cindex @code{%}, in pattern rules + +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}. + +@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 +pattern rule to apply, its target pattern must match the file name +under consideration and all of its prerequisites (after pattern +substitution) must name files that exist or can be made. These files +become prerequisites of the target. +@cindex prerequisite pattern, implicit + +Thus, a rule of the form + +@example +%.o : %.c ; @var{recipe}@dots{} +@end example + +@noindent +specifies how to make a file @file{@var{n}.o}, with another file +@file{@var{n}.c} as its prerequisite, provided that @file{@var{n}.c} +exists or can be made. + +There may also be prerequisites that do not use @samp{%}; such a prerequisite +attaches to every file made by this pattern rule. These unvarying +prerequisites are useful occasionally. + +A pattern rule need not have any prerequisites that contain @samp{%}, or +in fact any prerequisites at all. Such a rule is effectively a general +wildcard. It provides a way to make any file that matches the target +pattern. @xref{Last Resort}. + +More than one pattern rule may match a target. In this case +@code{make} will choose the ``best fit'' rule. @xref{Pattern Match, +,How Patterns Match}. + +@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. 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: + +@example +%.o : %.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@@ +@end example + +@noindent +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}). + +Here is a second built-in rule: + +@example +% :: RCS/%,v + $(CO) $(COFLAGS) $< +@end example + +@noindent +defines a rule that can make any file @file{@var{x}} whatsoever from a +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}). + +@need 500 +This pattern rule has two targets: + +@example +@group +%.tab.c %.tab.h: %.y + bison -d $< +@end group +@end example + +@noindent +@c The following paragraph is rewritten to avoid overfull hboxes +This tells @code{make} that the recipe @samp{bison -d @var{x}.y} will +make both @file{@var{x}.tab.c} and @file{@var{x}.tab.h}. If the file +@file{foo} depends on the files @file{parse.tab.o} and @file{scan.o} +and the file @file{scan.o} depends on the file @file{parse.tab.h}, +when @file{parse.y} is changed, the recipe @samp{bison -d parse.y} +will be executed only once, and the prerequisites of both +@file{parse.tab.o} and @file{scan.o} will be satisfied. (Presumably +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.) + +@node Automatic Variables, Pattern Match, Pattern Examples, Pattern Rules +@subsection Automatic Variables +@cindex automatic variables +@cindex variables, automatic +@cindex variables, and implicit rule + +Suppose you are writing a pattern rule to compile a @samp{.c} file into a +@samp{.o} file: how do you write the @samp{cc} command so that it operates +on the right source file name? You cannot write the name in the recipe, +because the name is different each time the implicit rule is applied. + +What you do is use a special feature of @code{make}, the @dfn{automatic +variables}. These variables have values computed afresh for each rule that +is executed, based on the target and prerequisites of the rule. In this +example, you would use @samp{$@@} for the object file name and @samp{$<} +for the source file name. + +@cindex automatic variables in prerequisites +@cindex prerequisites, and automatic variables +It's very important that you recognize the limited scope in which +automatic variable values are available: they only have values within +the recipe. In particular, you cannot use them anywhere +within the target list of a rule; they have no value there and will +expand to the empty string. Also, they cannot be accessed directly +within the prerequisite list of a rule. A common mistake is +attempting to use @code{$@@} within the prerequisites list; this will +not work. However, there is a special feature of GNU @code{make}, +secondary expansion (@pxref{Secondary Expansion}), which will allow +automatic variable values to be used in prerequisite lists. + +Here is a table of automatic variables: + +@table @code +@vindex $@@ +@vindex @@ @r{(automatic variable)} +@item $@@ +The file name of the target of the rule. If the target is an archive +member, then @samp{$@@} is the name of the archive file. In a pattern +rule that has multiple targets (@pxref{Pattern Intro, ,Introduction to +Pattern Rules}), @samp{$@@} is the name of whichever target caused the +rule's recipe to be run. + +@vindex $% +@vindex % @r{(automatic variable)} +@item $% +The target member name, when the target is an archive member. +@xref{Archives}. For example, if the target is @file{foo.a(bar.o)} then +@samp{$%} is @file{bar.o} and @samp{$@@} is @file{foo.a}. @samp{$%} is +empty when the target is not an archive member. + +@vindex $< +@vindex < @r{(automatic variable)} +@item $< +The name of the first prerequisite. If the target got its recipe from +an implicit rule, this will be the first prerequisite added by the +implicit rule (@pxref{Implicit Rules}). + +@vindex $? +@vindex ? @r{(automatic variable)} +@item $? +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 + +@vindex $^ +@vindex ^ @r{(automatic variable)} +@item $^ +The names of all the prerequisites, with spaces between them. For +prerequisites which are archive members, only the named member is used +(@pxref{Archives}). A target has only one prerequisite on each other file +it depends on, no matter how many times each file is listed as a +prerequisite. So if you list a prerequisite more than once for a target, +the value of @code{$^} contains just one copy of the name. This list +does @strong{not} contain any of the order-only prerequisites; for those +see the @samp{$|} variable, below. +@cindex prerequisites, list of all +@cindex list of all prerequisites + +@vindex $+ +@vindex + @r{(automatic variable)} +@item $+ +This is like @samp{$^}, but prerequisites listed more than once are +duplicated in the order they were listed in the makefile. This is +primarily useful for use in linking commands where it is meaningful to +repeat library file names in a particular order. + +@vindex $| +@vindex | @r{(automatic variable)} +@item $| +The names of all the order-only prerequisites, with spaces between +them. + +@vindex $* +@vindex * @r{(automatic variable)} +@item $* +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. +@cindex stem, variable for + +In a static pattern rule, the stem is part of the file name that matched +the @samp{%} in the target pattern. + +In an explicit rule, there is no stem; so @samp{$*} cannot be determined +in that way. Instead, if the target name ends with a recognized suffix +(@pxref{Suffix Rules, ,Old-Fashioned Suffix Rules}), @samp{$*} is set to +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. + +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 + +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 name within the directory. The variant variables' names are +formed by appending @samp{D} or @samp{F}, respectively. The functions +@code{dir} and @code{notdir} can be used to obtain a similar effect +(@pxref{File Name Functions, , Functions for File Names}). Note, +however, that the @samp{D} variants all omit the trailing slash which +always appears in the output of the @code{dir} function. Here is a +table of the variants: + +@table @samp +@vindex $(@@D) +@vindex @@D @r{(automatic variable)} +@item $(@@D) +The directory part of the file name of the target, with the trailing +slash removed. If the value of @samp{$@@} is @file{dir/foo.o} then +@samp{$(@@D)} is @file{dir}. This value is @file{.} if @samp{$@@} does +not contain a slash. + +@vindex $(@@F) +@vindex @@F @r{(automatic variable)} +@item $(@@F) +The file-within-directory part of the file name of the target. If the +value of @samp{$@@} is @file{dir/foo.o} then @samp{$(@@F)} is +@file{foo.o}. @samp{$(@@F)} is equivalent to @samp{$(notdir $@@)}. + +@vindex $(*D) +@vindex *D @r{(automatic variable)} +@item $(*D) +@vindex $(*F) +@vindex *F @r{(automatic variable)} +@itemx $(*F) +The directory part and the file-within-directory +part of the stem; @file{dir} and @file{foo} in this example. + +@vindex $(%D) +@vindex %D @r{(automatic variable)} +@item $(%D) +@vindex $(%F) +@vindex %F @r{(automatic variable)} +@itemx $(%F) +The directory part and the file-within-directory part of the target +archive member name. This makes sense only for archive member targets +of the form @file{@var{archive}(@var{member})} and is useful only when +@var{member} may contain a directory name. (@xref{Archive Members, +,Archive Members as Targets}.) + +@vindex $( +#include +#include +#include +#include + +#include + +int plugin_is_GPL_compatible; + +char * +gen_tmpfile(const char *nm, int argc, char **argv) +@{ + int fd; + + /* Compute the size of the filename and allocate space for it. */ + int len = strlen (argv[0]) + 6 + 1; + char *buf = gmk_alloc (len); + + strcpy (buf, argv[0]); + strcat (buf, "XXXXXX"); + + fd = mkstemp(buf); + if (fd >= 0) + @{ + /* Don't leak the file descriptor. */ + close (fd); + return buf; + @} + + /* Failure. */ + fprintf (stderr, "mkstemp(%s) failed: %s\n", buf, strerror (errno)); + gmk_free (buf); + return NULL; +@} + +int +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; +@} +@end group +@end example + +Next, we will write a @file{Makefile} that can build this shared object, load +it, and use it: + +@example +@group +all: + @@echo Temporary file: $(mk-temp tmpfile.) + +load mk_temp.so + +mk_temp.so: mk_temp.c + $(CC) -shared -fPIC -o $@@ $< +@end group +@end example + +On MS-Windows, due to peculiarities of how shared objects are +produced, the compiler needs to scan the @dfn{import library} produced +when building @code{make}, typically called +@file{libgnumake-@var{version}.dll.a}, where @var{version} is the +version of the load object API. So the recipe to produce a shared +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 +@end group +@end example + +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 + +@node Integrating make, Features, Extending make, Top +@chapter Integrating GNU @code{make} +@cindex make integration + +GNU @code{make} is often one component in a larger system of tools, +including integrated development environments, compiler toolchains, +and others. The role of @code{make} is to start commands and +determine whether they succeeded or not: no special integration is +needed to accomplish that. However, sometimes it is convenient to +bind @code{make} more tightly with other parts of the system, both +higher-level (tools that invoke @code{make}) and lower-level (tools +that @code{make} invokes). + +@menu +* Job Slots:: Share job slots with GNU @code{make}. +* Terminal Output:: Control output to terminals. +@end menu + +@node Job Slots, Terminal Output, Integrating make, Integrating make +@section Sharing Job Slots with GNU @code{make} +@cindex job slots, sharing +@cindex tools, sharing job slots + +GNU @code{make} has the ability to run multiple recipes in parallel +(@pxref{Parallel, ,Parallel Execution}) and to cap the total number of +parallel jobs even across recursive invocations of @code{make} +(@pxref{Options/Recursion, ,Communicating Options to a +Sub-@code{make}}). Tools that @code{make} invokes which are also able +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}. + +@cindex jobserver +GNU @code{make} uses a method called the ``jobserver'' to control the +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. + +@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. + +Be aware that the @code{MAKEFLAGS} variable may contain multiple instances of +the @code{--jobserver-auth=} option. Only the @emph{last} instance is +relevant. + +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. + +Finally, it's critical that tools that participate in the jobserver +protocol return the exact number of slots they obtained from the +jobserver back to the jobserver before they exit, even under error +conditions. Remember that the implicit job slot should @strong{not} +be returned to the jobserver! Returning too few slots means that +those slots will be lost for the rest of the build process; returning +too many slots means that extra slots will be available. The +top-level @code{make} command will print an error message at the end +of the build if it detects an incorrect number of slots available in +the jobserver. + +As an example, suppose you are implementing a linker which provides +for multithreaded operation. You would like to enhance the linker so +that if it is invoked by GNU @code{make} it can participate in the +jobserver protocol to control how many threads are used during link. +First you will need to modify the linker to determine if the +@code{MAKEFLAGS} environment variable is set. Next you will need to +parse the value of that variable to determine if the jobserver is +available, and how to access it. If it is available then you can +access it to obtain job slots controlling how much parallelism your +tool can use. Once done your tool must return those job slots back to +the jobserver. + +@menu +* POSIX Jobserver:: Using the jobserver on POSIX systems. +* Windows Jobserver:: Using the jobserver on Windows systems. +@end menu + +@node POSIX Jobserver, Windows Jobserver, Job Slots, Job Slots +@subsection POSIX Jobserver Interaction +@cindex jobserver on POSIX + +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 +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 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 +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. + +@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 +@subsection Windows Jobserver Interaction +@cindex jobserver on Windows + +On Windows systems the jobserver is implemented as a named semaphore. +The semaphore will be set with an initial count equal to the number of +available slots; to obtain a slot you must wait on the semaphore (with +or without a timeout). To release a slot, release the semaphore. + +To access the semaphore you must parse the @code{MAKEFLAGS} variable and +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: + +@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. + +@item +Your tool should be sure to release the semaphore for 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. +@end itemize + +@node Terminal Output, , Job Slots, Integrating make +@section Synchronized Terminal Output +@cindex parallel output to terminal +@cindex terminal, output to + +Normally GNU @code{make} will invoke all commands with access to the +same standard and error outputs that @code{make} itself was started +with. A number of tools will detect whether the output is a terminal +or not-a-terminal, and use this information to change the output +style. For example if the output goes to a terminal the tool may add +control 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 @code{--output-sync} (@pxref{Parallel Output, ,Output During +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 +means that all tools invoked by @code{make} will believe that their +output is not going to be displayed on a terminal, even when it will +be (because @code{make} will display it there after the command is +completed). + +In order to facilitate tools which would like to determine whether or +not their output will be displayed on a terminal, GNU @code{make} will +set the @code{MAKE_TERMOUT} and @code{MAKE_TERMERR} environment +variables before invoking any commands. Tools which would like to +determine whether standard or error output (respectively) will be +displayed on a terminal can check these environment variables to +determine if they exist and contain a non-empty value. If so the tool +can assume that the output will (eventually) be displayed on a +terminal. If the variables are not set or have an empty value, then +the tool should fall back to its normal methods of detecting whether +output is going to a terminal or not. + +The content of the variables can be parsed to determine the type of +terminal which will be used to display the output. + +Similarly, environments which invoke @code{make} and would like to +capture the output and eventually display it on a terminal (or some +display which can interpret terminal control characters) can set these +variables before invoking @code{make}. GNU @code{make} will not +modify these environment variables if they already exist when it +starts. + +@node Features, Missing, Integrating make, Top +@chapter Features of GNU @code{make} +@cindex features of GNU @code{make} +@cindex portability +@cindex compatibility + +Here is a summary of the features of GNU @code{make}, for comparison +with and credit to other versions of @code{make}. We consider the +features of @code{make} in 4.2 BSD systems as a baseline. If you are +concerned with writing portable makefiles, you should not use the +features of @code{make} listed here, nor the ones in @ref{Missing}. + +Many features come from the version of @code{make} in System V. + +@itemize @bullet +@item +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). + +@item +Included makefiles. @xref{Include, ,Including Other Makefiles}. +Allowing multiple files to be included with a single directive is a GNU +extension. + +@item +Variables are read from and communicated via the environment. +@xref{Environment, ,Variables from the Environment}. + +@item +Options passed through the variable @code{MAKEFLAGS} to recursive +invocations of @code{make}. +@xref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}. + +@item +The automatic variable @code{$%} is set to the member name +in an archive reference. @xref{Automatic Variables}. + +@item +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}. + +@item +Substitution variable references. +@xref{Reference, ,Basics of Variable References}. + +@item +The command line options @samp{-b} and @samp{-m}, accepted and +ignored. In System V @code{make}, these options actually do something. + +@item +Execution of recursive commands to run @code{make} via the variable +@code{MAKE} even if @samp{-n}, @samp{-q} or @samp{-t} is specified. +@xref{Recursion, ,Recursive Use of @code{make}}. + +@item +Support for suffix @samp{.a} in suffix rules. @xref{Archive Suffix +Rules}. This feature is obsolete in GNU @code{make}, because the +general feature of rule chaining (@pxref{Chained Rules, ,Chains of +Implicit Rules}) allows one pattern rule for installing members in an +archive (@pxref{Archive Update}) to be sufficient. + +@item +The arrangement of lines and backslash/newline combinations in +recipes is retained when the recipes are printed, so they appear as +they do in the makefile, except for the stripping of initial +whitespace. +@end itemize + +The following features were inspired by various other versions of +@code{make}. In some cases it is unclear exactly which versions inspired +which others. + +@itemize @bullet +@item +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}. + +@item +Rule chaining and implicit intermediate files. +This was implemented by Stu Feldman in his version of @code{make} +for AT&T Eighth Edition Research Unix, and later by Andrew Hume of +AT&T Bell Labs in his @code{mk} program (where he terms it +``transitive closure''). We do not really know if +we got this from either of them or thought it up ourselves at the +same time. @xref{Chained Rules, ,Chains of Implicit Rules}. + +@item +The automatic variable @code{$^} containing a list of all prerequisites +of the current target. We did not invent this, but we have no idea who +did. @xref{Automatic Variables}. The automatic variable +@code{$+} is a simple extension of @code{$^}. + +@item +The ``what if'' flag (@samp{-W} in GNU @code{make}) was (as far as we know) +invented by Andrew Hume in @code{mk}. +@xref{Instead of Execution, ,Instead of Executing Recipes}. + +@item +The concept of doing several things at once (parallelism) exists in +many incarnations of @code{make} and similar programs, though not in the +System V or BSD implementations. @xref{Execution, ,Recipe Execution}. + +@item +A number of different build tools that support parallelism also +support collecting output and displaying as a single block. +@xref{Parallel Output, ,Output During Parallel Execution}. + +@item +Modified variable references using pattern substitution come from +SunOS 4. @xref{Reference, ,Basics of Variable References}. +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. + +@item +The special significance of @samp{+} characters preceding recipe lines +(@pxref{Instead of Execution, ,Instead of Executing Recipes}) is +mandated by @cite{IEEE Standard 1003.2-1992} (POSIX.2). + +@item +The @samp{+=} syntax to append to the value of a variable comes from SunOS +4 @code{make}. @xref{Appending, , Appending More Text to Variables}. + +@item +The syntax @w{@samp{@var{archive}(@var{mem1} @var{mem2}@dots{})}} to list +multiple members in a single archive file comes from SunOS 4 @code{make}. +@xref{Archive Members}. + +@item +The @code{-include} directive to include makefiles with no error for a +nonexistent file comes from SunOS 4 @code{make}. (But note that SunOS 4 +@code{make} does not allow multiple makefiles to be specified in one +@code{-include} directive.) The same feature appears with the name +@code{sinclude} in SGI @code{make} and perhaps others. + +@item +The @code{!=} shell assignment operator exists in many BSD of +@code{make} and is purposefully implemented here to behave identically +to those implementations. + +@item +Various build management tools are implemented using scripting +languages such as Perl or Python and thus provide a natural embedded +scripting language, similar to GNU @code{make}'s integration of GNU +Guile. +@end itemize + +The remaining features are inventions new in GNU @code{make}: + +@itemize @bullet +@item +Use the @samp{-v} or @samp{--version} option to print version and +copyright information. + +@item +Use the @samp{-h} or @samp{--help} option to summarize the options to +@code{make}. + +@item +Simply-expanded variables. @xref{Flavors, ,The Two Flavors of Variables}. + +@item +Pass command line variable assignments automatically through the +variable @code{MAKE} to recursive @code{make} invocations. +@xref{Recursion, ,Recursive Use of @code{make}}. + +@item +Use the @samp{-C} or @samp{--directory} command option to change +directory. @xref{Options Summary, ,Summary of Options}. + +@item +Make verbatim variable definitions with @code{define}. +@xref{Multi-Line, ,Defining Multi-Line Variables}. + +@item +Declare phony targets with the special target @code{.PHONY}. + +Andrew Hume of AT&T Bell Labs implemented a similar feature with a +different syntax in his @code{mk} program. This seems to be a case of +parallel discovery. @xref{Phony Targets, ,Phony Targets}. + +@item +Manipulate text by calling functions. +@xref{Functions, ,Functions for Transforming Text}. + +@item +Use the @samp{-o} or @samp{--old-file} +option to pretend a file's modification-time is old. +@xref{Avoiding Compilation, ,Avoiding Recompilation of Some Files}. + +@item +Conditional execution. + +This feature has been implemented numerous times in various versions +of @code{make}; it seems a natural extension derived from the features +of the C preprocessor and similar macro languages and is not a +revolutionary concept. @xref{Conditionals, ,Conditional Parts of Makefiles}. + +@item +Specify a search path for included makefiles. +@xref{Include, ,Including Other Makefiles}. + +@item +Specify extra makefiles to read with an environment variable. +@xref{MAKEFILES Variable, ,The Variable @code{MAKEFILES}}. + +@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. + +@item +Use a special search method for library prerequisites written in the +form @samp{-l@var{name}}. +@xref{Libraries/Search, ,Directory Search for Link Libraries}. + +@item +Allow suffixes for suffix rules +(@pxref{Suffix Rules, ,Old-Fashioned Suffix Rules}) to contain any +characters. In other versions of @code{make}, they must begin with +@samp{.} and not contain any @samp{/} characters. + +@item +Keep track of the current level of @code{make} recursion using the +variable @code{MAKELEVEL}. @xref{Recursion, ,Recursive Use of @code{make}}. + +@item +Provide any goals given on the command line in the variable +@code{MAKECMDGOALS}. @xref{Goals, ,Arguments to Specify the Goals}. + +@item +Specify static pattern rules. @xref{Static Pattern, ,Static Pattern Rules}. + +@item +Provide selective @code{vpath} search. +@xref{Directory Search, ,Searching Directories for Prerequisites}. + +@item +Provide computed variable references. +@xref{Reference, ,Basics of Variable References}. + +@item +Update makefiles. @xref{Remaking Makefiles, ,How Makefiles Are Remade}. +System V @code{make} has a very, very limited form of this +functionality in that it will check out SCCS files for makefiles. + +@item +Various new built-in implicit rules. +@xref{Catalogue of Rules, ,Catalogue of Built-In Rules}. + +@item +Load dynamic objects which can modify the behavior of @code{make}. +@xref{Loading Objects, ,Loading Dynamic Objects}. +@end itemize + +@node Missing, Makefile Conventions, Features, Top +@chapter Incompatibilities and Missing Features +@cindex incompatibilities +@cindex missing features +@cindex features, missing + +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. + +@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}. + +This feature was not put into GNU @code{make} because of the +non-modularity of putting knowledge into @code{make} of the internal +format of archive file symbol tables. +@xref{Archive Symbols, ,Updating Archive Symbol Directories}. + +@item +Suffixes (used in suffix rules) that end with the character @samp{~} +have a special meaning to System V @code{make}; +they refer to the SCCS file that corresponds +to the file one would get without the @samp{~}. For example, the +suffix rule @samp{.c~.o} would make the file @file{@var{n}.o} from +the SCCS file @file{s.@var{n}.c}. For complete coverage, a whole +series of such suffix rules is required. +@xref{Suffix Rules, ,Old-Fashioned Suffix Rules}. + +In GNU @code{make}, this entire series of cases is handled by two +pattern rules for extraction from SCCS, in combination with the +general feature of rule chaining. +@xref{Chained Rules, ,Chains of Implicit Rules}. + +@item +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. + +@item +In some Unix @code{make}s, the automatic variable @code{$*} appearing in +the prerequisites of a rule has the amazingly strange ``feature'' of +expanding to the full name of the @emph{target of that rule}. We cannot +imagine what went on in the minds of Unix @code{make} developers to do +this; it is utterly inconsistent with the normal definition of @code{$*}. +@vindex * @r{(automatic variable), unsupported bizarre usage} + +@item +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: + +@example +@group +foo.o: + cc -c foo.c +@end group +@end example + +@noindent +and Unix @code{make} will intuit that @file{foo.o} depends on +@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. + +@item +GNU @code{make} does not include any built-in implicit rules for +compiling or preprocessing EFL programs. If we hear of anyone who is +using EFL, we will gladly add them. + +@item +It appears that in SVR4 @code{make}, a suffix rule can be specified +with no recipe, and it is treated as if it had an empty recipe +(@pxref{Empty Recipes}). For example: + +@example +.c.a: +@end example + +@noindent +will override the built-in @file{.c.a} suffix rule. + +We feel that it is cleaner for a rule without a recipe to always simply +add to the prerequisite list for the target. The above example can be +easily rewritten to get the desired behavior in GNU @code{make}: + +@example +.c.a: ; +@end example + +@item +Some versions of @code{make} invoke the shell with the @samp{-e} flag, +except under @samp{-k} (@pxref{Testing, ,Testing the Compilation of a +Program}). The @samp{-e} flag tells the shell to exit as soon as any +program it runs returns a nonzero status. We feel it is cleaner to +write each line of the recipe to stand on its own and not require this +special treatment. +@end itemize + +@comment The makefile standards are in a separate file that is also +@comment included by standards.texi. +@include make-stds.texi + +@node Quick Reference, Error Messages, Makefile Conventions, Top +@appendix Quick Reference + +This appendix summarizes the directives, text manipulation functions, +and special variables which GNU @code{make} understands. +@xref{Special Targets}, @ref{Catalogue of Rules, ,Catalogue of Built-In Rules}, +and @ref{Options Summary, ,Summary of Options}, +for other summaries. + +Here is a summary of the directives GNU @code{make} recognizes: + +@table @code +@item define @var{variable} +@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 +Define multi-line variables.@* +@xref{Multi-Line}. + +@item undefine @var{variable} +Undefining variables.@* +@xref{Undefine Directive}. + +@item ifdef @var{variable} +@itemx ifndef @var{variable} +@itemx ifeq (@var{a},@var{b}) +@itemx ifeq "@var{a}" "@var{b}" +@itemx ifeq '@var{a}' '@var{b}' +@itemx ifneq (@var{a},@var{b}) +@itemx ifneq "@var{a}" "@var{b}" +@itemx ifneq '@var{a}' '@var{b}' +@itemx else +@itemx endif +Conditionally evaluate part of the makefile.@* +@xref{Conditionals}. + +@item include @var{file} +@itemx -include @var{file} +@itemx sinclude @var{file} +Include another makefile.@* +@xref{Include, ,Including Other Makefiles}. + +@item override @var{variable-assignment} +Define a variable, overriding any previous definition, even one from +the command line.@* +@xref{Override Directive, ,The @code{override} Directive}. + +@item export +Tell @code{make} to export all variables to child processes by default.@* +@xref{Variables/Recursion, , Communicating Variables to a Sub-@code{make}}. + +@item export @var{variable} +@itemx export @var{variable-assignment} +@itemx unexport @var{variable} +Tell @code{make} whether or not to export a particular variable to child +processes.@* +@xref{Variables/Recursion, , Communicating Variables to a Sub-@code{make}}. + +@item private @var{variable-assignment} +Do not allow this variable assignment to be inherited by prerequisites.@* +@xref{Suppressing Inheritance}. + +@item vpath @var{pattern} @var{path} +Specify a search path for files matching a @samp{%} pattern.@* +@xref{Selective Search, , The @code{vpath} Directive}. + +@item vpath @var{pattern} +Remove all search paths previously specified for @var{pattern}. + +@item vpath +Remove all search paths previously specified in any @code{vpath} +directive. +@end table + +Here is a summary of the built-in functions (@pxref{Functions}): + +@table @code +@item $(subst @var{from},@var{to},@var{text}) +Replace @var{from} with @var{to} in @var{text}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(patsubst @var{pattern},@var{replacement},@var{text}) +Replace words matching @var{pattern} with @var{replacement} in @var{text}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(strip @var{string}) +Remove excess whitespace characters from @var{string}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(findstring @var{find},@var{text}) +Locate @var{find} in @var{text}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(filter @var{pattern}@dots{},@var{text}) +Select words in @var{text} that match one of the @var{pattern} words.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(filter-out @var{pattern}@dots{},@var{text}) +Select words in @var{text} that @emph{do not} match any of the @var{pattern} words.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(sort @var{list}) +Sort the words in @var{list} lexicographically, removing duplicates.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(word @var{n},@var{text}) +Extract the @var{n}th word (one-origin) of @var{text}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(words @var{text}) +Count the number of words in @var{text}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(wordlist @var{s},@var{e},@var{text}) +Returns the list of words in @var{text} from @var{s} to @var{e}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(firstword @var{names}@dots{}) +Extract the first word of @var{names}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(lastword @var{names}@dots{}) +Extract the last word of @var{names}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(dir @var{names}@dots{}) +Extract the directory part of each file name.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(notdir @var{names}@dots{}) +Extract the non-directory part of each file name.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(suffix @var{names}@dots{}) +Extract the suffix (the last @samp{.} and following characters) of each file name.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(basename @var{names}@dots{}) +Extract the base name (name without suffix) of each file name.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(addsuffix @var{suffix},@var{names}@dots{}) +Append @var{suffix} to each word in @var{names}.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(addprefix @var{prefix},@var{names}@dots{}) +Prepend @var{prefix} to each word in @var{names}.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(join @var{list1},@var{list2}) +Join two parallel lists of words.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(wildcard @var{pattern}@dots{}) +Find file names matching a shell file name pattern (@emph{not} a +@samp{%} pattern).@* +@xref{Wildcard Function, ,The Function @code{wildcard}}. + +@item $(realpath @var{names}@dots{}) +For each file name in @var{names}, expand to an absolute name that +does not contain any @code{.}, @code{..}, nor symlinks.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(abspath @var{names}@dots{}) +For each file name in @var{names}, expand to an absolute name that +does not contain any @code{.} or @code{..} components, but preserves +symlinks.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(error @var{text}@dots{}) +When this function is evaluated, @code{make} generates a fatal error +with the message @var{text}.@* +@xref{Make Control Functions, ,Functions That Control Make}. + +@item $(warning @var{text}@dots{}) +When this function is evaluated, @code{make} generates a warning with +the message @var{text}.@* +@xref{Make Control Functions, ,Functions That Control Make}. + +@item $(shell @var{command}) +Execute a shell command and return its output.@* +@xref{Shell Function, , The @code{shell} Function}. + +@item $(origin @var{variable}) +Return a string describing how the @code{make} variable @var{variable} was +defined.@* +@xref{Origin Function, , The @code{origin} Function}. + +@item $(flavor @var{variable}) +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.@* +@xref{Foreach Function, ,The @code{foreach} Function}. + +@item $(if @var{condition},@var{then-part}[,@var{else-part}]) +Evaluate the condition @var{condition}; if it's non-empty substitute +the expansion of the @var{then-part} otherwise substitute the +expansion of the @var{else-part}.@* +@xref{Conditional Functions, ,Functions for Conditionals}. + +@item $(or @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]]) +Evaluate each condition @var{conditionN} one at a time; substitute the +first non-empty expansion. If all expansions are empty, substitute +the empty string.@* +@xref{Conditional Functions, ,Functions for Conditionals}. + +@item $(and @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]]) +Evaluate each condition @var{conditionN} one at a time; if any +expansion results in the empty string substitute the empty string. If +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.@* +@xref{Call Function, ,The @code{call} Function}. + +@item $(eval @var{text}) +Evaluate @var{text} then read the results as makefile commands. +Expands to the empty string.@* +@xref{Eval Function, ,The @code{eval} Function}. + +@item $(file @var{op} @var{filename},@var{text}) +Expand the arguments, then open the file @var{filename} using mode +@var{op} and write @var{text} to that file.@* +@xref{File Function, ,The @code{file} Function}. + +@item $(value @var{var}) +Evaluates to the contents of the variable @var{var}, with no expansion +performed on it.@* +@xref{Value Function, ,The @code{value} Function}. +@end table + +Here is a summary of the automatic variables. +@xref{Automatic Variables}, +for full information. + +@table @code +@item $@@ +The file name of the target. + +@item $% +The target member name, when the target is an archive member. + +@item $< +The name of the first prerequisite. + +@item $? +The names of all the prerequisites that are +newer than the target, with spaces between them. +For prerequisites which are archive members, only +the named member is used (@pxref{Archives}). + +@item $^ +@itemx $+ +The names of all the prerequisites, with spaces between them. For +prerequisites which are archive members, only the named member is used +(@pxref{Archives}). The value of @code{$^} omits duplicate +prerequisites, while @code{$+} retains them and preserves their order. + +@item $* +The stem with which an implicit rule matches +(@pxref{Pattern Match, ,How Patterns Match}). + +@item $(@@D) +@itemx $(@@F) +The directory part and the file-within-directory part of @code{$@@}. + +@item $(*D) +@itemx $(*F) +The directory part and the file-within-directory part of @code{$*}. + +@item $(%D) +@itemx $(%F) +The directory part and the file-within-directory part of @code{$%}. + +@item $( tar-`sed -e '/version_string/!d' \ + -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \ + -e q + version.c`.shar.Z +@end group + +@group +.PHONY: dist +dist: $(SRCS) $(AUX) + echo tar-`sed \ + -e '/version_string/!d' \ + -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \ + -e q + version.c` > .fname + -rm -rf `cat .fname` + mkdir `cat .fname` + ln $(SRCS) $(AUX) `cat .fname` + tar chZf `cat .fname`.tar.Z `cat .fname` + -rm -rf `cat .fname` .fname +@end group + +@group +tar.zoo: $(SRCS) $(AUX) + -rm -rf tmp.dir + -mkdir tmp.dir + -rm tar.zoo + for X in $(SRCS) $(AUX) ; do \ + echo $$X ; \ + sed 's/$$/^M/' $$X \ + > tmp.dir/$$X ; done + cd tmp.dir ; zoo aM ../tar.zoo * + -rm -rf tmp.dir +@end group +@end example + +@node GNU Free Documentation License, Concept Index, Complex Makefile, Top +@appendix GNU Free Documentation License +@cindex FDL, GNU Free Documentation License +@include fdl.texi + +@node Concept Index, Name Index, GNU Free Documentation License, Top +@unnumbered Index of Concepts + +@printindex cp + +@node Name Index, , Concept Index, Top +@unnumbered Index of Functions, Variables, & Directives + +@printindex fn + +@bye + +@c Local Variables: +@c eval: (setq fill-column 78) +@c End: diff --git a/local/recipes/dev/gnu-make/source/doc/stamp-vti b/local/recipes/dev/gnu-make/source/doc/stamp-vti new file mode 100644 index 0000000000..c1ea3bef16 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/stamp-vti @@ -0,0 +1,4 @@ +@set UPDATED 31 October 2022 +@set UPDATED-MONTH October 2022 +@set EDITION 4.4 +@set VERSION 4.4 diff --git a/local/recipes/dev/gnu-make/source/doc/version.texi b/local/recipes/dev/gnu-make/source/doc/version.texi new file mode 100644 index 0000000000..c1ea3bef16 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/version.texi @@ -0,0 +1,4 @@ +@set UPDATED 31 October 2022 +@set UPDATED-MONTH October 2022 +@set EDITION 4.4 +@set VERSION 4.4 diff --git a/local/recipes/dev/gnu-make/source/lib/Makefile.am b/local/recipes/dev/gnu-make/source/lib/Makefile.am new file mode 100644 index 0000000000..1301aa0d89 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/Makefile.am @@ -0,0 +1,242 @@ +## DO NOT EDIT! GENERATED AUTOMATICALLY! +## Process this file with automake to produce Makefile.in. +# 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 +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this file. If not, see . +# +# As a special exception to the GNU General Public License, +# this file may be distributed as part of a program that +# contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# Reproduce by: +# gnulib-tool --import --local-dir=gl \ +# --lib=libgnu \ +# --source-base=lib \ +# --m4-base=m4 \ +# --doc-base=doc \ +# --tests-base=tests \ +# --aux-dir=build-aux \ +# --no-conditional-dependencies \ +# --no-libtool \ +# --macro-prefix=gl \ +# alloca \ +# fdl \ +# findprog-in \ +# getloadavg \ +# host-cpu-c-abi \ +# largefile \ +# make-glob \ +# make-macros + +AUTOMAKE_OPTIONS = 1.14 gnits + +SUBDIRS = +noinst_HEADERS = +noinst_LIBRARIES = +noinst_LTLIBRARIES = +EXTRA_DIST = +BUILT_SOURCES = +SUFFIXES = +MOSTLYCLEANFILES = core *.stackdump +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = +# No GNU Make output. + +AM_CPPFLAGS = +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 alloca + + +libgnu_a_LIBADD += @ALLOCA@ +libgnu_a_DEPENDENCIES += @ALLOCA@ +EXTRA_DIST += alloca.c + +EXTRA_libgnu_a_SOURCES += alloca.c + +## end gnulib module alloca + +## begin gnulib module alloca-opt + +BUILT_SOURCES += $(ALLOCA_H) + +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +if GL_GENERATE_ALLOCA_H +alloca.h: alloca.in.h $(top_builddir)/config.status + $(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 $@ +endif +MOSTLYCLEANFILES += alloca.h alloca.h-t + +EXTRA_DIST += alloca.in.h + +## end gnulib module alloca-opt + +## begin gnulib module concat-filename + +libgnu_a_SOURCES += concat-filename.c + +EXTRA_DIST += concat-filename.h + +## end gnulib module concat-filename + +## begin gnulib module filename + + +EXTRA_DIST += filename.h + +## end gnulib module filename + +## begin gnulib module findprog-in + +libgnu_a_SOURCES += findprog.h findprog-in.c + +## end gnulib module findprog-in + +## begin gnulib module gen-header + +# In 'sed', replace the pattern space with a "DO NOT EDIT" comment. +SED_HEADER_NOEDIT = s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */, + +# '$(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 + +# '$(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' + +# 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 + +## begin gnulib module getloadavg + +if GL_COND_OBJ_GETLOADAVG +libgnu_a_SOURCES += getloadavg.c +endif + +## end gnulib module getloadavg + +## begin gnulib module intprops + + +EXTRA_DIST += intprops.h + +## end gnulib module intprops + +## begin gnulib module make-glob + +if !USE_SYSTEM_GLOB +libgnu_a_SOURCES += fnmatch.c + +BUILT_SOURCES += fnmatch.h + +fnmatch.h: fnmatch.in.h $(top_builddir)/config.status + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + cat $(srcdir)/fnmatch.in.h; \ + } > $@-t && \ + mv -f $@-t $@ + +MOSTLYCLEANFILES += fnmatch.h fnmatch.h-t + +libgnu_a_SOURCES += glob.c + +BUILT_SOURCES += glob.h + +glob.h: glob.in.h $(top_builddir)/config.status + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + cat $(srcdir)/glob.in.h; \ + } > $@-t && \ + mv -f $@-t $@ + +MOSTLYCLEANFILES += glob.h glob.h-t +endif + +EXTRA_DIST += fnmatch.in.h glob.in.h + +EXTRA_DIST += fnmatch.c fnmatch.in.h glob.c glob.in.h + +EXTRA_libgnu_a_SOURCES += fnmatch.c glob.c + +## end gnulib module make-glob + +## begin gnulib module snippet/warn-on-use + +# 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. + +WARN_ON_USE_H=$(srcdir)/warn-on-use.h + +EXTRA_DIST += warn-on-use.h + +## end gnulib module snippet/warn-on-use + +## begin gnulib module stdbool + +BUILT_SOURCES += $(STDBOOL_H) + +# We need the following in order to create when the system +# doesn't have one that works. +if GL_GENERATE_STDBOOL_H +stdbool.h: stdbool.in.h $(top_builddir)/config.status + $(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 $@ +endif +MOSTLYCLEANFILES += stdbool.h stdbool.h-t + +EXTRA_DIST += stdbool.in.h + +## end gnulib module stdbool + + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + fi; \ + done; \ + : +distclean-local: distclean-gnulib-libobjs +distclean-gnulib-libobjs: + -rm -f @gl_LIBOBJDEPS@ +maintainer-clean-local: distclean-gnulib-libobjs diff --git a/local/recipes/dev/gnu-make/source/lib/Makefile.in b/local/recipes/dev/gnu-make/source/lib/Makefile.in new file mode 100644 index 0000000000..d095d78414 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/Makefile.in @@ -0,0 +1,1022 @@ +# Makefile.in generated by automake 1.18.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2025 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# 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 +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this file. If not, see . +# +# As a special exception to the GNU General Public License, +# this file may be distributed as part of a program that +# contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# Reproduce by: +# gnulib-tool --import --local-dir=gl \ +# --lib=libgnu \ +# --source-base=lib \ +# --m4-base=m4 \ +# --doc-base=doc \ +# --tests-base=tests \ +# --aux-dir=build-aux \ +# --no-conditional-dependencies \ +# --no-libtool \ +# --macro-prefix=gl \ +# alloca \ +# fdl \ +# findprog-in \ +# getloadavg \ +# host-cpu-c-abi \ +# largefile \ +# make-glob \ +# make-macros + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@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/acinclude.m4 $(top_srcdir)/m4/alloca.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/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) +DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +LTLIBRARIES = $(noinst_LTLIBRARIES) +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libgnu_a_AR = $(AR) $(ARFLAGS) +libgnu_a_RANLIB = $(RANLIB) +am__DEPENDENCIES_1 = +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@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__maybe_remake_depfiles = depfiles +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@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgnu_a_SOURCES) $(EXTRA_libgnu_a_SOURCES) +DIST_SOURCES = $(am__libgnu_a_SOURCES_DIST) $(EXTRA_libgnu_a_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir distdir-am +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/depcomp alloca.c +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +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@ +GUILE_CFLAGS = @GUILE_CFLAGS@ +GUILE_LIBS = @GUILE_LIBS@ +HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE__BOOL = @HAVE__BOOL@ +HOST_CPU = @HOST_CPU@ +HOST_CPU_C_ABI = @HOST_CPU_C_ABI@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ +LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKE_HOST = @MAKE_HOST@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +REMOTE = @REMOTE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STDBOOL_H = @STDBOOL_H@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ +am__tar = @am__tar@ +am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +gltests_WITNESS = @gltests_WITNESS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = 1.14 gnits +SUBDIRS = +noinst_HEADERS = +noinst_LIBRARIES = libgnu.a +noinst_LTLIBRARIES = +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 \ + $(am__append_4) stdbool.h stdbool.h-t +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = +# No GNU Make output. +AM_CPPFLAGS = +AM_CFLAGS = +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 = alloca.c fnmatch.c glob.c + +# In 'sed', replace the pattern space with a "DO NOT EDIT" comment. +SED_HEADER_NOEDIT = s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */, + +# '$(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 + +# '$(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' + +# 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 +# need it. This is ensured by the applicability 'all' defined above. +WARN_ON_USE_H = $(srcdir)/warn-on-use.h +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnits lib/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -$(am__rm_f) $(noinst_LIBRARIES) + +clean-noinstLTLIBRARIES: + -$(am__rm_f) $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + echo rm -f $${locs}; \ + $(am__rm_f) $${locs} + +libgnu.a: $(libgnu_a_OBJECTS) $(libgnu_a_DEPENDENCIES) $(EXTRA_libgnu_a_DEPENDENCIES) + $(AM_V_at)-rm -f libgnu.a + $(AM_V_AR)$(libgnu_a_AR) libgnu.a $(libgnu_a_OBJECTS) $(libgnu_a_LIBADD) + $(AM_V_at)$(libgnu_a_RANLIB) libgnu.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloca.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) + @: >>$@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +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, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -$(am__rm_f) $(MOSTLYCLEANFILES) + +clean-generic: + -$(am__rm_f) $(CLEANFILES) + +distclean-generic: + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) + -$(am__rm_f) $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -$(am__rm_f) $(BUILT_SOURCES) + -$(am__rm_f) $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-generic clean-noinstLIBRARIES clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-recursive + -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-local distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -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-local + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-local + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) all check install install-am \ + 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-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 + + +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +@GL_GENERATE_ALLOCA_H_TRUE@alloca.h: alloca.in.h $(top_builddir)/config.status +@GL_GENERATE_ALLOCA_H_TRUE@ $(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 $@ + +@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! */'; \ +@USE_SYSTEM_GLOB_FALSE@ cat $(srcdir)/fnmatch.in.h; \ +@USE_SYSTEM_GLOB_FALSE@ } > $@-t && \ +@USE_SYSTEM_GLOB_FALSE@ mv -f $@-t $@ + +@USE_SYSTEM_GLOB_FALSE@glob.h: glob.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! */'; \ +@USE_SYSTEM_GLOB_FALSE@ cat $(srcdir)/glob.in.h; \ +@USE_SYSTEM_GLOB_FALSE@ } > $@-t && \ +@USE_SYSTEM_GLOB_FALSE@ mv -f $@-t $@ + +# We need the following in order to create when the system +# doesn't have one that works. +@GL_GENERATE_STDBOOL_H_TRUE@stdbool.h: stdbool.in.h $(top_builddir)/config.status +@GL_GENERATE_STDBOOL_H_TRUE@ $(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 $@ + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + 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. +.NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/local/recipes/dev/gnu-make/source/lib/alloca.c b/local/recipes/dev/gnu-make/source/lib/alloca.c new file mode 100644 index 0000000000..5eb16a9ff5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/alloca.c @@ -0,0 +1,167 @@ +/* alloca.c -- allocate automatically reclaimed memory + 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 + that it is automatically reclaimed upon procedure exit, + was inspired by discussions with J. Q. Johnson of Cornell. + J.Otto Tennant contributed the Cray support. + + There are some preprocessor constants that can + be defined when compiling for your specific system, for + improved efficiency; however, the defaults should be okay. + + The general concept of this implementation is to keep + track of all alloca-allocated blocks, and reclaim any + that are found to be deeper in the stack than the current + invocation. This heuristic does not reclaim storage as + soon as it becomes invalid, but it will do so eventually. + + As a special case, alloca(0) reclaims storage without + allocating any. It is a good idea to use alloca(0) in + your main control loop, etc. to force garbage collection. */ + +#include + +#include + +#include +#include + +/* 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 + +/* Define STACK_DIRECTION if you know the direction of stack + growth for your system; otherwise it will be automatically + deduced at run-time. + + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ + +# ifndef STACK_DIRECTION +# define STACK_DIRECTION 0 /* Direction unknown. */ +# endif + +# if STACK_DIRECTION != 0 + +# define STACK_DIR STACK_DIRECTION /* Known at compile-time. */ + +# else /* STACK_DIRECTION == 0; need run-time code. */ + +static int stack_dir; /* 1 or -1 once known. */ +# define STACK_DIR stack_dir + +static int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +# endif /* STACK_DIRECTION == 0 */ + +/* An "alloca header" is used to: + (a) chain together all alloca'ed blocks; + (b) keep track of stack depth. + + It is very important that sizeof(header) agree with malloc + alignment chunk size. The following default should work okay. */ + +# ifndef ALIGN_SIZE +# define ALIGN_SIZE sizeof(double) +# endif + +typedef union hdr +{ + char align[ALIGN_SIZE]; /* To force sizeof(header). */ + struct + { + union hdr *next; /* For chaining headers. */ + char *deep; /* For stack depth measure. */ + } h; +} header; + +static header *last_alloca_header = NULL; /* -> last alloca header. */ + +/* Return a pointer to at least SIZE bytes of storage, + which will be automatically reclaimed upon exit from + the procedure that called alloca. Originally, this space + was supposed to be taken from the current stack frame of the + caller, but that method cannot be made to work for some + implementations of C, for example under Gould's UTX/32. */ + +void * +alloca (size_t size) +{ + auto char probe; /* Probes stack depth: */ + register char *depth = &probe; + +# if STACK_DIRECTION == 0 + if (STACK_DIR == 0) /* Unknown growth direction. */ + STACK_DIR = find_stack_direction (NULL, (size & 1) + 20); +# endif + + /* Reclaim garbage, defined as all alloca'd storage that + was allocated from deeper in the stack than currently. */ + + { + register header *hp; /* Traverses linked list. */ + + for (hp = last_alloca_header; hp != NULL;) + if ((STACK_DIR > 0 && hp->h.deep > depth) + || (STACK_DIR < 0 && hp->h.deep < depth)) + { + register header *np = hp->h.next; + + free (hp); /* Collect garbage. */ + + hp = np; /* -> next header. */ + } + else + break; /* Rest are not deeper. */ + + last_alloca_header = hp; /* -> last valid storage. */ + } + + if (size == 0) + return NULL; /* No allocation required. */ + + /* Allocate combined header + user data storage. */ + + { + /* Address of header. */ + register header *new; + + size_t combined_size = sizeof (header) + size; + if (combined_size < sizeof (header)) + memory_full (); + + new = malloc (combined_size); + + if (! new) + memory_full (); + + new->h.next = last_alloca_header; + new->h.deep = depth; + + last_alloca_header = new; + + /* User storage begins just after header. */ + + return (void *) (new + 1); + } +} + +# endif /* no alloca */ +#endif /* not GCC || clang */ diff --git a/local/recipes/dev/gnu-make/source/lib/alloca.in.h b/local/recipes/dev/gnu-make/source/lib/alloca.in.h new file mode 100644 index 0000000000..e2b146138d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/alloca.in.h @@ -0,0 +1,72 @@ +/* Memory allocation on the stack. + + Copyright (C) 1995, 1999, 2001-2004, 2006-2022 Free Software Foundation, + Inc. + + 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 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H + means there is a real alloca function. */ +#ifndef _GL_ALLOCA_H +#define _GL_ALLOCA_H + +/* alloca (N) returns a pointer to N bytes of memory + allocated on the stack, which will last until the function returns. + Use of alloca should be avoided: + - inside arguments of function calls - undefined behaviour, + - in inline functions - the allocation may actually last until the + calling function returns, + - for huge N (say, N >= 65536) - you never know how large (or small) + the stack is, and when the stack cannot fulfill the memory allocation + request, the program just crashes. + */ + +#ifndef alloca + /* Some version of mingw have an that causes trouble when + included after 'alloca' gets defined as a macro. As a workaround, + include this first and define 'alloca' as a macro afterwards + if needed. */ +# if defined __GNUC__ && (defined _WIN32 && ! defined __CYGWIN__) && @HAVE_ALLOCA_H@ +# include_next +# endif +#endif +#ifndef alloca +# if defined __GNUC__ || (__clang_major__ >= 4) +# define alloca __builtin_alloca +# elif defined _AIX +# define alloca __alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# elif defined __DECC && defined __VMS +# define alloca __ALLOCA +# elif defined __TANDEM && defined _TNS_E_TARGET +# ifdef __cplusplus +extern "C" +# endif +void *_alloca (unsigned short); +# pragma intrinsic (_alloca) +# define alloca _alloca +# elif defined __MVS__ +# include +# else +# include +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +#endif /* _GL_ALLOCA_H */ diff --git a/local/recipes/dev/gnu-make/source/lib/concat-filename.c b/local/recipes/dev/gnu-make/source/lib/concat-filename.c new file mode 100644 index 0000000000..f05484904e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/concat-filename.c @@ -0,0 +1,73 @@ +/* Construct a full filename from a directory and a relative filename. + Copyright (C) 2001-2004, 2006-2022 Free Software Foundation, Inc. + + 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 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible . */ + +#include + +/* Specification. */ +#include "concat-filename.h" + +#include +#include +#include + +#include "filename.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. Return NULL and set errno + upon memory allocation failure. */ +char * +concatenated_filename (const char *directory, const char *filename, + const char *suffix) +{ + char *result; + char *p; + + if (strcmp (directory, ".") == 0) + { + /* No need to prepend the directory. */ + result = (char *) malloc (strlen (filename) + + (suffix != NULL ? strlen (suffix) : 0) + + 1); + if (result == NULL) + return NULL; /* errno is set here */ + p = result; + } + else + { + size_t directory_len = strlen (directory); + int need_slash = + (directory_len > FILE_SYSTEM_PREFIX_LEN (directory) + && !ISSLASH (directory[directory_len - 1])); + result = (char *) malloc (directory_len + need_slash + + strlen (filename) + + (suffix != NULL ? strlen (suffix) : 0) + + 1); + if (result == NULL) + return NULL; /* errno is set here */ + memcpy (result, directory, directory_len); + p = result + directory_len; + if (need_slash) + *p++ = '/'; + } + p = stpcpy (p, filename); + if (suffix != NULL) + stpcpy (p, suffix); + return result; +} diff --git a/local/recipes/dev/gnu-make/source/lib/concat-filename.h b/local/recipes/dev/gnu-make/source/lib/concat-filename.h new file mode 100644 index 0000000000..0348b0d93a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/concat-filename.h @@ -0,0 +1,46 @@ +/* Construct a full filename from a directory and a relative filename. + Copyright (C) 2001-2004, 2007-2022 Free Software Foundation, Inc. + + 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 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +#ifndef _CONCAT_FILENAME_H +#define _CONCAT_FILENAME_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Concatenate a directory filename, a relative filename and an optional + 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) + _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) + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE + _GL_ATTRIBUTE_RETURNS_NONNULL; + + +#ifdef __cplusplus +} +#endif + +#endif /* _CONCAT_FILENAME_H */ diff --git a/local/recipes/dev/gnu-make/source/lib/filename.h b/local/recipes/dev/gnu-make/source/lib/filename.h new file mode 100644 index 0000000000..ab77ca2df9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/filename.h @@ -0,0 +1,112 @@ +/* Basic filename support macros. + Copyright (C) 2001-2022 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + 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. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* From Paul Eggert and Jim Meyering. */ + +#ifndef _FILENAME_H +#define _FILENAME_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* 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 __MSDOS__ || defined __DJGPP__ + /* Native Windows, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') + /* 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 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 +} +#endif + +#endif /* _FILENAME_H */ diff --git a/local/recipes/dev/gnu-make/source/lib/findprog-in.c b/local/recipes/dev/gnu-make/source/lib/findprog-in.c new file mode 100644 index 0000000000..72a05dbf50 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/findprog-in.c @@ -0,0 +1,399 @@ +/* Locating a program in a given path. + Copyright (C) 2001-2004, 2006-2022 Free Software Foundation, Inc. + Written by Bruno Haible , 2001, 2019. + + 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 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + + +#include + +/* Specification. */ +#include "findprog.h" + +#include +#include +#include +#include +#include +#include + +#include "filename.h" +#include "concat-filename.h" + +#if (defined _WIN32 && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__ + /* Native Windows, OS/2, DOS */ +# define NATIVE_SLASH '\\' +#else + /* Unix */ +# define NATIVE_SLASH '/' +#endif + +/* Separator in PATH like lists of pathnames. */ +#if (defined _WIN32 && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__ + /* Native Windows, OS/2, DOS */ +# define PATH_SEPARATOR ';' +#else + /* Unix */ +# define PATH_SEPARATOR ':' +#endif + +/* The list of suffixes that the execlp/execvp function tries when searching + for the program. */ +static const char * const suffixes[] = + { + #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ + "", ".com", ".exe", ".bat", ".cmd" + /* Note: Files without any suffix are not considered executable. */ + /* Note: The cmd.exe program does a different lookup: It searches according + to the PATHEXT environment variable. + See . + 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__ + "", ".exe" + #elif defined __DJGPP__ + "", ".com", ".exe", ".bat" + #else /* Unix */ + "" + #endif + }; + +const char * +find_in_given_path (const char *progname, const char *path, + const char *directory, bool optimize_for_exec) +{ + { + bool has_slash = false; + { + const char *p; + + for (p = progname; *p != '\0'; p++) + if (ISSLASH (*p)) + { + has_slash = true; + break; + } + } + if (has_slash) + { + /* If progname contains a slash, it is either absolute or relative to + the current directory. PATH is not used. */ + if (optimize_for_exec) + /* The execl/execv/execlp/execvp functions will try the various + suffixes anyway and fail if no executable is found. */ + return progname; + else + { + /* Try the various suffixes and see whether one of the files + 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; + + { + const char *p; + + progbasename = progname; + for (p = progname; *p != '\0'; p++) + if (ISSLASH (*p)) + progbasename = p + 1; + } + + bool progbasename_has_dot = (strchr (progbasename, '.') != NULL); + #endif + + /* Try all platform-dependent suffixes. */ + failure_errno = ENOENT; + for (i = 0; i < sizeof (suffixes) / sizeof (suffixes[0]); i++) + { + const char *suffix = suffixes[i]; + + #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') != progbasename_has_dot) + #endif + { + /* Concatenate directory_as_prefix, progname, suffix. */ + char *progpathname = + 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 + is not installed setuid or setgid, so that it is ok to + call access() despite its design flaw. */ + if (eaccess (progpathname, X_OK) == 0) + { + /* Check that the progpathname does not point to a + directory. */ + struct stat statbuf; + + if (stat (progpathname, &statbuf) >= 0) + { + if (! S_ISDIR (statbuf.st_mode)) + { + /* Found! */ + if (strcmp (progpathname, progname) == 0) + { + free (progpathname); + return progname; + } + else + return progpathname; + } + + errno = EACCES; + } + } + + if (errno != ENOENT) + failure_errno = errno; + + 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; + } + } + } + + if (path == NULL) + /* If PATH is not set, the default search path is implementation dependent. + In practice, it is treated like an empty PATH. */ + path = ""; + + { + /* Make a copy, to prepare for destructive modifications. */ + 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. */ + dir = path_rest; + for (cp = path_rest; *cp != '\0' && *cp != PATH_SEPARATOR; cp++) + ; + last = (*cp == '\0'); + *cp = '\0'; + + /* Empty PATH components designate the current directory. */ + 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++) + { + const char *suffix = suffixes[i]; + + #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') != progname_has_dot) + #endif + { + /* Concatenate dir_as_prefix, progname, and suffix. */ + char *progpathname = + 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 + is not installed setuid or setgid, so that it is ok to + call access() despite its design flaw. */ + if (eaccess (progpathname, X_OK) == 0) + { + /* Check that the progpathname does not point to a + directory. */ + struct stat statbuf; + + if (stat (progpathname, &statbuf) >= 0) + { + 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; + } + + errno = EACCES; + } + } + + if (errno != ENOENT) + failure_errno = errno; + + 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); + + errno = failure_errno; + return NULL; + } +} diff --git a/local/recipes/dev/gnu-make/source/lib/findprog.h b/local/recipes/dev/gnu-make/source/lib/findprog.h new file mode 100644 index 0000000000..e47acc5e47 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/findprog.h @@ -0,0 +1,77 @@ +/* Locating a program in PATH. + Copyright (C) 2001-2003, 2009-2022 Free Software Foundation, Inc. + Written by Bruno Haible , 2001. + + 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 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +#ifndef _FINDPROG_H +#define _FINDPROG_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Looks up a program in the PATH. + Attempts to determine 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). Otherwise, it + returns PROGNAME unmodified. + Because of the latter case, callers should use execlp/execvp, not + execl/execv on the returned pathname. + The returned string is freshly malloc()ed if it is != PROGNAME. */ +extern const char *find_in_path (const char *progname); + +/* Looks up a program in the given PATH-like string. + + The PATH argument consists of a list of directories, separated by ':' or + (on native Windows) by ';'. An empty PATH element designates the current + 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 + with either execl/execv or execlp/execvp. It is freshly malloc()ed if it + is != PROGNAME. + - Otherwise, it sets errno and returns NULL. + Specific errno values include: + - ENOENT: means that the program's file was not found. + - 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. + + Here, a "slash" means: + - 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); + + +#ifdef __cplusplus +} +#endif + +#endif /* _FINDPROG_H */ diff --git a/local/recipes/dev/gnu-make/source/lib/fnmatch.c b/local/recipes/dev/gnu-make/source/lib/fnmatch.c new file mode 100644 index 0000000000..4da8c5fb65 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/fnmatch.c @@ -0,0 +1,489 @@ +/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999 Free Software +Foundation, Inc. +This file is part of the GNU C Library. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +This 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public License +along with this library; see the file COPYING.LIB. If not, write to the Free +Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 +USA. */ + +#if HAVE_CONFIG_H +# include +#endif + +/* Enable GNU extensions in fnmatch.h. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#include +#include +#include + +#if HAVE_STRING_H || defined _LIBC +# include +#else +# include +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#endif + +/* For platform which support the ISO C amendement 1 functionality we + support user defined character classes. */ +#if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) +/* Solaris 2.5 has a bug: must be included before . */ +# include +# include +#endif + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#if defined _LIBC || !defined __GNU_LIBRARY__ + + +# if defined STDC_HEADERS || !defined isascii +# define ISASCII(c) 1 +# else +# define ISASCII(c) isascii(c) +# endif + +# ifdef isblank +# define ISBLANK(c) (ISASCII (c) && isblank (c)) +# else +# define ISBLANK(c) ((c) == ' ' || (c) == '\t') +# endif +# ifdef isgraph +# define ISGRAPH(c) (ISASCII (c) && isgraph (c)) +# else +# define ISGRAPH(c) (ISASCII (c) && isprint (c) && !isspace (c)) +# endif + +# define ISPRINT(c) (ISASCII (c) && isprint (c)) +# define ISDIGIT(c) (ISASCII (c) && isdigit (c)) +# define ISALNUM(c) (ISASCII (c) && isalnum (c)) +# define ISALPHA(c) (ISASCII (c) && isalpha (c)) +# define ISCNTRL(c) (ISASCII (c) && iscntrl (c)) +# define ISLOWER(c) (ISASCII (c) && islower (c)) +# define ISPUNCT(c) (ISASCII (c) && ispunct (c)) +# define ISSPACE(c) (ISASCII (c) && isspace (c)) +# define ISUPPER(c) (ISASCII (c) && isupper (c)) +# define ISXDIGIT(c) (ISASCII (c) && isxdigit (c)) + +# define STREQ(s1, s2) ((strcmp (s1, s2) == 0)) + +# if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) +/* The GNU C library provides support for user-defined character classes + and the functions from ISO C amendement 1. */ +# ifdef CHARCLASS_NAME_MAX +# define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX +# else +/* This shouldn't happen but some implementation might still have this + problem. Use a reasonable default value. */ +# define CHAR_CLASS_MAX_LENGTH 256 +# endif + +# ifdef _LIBC +# define IS_CHAR_CLASS(string) __wctype (string) +# else +# define IS_CHAR_CLASS(string) wctype (string) +# endif +# else +# define CHAR_CLASS_MAX_LENGTH 6 /* Namely, `xdigit'. */ + +# define IS_CHAR_CLASS(string) \ + (STREQ (string, "alpha") || STREQ (string, "upper") \ + || STREQ (string, "lower") || STREQ (string, "digit") \ + || STREQ (string, "alnum") || STREQ (string, "xdigit") \ + || STREQ (string, "space") || STREQ (string, "print") \ + || STREQ (string, "punct") || STREQ (string, "graph") \ + || STREQ (string, "cntrl") || STREQ (string, "blank")) +# endif + +/* Avoid depending on library functions or files + whose names are inconsistent. */ + +# if !defined _LIBC && !defined getenv +extern char *getenv (); +# endif + +# ifndef errno +extern int errno; +# endif + +/* This function doesn't exist on most systems. */ + +# if !defined HAVE___STRCHRNUL && !defined _LIBC +static char * +__strchrnul (s, c) + const char *s; + int c; +{ + char *result = strchr (s, c); + if (result == NULL) + result = strchr (s, '\0'); + return result; +} +# endif + +# ifndef internal_function +/* Inside GNU libc we mark some function in a special way. In other + environments simply ignore the marking. */ +# define internal_function +# endif + +/* Match STRING against the filename pattern PATTERN, returning zero if + it matches, nonzero if not. */ +static int internal_fnmatch __P ((const char *pattern, const char *string, + int no_leading_period, int flags)) + internal_function; +static int +internal_function +internal_fnmatch (pattern, string, no_leading_period, flags) + const char *pattern; + const char *string; + int no_leading_period; + int flags; +{ + register const char *p = pattern, *n = string; + register unsigned char c; + +/* Note that this evaluates C many times. */ +# ifdef _LIBC +# define FOLD(c) ((flags & FNM_CASEFOLD) ? tolower (c) : (c)) +# else +# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c)) +# endif + + while ((c = *p++) != '\0') + { + c = FOLD (c); + + switch (c) + { + case '?': + if (*n == '\0') + return FNM_NOMATCH; + else if (*n == '/' && (flags & FNM_FILE_NAME)) + return FNM_NOMATCH; + else if (*n == '.' && no_leading_period + && (n == string + || (n[-1] == '/' && (flags & FNM_FILE_NAME)))) + return FNM_NOMATCH; + break; + + case '\\': + if (!(flags & FNM_NOESCAPE)) + { + c = *p++; + if (c == '\0') + /* Trailing \ loses. */ + return FNM_NOMATCH; + c = FOLD (c); + } + if (FOLD ((unsigned char) *n) != c) + return FNM_NOMATCH; + break; + + case '*': + if (*n == '.' && no_leading_period + && (n == string + || (n[-1] == '/' && (flags & FNM_FILE_NAME)))) + return FNM_NOMATCH; + + for (c = *p++; c == '?' || c == '*'; c = *p++) + { + if (*n == '/' && (flags & FNM_FILE_NAME)) + /* A slash does not match a wildcard under FNM_FILE_NAME. */ + return FNM_NOMATCH; + else if (c == '?') + { + /* A ? needs to match one character. */ + if (*n == '\0') + /* There isn't another character; no match. */ + return FNM_NOMATCH; + else + /* One character of the string is consumed in matching + this ? wildcard, so *??? won't match if there are + less than three characters. */ + ++n; + } + } + + if (c == '\0') + /* The wildcard(s) is/are the last element of the pattern. + If the name is a file name and contains another slash + this does mean it cannot match. */ + return ((flags & FNM_FILE_NAME) && strchr (n, '/') != NULL + ? FNM_NOMATCH : 0); + else + { + const char *endp; + + endp = __strchrnul (n, (flags & FNM_FILE_NAME) ? '/' : '\0'); + + if (c == '[') + { + int flags2 = ((flags & FNM_FILE_NAME) + ? flags : (flags & ~FNM_PERIOD)); + + for (--p; n < endp; ++n) + if (internal_fnmatch (p, n, + (no_leading_period + && (n == string + || (n[-1] == '/' + && (flags + & FNM_FILE_NAME)))), + flags2) + == 0) + return 0; + } + else if (c == '/' && (flags & FNM_FILE_NAME)) + { + while (*n != '\0' && *n != '/') + ++n; + if (*n == '/' + && (internal_fnmatch (p, n + 1, flags & FNM_PERIOD, + flags) == 0)) + return 0; + } + else + { + int flags2 = ((flags & FNM_FILE_NAME) + ? flags : (flags & ~FNM_PERIOD)); + + if (c == '\\' && !(flags & FNM_NOESCAPE)) + c = *p; + c = FOLD (c); + for (--p; n < endp; ++n) + if (FOLD ((unsigned char) *n) == c + && (internal_fnmatch (p, n, + (no_leading_period + && (n == string + || (n[-1] == '/' + && (flags + & FNM_FILE_NAME)))), + flags2) == 0)) + return 0; + } + } + + /* If we come here no match is possible with the wildcard. */ + return FNM_NOMATCH; + + case '[': + { + /* Nonzero if the sense of the character class is inverted. */ + static int posixly_correct; + register int not; + char cold; + + if (posixly_correct == 0) + posixly_correct = getenv ("POSIXLY_CORRECT") != NULL ? 1 : -1; + + if (*n == '\0') + return FNM_NOMATCH; + + if (*n == '.' && no_leading_period && (n == string + || (n[-1] == '/' + && (flags + & FNM_FILE_NAME)))) + return FNM_NOMATCH; + + if (*n == '/' && (flags & FNM_FILE_NAME)) + /* `/' cannot be matched. */ + return FNM_NOMATCH; + + not = (*p == '!' || (posixly_correct < 0 && *p == '^')); + if (not) + ++p; + + c = *p++; + for (;;) + { + unsigned char fn = FOLD ((unsigned char) *n); + + if (!(flags & FNM_NOESCAPE) && c == '\\') + { + if (*p == '\0') + return FNM_NOMATCH; + c = FOLD ((unsigned char) *p); + ++p; + + if (c == fn) + goto matched; + } + else if (c == '[' && *p == ':') + { + /* Leave room for the null. */ + char str[CHAR_CLASS_MAX_LENGTH + 1]; + size_t c1 = 0; +# if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) + wctype_t wt; +# endif + const char *startp = p; + + for (;;) + { + if (c1 == CHAR_CLASS_MAX_LENGTH) + /* The name is too long and therefore the pattern + is ill-formed. */ + return FNM_NOMATCH; + + c = *++p; + if (c == ':' && p[1] == ']') + { + p += 2; + break; + } + if (c < 'a' || c >= 'z') + { + /* This cannot possibly be a character class name. + Match it as a normal range. */ + p = startp; + c = '['; + goto normal_bracket; + } + str[c1++] = c; + } + str[c1] = '\0'; + +# if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) + wt = IS_CHAR_CLASS (str); + if (wt == 0) + /* Invalid character class name. */ + return FNM_NOMATCH; + + if (__iswctype (__btowc ((unsigned char) *n), wt)) + goto matched; +# else + if ((STREQ (str, "alnum") && ISALNUM ((unsigned char) *n)) + || (STREQ (str, "alpha") && ISALPHA ((unsigned char) *n)) + || (STREQ (str, "blank") && ISBLANK ((unsigned char) *n)) + || (STREQ (str, "cntrl") && ISCNTRL ((unsigned char) *n)) + || (STREQ (str, "digit") && ISDIGIT ((unsigned char) *n)) + || (STREQ (str, "graph") && ISGRAPH ((unsigned char) *n)) + || (STREQ (str, "lower") && ISLOWER ((unsigned char) *n)) + || (STREQ (str, "print") && ISPRINT ((unsigned char) *n)) + || (STREQ (str, "punct") && ISPUNCT ((unsigned char) *n)) + || (STREQ (str, "space") && ISSPACE ((unsigned char) *n)) + || (STREQ (str, "upper") && ISUPPER ((unsigned char) *n)) + || (STREQ (str, "xdigit") && ISXDIGIT ((unsigned char) *n))) + goto matched; +# endif + } + else if (c == '\0') + /* [ (unterminated) loses. */ + return FNM_NOMATCH; + else + { + normal_bracket: + if (FOLD (c) == fn) + goto matched; + + cold = c; + c = *p++; + + if (c == '-' && *p != ']') + { + /* It is a range. */ + unsigned char cend = *p++; + if (!(flags & FNM_NOESCAPE) && cend == '\\') + cend = *p++; + if (cend == '\0') + return FNM_NOMATCH; + + if (cold <= fn && fn <= FOLD (cend)) + goto matched; + + c = *p++; + } + } + + if (c == ']') + break; + } + + if (!not) + return FNM_NOMATCH; + break; + + matched: + /* Skip the rest of the [...] that already matched. */ + while (c != ']') + { + if (c == '\0') + /* [... (unterminated) loses. */ + return FNM_NOMATCH; + + c = *p++; + if (!(flags & FNM_NOESCAPE) && c == '\\') + { + if (*p == '\0') + return FNM_NOMATCH; + /* XXX 1003.2d11 is unclear if this is right. */ + ++p; + } + else if (c == '[' && *p == ':') + { + do + if (*++p == '\0') + return FNM_NOMATCH; + while (*p != ':' || p[1] == ']'); + p += 2; + c = *p; + } + } + if (not) + return FNM_NOMATCH; + } + break; + + default: + if (c != FOLD ((unsigned char) *n)) + return FNM_NOMATCH; + } + + ++n; + } + + if (*n == '\0') + return 0; + + if ((flags & FNM_LEADING_DIR) && *n == '/') + /* The FNM_LEADING_DIR flag says that "foo*" matches "foobar/frobozz". */ + return 0; + + return FNM_NOMATCH; + +# undef FOLD +} + + +int +fnmatch (pattern, string, flags) + const char *pattern; + const char *string; + int flags; +{ + return internal_fnmatch (pattern, string, flags & FNM_PERIOD, flags); +} + +#endif /* _LIBC or not __GNU_LIBRARY__. */ diff --git a/local/recipes/dev/gnu-make/source/lib/fnmatch.in.h b/local/recipes/dev/gnu-make/source/lib/fnmatch.in.h new file mode 100644 index 0000000000..a788c8e1c7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/fnmatch.in.h @@ -0,0 +1,85 @@ +/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999 Free Software +Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public License +along with this library; see the file COPYING.LIB. If not, write to the Free +Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 +USA. */ + +#ifndef _FNMATCH_H +#define _FNMATCH_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32 +# if !defined __GLIBC__ +# undef __P +# define __P(protos) protos +# endif +#else /* Not C++ or ANSI C. */ +# undef __P +# define __P(protos) () +/* We can get away without defining `const' here only because in this file + it is used only inside the prototype for `fnmatch', which is elided in + non-ANSI C where `const' is problematical. */ +#endif /* C++ or ANSI C. */ + +#ifndef const +# if (defined __STDC__ && __STDC__) || defined __cplusplus || defined WINDOWS32 +# define __const const +# else +# define __const +# endif +#endif + +/* We #undef these before defining them because some losing systems + (HP-UX A.08.07 for example) define these in . */ +#undef FNM_PATHNAME +#undef FNM_NOESCAPE +#undef FNM_PERIOD + +/* Bits set in the FLAGS argument to `fnmatch'. */ +#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */ +#define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */ +#define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */ + +#if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE +# define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */ +# define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */ +# define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ +#endif + +/* Value returned by `fnmatch' if STRING does not match PATTERN. */ +#define FNM_NOMATCH 1 + +/* This value is returned if the implementation does not support + `fnmatch'. Since this is not the case here it will never be + returned but the conformance test suites still require the symbol + to be defined. */ +#ifdef _XOPEN_SOURCE +# define FNM_NOSYS (-1) +#endif + +/* Match NAME against the filename pattern PATTERN, + returning zero if it matches, FNM_NOMATCH if not. */ +extern int fnmatch __P ((__const char *__pattern, __const char *__name, + int __flags)); + +#ifdef __cplusplus +} +#endif + +#endif /* fnmatch.h */ diff --git a/local/recipes/dev/gnu-make/source/lib/getloadavg.c b/local/recipes/dev/gnu-make/source/lib/getloadavg.c new file mode 100644 index 0000000000..37e8280867 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/getloadavg.c @@ -0,0 +1,944 @@ +/* Get the system load averages. + + 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. + Bugs can be reported to bug-gnulib@gnu.org. + + 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 . */ + +/* Compile-time symbols that this file uses: + + HAVE_PSTAT_GETDYNAMIC Define this if your system has the + pstat_getdynamic function. I think it + is unique to HPUX9. The best way to get the + definition is through the AC_FUNC_GETLOADAVG + macro that comes with autoconf 2.13 or newer. + If that isn't an option, then just put + AC_CHECK_FUNCS(pstat_getdynamic) in your + configure.ac file. + HAVE_LIBPERFSTAT Define this if your system has the + perfstat_cpu_total function in libperfstat (AIX). + FIXUP_KERNEL_SYMBOL_ADDR() Adjust address in returned struct nlist. + KERNEL_FILE Name of the kernel file to nlist. + LDAV_CVT() Scale the load average from the kernel. + Returns a double. + LDAV_SYMBOL Name of kernel symbol giving load average. + LOAD_AVE_TYPE Type of the load average array in the kernel. + Must be defined unless one of + apollo, DGUX, NeXT, or UMAX is defined; + or we have libkstat; + otherwise, no load average is available. + HAVE_NLIST_H nlist.h is available. NLIST_STRUCT defaults + to this. + NLIST_STRUCT Include nlist.h, not a.out.h. + N_NAME_POINTER The nlist n_name element is a pointer, + not an array. + HAVE_STRUCT_NLIST_N_UN_N_NAME 'n_un.n_name' is member of 'struct nlist'. + LINUX_LDAV_FILE [__linux__, __ANDROID__, __CYGWIN__]: File + containing load averages. + + Specific system predefines this file uses, aside from setting + default values if not emacs: + + apollo + BSD Real BSD, not just BSD-like. + DGUX + eunice UNIX emulator under VMS. + hpux + __MSDOS__ No-op for MSDOS. + NeXT + sgi + UMAX + UMAX4_3 + VMS + _WIN32 Native Windows (possibly also defined on Cygwin) + __linux__, __ANDROID__ Linux: assumes /proc file system mounted. + Support from Michael K. Johnson. + __CYGWIN__ Cygwin emulates linux /proc/loadavg. + __NetBSD__ NetBSD: assumes /kern file system mounted. + + In addition, to avoid nesting many #ifdefs, we internally set + LDAV_DONE to indicate that the load average has been computed. + + We also #define LDAV_PRIVILEGED if a program will require + special installation to be able to call getloadavg. */ + +#include + +/* Specification. */ +#include + +#include +#include +#include + +# include + +# if HAVE_SYS_PARAM_H +# include +# endif + +# include "intprops.h" + +# if defined _WIN32 && ! defined __CYGWIN__ && ! defined WINDOWS32 +# define WINDOWS32 +# endif + +# ifdef NeXT +/* NeXT in the 2.{0,1,2} releases defines BSD in , which + conflicts with the definition understood in this file, that this + really is BSD. */ +# undef BSD + +/* NeXT defines FSCALE in . However, we take FSCALE being + defined to mean that the nlist method should be used, which is not true. */ +# undef FSCALE +# endif + +/* Same issues as for NeXT apply to the HURD-based GNU system. */ +# ifdef __GNU__ +# undef BSD +# undef FSCALE +# endif /* __GNU__ */ + +/* Set values that are different from the defaults, which are + set a little farther down with #ifndef. */ + + +/* Some shorthands. */ + +# if defined (HPUX) && !defined (hpux) +# define hpux +# endif + +# if defined (__hpux) && !defined (hpux) +# define hpux +# endif + +# if defined (__sun) && !defined (sun) +# define sun +# endif + +# if defined (hp300) && !defined (hpux) +# define MORE_BSD +# endif + +# if defined (__SVR4) && !defined (SVR4) +# define SVR4 +# endif + +# if (defined (sun) && defined (SVR4)) || defined (SOLARIS2) +# define SUNOS_5 +# endif + +# if defined (__osf__) && (defined (__alpha) || defined (__alpha__)) +# define OSF_ALPHA +# include +# include +# include +# include +/* Tru64 4.0D's table.h redefines sys */ +# undef sys +# endif + +# if defined (__osf__) && (defined (mips) || defined (__mips__)) +# define OSF_MIPS +# include +# endif + + +/* VAX C can't handle multi-line #ifs, or lines longer than 256 chars. */ +# ifndef LOAD_AVE_TYPE + +# ifdef MORE_BSD +# define LOAD_AVE_TYPE long +# endif + +# ifdef sun +# define LOAD_AVE_TYPE long +# endif + +# ifdef sgi +# define LOAD_AVE_TYPE long +# endif + +# ifdef SVR4 +# define LOAD_AVE_TYPE long +# endif + +# ifdef OSF_ALPHA +# define LOAD_AVE_TYPE long +# endif + +# if defined _AIX && ! defined HAVE_LIBPERFSTAT +# define LOAD_AVE_TYPE long +# endif + +# endif /* No LOAD_AVE_TYPE. */ + +# ifdef OSF_ALPHA +/* defines an incorrect value for FSCALE on Alpha OSF/1, + according to ghazi@noc.rutgers.edu. */ +# undef FSCALE +# define FSCALE 1024.0 +# endif + + +# ifndef FSCALE + +/* SunOS and some others define FSCALE in sys/param.h. */ + +# ifdef MORE_BSD +# define FSCALE 2048.0 +# endif + +# if defined (MIPS) || defined (SVR4) +# define FSCALE 256 +# endif + +# if defined (sgi) +/* Sometimes both MIPS and sgi are defined, so FSCALE was just defined + above under #ifdef MIPS. But we want the sgi value. */ +# undef FSCALE +# define FSCALE 1000.0 +# endif + +# if defined _AIX && !defined HAVE_LIBPERFSTAT +# define FSCALE 65536.0 +# endif + +# endif /* Not FSCALE. */ + +# if !defined (LDAV_CVT) && defined (FSCALE) +# define LDAV_CVT(n) (((double) (n)) / FSCALE) +# endif + +# ifndef NLIST_STRUCT +# if HAVE_NLIST_H +# define NLIST_STRUCT +# endif +# endif + +# if defined (sgi) || (defined (mips) && !defined (BSD)) +# define FIXUP_KERNEL_SYMBOL_ADDR(nl) ((nl)[0].n_value &= ~(1 << 31)) +# endif + + +# if !defined (KERNEL_FILE) && defined (hpux) +# define KERNEL_FILE "/hp-ux" +# endif + +# if !defined (KERNEL_FILE) && (defined (MIPS) || defined (SVR4) || defined (ISC) || defined (sgi)) +# define KERNEL_FILE "/unix" +# endif + + +# if !defined (LDAV_SYMBOL) && (defined (hpux) || defined (SVR4) || defined (ISC) || defined (sgi) || (defined (_AIX) && !defined(HAVE_LIBPERFSTAT))) +# define LDAV_SYMBOL "avenrun" +# endif + +# ifdef HAVE_UNISTD_H +# include +# endif + +/* LOAD_AVE_TYPE should only get defined if we're going to use the + nlist method. */ +# if !defined (LOAD_AVE_TYPE) && (defined (BSD) || defined (LDAV_CVT) || defined (KERNEL_FILE) || defined (LDAV_SYMBOL)) +# define LOAD_AVE_TYPE double +# endif + +# ifdef LOAD_AVE_TYPE + +# ifndef __VMS +# if !(defined __linux__ || defined __ANDROID__) +# ifndef NLIST_STRUCT +# include +# else /* NLIST_STRUCT */ +# include +# endif /* NLIST_STRUCT */ + +# ifdef SUNOS_5 +# include +# include +# endif + +# if defined (hpux) && defined (HAVE_PSTAT_GETDYNAMIC) +# include +# endif + +# ifndef KERNEL_FILE +# define KERNEL_FILE "/vmunix" +# endif /* KERNEL_FILE */ + +# ifndef LDAV_SYMBOL +# define LDAV_SYMBOL "_avenrun" +# endif /* LDAV_SYMBOL */ +# endif /* __linux__ || __ANDROID__ */ + +# else /* __VMS */ + +# ifndef eunice +# include +# include +# else /* eunice */ +# include +# endif /* eunice */ +# endif /* __VMS */ + +# ifndef LDAV_CVT +# define LDAV_CVT(n) ((double) (n)) +# endif /* !LDAV_CVT */ + +# endif /* LOAD_AVE_TYPE */ + +# if defined HAVE_LIBPERFSTAT +# include +# include +# include +# ifndef SBITS +# define SBITS 16 +# endif +# endif + +# if defined (__GNU__) && !defined (NeXT) +/* Note that NeXT Openstep defines __GNU__ even though it should not. */ +/* GNU system acts much like NeXT, for load average purposes, + but not exactly. */ +# define NeXT +# define host_self mach_host_self +# endif + +# ifdef NeXT +# ifdef HAVE_MACH_MACH_H +# include +# else +# include +# endif +# endif /* NeXT */ + +# ifdef sgi +# include +# endif /* sgi */ + +# ifdef UMAX +# include +# include +# include +# include + +# ifdef UMAX_43 +# include +# include +# include +# include +# include +# else /* Not UMAX_43. */ +# include +# include +# include +# include +# include +# include +# endif /* Not UMAX_43. */ +# endif /* UMAX */ + +# ifdef DGUX +# include +# endif + +# if (defined __linux__ || defined __ANDROID__ \ + || defined __CYGWIN__ || defined SUNOS_5 \ + || (defined LOAD_AVE_TYPE && ! defined __VMS)) +# include +# endif + +/* Avoid static vars inside a function since in HPUX they dump as pure. */ + +# ifdef NeXT +static processor_set_t default_set; +static bool getloadavg_initialized; +# endif /* NeXT */ + +# ifdef UMAX +static unsigned int cpus = 0; +static unsigned int samples; +# endif /* UMAX */ + +# ifdef DGUX +static struct dg_sys_info_load_info load_info; /* what-a-mouthful! */ +# endif /* DGUX */ + +# if !defined (HAVE_LIBKSTAT) && defined (LOAD_AVE_TYPE) +/* File descriptor open to /dev/kmem or VMS load ave driver. */ +static int channel; +/* True if channel is valid. */ +static bool getloadavg_initialized; +/* Offset in kmem to seek to read load average, or 0 means invalid. */ +static long offset; + +# if ! defined __VMS && ! defined sgi && ! (defined __linux__ || defined __ANDROID__) +static struct nlist name_list[2]; +# endif + +# ifdef SUNOS_5 +static kvm_t *kd; +# endif /* SUNOS_5 */ + +# endif /* LOAD_AVE_TYPE && !HAVE_LIBKSTAT */ + +/* Put the 1 minute, 5 minute and 15 minute load averages + into the first NELEM elements of LOADAVG. + Return the number written (never more than 3, but may be less than NELEM), + or -1 (setting errno) if an error occurred. */ + +int +getloadavg (double loadavg[], int nelem) +{ + int elem = 0; /* Return value. */ + +# ifdef NO_GET_LOAD_AVG +# define LDAV_DONE + errno = ENOSYS; + elem = -1; +# endif + +# if !defined (LDAV_DONE) && defined (HAVE_LIBKSTAT) /* Solaris <= 2.6 */ +/* Use libkstat because we don't have to be root. */ +# define LDAV_DONE + kstat_ctl_t *kc; + kstat_t *ksp; + kstat_named_t *kn; + int saved_errno; + + kc = kstat_open (); + if (kc == NULL) + return -1; + ksp = kstat_lookup (kc, "unix", 0, "system_misc"); + if (ksp == NULL) + return -1; + if (kstat_read (kc, ksp, 0) == -1) + return -1; + + + kn = kstat_data_lookup (ksp, "avenrun_1min"); + if (kn == NULL) + { + /* Return -1 if no load average information is available. */ + nelem = 0; + elem = -1; + } + + if (nelem >= 1) + loadavg[elem++] = (double) kn->value.ul / FSCALE; + + if (nelem >= 2) + { + kn = kstat_data_lookup (ksp, "avenrun_5min"); + if (kn != NULL) + { + loadavg[elem++] = (double) kn->value.ul / FSCALE; + + if (nelem >= 3) + { + kn = kstat_data_lookup (ksp, "avenrun_15min"); + if (kn != NULL) + loadavg[elem++] = (double) kn->value.ul / FSCALE; + } + } + } + + saved_errno = errno; + kstat_close (kc); + errno = saved_errno; +# endif /* HAVE_LIBKSTAT */ + +# if !defined (LDAV_DONE) && defined (hpux) && defined (HAVE_PSTAT_GETDYNAMIC) + /* HP-UX */ +/* Use pstat_getdynamic() because we don't have to be root. */ +# define LDAV_DONE +# undef LOAD_AVE_TYPE + + struct pst_dynamic dyn_info; + if (pstat_getdynamic (&dyn_info, sizeof (dyn_info), 0, 0) < 0) + return -1; + if (nelem > 0) + loadavg[elem++] = dyn_info.psd_avg_1_min; + if (nelem > 1) + loadavg[elem++] = dyn_info.psd_avg_5_min; + if (nelem > 2) + loadavg[elem++] = dyn_info.psd_avg_15_min; + +# endif /* hpux && HAVE_PSTAT_GETDYNAMIC */ + +# if ! defined LDAV_DONE && defined HAVE_LIBPERFSTAT /* AIX */ +# define LDAV_DONE +# undef LOAD_AVE_TYPE +/* Use perfstat_cpu_total because we don't have to be root. */ + { + perfstat_cpu_total_t cpu_stats; + int result = perfstat_cpu_total (NULL, &cpu_stats, sizeof cpu_stats, 1); + if (result == -1) + return result; + loadavg[0] = cpu_stats.loadavg[0] / (double)(1 << SBITS); + loadavg[1] = cpu_stats.loadavg[1] / (double)(1 << SBITS); + loadavg[2] = cpu_stats.loadavg[2] / (double)(1 << SBITS); + elem = 3; + } +# endif + +# if !defined (LDAV_DONE) && (defined __linux__ || defined __ANDROID__ || defined __CYGWIN__) + /* Linux without glibc, Android, Cygwin */ +# define LDAV_DONE +# undef LOAD_AVE_TYPE + +# ifndef LINUX_LDAV_FILE +# define LINUX_LDAV_FILE "/proc/loadavg" +# endif + + char ldavgbuf[3 * (INT_STRLEN_BOUND (int) + sizeof ".00 ")]; + char const *ptr = ldavgbuf; + int fd, count, saved_errno; + + fd = open (LINUX_LDAV_FILE, O_RDONLY | O_CLOEXEC); + if (fd == -1) + return -1; + count = read (fd, ldavgbuf, sizeof ldavgbuf - 1); + saved_errno = errno; + (void) close (fd); + errno = saved_errno; + if (count <= 0) + return -1; + ldavgbuf[count] = '\0'; + + for (elem = 0; elem < nelem; elem++) + { + double numerator = 0; + double denominator = 1; + + while (*ptr == ' ') + ptr++; + + /* Finish if this number is missing, and report an error if all + were missing. */ + if (! ('0' <= *ptr && *ptr <= '9')) + { + if (elem == 0) + { + errno = ENOTSUP; + return -1; + } + break; + } + + while ('0' <= *ptr && *ptr <= '9') + numerator = 10 * numerator + (*ptr++ - '0'); + + if (*ptr == '.') + for (ptr++; '0' <= *ptr && *ptr <= '9'; ptr++) + numerator = 10 * numerator + (*ptr - '0'), denominator *= 10; + + loadavg[elem] = numerator / denominator; + } + + return elem; + +# endif /* __linux__ || __ANDROID__ || __CYGWIN__ */ + +# if !defined (LDAV_DONE) && defined (__NetBSD__) /* NetBSD < 0.9 */ +# define LDAV_DONE +# undef LOAD_AVE_TYPE + +# ifndef NETBSD_LDAV_FILE +# define NETBSD_LDAV_FILE "/kern/loadavg" +# endif + + unsigned long int load_ave[3], scale; + int count; + 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); + if (count != 4) + { + errno = ENOTSUP; + return -1; + } + + for (elem = 0; elem < nelem; elem++) + loadavg[elem] = (double) load_ave[elem] / (double) scale; + + return elem; + +# endif /* __NetBSD__ */ + +# if !defined (LDAV_DONE) && defined (NeXT) /* NeXTStep */ +# define LDAV_DONE + /* The NeXT code was adapted from iscreen 3.2. */ + + host_t host; + struct processor_set_basic_info info; + unsigned int info_count; + + /* We only know how to get the 1-minute average for this system, + so even if the caller asks for more than 1, we only return 1. */ + + if (!getloadavg_initialized) + { + if (processor_set_default (host_self (), &default_set) == KERN_SUCCESS) + getloadavg_initialized = true; + } + + if (getloadavg_initialized) + { + info_count = PROCESSOR_SET_BASIC_INFO_COUNT; + if (processor_set_info (default_set, PROCESSOR_SET_BASIC_INFO, &host, + (processor_set_info_t) &info, &info_count) + != KERN_SUCCESS) + getloadavg_initialized = false; + else + { + if (nelem > 0) + loadavg[elem++] = (double) info.load_average / LOAD_SCALE; + } + } + + if (!getloadavg_initialized) + { + errno = ENOTSUP; + return -1; + } +# endif /* NeXT */ + +# if !defined (LDAV_DONE) && defined (UMAX) +# define LDAV_DONE +/* UMAX 4.2, which runs on the Encore Multimax multiprocessor, does not + have a /dev/kmem. Information about the workings of the running kernel + can be gathered with inq_stats system calls. + We only know how to get the 1-minute average for this system. */ + + struct proc_summary proc_sum_data; + struct stat_descr proc_info; + double load; + register unsigned int i, j; + + if (cpus == 0) + { + register unsigned int c, i; + struct cpu_config conf; + struct stat_descr desc; + + desc.sd_next = 0; + desc.sd_subsys = SUBSYS_CPU; + desc.sd_type = CPUTYPE_CONFIG; + desc.sd_addr = (char *) &conf; + desc.sd_size = sizeof conf; + + if (inq_stats (1, &desc)) + return -1; + + c = 0; + for (i = 0; i < conf.config_maxclass; ++i) + { + struct class_stats stats; + memset (&stats, 0, sizeof stats); + + desc.sd_type = CPUTYPE_CLASS; + desc.sd_objid = i; + desc.sd_addr = (char *) &stats; + desc.sd_size = sizeof stats; + + if (inq_stats (1, &desc)) + return -1; + + c += stats.class_numcpus; + } + cpus = c; + samples = cpus < 2 ? 3 : (2 * cpus / 3); + } + + proc_info.sd_next = 0; + proc_info.sd_subsys = SUBSYS_PROC; + proc_info.sd_type = PROCTYPE_SUMMARY; + proc_info.sd_addr = (char *) &proc_sum_data; + proc_info.sd_size = sizeof (struct proc_summary); + proc_info.sd_sizeused = 0; + + if (inq_stats (1, &proc_info) != 0) + return -1; + + load = proc_sum_data.ps_nrunnable; + j = 0; + for (i = samples - 1; i > 0; --i) + { + load += proc_sum_data.ps_nrun[j]; + if (j++ == PS_NRUNSIZE) + j = 0; + } + + if (nelem > 0) + loadavg[elem++] = load / samples / cpus; +# endif /* UMAX */ + +# if !defined (LDAV_DONE) && defined (DGUX) +# define LDAV_DONE + /* This call can return -1 for an error, but with good args + it's not supposed to fail. The first argument is for no + apparent reason of type 'long int *'. */ + dg_sys_info ((long int *) &load_info, + DG_SYS_INFO_LOAD_INFO_TYPE, + DG_SYS_INFO_LOAD_VERSION_0); + + if (nelem > 0) + loadavg[elem++] = load_info.one_minute; + if (nelem > 1) + loadavg[elem++] = load_info.five_minute; + if (nelem > 2) + loadavg[elem++] = load_info.fifteen_minute; +# endif /* DGUX */ + +# if !defined (LDAV_DONE) && defined (apollo) +# define LDAV_DONE +/* Apollo code from lisch@mentorg.com (Ray Lischner). + + This system call is not documented. The load average is obtained as + three long integers, for the load average over the past minute, + five minutes, and fifteen minutes. Each value is a scaled integer, + with 16 bits of integer part and 16 bits of fraction part. + + I'm not sure which operating system first supported this system call, + but I know that SR10.2 supports it. */ + + extern void proc1_$get_loadav (); + unsigned long load_ave[3]; + + proc1_$get_loadav (load_ave); + + if (nelem > 0) + loadavg[elem++] = load_ave[0] / 65536.0; + if (nelem > 1) + loadavg[elem++] = load_ave[1] / 65536.0; + if (nelem > 2) + loadavg[elem++] = load_ave[2] / 65536.0; +# endif /* apollo */ + +# if !defined (LDAV_DONE) && defined (OSF_MIPS) +# define LDAV_DONE + + struct tbl_loadavg load_ave; + table (TBL_LOADAVG, 0, &load_ave, 1, sizeof (load_ave)); + loadavg[elem++] + = (load_ave.tl_lscale == 0 + ? load_ave.tl_avenrun.d[0] + : (load_ave.tl_avenrun.l[0] / (double) load_ave.tl_lscale)); +# endif /* OSF_MIPS */ + +# if !defined (LDAV_DONE) && (defined (__MSDOS__) || defined (WINDOWS32)) + /* DJGPP */ +# define LDAV_DONE + + /* A faithful emulation is going to have to be saved for a rainy day. */ + for ( ; elem < nelem; elem++) + { + loadavg[elem] = 0.0; + } +# endif /* __MSDOS__ || WINDOWS32 */ + +# if !defined (LDAV_DONE) && defined (OSF_ALPHA) /* OSF/1 */ +# define LDAV_DONE + + struct tbl_loadavg load_ave; + table (TBL_LOADAVG, 0, &load_ave, 1, sizeof (load_ave)); + for (elem = 0; elem < nelem; elem++) + loadavg[elem] + = (load_ave.tl_lscale == 0 + ? load_ave.tl_avenrun.d[elem] + : (load_ave.tl_avenrun.l[elem] / (double) load_ave.tl_lscale)); +# endif /* OSF_ALPHA */ + +# if ! defined LDAV_DONE && defined __VMS /* VMS */ + /* VMS specific code -- read from the Load Ave driver. */ + + LOAD_AVE_TYPE load_ave[3]; + static bool getloadavg_initialized; +# ifdef eunice + struct + { + int dsc$w_length; + char *dsc$a_pointer; + } descriptor; +# endif + + /* Ensure that there is a channel open to the load ave device. */ + if (!getloadavg_initialized) + { + /* Attempt to open the channel. */ +# ifdef eunice + descriptor.dsc$w_length = 18; + descriptor.dsc$a_pointer = "$$VMS_LOAD_AVERAGE"; +# else + $DESCRIPTOR (descriptor, "LAV0:"); +# endif + if (sys$assign (&descriptor, &channel, 0, 0) & 1) + getloadavg_initialized = true; + } + + /* Read the load average vector. */ + if (getloadavg_initialized + && !(sys$qiow (0, channel, IO$_READVBLK, 0, 0, 0, + load_ave, 12, 0, 0, 0, 0) & 1)) + { + sys$dassgn (channel); + getloadavg_initialized = false; + } + + if (!getloadavg_initialized) + { + errno = ENOTSUP; + return -1; + } +# endif /* ! defined LDAV_DONE && defined __VMS */ + +# if ! defined LDAV_DONE && defined LOAD_AVE_TYPE && ! defined __VMS + /* IRIX, other old systems */ + + /* UNIX-specific code -- read the average from /dev/kmem. */ + +# define LDAV_PRIVILEGED /* This code requires special installation. */ + + LOAD_AVE_TYPE load_ave[3]; + + /* Get the address of LDAV_SYMBOL. */ + if (offset == 0) + { +# ifndef sgi +# if ! defined NLIST_STRUCT || ! defined N_NAME_POINTER + strcpy (name_list[0].n_name, LDAV_SYMBOL); + strcpy (name_list[1].n_name, ""); +# else /* NLIST_STRUCT */ +# ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + name_list[0].n_un.n_name = LDAV_SYMBOL; + name_list[1].n_un.n_name = 0; +# else /* not HAVE_STRUCT_NLIST_N_UN_N_NAME */ + name_list[0].n_name = LDAV_SYMBOL; + name_list[1].n_name = 0; +# endif /* not HAVE_STRUCT_NLIST_N_UN_N_NAME */ +# endif /* NLIST_STRUCT */ + +# ifndef SUNOS_5 + if ( +# if !defined (_AIX) + nlist (KERNEL_FILE, name_list) +# else /* _AIX */ + knlist (name_list, 1, sizeof (name_list[0])) +# endif + >= 0) + /* Omit "&& name_list[0].n_type != 0 " -- it breaks on Sun386i. */ + { +# ifdef FIXUP_KERNEL_SYMBOL_ADDR + FIXUP_KERNEL_SYMBOL_ADDR (name_list); +# endif + offset = name_list[0].n_value; + } +# endif /* !SUNOS_5 */ +# else /* sgi */ + ptrdiff_t ldav_off = sysmp (MP_KERNADDR, MPKA_AVENRUN); + if (ldav_off != -1) + offset = (long int) ldav_off & 0x7fffffff; +# endif /* sgi */ + } + + /* Make sure we have /dev/kmem open. */ + if (!getloadavg_initialized) + { +# ifndef SUNOS_5 + int fd = open ("/dev/kmem", O_RDONLY | O_CLOEXEC); + if (0 <= fd) + { + channel = fd; + getloadavg_initialized = true; + } +# else /* SUNOS_5 */ + /* We pass 0 for the kernel, corefile, and swapfile names + to use the currently running kernel. */ + kd = kvm_open (0, 0, 0, O_RDONLY, 0); + if (kd != NULL) + { + /* nlist the currently running kernel. */ + kvm_nlist (kd, name_list); + offset = name_list[0].n_value; + getloadavg_initialized = true; + } +# endif /* SUNOS_5 */ + } + + /* If we can, get the load average values. */ + if (offset && getloadavg_initialized) + { + /* Try to read the load. */ +# ifndef SUNOS_5 + if (lseek (channel, offset, 0) == -1L + || read (channel, (char *) load_ave, sizeof (load_ave)) + != sizeof (load_ave)) + { + close (channel); + getloadavg_initialized = false; + } +# else /* SUNOS_5 */ + if (kvm_read (kd, offset, (char *) load_ave, sizeof (load_ave)) + != sizeof (load_ave)) + { + kvm_close (kd); + getloadavg_initialized = false; + } +# endif /* SUNOS_5 */ + } + + if (offset == 0 || !getloadavg_initialized) + { + errno = ENOTSUP; + return -1; + } +# endif /* ! defined LDAV_DONE && defined LOAD_AVE_TYPE && ! defined __VMS */ + +# if !defined (LDAV_DONE) && defined (LOAD_AVE_TYPE) /* Including VMS. */ + if (nelem > 0) + loadavg[elem++] = LDAV_CVT (load_ave[0]); + if (nelem > 1) + loadavg[elem++] = LDAV_CVT (load_ave[1]); + if (nelem > 2) + loadavg[elem++] = LDAV_CVT (load_ave[2]); + +# define LDAV_DONE +# endif /* !LDAV_DONE && LOAD_AVE_TYPE */ + +# if !defined LDAV_DONE + errno = ENOSYS; + elem = -1; +# endif + return elem; +} diff --git a/local/recipes/dev/gnu-make/source/lib/glob.c b/local/recipes/dev/gnu-make/source/lib/glob.c new file mode 100644 index 0000000000..adad16fa6d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/glob.c @@ -0,0 +1,1437 @@ +/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 Free +Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +This 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public License +along with this library; see the file COPYING.LIB. If not, write to the Free +Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 +USA. */ + +/* AIX requires this to be the first thing in the file. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* Enable GNU extensions in glob.h. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#include +#include +#include + +/* Outcomment the following line for production quality code. */ +/* #define NDEBUG 1 */ +#include + +#include /* Needed on stupid SunOS for assert. */ + + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GLOB_INTERFACE_VERSION 1 +#if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 +# include +# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION +# define ELIDE_CODE +# endif +#endif + +#ifndef ELIDE_CODE + +#if defined STDC_HEADERS || defined __GNU_LIBRARY__ +# include +#endif + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +# ifndef POSIX +# ifdef _POSIX_VERSION +# define POSIX +# endif +# endif +#endif + +#if !defined _AMIGA && !defined VMS && !defined WINDOWS32 +# include +#endif + +#if !defined __GNU_LIBRARY__ && !defined STDC_HEADERS +extern int errno; +#endif +#ifndef __set_errno +# define __set_errno(val) errno = (val) +#endif + +#ifndef NULL +# define NULL 0 +#endif + + +#if defined HAVE_DIRENT_H || defined __GNU_LIBRARY__ +# include +# define NAMLEN(dirent) strlen((dirent)->d_name) +#else +# define dirent direct +# define NAMLEN(dirent) (dirent)->d_namlen +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +# ifdef HAVE_VMSDIR_H +# include "vmsdir.h" +# endif /* HAVE_VMSDIR_H */ +#endif + + +/* In GNU systems, defines this macro for us. */ +#ifdef _D_NAMLEN +# undef NAMLEN +# define NAMLEN(d) _D_NAMLEN(d) +#endif + +/* When used in the GNU libc the symbol _DIRENT_HAVE_D_TYPE is available + if the `d_type' member for `struct dirent' is available. */ +#if defined(_DIRENT_HAVE_D_TYPE) || defined(HAVE_STRUCT_DIRENT_D_TYPE) +# define HAVE_D_TYPE 1 +#endif + + +#if (defined POSIX || defined WINDOWS32) && !defined __GNU_LIBRARY__ +/* Posix does not require that the d_ino field be present, and some + systems do not provide it. */ +# define REAL_DIR_ENTRY(dp) 1 +#else +# define REAL_DIR_ENTRY(dp) (dp->d_ino != 0) +#endif /* POSIX */ + +#if defined STDC_HEADERS || defined __GNU_LIBRARY__ +# include +# include +# define ANSI_STRING +#else /* No standard headers. */ + +extern char *getenv (); + +# ifdef HAVE_STRING_H +# include +# define ANSI_STRING +# else +# include +# endif +# ifdef HAVE_MEMORY_H +# include +# endif + +extern char *malloc (), *realloc (); +extern void free (); + +extern void qsort (); +extern void abort (), exit (); + +#endif /* Standard headers. */ + +#ifndef ANSI_STRING + +# ifndef bzero +extern void bzero (); +# endif +# ifndef bcopy +extern void bcopy (); +# endif + +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define strrchr rindex +/* memset is only used for zero here, but let's be paranoid. */ +# define memset(s, better_be_zero, n) \ + ((void) ((better_be_zero) == 0 ? (bzero((s), (n)), 0) : (abort(), 0))) +#endif /* Not ANSI_STRING. */ + +#if !defined HAVE_STRCOLL && !defined _LIBC +# define strcoll strcmp +#endif + +#if !defined HAVE_MEMPCPY && __GLIBC__ - 0 == 2 && __GLIBC_MINOR__ >= 1 +# define HAVE_MEMPCPY 1 +# undef mempcpy +# define mempcpy(Dest, Src, Len) __mempcpy (Dest, Src, Len) +#endif + +#if !defined __GNU_LIBRARY__ && !defined __DJGPP__ +# ifdef __GNUC__ +__inline +# endif +# ifndef __SASC +# ifdef WINDOWS32 +static void * +my_realloc (void *p, unsigned int n) +# else +static char * +my_realloc (p, n) + char *p; + unsigned int n; +# endif +{ + /* These casts are the for sake of the broken Ultrix compiler, + which warns of illegal pointer combinations otherwise. */ + if (p == NULL) + return (char *) malloc (n); + return (char *) realloc (p, n); +} +# define realloc my_realloc +# endif /* __SASC */ +#endif /* __GNU_LIBRARY__ || __DJGPP__ */ + + +#if !defined __alloca && !defined __GNU_LIBRARY__ + +# ifdef __GNUC__ +# undef alloca +# define alloca(n) __builtin_alloca (n) +# else /* Not GCC. */ +# ifdef HAVE_ALLOCA_H +# include +# else /* Not HAVE_ALLOCA_H. */ +# ifndef _AIX +# ifdef WINDOWS32 +# include +# else +extern char *alloca (); +# endif /* WINDOWS32 */ +# endif /* Not _AIX. */ +# endif /* sparc or HAVE_ALLOCA_H. */ +# endif /* GCC. */ +#endif + +#ifndef __GNU_LIBRARY__ +# define __stat stat +# ifdef STAT_MACROS_BROKEN +# undef S_ISDIR +# endif +# ifndef S_ISDIR +# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) +# endif +#endif + +#ifdef _LIBC +# undef strdup +# define strdup(str) __strdup (str) +# define sysconf(id) __sysconf (id) +# define closedir(dir) __closedir (dir) +# define opendir(name) __opendir (name) +# define readdir(str) __readdir (str) +# define getpwnam_r(name, bufp, buf, len, res) \ + __getpwnam_r (name, bufp, buf, len, res) +# ifndef __stat +# define __stat(fname, buf) __xstat (_STAT_VER, fname, buf) +# endif +#endif + +#if !(defined STDC_HEADERS || defined __GNU_LIBRARY__) +# undef size_t +# define size_t unsigned int +#endif + +/* Some system header files erroneously define these. + We want our own definitions from to take precedence. */ +#ifndef __GNU_LIBRARY__ +# undef FNM_PATHNAME +# undef FNM_NOESCAPE +# undef FNM_PERIOD +#endif +#include + +/* Some system header files erroneously define these. + We want our own definitions from to take precedence. */ +#ifndef __GNU_LIBRARY__ +# undef GLOB_ERR +# undef GLOB_MARK +# undef GLOB_NOSORT +# undef GLOB_DOOFFS +# undef GLOB_NOCHECK +# undef GLOB_APPEND +# undef GLOB_NOESCAPE +# undef GLOB_PERIOD +#endif +#include + +#if !defined __alloca +# define __alloca alloca +#endif + +#if !defined __stat +# define __stat stat +#endif + +#ifdef HAVE_GETLOGIN_R +extern int getlogin_r __P ((char *, size_t)); +#else +extern char *getlogin __P ((void)); +#endif + +static +#if __GNUC__ - 0 >= 2 +inline +#endif +const char *next_brace_sub __P ((const char *begin)); +static int glob_in_dir __P ((const char *pattern, const char *directory, + int flags, + int (*errfunc) (const char *, int), + glob_t *pglob)); +static int prefix_array __P ((const char *prefix, char **array, size_t n)); +static int collated_compare __P ((const __ptr_t, const __ptr_t)); + +#if !defined _LIBC || !defined NO_GLOB_PATTERN_P +int __glob_pattern_p __P ((const char *pattern, int quote)); +#endif + +/* Find the end of the sub-pattern in a brace expression. We define + this as an inline function if the compiler permits. */ +static +#if __GNUC__ - 0 >= 2 +inline +#endif +const char * +next_brace_sub (begin) + const char *begin; +{ + unsigned int depth = 0; + const char *cp = begin; + + while (1) + { + if (depth == 0) + { + if (*cp != ',' && *cp != '}' && *cp != '\0') + { + if (*cp == '{') + ++depth; + ++cp; + continue; + } + } + else + { + while (*cp != '\0' && (*cp != '}' || depth > 0)) + { + if (*cp == '}') + --depth; + ++cp; + } + if (*cp == '\0') + /* An incorrectly terminated brace expression. */ + return NULL; + + continue; + } + break; + } + + return cp; +} + +/* Do glob searching for PATTERN, placing results in PGLOB. + The bits defined above may be set in FLAGS. + If a directory cannot be opened or read and ERRFUNC is not nil, + it is called with the pathname that caused the error, and the + `errno' value from the failing call; if it returns non-zero + `glob' returns GLOB_ABORTED; if it returns zero, the error is ignored. + If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. + Otherwise, `glob' returns zero. */ +int +glob (pattern, flags, errfunc, pglob) + const char *pattern; + int flags; + int (*errfunc) __P ((const char *, int)); + glob_t *pglob; +{ + const char *filename; + const char *dirname; + size_t dirlen; + int status; + size_t oldcount; + + if (pattern == NULL || pglob == NULL || (flags & ~__GLOB_FLAGS) != 0) + { + __set_errno (EINVAL); + return -1; + } + + /* POSIX requires all slashes to be matched. This means that with + a trailing slash we must match only directories. */ + if (pattern[0] && pattern[strlen (pattern) - 1] == '/') + flags |= GLOB_ONLYDIR; + + if (flags & GLOB_BRACE) + { + const char *begin = strchr (pattern, '{'); + if (begin != NULL) + { + /* Allocate working buffer large enough for our work. Note that + we have at least an opening and closing brace. */ + size_t firstc; + char *alt_start; + const char *p; + const char *next; + const char *rest; + size_t rest_len; +#ifdef __GNUC__ + char onealt[strlen (pattern) - 1]; +#else + char *onealt = (char *) malloc (strlen (pattern) - 1); + if (onealt == NULL) + { + if (!(flags & GLOB_APPEND)) + globfree (pglob); + return GLOB_NOSPACE; + } +#endif + + /* We know the prefix for all sub-patterns. */ +#ifdef HAVE_MEMPCPY + alt_start = mempcpy (onealt, pattern, begin - pattern); +#else + memcpy (onealt, pattern, begin - pattern); + alt_start = &onealt[begin - pattern]; +#endif + + /* Find the first sub-pattern and at the same time find the + rest after the closing brace. */ + next = next_brace_sub (begin + 1); + if (next == NULL) + { + /* It is an illegal expression. */ +#ifndef __GNUC__ + free (onealt); +#endif + return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); + } + + /* Now find the end of the whole brace expression. */ + rest = next; + while (*rest != '}') + { + rest = next_brace_sub (rest + 1); + if (rest == NULL) + { + /* It is an illegal expression. */ +#ifndef __GNUC__ + free (onealt); +#endif + return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); + } + } + /* Please note that we now can be sure the brace expression + is well-formed. */ + rest_len = strlen (++rest) + 1; + + /* We have a brace expression. BEGIN points to the opening {, + NEXT points past the terminator of the first element, and END + points past the final }. We will accumulate result names from + recursive runs for each brace alternative in the buffer using + GLOB_APPEND. */ + + if (!(flags & GLOB_APPEND)) + { + /* This call is to set a new vector, so clear out the + vector so we can append to it. */ + pglob->gl_pathc = 0; + pglob->gl_pathv = NULL; + } + firstc = pglob->gl_pathc; + + p = begin + 1; + while (1) + { + int result; + + /* Construct the new glob expression. */ +#ifdef HAVE_MEMPCPY + mempcpy (mempcpy (alt_start, p, next - p), rest, rest_len); +#else + memcpy (alt_start, p, next - p); + memcpy (&alt_start[next - p], rest, rest_len); +#endif + + result = glob (onealt, + ((flags & ~(GLOB_NOCHECK|GLOB_NOMAGIC)) + | GLOB_APPEND), errfunc, pglob); + + /* If we got an error, return it. */ + if (result && result != GLOB_NOMATCH) + { +#ifndef __GNUC__ + free (onealt); +#endif + if (!(flags & GLOB_APPEND)) + globfree (pglob); + return result; + } + + if (*next == '}') + /* We saw the last entry. */ + break; + + p = next + 1; + next = next_brace_sub (p); + assert (next != NULL); + } + +#ifndef __GNUC__ + free (onealt); +#endif + + if (pglob->gl_pathc != firstc) + /* We found some entries. */ + return 0; + else if (!(flags & (GLOB_NOCHECK|GLOB_NOMAGIC))) + return GLOB_NOMATCH; + } + } + + /* Find the filename. */ + filename = strrchr (pattern, '/'); +#if defined __MSDOS__ || defined WINDOWS32 + /* The case of "d:pattern". Since `:' is not allowed in + file names, we can safely assume that wherever it + happens in pattern, it signals the filename part. This + is so we could some day support patterns like "[a-z]:foo". */ + if (filename == NULL) + filename = strchr (pattern, ':'); +#endif /* __MSDOS__ || WINDOWS32 */ + if (filename == NULL) + { + /* This can mean two things: a simple name or "~name". The later + case is nothing but a notation for a directory. */ + if ((flags & (GLOB_TILDE|GLOB_TILDE_CHECK)) && pattern[0] == '~') + { + dirname = pattern; + dirlen = strlen (pattern); + + /* Set FILENAME to NULL as a special flag. This is ugly but + other solutions would require much more code. We test for + this special case below. */ + filename = NULL; + } + else + { + filename = pattern; +#ifdef _AMIGA + dirname = ""; +#else + dirname = "."; +#endif + dirlen = 0; + } + } + else if (filename == pattern) + { + /* "/pattern". */ + dirname = "/"; + dirlen = 1; + ++filename; + } + else + { + char *newp; + dirlen = filename - pattern; +#if defined __MSDOS__ || defined WINDOWS32 + if (*filename == ':' + || (filename > pattern + 1 && filename[-1] == ':')) + { + char *drive_spec; + + ++dirlen; + drive_spec = (char *) __alloca (dirlen + 1); +#ifdef HAVE_MEMPCPY + *((char *) mempcpy (drive_spec, pattern, dirlen)) = '\0'; +#else + memcpy (drive_spec, pattern, dirlen); + drive_spec[dirlen] = '\0'; +#endif + /* For now, disallow wildcards in the drive spec, to + prevent infinite recursion in glob. */ + if (__glob_pattern_p (drive_spec, !(flags & GLOB_NOESCAPE))) + return GLOB_NOMATCH; + /* If this is "d:pattern", we need to copy `:' to DIRNAME + as well. If it's "d:/pattern", don't remove the slash + from "d:/", since "d:" and "d:/" are not the same.*/ + } +#endif + newp = (char *) __alloca (dirlen + 1); +#ifdef HAVE_MEMPCPY + *((char *) mempcpy (newp, pattern, dirlen)) = '\0'; +#else + memcpy (newp, pattern, dirlen); + newp[dirlen] = '\0'; +#endif + dirname = newp; + ++filename; + + if (filename[0] == '\0' +#if defined __MSDOS__ || defined WINDOWS32 + && dirname[dirlen - 1] != ':' + && (dirlen < 3 || dirname[dirlen - 2] != ':' + || dirname[dirlen - 1] != '/') +#endif + && dirlen > 1) + /* "pattern/". Expand "pattern", appending slashes. */ + { + int val = glob (dirname, flags | GLOB_MARK, errfunc, pglob); + if (val == 0) + pglob->gl_flags = ((pglob->gl_flags & ~GLOB_MARK) + | (flags & GLOB_MARK)); + return val; + } + } + + if (!(flags & GLOB_APPEND)) + { + pglob->gl_pathc = 0; + pglob->gl_pathv = NULL; + } + + oldcount = pglob->gl_pathc; + +#ifndef VMS + if ((flags & (GLOB_TILDE|GLOB_TILDE_CHECK)) && dirname[0] == '~') + { + if (dirname[1] == '\0' || dirname[1] == '/') + { + /* Look up home directory. */ +#ifdef VMS +/* This isn't obvious, RTLs of DECC and VAXC know about "HOME" */ + const char *home_dir = getenv ("SYS$LOGIN"); +#else + const char *home_dir = getenv ("HOME"); +#endif +# ifdef _AMIGA + if (home_dir == NULL || home_dir[0] == '\0') + home_dir = "SYS:"; +# else +# ifdef WINDOWS32 + if (home_dir == NULL || home_dir[0] == '\0') + home_dir = "c:/users/default"; /* poor default */ +# else +# ifdef VMS +/* Again, this isn't obvious, if "HOME" isn't known "SYS$LOGIN" should be set */ + if (home_dir == NULL || home_dir[0] == '\0') + home_dir = "SYS$DISK:[]"; +# else + if (home_dir == NULL || home_dir[0] == '\0') + { + int success; + char *name; +# if defined HAVE_GETLOGIN_R || defined _LIBC + size_t buflen = sysconf (_SC_LOGIN_NAME_MAX) + 1; + + if (buflen == 0) + /* `sysconf' does not support _SC_LOGIN_NAME_MAX. Try + a moderate value. */ + buflen = 20; + name = (char *) __alloca (buflen); + + success = getlogin_r (name, buflen) >= 0; +# else + success = (name = getlogin ()) != NULL; +# endif + if (success) + { + struct passwd *p; +# if defined HAVE_GETPWNAM_R || defined _LIBC + size_t pwbuflen = sysconf (_SC_GETPW_R_SIZE_MAX); + char *pwtmpbuf; + struct passwd pwbuf; + int save = errno; + + if (pwbuflen == -1) + /* `sysconf' does not support _SC_GETPW_R_SIZE_MAX. + Try a moderate value. */ + pwbuflen = 1024; + pwtmpbuf = (char *) __alloca (pwbuflen); + + while (getpwnam_r (name, &pwbuf, pwtmpbuf, pwbuflen, &p) + != 0) + { + if (errno != ERANGE) + { + p = NULL; + break; + } + pwbuflen *= 2; + pwtmpbuf = (char *) __alloca (pwbuflen); + __set_errno (save); + } +# else + p = getpwnam (name); +# endif + if (p != NULL) + home_dir = p->pw_dir; + } + } + if (home_dir == NULL || home_dir[0] == '\0') + { + if (flags & GLOB_TILDE_CHECK) + return GLOB_NOMATCH; + else + home_dir = "~"; /* No luck. */ + } +# endif /* VMS */ +# endif /* WINDOWS32 */ +# endif + /* Now construct the full directory. */ + if (dirname[1] == '\0') + dirname = home_dir; + else + { + char *newp; + size_t home_len = strlen (home_dir); + newp = (char *) __alloca (home_len + dirlen); +# ifdef HAVE_MEMPCPY + mempcpy (mempcpy (newp, home_dir, home_len), + &dirname[1], dirlen); +# else + memcpy (newp, home_dir, home_len); + memcpy (&newp[home_len], &dirname[1], dirlen); +# endif + dirname = newp; + } + } +# if !defined _AMIGA && !defined WINDOWS32 && !defined VMS + else + { + char *end_name = strchr (dirname, '/'); + const char *user_name; + const char *home_dir; + + if (end_name == NULL) + user_name = dirname + 1; + else + { + char *newp; + newp = (char *) __alloca (end_name - dirname); +# ifdef HAVE_MEMPCPY + *((char *) mempcpy (newp, dirname + 1, end_name - dirname)) + = '\0'; +# else + memcpy (newp, dirname + 1, end_name - dirname); + newp[end_name - dirname - 1] = '\0'; +# endif + user_name = newp; + } + + /* Look up specific user's home directory. */ + { + struct passwd *p; +# if defined HAVE_GETPWNAM_R || defined _LIBC + size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX); + char *pwtmpbuf; + struct passwd pwbuf; + int save = errno; + + if (buflen == -1) + /* `sysconf' does not support _SC_GETPW_R_SIZE_MAX. Try a + moderate value. */ + buflen = 1024; + pwtmpbuf = (char *) __alloca (buflen); + + while (getpwnam_r (user_name, &pwbuf, pwtmpbuf, buflen, &p) != 0) + { + if (errno != ERANGE) + { + p = NULL; + break; + } + buflen *= 2; + pwtmpbuf = __alloca (buflen); + __set_errno (save); + } +# else + p = getpwnam (user_name); +# endif + if (p != NULL) + home_dir = p->pw_dir; + else + home_dir = NULL; + } + /* If we found a home directory use this. */ + if (home_dir != NULL) + { + char *newp; + size_t home_len = strlen (home_dir); + size_t rest_len = end_name == NULL ? 0 : strlen (end_name); + newp = (char *) __alloca (home_len + rest_len + 1); +# ifdef HAVE_MEMPCPY + *((char *) mempcpy (mempcpy (newp, home_dir, home_len), + end_name, rest_len)) = '\0'; +# else + memcpy (newp, home_dir, home_len); + memcpy (&newp[home_len], end_name, rest_len); + newp[home_len + rest_len] = '\0'; +# endif + dirname = newp; + } + else + if (flags & GLOB_TILDE_CHECK) + /* We have to regard it as an error if we cannot find the + home directory. */ + return GLOB_NOMATCH; + } +# endif /* Not Amiga && not WINDOWS32 && not VMS. */ + } +#endif /* Not VMS. */ + + /* Now test whether we looked for "~" or "~NAME". In this case we + can give the answer now. */ + if (filename == NULL) + { + struct stat st; + + /* Return the directory if we don't check for error or if it exists. */ + if ((flags & GLOB_NOCHECK) + || (((flags & GLOB_ALTDIRFUNC) + ? (*pglob->gl_stat) (dirname, &st) + : __stat (dirname, &st)) == 0 + && S_ISDIR (st.st_mode))) + { + pglob->gl_pathv + = (char **) realloc (pglob->gl_pathv, + (pglob->gl_pathc + + ((flags & GLOB_DOOFFS) ? + pglob->gl_offs : 0) + + 1 + 1) * + sizeof (char *)); + if (pglob->gl_pathv == NULL) + return GLOB_NOSPACE; + + if (flags & GLOB_DOOFFS) + while (pglob->gl_pathc < pglob->gl_offs) + pglob->gl_pathv[pglob->gl_pathc++] = NULL; + +#if defined HAVE_STRDUP || defined _LIBC + pglob->gl_pathv[pglob->gl_pathc] = strdup (dirname); +#else + { + size_t len = strlen (dirname) + 1; + char *dircopy = malloc (len); + if (dircopy != NULL) + pglob->gl_pathv[pglob->gl_pathc] = memcpy (dircopy, dirname, + len); + } +#endif + if (pglob->gl_pathv[pglob->gl_pathc] == NULL) + { + free (pglob->gl_pathv); + return GLOB_NOSPACE; + } + pglob->gl_pathv[++pglob->gl_pathc] = NULL; + pglob->gl_flags = flags; + + return 0; + } + + /* Not found. */ + return GLOB_NOMATCH; + } + + if (__glob_pattern_p (dirname, !(flags & GLOB_NOESCAPE))) + { + /* The directory name contains metacharacters, so we + have to glob for the directory, and then glob for + the pattern in each directory found. */ + glob_t dirs; + register size_t i; + + status = glob (dirname, + ((flags & (GLOB_ERR | GLOB_NOCHECK | GLOB_NOESCAPE)) + | GLOB_NOSORT | GLOB_ONLYDIR), + errfunc, &dirs); + if (status != 0) + return status; + + /* We have successfully globbed the preceding directory name. + For each name we found, call glob_in_dir on it and FILENAME, + appending the results to PGLOB. */ + for (i = 0; i < dirs.gl_pathc; ++i) + { + int old_pathc; + +#ifdef SHELL + { + /* Make globbing interruptible in the bash shell. */ + extern int interrupt_state; + + if (interrupt_state) + { + globfree (&dirs); + globfree (&files); + return GLOB_ABORTED; + } + } +#endif /* SHELL. */ + + old_pathc = pglob->gl_pathc; + status = glob_in_dir (filename, dirs.gl_pathv[i], + ((flags | GLOB_APPEND) + & ~(GLOB_NOCHECK | GLOB_ERR)), + errfunc, pglob); + if (status == GLOB_NOMATCH) + /* No matches in this directory. Try the next. */ + continue; + + if (status != 0) + { + globfree (&dirs); + globfree (pglob); + return status; + } + + /* Stick the directory on the front of each name. */ + if (prefix_array (dirs.gl_pathv[i], + &pglob->gl_pathv[old_pathc], + pglob->gl_pathc - old_pathc)) + { + globfree (&dirs); + globfree (pglob); + return GLOB_NOSPACE; + } + } + + flags |= GLOB_MAGCHAR; + + /* We have ignored the GLOB_NOCHECK flag in the `glob_in_dir' calls. + But if we have not found any matching entry and thie GLOB_NOCHECK + flag was set we must return the list consisting of the disrectory + names followed by the filename. */ + if (pglob->gl_pathc == oldcount) + { + /* No matches. */ + if (flags & GLOB_NOCHECK) + { + size_t filename_len = strlen (filename) + 1; + char **new_pathv; + struct stat st; + + /* This is an pessimistic guess about the size. */ + pglob->gl_pathv + = (char **) realloc (pglob->gl_pathv, + (pglob->gl_pathc + + ((flags & GLOB_DOOFFS) ? + pglob->gl_offs : 0) + + dirs.gl_pathc + 1) * + sizeof (char *)); + if (pglob->gl_pathv == NULL) + { + globfree (&dirs); + return GLOB_NOSPACE; + } + + if (flags & GLOB_DOOFFS) + while (pglob->gl_pathc < pglob->gl_offs) + pglob->gl_pathv[pglob->gl_pathc++] = NULL; + + for (i = 0; i < dirs.gl_pathc; ++i) + { + const char *dir = dirs.gl_pathv[i]; + size_t dir_len = strlen (dir); + + /* First check whether this really is a directory. */ + if (((flags & GLOB_ALTDIRFUNC) + ? (*pglob->gl_stat) (dir, &st) : __stat (dir, &st)) != 0 + || !S_ISDIR (st.st_mode)) + /* No directory, ignore this entry. */ + continue; + + pglob->gl_pathv[pglob->gl_pathc] = malloc (dir_len + 1 + + filename_len); + if (pglob->gl_pathv[pglob->gl_pathc] == NULL) + { + globfree (&dirs); + globfree (pglob); + return GLOB_NOSPACE; + } + +#ifdef HAVE_MEMPCPY + mempcpy (mempcpy (mempcpy (pglob->gl_pathv[pglob->gl_pathc], + dir, dir_len), + "/", 1), + filename, filename_len); +#else + memcpy (pglob->gl_pathv[pglob->gl_pathc], dir, dir_len); + pglob->gl_pathv[pglob->gl_pathc][dir_len] = '/'; + memcpy (&pglob->gl_pathv[pglob->gl_pathc][dir_len + 1], + filename, filename_len); +#endif + ++pglob->gl_pathc; + } + + pglob->gl_pathv[pglob->gl_pathc] = NULL; + pglob->gl_flags = flags; + + /* Now we know how large the gl_pathv vector must be. */ + new_pathv = (char **) realloc (pglob->gl_pathv, + ((pglob->gl_pathc + 1) + * sizeof (char *))); + if (new_pathv != NULL) + pglob->gl_pathv = new_pathv; + } + else + return GLOB_NOMATCH; + } + + globfree (&dirs); + } + else + { + status = glob_in_dir (filename, dirname, flags, errfunc, pglob); + if (status != 0) + return status; + + if (dirlen > 0) + { + /* Stick the directory on the front of each name. */ + size_t ignore = oldcount; + + if ((flags & GLOB_DOOFFS) && ignore < pglob->gl_offs) + ignore = pglob->gl_offs; + + if (prefix_array (dirname, + &pglob->gl_pathv[ignore], + pglob->gl_pathc - ignore)) + { + globfree (pglob); + return GLOB_NOSPACE; + } + } + } + + if (flags & GLOB_MARK) + { + /* Append slashes to directory names. */ + size_t i; + struct stat st; + for (i = oldcount; i < pglob->gl_pathc; ++i) + if (((flags & GLOB_ALTDIRFUNC) + ? (*pglob->gl_stat) (pglob->gl_pathv[i], &st) + : __stat (pglob->gl_pathv[i], &st)) == 0 + && S_ISDIR (st.st_mode)) + { + size_t len = strlen (pglob->gl_pathv[i]) + 2; + char *new = realloc (pglob->gl_pathv[i], len); + if (new == NULL) + { + globfree (pglob); + return GLOB_NOSPACE; + } + strcpy (&new[len - 2], "/"); + pglob->gl_pathv[i] = new; + } + } + + if (!(flags & GLOB_NOSORT)) + { + /* Sort the vector. */ + int non_sort = oldcount; + + if ((flags & GLOB_DOOFFS) && pglob->gl_offs > oldcount) + non_sort = pglob->gl_offs; + + qsort ((__ptr_t) &pglob->gl_pathv[non_sort], + pglob->gl_pathc - non_sort, + sizeof (char *), collated_compare); + } + + return 0; +} + + +/* Free storage allocated in PGLOB by a previous `glob' call. */ +void +globfree (pglob) + register glob_t *pglob; +{ + if (pglob->gl_pathv != NULL) + { + register size_t i; + for (i = 0; i < pglob->gl_pathc; ++i) + if (pglob->gl_pathv[i] != NULL) + free ((__ptr_t) pglob->gl_pathv[i]); + free ((__ptr_t) pglob->gl_pathv); + } +} + + +/* Do a collated comparison of A and B. */ +static int +collated_compare (a, b) + const __ptr_t a; + const __ptr_t b; +{ + const char *const s1 = *(const char *const * const) a; + const char *const s2 = *(const char *const * const) b; + + if (s1 == s2) + return 0; + if (s1 == NULL) + return 1; + if (s2 == NULL) + return -1; + return strcoll (s1, s2); +} + + +/* Prepend DIRNAME to each of N members of ARRAY, replacing ARRAY's + elements in place. Return nonzero if out of memory, zero if successful. + A slash is inserted between DIRNAME and each elt of ARRAY, + unless DIRNAME is just "/". Each old element of ARRAY is freed. */ +static int +prefix_array (dirname, array, n) + const char *dirname; + char **array; + size_t n; +{ + register size_t i; + size_t dirlen = strlen (dirname); +#if defined __MSDOS__ || defined WINDOWS32 + int sep_char = '/'; +# define DIRSEP_CHAR sep_char +#else +# define DIRSEP_CHAR '/' +#endif + + if (dirlen == 1 && dirname[0] == '/') + /* DIRNAME is just "/", so normal prepending would get us "//foo". + We want "/foo" instead, so don't prepend any chars from DIRNAME. */ + dirlen = 0; +#if defined __MSDOS__ || defined WINDOWS32 + else if (dirlen > 1) + { + if (dirname[dirlen - 1] == '/' && dirname[dirlen - 2] == ':') + /* DIRNAME is "d:/". Don't prepend the slash from DIRNAME. */ + --dirlen; + else if (dirname[dirlen - 1] == ':') + { + /* DIRNAME is "d:". Use `:' instead of `/'. */ + --dirlen; + sep_char = ':'; + } + } +#endif + + for (i = 0; i < n; ++i) + { + size_t eltlen = strlen (array[i]) + 1; + char *new = (char *) malloc (dirlen + 1 + eltlen); + if (new == NULL) + { + while (i > 0) + free ((__ptr_t) array[--i]); + return 1; + } + +#ifdef HAVE_MEMPCPY + { + char *endp = (char *) mempcpy (new, dirname, dirlen); + *endp++ = DIRSEP_CHAR; + mempcpy (endp, array[i], eltlen); + } +#else + memcpy (new, dirname, dirlen); + new[dirlen] = DIRSEP_CHAR; + memcpy (&new[dirlen + 1], array[i], eltlen); +#endif + free ((__ptr_t) array[i]); + array[i] = new; + } + + return 0; +} + + +/* We must not compile this function twice. */ +#if !defined _LIBC || !defined NO_GLOB_PATTERN_P +/* Return nonzero if PATTERN contains any metacharacters. + Metacharacters can be quoted with backslashes if QUOTE is nonzero. */ +int +__glob_pattern_p (pattern, quote) + const char *pattern; + int quote; +{ + register const char *p; + int open = 0; + + for (p = pattern; *p != '\0'; ++p) + switch (*p) + { + case '?': + case '*': + return 1; + + case '\\': + if (quote && p[1] != '\0') + ++p; + break; + + case '[': + open = 1; + break; + + case ']': + if (open) + return 1; + break; + } + + return 0; +} +# ifdef _LIBC +weak_alias (__glob_pattern_p, glob_pattern_p) +# endif +#endif + + +/* Like `glob', but PATTERN is a final pathname component, + and matches are searched for in DIRECTORY. + The GLOB_NOSORT bit in FLAGS is ignored. No sorting is ever done. + The GLOB_APPEND flag is assumed to be set (always appends). */ +static int +glob_in_dir (pattern, directory, flags, errfunc, pglob) + const char *pattern; + const char *directory; + int flags; + int (*errfunc) __P ((const char *, int)); + glob_t *pglob; +{ + __ptr_t stream = NULL; + + struct globlink + { + struct globlink *next; + char *name; + }; + struct globlink *names = NULL; + size_t nfound; + int meta; + int save; + +#ifdef VMS + if (*directory == 0) + directory = "[]"; +#endif + meta = __glob_pattern_p (pattern, !(flags & GLOB_NOESCAPE)); + if (meta == 0) + { + if (flags & (GLOB_NOCHECK|GLOB_NOMAGIC)) + /* We need not do any tests. The PATTERN contains no meta + characters and we must not return an error therefore the + result will always contain exactly one name. */ + flags |= GLOB_NOCHECK; + else + { + /* Since we use the normal file functions we can also use stat() + to verify the file is there. */ + struct stat st; + size_t patlen = strlen (pattern); + size_t dirlen = strlen (directory); + char *fullname = (char *) __alloca (dirlen + 1 + patlen + 1); + +# ifdef HAVE_MEMPCPY + mempcpy (mempcpy (mempcpy (fullname, directory, dirlen), + "/", 1), + pattern, patlen + 1); +# else + memcpy (fullname, directory, dirlen); + fullname[dirlen] = '/'; + memcpy (&fullname[dirlen + 1], pattern, patlen + 1); +# endif + if (((flags & GLOB_ALTDIRFUNC) + ? (*pglob->gl_stat) (fullname, &st) + : __stat (fullname, &st)) == 0) + /* We found this file to be existing. Now tell the rest + of the function to copy this name into the result. */ + flags |= GLOB_NOCHECK; + } + + nfound = 0; + } + else + { + if (pattern[0] == '\0') + { + /* This is a special case for matching directories like in + "*a/". */ + names = (struct globlink *) __alloca (sizeof (struct globlink)); + names->name = (char *) malloc (1); + if (names->name == NULL) + goto memory_error; + names->name[0] = '\0'; + names->next = NULL; + nfound = 1; + meta = 0; + } + else + { + stream = ((flags & GLOB_ALTDIRFUNC) + ? (*pglob->gl_opendir) (directory) + : (__ptr_t) opendir (directory)); + if (stream == NULL) + { + if (errno != ENOTDIR + && ((errfunc != NULL && (*errfunc) (directory, errno)) + || (flags & GLOB_ERR))) + return GLOB_ABORTED; + nfound = 0; + meta = 0; + } + else + { + int fnm_flags = ((!(flags & GLOB_PERIOD) ? FNM_PERIOD : 0) + | ((flags & GLOB_NOESCAPE) ? FNM_NOESCAPE : 0) +#if defined HAVE_CASE_INSENSITIVE_FS + | FNM_CASEFOLD +#endif + ); + nfound = 0; + flags |= GLOB_MAGCHAR; + + while (1) + { + const char *name; + size_t len; + struct dirent *d = ((flags & GLOB_ALTDIRFUNC) + ? (*pglob->gl_readdir) (stream) + : readdir ((DIR *) stream)); + if (d == NULL) + break; + if (! REAL_DIR_ENTRY (d)) + continue; + +#ifdef HAVE_D_TYPE + /* If we shall match only directories use the information + provided by the dirent call if possible. */ + if ((flags & GLOB_ONLYDIR) + && d->d_type != DT_UNKNOWN && d->d_type != DT_DIR && d->d_type != DT_LNK) + continue; +#endif + + name = d->d_name; + + if (fnmatch (pattern, name, fnm_flags) == 0) + { + struct globlink *new = (struct globlink *) + __alloca (sizeof (struct globlink)); + len = NAMLEN (d); + new->name = (char *) malloc (len + 1); + if (new->name == NULL) + goto memory_error; +#ifdef HAVE_MEMPCPY + *((char *) mempcpy ((__ptr_t) new->name, name, len)) + = '\0'; +#else + memcpy ((__ptr_t) new->name, name, len); + new->name[len] = '\0'; +#endif + new->next = names; + names = new; + ++nfound; + } + } + } + } + } + + if (nfound == 0 && (flags & GLOB_NOCHECK)) + { + size_t len = strlen (pattern); + nfound = 1; + names = (struct globlink *) __alloca (sizeof (struct globlink)); + names->next = NULL; + names->name = (char *) malloc (len + 1); + if (names->name == NULL) + goto memory_error; +#ifdef HAVE_MEMPCPY + *((char *) mempcpy (names->name, pattern, len)) = '\0'; +#else + memcpy (names->name, pattern, len); + names->name[len] = '\0'; +#endif + } + + if (nfound != 0) + { + pglob->gl_pathv + = (char **) realloc (pglob->gl_pathv, + (pglob->gl_pathc + + ((flags & GLOB_DOOFFS) ? pglob->gl_offs : 0) + + nfound + 1) * + sizeof (char *)); + if (pglob->gl_pathv == NULL) + goto memory_error; + + if (flags & GLOB_DOOFFS) + while (pglob->gl_pathc < pglob->gl_offs) + pglob->gl_pathv[pglob->gl_pathc++] = NULL; + + for (; names != NULL; names = names->next) + pglob->gl_pathv[pglob->gl_pathc++] = names->name; + pglob->gl_pathv[pglob->gl_pathc] = NULL; + + pglob->gl_flags = flags; + } + + save = errno; + if (stream != NULL) + { + if (flags & GLOB_ALTDIRFUNC) + (*pglob->gl_closedir) (stream); + else + closedir ((DIR *) stream); + } + __set_errno (save); + + return nfound == 0 ? GLOB_NOMATCH : 0; + + memory_error: + { + save = errno; + if (flags & GLOB_ALTDIRFUNC) + (*pglob->gl_closedir) (stream); + else + closedir ((DIR *) stream); + __set_errno (save); + } + while (names != NULL) + { + if (names->name != NULL) + free ((__ptr_t) names->name); + names = names->next; + } + return GLOB_NOSPACE; +} + +#endif /* Not ELIDE_CODE. */ diff --git a/local/recipes/dev/gnu-make/source/lib/glob.in.h b/local/recipes/dev/gnu-make/source/lib/glob.in.h new file mode 100644 index 0000000000..0992de36d2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/glob.in.h @@ -0,0 +1,210 @@ +/* Copyright (C) 1991, 1992, 1995, 1996, 1997, 1998 Free Software Foundation, +Inc. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public License +along with this library; see the file COPYING.LIB. If not, write to the Free +Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 +USA. */ + +#ifndef _GLOB_H +#define _GLOB_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#undef __ptr_t +#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32 +# if !defined __GLIBC__ +# undef __P +# undef __PMT +# define __P(protos) protos +# define __PMT(protos) protos +# if !defined __GNUC__ || __GNUC__ < 2 +# undef __const +# define __const const +# endif +# endif +# define __ptr_t void * +#else /* Not C++ or ANSI C. */ +# undef __P +# undef __PMT +# define __P(protos) () +# define __PMT(protos) () +# undef __const +# define __const +# define __ptr_t char * +#endif /* C++ or ANSI C. */ + +/* We need `size_t' for the following definitions. */ +#ifndef __size_t +# if defined __FreeBSD__ +# define __size_t size_t +# else +# if defined __GNUC__ && __GNUC__ >= 2 +typedef __SIZE_TYPE__ __size_t; +# else +/* This is a guess. */ +/*hb + * Conflicts with DECCs already defined type __size_t. + * Defining an own type with a name beginning with '__' is no good. + * Anyway if DECC is used and __SIZE_T is defined then __size_t is + * already defined (and I hope it's exactly the one we need here). + */ +# if !(defined __DECC && defined __SIZE_T) +typedef unsigned long int __size_t; +# endif +# endif +# endif +#else +/* The GNU CC stddef.h version defines __size_t as empty. We need a real + definition. */ +# undef __size_t +# define __size_t size_t +#endif + +/* Bits set in the FLAGS argument to `glob'. */ +#define GLOB_ERR (1 << 0)/* Return on read errors. */ +#define GLOB_MARK (1 << 1)/* Append a slash to each name. */ +#define GLOB_NOSORT (1 << 2)/* Don't sort the names. */ +#define GLOB_DOOFFS (1 << 3)/* Insert PGLOB->gl_offs NULLs. */ +#define GLOB_NOCHECK (1 << 4)/* If nothing matches, return the pattern. */ +#define GLOB_APPEND (1 << 5)/* Append to results of a previous call. */ +#define GLOB_NOESCAPE (1 << 6)/* Backslashes don't quote metacharacters. */ +#define GLOB_PERIOD (1 << 7)/* Leading `.' can be matched by metachars. */ + +#if (!defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _BSD_SOURCE \ + || defined _GNU_SOURCE) +# define GLOB_MAGCHAR (1 << 8)/* Set in gl_flags if any metachars seen. */ +# define GLOB_ALTDIRFUNC (1 << 9)/* Use gl_opendir et al functions. */ +# define GLOB_BRACE (1 << 10)/* Expand "{a,b}" to "a" "b". */ +# define GLOB_NOMAGIC (1 << 11)/* If no magic chars, return the pattern. */ +# define GLOB_TILDE (1 << 12)/* Expand ~user and ~ to home directories. */ +# define GLOB_ONLYDIR (1 << 13)/* Match only directories. */ +# define GLOB_TILDE_CHECK (1 << 14)/* Like GLOB_TILDE but return an error + if the user name is not available. */ +# define __GLOB_FLAGS (GLOB_ERR|GLOB_MARK|GLOB_NOSORT|GLOB_DOOFFS| \ + GLOB_NOESCAPE|GLOB_NOCHECK|GLOB_APPEND| \ + GLOB_PERIOD|GLOB_ALTDIRFUNC|GLOB_BRACE| \ + GLOB_NOMAGIC|GLOB_TILDE|GLOB_ONLYDIR|GLOB_TILDE_CHECK) +#else +# define __GLOB_FLAGS (GLOB_ERR|GLOB_MARK|GLOB_NOSORT|GLOB_DOOFFS| \ + GLOB_NOESCAPE|GLOB_NOCHECK|GLOB_APPEND| \ + GLOB_PERIOD) +#endif + +/* Error returns from `glob'. */ +#define GLOB_NOSPACE 1 /* Ran out of memory. */ +#define GLOB_ABORTED 2 /* Read error. */ +#define GLOB_NOMATCH 3 /* No matches found. */ +#define GLOB_NOSYS 4 /* Not implemented. */ +#ifdef _GNU_SOURCE +/* Previous versions of this file defined GLOB_ABEND instead of + GLOB_ABORTED. Provide a compatibility definition here. */ +# define GLOB_ABEND GLOB_ABORTED +#endif + +/* Structure describing a globbing run. */ +#if !defined _AMIGA && !defined VMS /* Buggy compiler. */ +struct stat; +#endif +typedef struct + { + __size_t gl_pathc; /* Count of paths matched by the pattern. */ + char **gl_pathv; /* List of matched pathnames. */ + __size_t gl_offs; /* Slots to reserve in `gl_pathv'. */ + int gl_flags; /* Set to FLAGS, maybe | GLOB_MAGCHAR. */ + + /* If the GLOB_ALTDIRFUNC flag is set, the following functions + are used instead of the normal file access functions. */ + void (*gl_closedir) __PMT ((void *)); + struct dirent *(*gl_readdir) __PMT ((void *)); + __ptr_t (*gl_opendir) __PMT ((__const char *)); + int (*gl_lstat) __PMT ((__const char *, struct stat *)); +#if defined(VMS) && defined(__DECC) && !defined(_POSIX_C_SOURCE) + int (*gl_stat) __PMT ((__const char *, struct stat *, ...)); +#else + int (*gl_stat) __PMT ((__const char *, struct stat *)); +#endif + } glob_t; + +#ifdef _LARGEFILE64_SOURCE +struct stat64; +typedef struct + { + __size_t gl_pathc; + char **gl_pathv; + __size_t gl_offs; + int gl_flags; + + /* If the GLOB_ALTDIRFUNC flag is set, the following functions + are used instead of the normal file access functions. */ + void (*gl_closedir) __PMT ((void *)); + struct dirent64 *(*gl_readdir) __PMT ((void *)); + __ptr_t (*gl_opendir) __PMT ((__const char *)); + int (*gl_lstat) __PMT ((__const char *, struct stat64 *)); + int (*gl_stat) __PMT ((__const char *, struct stat64 *)); + } glob64_t; +#endif + +#if _FILE_OFFSET_BITS == 64 && __GNUC__ < 2 +# define glob glob64 +# define globfree globfree64 +#else +# ifdef _LARGEFILE64_SOURCE +extern int glob64 __P ((__const char *__pattern, int __flags, + int (*__errfunc) (__const char *, int), + glob64_t *__pglob)); + +extern void globfree64 __P ((glob64_t *__pglob)); +# endif +#endif + +/* Do glob searching for PATTERN, placing results in PGLOB. + The bits defined above may be set in FLAGS. + If a directory cannot be opened or read and ERRFUNC is not nil, + it is called with the pathname that caused the error, and the + `errno' value from the failing call; if it returns non-zero + `glob' returns GLOB_ABEND; if it returns zero, the error is ignored. + If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. + Otherwise, `glob' returns zero. */ +#if _FILE_OFFSET_BITS != 64 || __GNUC__ < 2 +extern int glob __P ((__const char *__pattern, int __flags, + int (*__errfunc) (__const char *, int), + glob_t *__pglob)); + +/* Free storage allocated in PGLOB by a previous `glob' call. */ +extern void globfree __P ((glob_t *__pglob)); +#else +extern int glob __P ((__const char *__pattern, int __flags, + int (*__errfunc) (__const char *, int), + glob_t *__pglob)) __asm__ ("glob64"); + +extern void globfree __P ((glob_t *__pglob)) __asm__ ("globfree64"); +#endif + + +#ifdef _GNU_SOURCE +/* Return nonzero if PATTERN contains any metacharacters. + Metacharacters can be quoted with backslashes if QUOTE is nonzero. + + This function is not part of the interface specified by POSIX.2 + but several programs want to use it. */ +extern int glob_pattern_p __P ((__const char *__pattern, int __quote)); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* glob.h */ diff --git a/local/recipes/dev/gnu-make/source/lib/intprops.h b/local/recipes/dev/gnu-make/source/lib/intprops.h new file mode 100644 index 0000000000..d4a917f72a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/intprops.h @@ -0,0 +1,642 @@ +/* intprops.h -- properties of integer types + + 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 Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + + +#ifndef _GL_INTPROPS_H +#define _GL_INTPROPS_H + +#include + +/* Return a value with the common real type of E and V and the value of V. + Do not evaluate E. */ +#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v)) + +/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see + . */ +#define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v)) + +/* The extra casts in the following macros work around compiler bugs, + e.g., in Cray C 5.0.3.0. */ + +/* True if the arithmetic type T is an integer type. bool counts as + an integer. */ +#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) + +/* True if the real type T is signed. */ +#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) + +/* Return 1 if the real expression E, after promotion, has a + signed or floating type. Do not evaluate E. */ +#define EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) + + +/* Minimum and maximum values for integer types and expressions. */ + +/* The width in bits of the integer type or expression T. + Do not evaluate T. T must not be a bit-field expression. + Padding bits are not supported; this is checked at compile-time below. */ +#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) + +/* The maximum and minimum values for the integer type T. */ +#define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) +#define TYPE_MAXIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) -1 \ + : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) + +/* The maximum and minimum values for the type of the expression E, + after integer promotion. E is not evaluated. */ +#define _GL_INT_MINIMUM(e) \ + (EXPR_SIGNED (e) \ + ? ~ _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_CONVERT (e, 0)) +#define _GL_INT_MAXIMUM(e) \ + (EXPR_SIGNED (e) \ + ? _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_NEGATE_CONVERT (e, 1)) +#define _GL_SIGNED_INT_MAXIMUM(e) \ + (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH (+ (e)) - 2)) - 1) * 2 + 1) + +/* Work around OpenVMS incompatibility with C99. */ +#if !defined LLONG_MAX && defined __INT64_MAX +# define LLONG_MAX __INT64_MAX +# define LLONG_MIN __INT64_MIN +#endif + +/* This include file assumes that signed types are two's complement without + padding bits; the above macros have undefined behavior otherwise. + If this is a problem for you, please let us know how to fix it for your host. + This assumption is tested by the intprops-tests module. */ + +/* Does the __typeof__ keyword work? This could be done by + 'configure', but for now it's easier to do it by hand. */ +#if (2 <= __GNUC__ \ + || (4 <= __clang_major__) \ + || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ + || (0x5110 <= __SUNPRO_C && !__STDC__)) +# define _GL_HAVE___TYPEOF__ 1 +#else +# define _GL_HAVE___TYPEOF__ 0 +#endif + +/* Return 1 if the integer type or expression T might be signed. Return 0 + if it is definitely unsigned. T must not be a bit-field expression. + This macro does not evaluate its argument, and expands to an + integer constant expression. */ +#if _GL_HAVE___TYPEOF__ +# define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t)) +#else +# define _GL_SIGNED_TYPE_OR_EXPR(t) 1 +#endif + +/* Bound on length of the string representing an unsigned integer + value representable in B bits. log10 (2.0) < 146/485. The + smallest value of B where this bound is not tight is 2621. */ +#define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485) + +/* Bound on length of the string representing an integer type or expression T. + T must not be a bit-field expression. + + Subtract 1 for the sign bit if T is signed, and then add 1 more for + a minus sign if needed. + + Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 1 when its argument is + unsigned, this macro may overestimate the true bound by one byte when + applied to unsigned types of size 2, 4, 16, ... bytes. */ +#define INT_STRLEN_BOUND(t) \ + (INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - _GL_SIGNED_TYPE_OR_EXPR (t)) \ + + _GL_SIGNED_TYPE_OR_EXPR (t)) + +/* Bound on buffer size needed to represent an integer type or expression T, + including the terminating null. T must not be a bit-field expression. */ +#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) + + +/* Range overflow checks. + + The INT__RANGE_OVERFLOW macros return 1 if the corresponding C + operators might not yield numerically correct answers due to + arithmetic overflow. They do not rely on undefined or + implementation-defined behavior. Their implementations are simple + and straightforward, but they are harder to use and may be less + efficient than the INT__WRAPV, INT__OK, and + INT__OVERFLOW macros described below. + + Example usage: + + long int i = ...; + long int j = ...; + if (INT_MULTIPLY_RANGE_OVERFLOW (i, j, LONG_MIN, LONG_MAX)) + printf ("multiply would overflow"); + else + printf ("product is %ld", i * j); + + Restrictions on *_RANGE_OVERFLOW macros: + + These macros do not check for all possible numerical problems or + undefined or unspecified behavior: they do not check for division + by zero, for bad shift counts, or for shifting negative numbers. + + These macros may evaluate their arguments zero or multiple times, + so the arguments should not have side effects. The arithmetic + arguments (including the MIN and MAX arguments) must be of the same + integer type after the usual arithmetic conversions, and the type + 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. */ + +/* Return 1 if A + B would overflow in [MIN,MAX] arithmetic. + See above for restrictions. */ +#define INT_ADD_RANGE_OVERFLOW(a, b, min, max) \ + ((b) < 0 \ + ? (a) < (min) - (b) \ + : (max) - (b) < (a)) + +/* Return 1 if A - B would overflow in [MIN,MAX] arithmetic. + See above for restrictions. */ +#define INT_SUBTRACT_RANGE_OVERFLOW(a, b, min, max) \ + ((b) < 0 \ + ? (max) + (b) < (a) \ + : (a) < (min) + (b)) + +/* Return 1 if - A would overflow in [MIN,MAX] arithmetic. + See above for restrictions. */ +#define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ + ((min) < 0 \ + ? (a) < - (max) \ + : 0 < (a)) + +/* Return 1 if A * B would overflow in [MIN,MAX] arithmetic. + See above for restrictions. Avoid && and || as they tickle + bugs in Sun C 5.11 2010/08/13 and other compilers; see + . */ +#define INT_MULTIPLY_RANGE_OVERFLOW(a, b, min, max) \ + ((b) < 0 \ + ? ((a) < 0 \ + ? (a) < (max) / (b) \ + : (b) == -1 \ + ? 0 \ + : (min) / (b) < (a)) \ + : (b) == 0 \ + ? 0 \ + : ((a) < 0 \ + ? (a) < (min) / (b) \ + : (max) / (b) < (a))) + +/* Return 1 if A / B would overflow in [MIN,MAX] arithmetic. + See above for restrictions. Do not check for division by zero. */ +#define INT_DIVIDE_RANGE_OVERFLOW(a, b, min, max) \ + ((min) < 0 && (b) == -1 && (a) < - (max)) + +/* Return 1 if A % B would overflow in [MIN,MAX] arithmetic. + See above for restrictions. Do not check for division by zero. + Mathematically, % should never overflow, but on x86-like hosts + INT_MIN % -1 traps, and the C standard permits this, so treat this + as an overflow too. */ +#define INT_REMAINDER_RANGE_OVERFLOW(a, b, min, max) \ + INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max) + +/* Return 1 if A << B would overflow in [MIN,MAX] arithmetic. + See above for restrictions. Here, MIN and MAX are for A only, and B need + not be of the same type as the other arguments. The C standard says that + behavior is undefined for shifts unless 0 <= B < wordwidth, and that when + A is negative then A << B has undefined behavior and A >> B has + implementation-defined behavior, but do not check these other + restrictions. */ +#define INT_LEFT_SHIFT_RANGE_OVERFLOW(a, b, min, max) \ + ((a) < 0 \ + ? (a) < (min) >> (b) \ + : (max) >> (b) < (a)) + +/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow + (A, B, P) work when P is non-null. */ +#ifdef __EDG__ +/* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned + . */ +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) +/* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, + see . */ +#elif 7 <= __GNUC__ +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 +#else +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#endif + +/* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */ +#if defined __clang_major__ && __clang_major__ < 14 +/* Work around Clang bug . */ +# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0 +#else +# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW +#endif + +/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for + __builtin_sub_overflow_p and __builtin_mul_overflow_p. */ +#ifdef __EDG__ +/* In EDG-based compilers like ICC 2021.3 and earlier, + __builtin_add_overflow_p etc. are not treated as integral constant + expressions even when all arguments are. */ +# define _GL_HAS_BUILTIN_OVERFLOW_P 0 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_OVERFLOW_P __has_builtin (__builtin_mul_overflow_p) +#else +# define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) +#endif + +/* The _GL*_OVERFLOW macros have the same restrictions as the + *_RANGE_OVERFLOW macros, except that they do not assume that operands + (e.g., A and B) have the same type as MIN and MAX. Instead, they assume + that the result (e.g., A + B) has that type. */ +#if _GL_HAS_BUILTIN_OVERFLOW_P +# define _GL_ADD_OVERFLOW(a, b, min, max) \ + __builtin_add_overflow_p (a, b, (__typeof__ ((a) + (b))) 0) +# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ + __builtin_sub_overflow_p (a, b, (__typeof__ ((a) - (b))) 0) +# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ + __builtin_mul_overflow_p (a, b, (__typeof__ ((a) * (b))) 0) +#else +# define _GL_ADD_OVERFLOW(a, b, min, max) \ + ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \ + : (a) < 0 ? (b) <= (a) + (b) \ + : (b) < 0 ? (a) <= (a) + (b) \ + : (a) + (b) < (b)) +# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ + ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \ + : (a) < 0 ? 1 \ + : (b) < 0 ? (a) - (b) <= (a) \ + : (a) < (b)) +# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ + (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \ + || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max)) +#endif +#define _GL_DIVIDE_OVERFLOW(a, b, min, max) \ + ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \ + : (a) < 0 ? (b) <= (a) + (b) - 1 \ + : (b) < 0 && (a) + (b) <= (a)) +#define _GL_REMAINDER_OVERFLOW(a, b, min, max) \ + ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \ + : (a) < 0 ? (a) % (b) != ((max) - (b) + 1) % (b) \ + : (b) < 0 && ! _GL_UNSIGNED_NEG_MULTIPLE (a, b, max)) + +/* Return a nonzero value if A is a mathematical multiple of B, where + A is unsigned, B is negative, and MAX is the maximum value of A's + type. A's type must be the same as (A % B)'s type. Normally (A % + -B == 0) suffices, but things get tricky if -B would overflow. */ +#define _GL_UNSIGNED_NEG_MULTIPLE(a, b, max) \ + (((b) < -_GL_SIGNED_INT_MAXIMUM (b) \ + ? (_GL_SIGNED_INT_MAXIMUM (b) == (max) \ + ? (a) \ + : (a) % (_GL_INT_CONVERT (a, _GL_SIGNED_INT_MAXIMUM (b)) + 1)) \ + : (a) % - (b)) \ + == 0) + +/* Check for integer overflow, and report low order bits of answer. + + The INT__OVERFLOW macros return 1 if the corresponding C operators + might not yield numerically correct answers due to arithmetic overflow. + The INT__WRAPV macros compute the low-order bits of the sum, + difference, and product of two C integers, and return 1 if these + low-order bits are not numerically correct. + These macros work correctly on all known practical hosts, and do not rely + on undefined behavior due to signed arithmetic overflow. + + Example usage, assuming A and B are long int: + + if (INT_MULTIPLY_OVERFLOW (a, b)) + printf ("result would overflow\n"); + else + printf ("result is %ld (no overflow)\n", a * b); + + Example usage with WRAPV flavor: + + long int result; + bool overflow = INT_MULTIPLY_WRAPV (a, b, &result); + printf ("result is %ld (%s)\n", result, + overflow ? "after overflow" : "no overflow"); + + Restrictions on these macros: + + These macros do not check for all possible numerical problems or + undefined or unspecified behavior: they do not check for division + by zero, for bad shift counts, or for shifting negative numbers. + + These macros may evaluate their arguments zero or multiple times, so the + 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. 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. + + Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B, + A % B, and A << B would overflow, respectively. */ + +#define INT_ADD_OVERFLOW(a, b) \ + _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) +#define INT_SUBTRACT_OVERFLOW(a, b) \ + _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) +#if _GL_HAS_BUILTIN_OVERFLOW_P +# define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a) +#else +# define INT_NEGATE_OVERFLOW(a) \ + INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) +#endif +#define INT_MULTIPLY_OVERFLOW(a, b) \ + _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW) +#define INT_DIVIDE_OVERFLOW(a, b) \ + _GL_BINARY_OP_OVERFLOW (a, b, _GL_DIVIDE_OVERFLOW) +#define INT_REMAINDER_OVERFLOW(a, b) \ + _GL_BINARY_OP_OVERFLOW (a, b, _GL_REMAINDER_OVERFLOW) +#define INT_LEFT_SHIFT_OVERFLOW(a, b) \ + INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, \ + _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) + +/* Return 1 if the expression A B would overflow, + where OP_RESULT_OVERFLOW (A, B, MIN, MAX) does the actual test, + assuming MIN and MAX are the minimum and maximum for the result type. + Arguments should be free of side effects. */ +#define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow) \ + op_result_overflow (a, b, \ + _GL_INT_MINIMUM (_GL_INT_CONVERT (a, b)), \ + _GL_INT_MAXIMUM (_GL_INT_CONVERT (a, b))) + +/* Store the low-order bits of A + B, A - B, A * B, respectively, into *R. + Return 1 if the result overflows. See above for restrictions. */ +#if _GL_HAS_BUILTIN_ADD_OVERFLOW +# define INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r) +# define INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r) +#else +# define INT_ADD_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW) +# define INT_SUBTRACT_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW) +#endif +#if _GL_HAS_BUILTIN_MUL_OVERFLOW +# if ((9 < __GNUC__ + (3 <= __GNUC_MINOR__) \ + || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) \ + && !defined __EDG__) +# define INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r) +# else + /* Work around GCC bug 91450. */ +# define INT_MULTIPLY_WRAPV(a, b, r) \ + ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && EXPR_SIGNED (a) && EXPR_SIGNED (b) \ + && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \ + ? ((void) __builtin_mul_overflow (a, b, r), 1) \ + : __builtin_mul_overflow (a, b, r)) +# endif +#else +# define INT_MULTIPLY_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW) +#endif + +/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 + https://llvm.org/bugs/show_bug.cgi?id=25390 + For now, assume all versions of GCC-like compilers generate bogus + warnings for _Generic. This matters only for compilers that + lack relevant builtins. */ +#if __GNUC__ || defined __clang__ +# define _GL__GENERIC_BOGUS 1 +#else +# define _GL__GENERIC_BOGUS 0 +#endif + +/* Store the low-order bits of A B into *R, where OP specifies + the operation and OVERFLOW the overflow predicate. Return 1 if the + result overflows. See above for restrictions. */ +#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS +# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ + (_Generic \ + (*(r), \ + signed char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + signed char, SCHAR_MIN, SCHAR_MAX), \ + unsigned char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned char, 0, UCHAR_MAX), \ + short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + short int, SHRT_MIN, SHRT_MAX), \ + unsigned short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned short int, 0, USHRT_MAX), \ + int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX), \ + unsigned int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned int, 0, UINT_MAX), \ + long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX), \ + unsigned long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX), \ + long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX), \ + unsigned long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + unsigned long long int, 0, ULLONG_MAX))) +#else +/* Store the low-order bits of A B into *R, where OP specifies + the operation and OVERFLOW the overflow predicate. If *R is + signed, its type is ST with bounds SMIN..SMAX; otherwise its type + is UT with bounds U..UMAX. ST and UT are narrower than int. + Return 1 if the result overflows. See above for restrictions. */ +# if _GL_HAVE___TYPEOF__ +# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ + (TYPE_SIGNED (__typeof__ (*(r))) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax)) +# else +# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ + (overflow (a, b, smin, smax) \ + ? (overflow (a, b, 0, umax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \ + : (overflow (a, b, 0, umax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0))) +# endif + +# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (signed char) \ + ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ + signed char, SCHAR_MIN, SCHAR_MAX, \ + unsigned char, UCHAR_MAX) \ + : sizeof *(r) == sizeof (short int) \ + ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ + short int, SHRT_MIN, SHRT_MAX, \ + unsigned short int, USHRT_MAX) \ + : sizeof *(r) == sizeof (int) \ + ? (EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned int, 0, UINT_MAX)) \ + : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) +# ifdef LLONG_MAX +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (long int) \ + ? (EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX)) \ + : (EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + unsigned long long int, 0, ULLONG_MAX))) +# else +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX)) +# endif +#endif + +/* Store the low-order bits of A B into *R, where the operation + is given by OP. Use the unsigned type UT for calculation to avoid + overflow problems. *R's type is T, with extrema TMIN and TMAX. + T must be a signed integer type. Return 1 if the result overflows. */ +#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ + (overflow (a, b, tmin, tmax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0)) + +/* Return the low-order bits of A B, where the operation is given + by OP. Use the unsigned type UT for calculation to avoid undefined + behavior on signed integer overflow, and convert the result to type T. + UT is at least as wide as T and is no narrower than unsigned int, + T is two's complement, and there is no padding or trap representations. + Assume that converting UT to T yields the low-order bits, as is + done in all known two's-complement C compilers. E.g., see: + https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html + + According to the C standard, converting UT to T yields an + implementation-defined result or signal for values outside T's + range. However, code that works around this theoretical problem + runs afoul of a compiler bug in Oracle Studio 12.3 x86. See: + https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html + As the compiler bug is real, don't try to work around the + theoretical problem. */ + +#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \ + ((t) ((ut) (a) op (ut) (b))) + +/* Return true if the numeric values A + B, A - B, A * B fall outside + the range TMIN..TMAX. Arguments should be integer expressions + without side effects. TMIN should be signed and nonpositive. + TMAX should be positive, and should be signed unless TMIN is zero. */ +#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \ + ((b) < 0 \ + ? (((tmin) \ + ? ((EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \ + && (a) < (tmin) - (b)) \ + : (a) <= -1 - (b)) \ + || ((EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \ + : (a) < 0 \ + ? (((tmin) \ + ? ((EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \ + && (b) < (tmin) - (a)) \ + : (b) <= -1 - (a)) \ + || ((EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \ + && (tmax) < (a) + (b))) \ + : (tmax) < (b) || (tmax) - (b) < (a)) +#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \ + (((a) < 0) == ((b) < 0) \ + ? ((a) < (b) \ + ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \ + : (tmax) < (a) - (b)) \ + : (a) < 0 \ + ? ((!EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \ + || (a) - (tmin) < (b)) \ + : ((! (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ + && EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \ + && (tmax) <= -1 - (b)) \ + || (tmax) + (b) < (a))) +#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \ + ((b) < 0 \ + ? ((a) < 0 \ + ? (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ + ? (a) < (tmax) / (b) \ + : ((INT_NEGATE_OVERFLOW (b) \ + ? _GL_INT_CONVERT (b, tmax) >> (TYPE_WIDTH (+ (b)) - 1) \ + : (tmax) / -(b)) \ + <= -1 - (a))) \ + : INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \ + ? (EXPR_SIGNED (a) \ + ? 0 < (a) + (tmin) \ + : 0 < (a) && -1 - (tmin) < (a) - 1) \ + : (tmin) / (b) < (a)) \ + : (b) == 0 \ + ? 0 \ + : ((a) < 0 \ + ? (INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \ + ? (EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \ + : (tmin) / (a) < (b)) \ + : (tmax) / (b) < (a))) + +/* 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/local/recipes/dev/gnu-make/source/lib/stdbool.in.h b/local/recipes/dev/gnu-make/source/lib/stdbool.in.h new file mode 100644 index 0000000000..125de5a25e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/stdbool.in.h @@ -0,0 +1,143 @@ +/* Copyright (C) 2001-2003, 2006-2022 Free Software Foundation, Inc. + Written by Bruno Haible , 2001. + + 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 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +#ifndef _GL_STDBOOL_H +#define _GL_STDBOOL_H + +/* ISO C 99 for platforms that lack it. */ + +/* Usage suggestions: + + Programs that use should be aware of some limitations + and standards compliance issues. + + Standards compliance: + + - must be #included before 'bool', 'false', 'true' + can be used. + + - You cannot assume that sizeof (bool) == 1. + + - Programs should not undefine the macros bool, true, and false, + as C99 lists that as an "obsolescent feature". + + Limitations of this substitute, when used in a C89 environment: + + - must be #included before the '_Bool' type can be used. + + - You cannot assume that _Bool is a typedef; it might be a macro. + + - Bit-fields of type 'bool' are not supported. Portable code + should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'. + + - In C99, casts and automatic conversions to '_Bool' or 'bool' are + performed in such a way that every nonzero value gets converted + to 'true', and zero gets converted to 'false'. This doesn't work + with this substitute. With this substitute, only the values 0 and 1 + give the expected result when converted to _Bool' or 'bool'. + + - C99 allows the use of (_Bool)0.0 in constant expressions, but + this substitute cannot always provide this property. + + Also, it is suggested that programs use 'bool' rather than '_Bool'; + this isn't required, but 'bool' is more common. */ + + +/* 7.16. Boolean type and values */ + +/* BeOS already #defines false 0, true 1. We use the same + definitions below, but temporarily we have to #undef them. */ +#if defined __BEOS__ && !defined __HAIKU__ +# include /* defines bool but not _Bool */ +# undef false +# undef true +#endif + +#ifdef __cplusplus +# if !defined _MSC_VER +# define _Bool bool +# define bool bool +# endif +#else +# if defined __BEOS__ && !defined __HAIKU__ + /* A compiler known to have 'bool'. */ + /* If the compiler already has both 'bool' and '_Bool', we can assume they + are the same types. */ +# if !@HAVE__BOOL@ +typedef bool _Bool; +# endif +# else +# if !defined __GNUC__ + /* If @HAVE__BOOL@: + Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when + the built-in _Bool type is used. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + https://lists.gnu.org/r/bug-coreutils/2005-10/msg00086.html + Similar bugs are likely with other compilers as well; this file + wouldn't be used if was working. + So we override the _Bool type. + If !@HAVE__BOOL@: + Need to define _Bool ourselves. As 'signed char' or as an enum type? + Use of a typedef, with SunPRO C, leads to a stupid + "warning: _Bool is a keyword in ISO C99". + Use of an enum type, with IRIX cc, leads to a stupid + "warning(1185): enumerated type mixed with another type". + Even the existence of an enum type, without a typedef, + "Invalid enumerator. (badenum)" with HP-UX cc on Tru64. + The only benefit of the enum, debuggability, is not important + with these compilers. So use 'signed char' and no enum. */ +# define _Bool signed char +# else + /* With this compiler, trust the _Bool type if the compiler has it. */ +# if !@HAVE__BOOL@ + /* For the sake of symbolic names in gdb, define true and false as + enum constants, not only as macros. + It is tempting to write + typedef enum { false = 0, true = 1 } _Bool; + so that gdb prints values of type 'bool' symbolically. But then + values of type '_Bool' might promote to 'int' or 'unsigned int' + (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int' + (see ISO C 99 6.3.1.1.(2)). So add a negative value to the + enum; this ensures that '_Bool' promotes to 'int'. */ +typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool; +# endif +# endif +# endif +# define bool _Bool +#endif + +/* The other macros must be usable in preprocessor directives. */ +#ifdef __cplusplus +# 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 +#endif + +#define __bool_true_false_are_defined 1 + +#endif /* _GL_STDBOOL_H */ diff --git a/local/recipes/dev/gnu-make/source/lib/warn-on-use.h b/local/recipes/dev/gnu-make/source/lib/warn-on-use.h new file mode 100644 index 0000000000..94f5b9201e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/warn-on-use.h @@ -0,0 +1,149 @@ +/* A C macro for emitting warnings if a function is used. + 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 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +/* _GL_WARN_ON_USE (function, "literal string") issues a declaration + for FUNCTION which will then trigger a compiler warning containing + the text of "literal string" anywhere that function is called, if + supported by the compiler. If the compiler does not support this + feature, the macro expands to an unused extern declaration. + + _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the + attribute used in _GL_WARN_ON_USE. If the compiler does not support + this feature, it expands to empty. + + These macros are useful for marking a function as a potential + portability trap, with the intent that "literal string" include + instructions on the replacement function that should be used + instead. + _GL_WARN_ON_USE is for functions with 'extern' linkage. + _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline' + linkage. + + However, one of the reasons that a function is a portability trap is + if it has the wrong signature. Declaring FUNCTION with a different + signature in C is a compilation error, so this macro must use the + same type as any existing declaration so that programs that avoid + the problematic FUNCTION do not fail to compile merely because they + included a header that poisoned the function. But this implies that + _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already + have a declaration. Use of this macro implies that there must not + be any other macro hiding the declaration of FUNCTION; but + undefining FUNCTION first is part of the poisoning process anyway + (although for symbols that are provided only via a macro, the result + is a compilation error rather than a warning containing + "literal string"). Also note that in C++, it is only safe to use if + FUNCTION has no overloads. + + For an example, it is possible to poison 'getline' by: + - adding a call to gl_WARN_ON_USE_PREPARE([[#include ]], + [getline]) in configure.ac, which potentially defines + HAVE_RAW_DECL_GETLINE + - adding this code to a header that wraps the system : + #undef getline + #if HAVE_RAW_DECL_GETLINE + _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but" + "not universally present; use the gnulib module getline"); + #endif + + It is not possible to directly poison global variables. But it is + possible to write a wrapper accessor function, and poison that + (less common usage, like &environ, will cause a compilation error + rather than issue the nice warning, but the end result of informing + the developer about their portability problem is still achieved): + #if HAVE_RAW_DECL_ENVIRON + static char *** + rpl_environ (void) { return &environ; } + _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared"); + # undef environ + # define environ (*rpl_environ ()) + #endif + or better (avoiding contradictory use of 'static' and 'extern'): + #if HAVE_RAW_DECL_ENVIRON + static char *** + _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared") + rpl_environ (void) { return &environ; } + # undef environ + # define environ (*rpl_environ ()) + #endif + */ +#ifndef _GL_WARN_ON_USE + +# 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) \ +_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) \ +_GL_WARN_EXTERN_C __typeof__ (function) function +# define _GL_WARN_ON_USE_ATTRIBUTE(message) +# else /* Unsupported. */ +# define _GL_WARN_ON_USE(function, message) \ +_GL_WARN_EXTERN_C int _gl_warn_on_use +# define _GL_WARN_ON_USE_ATTRIBUTE(message) +# endif +#endif + +/* _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 !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_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 + +/* _GL_WARN_EXTERN_C declaration; + performs the declaration with C linkage. */ +#ifndef _GL_WARN_EXTERN_C +# if defined __cplusplus +# define _GL_WARN_EXTERN_C extern "C" +# else +# define _GL_WARN_EXTERN_C extern +# endif +#endif diff --git a/local/recipes/dev/gnu-make/source/m4/00gnulib.m4 b/local/recipes/dev/gnu-make/source/m4/00gnulib.m4 new file mode 100644 index 0000000000..dea34e8341 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/00gnulib.m4 @@ -0,0 +1,85 @@ +# 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 the clang fix has +dnl been included in Autoconf. + +# 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 +# ----------- +# Witness macro that this file has been included. Needed to force +# Automake to include this file prior to all other gnulib .m4 files. +AC_DEFUN([gl_00GNULIB]) diff --git a/local/recipes/dev/gnu-make/source/m4/acinclude.m4 b/local/recipes/dev/gnu-make/source/m4/acinclude.m4 new file mode 100644 index 0000000000..d7131a8105 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/acinclude.m4 @@ -0,0 +1,132 @@ +dnl acinclude.m4 -- Extra macros needed for GNU make. +dnl +dnl Automake will incorporate this into its generated aclocal.m4. +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 +dnl the terms of the GNU General Public License as published by the Free +dnl Software Foundation; either version 3 of the License, or (at your option) +dnl any later version. +dnl +dnl GNU Make is distributed in the hope that it will be useful, but WITHOUT +dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for. +dnl more details. +dnl +dnl You should have received a copy of the GNU General Public License along +dnl with this program. If not, see . + +dnl --------------------------------------------------------------------------- +dnl Got this from the lynx 2.8 distribution. +dnl by T.E.Dickey +dnl and Jim Spath +dnl and Philippe De Muyter +dnl +dnl Created: 1997/1/28 +dnl Updated: 1997/12/23 +dnl --------------------------------------------------------------------------- +dnl After checking for functions in the default $LIBS, make a further check +dnl for the functions that are netlib-related (these aren't always in the +dnl libc, etc., and have to be handled specially because there are conflicting +dnl and broken implementations. +dnl Common library requirements (in order): +dnl -lresolv -lsocket -lnsl +dnl -lnsl -lsocket +dnl -lsocket +dnl -lbsd +AC_DEFUN([CF_NETLIBS],[ +cf_test_netlibs=no +AC_MSG_CHECKING(for network libraries) +AC_CACHE_VAL(cf_cv_netlibs,[ +AC_MSG_RESULT(working...) +cf_cv_netlibs="" +cf_test_netlibs=yes +AC_CHECK_FUNCS(gethostname,,[ + CF_RECHECK_FUNC(gethostname,nsl,cf_cv_netlibs,[ + CF_RECHECK_FUNC(gethostname,socket,cf_cv_netlibs)])]) +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +AC_CHECK_LIB(inet,main,cf_cv_netlibs="-linet $cf_cv_netlibs") +# +if test "$ac_cv_func_lsocket" != no ; then +AC_CHECK_FUNCS(socket,,[ + CF_RECHECK_FUNC(socket,socket,cf_cv_netlibs,[ + CF_RECHECK_FUNC(socket,bsd,cf_cv_netlibs)])]) +fi +# +AC_CHECK_FUNCS(gethostbyname,,[ + CF_RECHECK_FUNC(gethostbyname,nsl,cf_cv_netlibs)]) +]) +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&AC_FD_MSG +])dnl +dnl --------------------------------------------------------------------------- +dnl Re-check on a function to see if we can pick it up by adding a library. +dnl $1 = function to check +dnl $2 = library to check in +dnl $3 = environment to update (e.g., $LIBS) +dnl $4 = what to do if this fails +dnl +dnl This uses 'unset' if the shell happens to support it, but leaves the +dnl configuration variable set to 'unknown' if not. This is a little better +dnl than the normal autoconf test, which gives misleading results if a test +dnl for the function is made (e.g., with AC_CHECK_FUNC) after this macro is +dnl used (autoconf does not distinguish between a null token and one that is +dnl set to 'no'). +AC_DEFUN([CF_RECHECK_FUNC],[ +AC_CHECK_LIB($2,$1,[ + CF_UPPER(cf_tr_func,$1) + AC_DEFINE_UNQUOTED(HAVE_$cf_tr_func,1,[Define if you have function $1]) + ac_cv_func_$1=yes + $3="-l$2 [$]$3"],[ + ac_cv_func_$1=unknown + unset ac_cv_func_$1 2>/dev/null + $4], + [[$]$3]) +])dnl +dnl --------------------------------------------------------------------------- +dnl Make an uppercase version of a variable +dnl $1=uppercase($2) +AC_DEFUN([CF_UPPER], +[ +changequote(,)dnl +$1=`echo $2 | tr '[a-z]' '[A-Z]'` +changequote([,])dnl +])dnl + + +dnl --------------------------------------------------------------------------- +dnl From Paul Eggert +dnl Update for Darwin by Troy Runkel +dnl Update for AIX by Olexiy Buyanskyy (Savannah bug 32485) + +AC_DEFUN([AC_STRUCT_ST_MTIM_NSEC], + [AC_CACHE_CHECK([for nanoseconds field of struct stat], + ac_cv_struct_st_mtim_nsec, + [ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # st_mtim.tv_nsec -- the usual case + # st_mtim._tv_nsec -- Solaris 2.6, if + # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 + # && !defined __EXTENSIONS__) + # st_mtim.st__tim.tv_nsec -- UnixWare 2.1.2 + # st_mtime_n -- AIX 5.2 and above + # st_mtimespec.tv_nsec -- Darwin (Mac OSX) + for ac_val in st_mtim.tv_nsec st_mtim._tv_nsec st_mtim.st__tim.tv_nsec st_mtime_n st_mtimespec.tv_nsec; do + CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" + AC_TRY_COMPILE([#include +#include + ], [struct stat s; s.ST_MTIM_NSEC;], + [ac_cv_struct_st_mtim_nsec=$ac_val; break]) + done + CPPFLAGS="$ac_save_CPPFLAGS" + ]) + + if test $ac_cv_struct_st_mtim_nsec != no; then + AC_DEFINE_UNQUOTED([ST_MTIM_NSEC], [$ac_cv_struct_st_mtim_nsec], + [Define if struct stat contains a nanoseconds field]) + fi + ] +) diff --git a/local/recipes/dev/gnu-make/source/m4/alloca.m4 b/local/recipes/dev/gnu-make/source/m4/alloca.m4 new file mode 100644 index 0000000000..dc6f47e330 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/alloca.m4 @@ -0,0 +1,106 @@ +# 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, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_ALLOCA], +[ + AC_REQUIRE([AC_FUNC_ALLOCA]) + if test $ac_cv_func_alloca_works = no; then + gl_PREREQ_ALLOCA + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [ + AC_EGREP_CPP([Need own alloca], [ +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + ], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no]) + ]) + if test $gl_cv_rpl_alloca = yes; then + dnl OK, alloca can be implemented through a compiler built-in. + AC_DEFINE([HAVE_ALLOCA], [1], + [Define to 1 if you have 'alloca' after including , + a header that may be supplied by this distribution.]) + 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. + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + AC_SUBST([HAVE_ALLOCA_H]) +]) + +# Prerequisites of lib/alloca.c. +# STACK_DIRECTION is already handled by AC_FUNC_ALLOCA. +AC_DEFUN([gl_PREREQ_ALLOCA], [:]) + +m4_version_prereq([2.70], [], [ + +# 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 +# ----------------- +# Set up the LIBOBJ replacement of 'alloca'. Well, not exactly +# AC_LIBOBJ since we actually set the output variable 'ALLOCA'. +# Nevertheless, for Automake, AC_LIBSOURCES it. +m4_define([_AC_LIBOBJ_ALLOCA], +[# The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. +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([stack direction for C alloca], + [ac_cv_c_stack_direction], +[AC_RUN_IFELSE([AC_LANG_SOURCE( +[AC_INCLUDES_DEFAULT +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +}])], + [ac_cv_c_stack_direction=1], + [ac_cv_c_stack_direction=-1], + [ac_cv_c_stack_direction=0])]) +AH_VERBATIM([STACK_DIRECTION], +[/* 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. + 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 +AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction) +])# _AC_LIBOBJ_ALLOCA +]) diff --git a/local/recipes/dev/gnu-make/source/m4/asm-underscore.m4 b/local/recipes/dev/gnu-make/source/m4/asm-underscore.m4 new file mode 100644 index 0000000000..950aa8d221 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/asm-underscore.m4 @@ -0,0 +1,83 @@ +# 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. + +dnl From Bruno Haible. Based on as-underscore.m4 in GNU clisp. + +# gl_ASM_SYMBOL_PREFIX +# Tests for the prefix of C symbols at the assembly language level and the +# linker level. This prefix is either an underscore or empty. Defines the +# C macro USER_LABEL_PREFIX to this prefix, and sets ASM_SYMBOL_PREFIX to +# a stringified variant of this prefix. + +AC_DEFUN([gl_ASM_SYMBOL_PREFIX], +[ + AC_REQUIRE([AC_PROG_EGREP]) + dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because + dnl 1. It works only for GCC. + dnl 2. It is incorrectly defined on some platforms, in some GCC versions. + AC_REQUIRE([gl_C_ASM]) + AC_CACHE_CHECK( + [whether C symbols are prefixed with underscore at the linker level], + [gl_cv_prog_as_underscore], + [cat > conftest.c </dev/null 2>&1 + if LC_ALL=C $EGREP '(^|[[^a-zA-Z0-9_]])_foo([[^a-zA-Z0-9_]]|$)' conftest.$gl_asmext >/dev/null; then + gl_cv_prog_as_underscore=yes + else + gl_cv_prog_as_underscore=no + fi + rm -f conftest* + ]) + if test $gl_cv_prog_as_underscore = yes; then + USER_LABEL_PREFIX=_ + else + USER_LABEL_PREFIX= + fi + AC_DEFINE_UNQUOTED([USER_LABEL_PREFIX], [$USER_LABEL_PREFIX], + [Define to the prefix of C symbols at the assembler and linker level, + either an underscore or empty.]) + ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"' + AC_SUBST([ASM_SYMBOL_PREFIX]) +]) + +# gl_C_ASM +# Determines how to produce an assembly language file from C source code. +# Sets the variables: +# gl_asmext - the extension of assembly language output, +# gl_c_asm_opt - the C compiler option that produces assembly language output. + +AC_DEFUN([gl_C_ASM], +[ + AC_EGREP_CPP([MicrosoftCompiler], + [ +#ifdef _MSC_VER +MicrosoftCompiler +#endif + ], + [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/local/recipes/dev/gnu-make/source/m4/codeset.m4 b/local/recipes/dev/gnu-make/source/m4/codeset.m4 new file mode 100644 index 0000000000..d7de8d67e0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/codeset.m4 @@ -0,0 +1,23 @@ +# codeset.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2000-2002, 2006, 2008-2014 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. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[char* cs = nl_langinfo(CODESET); return !cs;]])], + [am_cv_langinfo_codeset=yes], + [am_cv_langinfo_codeset=no]) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE([HAVE_LANGINFO_CODESET], [1], + [Define if you have and nl_langinfo(CODESET).]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/dospaths.m4 b/local/recipes/dev/gnu-make/source/m4/dospaths.m4 new file mode 100644 index 0000000000..51deaf0f1f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/dospaths.m4 @@ -0,0 +1,33 @@ +# Test if the system uses DOS-style pathnames (drive specs and backslashes) +# By Paul Smith . Based on dos.m4 by Jim Meyering. +# +# Copyright (C) 1993-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 . + +AC_DEFUN([pds_AC_DOS_PATHS], [ + AC_CACHE_CHECK([whether system uses MSDOS-style paths], [ac_cv_dos_paths], [ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__ +neither MSDOS nor Windows nor OS2 +#endif +]])], + [ac_cv_dos_paths=yes], + [ac_cv_dos_paths=no])]) + + AS_IF([test x"$ac_cv_dos_paths" = xyes], + [ AC_DEFINE_UNQUOTED([HAVE_DOS_PATHS], 1, + [Define if the system uses DOS-style pathnames.])]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/eaccess.m4 b/local/recipes/dev/gnu-make/source/m4/eaccess.m4 new file mode 100644 index 0000000000..6ab3d50992 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/eaccess.m4 @@ -0,0 +1,12 @@ +# eaccess.m4 serial 2 +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([gl_FUNC_EACCESS], +[ + AC_CHECK_FUNC([eaccess], , + [AC_DEFINE([eaccess], [access], + [Define as 'access' if you don't have the eaccess() function.])]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/extensions.m4 b/local/recipes/dev/gnu-make/source/m4/extensions.m4 new file mode 100644 index 0000000000..0b3e4b5af7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/extensions.m4 @@ -0,0 +1,227 @@ +# serial 22 -*- Autoconf -*- +# Enable extensions on systems that normally disable them. + +# 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 +# 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. + +# If autoconf reports a warning +# warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS +# or warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS +# the fix is +# 1) to ensure that AC_USE_SYSTEM_EXTENSIONS is never directly invoked +# but always AC_REQUIREd, +# 2) to ensure that for each occurrence of +# AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) +# or +# AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) +# the corresponding gnulib module description has 'extensions' among +# 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. +# 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_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_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. +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 +#endif +/* Enable general extensions on macOS. */ +#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 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 compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* 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 +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE +#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( + [AC_LANG_PROGRAM([[ +# define __EXTENSIONS__ 1 + ]AC_INCLUDES_DEFAULT])], + [ac_cv_safe_to_define___extensions__=yes], + [ac_cv_safe_to_define___extensions__=no])]) + +dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to +dnl 500, regardless of whether compiling with -Ae or -D_HPUX_SOURCE=1. +dnl But defining _XOPEN_SOURCE may turn *off* extensions on platforms +dnl not covered by turn-on-extensions macros (notably Dragonfly, Free, +dnl and OpenBSD, which don't have any equivalent of _NETBSD_SOURCE) so +dnl it should only be defined when necessary. + AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined], + [ac_cv_should_define__xopen_source], + [ac_cv_should_define__xopen_source=no + AS_IF([test $ac_cv_header_wchar_h = yes], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #include + mbstate_t x;]])], + [], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #define _XOPEN_SOURCE 500 + #include + mbstate_t x;]])], + [ac_cv_should_define__xopen_source=yes])])])]) + + AC_DEFINE([_ALL_SOURCE]) + AC_DEFINE([_DARWIN_C_SOURCE]) + AC_DEFINE([_GNU_SOURCE]) + AC_DEFINE([_HPUX_ALT_XOPEN_SOCKET_API]) + AC_DEFINE([_NETBSD_SOURCE]) + AC_DEFINE([_OPENBSD_SOURCE]) + AC_DEFINE([_POSIX_PTHREAD_SEMANTICS]) + AC_DEFINE([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) + AC_DEFINE([__STDC_WANT_IEC_60559_BFP_EXT__]) + AC_DEFINE([__STDC_WANT_IEC_60559_DFP_EXT__]) + AC_DEFINE([__STDC_WANT_IEC_60559_FUNCS_EXT__]) + AC_DEFINE([__STDC_WANT_IEC_60559_TYPES_EXT__]) + AC_DEFINE([__STDC_WANT_LIB_EXT2__]) + AC_DEFINE([__STDC_WANT_MATH_SPEC_FUNCS__]) + AC_DEFINE([_TANDEM_SOURCE]) + 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 +# ------------------------ +# Enable extensions on systems that normally disable them, +# typically due to standards-conformance issues. +AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS], +[ + 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/local/recipes/dev/gnu-make/source/m4/extern-inline.m4 b/local/recipes/dev/gnu-make/source/m4/extern-inline.m4 new file mode 100644 index 0000000000..0edbe3c81c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/extern-inline.m4 @@ -0,0 +1,100 @@ +dnl 'extern inline' a la ISO C99. + +dnl Copyright 2012-2014 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_EXTERN_INLINE], +[ + AH_VERBATIM([extern_inline], +[/* Please see the Gnulib manual for how to use these macros. + + Suppress extern inline with HP-UX cc, as it appears to be broken; see + . + + Suppress extern inline with Sun C in standards-conformance mode, as it + mishandles inline functions that call each other. E.g., for 'inline void f + (void) { } inline void g (void) { f (); }', c99 incorrectly complains + 'reference to static identifier "f" in extern inline function'. + This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. + + Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) + on configurations that mistakenly use 'static inline' to implement + functions or macros in standard C headers like . For example, + if isdigit is mistakenly implemented via a static inline function, + a program containing an extern inline function that calls isdigit + may not work since the C standard prohibits extern inline functions + from calling static functions. This bug is known to occur on: + + OS X 10.8 and earlier; see: + http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html + + DragonFly; see + http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log + + FreeBSD; see: + http://lists.gnu.org/archive/html/bug-gnulib/2014-07/msg00104.html + + OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and + for clang but remains for g++; see . + Assume DragonFly and FreeBSD will be similar. */ +#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 __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, suppress bogus "no previous prototype for 'FOO'" + and "no previous declaration for 'FOO'" diagnostics, + when FOO is an inline function in the header; see + and + . */ +#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) +# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ +# define _GL_INLINE_HEADER_CONST_PRAGMA +# else +# define _GL_INLINE_HEADER_CONST_PRAGMA \ + _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") +# endif +# define _GL_INLINE_HEADER_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ + _GL_INLINE_HEADER_CONST_PRAGMA +# define _GL_INLINE_HEADER_END \ + _Pragma ("GCC diagnostic pop") +#else +# define _GL_INLINE_HEADER_BEGIN +# define _GL_INLINE_HEADER_END +#endif]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/fcntl-o.m4 b/local/recipes/dev/gnu-make/source/m4/fcntl-o.m4 new file mode 100644 index 0000000000..43c93124ed --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/fcntl-o.m4 @@ -0,0 +1,134 @@ +# fcntl-o.m4 serial 4 +dnl Copyright (C) 2006, 2009-2014 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. + +# Test whether the flags O_NOATIME and O_NOFOLLOW actually work. +# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise. +# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise. +AC_DEFUN([gl_FCNTL_O_FLAGS], +[ + dnl Persuade glibc to define O_NOATIME and O_NOFOLLOW. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + + AC_CHECK_HEADERS_ONCE([unistd.h]) + AC_CHECK_FUNCS_ONCE([symlink]) + AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include + #if HAVE_UNISTD_H + # include + #else /* on Windows with MSVC */ + # include + # include + # defined sleep(n) _sleep ((n) * 1000) + #endif + #include + #ifndef O_NOATIME + #define O_NOATIME 0 + #endif + #ifndef O_NOFOLLOW + #define O_NOFOLLOW 0 + #endif + static int const constants[] = + { + O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, + O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY + }; + ]], + [[ + int result = !constants; + #if HAVE_SYMLINK + { + static char const sym[] = "conftest.sym"; + if (symlink ("/dev/null", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + if (unlink (sym) != 0 || symlink (".", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_RDONLY | O_NOFOLLOW); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + unlink (sym); + } + #endif + { + static char const file[] = "confdefs.h"; + int fd = open (file, O_RDONLY | O_NOATIME); + if (fd < 0) + result |= 8; + else + { + struct stat st0; + if (fstat (fd, &st0) != 0) + result |= 16; + else + { + char c; + sleep (1); + if (read (fd, &c, 1) != 1) + result |= 24; + else + { + if (close (fd) != 0) + result |= 32; + else + { + struct stat st1; + if (stat (file, &st1) != 0) + result |= 40; + else + if (st0.st_atime != st1.st_atime) + result |= 64; + } + } + } + } + } + return result;]])], + [gl_cv_header_working_fcntl_h=yes], + [case $? in #( + 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( + 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( + 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( + *) gl_cv_header_working_fcntl_h='no';; + esac], + [gl_cv_header_working_fcntl_h=cross-compiling])]) + + 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/local/recipes/dev/gnu-make/source/m4/findprog-in.m4 b/local/recipes/dev/gnu-make/source/m4/findprog-in.m4 new file mode 100644 index 0000000000..5a295e23dd --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/findprog-in.m4 @@ -0,0 +1,11 @@ +# findprog-in.m4 serial 1 +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([gl_FINDPROG_IN], +[ + dnl Prerequisites of lib/findprog-in.c. + AC_REQUIRE([gl_FUNC_EACCESS]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/getloadavg.m4 b/local/recipes/dev/gnu-make/source/m4/getloadavg.m4 new file mode 100644 index 0000000000..2270648336 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/getloadavg.m4 @@ -0,0 +1,216 @@ +# Check for getloadavg. + +# 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 10 + +# Autoconf defines AC_FUNC_GETLOADAVG, but that is obsolescent. +# New applications should use gl_GETLOADAVG instead. + +# gl_GETLOADAVG +# ------------- +AC_DEFUN([gl_GETLOADAVG], +[AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + +# Persuade glibc to declare getloadavg(). +AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +AC_CHECK_FUNC([getloadavg], [], + [gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + AC_CHECK_LIB([elf], [elf_begin], [LIBS="-lelf $LIBS"]) + AC_CHECK_LIB([kvm], [kvm_open], [LIBS="-lkvm $LIBS"]) + # Check for the 4.4BSD definition of getloadavg. + AC_CHECK_LIB([util], [getloadavg], + [LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes]) + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + AC_CHECK_LIB([getloadavg], [getloadavg], + [LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes], + [LIBS=$gl_getloadavg_LIBS]) + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + AC_CHECK_LIB([kstat], [kstat_open]) + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + AC_CHECK_LIB([perfstat], [perfstat_cpu_total]) + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADER([sys/dg_sys_info.h], + [gl_func_getloadavg_done=yes + AC_DEFINE([DGUX], [1], [Define to 1 for DGUX with .]) + AC_CHECK_LIB([dgc], [dg_sys_info])]) + fi + fi]) + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + +AC_SUBST([GETLOADAVG_LIBS])dnl + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +AC_CHECK_HEADERS([sys/loadavg.h]) +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +AC_CHECK_DECL([getloadavg], [], [HAVE_DECL_GETLOADAVG=0], + [[#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include ]]) +])# gl_GETLOADAVG + + +# gl_PREREQ_GETLOADAVG +# -------------------- +# Set up the AC_LIBOBJ replacement of 'getloadavg'. +AC_DEFUN([gl_PREREQ_GETLOADAVG], +[ +# Figure out what our getloadavg.c needs. + +AC_CHECK_HEADERS_ONCE([sys/param.h unistd.h]) + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + AC_CHECK_FUNCS([pstat_getdynamic], [gl_func_getloadavg_done=yes]) +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + AC_DEFINE([SVR4], [1], [Define to 1 on System V Release 4.]) +fi + +if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADER([inq_stats/cpustats.h], + [gl_func_getloadavg_done=yes + AC_DEFINE([UMAX], [1], [Define to 1 for Encore UMAX.]) + AC_DEFINE([UMAX4_3], [1], + [Define to 1 for Encore UMAX 4.3 that has + instead of .])]) +fi + +if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADER([sys/cpustats.h], + [gl_func_getloadavg_done=yes; AC_DEFINE([UMAX])]) +fi + +if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADERS([mach/mach.h]) +fi + +AC_CHECK_HEADERS([nlist.h], +[AC_CHECK_MEMBERS([struct nlist.n_un.n_name], + [], [], + [#include ]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif]])], + [AC_DEFINE([N_NAME_POINTER], [1], + [Define to 1 if the nlist n_name member is a pointer])]) +])dnl +])# gl_PREREQ_GETLOADAVG + +# ---- GNU make +# These macros are imported from stdlib which we don't want to include +# Only the getloadavg content is imported. + +AC_DEFUN_ONCE([gl_STDLIB_H], +[ + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + + dnl Check for declarations of anything we want to poison if the + dnl corresponding gnulib module is not in use, and which is not + dnl guaranteed by C89. + gl_WARN_ON_USE_PREPARE([[#include +#if HAVE_SYS_LOADAVG_H +/* OpenIndiana has a bug: must be included before + . */ +# include +# include +#endif +#if HAVE_RANDOM_H +# include +#endif + ]], [getloadavg]) +]) + +# gl_STDLIB_MODULE_INDICATOR([modulename]) +# sets the shell variable that indicates the presence of the given module +# to a C preprocessor expression that will evaluate to 1. +# This macro invocation must not occur in macros that are AC_REQUIREd. +AC_DEFUN([gl_STDLIB_MODULE_INDICATOR], +[ + dnl Ensure to expand the default settings once only. + gl_STDLIB_H_REQUIRE_DEFAULTS + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) + dnl Define it also as a C macro, for the benefit of the unit tests. + gl_MODULE_INDICATOR_FOR_TESTS([$1]) +]) + +# Initializes the default values for AC_SUBSTed shell variables. +# This macro must not be AC_REQUIREd. It must only be invoked, and only +# outside of macros or in macros that are not AC_REQUIREd. +AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS], +[ + m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS], [ + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG]) + ]) + m4_require(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS]) + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) +]) + +AC_DEFUN([gl_STDLIB_H_DEFAULTS], +[ + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/gettext.m4 b/local/recipes/dev/gnu-make/source/m4/gettext.m4 new file mode 100644 index 0000000000..be247bf7b8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/gettext.m4 @@ -0,0 +1,401 @@ +# gettext.m4 serial 66 (gettext-0.18.2) +dnl Copyright (C) 1995-2014 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 +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2006, 2008-2010. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value '$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], + [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], + ifelse([$1], [external], + ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), + [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + gt_NEEDS_INIT + AM_GNU_GETTEXT_NEED([$2]) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl Add a version number to the cache macros. + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH([included-gettext], + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + ]])], + [eval "$gt_func_gnugettext_libc=yes"], + [eval "$gt_func_gnugettext_libc=no"])]) + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + [$gt_func_gnugettext_libintl], + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ]])], + [eval "$gt_func_gnugettext_libintl=yes"], + [eval "$gt_func_gnugettext_libintl=no"]) + dnl Now see whether libintl exists and depends on libiconv. + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ]])], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE([ENABLE_NLS], [1], + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + 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 + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE([HAVE_GETTEXT], [1], + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE([HAVE_DCGETTEXT], [1], + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST([BUILD_INCLUDED_LIBINTL]) + AC_SUBST([USE_INCLUDED_LIBINTL]) + AC_SUBST([CATOBJEXT]) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST([DATADIRNAME]) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST([INSTOBJEXT]) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST([GENCAT]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST([INTLOBJS]) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST([INTLLIBS]) + + dnl Make all documented variables known to autoconf. + AC_SUBST([LIBINTL]) + AC_SUBST([LTLIBINTL]) + AC_SUBST([POSUB]) +]) + + +dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. +m4_define([gt_NEEDS_INIT], +[ + m4_divert_text([DEFAULTS], [gt_needs=]) + m4_define([gt_NEEDS_INIT], []) +]) + + +dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) +AC_DEFUN([AM_GNU_GETTEXT_NEED], +[ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) diff --git a/local/recipes/dev/gnu-make/source/m4/glibc2.m4 b/local/recipes/dev/gnu-make/source/m4/glibc2.m4 new file mode 100644 index 0000000000..71dd8a1234 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/glibc2.m4 @@ -0,0 +1,31 @@ +# glibc2.m4 serial 3 +dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2014 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, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.0 or newer. +# From Bruno Haible. + +AC_DEFUN([gt_GLIBC2], + [ + AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer], + [ac_cv_gnu_library_2], + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) && !defined __UCLIBC__ + Lucky GNU user + #endif +#endif + ], + [ac_cv_gnu_library_2=yes], + [ac_cv_gnu_library_2=no]) + ] + ) + AC_SUBST([GLIBC2]) + GLIBC2="$ac_cv_gnu_library_2" + ] +) diff --git a/local/recipes/dev/gnu-make/source/m4/glibc21.m4 b/local/recipes/dev/gnu-make/source/m4/glibc21.m4 new file mode 100644 index 0000000000..ab58b71213 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/glibc21.m4 @@ -0,0 +1,34 @@ +# glibc21.m4 serial 5 +dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2014 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, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.1 or newer, or uClibc. +# From Bruno Haible. + +AC_DEFUN([gl_GLIBC21], + [ + AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc], + [ac_cv_gnu_library_2_1], + [AC_EGREP_CPP([Lucky], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif +#ifdef __UCLIBC__ + Lucky user +#endif + ], + [ac_cv_gnu_library_2_1=yes], + [ac_cv_gnu_library_2_1=no]) + ] + ) + AC_SUBST([GLIBC21]) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) diff --git a/local/recipes/dev/gnu-make/source/m4/gnulib-cache.m4 b/local/recipes/dev/gnu-make/source/m4/gnulib-cache.m4 new file mode 100644 index 0000000000..a7612384c8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/gnulib-cache.m4 @@ -0,0 +1,71 @@ +# 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 +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this file. If not, see . +# +# As a special exception to the GNU General Public License, +# this file may be distributed as part of a program that +# contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# +# This file represents the specification of how gnulib-tool is used. +# It acts as a cache: It is written and read by gnulib-tool. +# In projects that use version control, this file is meant to be put under +# version control, like the configure.ac and various Makefile.am files. + + +# Specification in the form of a command-line invocation: +# gnulib-tool --import --local-dir=gl \ +# --lib=libgnu \ +# --source-base=lib \ +# --m4-base=m4 \ +# --doc-base=doc \ +# --tests-base=tests \ +# --aux-dir=build-aux \ +# --no-conditional-dependencies \ +# --no-libtool \ +# --macro-prefix=gl \ +# alloca \ +# fdl \ +# findprog-in \ +# getloadavg \ +# host-cpu-c-abi \ +# largefile \ +# make-glob \ +# make-macros + +# Specification in the form of a few gnulib-tool.m4 macro invocations: +gl_LOCAL_DIR([gl]) +gl_MODULES([ + alloca + fdl + findprog-in + getloadavg + host-cpu-c-abi + largefile + make-glob + make-macros +]) +gl_AVOID([]) +gl_SOURCE_BASE([lib]) +gl_M4_BASE([m4]) +gl_PO_BASE([]) +gl_DOC_BASE([doc]) +gl_TESTS_BASE([tests]) +gl_LIB([libgnu]) +gl_MAKEFILE_NAME([]) +gl_MACRO_PREFIX([gl]) +gl_PO_DOMAIN([]) +gl_WITNESS_C_MACRO([]) diff --git a/local/recipes/dev/gnu-make/source/m4/gnulib-common.m4 b/local/recipes/dev/gnu-make/source/m4/gnulib-common.m4 new file mode 100644 index 0000000000..8a5daa230e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/gnulib-common.m4 @@ -0,0 +1,1076 @@ +# 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. + +AC_PREREQ([2.62]) + +# gl_COMMON +# is expanded unconditionally through gnulib-tool magic. +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 +# 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) \ + || (!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 _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) +# else +# define _Noreturn +# endif +#endif +]) + AH_VERBATIM([isoc99_inline], +[/* 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__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#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([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_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_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_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via 'free'; it can be used only after declaring 'free'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib's or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with '-fwhole-program'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following 'case' or + 'default' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a 'switch' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with '__'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC's syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type '[[un]signed] char'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don't use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + +]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], +[/* The _GL_ASYNC_SAFE marker should be attached to functions that are + signal handlers (for signals other than SIGABRT, SIGPIPE) or can be + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked 'volatile'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable 'signal_occurred' is not declared 'volatile'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE +]) + AH_VERBATIM([micro_optimizations], +[/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where + n1 and n2 are expressions without side effects, that evaluate to real + numbers (excluding NaN). + It returns + 1 if n1 > n2 + 0 if n1 == n2 + -1 if n1 < n2 + The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional + jump with nearly all GCC versions up to GCC 10. + This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many + GCC versions up to GCC 9. + The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 + avoids conditional jumps in all GCC versions >= 3.4. */ +#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) +]) + dnl Hint which direction to take regarding cross-compilation guesses: + dnl When a user installs a program on a platform they are not intimately + dnl familiar with, --enable-cross-guesses=conservative is the appropriate + dnl choice. It implements the "If we don't know, assume the worst" principle. + dnl However, when an operating system developer (on a platform which is not + dnl yet known to gnulib) builds packages for their platform, they want to + dnl expose, not hide, possible platform bugs; in this case, + dnl --enable-cross-guesses=risky is the appropriate choice. + dnl Sets the variables + dnl gl_cross_guess_normal (to be used when 'yes' is good and 'no' is bad), + dnl gl_cross_guess_inverted (to be used when 'no' is good and 'yes' is bad). + AC_ARG_ENABLE([cross-guesses], + [AS_HELP_STRING([--enable-cross-guesses={conservative|risky}], + [specify policy for cross-compilation guesses])], + [if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + AC_MSG_WARN([invalid argument supplied to --enable-cross-guesses]) + enableval=conservative + fi + gl_cross_guesses="$enableval"], + [gl_cross_guesses=conservative]) + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + dnl Preparation for running test programs: + dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not + dnl to /dev/tty, so they can be redirected to log files. Such diagnostics + dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N. + LIBC_FATAL_STDERR_=1 + 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 +# or not. +m4_define([gl_MODULE_INDICATOR_CONDITION], [1]) + +# gl_MODULE_INDICATOR_SET_VARIABLE([modulename]) +# sets the shell variable that indicates the presence of the given module to +# a C preprocessor expression that will evaluate to 1. +AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE], +[ + gl_MODULE_INDICATOR_SET_VARIABLE_AUX( + [GL_MODULE_INDICATOR_PREFIX[]_GNULIB_[]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], + [gl_MODULE_INDICATOR_CONDITION]) +]) + +# gl_MODULE_INDICATOR_SET_VARIABLE_AUX([variable]) +# modifies the shell variable to include the gl_MODULE_INDICATOR_CONDITION. +# The shell variable's value is a C preprocessor expression that evaluates +# to 0 or 1. +AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX], +[ + m4_if(m4_defn([gl_MODULE_INDICATOR_CONDITION]), [1], + [ + dnl Simplify the expression VALUE || 1 to 1. + $1=1 + ], + [gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([$1], + [gl_MODULE_INDICATOR_CONDITION])]) +]) + +# gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([variable], [condition]) +# modifies the shell variable to include the given condition. The shell +# variable's value is a C preprocessor expression that evaluates to 0 or 1. +AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR], +[ + dnl Simplify the expression 1 || CONDITION to 1. + if test "$[]$1" != 1; then + dnl Simplify the expression 0 || CONDITION to CONDITION. + if test "$[]$1" = 0; then + $1=$2 + else + $1="($[]$1 || $2)" + fi + fi +]) + +# gl_MODULE_INDICATOR([modulename]) +# defines a C macro indicating the presence of the given module +# in a location where it can be used. +# | Value | Value | +# | in lib/ | in tests/ | +# --------------------------------------------+---------+-----------+ +# Module present among main modules: | 1 | 1 | +# --------------------------------------------+---------+-----------+ +# Module present among tests-related modules: | 0 | 1 | +# --------------------------------------------+---------+-----------+ +# Module not present at all: | 0 | 0 | +# --------------------------------------------+---------+-----------+ +AC_DEFUN([gl_MODULE_INDICATOR], +[ + AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), + [gl_MODULE_INDICATOR_CONDITION], + [Define to a C preprocessor expression that evaluates to 1 or 0, + depending whether the gnulib module $1 shall be considered present.]) +]) + +# gl_MODULE_INDICATOR_FOR_TESTS([modulename]) +# defines a C macro indicating the presence of the given module +# in lib or tests. This is useful to determine whether the module +# should be tested. +# | Value | Value | +# | in lib/ | in tests/ | +# --------------------------------------------+---------+-----------+ +# Module present among main modules: | 1 | 1 | +# --------------------------------------------+---------+-----------+ +# Module present among tests-related modules: | 1 | 1 | +# --------------------------------------------+---------+-----------+ +# Module not present at all: | 0 | 0 | +# --------------------------------------------+---------+-----------+ +AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], +[ + AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1], + [Define to 1 when the gnulib module $1 should be tested.]) +]) + +# gl_ASSERT_NO_GNULIB_POSIXCHECK +# asserts that there will never be a need to #define GNULIB_POSIXCHECK. +# and thereby enables an optimization of configure and config.h. +# Used by Emacs. +AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK], +[ + dnl Override gl_WARN_ON_USE_PREPARE. + dnl But hide this definition from 'aclocal'. + AC_DEFUN([gl_W][ARN_ON_USE_PREPARE], []) +]) + +# gl_ASSERT_NO_GNULIB_TESTS +# asserts that there will be no gnulib tests in the scope of the configure.ac +# and thereby enables an optimization of config.h. +# Used by Emacs. +AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS], +[ + dnl Override gl_MODULE_INDICATOR_FOR_TESTS. + AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], []) +]) + +# Test whether exists. +# Set HAVE_FEATURES_H. +AC_DEFUN([gl_FEATURES_H], +[ + AC_CHECK_HEADERS_ONCE([features.h]) + if test $ac_cv_header_features_h = yes; then + HAVE_FEATURES_H=1 + else + HAVE_FEATURES_H=0 + fi + AC_SUBST([HAVE_FEATURES_H]) +]) + +# gl_PROG_CC_C99 +# Modifies the value of the shell variable CC in an attempt to make $CC +# understand ISO C99 source code. +AC_DEFUN([gl_PROG_CC_C99], +[ + 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 +# Determines the values for AR, ARFLAGS, RANLIB that fit with the compiler. +# The user can set the variables AR, ARFLAGS, RANLIB if he wants to override +# the values. +AC_DEFUN([gl_PROG_AR_RANLIB], +[ + dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler + dnl as "cc", and GCC as "gcc". They have different object file formats and + dnl library formats. In particular, the GNU binutils programs ar and ranlib + dnl produce libraries that work only with gcc, not with cc. + AC_REQUIRE([AC_PROG_CC]) + dnl The '][' hides this use from 'aclocal'. + AC_BEFORE([$0], [A][M_PROG_AR]) + AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler], + [ + AC_EGREP_CPP([Amsterdam], + [ +#ifdef __ACK__ +Amsterdam +#endif + ], + [gl_cv_c_amsterdam_compiler=yes], + [gl_cv_c_amsterdam_compiler=no]) + ]) + + dnl Don't compete with AM_PROG_AR's decision about AR/ARFLAGS if we are not + dnl building with __ACK__. + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + dnl AM_PROG_AR was added in automake v1.11.2. AM_PROG_AR does not AC_SUBST + dnl ARFLAGS variable (it is filed into Makefile.in directly by automake + dnl script on-demand, if not specified by ./configure of course). + dnl Don't AC_REQUIRE the AM_PROG_AR otherwise the code for __ACK__ above + dnl will be ignored. Also, pay attention to call AM_PROG_AR in else block + dnl because AM_PROG_AR is written so it could re-set AR variable even for + dnl __ACK__. It may seem like its easier to avoid calling the macro here, + dnl but we need to AC_SUBST both AR/ARFLAGS (thus those must have some good + dnl default value and automake should usually know them). + dnl + dnl The '][' hides this use from 'aclocal'. + m4_ifdef([A][M_PROG_AR], [A][M_PROG_AR], [:]) + fi + + dnl In case the code above has not helped with setting AR/ARFLAGS, use + dnl Automake-documented default values for AR and ARFLAGS, but prefer + dnl ${host}-ar over ar (useful for cross-compiling). + AC_CHECK_TOOL([AR], [ar], [ar]) + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + AC_SUBST([AR]) + AC_SUBST([ARFLAGS]) + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + dnl Use the ranlib program if it is available. + AC_PROG_RANLIB + fi + fi + AC_SUBST([RANLIB]) +]) + +# AC_C_RESTRICT +# 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 + # 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; + 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 s[1]; + int *$ac_kw t = s; + t[0] = 0; + return foo (t) + bar (t); + ]])], + [ac_cv_c_restrict=$ac_kw]) + test "$ac_cv_c_restrict" != no && break + done + ]) + 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 only 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]) + case $ac_cv_c_restrict in + restrict) ;; + no) AC_DEFINE([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. +# Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some +# macros invoke AC_C_BIGENDIAN with arguments. +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. +# This macro should be used instead of AC_CACHE_VAL when it is not surrounded +# by an AC_MSG_CHECKING/AC_MSG_RESULT pair. +AC_DEFUN([gl_CACHE_VAL_SILENT], +[ + 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]) +]) + +# 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/local/recipes/dev/gnu-make/source/m4/gnulib-comp.m4 b/local/recipes/dev/gnu-make/source/m4/gnulib-comp.m4 new file mode 100644 index 0000000000..27c859dfdc --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/gnulib-comp.m4 @@ -0,0 +1,329 @@ +# DO NOT EDIT! GENERATED AUTOMATICALLY! +# 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 +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this file. If not, see . +# +# As a special exception to the GNU General Public License, +# this file may be distributed as part of a program that +# contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# +# This file represents the compiled summary of the specification in +# gnulib-cache.m4. It lists the computed macro invocations that need +# to be invoked from configure.ac. +# In projects that use version control, this file can be treated like +# other built files. + + +# This macro should be invoked from ./configure.ac, in the section +# "Checks for programs", right after AC_PROG_CC, and certainly before +# any checks for libraries, header files, types and library functions. +AC_DEFUN([gl_EARLY], +[ + m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace + m4_pattern_allow([^gl_ES$])dnl a valid locale name + m4_pattern_allow([^gl_LIBOBJS$])dnl a variable + m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable + + # Pre-early section. + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_REQUIRE([gl_PROG_AR_RANLIB]) + + # Code from module alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + AC_REQUIRE([AC_SYS_LARGEFILE]) + AC_REQUIRE([gl_YEAR2038_EARLY]) + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: +]) + +# 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= + gl_ltlibdeps= + gl_m4_base='m4' + m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ])) + m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS])) + 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_source_base_prefix= + gl_FUNC_ALLOCA + gl_CONDITIONAL_HEADER([alloca.h]) + AC_PROG_MKDIR_P + gl_FINDPROG_IN + gl_STDLIB_H + gl_STDLIB_H_REQUIRE_DEFAULTS + AC_REQUIRE([AC_CANONICAL_HOST]) + gl_GETLOADAVG + gl_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) + AM_COND_IF([GL_COND_OBJ_GETLOADAVG], [ + gl_PREREQ_GETLOADAVG + ]) + gl_STDLIB_MODULE_INDICATOR([getloadavg]) + AC_REQUIRE([gl_HOST_CPU_C_ABI]) + AC_REQUIRE([gl_LARGEFILE]) + # Check the system to see if it provides GNU glob. If not, use our + # local version. + AC_CACHE_CHECK([if system libc has GNU glob], [make_cv_sys_gnu_glob], + [ AC_EGREP_CPP([gnu glob],[ + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif], + [make_cv_sys_gnu_glob=yes], + [make_cv_sys_gnu_glob=no])]) + # Tell automake about this, so it can build the right .c files. + AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + AC_SUBST([USE_SYSTEM_GLOB]) + # Check for DOS-style pathnames. + pds_AC_DOS_PATHS + gl_STDBOOL_H + gl_CONDITIONAL_HEADER([stdbool.h]) + AC_PROG_MKDIR_P + # End of code from modules + m4_ifval(gl_LIBSOURCES_LIST, [ + m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || + for gl_file in ]gl_LIBSOURCES_LIST[ ; do + if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then + echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2 + exit 1 + fi + done])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([gl_LIBSOURCES_DIR]) + m4_popdef([gl_LIBSOURCES_LIST]) + m4_popdef([AC_LIBSOURCES]) + m4_popdef([AC_REPLACE_FUNCS]) + m4_popdef([AC_LIBOBJ]) + 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= + m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ])) + m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS])) + 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 + AC_SUBST([gltests_WITNESS]) + gl_module_indicator_condition=$gltests_WITNESS + m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition]) + m4_popdef([gl_MODULE_INDICATOR_CONDITION]) + m4_ifval(gltests_LIBSOURCES_LIST, [ + m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ || + for gl_file in ]gltests_LIBSOURCES_LIST[ ; do + if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then + echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2 + exit 1 + fi + done])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]) + m4_popdef([AC_REPLACE_FUNCS]) + m4_popdef([AC_LIBOBJ]) + 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" + AC_SUBST([LIBGNU_LTLIBDEPS]) +]) + +# Like AC_LIBOBJ, except that the module name goes +# into gl_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([gl_LIBOBJ], [ + AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl + gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext" +]) + +# Like AC_REPLACE_FUNCS, except that the module name goes +# into gl_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([gl_REPLACE_FUNCS], [ + m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl + AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)]) +]) + +# Like AC_LIBSOURCES, except the directory where the source file is +# expected is derived from the gnulib-tool parameterization, +# and alloca is special cased (for the alloca-opt module). +# We could also entirely rely on EXTRA_lib..._SOURCES. +AC_DEFUN([gl_LIBSOURCES], [ + m4_foreach([_gl_NAME], [$1], [ + m4_if(_gl_NAME, [alloca.c], [], [ + m4_define([gl_LIBSOURCES_DIR], [lib]) + m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ]) + ]) + ]) +]) + +# Like AC_LIBOBJ, except that the module name goes +# into gltests_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([gltests_LIBOBJ], [ + AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl + gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext" +]) + +# Like AC_REPLACE_FUNCS, except that the module name goes +# into gltests_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([gltests_REPLACE_FUNCS], [ + m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl + AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)]) +]) + +# Like AC_LIBSOURCES, except the directory where the source file is +# expected is derived from the gnulib-tool parameterization, +# and alloca is special cased (for the alloca-opt module). +# We could also entirely rely on EXTRA_lib..._SOURCES. +AC_DEFUN([gltests_LIBSOURCES], [ + m4_foreach([_gl_NAME], [$1], [ + m4_if(_gl_NAME, [alloca.c], [], [ + m4_define([gltests_LIBSOURCES_DIR], [tests]) + m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ]) + ]) + ]) +]) + +# This macro records the list of files which have been installed by +# gnulib-tool and may be removed by future gnulib-tool invocations. +AC_DEFUN([gl_FILE_LIST], [ + doc/fdl.texi + lib/alloca.c + lib/alloca.in.h + lib/concat-filename.c + lib/concat-filename.h + lib/filename.h + lib/findprog-in.c + lib/findprog.h + lib/fnmatch.c + lib/fnmatch.in.h + lib/getloadavg.c + lib/glob.c + lib/glob.in.h + lib/intprops.h + lib/stdbool.in.h + lib/warn-on-use.h + m4/00gnulib.m4 + m4/acinclude.m4 + m4/alloca.m4 + m4/asm-underscore.m4 + m4/dospaths.m4 + m4/eaccess.m4 + m4/extensions.m4 + m4/findprog-in.m4 + m4/getloadavg.m4 + m4/gnulib-common.m4 + m4/host-cpu-c-abi.m4 + m4/largefile.m4 + m4/stdbool.m4 + m4/warn-on-use.m4 + m4/year2038.m4 + m4/zzgnulib.m4 +]) diff --git a/local/recipes/dev/gnu-make/source/m4/host-cpu-c-abi.m4 b/local/recipes/dev/gnu-make/source/m4/host-cpu-c-abi.m4 new file mode 100644 index 0000000000..b9223241b4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/host-cpu-c-abi.m4 @@ -0,0 +1,678 @@ +# 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. + +dnl From Bruno Haible and Sam Steingold. + +dnl Sets the HOST_CPU variable to the canonical name of the CPU. +dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its +dnl C language ABI (application binary interface). +dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in +dnl config.h. +dnl +dnl This canonical name can be used to select a particular assembly language +dnl source file that will interoperate with C code on the given host. +dnl +dnl For example: +dnl * 'i386' and 'sparc' are different canonical names, because code for i386 +dnl will not run on SPARC CPUs and vice versa. They have different +dnl instruction sets. +dnl * 'sparc' and 'sparc64' are different canonical names, because code for +dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code +dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit +dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit +dnl mode, but not both. +dnl * 'mips' and 'mipsn32' are different canonical names, because they use +dnl different argument passing and return conventions for C functions, and +dnl although the instruction set of 'mips' is a large subset of the +dnl instruction set of 'mipsn32'. +dnl * 'mipsn32' and 'mips64' are different canonical names, because they use +dnl different sizes for the C types like 'int' and 'void *', and although +dnl the instruction sets of 'mipsn32' and 'mips64' are the same. +dnl * The same canonical name is used for different endiannesses. You can +dnl determine the endianness through preprocessor symbols: +dnl - 'arm': test __ARMEL__. +dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL. +dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN. +dnl * The same name 'i386' is used for CPUs of type i386, i486, i586 +dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because +dnl - Instructions that do not exist on all of these CPUs (cmpxchg, +dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your +dnl assembly language source files use such instructions, you will +dnl need to make the distinction. +dnl - Speed of execution of the common instruction set is reasonable across +dnl the entire family of CPUs. If you have assembly language source files +dnl that are optimized for particular CPU types (like GNU gmp has), you +dnl will need to make the distinction. +dnl See . +AC_DEFUN([gl_HOST_CPU_C_ABI], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_C_ASM]) + AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi], + [case "$host_cpu" in + +changequote(,)dnl + i[34567]86 ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=x86_64-x32], + [gl_cv_host_cpu_c_abi=x86_64])], + [gl_cv_host_cpu_c_abi=i386]) + ;; + +changequote(,)dnl + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __aarch64__ + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=arm64-ilp32], + [gl_cv_host_cpu_c_abi=arm64])], + [# Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ]) + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __LP64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=hppa64], + [gl_cv_host_cpu_c_abi=hppa]) + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=ia64-ilp32], + [gl_cv_host_cpu_c_abi=ia64]) + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mips64], + [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mipsn32], + [gl_cv_host_cpu_c_abi=mips])]) + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + ]])], + [# On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=powerpc64-elfv2], + [gl_cv_host_cpu_c_abi=powerpc64]) + ], + [gl_cv_host_cpu_c_abi=powerpc]) + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + ]])], + [cpu=riscv64], + [cpu=riscv32]) + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ + int ok; + #else + error fail + #endif + ]])], + [main_abi=lp64], + [main_abi=ilp32]) + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + ]])], + [float_abi=d], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + ]])], + [float_abi=f], + [float_abi='']) + ]) + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=s390x], + [gl_cv_host_cpu_c_abi=s390]) + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=sparc64], + [gl_cv_host_cpu_c_abi=sparc]) + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ]) + + dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same. + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + AC_SUBST([HOST_CPU]) + AC_SUBST([HOST_CPU_C_ABI]) + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h < +#include + ]], + [[iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);]])], + [am_cv_func_iconv=yes]) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);]])], + [am_cv_lib_iconv=yes] + [am_cv_func_iconv=yes]) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ + dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, + dnl Solaris 10. + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + ]], + [[int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + result |= 16; + return result; +]])], + [am_cv_func_iconv_works=yes], , + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ]) + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + AC_DEFINE([HAVE_ICONV], [1], + [Define if you have the iconv() function and it works.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST([LIBICONV]) + AC_SUBST([LTLIBICONV]) +]) + +dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to +dnl avoid warnings like +dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". +dnl This is tricky because of the way 'aclocal' is implemented: +dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. +dnl Otherwise aclocal's initial scan pass would miss the macro definition. +dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. +dnl Otherwise aclocal would emit many "Use of uninitialized value $1" +dnl warnings. +m4_define([gl_iconv_AC_DEFUN], + m4_version_prereq([2.64], + [[AC_DEFUN_ONCE( + [$1], [$2])]], + [m4_ifdef([gl_00GNULIB], + [[AC_DEFUN_ONCE( + [$1], [$2])]], + [[AC_DEFUN( + [$1], [$2])]])])) +gl_iconv_AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL([am_cv_proto_iconv], [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + ]], + [[]])], + [am_cv_proto_iconv_arg1=""], + [am_cv_proto_iconv_arg1="const"]) + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([ + $am_cv_proto_iconv]) + AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], + [Define as const if the declaration of iconv() needs const.]) + dnl Also substitute ICONV_CONST in the gnulib generated . + m4_ifdef([gl_ICONV_H_DEFAULTS], + [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + if test -n "$am_cv_proto_iconv_arg1"; then + ICONV_CONST="const" + fi + ]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/intdiv0.m4 b/local/recipes/dev/gnu-make/source/m4/intdiv0.m4 new file mode 100644 index 0000000000..afa9acb82c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/intdiv0.m4 @@ -0,0 +1,87 @@ +# intdiv0.m4 serial 6 (gettext-0.18.2) +dnl Copyright (C) 2002, 2007-2008, 2010-2014 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. + +AC_DEFUN([gt_INTDIV0], +[ + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + + AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], + gt_cv_int_divbyzero_sigfpe, + [ + gt_cv_int_divbyzero_sigfpe= +changequote(,)dnl + case "$host_os" in + macos* | darwin[6-9]* | darwin[1-9][0-9]*) + # On Mac OS X 10.2 or newer, just assume the same as when cross- + # compiling. If we were to perform the real test, 1 Crash Report + # dialog window would pop up. + case "$host_cpu" in + i[34567]86 | x86_64) + gt_cv_int_divbyzero_sigfpe="guessing yes" ;; + esac + ;; + esac +changequote([,])dnl + if test -z "$gt_cv_int_divbyzero_sigfpe"; then + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#include + +static void +sigfpe_handler (int sig) +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (2); +} +]])], + [gt_cv_int_divbyzero_sigfpe=yes], + [gt_cv_int_divbyzero_sigfpe=no], + [ + # Guess based on the CPU. +changequote(,)dnl + case "$host_cpu" in + alpha* | i[34567]86 | x86_64 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac +changequote([,])dnl + ]) + fi + ]) + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value], + [Define if integer division by zero raises signal SIGFPE.]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/intl.m4 b/local/recipes/dev/gnu-make/source/m4/intl.m4 new file mode 100644 index 0000000000..0c29ad0df8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/intl.m4 @@ -0,0 +1,298 @@ +# intl.m4 serial 28 (gettext-0.19) +dnl Copyright (C) 1995-2014 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 +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2009. + +AC_PREREQ([2.60]) + +dnl Checks for all prerequisites of the intl subdirectory, +dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, +dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. +AC_DEFUN([AM_INTL_SUBDIR], +[ + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AC_PROG_MKDIR_P])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([gt_GLIBC2])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([gl_VISIBILITY])dnl + AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl + AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl + AC_REQUIRE([gt_TYPE_WCHAR_T])dnl + AC_REQUIRE([gt_TYPE_WINT_T])dnl + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gt_TYPE_INTMAX_T]) + AC_REQUIRE([gt_PRINTF_POSIX]) + AC_REQUIRE([gl_GLIBC21])dnl + AC_REQUIRE([gl_XSIZE])dnl + AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl + AC_REQUIRE([gt_INTL_MACOSX])dnl + AC_REQUIRE([gl_EXTERN_INLINE])dnl + AC_REQUIRE([gt_GL_ATTRIBUTE])dnl + + dnl Support for automake's --enable-silent-rules. + case "$enable_silent_rules" in + yes) INTL_DEFAULT_VERBOSITY=0;; + no) INTL_DEFAULT_VERBOSITY=1;; + *) INTL_DEFAULT_VERBOSITY=1;; + esac + AC_SUBST([INTL_DEFAULT_VERBOSITY]) + + AC_CHECK_TYPE([ptrdiff_t], , + [AC_DEFINE([ptrdiff_t], [long], + [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) + ]) + AC_CHECK_HEADERS([features.h stddef.h stdlib.h string.h]) + AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \ + snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) + + dnl Use the _snprintf function only if it is declared (because on NetBSD it + dnl is defined as a weak alias of snprintf; we prefer to use the latter). + AC_CHECK_DECLS([_snprintf, _snwprintf], , , [#include ]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + AC_CHECK_DECLS([getc_unlocked], , , [#include ]) + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + AC_SUBST([HAVE_POSIX_PRINTF]) + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + AC_SUBST([HAVE_ASPRINTF]) + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + AC_SUBST([HAVE_SNPRINTF]) + if test "$ac_cv_func_newlocale" = yes; then + HAVE_NEWLOCALE=1 + else + HAVE_NEWLOCALE=0 + fi + AC_SUBST([HAVE_NEWLOCALE]) + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + AC_SUBST([HAVE_WPRINTF]) + + AM_LANGINFO_CODESET + gt_LC_MESSAGES + + dnl Compilation on mingw and Cygwin needs special Makefile rules, because + dnl 1. when we install a shared library, we must arrange to export + dnl auxiliary pointer variables for every exported variable, + dnl 2. when we install a shared library and a static library simultaneously, + dnl the include file specifies __declspec(dllimport) and therefore we + dnl must arrange to define the auxiliary pointer variables for the + dnl exported variables _also_ in the static library. + if test "$enable_shared" = yes; then + case "$host_os" in + mingw* | cygwin*) is_woe32dll=yes ;; + *) is_woe32dll=no ;; + esac + else + is_woe32dll=no + fi + WOE32DLL=$is_woe32dll + AC_SUBST([WOE32DLL]) + + dnl On mingw and Cygwin, we can activate special Makefile rules which add + dnl version information to the shared libraries and executables. + case "$host_os" in + mingw* | cygwin*) is_woe32=yes ;; + *) is_woe32=no ;; + esac + WOE32=$is_woe32 + AC_SUBST([WOE32]) + if test $WOE32 = yes; then + dnl Check for a program that compiles Windows resource files. + AC_CHECK_TOOL([WINDRES], [windres]) + fi + + dnl Determine whether when creating a library, "-lc" should be passed to + dnl libtool or not. On many platforms, it is required for the libtool option + dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool + dnl in the *.la files - makes it impossible to create multithreaded programs, + dnl because libtool also reorders the -lc to come before the -pthread, and + dnl this disables pthread_create() . + case "$host_os" in + hpux*) LTLIBC="" ;; + *) LTLIBC="-lc" ;; + esac + AC_SUBST([LTLIBC]) + + dnl Rename some macros and functions used for locking. + AH_BOTTOM([ +#define __libc_lock_t gl_lock_t +#define __libc_lock_define gl_lock_define +#define __libc_lock_define_initialized gl_lock_define_initialized +#define __libc_lock_init gl_lock_init +#define __libc_lock_lock gl_lock_lock +#define __libc_lock_unlock gl_lock_unlock +#define __libc_lock_recursive_t gl_recursive_lock_t +#define __libc_lock_define_recursive gl_recursive_lock_define +#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized +#define __libc_lock_init_recursive gl_recursive_lock_init +#define __libc_lock_lock_recursive gl_recursive_lock_lock +#define __libc_lock_unlock_recursive gl_recursive_lock_unlock +#define glthread_in_use libintl_thread_in_use +#define glthread_lock_init_func libintl_lock_init_func +#define glthread_lock_lock_func libintl_lock_lock_func +#define glthread_lock_unlock_func libintl_lock_unlock_func +#define glthread_lock_destroy_func libintl_lock_destroy_func +#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded +#define glthread_rwlock_init_func libintl_rwlock_init_func +#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded +#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func +#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded +#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func +#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded +#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func +#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded +#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func +#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded +#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func +#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded +#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func +#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded +#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func +#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded +#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func +#define glthread_once_func libintl_once_func +#define glthread_once_singlethreaded libintl_once_singlethreaded +#define glthread_once_multithreaded libintl_once_multithreaded +]) +]) + + +dnl Checks for the core files of the intl subdirectory: +dnl dcigettext.c +dnl eval-plural.h +dnl explodename.c +dnl finddomain.c +dnl gettextP.h +dnl gmo.h +dnl hash-string.h hash-string.c +dnl l10nflist.c +dnl libgnuintl.h.in (except the *printf stuff) +dnl loadinfo.h +dnl loadmsgcat.c +dnl localealias.c +dnl log.c +dnl plural-exp.h plural-exp.c +dnl plural.y +dnl Used by libglocale. +AC_DEFUN([gt_INTL_SUBDIR_CORE], +[ + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([gt_INTDIV0])dnl + AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl + AC_REQUIRE([gt_INTTYPES_PRI])dnl + AC_REQUIRE([gl_LOCK])dnl + + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]], + [[]])], + [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1], + [Define to 1 if the compiler understands __builtin_expect.])]) + + AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \ + stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \ + argz_stringify argz_next __fsetlocking]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + AC_CHECK_DECLS([feof_unlocked, fgets_unlocked], , , [#include ]) + + AM_ICONV + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-2.7 for %define api.pure. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 2.[7-9]* | [3-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi +]) + +dnl Copies _GL_UNUSED and _GL_ATTRIBUTE_PURE definitions from +dnl gnulib-common.m4 as a fallback, if the project isn't using Gnulib. +AC_DEFUN([gt_GL_ATTRIBUTE], [ + m4_ifndef([gl_[]COMMON], + AH_VERBATIM([gt_gl_attribute], +[/* 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. */ +#ifndef _GL_UNUSED +# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _GL_UNUSED __attribute__ ((__unused__)) +# else +# define _GL_UNUSED +# endif +#endif + +/* The __pure__ attribute was added in gcc 2.96. */ +#ifndef _GL_ATTRIBUTE_PURE +# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define _GL_ATTRIBUTE_PURE /* empty */ +# endif +#endif +]))]) diff --git a/local/recipes/dev/gnu-make/source/m4/intldir.m4 b/local/recipes/dev/gnu-make/source/m4/intldir.m4 new file mode 100644 index 0000000000..73b672a576 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/intldir.m4 @@ -0,0 +1,19 @@ +# intldir.m4 serial 2 (gettext-0.18) +dnl Copyright (C) 2006, 2009-2014 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 +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +AC_PREREQ([2.52]) + +dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory. +AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], []) diff --git a/local/recipes/dev/gnu-make/source/m4/intlmacosx.m4 b/local/recipes/dev/gnu-make/source/m4/intlmacosx.m4 new file mode 100644 index 0000000000..8a045f6a29 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/intlmacosx.m4 @@ -0,0 +1,56 @@ +# intlmacosx.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2004-2014 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 +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Checks for special options needed on Mac OS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in Mac OS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + [gt_cv_func_CFPreferencesCopyAppValue], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFPreferencesCopyAppValue(NULL, NULL)]])], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], + [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in Mac OS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFLocaleCopyCurrent();]])], + [gt_cv_func_CFLocaleCopyCurrent=yes], + [gt_cv_func_CFLocaleCopyCurrent=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], + [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/intmax.m4 b/local/recipes/dev/gnu-make/source/m4/intmax.m4 new file mode 100644 index 0000000000..f70ceeea1b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/intmax.m4 @@ -0,0 +1,36 @@ +# intmax.m4 serial 6 (gettext-0.18.2) +dnl Copyright (C) 2002-2005, 2008-2014 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 the system has the 'intmax_t' type, but don't attempt to +dnl find a replacement if it is lacking. + +AC_DEFUN([gt_TYPE_INTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include +#if HAVE_STDINT_H_WITH_UINTMAX +#include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include +#endif + ]], + [[intmax_t x = -1; + return !x;]])], + [gt_cv_c_intmax_t=yes], + [gt_cv_c_intmax_t=no])]) + if test $gt_cv_c_intmax_t = yes; then + AC_DEFINE([HAVE_INTMAX_T], [1], + [Define if you have the 'intmax_t' type in or .]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/inttypes-pri.m4 b/local/recipes/dev/gnu-make/source/m4/inttypes-pri.m4 new file mode 100644 index 0000000000..00251e1dbf --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/inttypes-pri.m4 @@ -0,0 +1,42 @@ +# inttypes-pri.m4 serial 7 (gettext-0.18.2) +dnl Copyright (C) 1997-2002, 2006, 2008-2014 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. + +AC_PREREQ([2.53]) + +# Define PRI_MACROS_BROKEN if exists and defines the PRI* +# macros to non-string values. This is the case on AIX 4.3.3. + +AC_DEFUN([gt_INTTYPES_PRI], +[ + AC_CHECK_HEADERS([inttypes.h]) + if test $ac_cv_header_inttypes_h = yes; then + AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], + [gt_cv_inttypes_pri_broken], + [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#ifdef PRId32 +char *p = PRId32; +#endif + ]], + [[]])], + [gt_cv_inttypes_pri_broken=no], + [gt_cv_inttypes_pri_broken=yes]) + ]) + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1], + [Define if exists and defines unusable PRI* macros.]) + PRI_MACROS_BROKEN=1 + else + PRI_MACROS_BROKEN=0 + fi + AC_SUBST([PRI_MACROS_BROKEN]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/inttypes_h.m4 b/local/recipes/dev/gnu-make/source/m4/inttypes_h.m4 new file mode 100644 index 0000000000..87be9cfb56 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/inttypes_h.m4 @@ -0,0 +1,29 @@ +# inttypes_h.m4 serial 10 +dnl Copyright (C) 1997-2004, 2006, 2008-2014 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. + +# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [gl_cv_header_inttypes_h=yes], + [gl_cv_header_inttypes_h=no])]) + if test $gl_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1], + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/largefile.m4 b/local/recipes/dev/gnu-make/source/m4/largefile.m4 new file mode 100644 index 0000000000..3e8b5e39a7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/largefile.m4 @@ -0,0 +1,180 @@ +# Enable large files on systems where this is not the default. +# Enable support for files on Linux file systems with 64-bit inode numbers. + +# Copyright 1992-1996, 1998-2022 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# The following macro works around a problem in Autoconf's AC_FUNC_FSEEKO: +# It does not set _LARGEFILE_SOURCE=1 on HP-UX/ia64 32-bit, although this +# setting of _LARGEFILE_SOURCE is needed so that declares fseeko +# and ftello in C++ mode as well. +AC_DEFUN([gl_SET_LARGEFILE_SOURCE], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_FUNC_FSEEKO + case "$host_os" in + hpux*) + AC_DEFINE([_LARGEFILE_SOURCE], [1], + [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).]) + ;; + esac +]) + +# Work around a problem in Autoconf through at least 2.71 on glibc 2.34+ +# with _TIME_BITS. Also, work around a problem in autoconf <= 2.69: +# AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5, +# or configures them incorrectly in some cases. +m4_version_prereq([2.70], [], [ + +# _AC_SYS_LARGEFILE_TEST_INCLUDES +# ------------------------------- +m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], +[#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]];[]dnl +]) +])# m4_version_prereq 2.70 + + +# _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, +# CACHE-VAR, +# DESCRIPTION, +# PROLOGUE, [FUNCTION-BODY]) +# -------------------------------------------------------- +m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE], +[AC_CACHE_CHECK([for $1 value needed for large files], [$3], +[while :; do + m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( + [AC_LANG_PROGRAM([$5], [$6])], + [$3=no; break]) + m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( + [AC_LANG_PROGRAM([#undef $1 +#define $1 $2 +$5], [$6])], + [$3=$2; break]) + $3=unknown + break +done]) +case $$3 in #( + no | unknown) ;; + *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);; +esac +rm -rf conftest*[]dnl +])# _AC_SYS_LARGEFILE_MACRO_VALUE + + +# AC_SYS_LARGEFILE +# ---------------- +# By default, many hosts won't let programs access large files; +# one must use special compiler options to get large-file access to work. +# For more details about this brain damage please see: +# http://www.unix.org/version2/whatsnew/lfs20mar.html +# Additionally, on Linux file systems with 64-bit inodes a file that happens +# to have a 64-bit inode number cannot be accessed by 32-bit applications on +# Linux x86/x86_64. This can occur with file systems such as XFS and NFS. +AC_DEFUN([AC_SYS_LARGEFILE], +[AC_ARG_ENABLE(largefile, + [ --disable-largefile omit support for large files]) +AS_IF([test "$enable_largefile" != no], + [AC_CACHE_CHECK([for special C compiler options needed for large files], + ac_cv_sys_largefile_CC, + [ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])]) + AC_COMPILE_IFELSE([], [break]) + CC="$CC -n32" + AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break]) + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi]) + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, + ac_cv_sys_file_offset_bits, + [Number of bits in a file offset, on hosts where this is settable.], + [_AC_SYS_LARGEFILE_TEST_INCLUDES]) + AS_CASE([$ac_cv_sys_file_offset_bits], + [unknown], + [_AC_SYS_LARGEFILE_MACRO_VALUE([_LARGE_FILES], [1], + [ac_cv_sys_large_files], + [Define for large files, on AIX-style hosts.], + [_AC_SYS_LARGEFILE_TEST_INCLUDES])], + [64], + [gl_YEAR2038_BODY([])])]) +])# AC_SYS_LARGEFILE + +# Enable large files on systems where this is implemented by Gnulib, not by the +# system headers. +# Set the variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE if Gnulib +# overrides ensure that off_t or 'struct size.st_size' are 64-bit, respectively. +AC_DEFUN([gl_LARGEFILE], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_os" in + mingw*) + dnl Native Windows. + dnl mingw64 defines off_t to a 64-bit type already, if + dnl _FILE_OFFSET_BITS=64, which is ensured by AC_SYS_LARGEFILE. + AC_CACHE_CHECK([for 64-bit off_t], [gl_cv_type_off_t_64], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + ]], + [[]])], + [gl_cv_type_off_t_64=yes], [gl_cv_type_off_t_64=no]) + ]) + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + dnl Some mingw versions define, if _FILE_OFFSET_BITS=64, 'struct stat' + dnl to 'struct _stat32i64' or 'struct _stat64' (depending on + dnl _USE_32BIT_TIME_T), which has a 32-bit st_size member. + AC_CACHE_CHECK([for 64-bit st_size], [gl_cv_member_st_size_64], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + ]], + [[]])], + [gl_cv_member_st_size_64=yes], [gl_cv_member_st_size_64=no]) + ]) + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + dnl Nothing to do on gnulib's side. + dnl A 64-bit off_t is + dnl - already the default on Mac OS X, FreeBSD, NetBSD, OpenBSD, IRIX, + dnl OSF/1, Cygwin, + dnl - enabled by _FILE_OFFSET_BITS=64 (ensured by AC_SYS_LARGEFILE) on + dnl glibc, HP-UX, Solaris, + dnl - enabled by _LARGE_FILES=1 (ensured by AC_SYS_LARGEFILE) on AIX, + dnl - impossible to achieve on Minix 3.1.8. + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac +]) diff --git a/local/recipes/dev/gnu-make/source/m4/lcmessage.m4 b/local/recipes/dev/gnu-make/source/m4/lcmessage.m4 new file mode 100644 index 0000000000..7470ec5973 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/lcmessage.m4 @@ -0,0 +1,35 @@ +# lcmessage.m4 serial 7 (gettext-0.18.2) +dnl Copyright (C) 1995-2002, 2004-2005, 2008-2014 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, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995. + +# Check whether LC_MESSAGES is available in . + +AC_DEFUN([gt_LC_MESSAGES], +[ + AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[return LC_MESSAGES]])], + [gt_cv_val_LC_MESSAGES=yes], + [gt_cv_val_LC_MESSAGES=no])]) + if test $gt_cv_val_LC_MESSAGES = yes; then + AC_DEFINE([HAVE_LC_MESSAGES], [1], + [Define if your file defines LC_MESSAGES.]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/lib-ld.m4 b/local/recipes/dev/gnu-make/source/m4/lib-ld.m4 new file mode 100644 index 0000000000..ddc569f736 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/lib-ld.m4 @@ -0,0 +1,119 @@ +# lib-ld.m4 serial 6 +dnl Copyright (C) 1996-2003, 2009-2014 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid +dnl collision with libtool.m4. + +dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], +[# I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 /dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL([acl_cv_path_LD], +[if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 = 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE([rpath], + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_FROMPACKAGE(name, package) +dnl declares that libname comes from the given package. The configure file +dnl will then not have a --with-libname-prefix option but a +dnl --with-package-prefix option. Several libraries can come from the same +dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar +dnl macro call that searches for libname. +AC_DEFUN([AC_LIB_FROMPACKAGE], +[ + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_frompackage_]NAME, [$2]) + popdef([NAME]) + pushdef([PACK],[$2]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_libsinpackage_]PACKUP, + m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) + popdef([PACKUP]) + popdef([PACK]) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found +dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) + dnl Autoconf >= 2.61 supports dots in --with options. + pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_ARG_WITH(P_A_C_K[-prefix], +[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib + --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + LIB[]NAME[]_PREFIX= + dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been + dnl computed. So it has to be reset here. + HAVE_LIB[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$acl_hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi + popdef([P_A_C_K]) + popdef([PACKLIBS]) + popdef([PACKUP]) + popdef([PACK]) + popdef([NAME]) +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +dnl For those cases where a variable contains several -L and -l options +dnl referring to unknown libraries and directories, this macro determines the +dnl necessary additional linker options for the runtime path. +dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) +dnl sets LDADDVAR to linker options needed together with LIBSVALUE. +dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, +dnl otherwise linking without libtool is assumed. +AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], +[ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/lib-prefix.m4 b/local/recipes/dev/gnu-make/source/m4/lib-prefix.m4 new file mode 100644 index 0000000000..31f49e40aa --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/lib-prefix.m4 @@ -0,0 +1,224 @@ +# lib-prefix.m4 serial 7 (gettext-0.18) +dnl Copyright (C) 2001-2005, 2008-2014 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 AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_PREPARE_MULTILIB creates +dnl - a variable acl_libdirstem, containing the basename of the libdir, either +dnl "lib" or "lib64" or "lib/64", +dnl - a variable acl_libdirstem2, as a secondary possible value for +dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or +dnl "lib/amd64". +AC_DEFUN([AC_LIB_PREPARE_MULTILIB], +[ + dnl There is no formal standard regarding lib and lib64. + dnl On glibc systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine + dnl the compiler's default mode by looking at the compiler's library search + dnl path. If at least one of its elements ends in /lib64 or points to a + dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. + dnl Otherwise we use the default, namely "lib". + dnl On Solaris systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or + dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. + AC_REQUIRE([AC_CANONICAL_HOST]) + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment + dnl . + dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." + dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the + dnl symlink is missing, so we set acl_libdirstem2 too. + AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], + [AC_EGREP_CPP([sixtyfour bits], [ +#ifdef _LP64 +sixtyfour bits +#endif + ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) + ]) + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" +]) diff --git a/local/recipes/dev/gnu-make/source/m4/lock.m4 b/local/recipes/dev/gnu-make/source/m4/lock.m4 new file mode 100644 index 0000000000..73a3c54cee --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/lock.m4 @@ -0,0 +1,42 @@ +# lock.m4 serial 13 (gettext-0.18.2) +dnl Copyright (C) 2005-2014 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. + +AC_DEFUN([gl_LOCK], +[ + AC_REQUIRE([gl_THREADLIB]) + if test "$gl_threads_api" = posix; then + # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the + # pthread_rwlock_* functions. + AC_CHECK_TYPE([pthread_rwlock_t], + [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1], + [Define if the POSIX multithreading library has read/write locks.])], + [], + [#include ]) + # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM( + [[#include ]], + [[ +#if __FreeBSD__ == 4 +error "No, in FreeBSD 4.0 recursive mutexes actually don't work." +#elif (defined __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ \ + && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070) +error "No, in Mac OS X < 10.7 recursive mutexes actually don't work." +#else +int x = (int)PTHREAD_MUTEX_RECURSIVE; +return !x; +#endif + ]])], + [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1], + [Define if the defines PTHREAD_MUTEX_RECURSIVE.])]) + fi + gl_PREREQ_LOCK +]) + +# Prerequisites of lib/glthread/lock.c. +AC_DEFUN([gl_PREREQ_LOCK], [:]) diff --git a/local/recipes/dev/gnu-make/source/m4/longlong.m4 b/local/recipes/dev/gnu-make/source/m4/longlong.m4 new file mode 100644 index 0000000000..eefb37c455 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/longlong.m4 @@ -0,0 +1,113 @@ +# longlong.m4 serial 17 +dnl Copyright (C) 1999-2007, 2009-2014 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. + +# Define HAVE_LONG_LONG_INT if 'long long int' works. +# This fixes a bug in Autoconf 2.61, and can be faster +# than what's in Autoconf 2.62 through 2.68. + +# Note: If the type 'long long int' exists but is only 32 bits large +# (as on some very old compilers), HAVE_LONG_LONG_INT will not be +# defined. In this case you can treat 'long long int' like 'long int'. + +AC_DEFUN([AC_TYPE_LONG_LONG_INT], +[ + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], + [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 + dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. + dnl If cross compiling, assume the bug is not important, since + dnl nobody cross compiles for this platform as far as we know. + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif]], + [[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;]])], + [], + [ac_cv_type_long_long_int=no], + [:]) + fi + fi]) + if test $ac_cv_type_long_long_int = yes; then + AC_DEFINE([HAVE_LONG_LONG_INT], [1], + [Define to 1 if the system has the type 'long long int'.]) + fi +]) + +# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works. +# This fixes a bug in Autoconf 2.61, and can be faster +# than what's in Autoconf 2.62 through 2.68. + +# Note: If the type 'unsigned long long int' exists but is only 32 bits +# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT +# will not be defined. In this case you can treat 'unsigned long long int' +# like 'unsigned long int'. + +AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], +[ + AC_CACHE_CHECK([for unsigned long long int], + [ac_cv_type_unsigned_long_long_int], + [ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + AC_LINK_IFELSE( + [_AC_TYPE_LONG_LONG_SNIPPET], + [], + [ac_cv_type_unsigned_long_long_int=no]) + fi]) + if test $ac_cv_type_unsigned_long_long_int = yes; then + AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], + [Define to 1 if the system has the type 'unsigned long long int'.]) + fi +]) + +# Expands to a C program that can be used to test for simultaneous support +# of 'long long' and 'unsigned long long'. We don't want to say that +# 'long long' is available if 'unsigned long long' is not, or vice versa, +# because too many programs rely on the symmetry between signed and unsigned +# integer types (excluding 'bool'). +AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], +[ + AC_LANG_PROGRAM( + [[/* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63;]], + [[/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull));]]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/nls.m4 b/local/recipes/dev/gnu-make/source/m4/nls.m4 new file mode 100644 index 0000000000..53cdc8be8b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/nls.m4 @@ -0,0 +1,32 @@ +# nls.m4 serial 5 (gettext-0.18) +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014 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, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ([2.50]) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE([nls], + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT([$USE_NLS]) + AC_SUBST([USE_NLS]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/po.m4 b/local/recipes/dev/gnu-make/source/m4/po.m4 new file mode 100644 index 0000000000..43012dca1b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/po.m4 @@ -0,0 +1,453 @@ +# po.m4 serial 24 (gettext-0.19) +dnl Copyright (C) 1995-2014 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 +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ([2.60]) + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AC_PROG_MKDIR_P])dnl + AC_REQUIRE([AC_PROG_SED])dnl + AC_REQUIRE([AM_NLS])dnl + + dnl Release version of the gettext macros. This is used to ensure that + dnl the gettext macros and po/Makefile.in.in are in sync. + AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) + + dnl Test whether it is GNU msgfmt >= 0.15. +changequote(,)dnl + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([MSGFMT_015]) +changequote(,)dnl + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([GMSGFMT_015]) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Test whether it is GNU xgettext >= 0.15. +changequote(,)dnl + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac +changequote([,])dnl + AC_SUBST([XGETTEXT_015]) + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl Installation directories. + dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we + dnl have to define it here, so that it can be used in po/Makefile. + test -n "$localedir" || localedir='${datadir}/locale' + AC_SUBST([localedir]) + + dnl Support for AM_XGETTEXT_OPTION. + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) + + AC_CONFIG_COMMANDS([po-directories], [[ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done]], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + tab=`printf '\t'` + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <> "$ac_file.tmp" < +#include +/* The string "%2$d %1$d", with dollar characters protected from the shell's + dollar expansion (possibly an autoconf bug). */ +static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +static char buf[100]; +int main () +{ + sprintf (buf, format, 33, 55); + return (strcmp (buf, "55 33") != 0); +}]])], + [gt_cv_func_printf_posix=yes], + [gt_cv_func_printf_posix=no], + [ + AC_EGREP_CPP([notposix], [ +#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ + notposix +#endif + ], + [gt_cv_func_printf_posix="guessing no"], + [gt_cv_func_printf_posix="guessing yes"]) + ]) + ]) + case $gt_cv_func_printf_posix in + *yes) + AC_DEFINE([HAVE_POSIX_PRINTF], [1], + [Define if your printf() function supports format strings with positions.]) + ;; + esac +]) diff --git a/local/recipes/dev/gnu-make/source/m4/progtest.m4 b/local/recipes/dev/gnu-make/source/m4/progtest.m4 new file mode 100644 index 0000000000..b499f79cf3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/progtest.m4 @@ -0,0 +1,91 @@ +# progtest.m4 serial 7 (gettext-0.18.2) +dnl Copyright (C) 1996-2003, 2005, 2008-2014 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 +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1996. + +AC_PREREQ([2.50]) + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL([ac_cv_path_$1], +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$][$1]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST([$1])dnl +]) diff --git a/local/recipes/dev/gnu-make/source/m4/sig_atomic_t.m4 b/local/recipes/dev/gnu-make/source/m4/sig_atomic_t.m4 new file mode 100644 index 0000000000..2e8c48df72 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/sig_atomic_t.m4 @@ -0,0 +1,14 @@ +# sig_atomic_t.m4 serial 3 +dnl Copyright (C) 2003, 2009-2022 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gt_TYPE_SIG_ATOMIC_T], +[ + AC_CHECK_TYPES([sig_atomic_t], , + [AC_DEFINE([sig_atomic_t], [int], + [Define as an integer type suitable for memory locations that can be + accessed atomically even in the presence of asynchronous signals.])], + [#include ]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/size_max.m4 b/local/recipes/dev/gnu-make/source/m4/size_max.m4 new file mode 100644 index 0000000000..7e192d5e96 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/size_max.m4 @@ -0,0 +1,79 @@ +# size_max.m4 serial 10 +dnl Copyright (C) 2003, 2005-2006, 2008-2014 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. + +AC_DEFUN([gl_SIZE_MAX], +[ + AC_CHECK_HEADERS([stdint.h]) + dnl First test whether the system already has SIZE_MAX. + AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [ + gl_cv_size_max= + AC_EGREP_CPP([Found it], [ +#include +#if HAVE_STDINT_H +#include +#endif +#ifdef SIZE_MAX +Found it +#endif +], [gl_cv_size_max=yes]) + if test -z "$gl_cv_size_max"; then + dnl Define it ourselves. Here we assume that the type 'size_t' is not wider + dnl than the type 'unsigned long'. Try hard to find a definition that can + dnl be used in a preprocessor #if, i.e. doesn't contain a cast. + AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], + [#include +#include ], [size_t_bits_minus_1=]) + AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], + [#include ], [fits_in_uint=]) + if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then + if test $fits_in_uint = 1; then + dnl Even though SIZE_MAX fits in an unsigned int, it must be of type + dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + extern size_t foo; + extern unsigned long foo; + ]], + [[]])], + [fits_in_uint=0]) + fi + dnl We cannot use 'expr' to simplify this expression, because 'expr' + dnl works only with 'long' integers in the host environment, while we + dnl might be cross-compiling from a 32-bit platform to a 64-bit platform. + if test $fits_in_uint = 1; then + gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" + else + gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" + fi + else + dnl Shouldn't happen, but who knows... + gl_cv_size_max='((size_t)~(size_t)0)' + fi + fi + ]) + if test "$gl_cv_size_max" != yes; then + AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max], + [Define as the maximum value of type 'size_t', if the system doesn't define it.]) + fi + dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after + dnl . Remember that the #undef in AH_VERBATIM gets replaced with + dnl #define by AC_DEFINE_UNQUOTED. + AH_VERBATIM([SIZE_MAX], +[/* Define as the maximum value of type 'size_t', if the system doesn't define + it. */ +#ifndef SIZE_MAX +# undef SIZE_MAX +#endif]) +]) + +dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. +dnl Remove this when we can assume autoconf >= 2.61. +m4_ifdef([AC_COMPUTE_INT], [], [ + AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/stdbool.m4 b/local/recipes/dev/gnu-make/source/m4/stdbool.m4 new file mode 100644 index 0000000000..c67908aa87 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/stdbool.m4 @@ -0,0 +1,118 @@ +# Check for stdbool.h that conforms to C99. + +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 9 + +# Prepare for substituting if it is not supported. + +AC_DEFUN([gl_STDBOOL_H], +[ + AC_REQUIRE([AC_CHECK_HEADER_STDBOOL]) + AC_REQUIRE([AC_CANONICAL_HOST]) + + dnl On some platforms, does not exist or does not conform to C99. + dnl On Solaris 10 with CC=cc CXX=CC, exists but is not usable + dnl in C++ mode (and no exists). In this case, we use our + dnl replacement, also in C mode (for binary compatibility between C and C++). + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + AC_SUBST([HAVE__BOOL]) +]) + +m4_version_prereq([2.72], [], [ + +AC_DEFUN([AC_CHECK_HEADER_STDBOOL], + [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 + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C 1999 requires bool, true, and false to be macros, + C 2023 and C++ 2011 overrule that, so do not test for that. + Although C 1999 requires __bool_true_false_are_defined and + _Bool, C 2023 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + ]], + [[ + 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_HEADER_STDBOOL + +]) # m4_version_prereq 2.72 diff --git a/local/recipes/dev/gnu-make/source/m4/stdint_h.m4 b/local/recipes/dev/gnu-make/source/m4/stdint_h.m4 new file mode 100644 index 0000000000..7fc2ce9a83 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/stdint_h.m4 @@ -0,0 +1,27 @@ +# stdint_h.m4 serial 9 +dnl Copyright (C) 1997-2004, 2006, 2008-2014 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. + +# Define HAVE_STDINT_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_STDINT_H], +[ + AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include ]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [gl_cv_header_stdint_h=yes], + [gl_cv_header_stdint_h=no])]) + if test $gl_cv_header_stdint_h = yes; then + AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1], + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/threadlib.m4 b/local/recipes/dev/gnu-make/source/m4/threadlib.m4 new file mode 100644 index 0000000000..dc9a3d8e84 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/threadlib.m4 @@ -0,0 +1,389 @@ +# threadlib.m4 serial 11 (gettext-0.18.2) +dnl Copyright (C) 2005-2014 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 gl_THREADLIB +dnl ------------ +dnl Tests for a multithreading library to be used. +dnl If the configure.ac contains a definition of the gl_THREADLIB_DEFAULT_NO +dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the +dnl default is 'no', otherwise it is system dependent. In both cases, the user +dnl can change the choice through the options --enable-threads=choice or +dnl --disable-threads. +dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS, +dnl USE_PTH_THREADS, USE_WINDOWS_THREADS +dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use +dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with +dnl libtool). +dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for +dnl programs that really need multithread functionality. The difference +dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak +dnl symbols, typically LIBTHREAD is empty whereas LIBMULTITHREAD is not. +dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for +dnl multithread-safe programs. + +AC_DEFUN([gl_THREADLIB_EARLY], +[ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) +]) + +dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once. + +AC_DEFUN([gl_THREADLIB_EARLY_BODY], +[ + dnl Ordering constraints: This macro modifies CPPFLAGS in a way that + dnl influences the result of the autoconf tests that test for *_unlocked + dnl declarations, on AIX 5 at least. Therefore it must come early. + AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl + AC_BEFORE([$0], [gl_ARGP])dnl + + AC_REQUIRE([AC_CANONICAL_HOST]) + dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + dnl Check for multithreading. + m4_ifdef([gl_THREADLIB_DEFAULT_NO], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=])]) + AC_ARG_ENABLE([threads], +AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ +AC_HELP_STRING([--disable-threads], [build without multithread safety])]), + [gl_use_threads=$enableval], + [if test -n "$gl_use_threads_default"; then + gl_use_threads="$gl_use_threads_default" + else +changequote(,)dnl + case "$host_os" in + dnl Disable multithreading by default on OSF/1, because it interferes + dnl with fork()/exec(): When msgexec is linked with -lpthread, its + dnl child process gets an endless segmentation fault inside execvp(). + dnl Disable multithreading by default on Cygwin 1.5.x, because it has + dnl bugs that lead to endless loops or crashes. See + dnl . + osf*) gl_use_threads=no ;; + cygwin*) + case `uname -r` in + 1.[0-5].*) gl_use_threads=no ;; + *) gl_use_threads=yes ;; + esac + ;; + *) gl_use_threads=yes ;; + esac +changequote([,])dnl + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # For using : + case "$host_os" in + osf*) + # On OSF/1, the compiler needs the flag -D_REENTRANT so that it + # groks . cc also understands the flag -pthread, but + # we don't use it because 1. gcc-2.95 doesn't understand -pthread, + # 2. putting a flag into CPPFLAGS that has an effect on the linker + # causes the AC_LINK_IFELSE test below to succeed unexpectedly, + # leading to wrong values of LIBTHREAD and LTLIBTHREAD. + CPPFLAGS="$CPPFLAGS -D_REENTRANT" + ;; + esac + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in . + case "$host_os" in + aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; + esac + fi +]) + +dnl The guts of gl_THREADLIB. Needs to be expanded only once. + +AC_DEFUN([gl_THREADLIB_BODY], +[ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) + gl_threads_api=none + LIBTHREAD= + LTLIBTHREAD= + LIBMULTITHREAD= + LTLIBMULTITHREAD= + if test "$gl_use_threads" != no; then + dnl Check whether the compiler and linker support weak declarations. + AC_CACHE_CHECK([whether imported symbols can be declared weak], + [gl_cv_have_weak], + [gl_cv_have_weak=no + dnl First, test whether the compiler accepts it syntactically. + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[extern void xyzzy (); +#pragma weak xyzzy]], + [[xyzzy();]])], + [gl_cv_have_weak=maybe]) + if test $gl_cv_have_weak = maybe; then + dnl Second, test whether it actually works. On Cygwin 1.7.2, with + dnl gcc 4.3, symbols declared weak always evaluate to the address 0. + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#pragma weak fputs +int main () +{ + return (fputs == NULL); +}]])], + [gl_cv_have_weak=yes], + [gl_cv_have_weak=no], + [dnl When cross-compiling, assume that only ELF platforms support + dnl weak symbols. + AC_EGREP_CPP([Extensible Linking Format], + [#ifdef __ELF__ + Extensible Linking Format + #endif + ], + [gl_cv_have_weak="guessing yes"], + [gl_cv_have_weak="guessing no"]) + ]) + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that + # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. + AC_CHECK_HEADER([pthread.h], + [gl_have_pthread_h=yes], [gl_have_pthread_h=no]) + if test "$gl_have_pthread_h" = yes; then + # Other possible tests: + # -lpthreads (FSU threads, PCthreads) + # -lgthreads + gl_have_pthread= + # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist + # in libc. IRIX 6.5 has the first one in both libc and libpthread, but + # the second one only in libpthread, and lock.c needs it. + # + # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04 + # needs -pthread for some reason. See: + # http://lists.gnu.org/archive/html/bug-gnulib/2014-09/msg00023.html + save_LIBS=$LIBS + for gl_pthread in '' '-pthread'; do + LIBS="$LIBS $gl_pthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + pthread_mutex_t m; + pthread_mutexattr_t ma; + ]], + [[pthread_mutex_lock (&m); + pthread_mutexattr_init (&ma);]])], + [gl_have_pthread=yes + LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread + LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread]) + LIBS=$save_LIBS + test -n "$gl_have_pthread" && break + done + + # Test for libpthread by looking for pthread_kill. (Not pthread_self, + # since it is defined as a macro on OSF/1.) + if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then + # The program links fine without libpthread. But it may actually + # need to link with libpthread in order to create multiple threads. + AC_CHECK_LIB([pthread], [pthread_kill], + [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread + # On Solaris and HP-UX, most pthread functions exist also in libc. + # Therefore pthread_in_use() needs to actually try to create a + # thread: pthread_create from libc will fail, whereas + # pthread_create will actually create a thread. + case "$host_os" in + solaris* | hpux*) + AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], + [Define if the pthread_in_use() detection is hard.]) + esac + ]) + elif test -z "$gl_have_pthread"; then + # Some library is needed. Try libpthread and libc_r. + AC_CHECK_LIB([pthread], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread]) + if test -z "$gl_have_pthread"; then + # For FreeBSD 4. + AC_CHECK_LIB([c_r], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r + LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r]) + fi + fi + if test -n "$gl_have_pthread"; then + gl_threads_api=posix + AC_DEFINE([USE_POSIX_THREADS], [1], + [Define if the POSIX multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_POSIX_THREADS_WEAK], [1], + [Define if references to the POSIX multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then + gl_have_solaristhread= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[thr_self();]])], + [gl_have_solaristhread=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_solaristhread"; then + gl_threads_api=solaris + LIBTHREAD=-lthread + LTLIBTHREAD=-lthread + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_SOLARIS_THREADS], [1], + [Define if the old Solaris multithreading library can be used.]) + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1], + [Define if references to the old Solaris multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + if test "$gl_use_threads" = pth; then + gl_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_LINKFLAGS([pth]) + gl_have_pth= + gl_save_LIBS="$LIBS" + LIBS="$LIBS $LIBPTH" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include ]], [[pth_self();]])], + [gl_have_pth=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_pth"; then + gl_threads_api=pth + LIBTHREAD="$LIBPTH" + LTLIBTHREAD="$LTLIBPTH" + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_PTH_THREADS], [1], + [Define if the GNU Pth multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_PTH_THREADS_WEAK], [1], + [Define if references to the GNU Pth multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + else + CPPFLAGS="$gl_save_CPPFLAGS" + fi + fi + if test -z "$gl_have_pthread"; then + case "$gl_use_threads" in + yes | windows | win32) # The 'win32' is for backward compatibility. + if { case "$host_os" in + mingw*) true;; + *) false;; + esac + }; then + gl_threads_api=windows + AC_DEFINE([USE_WINDOWS_THREADS], [1], + [Define if the native Windows multithreading API can be used.]) + fi + ;; + esac + fi + fi + AC_MSG_CHECKING([for multithread API to use]) + AC_MSG_RESULT([$gl_threads_api]) + AC_SUBST([LIBTHREAD]) + AC_SUBST([LTLIBTHREAD]) + AC_SUBST([LIBMULTITHREAD]) + AC_SUBST([LTLIBMULTITHREAD]) +]) + +AC_DEFUN([gl_THREADLIB], +[ + AC_REQUIRE([gl_THREADLIB_EARLY]) + AC_REQUIRE([gl_THREADLIB_BODY]) +]) + + +dnl gl_DISABLE_THREADS +dnl ------------------ +dnl Sets the gl_THREADLIB default so that threads are not used by default. +dnl The user can still override it at installation time, by using the +dnl configure option '--enable-threads'. + +AC_DEFUN([gl_DISABLE_THREADS], [ + m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no]) +]) + + +dnl Survey of platforms: +dnl +dnl Platform Available Compiler Supports test-lock +dnl flavours option weak result +dnl --------------- --------- --------- -------- --------- +dnl Linux 2.4/glibc posix -lpthread Y OK +dnl +dnl GNU Hurd/glibc posix +dnl +dnl Ubuntu 14.04 posix -pthread Y OK +dnl +dnl FreeBSD 5.3 posix -lc_r Y +dnl posix -lkse ? Y +dnl posix -lpthread ? Y +dnl posix -lthr Y +dnl +dnl FreeBSD 5.2 posix -lc_r Y +dnl posix -lkse Y +dnl posix -lthr Y +dnl +dnl FreeBSD 4.0,4.10 posix -lc_r Y OK +dnl +dnl NetBSD 1.6 -- +dnl +dnl OpenBSD 3.4 posix -lpthread Y OK +dnl +dnl Mac OS X 10.[123] posix -lpthread Y OK +dnl +dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK +dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK +dnl +dnl HP-UX 11 posix -lpthread N (cc) OK +dnl Y (gcc) +dnl +dnl IRIX 6.5 posix -lpthread Y 0.5 +dnl +dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK +dnl +dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK +dnl -lpthread (gcc) Y +dnl +dnl Cygwin posix -lpthread Y OK +dnl +dnl Any of the above pth -lpth 0.0 +dnl +dnl Mingw windows N OK +dnl +dnl BeOS 5 -- +dnl +dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is +dnl turned off: +dnl OK if all three tests terminate OK, +dnl 0.5 if the first test terminates OK but the second one loops endlessly, +dnl 0.0 if the first test already loops endlessly. diff --git a/local/recipes/dev/gnu-make/source/m4/uintmax_t.m4 b/local/recipes/dev/gnu-make/source/m4/uintmax_t.m4 new file mode 100644 index 0000000000..0a94f17fb2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/uintmax_t.m4 @@ -0,0 +1,30 @@ +# uintmax_t.m4 serial 12 +dnl Copyright (C) 1997-2004, 2007-2014 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_PREREQ([2.13]) + +# Define uintmax_t to 'unsigned long' or 'unsigned long long' +# if it is not already defined in or . + +AC_DEFUN([gl_AC_TYPE_UINTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type], + [Define to unsigned long or unsigned long long + if and don't define.]) + else + AC_DEFINE([HAVE_UINTMAX_T], [1], + [Define if you have the 'uintmax_t' type in or .]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/visibility.m4 b/local/recipes/dev/gnu-make/source/m4/visibility.m4 new file mode 100644 index 0000000000..552e39772d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/visibility.m4 @@ -0,0 +1,77 @@ +# visibility.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2005, 2008, 2010-2014 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 Tests whether the compiler supports the command-line option +dnl -fvisibility=hidden and the function and variable attributes +dnl __attribute__((__visibility__("hidden"))) and +dnl __attribute__((__visibility__("default"))). +dnl Does *not* test for __visibility__("protected") - which has tricky +dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on +dnl Mac OS X. +dnl Does *not* test for __visibility__("internal") - which has processor +dnl dependent semantics. +dnl Does *not* test for #pragma GCC visibility push(hidden) - which is +dnl "really only recommended for legacy code". +dnl Set the variable CFLAG_VISIBILITY. +dnl Defines and sets the variable HAVE_VISIBILITY. + +AC_DEFUN([gl_VISIBILITY], +[ + AC_REQUIRE([AC_PROG_CC]) + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + dnl First, check whether -Werror can be added to the command line, or + dnl whether it leads to an error because of some other option that the + dnl user has put into $CC $CFLAGS $CPPFLAGS. + AC_MSG_CHECKING([whether the -Werror option is usable]) + AC_CACHE_VAL([gl_cv_cc_vis_werror], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Werror" + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[]], [[]])], + [gl_cv_cc_vis_werror=yes], + [gl_cv_cc_vis_werror=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_vis_werror]) + dnl Now check whether visibility declarations are supported. + AC_MSG_CHECKING([for simple visibility declarations]) + AC_CACHE_VAL([gl_cv_cc_visibility], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + dnl We use the option -Werror and a function dummyfunc, because on some + dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning + dnl "visibility attribute not supported in this configuration; ignored" + dnl at the first function definition in every compilation unit, and we + dnl don't want to use the option in this case. + if test $gl_cv_cc_vis_werror = yes; then + CFLAGS="$CFLAGS -Werror" + fi + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); + void dummyfunc (void) {} + ]], + [[]])], + [gl_cv_cc_visibility=yes], + [gl_cv_cc_visibility=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_visibility]) + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + AC_SUBST([CFLAG_VISIBILITY]) + AC_SUBST([HAVE_VISIBILITY]) + AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], + [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/warn-on-use.m4 b/local/recipes/dev/gnu-make/source/m4/warn-on-use.m4 new file mode 100644 index 0000000000..a81731f31c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/warn-on-use.m4 @@ -0,0 +1,62 @@ +# 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. + +# gl_WARN_ON_USE_PREPARE(INCLUDES, NAMES) +# --------------------------------------- +# If the module 'posixcheck' is in use: +# +# For each whitespace-separated element in the list of NAMES, define +# HAVE_RAW_DECL_name if the function has a declaration among INCLUDES +# even after being undefined as a macro. +# +# See warn-on-use.h for some hints on how to poison function names, as +# well as ideas on poisoning global variables and macros. NAMES may +# include global variables, but remember that only functions work with +# _GL_WARN_ON_USE. Typically, INCLUDES only needs to list a single +# header, but if the replacement header pulls in other headers because +# some systems declare functions in the wrong header, then INCLUDES +# should do likewise. +# +# It is generally safe to assume declarations for functions declared +# in the intersection of C89 and C11 (such as printf) without +# needing gl_WARN_ON_USE_PREPARE. +AC_DEFUN([gl_WARN_ON_USE_PREPARE], +[ + m4_ifdef([gl_POSIXCHECK], + [m4_foreach_w([gl_decl], [$2], + [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 + 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], + [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])])]) + 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 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/local/recipes/dev/gnu-make/source/m4/wchar_t.m4 b/local/recipes/dev/gnu-make/source/m4/wchar_t.m4 new file mode 100644 index 0000000000..839a04c17c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/wchar_t.m4 @@ -0,0 +1,24 @@ +# wchar_t.m4 serial 4 (gettext-0.18.2) +dnl Copyright (C) 2002-2003, 2008-2014 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether has the 'wchar_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WCHAR_T], +[ + AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + wchar_t foo = (wchar_t)'\0';]], + [[]])], + [gt_cv_c_wchar_t=yes], + [gt_cv_c_wchar_t=no])]) + if test $gt_cv_c_wchar_t = yes; then + AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/wint_t.m4 b/local/recipes/dev/gnu-make/source/m4/wint_t.m4 new file mode 100644 index 0000000000..9b07b07090 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/wint_t.m4 @@ -0,0 +1,32 @@ +# wint_t.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2003, 2007-2014 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether has the 'wint_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WINT_T], +[ + AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be included + before . */ +#include +#include +#include +#include + wint_t foo = (wchar_t)'\0';]], + [[]])], + [gt_cv_c_wint_t=yes], + [gt_cv_c_wint_t=no])]) + if test $gt_cv_c_wint_t = yes; then + AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/xsize.m4 b/local/recipes/dev/gnu-make/source/m4/xsize.m4 new file mode 100644 index 0000000000..3af23ec75b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/xsize.m4 @@ -0,0 +1,12 @@ +# xsize.m4 serial 5 +dnl Copyright (C) 2003-2004, 2008-2014 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_XSIZE], +[ + dnl Prerequisites of lib/xsize.h. + AC_REQUIRE([gl_SIZE_MAX]) + AC_CHECK_HEADERS([stdint.h]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/year2038.m4 b/local/recipes/dev/gnu-make/source/m4/year2038.m4 new file mode 100644 index 0000000000..06db589ba9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/year2038.m4 @@ -0,0 +1,124 @@ +# year2038.m4 serial 7 +dnl Copyright (C) 2017-2022 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Attempt to ensure that 'time_t' can go past the year 2038 and that +dnl the functions 'time', 'stat', etc. work with post-2038 timestamps. + +AC_DEFUN([gl_YEAR2038_EARLY], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_os" in + mingw*) + AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1], + [For 64-bit time_t on 32-bit mingw.]) + ;; + esac +]) + +# gl_YEAR2038_TEST_INCLUDES +# ------------------------- +AC_DEFUN([gl_YEAR2038_TEST_INCLUDES], +[[ + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; +]]) + +# gl_YEAR2038_BODY(REQUIRE-YEAR2038-SAFE) +----------------------------------------- +AC_DEFUN([gl_YEAR2038_BODY], +[ + AC_ARG_ENABLE([year2038], + [ --disable-year2038 omit support for timestamps past the year 2038]) + AS_IF([test "$enable_year2038" != no], + [ + dnl On many systems, time_t is already a 64-bit type. + dnl On those systems where time_t is still 32-bit, it requires kernel + dnl and libc support to make it 64-bit. For glibc 2.34 and later on Linux, + dnl defining _TIME_BITS=64 and _FILE_OFFSET_BITS=64 is needed on x86 and ARM. + dnl + dnl On native Windows, the system include files define types __time32_t + dnl and __time64_t. By default, time_t is an alias of + dnl - __time32_t on 32-bit mingw, + dnl - __time64_t on 64-bit mingw and on MSVC (since MSVC 8). + dnl But when compiling with -D__MINGW_USE_VC2005_COMPAT, time_t is an + dnl alias of __time64_t. + dnl And when compiling with -D_USE_32BIT_TIME_T, time_t is an alias of + dnl __time32_t. + AC_CACHE_CHECK([for time_t past the year 2038], [gl_cv_type_time_t_y2038], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([gl_YEAR2038_TEST_INCLUDES])], + [gl_cv_type_time_t_y2038=yes], [gl_cv_type_time_t_y2038=no]) + ]) + if test "$gl_cv_type_time_t_y2038" = no; then + AC_CACHE_CHECK([for 64-bit time_t with _TIME_BITS=64], + [gl_cv_type_time_t_bits_macro], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([[#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + ]gl_YEAR2038_TEST_INCLUDES])], + [gl_cv_type_time_t_bits_macro=yes], + [gl_cv_type_time_t_bits_macro=no]) + ]) + if test "$gl_cv_type_time_t_bits_macro" = yes; then + AC_DEFINE([_TIME_BITS], [64], + [Number of bits in a timestamp, on hosts where this is settable.]) + dnl AC_SYS_LARGFILE also defines this; it's OK if we do too. + AC_DEFINE([_FILE_OFFSET_BITS], [64], + [Number of bits in a file offset, on hosts where this is settable.]) + gl_cv_type_time_t_y2038=yes + fi + fi + if test $gl_cv_type_time_t_y2038 = no; then + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef _USE_32BIT_TIME_T + int ok; + #else + error fail + #endif + ]])], + [AC_MSG_FAILURE( + [The 'time_t' type stops working after January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags.])], + [# If not cross-compiling and $1 says we should check, + # and 'touch' works with a large timestamp, then evidently wider time_t + # is desired and supported, so fail and ask the builder to fix the + # problem. Otherwise, just warn the builder. + m4_ifval([$1], + [if test $cross_compiling = no \ + && TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null; then + case `TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null` in + *'Feb 7 2106'* | *'Feb 7 17:10'*) + AC_MSG_FAILURE( + [The 'time_t' type stops working after January 2038, + and your system appears to support a wider 'time_t'. + Try configuring with 'CC="${CC} -m64"'. + To build with a 32-bit time_t anyway (not recommended), + configure with '--disable-year2038'.]);; + esac + rm -f conftest.time + fi]) + if test "$gl_warned_about_y2038" != yes; then + AC_MSG_WARN( + [The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC="${CC} -m64"' perhaps?]) + gl_warned_about_y2038=yes + fi + ]) + fi]) +]) + +AC_DEFUN([gl_YEAR2038], +[ + gl_YEAR2038_BODY([require-year2038-safe]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/zzgnulib.m4 b/local/recipes/dev/gnu-make/source/m4/zzgnulib.m4 new file mode 100644 index 0000000000..fd73a201fd --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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/local/recipes/dev/gnu-make/source/makefile.com b/local/recipes/dev/gnu-make/source/makefile.com new file mode 100644 index 0000000000..382c74df16 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/makefile.com @@ -0,0 +1,171 @@ +$! +$! Makefile.com - builds GNU Make for VMS +$! +$! P1 = LIST will provide compiler listings. +$! P2 = DEBUG will build an image with debug information +$! P3 = WALL will enable all warning messages (some are suppressed since +$! one macro intentionally causes an error condition) +$! +$! In case of problems with the install you might contact me at +$! zinser@decus.de (preferred) or zinser@sysdev.deutsche-boerse.com +$ +$! hb +$! But don't ask Martin Zinser about the lines, I added/changed. +$! In case of an error do some cleanup +$ on error then $ goto cleanup +$! in case somebody set up her/his own symbol for cc +$ set symbol/scope=(nolocal,noglobal) +$! +$! Just some general constants... +$! +$ true = 1 +$ false = 0 +$ tmpnam = "temp_" + f$getjpi("","pid") +$ tt = tmpnam + ".txt" +$ tc = tmpnam + ".c" +$! +$! Look for the compiler used +$! +$ lval = "" +$ if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs."" +$ then +$ if f$trnlnm("SYS").eqs."" then def/nolog sys sys$library: +$ ccopt = "" +$ else +$ ccopt = "/decc/prefix=(all,except=(globfree,glob))" +$ if f$trnlnm("SYS").eqs."" +$ then +$ if f$trnlnm("DECC$LIBRARY_INCLUDE").nes."" +$ then +$ define sys decc$library_include: +$ else +$ if f$search("SYS$COMMON:[DECC$LIB.REFERENCE]DECC$RTLDEF.DIR").nes."" - + then lval = "SYS$COMMON:[DECC$LIB.REFERENCE.DECC$RTLDEF]," +$ if f$search("SYS$COMMON:[DECC$LIB.REFERENCE]SYS$STARLET_C.DIR").nes."" - + then lval = lval+"SYS$COMMON:[DECC$LIB.REFERENCE.SYS$STARLET_C]," +$ lval=lval+"SYS$LIBRARY:" +$ define sys 'lval +$ endif +$ endif +$ endif +$! +$! +$ if (p1 .eqs. "LIST") +$ then +$ ccopt = ccopt + "/list/show=(expan,inclu)" +$ endif +$! +$! Should we build a debug image +$! +$ if (p2.eqs."DEBUG") +$ then +$ ccopt = ccopt + "/noopt/debug" +$ lopt = "/debug" +$ else +$ lopt = "" +$ endif +$! +$! Do we want to see all warnings +$! +$ if (p3.nes."WALL") +$ then +$ gosub check_cc_qual +$ endif +$ filelist = "[.src]ar [.src]arscan [.src]commands [.src]default [.src]dir " + - + "[.src]expand [.src]file [.src]function [.src]guile " + - + "[.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]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" +$! +$ copy [.src]config.h-vms [.src]config.h +$ copy [.lib]fnmatch.in.h [.lib]fnmatch.h +$ copy [.lib]glob.in.h [.lib]glob.h +$ n=0 +$ open/write optf make.opt +$ loop: +$ cfile = f$elem(n," ",filelist) +$ if cfile .eqs. " " then goto linkit +$ write sys$output "Compiling ''cfile'..." +$ call compileit 'cfile' +$ n = n + 1 +$ goto loop +$ linkit: +$ close optf +$ link/exe=make make.opt/opt'lopt +$ goto cleanup +$ +$ cleanup: +$ if f$trnlnm("SYS").nes."" then $ deassign sys +$ if f$trnlnm("OPTF").nes."" then $ close optf +$ if f$search("make.opt").nes."" then $ del make.opt;* +$ exit +$! +$!----------------------------------------------------------------------------- +$! +$! Check if this is a define relating to the properties of the C/C++ +$! compiler +$! +$CHECK_CC_QUAL: +$ open/write tmpc 'tc +$ ccqual = "/warn=(disable=questcompare)" +$ write tmpc "#include " +$ write tmpc "unsigned int i = 1;" +$ write tmpc "int main(){" +$ write tmpc "if (i < 0){printf(""Mission impossible\n"");}}" +$ close tmpc +$ gosub cc_qual_check +$ return +$! +$!----------------------------------------------------------------------------- +$! +$! Check for properties of C/C++ compiler +$! +$CC_QUAL_CHECK: +$ cc_qual = false +$ set message/nofac/noident/nosever/notext +$ cc 'ccqual' 'tmpnam' +$ if $status then cc_qual = true +$ set message/fac/ident/sever/text +$ delete/nolog 'tmpnam'.*;* +$ if cc_qual then ccopt = ccopt + ccqual +$ return +$!----------------------------------------------------------------------------- +$! +$ compileit : subroutine +$ ploc = f$locate("]",p1) +$! filnam = p1 +$ if ploc .lt. f$length(p1) +$ then +$ objdir = f$extract(0, ploc+1, p1) +$ write optf p1 +$ else +$ objdir := [] +$ write optf objdir+p1 +$ endif +$ cc'ccopt'/nested=none/include=([],[.src],[.lib])/obj='objdir' - + /define=("allocated_variable_expand_for_file=alloc_var_expand_for_file",- + "unlink=remove","HAVE_CONFIG_H","VMS") - + 'p1' +$ exit +$ endsubroutine : compileit +$! +$!----------------------------------------------------------------------------- +$!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 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 . diff --git a/local/recipes/dev/gnu-make/source/mk/Amiga.mk b/local/recipes/dev/gnu-make/source/mk/Amiga.mk new file mode 100644 index 0000000000..1f2afe33d3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/mk/Amiga.mk @@ -0,0 +1,45 @@ +# GNU -*-Makefile-*- to build GNU make on Amiga +# +# Amiga overrides for use with Basic.mk. +# +# 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 +# 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 . + +CC = sc +LD = $(CC) Link + +MKDIR.cmd = makedir $1 +RM.cmd = delete $1 +CP.cmd = copy $1 To $2 + +CPPFLAGS = +CFLAGS = +LDFLAGS = + +prog_SOURCES += $(alloca_SOURCES) $(loadavg_SOURCES) $(glob_SOURCES) $(amiga_SOURCES) + +BUILT_SOURCES += $(lib)alloca.h $(lib)fnmatch.h $(lib)glob.h + +extra_CPPFLAGS = IDir $(OUTDIR)src IDir $(SRCDIR)/src IDir $(OUTDIR)lib IDir $(SRCDIR)/lib + +C_SOURCE = +OUTPUT_OPTION = +LDFLAGS = From LIB:cres.o +LDLIBS = Lib LIB:sc.lib LIB:amiga.lib +LINK_OUTPUT = To $@ + +$(OUTDIR)src/config.h: $(SRCDIR)/src/config.ami + $(call CP.cmd,$<,$@) diff --git a/local/recipes/dev/gnu-make/source/mk/VMS.mk b/local/recipes/dev/gnu-make/source/mk/VMS.mk new file mode 100644 index 0000000000..33ef306921 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/mk/VMS.mk @@ -0,0 +1,97 @@ +# GNU -*-Makefile-*- to build GNU make on VMS +# +# VMS overrides for use with Basic.mk. +# +# 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 +# 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 . + +src = [.src] +lib = [.lib] +SRCDIR = [] + +OBJEXT = .obj +EXEEXT = .exe + +e = +s = $e $e +c = , + +defs = HAVE_CONFIG_H + +ifeq ($(CC),cc) +defs += VMS unlink=remove allocated_variable_expand_for_file=alloc_var_expand_for_file +else +defs += GCC_IS_NATIVE +ifeq ($(ARCH),VAX) +defs += VAX +endif +endif + +extra_CPPFLAGS = /define=($(subst $s,$c,$(patsubst %,"%",$(defs)))) + +cinclude = /nested=none/include=($(src),$(lib)) +ifeq ($(CC),cc) +cprefix = /prefix=(all,except=(glob,globfree)) +cwarn = /standard=relaxed/warn=(disable=questcompare) +endif + +extra_CFLAGS = $(cinclude)$(cprefix)$(cwarn) + +#extra_LDFLAGS = /deb +extra_LDFLAGS = + +# If your system needs extra libraries loaded in, define them here. +# System V probably need -lPW for alloca. +# if on vax, uncomment the following line +#LDLIBS = ,c.opt/opt +ifeq ($(CC),cc) +#LDLIBS =,sys$$library:vaxcrtl.olb/lib +else +LDLIBS =,gnu_cc_library:libgcc.olb/lib +endif + +# If your system doesn't have alloca, or the one provided is bad, +# uncomment this +#ALLOCA = $(alloca_SOURCES) + +# If your system doesn't have alloca.h, or the one provided is bad, +# uncomment this +#BUILT_SOURCES += $(lib)alloca.h + +prog_SOURCES += $(ALLOCA) $(glob_SOURCES) $(vms_SOURCES) + +BUILT_SOURCES += $(lib)fnmatch.h $(lib)glob.h + +COMPILE.cmd = $(CC) $(extra_CFLAGS)$(CFLAGS)/obj=$@ $(extra_CPPFLAGS)$(CPPFLAGS) $1 + +LINK.cmd = $(LD)$(extra_LDFLAGS)$(LDFLAGS)/exe=$@ $(subst $s,$c,$1)$(LDLIBS) + +# Don't know how to do this +CHECK.cmd = + +MKDIR.cmd = create/dir $1 +RM.cmd = delete $1 +CP.cmd = copy $1 $2 + +define CLEANSPACE + -purge [...] + -delete $(PROG); + -delete $(src)*.$(OBJEXT); +endef + + +$(OUTDIR)$(src)config.h: $(SRCDIR)$(src)config.h-vms + $(call CP.cmd,$<,$@) diff --git a/local/recipes/dev/gnu-make/source/mk/Windows32.mk b/local/recipes/dev/gnu-make/source/mk/Windows32.mk new file mode 100644 index 0000000000..310fe7b8e0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/mk/Windows32.mk @@ -0,0 +1,122 @@ +# GNU -*-Makefile-*- to build GNU make on Windows +# +# Windows overrides for use with Basic.mk. +# +# 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 +# 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 . + +# TARGET_TYPE can be either "release" or "debug" +TARGET_TYPE = release + +# TOOLCHAIN can be either "msvc" or "gcc" +TOOLCHAIN = msvc + +# Translate a POSIX path into a Windows path. Don't bother with drives. +# Used only inside recipes, with DOS/CMD tools that require it. +P2W = $(subst /,\,$1) + +prog_SOURCES += $(loadavg_SOURCES) $(glob_SOURCES) $(w32_SOURCES) + +BUILT_SOURCES += $(lib)alloca.h $(lib)fnmatch.h $(lib)glob.h + +w32_LIBS = kernel32 user32 gdi32 winspool comdlg32 advapi32 shell32 ole32 \ + oleaut32 uuid odbc32 odbccp32 + +CPPFLAGS = +CFLAGS = +LDFLAGS = + +# --- Visual Studio +msvc_CC = cl.exe +msvc_LD = link.exe + +msvc_CPPFLAGS = /DHAVE_CONFIG_H /DWINDOWS32 /DWIN32 /D_CONSOLE +msvc_CPPFLAGS += /I$(OUTDIR)src /I$(SRCDIR)/src /I$(SRCDIR)/src/w32/include /I$(OUTDIR)lib /I$(SRCDIR)/lib + +msvc_CFLAGS = /nologo /MT /W4 /EHsc +msvc_CFLAGS += /FR$(OUTDIR) /Fp$(BASE_PROG).pch /Fd$(BASE_PROG).pdb + +msvc_LDFLAGS = /nologo /SUBSYSTEM:console /PDB:$(BASE_PROG).pdb + +msvc_LDLIBS = $(addsuffix .lib,$(w32_LIBS)) + +msvc_C_SOURCE = /c +msvc_OUTPUT_OPTION = /Fo$@ +msvc_LINK_OUTPUT = /OUT:$@ + +release_msvc_OUTDIR = ./WinRel/ +release_msvc_CPPFLAGS = /D NDEBUG +release_msvc_CFLAGS = /O2 + +debug_msvc_OUTDIR = ./WinDebug/ +debug_msvc_CPPFLAGS = /D _DEBUG +debug_msvc_CFLAGS = /Zi /Od +debug_msvc_LDFLAGS = /DEBUG + +# --- GCC +gcc_CC = gcc +gcc_LD = $(gcc_CC) + +release_gcc_OUTDIR = ./GccRel/ +debug_gcc_OUTDIR = ./GccDebug/ + +gcc_CPPFLAGS = -DHAVE_CONFIG_H -I$(OUTDIR)src -I$(SRCDIR)/src -I$(SRCDIR)/src/w32/include -I$(OUTDIR)lib -I$(SRCDIR)/lib +gcc_CFLAGS = -mthreads -Wall -std=gnu99 -gdwarf-2 -g3 +gcc_LDFLAGS = -mthreads -gdwarf-2 -g3 +gcc_LDLIBS = $(addprefix -l,$(w32_libs)) + +gcc_C_SOURCE = -c +gcc_OUTPUT_OPTION = -o $@ +gcc_LINK_OUTPUT = -o $@ + +debug_gcc_CFLAGS = -O0 +release_gcc_CFLAGS = -O2 + +# --- + +LINK.cmd = $(LD) $(extra_LDFLAGS) $(LDFLAGS) $(TARGET_ARCH) $1 $(LDLIBS) $(LINK_OUTPUT) + +CHECK.cmd = cmd /c cd tests \& .\run_make_tests.bat -make ../$(PROG) + +MKDIR.cmd = cmd /c mkdir $(call P2W,$1) +RM.cmd = cmd /c del /F /Q $(call P2W,$1) +CP.cmd = cmd /c copy /Y $(call P2W,$1 $2) + +CC = $($(TOOLCHAIN)_CC) +LD = $($(TOOLCHAIN)_LD) + +C_SOURCE = $($(TOOLCHAIN)_C_SOURCE) +OUTPUT_OPTION = $($(TOOLCHAIN)_OUTPUT_OPTION) +LINK_OUTPUT = $($(TOOLCHAIN)_LINK_OUTPUT) + +OUTDIR = $($(TARGET_TYPE)_$(TOOLCHAIN)_OUTDIR) + +OBJEXT = obj +EXEEXT = .exe + +_CUSTOM = $($(TOOLCHAIN)_$1) $($(TARGET_TYPE)_$1) $($(TARGET_TYPE)_$(TOOLCHAIN)_$1) + +# I'm not sure why this builds gnumake rather than make...? +PROG = $(OUTDIR)gnumake$(EXEEXT) +BASE_PROG = $(basename $(PROG)) + +extra_CPPFLAGS = $(call _CUSTOM,CPPFLAGS) +extra_CFLAGS = $(call _CUSTOM,CFLAGS) +extra_LDFLAGS = $(call _CUSTOM,LDFLAGS) +LDLIBS = $(call _CUSTOM,LDLIBS) + +$(OUTDIR)src/config.h: $(SRCDIR)/src/config.h.W32 + $(call CP.cmd,$<,$@) diff --git a/local/recipes/dev/gnu-make/source/mk/msdosdjgpp.mk b/local/recipes/dev/gnu-make/source/mk/msdosdjgpp.mk new file mode 100644 index 0000000000..98bfe0d5bb --- /dev/null +++ b/local/recipes/dev/gnu-make/source/mk/msdosdjgpp.mk @@ -0,0 +1,43 @@ +# GNU -*-Makefile-*- to build GNU make on MS-DOS with DJGPP +# +# MS-DOS overrides for use with Basic.mk. +# +# 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 +# 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 . + +OBJEXT = o +EXEEXT = .exe + +CC = gcc + +# Translate a POSIX path into a Windows path. Don't bother with drives. +# Used only inside recipes, with DOS/CMD tools that require it. +P2W = $(subst /,\,$1) + +prog_SOURCES += $(loadavg_SOURCES) $(glob_SOURCES) + +BUILT_SOURCES += $(lib)alloca.h $(lib)fnmatch.h $(lib)glob.h + +INCLUDEDIR = c:/djgpp/include +LIBDIR = c:/djgpp/lib +LOCALEDIR = c:/djgpp/share + +MKDIR.cmd = command.com /c mkdir $(call P2W,$1) +RM.cmd = command.com /c del /F /Q $(call P2W,$1) +CP.cmd = command.com /c copy /Y $(call P2W,$1 $2) + +$(OUTDIR)src/config.h: $(SRCDIR)/src/configh.dos + $(call CP.cmd,$<,$@) diff --git a/local/recipes/dev/gnu-make/source/po/LINGUAS b/local/recipes/dev/gnu-make/source/po/LINGUAS new file mode 100644 index 0000000000..64f533bfe7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/LINGUAS @@ -0,0 +1,30 @@ +be +bg +cs +da +de +es +fi +fr +ga +gl +he +hr +id +it +ja +ko +lt +nl +pl +pt +pt_BR +ro +ru +sr +sv +tr +uk +vi +zh_CN +zh_TW diff --git a/local/recipes/dev/gnu-make/source/po/Makefile.in.in b/local/recipes/dev/gnu-make/source/po/Makefile.in.in new file mode 100644 index 0000000000..65184f65c7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/Makefile.in.in @@ -0,0 +1,475 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. +# +# Origin: gettext-0.19 +GETTEXT_MACRO_VERSION = 0.19 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SED = @SED@ +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +GMSGFMT_ = @GMSGFMT@ +GMSGFMT_no = @GMSGFMT@ +GMSGFMT_yes = @GMSGFMT_015@ +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +MSGFMT_ = @MSGFMT@ +MSGFMT_no = @MSGFMT@ +MSGFMT_yes = @MSGFMT_015@ +MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = @XGETTEXT@ +XGETTEXT_no = @XGETTEXT@ +XGETTEXT_yes = @XGETTEXT_015@ +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot +POFILESDEPS_yes = $(POFILESDEPS_) +POFILESDEPS_no = +POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT)) + +DISTFILESDEPS_ = update-po +DISTFILESDEPS_yes = $(DISTFILESDEPS_) +DISTFILESDEPS_no = +DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO)) + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: all-@USE_NLS@ + +all-yes: stamp-po +all-no: + +# Ensure that the gettext macros and this Makefile.in.in are in sync. +CHECK_MACRO_VERSION = \ + test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ + || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ + exit 1; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + @$(CHECK_MACRO_VERSION) + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +# The determination of whether the package xyz is a GNU one is based on the +# heuristic whether some file in the top level directory mentions "GNU xyz". +# If GNU 'find' is available, we avoid grepping through monster files. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + package_gnu="$(PACKAGE_GNU)"; \ + test -n "$$package_gnu" || { \ + if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ + LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \ + -size -10000000c -exec grep 'GNU @PACKAGE@' \ + /dev/null '{}' ';' 2>/dev/null; \ + else \ + LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ + fi; \ + } | grep -v 'libtool:' >/dev/null; then \ + package_gnu=yes; \ + else \ + package_gnu=no; \ + fi; \ + }; \ + if test "$$package_gnu" = "yes"; then \ + package_prefix='GNU '; \ + else \ + package_prefix=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_prefix}@PACKAGE@" \ + --package-version='@VERSION@' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(POFILESDEPS) + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) \ + && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ + esac; \ + }; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS) + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + esac; \ + }; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +# Recreate Makefile by invoking config.status. Explicitly invoke the shell, +# because execution permission bits may not work on the current file system. +# Use @SHELL@, which is the shell determined by autoconf for the use by its +# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && @SHELL@ ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/local/recipes/dev/gnu-make/source/po/Makevars b/local/recipes/dev/gnu-make/source/po/Makevars new file mode 100644 index 0000000000..f7abd7b01e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/Makevars @@ -0,0 +1,87 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ \ + \ + --from-code=UTF-8\ + --flag=_:1:pass-c-format\ + --flag=N_:1:pass-c-format\ + --flag=DB:2:c-format --flag=DBF:2:c-format --flag=DBS:2:c-format\ + --flag=O:3:c-format --flag=OSN:3:c-format --flag=ONS:3:c-format\ + --flag=OS:3:c-format --flag=OSS:3:c-format --flag=OSSS:3:c-format\ + --flag=ON:3:c-format --flag=ONN:3:c-format\ + $${end_of_xgettext_options+} + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Free Software Foundation, Inc. + +# This tells whether or not to prepend "GNU " prefix to the package +# name that gets inserted into the header of the $(DOMAIN).pot file. +# Possible values are "yes", "no", or empty. If it is empty, try to +# detect it automatically by scanning the files in $(top_srcdir) for +# "GNU packagename" string. +PACKAGE_GNU = + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = bug-make@gnu.org + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = + +# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' +# context. Possible values are "yes" and "no". Set this to yes if the +# package uses functions taking also a message context, like pgettext(), or +# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. +USE_MSGCTXT = no + +# These options get passed to msgmerge. +# Useful options are in particular: +# --previous to keep previous msgids of translated messages, +# --quiet to reduce the verbosity. +MSGMERGE_OPTIONS = + +# These options get passed to msginit. +# If you want to disable line wrapping when writing PO files, add +# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and +# MSGINIT_OPTIONS. +MSGINIT_OPTIONS = + +# This tells whether or not to regenerate a PO file when $(DOMAIN).pot +# has changed. Possible values are "yes" and "no". Set this to no if +# the POT file is checked in the repository and the version control +# program ignores timestamps. +PO_DEPENDS_ON_POT = yes + +# This tells whether or not to forcibly update $(DOMAIN).pot and +# regenerate PO files on "make dist". Possible values are "yes" and +# "no". Set this to no if the POT file and PO files are maintained +# externally. +DIST_DEPENDS_ON_UPDATE_PO = yes diff --git a/local/recipes/dev/gnu-make/source/po/Makevars.template b/local/recipes/dev/gnu-make/source/po/Makevars.template new file mode 100644 index 0000000000..0648ec7590 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/Makevars.template @@ -0,0 +1,78 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Free Software Foundation, Inc. + +# This tells whether or not to prepend "GNU " prefix to the package +# name that gets inserted into the header of the $(DOMAIN).pot file. +# Possible values are "yes", "no", or empty. If it is empty, try to +# detect it automatically by scanning the files in $(top_srcdir) for +# "GNU packagename" string. +PACKAGE_GNU = + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = + +# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' +# context. Possible values are "yes" and "no". Set this to yes if the +# package uses functions taking also a message context, like pgettext(), or +# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. +USE_MSGCTXT = no + +# These options get passed to msgmerge. +# Useful options are in particular: +# --previous to keep previous msgids of translated messages, +# --quiet to reduce the verbosity. +MSGMERGE_OPTIONS = + +# These options get passed to msginit. +# If you want to disable line wrapping when writing PO files, add +# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and +# MSGINIT_OPTIONS. +MSGINIT_OPTIONS = + +# This tells whether or not to regenerate a PO file when $(DOMAIN).pot +# has changed. Possible values are "yes" and "no". Set this to no if +# the POT file is checked in the repository and the version control +# program ignores timestamps. +PO_DEPENDS_ON_POT = yes + +# This tells whether or not to forcibly update $(DOMAIN).pot and +# regenerate PO files on "make dist". Possible values are "yes" and +# "no". Set this to no if the POT file and PO files are maintained +# externally. +DIST_DEPENDS_ON_UPDATE_PO = yes diff --git a/local/recipes/dev/gnu-make/source/po/POTFILES.in b/local/recipes/dev/gnu-make/source/po/POTFILES.in new file mode 100644 index 0000000000..040d60f805 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/POTFILES.in @@ -0,0 +1,48 @@ +# List of source files containing translatable strings. +# 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 +# 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 . + +src/ar.c +src/arscan.c +src/commands.c +src/dir.c +src/expand.c +src/file.c +src/function.c +src/getopt.c +src/guile.c +src/hash.c +src/implicit.c +src/job.c +src/load.c +src/main.c +src/misc.c +src/output.c +src/output.h +src/posixos.c +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 +src/variable.h +src/vmsfunctions.c +src/vmsjobs.c +src/vpath.c +src/w32/w32os.c diff --git a/local/recipes/dev/gnu-make/source/po/Rules-quot b/local/recipes/dev/gnu-make/source/po/Rules-quot new file mode 100644 index 0000000000..9dc963076f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/Rules-quot @@ -0,0 +1,58 @@ +# This file, Rules-quot, can be copied and used freely without restrictions. +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-create: + $(MAKE) en@quot.po-update +en@boldquot.po-create: + $(MAKE) en@boldquot.po-update + +en@quot.po-update: en@quot.po-update-en +en@boldquot.po-update: en@boldquot.po-update-en + +.insert-header.po-update-en: + @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + ll=`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=C; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) $(MSGINIT_OPTIONS) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null \ + | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \ + { case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \ + $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \ + ;; \ + *) \ + $(MSGFILTER) `echo $$lang | sed -e 's/.*@//'` \ + ;; \ + esac } 2>/dev/null > $$tmpdir/$$lang.new.po \ + ; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff --git a/local/recipes/dev/gnu-make/source/po/be.gmo b/local/recipes/dev/gnu-make/source/po/be.gmo new file mode 100644 index 0000000000000000000000000000000000000000..2fa713b3238195483e9271a387cffcdebff99bc3 GIT binary patch literal 6136 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 literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/be.po b/local/recipes/dev/gnu-make/source/po/be.po new file mode 100644 index 0000000000..9f9803f82b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/be.po @@ -0,0 +1,2425 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2002, 2003 Free Software Foundation, Inc. +# Ales Nyakhaychyk , 2002, 2003. +# +msgid "" +msgstr "" +"Project-Id-Version: make 3.80\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2003-10-21 11:50+0300\n" +"Last-Translator: Ales Nyakhaychyk \n" +"Language-Team: Belarusian \n" +"Language: be\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: KBabel 0.9.6\n" + +#: src/ar.c:47 +#, fuzzy, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "Ñпроба выкарыÑтаць непадтрымліваемую мажліваÑьць: \"%s\"" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "дакрананьне да ўдзельніку архіва недаÑтупна на VMS" + +#: src/ar.c:151 +#, fuzzy, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: архіў \"%s\" Ð½Ñ Ð¹Ñнуе" + +#: src/ar.c:154 +#, fuzzy, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: \"%s\" - гÑта не Ñ€ÑчаіÑны архіў" + +#: src/ar.c:161 +#, fuzzy, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: удзельнік \"%s\" Ð½Ñ Ð¹Ñнуе Ñž \"%s\"" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (назва муÑіла быць абрÑзана)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Дата %s" + +#: 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:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "" + +#: src/commands.c:647 +#, fuzzy, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] ВыдалÑецца файл \"%s\"" + +#: src/commands.c:649 +#, fuzzy, c-format +msgid "*** Deleting file '%s'" +msgstr "*** ВыдалÑецца файл \"%s\"" + +#: src/commands.c:685 +#, fuzzy +msgid "# recipe to execute" +msgstr "# загады Ð´Ð»Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½ÑŒÐ½Ñ" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (убудаваны):" + +#: src/commands.c:690 +#, fuzzy, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (з\"%s\", радок %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# ТÑчкі\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "" + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "" + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "" + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Ðе" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " файлаў, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "не" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr "" + +#: src/dir.c:1180 +msgid " so far." +msgstr " так далёка." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr "" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "" + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "" + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" + +#: src/file.c:407 +#, fuzzy, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** ВыдалÑецца файл \"%s\"" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "ВыдалÑюцца Ð¿Ñ€Ð°Ð¼ÐµÐ¶ÐºÐ°Ð²Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: адбітак чаÑу па-за дапушчальнымі межамі, падÑтаўлÑецца %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# ÐÑ Ð¼Ñта:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "" + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "" + +#: src/file.c:1098 +#, fuzzy +msgid "# Command line target." +msgstr "загадны радок" + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "" + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "" + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "" + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "" + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Ð§Ð°Ñ Ð·ÑŒÐ¼ÑÐ½ÐµÐ½ÑŒÐ½Ñ Ð½Ñ–ÐºÐ¾Ð»Ñ– не правÑраўÑÑ." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Файл Ð½Ñ Ð¹Ñнуе." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Файл вельмі Ñтары." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# ÐпошнÑе зьмÑненьне %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Файл быў абноўлены." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Файл Ð½Ñ Ð±Ñ‹Ñž абноўлены." + +#: src/file.c:1139 +#, fuzzy +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Загады, што выконваюцца зараз (ГЭТР- ПÐМЫЛКÐ)." + +#: src/file.c:1142 +#, fuzzy +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Загады, што выконваюцца зараз (ГЭТР- ПÐМЫЛКÐ)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# ПаÑьпÑхова абноўлены." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "" + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "" + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Файлы" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "" + +#: 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:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe (): памылка Ñž process_init_fd()\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe (): памылка Ñž process_init_fd()\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "памылка Ñž CreatePipe() (e=%d)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "" + +#: src/function.c:2347 src/function.c:2383 +#, fuzzy, c-format +msgid "open: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2360 +#, fuzzy, c-format +msgid "write: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, fuzzy, c-format +msgid "close: %s: %s" +msgstr "%s%s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "" + +#: src/function.c:2397 +#, fuzzy, c-format +msgid "read: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2409 +#, fuzzy, c-format +msgid "file: invalid file operation: %s" +msgstr "%s: нерÑчаіÑны выбар -- %c.\n" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "" + +#: src/function.c:2539 +#, fuzzy, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "ÐÑ Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ð° Ð´Ð»Ñ Ð³Ñтае плÑтформы: Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ \"%s\"" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "" + +#: src/getopt.c:659 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: выбар \"%s\" - неадназначы.\n" + +#: src/getopt.c:683 +#, fuzzy, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: выбар \"--%s\" не дазвалÑе довад.\n" + +#: src/getopt.c:688 +#, fuzzy, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: выбар \"%c%s\" не дазвалÑе довад.\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, fuzzy, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: выбар \"%s\" патрабуе довад.\n" + +#: src/getopt.c:734 +#, fuzzy, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: нераÑпазнаны выбар \"--%s\".\n" + +#: src/getopt.c:738 +#, fuzzy, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: нераÑпазнаны выбар \"%c%s\".\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: недапушчальны выбар -- %c.\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: нерÑчаіÑны выбар -- %c.\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: выбар патрабуе довад -- %c.\n" + +#: src/getopt.c:844 +#, fuzzy, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: выбар \"-W %s\" - неадназначын.\n" + +#: src/getopt.c:862 +#, fuzzy, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: выбар \"-W %s\" не дазвалÑе довад.\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "" + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "" + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "" + +#: src/implicit.c:326 +#, c-format +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:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "" + +#: 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 "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 "ВыдалÑюцца Ð¿Ñ€Ð°Ð¼ÐµÐ¶ÐºÐ°Ð²Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹...\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 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "fwrite (чаÑовы файл)" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr "" + +#: src/job.c:557 +msgid " (ignored)" +msgstr "" + +#: src/job.c:561 src/job.c:1900 +#, fuzzy +msgid "" +msgstr " (убудаваны):" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "*** [%s] Памылка %d" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Чакаюцца Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ñ†Ñ‹...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr "" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "" + +#: src/job.c:1909 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s ÐÑма правіла каб зрабіць мÑту \"%s\", патрÑбную Ð´Ð»Ñ \"%s\"%s" + +#: 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:2106 +msgid "cannot enforce load limit: " +msgstr "" + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "" + +#: src/job.c:2869 +#, fuzzy, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL зьменена (раней \"%s\", зараз \"%s\")" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: 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" +msgstr "ÐŸÐ°Ñ€Ð°Ð»ÐµÐ»ÑŒÐ½Ñ Ð¿Ñ€Ð°Ñ†Ñ‹ (-j) не падтрымліваюцца на гÑтае плÑтхорме." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Выбары:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr "" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr "" +" -h, --help Друкуе гÑтае паведамленьне й выходзіць.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" + +#: 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: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:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" + +#: 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: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:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" + +#: 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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Выключае -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" + +#: src/main.c:384 +#, fuzzy +msgid " --trace Print tracing information.\n" +msgstr "" +" -h, --help Друкуе гÑтае паведамленьне й выходзіць.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Друкуе бÑгучую Ñ‚Ñчку.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" + +#: 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:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "ВыкарыÑтаньне: %s [выбары] [мÑта] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"ГÑта праграма пабудавана Ð´Ð»Ñ %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"ГÑта праграма падубавана Ð´Ð»Ñ %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "ПаведамлÑйце пра памылкі на .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" + +#: 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:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile Ñа Ñтандартнага ўводу зададзены двойчы." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (чаÑовы файл)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "ÐŸÐ°Ñ€Ð°Ð»ÐµÐ»ÑŒÐ½Ñ Ð¿Ñ€Ð°Ñ†Ñ‹ (-j) не падтрымліваюцца на гÑтае плÑтхорме." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "" + +#: 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: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:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" + +#: 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:2548 +#, fuzzy, c-format +msgid "Included makefile '%s' was not found." +msgstr "Makefile \"%s\" Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½" + +#: src/main.c:2552 +#, fuzzy, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile \"%s\" Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "ÐÑма мÑÑ‚" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" + +#: src/main.c:3186 +#, fuzzy, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "выбар \"-%c\" патрабуе Ñтаноўчы цÑлы довад" + +#: src/main.c:3267 +#, fuzzy, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "выбар \"-%c\" патрабуе Ñтаноўчы цÑлы довад" + +#: src/main.c:3652 +#, fuzzy, c-format +msgid "%sBuilt for %s\n" +msgstr "" +"\n" +"ГÑта праграма пабудавана Ð´Ð»Ñ %s\n" + +#: src/main.c:3654 +#, fuzzy, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "" +"\n" +"ГÑта праграма падубавана Ð´Ð»Ñ %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, fuzzy, c-format +msgid "%s value %s: not a directory" +msgstr "%s: выхад зь невÑдомае Ñ‚Ñчкі" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "fwrite (чаÑовы файл)" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (чаÑовы файл): " + +#: 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:97 +#, fuzzy, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: выхад зь невÑдомае Ñ‚Ñчкі" + +#: src/output.c:100 +#, fuzzy, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: уваход у Ñ‚Ñчку \"%s\"\n" + +#: src/output.c:102 +#, fuzzy, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: выхад з Ñ‚Ñчкі \"%s\"\n" + +#: src/output.c:106 +#, fuzzy, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: уваход у невÑдомую Ñ‚Ñчку" + +#: src/output.c:108 +#, fuzzy, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: выхад зь невÑдомае Ñ‚Ñчкі" + +#: src/output.c:111 +#, fuzzy, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: уваход у Ñ‚Ñчку \"%s\"\n" + +#: src/output.c:113 +#, fuzzy, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: выхад з Ñ‚Ñчкі \"%s\"\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr "" + +#: 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 "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "Ñтвараецца трубаправод прац" + +#: src/posixos.c:201 src/posixos.c:434 +#, fuzzy +msgid "duping jobs pipe" +msgstr "Ñтвараецца трубаправод прац" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +#, fuzzy +msgid "pselect jobs pipe" +msgstr "Ñтвараецца трубаправод прац" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "" + +#: 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:330 +#, fuzzy, c-format +msgid "Reading makefile '%s'" +msgstr "Чытаецца make-файл \"%s\"" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (нÑма дапомнае мÑты)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (пошук шлÑху)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr "" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr "" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "" + +#: src/read.c:1053 +#, fuzzy, c-format +msgid "missing rule before recipe" +msgstr "прапушчана правіла перад загадамі" + +#: src/read.c:1154 +#, fuzzy, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr " (вы маеце на ўвазе TAB замеÑÑ‚ 8 прагалаў?)" + +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator" +msgstr "прапушчан падзÑлÑльнік %s" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "" + +#: src/read.c:1349 +#, fuzzy, c-format +msgid "missing 'endif'" +msgstr "прапушчаны \"endif\"" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "" + +#: src/read.c:1448 +#, fuzzy, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "прапушчаны \"endef\", незавершаны \"define\"" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "" + +#: src/read.c:1549 +#, fuzzy, c-format +msgid "extraneous '%s'" +msgstr "зьнешні \"%s\"" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "" + +#: 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:255 +#, fuzzy, c-format +msgid "'%s' is up to date." +msgstr "\"%s\" - ÑаÑтарÑл(а)." + +#: src/remake.c:350 +#, fuzzy, c-format +msgid "Pruning file '%s'.\n" +msgstr "УÑÑ‘ ÑÑˆÑ Ð°Ð±Ð½Ð°ÑžÐ»Ñецца файл \"%s\".\n" + +#: 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:426 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sÐÑма правіла каб зрабіць мÑту \"%s\"%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "" + +#: src/remake.c:471 +#, fuzzy, c-format +msgid "File '%s' was considered already.\n" +msgstr "Файл \"%s\" ужо быў разгледжаны.\n" + +#: src/remake.c:481 +#, fuzzy, c-format +msgid "Still updating file '%s'.\n" +msgstr "УÑÑ‘ ÑÑˆÑ Ð°Ð±Ð½Ð°ÑžÐ»Ñецца файл \"%s\".\n" + +#: src/remake.c:484 +#, fuzzy, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Скончана абнаўленьне файла \"%s\".\n" + +#: src/remake.c:513 +#, fuzzy, c-format +msgid "File '%s' does not exist.\n" +msgstr "Файл \"%s\" Ð½Ñ Ð¹Ñнуе.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "" + +#: src/remake.c:737 +#, fuzzy, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Скончана абнаўленьне файла \"%s\".\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "" + +#: src/remake.c:757 +#, fuzzy, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Скончана абнаўленьне файла \"%s\".\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "" + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "" + +#: src/remake.c:819 +#, fuzzy, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Файл \"%s\" Ð½Ñ Ð¹Ñнуе.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "" + +#: src/remake.c:865 +#, fuzzy, c-format +msgid "No need to remake target '%s'" +msgstr "%sÐÑма правіла каб зрабіць мÑту \"%s\"%s" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "" + +#: src/remake.c:891 +#, fuzzy, c-format +msgid "Must remake target '%s'.\n" +msgstr "%sÐÑма правіла каб зрабіць мÑту \"%s\"%s" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr "" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "" + +#: src/remake.c:913 +#, fuzzy, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "%sÐÑма правіла каб зрабіць мÑту \"%s\"%s" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "" + +#: src/remake.c:1118 +#, fuzzy, c-format +msgid "Using default commands for '%s'.\n" +msgstr "ÐевÑдомы ўбудаваны загад \"%s\".\n" + +#: 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:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" + +#: 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 "невÑдомы Ñыгнал" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "" + +#: src/signame.c:98 +msgid "Quit" +msgstr "" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "ÐÐµÐ´Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ñ–Ð½ÑтрукцыÑ" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Забіты" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Памылка шыны" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "ДрÑнны ÑÑ‹ÑÑ‚Ñмны выклік" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Зламаны трубаправод" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Завершаны" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Спынен" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Спынен (tty увод)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Спынен (вывад на tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Спынена (Ñыгнал)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Ðкно зьменена" + +#: src/signame.c:189 +msgid "Continued" +msgstr "" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "магчым У/Ð’" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Сыгнал пагрозы" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Запыт аб зьвеÑтках" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" + +#: src/variable.c:1786 +msgid "automatic" +msgstr "аўтаматычна" + +#: src/variable.c:1789 +msgid "default" +msgstr "дапомны" + +#: src/variable.c:1792 +msgid "environment" +msgstr "аÑÑродзьдзе" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "make-файл" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "" + +#: src/variable.c:1801 +msgid "command line" +msgstr "загадны радок" + +#: src/variable.c:1804 +#, fuzzy +msgid "'override' directive" +msgstr "дырÑктыва \"override\"" + +#: src/variable.c:1814 +#, fuzzy, c-format +msgid " (from '%s', line %lu)" +msgstr " (з \"%s\", радок %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# ПераменныÑ\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" + +#: src/variable.h:237 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "Увага! ÐÑÐ²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°Ñ Ð¿ÐµÑ€Ð°Ð¼ÐµÐ½Ð½Ð°Ñ \"%.*s\"" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "" + +#: src/vmsjobs.c:1281 +#, fuzzy, c-format +msgid "Append output to %s\n" +msgstr "Перанакіраваны вывад у %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" + +#: src/vpath.c:617 +#, fuzzy +msgid "# No 'vpath' search paths." +msgstr " (пошук шлÑху)" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: 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" + +#~ msgid "Error, empty command\n" +#~ msgstr "Памылка! Парожні загад.\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Перанакіраваны ўвод з %s\n" + +#~ msgid "%s: Command not found" +#~ msgstr "%s: загад не адшуканы" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s Ñпынена на 30 ÑÑкундаў..." + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Ðе задавайце -j ці --jobs, калі sh.exe недаÑтупны." + +#~ 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 "" +#~ "%s ГÑта вольнае праграмнае забеÑьпÑчÑньне; глÑдзіце зыходны код длÑ\n" +#~ "%sÐ¿Ð°Ð³Ð°Ð´Ð½ÐµÐ½ÑŒÐ½Ñ Ð°Ð± раÑпаўÑюджваньні. ÐÑ Ð¹Ñнуе ÐІЯКÐЕ гарантыі, нават аб\n" +#~ "%sмагчымаÑьці выкарыÑÑ‚Ð½ÑŒÐ½Ñ Ð·ÑŒ Ñкой небудзь мÑтай.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° %d" + +#~ 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\"" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "нÑма назвы файла Ð´Ð»Ñ \"%sinclude\"" + +#~ msgid "Warning: File `%s' has modification time in the future" +#~ msgstr "Увага! Файл \"%s\" мае Ñ‡Ð°Ñ Ð·ÑŒÐ¼ÑненьнÑ, Ñкі ÑˆÑ‡Ñ Ð½Ðµ надышоў." + +#~ msgid " terminal." +#~ msgstr " Ñ‚Ñрмінал." + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# ÐÑма файлаў." + +#~ msgid "DIRECTORY" +#~ msgstr "ТЭЧКÐ" + +#~ msgid "FILE" +#~ msgstr "ФÐЙЛ" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "Чытае ФÐЙЛ Ñк make-файл" + +#~ msgid "Entering" +#~ msgstr "Уваход у" + +#~ msgid "Leaving" +#~ msgstr "выхад з" + +#~ msgid "# No variables." +#~ msgstr "# ÐÑма пераменных." diff --git a/local/recipes/dev/gnu-make/source/po/bg.gmo b/local/recipes/dev/gnu-make/source/po/bg.gmo new file mode 100644 index 0000000000000000000000000000000000000000..f1916d104e084439992a2044042ef1573121495a GIT binary patch literal 65584 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 buVS}J0K#M8c!(@BikuWz$PzRoO?CW#mb5OW literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/bg.po b/local/recipes/dev/gnu-make/source/po/bg.po new file mode 100644 index 0000000000..1f9b26dc70 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/bg.po @@ -0,0 +1,2495 @@ +# Bulgarian translation of make po-file. +# Copyright (C) 2019, 2020, 2022 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Alexander Shopov , 2019, 2020, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: 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 10:55+0200\n" +"Last-Translator: Alexander Shopov \n" +"Language-Team: Bulgarian \n" +"Language: bg\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" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "опит за ползване на „%s“, което не Ñе поддържа" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "" +"обновÑването на информациÑта чрез „touch“ на член на архив не Ñе поддържа " +"под VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "„touch“: архивът „%s“ не ÑъщеÑтвува" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "„touch“: „%s“ не е поддържан архив" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "„touch“: в „%2$s“ нÑма член „%1$s“" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "„touch“: неправилен изходен код от „ar_member_touch“ върху „%s“" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "„lbr$set_module()“ не може да получи Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° модула, код = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "„lbr$ini_control()“ завърши неуÑпешно Ñ ÐºÐ¾Ð´ = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "библиотеката „%s“ не може да Ñе отвори за проверката на член, код = %d" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (името може да е отÑечено)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Дата %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " ИД_П = %d, ИД_ГР = %d, режим = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Прекалено много редове в рецептата (макÑимумът е %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "••• ПрекъÑване.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "••• [%s] „%s“ може да е фалшива чаÑÑ‚ от архив — нÑма да бъде изтрита" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "••• „%s“ може да е фалшива чаÑÑ‚ от архив — нÑма да бъде изтрита" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "••• [%s] Изтриване на файл „%s“" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "••• Изтриване на файл „%s“" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# рецепта за изпълнение" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (вградено):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (от „%s“, ред %lu)\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Директории\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# „%s“: не може да Ñе получи Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ñ‡Ñ€ÐµÐ· „stat“.\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: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:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (уÑтройÑтво %ld, i-възел %ld): не може да Ñе отвори.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (ключ %s, време на промÑна %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (уÑтройÑтво %d, i-възел [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (уÑтройÑтво %ld, i-възел %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "ÐÑма" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " файлове, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "нÑма" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " пречки" + +#: src/dir.c:1180 +msgid " so far." +msgstr " заÑега." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " пречки в %lu директории.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "незавършен указател към променлива" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Рецептата е указана за файл „%s“ при %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "Рецептата за файла „%s“ бе открита при търÑене на вградените правила." + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "но Ñега „%s“ Ñе Ñчита за ÑÑŠÑ‰Ð¸Ñ Ñ„Ð°Ð¹Ð» като „%s“." + +#: 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:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"единичното двоеточие „%s“ не може да Ñе преименува на двойно двоеточие „%s“" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" +"двойното двоеточие „%s“ не може да Ñе преименува на единично двоеточие „%s“" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "••• Изтриване на Ð¼ÐµÐ¶Ð´Ð¸Ð½Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Изтриване на междинните файлове…\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: времевото клеймо е извън диапазона, замеÑтва Ñе Ñ â€ž%s“" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ðе е цел:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Ценен файл (изиÑкване на „.PRECIOUS“)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Фалшива цел (изиÑкване на „.PHONY“)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Цел на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Стандартен, MAKEFILES или -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Вградено правило" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# ТърÑенето във вградените правила е извършено." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# ТърÑенето във вградените правила не е извършено." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Вградена/Ñтатична оÑнова на шаблон: „%s“\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Файлът е междинно изиÑкване." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Времето на промÑна не е проверено." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Файлът не ÑъщеÑтвува." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Файлът е много Ñтар." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# ПоÑледна промÑна на „%s“\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Файлът е обновен." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Файлът не е обновен." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Рецептата в момента Ñе изпълнÑва (това е ГРЕШКÐ)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Рецептата за завиÑимоÑтите в момента Ñе изпълнÑва (това е ГРЕШКÐ)" + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# УÑпешно обновено." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# ТрÑбва да бъде обновено („-q“ е зададена)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# ÐеуÑпешно обновÑване." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ðеправилна ÑтойноÑÑ‚ в член на „command_state“!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Файлове" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# ÑтатиÑтика за речника за файлове:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: полето „%s“ не е кеширано: %s" + +#: 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:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "първиÑÑ‚ аргумент към функциÑта „word“ трÑбва да е положително чиÑло" + +#: src/function.c:821 +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:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "" +"„windows32_openpipe“: неуÑпешно извикване на „DuplicateHandle(In)“ (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "" +"„windows32_openpipe“: неуÑпешно извикване на „DuplicateHandle(Err)“ (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "неуÑпешно извикване на „CreatePipe()“ failed (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "„windows32_openpipe()“: неуÑпешно извикване на „process_init_fd()“\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "ИзчиÑтване на временен файл за пакетна обработка „%s“\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "файл: липÑва име на файл" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "отварÑне: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "запазване: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "затварÑне: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "файл: прекалено много аргументи" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "четене: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "файл: неправилно дейÑтвие върху файл: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "недоÑтатъчен брой аргументи (%u) към функциÑта „%s“" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "без Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° тази платформа: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "незавършено извикване на функциÑта „%s“: липÑва „%c“" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Празно име на функциÑ" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Грешно име на функциÑ: „%s“" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Името на функциÑта е твърде дълго: „%s“" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Ðеправилен минимален брой аргументи (%u) за функциÑта „%s“" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Ðеправилен макÑимален брой аргументи (%u) за функциÑта „%s“" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: опциÑта „%s“ не е еднозначна\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: опциÑта „--%s“ не приема аргумент\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: опциÑта „%c%s“ не приема аргумент\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: опциÑта „%s“ изиÑква аргумент\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: непозната Ð¾Ð¿Ñ†Ð¸Ñ â€ž--%s“\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: непозната Ð¾Ð¿Ñ†Ð¸Ñ â€ž%c%s“\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: непозволена Ð¾Ð¿Ñ†Ð¸Ñ â€” %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: неправилна Ð¾Ð¿Ñ†Ð¸Ñ â€” „%c“\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: опциÑта изиÑква аргумент — %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: опциÑта „-W %s“ не е еднозначна\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: опциÑта „-W %s“ не приема аргумент\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: замеÑтване на „%s“\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: изчиÑлÑване на „%s“\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "не могат да Ñе заделÑÑ‚ %lu байта за речник — паметта е изчерпана" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Ðатоварване=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Преизграждане на речник=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "СъвпадениÑ=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "ТърÑене на вградено правило за „%s“.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "ТърÑене на вградено правило по член на архив за „%s“.\n" + +#: 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 "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:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Твърде дълга оÑнова: „%s%.*s“.\n" + +#: 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:788 +#, c-format +msgid "Trying implicit prerequisite '%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: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/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:552 +msgid " (core dumped)" +msgstr " (паметта е разтоварена)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (преÑкачане)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<вградено>" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Грешка %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "••• Изчакване на незавършени задачи…" + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Ðезавършил дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ %p (%s) ИД_ПР %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (отдалечено)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Приключване на ÑÐ¿ÐµÑ‡ÐµÐ»ÐµÐ»Ð¸Ñ Ð´ÑŠÑ‰ÐµÑ€ÐµÐ½ Ð¿Ñ€Ð¾Ñ†ÐµÑ %p ИД_ПР %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Приключване на Ð¸Ð·Ð³ÑƒÐ±Ð¸Ð»Ð¸Ñ Ð´ÑŠÑ‰ÐµÑ€ÐµÐ½ Ð¿Ñ€Ð¾Ñ†ÐµÑ %p ИД_ПР %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "ИзчиÑтване на временен файл за пакетна обработка „%s“\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "ÐеуÑпешно изчиÑтване на временен файл за пакетна обработка „%s“: %d\n" + +#: 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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "ОÑвобождаване на жетона за дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ %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()“ не уÑÐ¿Ñ Ð´Ð° Ñтартира Ð¿Ñ€Ð¾Ñ†ÐµÑ (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"При неуÑпешно Ñтартиране Ñа изброени %d аргумента\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Получен е жетон за дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: обновÑване на целта „%s“ заради: %s" + +#: 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:2106 +msgid "cannot enforce load limit: " +msgstr "ограничението не може да бъде наложено: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"нÑма повече манипулатори за файлове: ÑтандартниÑÑ‚ вход не може да Ñе дублира" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"нÑма повече манипулатори за файлове: ÑтандартниÑÑ‚ изход не може да Ñе дублира" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"нÑма повече манипулатори за файлове: Ñтандартната грешка не може да Ñе " +"дублира" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "СтандартниÑÑ‚ вход не може да Ñе възÑтанови" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "СтандартниÑÑ‚ изход не може да Ñе възÑтанови" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Стандартната грешка не може да Ñе възÑтанови" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: проÑтранÑтвото на Ñредата може да е изчерпано" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "Променливата „SHELL“ е променена (бе „%s“, а Ñега е „%s“)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Ðе може да Ñе Ñъздаде временен файл за пакетна обработка в „%s“\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Съдържание на файл за пакетна обработка:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Съдържание на файла за пакетна обработка:%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 (ред %d) неправилен контекÑÑ‚ на обвивката (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "ÐеуÑпешно отварÑне на глобалната таблица ÑÑŠÑ Ñимволи: %s" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "ÐеуÑпешно зареждане на Ñимвола „%s“ от „%s“: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Празно име на Ñимвол за зареждане: „%s“" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Зареждане на Ñимвола „%s“ от „%s“\n" + +#: 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“) не Ñе поддържа на тази платформа" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Опции:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m преÑкача Ñе, за ÑъвмеÑтимоÑÑ‚\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make безуÑловно изграждане на вÑички цели\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C ДИРЕКТОРИЯ, --directory=ДИРЕКТОРИЯ\n" +" преминаване към тази ДИРЕКТОРИЯ, преди да Ñе\n" +" прави каквото и да е\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° изчиÑтване на грешки\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr " --debug[=ФЛÐГОВЕ] вид Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° изчиÑтване на грешки\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" променливите от Ñредата да Ñа Ñ Ð¿Ñ€ÐµÐ²ÐµÑ Ð½Ð°Ð´\n" +" указаното във файловете управлÑващи " +"изграждането\n" +" (makefile)\n" + +#: 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:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f ФÐЙЛ, --file=ФÐЙЛ, --makefile=ФÐЙЛ\n" +" ползване на този ФÐЙЛ да управлÑва " +"изграждането\n" +" (makefile)\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help извеждане на тази помощ и изход\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors незачитане на грешките от рецептите\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I ДИРЕКТОРИЯ, --include-dir=ДИРЕКТОРИЯ\n" +" търÑене на вмъкнатите файлове в ДИРЕКТОРИЯта\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [БРОЙ], --jobs[=БРОЙ] ограничаване на задачите до макÑимум този " +"БРОЙ,\n" +" без аргумент — без ограничениÑ\n" + +#: 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: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" +" множеÑтво задачи Ñе Ñтартират, Ñамо ако\n" +" натоварването е ≤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 използване на минималното време на промÑна\n" +" измежду Ñимволна връзка и целта ѝ\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" +" извеждане на целите без изпълнение\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 ФÐЙЛ, --old-file=ФÐЙЛ, --assume-old=ФÐЙЛ\n" +" без преизграждане на ФÐЙЛа, който да Ñе\n" +" Ñчита за много Ñтар\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[ВИД], --output-sync[=ВИД]\n" +" ВИД ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° изхода от паралелните " +"задачи\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question без изпълнение на цели, Ñамо изходниÑÑ‚ код\n" +" да указва дали те Ñа актуални\n" + +#: 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:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables изключване на вграденото задаване на " +"променливи\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" +" разбъркване на изиÑкваниÑта и целите\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet без извеждане на рецептите\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent извеждане на рецептите (изключване на „--" +"silent“)\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Изключване на „-k“\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch обновÑване на информациÑта чрез „touch“ " +"вмеÑто\n" +" ново изграждане\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" +" --trace извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° изчиÑтване на " +"грешки\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version извеждане на верÑиÑта и изход\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory извеждане на текущата директориÑ\n" + +#: 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" +" функционалноÑÑ‚ Ñ Ðµ включила\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 ФÐЙЛ, --what-if=ФÐЙЛ, --new-file=ФÐЙЛ, --assume-new=ФÐЙЛ\n" +" Ñчитане на ФÐЙЛа за абÑолютно нов\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables предупреждаване при използването\n" +" на незададена променлива\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "неправилно ниво за изчиÑтване на грешки „%s“" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "непознат вид ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ â€ž%s“ към опциÑта „--output-sync“" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Употреба: %s [ОПЦИЯ]… [ФÐЙЛ]…\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Тази програма е изградена за %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Тази програма е изградена за %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Съобщавайте за програмни грешки на .\n" +"За грешки в българÑÐºÐ¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´ на .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: прихванато прекъÑване/изключение (код = 0x%lx, Ð°Ð´Ñ€ÐµÑ = 0x%p)\n" + +#: src/main.c: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" +"Филтърът за необработени Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðµ извикан от програмата „%s“\n" +"Код на изключение = %lx\n" +"Флагове на изключение = %lx\n" +"ÐÐ´Ñ€ÐµÑ Ð½Ð° изключение = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Ðарушение на доÑтъпа: Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð° Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° Ð°Ð´Ñ€ÐµÑ 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Ðарушение на доÑтъпа: Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð° четене на Ð°Ð´Ñ€ÐµÑ 0x%p\n" + +#: 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: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: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 "" +"ПРЕДУПРЕЖДЕÐИЕ: Ñървърът за задачи не е наличен, ползва Ñе „-j1“. Добавете " +"„+“ към родителÑкото правило на „make“." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"ПРЕДУПРЕЖДЕÐИЕ: в подизграждане е зададено „-j%d“. Режимът на Ñървър за " +"задачи Ñе изключва." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Файлът управлÑващ изграждането е зададен двукратно на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "Ð·Ð°Ð¿Ð¸Ñ („fwrite“ на временен файл) %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"ПРЕДУПРЕЖДЕÐИЕ: в подизграждане е зададено „-j%d“. Режимът на Ñървър за " +"задачи Ñе изключва." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Тази ÑиÑтема не поддържа паралелни задачи („-j“)." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Преминаване към еднозадачен режим (-j1)." + +#: 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: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:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" +"УправлÑващиÑÑ‚ изграждането файл „%s“ може да зацикли, затова не Ñе " +"преÑъздава.\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: не може да Ñе зареди" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "ÐеуÑпешно преÑъздаване на управлÑÐ²Ð°Ñ‰Ð¸Ñ Ð¸Ð·Ð³Ñ€Ð°Ð¶Ð´Ð°Ð½ÐµÑ‚Ð¾ файл „%s“" + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "ВмъкнатиÑÑ‚ управлÑващ изграждането файл „%s“ липÑва" + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "УправлÑващиÑÑ‚ изграждането файл „%s“ липÑва" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Ðевъзможно връщане към първоначалната директориÑ" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Изпълнение наново[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "Стандартната цел „.DEFAULT_GOAL“ Ñъдържа повече от една цел" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "ÐÑма цели" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Ðе е зададена цел, а и липÑва управлÑващ изграждането файл" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "ОбновÑване на целите…\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"ПРЕДУПРЕЖДЕÐИЕ: проблем ÑÑŠÑ ÑиÑÑ‚ÐµÐ¼Ð½Ð¸Ñ Ñ‡Ð°Ñовник — изграждането може да е " +"непълно." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "опциÑта „%s%s“ изиÑква непразен аргумент-низ" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "опциÑта „%c“ изиÑква положителен, целочиÑлен аргумент" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sИзградена за %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sИзградена за %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sЛиценз GPLv3+: Общ публичен лиценз на GNU (GNU GPL) — верÑÐ¸Ñ 3 на лиценза " +"или по-къÑна верÑиÑ. \n" +"%sТази програма е Ñвободен Ñофтуер. Можете да Ñ Ñ€Ð°Ð·Ð¿Ñ€Ð¾ÑтранÑвате и/или " +"променÑте.\n" +"%sÐ¢Ñ Ñе разпроÑтранÑва БЕЗ ÐИКÐКВИ ГÐРÐÐЦИИ доколкото е позволено от " +"закона.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° „make“, отпечатана на %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Край на информациÑта за „make“, отпечатана на %s\n" + +#: 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 "using default temporary directory '%s'" +msgstr "използване на Ñтандартната Ð´Ð¸Ñ€ÐµÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° временни файлове за „%s“" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "Ñъздаване на временен файл %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "изтриване („unlink“ на временен файл) %s: %s" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: излизане от непозната директориÑ\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: влизане в Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: излизане от Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: влизане в непозната директориÑ\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: излизане от непозната директориÑ\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: влизане в Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: излизане от Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"ПРЕДУПРЕЖДЕÐИЕ: ключалката за изхода не може да Ñе придобие, ÑинхронизациÑта " +"на изхода Ñе изключва." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Край.\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 "Сървърът за задачи не може да Ñе отвори %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Ðепознат вид Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð° Ñървър за задачи „%s“" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "Ñъздаване на програмен канал ÑÑŠÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "дублиране на програмен канал ÑÑŠÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° канал за Ñървър за задачи" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "неправилен низ към „--jobserver-auth“: „%s“" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° Ñървър за задачи" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "Ñпиране на Ñървъра за задачи" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "грешка в „pselect“ в канала за задачи" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "грешка при четене в канала за задачи" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Изчитане на файла управлÑващ изграждането „%s“" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (нÑма Ñтандартна цел)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (търÑене в път)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (без значение)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (без замеÑтване на „~“)" + +#: 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:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" +"ПреÑкачанe на знака за подредба на байтовете за UTF-8 (BOM) в буфера на " +"файла управлÑващ изграждането\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "неправилен ÑинтакÑÐ¸Ñ Ð½Ð° уÑловен израз" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "рецепта почва преди първата цел" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "липÑващо правило преди рецепта" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "" +"липÑва разделител (дали не трÑбва да замените 8 интервала Ñ Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ‚Ð¾Ñ€?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "липÑва разделител" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "липÑва целеви шаблон" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "множеÑтво целеви шаблони" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "целевиÑÑ‚ шаблон не Ñъдържа „%%“" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "липÑващ „endif“" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "празно име на променлива" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "излишен текÑÑ‚ Ñлед директива „define“" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "„endef“ липÑва — нÑÐºÐ¾Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° „define“ не е завършена" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "излишен текÑÑ‚ Ñлед директива „endef“" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "излишен текÑÑ‚ Ñлед директива „%s“" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "излишен „%s“" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "може да има макÑимално една директива „else“ за уÑловен израз" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Ðеправилна Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ Ð½Ð° променлива, завиÑеща от целта" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "целите в група трÑбва да предоÑтавÑÑ‚ рецепта" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "вградените и правилата ÑÑŠÑ Ñтатични шаблони Ñа ÑмеÑени" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "вградените и изричните правила Ñа ÑмеÑени" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "целта „%s“ не Ñъвпада Ñ Ñ†ÐµÐ»Ñ‚Ð° на шаблона" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "целевиÑÑ‚ файл „%s“ Ñъдържа запиÑи и Ñ â€ž:“, и Ñ â€ž::“" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "целта „%s“ е дадена повече от веднъж в едно правило" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "ПРЕДУПРЕЖДЕÐИЕ: замеÑтване на рецептата за целта „%s“" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "ПРЕДУПРЕЖДЕÐИЕ: Ñтарата рецепта за „%s“ Ñе преÑкача" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "••• ÑмеÑване на вградени и обикновени правила: оÑтарÑл ÑинтакÑиÑ" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "ПРЕДУПРЕЖДЕÐИЕ: замеÑтване на групата на целта „%s“" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "ПРЕДУПРЕЖДЕÐИЕ: нулев знак NUL, оÑтаналата чаÑÑ‚ на реда Ñе преÑкача" + +#: 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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s“ нÑма нужда да Ñе обновÑва." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "ОкаÑтрÑне на файл „%s“\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sÐÑма правило за изграждане на целта „%s“%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Разглеждане на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Скорошен неуÑпешен опит за обновÑване на файла „%s“\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Файлът „%s“ вече е разгледан.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Ð’Ñе още Ñе обновÑва файл „%s“.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Завършване на обновÑването на файл „%s“.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Файлът „%s“ не ÑъщеÑтвува.\n" + +#: 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:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Съответното на целта в група „%s“ на файла „%s“ не ÑъщеÑтвува.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Използване на Ñтандартната рецепта за „%s“.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Цикличната завиÑимоÑÑ‚ „%s“ ↠„%s“ Ñе преÑкача." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "ИзиÑкваниÑта за Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“ Ñа завършени.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "ИзиÑкваниÑта на „%s“ Ñе изграждат.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Отказ за изграждане на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Целта „%s“ не е преизградена поради грешки." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "ИзиÑкването „%s“ е Ñамо за поÑледователноÑÑ‚ за целта „%s“.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "ИзиÑкването „%s“ на целта „%s“ не ÑъщеÑтвува.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "ИзиÑкването „%s“ е по-ново от целта „%s“.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "ИзиÑкването „%s“ е по-Ñтаро от целта „%s“.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "Целта е „%s“ е „::“ и нÑма изиÑкваниÑ.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "ÐÑма рецепта за „%s“ и никое от изиÑкваниÑта не е променено.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "„%s“ Ñе изгражда наново поради флаг за изрично преизграждане.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "ÐÑма нужда за преизграждане на целта „%s“" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; използва Ñе име от „VPATH“ „%s“" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Целта „%s“ трÑбва да Ñе преизгради.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " ПреÑкачане на името от „VPATH“ „%s“.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Рецептата за „%s“ в момента Ñе изпълнÑва.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "ÐеуÑпешно преизграждане на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "УÑпешно преизграждане на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "ЦелевиÑÑ‚ файл „%s“ трÑбва да Ñе преизгради при „-q“.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Използват Ñе Ñтандартни команди за „%s“.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "ПРЕДУПРЕЖДЕÐИЕ: файлът „%s“ е Ñ Ð²Ñ€ÐµÐ¼Ðµ на промÑна %s Ñек. в бъдещето" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Елементът „%s“ за „.LIBPATTERNS“ не е шаблон" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Модулът нÑма да Ñе изнеÑе: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" +"ПРЕДУПРЕЖДЕÐИЕ: преÑкачат Ñе изиÑкваниÑта за правило, дефинирано по ÑуфикÑи" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Вградени правила" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# ÐÑма вградени правила." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u вградени правила, %u (%.1f%%) крайни." + +#: 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 "непознат Ñигнал" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "ПрекъÑване на връзката" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "ПрекъÑване" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Спиране" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Ðеправилна инÑтрукциÑ" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "ПрекъÑване за траÑиране" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "ПреуÑтановÑване" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "ПреуÑтановÑване (IOT)" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Емулирана инÑтрукциÑ" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Изключение от плаваща запетаÑ" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Убит" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Грешка в шината" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Грешка в разделÑнето" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Грешно ÑиÑтемно извикване" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "ПрекъÑнат програмен канал" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Ðларма" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Прекратен" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "ПотребителÑки Ñигнал 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "ПотребителÑки Ñигнал 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "ПреуÑтановен дъщерен процеÑ" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Проблем в захранването" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "СпрÑн" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Спиране (вход от tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Спиране (изход към tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "СпрÑн (Ñигнал)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Ðадвишаване на процеÑорното време" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Ðадвишаване на размера на файл" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Изтекъл виртуален таймер" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Изтекъл профилиращ таймер" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Преоразмерен прозорец" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Продължен" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Спешно вх./изх. ÑÑŠÑтоÑние" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Възможен вх./изх." + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "Преоразмерен прозорец" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "ПромÑна на ÑÑŠÑтоÑнието на линиÑта" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Загубен реÑурÑ" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Сигнал за опаÑноÑÑ‚" + +#: src/signame.c:217 +msgid "Information request" +msgstr "ЗаÑвка за информациÑ" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "ЛипÑва копроцеÑор за чиÑла Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° запетаÑ" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s ÐÑма буфери за „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 буфери за кеша за низове: %lu (%lu) / низове = %lu / Ñъхранение = %lu B / " +"Ñредно = %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 текущ буфер: размер = %hu B / ползвано = %hu B / брой = %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 други използвани: общо = %lu B / брой = %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 други Ñвободни: общо = %lu B / макÑ. = %lu B / мин. = %lu B / Ñредно = " +"%hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s производителноÑÑ‚ на кеша за низове: търÑÐµÐ½Ð¸Ñ = %lu / Ð½Ð°Ð¼Ð¸Ñ€Ð°Ð½Ð¸Ñ = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# ÑтатиÑтика на речника:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "автоматично" + +#: src/variable.c:1789 +msgid "default" +msgstr "Ñтандартно" + +#: src/variable.c:1792 +msgid "environment" +msgstr "Ñреда" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "файл управлÑващ изграждането" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "обкръжението е твърде голÑмо за „exec“" + +#: src/variable.c:1801 +msgid "command line" +msgstr "команден ред" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "директива „override“" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (от „%s“, ред %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# ÑтатиÑтика за множеÑтвото на променливите в речника:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Променливи\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# СтойноÑти на променливи, завиÑещи от шаблона" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# ÐÑма ÑтойноÑти на променливи, завиÑещи от шаблона" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u ÑтойноÑти на променливи, завиÑещи от шаблона" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "ПРЕДУПРЕЖДЕÐИЕ: недефинирана променлива „%.*s“" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "„sys$search()“ завърши неуÑпешно Ñ ÐºÐ¾Ð´ %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"- ПРЕДУПРЕЖДЕÐИЕ, вероÑтно трÑбва отново да включите управлението на CTRL-Y " +"от „DCL“.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "ВГРÐДЕÐРКОМÐÐДР„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 "ДобавÑне на изхода към „%s“\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "ДобавÑне на %.*s и изчиÑтване\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "„%s“ Ñе изпълнÑва вмеÑто\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Пътища за търÑене „VPATH“\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# ÐÑма пътища за търÑене във „VPATH“" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u пътища за търÑене във „VPATH“\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# ÐÑма общ път (във „VPATH“) за търÑене" + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Общ път за търÑене (във „VPATH“)\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Сървърът за задачи приема макÑимум %d заданиÑ\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "Ñъздаване на Ñемафор за Ñървър за задачи: (грешка %ld: %s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Клиент на Ñървър за задачи (Ñемафор %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "оÑвобождаване на Ñемафора на Ñървъра за задачи: (грешка %ld: %s)" + +#: 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/local/recipes/dev/gnu-make/source/po/boldquot.sed b/local/recipes/dev/gnu-make/source/po/boldquot.sed new file mode 100644 index 0000000000..4b937aa517 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/boldquot.sed @@ -0,0 +1,10 @@ +s/"\([^"]*\)"/“\1â€/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“â€/""/g +s/“/“/g +s/â€/â€/g +s/‘/‘/g +s/’/’/g diff --git a/local/recipes/dev/gnu-make/source/po/cs.gmo b/local/recipes/dev/gnu-make/source/po/cs.gmo new file mode 100644 index 0000000000000000000000000000000000000000..2b8e87fd08889d266a245847b068268f3167ac00 GIT binary patch literal 50567 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 kw<-Y=aInOmv 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 l7fsV)r)vi8V@sFyZ&T&z{{rZR36uZ; literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/cs.po b/local/recipes/dev/gnu-make/source/po/cs.po new file mode 100644 index 0000000000..5e3eb7a2b1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/cs.po @@ -0,0 +1,2628 @@ +# Czech translation of make. +# Copyright (C) 2010 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Petr Pisar , 2011, 2013, 2014, 2016, 2019, 2020. +# Petr Pisar , 2022. +# +# directive → klíÄové slovo (nepÅ™ekládat jako příkaz kvůli zámÄ›nÄ›) +# hash → haÅ¡ (zapisovat Äesky) +# chain → Å™etÄ›zec +# jobserver → správce úloh +# make (verb) → vyrobit +# make (substantivum) → (program) make (skloňovat, nelze-li jinak) +# makefile → makefile (nepÅ™ekládat, ale skloňovat) +# (archive) member → prvek +# (C structure) member → Älen +# pattern → vzor (nikoliv vzorek) +# prerequisite → prerekvizita (pÅ™edpoklad se nehodí jako duální slovo +# k target) +# reap (child) → uklidit potomka +# recipe → návod +# target → cíl +# token → token (nepÅ™ekládat) +# +# SECONDARY, INTERMEDIATE, PRECIOUS apod. nepÅ™ekládat, i když jsou použity +# jako přívlastek. Jedná se o identifikátory jazyka make. +# +msgid "" +msgstr "" +"Project-Id-Version: 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-25 20:18+02:00\n" +"Last-Translator: Petr Pisar \n" +"Language-Team: Czech \n" +"Language: cs\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" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "pokus použít nepodporovanou vlastnost: „%s“" + +#: 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:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Archiv „%s“ neexistuje" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: „%s“ není platným archivem" + +#: 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: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“" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"funkce lbr$set_module() nedokázala vytáhnout údaje o modulu, status = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "funkce lbr$ini_control() selhala se stavem = %d" + +#: src/arscan.c:261 +#, c-format +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: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:996 +msgid " (name might be truncated)" +msgstr " (název může být zkrácen)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Datum %s" + +#: 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:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Návod má příliÅ¡ mnoho řádků (omezení %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** PÅ™eruÅ¡eno.\n" + +#: 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: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:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Maže se soubor „%s“" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Maže se soubor „%s“" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# spustitelný návod" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (vestavÄ›ný):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (z „%s“, řádek %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Adresáře\n" + +#: 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: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: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: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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (klÃ­Ä %s, Äas zmÄ›ny obsahu %s): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (zařízení %ld, iuzel %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Žádný" + +# TODO: Pluralize +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " souborů, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "žádný " + +# TODO: Pluralize +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " nemožností " + +#: src/dir.c:1180 +msgid " so far." +msgstr " zatím." + +# TODO: Pluralize +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " nemožností v %lu adresářích.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "neukonÄený odkaz na promÄ›nnou" + +#: 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: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: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: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: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: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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "Maže se mezilehlý soubor „%s“ " + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Odstraňují se mezilehlé soubory…\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: ÄŒasový údaj mimo rozsah, nahrazuje se %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Není cílem:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Cenný soubor (prerekvizita k .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# FaleÅ¡ný cíl (prerekvizita k .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Cíl příkazové řádky." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Default, MAKEFILES nebo -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# VestavÄ›né pravidlo" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Hledalo se za pomoci implicitních pravidel." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Nehledalo se za pomoci implicitních pravidel." + +#: 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:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Soubor je mezilehlá prerekvizita." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# ÄŒas zmÄ›ny obsahu se nikdy nekontroluje." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Soubor neexistuje." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Soubor je velmi starý." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Obsah naposledy zmÄ›nÄ›n v %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Soubor byl aktualizován." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Soubor nebyl aktualizován." + +#: 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: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:1151 +msgid "# Successfully updated." +msgstr "# ÚspěšnÄ› aktualizováno." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Je tÅ™eba aktualizovat (-q je nastaveno)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Aktualizace selhala." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Neplatná hodnota v Älenu „command_state“!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Soubory" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# Statistika haÅ¡ovací tabulky souborů:\n" +"# " + +#: 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: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: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:821 +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:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "" +"windows32_openpipe: volání DuplicateHandle(vstup) selhalo (chyba=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "" +"windows32_openpipe: volání DuplicateHandle(chybový výstup) selhalo (chyba=" +"%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "volání CreatePipe() selhalo (chyba=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): funkce process_init_fd() selhala\n" + +#: 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:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "soubor: chybí název souboru" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "otevÅ™ení: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "zápis: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "zavÅ™ení: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "soubor: příliÅ¡ mnoho argumentů" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "Ätení: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "soubor: neplatná operace na souboru: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "nedostateÄný poÄet argumentů (%u) funkce „%s“" + +#: 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:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "neukonÄené volání funkce „%s“: chybí „%c“" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Prázdný název funkce" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Neplatný název funkce: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Název funkce je příliÅ¡ dlouhý: %s" + +#: 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:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Neplatný maximální poÄet argumentů (%u) funkce %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: pÅ™epínaÄ â€ž%s“ není jednoznaÄný\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: pÅ™epínaÄe „--%s“ nepÅ™ipouÅ¡tí argument\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: pÅ™epínaÄ â€ž%c%s“ nepÅ™ipouÅ¡tí argument\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: pÅ™epínaÄ â€ž%s“ vyžaduje argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: nerozpoznaný pÅ™epínaÄ â€ž--%s“\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: nerozpoznaný pÅ™epínaÄ â€ž%c%s“\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: zakázaný pÅ™epínaÄ – %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: neplatný pÅ™epínaÄ – %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: pÅ™epínaÄ vyžaduje argument – %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: pÅ™epínaÄ â€ž-W %s“ není jednoznaÄný\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: pÅ™epínaÄ â€ž-W %s“ nepÅ™ipouÅ¡tí argument\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Expanduje se „%s“\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Vyhodnocuje se „%s“\n" + +# TODO: Pluralize +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "nelze alokovat %lu bajtů na haÅ¡ovací tabulku: paměť vyÄerpána" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Zátěž = %lu/%lu = %.0f %%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "PÅ™ehaÅ¡ováno = %u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Kolizí = %lu/%lu = %.0f %%" + +#: 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: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:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Žádné implicitní pravidlo prvku archivu pro „%s“ nebylo nalezeno.\n" + +#: src/implicit.c:326 +#, c-format +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:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "KoÅ™en je příliÅ¡ dlouhý: „%s%.*s“.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Zamítá se pravidlo „%s“ kvůli nemožné prerekvizitÄ› pravidla „%s“.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Zamítá se pravidlo „%s“ kvůli nemožné implicitní prerekvizitÄ› „%s“.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Zkouší se prerekvizita pravidla „%s“.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Zkouší se implicitní prerekvizita „%s“.\n" + +#: 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 "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: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/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:552 +msgid " (core dumped)" +msgstr " (obraz pamÄ›ti uložen)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignorováno)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Chyba %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** ÄŒeká se na nedokonÄené úlohy…" + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (vzdálený)" + +#: 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: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: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: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: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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "UvolnÄ›n token pro potomka %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() nedokázala spustit proces (chyba=%ld)\n" + +# FIXME: Pluralize +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"NapoÄítáno %d argumentů v selhaném spuÅ¡tÄ›ní\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Získán token pro potomka %p (%s).\n" + +#: 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: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:2106 +msgid "cannot enforce load limit: " +msgstr "omezení zátěže nelze vynutit: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "nedostatek deskriptorů souboru: standardní vstup nelze zduplikovat" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "nedostatek deskriptorů souboru: standardní výstup nelze zduplikovat" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "nedostatek deskriptorů souboru: chybový výstup nelze zduplikovat" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Standardní vstup nelze obnovit" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Standardní výstup nelze obnovit" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Chybový výstup nelze obnovit" + +#: 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: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: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: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:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Obsah dávkového souboru:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Obsah dávkového souboru:%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 (řádek %d) Chybný kontext shellu (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "NepodaÅ™ilo se otevřít tabulku globálních symbolů: %s" + +#: 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: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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Pokus zavést prázdný název symbolu: %s" + +#: 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: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" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "PÅ™epínaÄe:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignoruje se kvůli kompatibilitÄ›.\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C ADRESÃŘ, --directory=ADRESÃŘ\n" +" PÅ™ed dÄ›láním Äehokoliv se pÅ™epne do ADRESÃŘE.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Vypisuje mnoho ladicích údajů.\n" + +#: 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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" PromÄ›nné prostÅ™edí pÅ™ebijí ty z makefilu.\n" + +#: 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:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f SOUBOR, --file=SOUBOR, --makefile=SOUBOR\n" +" NaÄte SOUBOR coby makefile.\n" + +#: 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:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignoruje chyby z návodů.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I ADRESÃŘ, --include-dir=ADRESÃŘ\n" +" Vložené makefily hledá v ADRESÃŘI.\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] Dovolí nejvíce N úloh najednou;\n" +" nekoneÄno úloh bez argumentu.\n" + +#: 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: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" +" NespouÅ¡tí souběžné úlohy, dokud zátěž\n" +" neklesne pod 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 Použije nejnovÄ›jší Äas zmÄ›ny obsahu z Äasů\n" +" symbolických odkazů a cíle.\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" +" Ve skuteÄnosti nevykoná žádný návod, pouze\n" +" jej vypíše.\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 SOUBOR, --old-file=SOUBOR, --assume-old=SOUBOR\n" +" Považuje SOUBOR za velmi starý a znovu jej\n" +" nevyrobí.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[DRUH], --output-sync[=DRUH]\n" +" Synchronizuje výstup souběžných úloh podle " +"DRUHU.\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Nespustí žádný návod. Návratový kód Å™ekne,\n" +" jestli je aktuální.\n" + +#: 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: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: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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr " --no-silent Opisuje návod (vypne režim --silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Vypne -k.\n" + +#: 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:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Vypisuje trasovací údaje.\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Vypisuje aktuální adresář.\n" + +#: 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:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W SOUBOR, --what-if=SOUBOR, --new-file=SOUBOR, --assume-new=SOUBOR\n" +" Považuje SOUBOR za nekoneÄnÄ› nový.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Upozorní, kdykoliv je odkazováno na\n" +" nedefinovanou promÄ›nnou.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "zadána neznámá úroveň ladÄ›ní „%s“" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "neznámý druh synchronizace výstupu „%s“" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Použití: %s [PŘEPÃNAÄŒE] [CÃLE]…\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Tento program byl sestaven pro %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Tento program byl sestaven pro %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Chyby v programu hlaste anglicky na . Nedostatky\n" +"v pÅ™ekladu hlaste Äesky na .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Zachyceno pÅ™eruÅ¡ení/výjimka (kód = 0x%lx, adresa = 0x%p)\n" + +#: src/main.c: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" +"Filtr neoÅ¡etÅ™ených výjimek zavolán z programu %s\n" +"Kód výjimky = %lx\n" +"Příznaky výjimky = %lx\n" +"Adresa výjimky = 0x%p\n" + +#: 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: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: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: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: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." +msgstr "" +"pozor: správce úloh není dostupný: použije se -j1. Do nadřízeného pravidla " +"maku pÅ™idejte „+“." + +#: 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:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile na standardním vstupu uveden dvakrát" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: doÄasný soubor %s: %s" + +#: 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: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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Návrat k jednoúlohovému režimu (-j1)." + +#: 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: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: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: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:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Vložený makefile „%s“ nebyl nalezen." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile „%s“ nebyl nalezen" + +#: 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" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Znovu se spouÅ¡tí [%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Žádné cíle" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Aktualizují se cíle…\n" + +#: 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: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: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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sSestaveno pro %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%s Sestaveno pro %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicence GPLv3+: GNU GPL verze 3 nebo novÄ›jší \n" +"%sToto je svobodné programové vybavení: máte právo jej mÄ›nit a dále šířit.\n" +"%sNesposkytuje se ŽÃDNà ZÃRUKA, jak jen zákon dovoluje.\n" + +# FIXME: i18n %s (time) +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Databáze maku vypsána v %s" + +# FIXME: i18n %s (time) +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Konec databáze maku v %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s hodnota %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s hodnota %s: není adresářem" + +#: 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:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "vytvoÅ™ení doÄasného souboru %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "smazání doÄasného souboru %s: %s" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s OpouÅ¡tí se neznámý adresář\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Vstupuje se do adresáře „%s“\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: OpouÅ¡tí se adresář „%s“\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: OpouÅ¡tí se neznámý adresář\n" + +#: 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:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: OpouÅ¡tí se adresář „%s“\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "pozor: Zámek výstupu nelze získat, vypíná se synchronizace výstupu." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Konec.\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 "Správce úloh %s nelze otevřít: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Neznámý druh autentizace správce úloh „%s“" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "vytváření roury úloh" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duplikace roury úloh" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inicializace roury správce úloh" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "neplatný Å™etÄ›zec --jobserver-auth „%s“" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "zápis správce úloh" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "správce úloh vypnut" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "volání pselect nad rourou úloh" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "Ätení z roury úloh" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "ÄŒte se makefile „%s“" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (žádný výchozí cíl)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (vyhledávací cesta)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (nestarat se)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (žádný expanze ~)" + +#: 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: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:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "neplatná syntaxe podmínky" + +#: 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:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "pÅ™ed návodem chybí pravidlo" + +#: 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:1156 +#, c-format +msgid "missing separator" +msgstr "chybí oddÄ›lovaÄ" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "chybí vzor cíle" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "více vzorů cíle" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "vzor cíle neobsahuje „%%“" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "chybí „endif“" + +#: 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:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "nadbyteÄný text po klíÄovém slovu „define“" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "chybí „endef“, neukonÄený „define“" + +#: 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:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "nadbyteÄný text po klíÄovém slovu „%s“" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "nadbyteÄný „%s“" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "pouze jeden „else“ na podmínku" + +#: 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: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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "seskupené cíle musí poskytovat návod" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "smíšené implicitní a statická pravidla vzorů" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "smíšené implicitní a normální pravidla" + +#: 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: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: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:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "pozor: návod pro cíl „%s“ bude pÅ™ebit" + +#: 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:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** smíšená implicitní a normální pravidla: zastaralá skladba" + +#: 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: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: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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s“ je aktuální." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Uklízí se soubor „%s“.\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sŽádné pravidlo jak vyrobit cíl „%s“%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Zvažuje se cílový soubor „%s“.\n" + +#: 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Soubor „%s“ již byl uvážen.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Stále se aktualizuje soubor „%s“.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Aktualizace soubor „%s“ dokonÄena.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Soubor „%s“ neexistuje.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Pozor: Soubor .LOW_RESOLUTION_TIME „%s“ má Äasový údaj ve vysokém " +"rozliÅ¡ení" + +#: src/remake.c:538 +#, c-format +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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Pro „%s“ se použije výchozí návod.\n" + +#: 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:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Prerekvizity cílového souboru „%s“ dokonÄeny.\n" + +#: 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: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: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: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:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Prerekvizita „%s“ cíle „%s“ neexistuje.\n" + +#: 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: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: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: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: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:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Cíl „%s“ není tÅ™eba znovu vyrábÄ›t" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; použije se název „%s“ z VPATH" + +#: 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:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Ignoruje se název „%s“ z VPATH.\n" + +#: 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: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:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Cílový soubor „%s“ byl úspěšnÄ› znovu vyroben.\n" + +#: 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: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: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: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:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customs nebude exportovat: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "pozor: prerekvizity se ignorují v definici pravidla s příponami" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Implicitní pravidla" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Žádná implicitní pravidla." + +# FIXME: Pluralize +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u implicitních pravidel, %u (%.1f %%) koncových" + +#: 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" + +# Keep signal names in sync with GNU libc translations. +#: src/signame.c:92 +msgid "Hangup" +msgstr "Odpojen terminál (SIGHUP)" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "PÅ™eruÅ¡ení (SIGINT)" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Konec (SIGQUIT)" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Nedovolená instrukce (SIGILL)" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Trasovací/ladící past (SIGTRAP)" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "NeúspěšnÄ› ukonÄen (SIGABRT)" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT past (SIGIOT)" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT past (SIGEMT)" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Výjimka práce s pohyblivou řádovou Äárkou (SIGFPE)" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Zabit (SIGKILL)" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Chyba na sbÄ›rnici (neplatná adresa) (SIGBUS)" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "NeoprávnÄ›ný přístup do pamÄ›ti (SIGSEGV)" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Chybné volání systému (SIGSYS)" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Roura pÅ™eruÅ¡ena (SIGPIPE)" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Budík (SIGALRM)" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "UkonÄen (SIGTERM)" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Uživatelem definovaný signál 1 (SIGUSR1)" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Uživatelem definovaný signál 2 (SIGUSR2)" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Potomek skonÄil (SIGCHLD)" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Výpadek napájení (SIGPWR)" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Pozastaven (SIGTSTP)" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Pozastaven (vstup TTY) (SIGTTIN)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Pozastaven (výstup TTY) (SIGTTOU)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Pozastaven (SIGSTOP)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "PÅ™ekroÄen Äasový limit pro procesor (SIGXCPU)" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "PÅ™ekroÄen limit délky souboru (SIGXFS2)" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtuální ÄasovaÄ vyprÅ¡el (SIGVTALRM)" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Profilovací ÄasovaÄ vyprÅ¡el (SIGPROF)" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Okno se zmÄ›nilo (SIGWINCH)" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Je pokraÄováno (SIGCONT)" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Naléhavá I/O situace (SIGURG)" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Vstup/Výstup možný (SIGIO)" + +# SIGWIND exists on Darwin +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "Okno se zmÄ›nilo (SIGWIND)" + +# SIGPHONE exists on Unix PC (3B1) +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "ZmÄ›na stavu linky (SIGPHONE)" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "ProstÅ™edek byl ztracen (SIGLOST)" + +# SIGDANGER exists on AIX +#: src/signame.c:214 +msgid "Danger signal" +msgstr "NebezpeÄí nedostatku pamÄ›ti (SIGDANGER)" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Žádost o informaci (SIGINFO)" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Koprocesor pro práci s pohyblivou řádkou není dostupný (SIGNOFP)" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Žádná keÅ¡ Å™etÄ›zců\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 užito z keÅ¡e Å™etÄ›zců: %lu (%lu) / Å™etÄ›zců = %lu / úložiÅ¡tÄ› = %lu B / " +"prům. = %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 souÄasná keÅ¡: velikost = %hu B / užito = %hu B / poÄet = %hu / prům. = " +"%u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s užito dalších: celkem = %lu B / poÄet = %lu / prům. = %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 volno dalších: celkem = %lu B / max. = %lu B / min. = %lu B / prům. = " +"%hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s vytížení keÅ¡e Å™etÄ›zců: dotazů = %lu / pomÄ›r nálezů = %lu %%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# Statistika haÅ¡ovací tabulky:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatická" + +#: src/variable.c:1789 +msgid "default" +msgstr "výchozí" + +#: src/variable.c:1792 +msgid "environment" +msgstr "prostÅ™edí" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "prostÅ™edí z pÅ™epínaÄe -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "příkazový řádek" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "klíÄové slovo „override“" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (z „%s“, řádek %lu)" + +#: 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:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# PromÄ›nné\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Hodnoty promÄ›nných specifických pro vzor" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Žádné hodnoty promÄ›nných specifických pro vzor." + +# FIXME: Pluralize +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# Hodnot promÄ›nných specifických pro vzor: %u" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "pozor: nedefinovaná promÄ›nná „%.*s“" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "volání sys$search() selhalo s %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-pozor, možná byste mÄ›li znovu povolit obsluhu CTRL-Y z DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "VESTAVÄšNà PŘÃKAZ 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 "Výstup pÅ™ipojen k %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "PÅ™ipojit %.*s a uklidit\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Místo toho se spustí %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Vyhledávací cesty VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Žádné vyhledávací cesty „vpath“." + +# FIXME: Pluralize +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"$ Vyhledávacích cest „vpath“: %u\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Žádná obecná vyhledávací cesta (promÄ›nná „VPATH“)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Obecná vyhledávací cesta (promÄ›nná „VPATH“):\n" +"# " + +#: 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:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "vytváření semaforu správce úloh: (Chyba %ld: %s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Klient správce úloh (semafor %s)\n" + +#: 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: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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Příkaz nenalezen\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Program shellu nenalezen" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s se uspí na 30 sekund…" + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) dokonÄeno. PokraÄuje se.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Neznámá chyba %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Pozor: Soubor „%s“ má Äas zmÄ›ny obsahu v budoucnu" + +#~ msgid " terminal." +#~ msgstr " terminál." + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: návod pro cíl „%s“ selhal" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Chyba 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "služba dup() nad správcem úloh" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Pozor: Prázdné pÅ™esmÄ›rování\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "vnitÅ™ní chyba: command_state pro „%s“" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "VESTAVÄšNà [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "VESTAVÄšNà PŘÃKAZ ECHO %s → %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Neznámý vestavÄ›ný příkaz „%s“\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "VestavÄ›ný příkaz není v ONESHELL znám nebo podporován: „%s“\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Chyba, prázdný příkaz\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Vstup pÅ™esmÄ›rován z %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Chyby pÅ™esmÄ›rovány do %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Výstup pÅ™esmÄ›rován do %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Chyba oddÄ›lení podprocesu, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "vnitÅ™ní chyba: více pÅ™epínaÄů --sync-mutex" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "vnitÅ™ní chyba: více pÅ™epínaÄů --jobserver-fds" + +#~ msgid "virtual memory exhausted" +#~ msgstr "virtuální paměť vyÄerpána" + +#~ msgid "write error" +#~ msgstr "chyba zápisu" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "VESTAVÄšNà RM %s\n" + +#~ msgid "# Invalid value in 'update_status' member!" +#~ msgstr "# Neplatná hodnota v Älenu „update_status“!" + +#~ msgid "unknown trace mode '%s'" +#~ msgstr "neznámý režim trasování „%s“" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Chyba 0x%x (ignorováno)" + +#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n" +#~ msgstr "Za úÄelem aktualizace cíle „%3$s“ se volá se návod z %1$s:%2$lu.\n" + +#~ msgid "Invoking builtin recipe to update target `%s'.\n" +#~ msgstr "Za úÄelem aktualizace cíle „%s“ se volá vestavÄ›ný návod.\n" + +#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n" +#~ msgstr "" +#~ "%s poÄet vyrovnávacích pamÄ›tí keÅ¡e Å™etÄ›zců: %d (* %d B/buffer = %d B)\n" + +#~ msgid "" +#~ "\n" +#~ "# strcache hash-table stats:\n" +#~ "# " +#~ msgstr "" +#~ "\n" +#~ "# statistika haÅ¡ovací tabulky keÅ¡e Å™etÄ›zců:\n" +#~ "# " diff --git a/local/recipes/dev/gnu-make/source/po/da.gmo b/local/recipes/dev/gnu-make/source/po/da.gmo new file mode 100644 index 0000000000000000000000000000000000000000..85210a99efb081e0b42dcef8ebfebdee1e75caeb GIT binary patch literal 46951 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 z

    S~bzFQCNAD!5@`@rPb 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, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2021-08-28 09:45+0700\n" +"Last-Translator: Arif E. Nugroho \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: 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:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "touch anggota archive tidak tersedia di VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Archive '%s' tidak ada" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: '%s' bukan archive yang valid" + +#: 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: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'" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() gagal untuk mengekstrak info module, status = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() gagal dengan status = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "tidak dapat membuka perpustakaan '%s' untuk melihat status anggota %d" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (nama mungkin akan di potong)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Tanggal %s" + +#: 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:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Recipe has too many lines (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Berhenti.\n" + +#: 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:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Anggota archive '%s' mungkin palsu; tidak dihapus" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Menghapus berkas '%s'" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Menghapus berkas '%s'" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# perintah untuk dijalankan" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (bawaan):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (dari '%s', baris %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Direktori\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: tidak dapat melihat statistik.\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: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: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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (kunci %s, mtime %I64u): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (perangkat %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Tidak" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " berkas, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "tidak" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " tidak mungkin" + +#: src/dir.c:1180 +msgid " so far." +msgstr " sejauh ini." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " tidak mungkin dalam direktori %lu.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "referensi variabel tidak diselesaikan" + +#: 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: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: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: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: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: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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Menghapus berkas sementara '%s'" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Menghapus berkas sementara...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Timestamp diluar jangkauan; digantikan dengan %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Bukan sebuah target:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Berkas sebelumnya (dibutuhkan oleh .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Phony target (dibutuhkan oleh .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Baris perintah target." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Merupakan baku, MAKEFILES atau -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Tidak ada aturan implisit." + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Pencarian aturan implisit sudah selesai." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Pencarian aturan implisit belum selesai." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Pola/implisit atau statis stem: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Berkas merupakan dibutuhkan untuk sementara." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Waktu ubah sudah diperiksa." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Berkas tidak ada." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Berkas sudah sangat tua." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Terakhir dimodifikasi %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Berkas sudah diperbarui." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Berkas belum diperbarui." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Perintah sedang berjalan (INI MERUPAKAN SEBUAH BUG)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Perintah ketergantungan sedang berjalan (INI MERUPAKAN SEBUAH BUG)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Sukses memperbarui." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Perlu untuk diupdate (-q diset)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Gagal untuk mengupdate." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Nilai yang salah dalam anggota 'command_state' !" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Berksa" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# berkas statistik hash-table:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Field '%s' not cached: %s" + +#: 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: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:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "argumen pertama untuk fungsi 'wordlist' bukan numerik" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "argumen kedua dari fungsi 'wordlist' bukan numerik" + +#: 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: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:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() gagal (e=%ld)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Membersihkan berkas batch sementara %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "berkas: nama berkas tidak ada" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "menulis: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "berkas: terlalu banyak argument" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "baca: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: invalid file operation: %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:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "Tidak terimplementasi dalam platform ini: fungsi '%s'" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "fungsi '%s' tidak diselesaikan: hilang '%c'" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Empty function name" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Invalid function name: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Function name too long: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Jumlah dari minimal argumen tidak valid (%u) untuk fungsi %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Jumlah dari maksimal argumen tidak valid (%u) untuk fungsi %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: opsi '%s' merupakan ambigu\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: opsi '--%s' tidak memperbolehkan argumen\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: opsi '%c%s' tidak memperbolehkan argumen\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: opsi '%s' membutuhkan sebuah argumen\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opsi tidak dikenali '--%s'\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opsi tidak dikenali '%c%s'\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opsi tidak legal -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opsi tidak valid -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opsi membutuhkan sebuah argumen -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: opsi '-W %s' merupakan opsi ambigu\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: opsi '-W %s' tidak memperbolehkan sebuah argumen\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Expanding '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Evaluating '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"tidak dapat mengalokasikan %lu bytes untuk tabel hash; kehabisan memory" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Beban=%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 "Tabrakan=%lu/%lu=%.0f%%" + +#: 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: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: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:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Menghindari aturan implisit rekursi.\n" + +#: src/implicit.c:451 +#, c-format +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:506 +#, c-format +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: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:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Mencoba persyaratan dari aturan '%s'.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Mencoba persyaratan implisit '%s'.\n" + +#: 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 '%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: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/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:552 +msgid " (core dumped)" +msgstr " (core di-dump)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (diabaikan)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Error %d%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Menunggu pekerjaan yang belum selesai...." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (remote)" + +#: 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:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Reaping anak hilang %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Membersihkan berkas batch sementara %s\n" + +#: 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: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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Melepaskan token dari proses anak %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() gagal untuk menjalankan proses (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Terhitung %d argumen gagal untuk dijalankan\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Memperoleh token untuk proses anak %p (%s).\n" + +#: 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: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:2106 +msgid "cannot enforce load limit: " +msgstr "tidak dapat memaksa mencapai batas beban: " + +#: 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: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: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:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Tidak dapat mengembalikan stdin\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Tidak dapat mengembalikan stdout\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Tidak dapat mengembalikan stderr\n" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: mungkin kehabisan ruang environment" + +#: 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:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Membuat berkas batch sementara %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Batch file contents:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Batch file contents:%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 (baris %d) shell context tidak baik (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Failed to open global symbol table: %s" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Failed to load symbol %s from %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Empty symbol name for load: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Loading symbol %s from %s\n" + +#: 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" +msgstr "Parallel jobs '-j' tidak didukung dalam platform ini." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opsi:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Diabaikan untuk kompatibilitas.\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRECTORI, --directory=DIREKTORI\n" +" Pindah ke DIREKTORI sebelum melakukan apapun.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Menampilkan banyak informasi debug.\n" + +#: 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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Variabel lingkungan memaksa makefiles.\n" + +# +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile " +"statement.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f BERKAS, --file=BERKAS, --makefile=BERKAS\n" +" Baca BERKAS sebagai sebuah makefile.\n" + +#: 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:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" +" -i, --ignore-errors Abaikan kesalahan dari perintah yang " +"dijalankan.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIREKTORI, --include-dir=DIREKTORI\n" +" Cari di DIREKTORI untuk makefile yang " +"disertakan.\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] Ijinkan N kerja secara bersamaan. Kerja tidak " +"terhingga jika tidak diberikan argumen.\n" + +#: 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: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" +" Jangan menjalankan multiple pekerjaan kecuali " +"beban dibawah 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 Gunakan waktu mtime terbaru diantara symlinks " +"dan target.\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" +" Jangan menjalankan perintah apapun; tampilkan " +"saja apa yang akan dikerjakan.\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 FILE, --old-file=BERKAS, --assume-old=BERKAS\n" +" Pertimbangkan BERKAS sudah sangat tua dan " +"jangan membuatnya lagi.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Tidak menjalankan perintah. Mengeluarkan " +"status saja dan mengatakan up to date.\n" + +#: 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: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: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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Menampilkan perintah (non-aktifkan --silent " +"mode).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Matikan opsi -k.\n" + +#: 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:384 +msgid " --trace Print tracing information.\n" +msgstr "" +" --trace Menampilkan banyak informasi debug.\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Tampilkan directory saat ini.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Matikan opsi -w, walaupun opsi ini diaktifkan " +"secara implisit.\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 FILE, --what-if=BERKAS, --new-file=BERKAS, --assume-new=BERKAS\n" +" Pertimbangkan BERKAS sebagai sebuah berkas " +"baru.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Peringatkan akan adanya variabel yang tidak " +"terdefinisi yang direferensikan.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "spesifikasi tingkat debug tidak diketahui '%s'" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "unknown output-sync type '%s'" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Penggunaan: %s [opsi] [target] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Program ini dibuat untuk %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Program ini dibuat untuk %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Laporkan bugs kepada \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Interupsi/Exception diterima (kode = 0x%lx, alamat = 0x%p)\n" + +#: src/main.c: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" +"Exception filter tidak dapat diatasi dari program %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 "Akses dilanggar: operasi tulis pada alamat 0x%p\n" + +#: 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: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: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: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." +msgstr "" +"Peringatan: server pekerja tidak ada: menggunakan -j1. Tambahkan '+' pada " +"aturan make paling atas." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"peringatan: -j%d dipaksakan dalam submake: resetting mode server pekerja." + +#: 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:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (berkas sementara)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"peringatan: -j%d dipaksakan dalam submake: resetting mode server pekerja." + +#: 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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Mereset kembali ke mode satu job (-j1)." + +#: 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: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: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: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:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Makefile yang dimasukan '%s' tidak ditemukan." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile '%s' tidak ditemukan" + +#: 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:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Menjalankan kembali[%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Tidak ada targets" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Memperbarui tujuan target....\n" + +#: 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: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: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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sAplikasi ini dibuat untuk %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sAplikasi ini dibuat untuk %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLisensi GPLv3+: GNU GPL versi 3 atau sesudahnya \n" +"%sIni adalah aplikasi gratis: anda bebas untuk mengubah dan menyebarkannya.\n" +"%sTidak ada JAMINAN, sepanjang diperbolehkan oleh hukum.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Membuat basis data, ditampilkan %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Selesai membuat basis data %s\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Menggunakan perintah baku untuk '%s'.\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Membuat berkas batch sementara %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (berkas sementara): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (berkas sementara)" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Meninggalkan sebuah direktori yang tidak diketahui\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Memasuki direktori '%s'\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Meninggalkan direktori '%s'\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Meninggalkan sebuah direktori yang tidak diketahui\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Memasuki direktori '%s'\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Meninggalkan direktori '%s'\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Berhenti.\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 "" + +#: 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:190 +msgid "creating jobs pipe" +msgstr "membuat pipa pekerjaan" + +# +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duping pipa pekerjaan" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inisiasi pipa server pekerja" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "internal error: tidak valid --jobserver-auth string '%s'" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "menulis jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "server pekerja dimatikan" + +# +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect pipa pekerjaan" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "membaca pipa pekerjaan" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Membaca makefile '%s'" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (tidak terdapat tujuan baku)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (jalur pencarian)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (tidak peduli)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (tidak terdapat ekspansi tilde ~)" + +#: 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:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Skipping UTF-8 BOM in makefile buffer\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintak salah dalam kondisional" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "perintah dijalankan sebelum target pertama" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "hilang aturan sebelum menjalankan perintah" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "pemisah hilang (apakah yang anda maksud TAB dari pada 8 buah spasi?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "pemisah hilang" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "pola target hilang" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "pola target banyak" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "pola target tidak memiliki '%%'" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "hilang 'endif'" + +#: 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:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "Kelebihan text sesudah 'endef' directive" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "hilang 'endef', tidak diselesaikan 'define'" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "kelebihan text sesudah 'endef' directive" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "kelebihan text sesudah '%s' directive" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "kelebihan '%s'" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "hanya satu 'else' dalam setiap kondisi" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Definisi variable target-specific memiliki format yang salah" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "grup target harus menyediakan sebuah perintah" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "aturan pola implisit dan static tercampur" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "aturan implisit dan aturan normal tercampur" + +#: 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: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: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:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "peringatan: memaksa perintah untuk target '%s'" + +#: 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:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** aturan implisit dan aturan normal: deprecated syntax" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "peringatan: memaksa keanggotaan grup untuk target '%s'" + +#: 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: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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s' sudah baru." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Pruning file '%s'.\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sTidak terdapat aturan untuk membuat target '%s'%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Mempertimbangkan berkas target '%s'.\n" + +#: 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Berkas '%s' baru saja dipertimbangkan.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Sedang memperbarui berkas '%s'.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Selesai memperbarui berkas '%s'.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Berkas '%s' tidak ada.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Peringatan: .LOW_RESOLUTION_TIME berkas '%s' memiliki sebuah penanda " +"waktu dengan resolusi tinggi" + +#: 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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Menggunakan perintah baku untuk '%s'.\n" + +#: 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:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Selesai melakukan semua persyaratan untuk berkas target '%s'.\n" + +#: 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:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Menyerah untuk membuat target berkas '%s'.\n" + +#: 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: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: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: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: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: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: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:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Membuat '%s' karena adanya tanda always-make.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Tidak perlu membuat lagi target '%s'" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; menggunakan nama VPATH '%s'" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Harus membuat lagi target '%s'.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Mengabaikan nama VPATH '%s'.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Perintah dari '%s' sedang dijalankan.\n" + +#: 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:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Sukses membuat kembali target berkas '%s'.\n" + +#: 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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Menggunakan perintah baku untuk '%s'.\n" + +#: 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:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS elemen '%s' bukan merupakan sebuah pattern" + +#: 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:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "peringatan: mengabaikan persyaratan di awalan aturan definisi" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Aturan implisit." + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Tidak ada aturan implisit." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u aturan implisit, %u (%.1f%%) terminal." + +#: 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" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Hangup" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interupsi" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Berhenti" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Instruksi Tidak Legal" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Penangkap trace/breakpoint" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Dibatalkan" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Penangkap IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Penangkap EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Eksepsi titik pecahan" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Terbunuh" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Bus error" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Kesalahan segmentasi" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Panggilan sistem buruk" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Pipa rusak" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarm" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Dimatikan" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Sinyal definisi pengguna 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Sinyal definisi pengguna 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Proses anak berakhir" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Listrik bermasalah" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Dihentikkan" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Dihentikan (masukkan tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Dihentikan (keluaran tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Dihentikan (sinyal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Batas waktu CPU telah terlampaui" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Batas maksimal ukuran berkas terlampaui" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Pewaktu maya habis" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Pewaktu profiling habis" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Jendela berubah" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Dilanjutkan" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Kondisi I/O penting" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O mungkin" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Resource hilang" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Sinyal bahaya" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Permintaan informasi" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "co-processor titik pecahan tidak tersedia" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s # dari buffer 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 strcache free: %lu total = (%lu) / mak = %lu / min = %lu / rata-rata = " +"%lu\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 current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "besar %s strcache: total = %lu / count = %lu / rata-rata = %lu\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 strcache free: total = %lu / mak = %lu / min = %lu / rata-rata = %hu\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# berkas statistik hash-table:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "otomatis" + +#: src/variable.c:1789 +msgid "default" +msgstr "baku" + +#: src/variable.c:1792 +msgid "environment" +msgstr "lingkungan" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "lingkungan dibawah opsi -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "baris perintah" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "'override' direktif" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (dari '%s', baris %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# statistik variable set hash-table:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabel\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Nilai Variabel Pola-Spesifik" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Tidak terdapat nilai variabel pola-spesifik" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u nilai variabel pola-spesifik" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "peringatan: variabel '%.*s' tidak terdefinisi" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() gagal dengan kode %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-warning, kamu mungkin telah mengaktifkan pengontrolan CTRL-Y dari DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BAWAAN 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 "Meneruskan output ke %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Append %.*s and cleanup\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Menjalankan perintah %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH Jalur Pencarian\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Tidak ada 'vpath' dalam jalur pencarian." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u 'vpath' jalur pencarian.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Tidak ada ('VPATH' variabel) umum dalam jalur pencarian." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Jalur pencarian umum untuk variabel 'VPATH':\n" +"# " + +#: 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:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "creating jobserver semaphore: (Error %ld: %s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Jobserver client (semaphore %s)\n" + +#: 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: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" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Error 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "%s: Command not found" +#~ msgstr "%s: Perintah tidak ada" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Shell program tidak ditemukan" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "internal error: opsi --sync-mutex lebih dari satu" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s dihentikan selama 30 detik..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "selesai tidur(30). Melanjutkan.\n" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "internal error: opsi --jobserver-fds lebih dari satu" + +#~ msgid "dup jobserver" +#~ msgstr "dup server pekerja" + +#~ msgid "Unknown error %d" +#~ msgstr "Kesalahan tidak diketahui %d" + +#~ msgid "virtual memory exhausted" +#~ msgstr "Kehabisan memori maya" + +#~ msgid "write error" +#~ msgstr "error menulis" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Peringatan: Berkas '%s' memiliki waktu modifikasi dimasa depan" + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Peringatan: redirection kosong\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "kesalahan internal: '%s' command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "BAWAAN [%s][%s]\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "BAWAAN RM %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Perintah bawaan '%s' tidak diketahui\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Error, perintah kosong\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Meneruskan masukan dari %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Meneruskan error ke %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Meneruskan output ke %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Gagal spawning, %d\n" + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Nilai yang salah dalam anggota `update_status' !" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Error 0x%x (diabaikan)" + +#~ msgid "process_easy() failed failed to launch process (e=%ld)\n" +#~ msgstr "process_easy() gagal untuk menjalankan proses (e=%ld)\n" + +#~ 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 "" +#~ "%sIni adalah piranti lunak bebas; lihat kode program untuk syarat " +#~ "penyalinan.\n" +#~ "%sTIDAK TERDAPAT GARANSI; bahkan untuk PENJUALAN atau \n" +#~ "%sKESESUAIAN UNTUK TUJUAN TERTENTU.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "kelebihan `endef'" + +#~ msgid "empty `override' directive" +#~ msgstr "directive `override' kosong" + +#~ msgid "invalid `override' directive" +#~ msgstr "directive `override' tidak valid" + +#~ msgid "" +#~ "\n" +#~ "%s # of strings in strcache: %d\n" +#~ msgstr "" +#~ "\n" +#~ "%s # dari string dalam strcache: %d\n" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-warning, CTRL-Y akan meninggalkan sub-process(es).\n" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Tidak terdapat files." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u files dalam %u hash buckets.\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "" +#~ "# rata - rata %.3f files per bucket, maksimal %u files dalam satu " +#~ "bucket.\n" + +#~ msgid "the `word' function takes a positive index argument" +#~ msgstr "fungsi `word' mengambil sebuah argumen index yang positif" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "Sintak error, masih didalam '\"'\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "Mendapat sinyal SIGCHLD; %u unreaped childern.\n" + +#~ msgid "DIRECTORY" +#~ msgstr "DIREKTORI" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "Pindah ke DIRECTORY sebelum melakukan sesuatu." + +#~ msgid "FLAGS" +#~ msgstr "FLAGS" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "Proses dihentikan untuk memberikan kesempatan debugger" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "Variabel environment digunakan dalam makefiles" + +#~ msgid "FILE" +#~ msgstr "FILE" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "Baca FILE sebagai sebuah makefile" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "Cari DIREKTORI untuk makefiles yang dibutuhkan" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "Tidak melakukan banyak jobs jika beban lebih dari N." + +#~ msgid "Don't actually run any commands; just print them" +#~ msgstr "" +#~ "Jangan menjalankan perintah apapun. Hanya tampilkan saja apa yang akan " +#~ "dilakukan" + +#~ msgid "Consider FILE to be very old and don't remake it" +#~ msgstr "" +#~ "Anggap FILE sudah sangat tua dan jangan dibuat kembali file tersebut" + +#~ msgid "Don't echo commands" +#~ msgstr "Jangan menampilkan perintah yang dijalankan" + +#~ msgid "Turns off -k" +#~ msgstr "Matikan opsi -k" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "Pertimbangkan FILE sebagai file yang baru." + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Jangan menspesifikasi -j atau --jobs jika sh.exe tidak ada." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Mereset kembali make pada mode job tunggal." + +#~ msgid "Entering" +#~ msgstr "Memasuki" + +#~ msgid "Leaving" +#~ msgstr "Meninggalkan" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "tidak terdapat nama file untuk `%s include'" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "target `%s' meninggalkan persyaratan pola kosong" + +#~ msgid "# No variables." +#~ msgstr "# Tidak ada variabel." + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "" +#~ "# rata - rata dari %.1f variabel per bucket, maksimal %u dalam satu " +#~ "bucket.\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "" +#~ "# rata - rata dari %d.%d variabel per bucket, maksimal %u dalam satu " +#~ "bucket.\n" diff --git a/local/recipes/dev/gnu-make/source/po/insert-header.sin b/local/recipes/dev/gnu-make/source/po/insert-header.sin new file mode 100644 index 0000000000..b26de01f6c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/insert-header.sin @@ -0,0 +1,23 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# At each occurrence of a line starting with "msgid ", we execute the following +# commands. At the first occurrence, insert the file. At the following +# occurrences, do nothing. The distinction between the first and the following +# occurrences is achieved by looking at the hold space. +/^msgid /{ +x +# Test if the hold space is empty. +s/m/m/ +ta +# Yes it was empty. First occurrence. Read the file. +r HEADER +# Output the file's contents by reading the next line. But don't lose the +# current line while doing this. +g +N +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/local/recipes/dev/gnu-make/source/po/it.gmo b/local/recipes/dev/gnu-make/source/po/it.gmo new file mode 100644 index 0000000000000000000000000000000000000000..8e082aadd4376a3c0ebc7d7950ec0b6c705777e9 GIT binary patch literal 41012 zcmchg37lLp>eM->>fHI_DM!CL;CI(!g5Vr*?1@2e+)+XB>@##X2<{Et{WpOZ zbNxZ^LhxJQiQvhrg5dGsDv*D{Mf_I)$H0@p+rbdL$KQWDcq-SQ2m8S9gXe>1t`36J zz)j%s;3W7Ia2ixq?gV#%uLC!N-vap;TuA1#!BH>-Bd`hH1&)C~2bJ&o3xZ$^_&V?^ z@QdJf@QmIdxDK2JWAKl_ZQ$uNQrCMy<^L2|0YfUi6?`dp1Na&6PVl@nuH1XUVXhwq zXTfvVQU>@!Q1$*AI0&w~Cr5wHjR5_lH) zE$|fZn02mS&j3~aMc@hGWuW+A7(59a10iK_tH1vO@CvT)0hRu*!4ttpz|+C6fcy)7 z&VPFU#p~VuE#R44-vWvs4uFt0coq0$@B<)S6MPzkbiq&k^#vOozupKc-9Zpm2=4Lt z4v?-0J_ACk;QxY&^D(Ai6Ch&`(`0Sj^9F{;U9~2$G4n7Y29;kl%5vcKb=2IOVE(g`mlc36f zIjDNP6Vy2UBzOw=Gf?z9{&I(XpxQYEik?+a{dAAN|4vZ!_!1a`$J1$|?*MonIOVYg z>b`~{QXzD@+LsNuL-KW-vgfnz7JIXPl9ws@D=b0;HePh zG;kHD{=3rSE#Mf}cY;(k_ynl-AI;#>bqH$Q+yshGUjvFR_k!Y+hr!dqAN%JgLd;{i zJ`>dYSAleKFafF_cY$YsuLM=k`$3iSAyEAM&!Fh=GcW{uu6Fgg7*zgkpz1LJ>bJwFPHUw#0d37!eli0>{1Rn9ml`riVooI60JdkHB1c?+m<{U`qV zFG11y!=TFf9C#}D6HxCt0b;42E(KMOXMm#j?ciD98$j{ldqL6R3!wPuhu~Ad)z`Z5 zbRDSY`#|M;0eBwx22lL`K~VMmFsOQd8dSYL4~h=o^Vg?d=i0dzRJ$$(88X3kkIw@` zuHOZo3w{<<`9B0zpI?A#-&sRJzz_)5gR0Lgh=>TD2O_$IcY-SSQBZV0VYBPEK~VMC z4Qf0*8&vwYfvV4^!K1)$gR8*rfqL)B!%n`h10_HAf#Q=Ecn)|kxElNbsDAu1D1QAG zsQy~D#l3Hx$6G=1<4Zh#02Kdx4;0;w9dYT;29M@?6g(N+0jmAa^mqW&d+!0y2Oj`6 zJ|6*Lf#9)QoqQew)s96_?S3t&`h6G_AO8YWIgdwpi5?e&=YbQT?l(Y{{~A#3c^{~L z{wR1X_;;Y>(&xYnz;A;Wf+t_^=z1lnei{dregQlQY=LU;U7*I_?}5tq0H}WZEU0=O zHR|~ADv&8Fm;u!fuLRW(uLnh!kAkY_7eUqks2kjSSA(MOCQ$F00@c6!K;^r~!j6sYm@GJpM7U@zA{0Y$fSce;F+gL?mVkgf@ep!n)-pz85aa4q-` zpy+k%F4x{+@bO$91l7NHf+vE11d1=-4T`@%4T^qW1y2LdeVXfsr-Ew76sUSX2RsUV zjeq_+P;`7RcoFy!a6R~a@MLiHxa+seK&2Z7MW|V3_z0+Rebj_|ejd1i z>oHK}-vNq0?gPc29|I+if=QSDa!})D#^YV!rCi?!8ht?JJ9f(T_cfsCQUOKJ-vLhm z{}hy5`Vgr4Jqqf*PuT6o_r;*-Tm}chw}7hWmqE4bl$%^XT?<~u_1&QA{{c|-`zE*! ze8SURzitH8FFV2G!M)&XAH#SBHLi|%hNI6~@Di?{4l3PCK=JGAzykOtQ2qER@JZlt zd*C(jDc~UZ4Dbx_)!rG_nGh-_&Tr&eh(~xr6Rln zehh>~f@>*M_)72v;MYLat2`3~o58n$74VxN|AHwBxfXmcxDEU%xBw1C*f`(={P$Y$ z)LD28d^>m-*gxmW`!i7Ke*|s?OY`pj{on-G-v!m)&1FaL-v*E4`eE=~@U!4*@Q0xK z<&1r9eD{M&w*@>6+~My>pybSR!1KWuf#-p5_xK4=`Mv`x-;cp#!4vj7J~|DQ9JvsD zJU9kk2Tp-{|7*Zg!MA}b_e0yyO6=;l0~G%* zfUCei09B6b;fXa7l&5gf)a2?l0a2xmvP<-||a12~`n;X~921T#;fsX?p0#)wE zL6!GIk7w0gzH7lg?%xBdfBziZ0{%TH`kd2n?YYY16jTS4fqXE?>p&$lY3W# zr*b_5J{epDZvsfFY_%TrYcGe*`uU!X@bG-;Y5qua_ z{?CEy!DA2->gUVBEO0IAA*RKT6z{$j zcg(Y0`wF1iH3*7-_JgWt(?7o(R5`B()&CEGXMz6!ZUBD*ZUirSj_a>k@N%wS4W11? z466UW395Z3Bcv_?uK+b3_krr?SAk0Z5Ga2A5~%b?KiAdkB2e_Y6jZ-#2360Upz1#Z ziY~A6&+iAt*Y5#`!Ow%L=XrNJ{@eqKFP{r)yu1liKfe_`9sCR^dHHQn=`MYq8@E$n zKi4k-_53~H1o$7I=sNLy*ZyaL*Kz$$Q1|~0RQYGW!092|K+*FCP~+hcsB+#4o&^2^ z6djNMO*f9VfJzsG; zfU95R_+&w*{h}AUe!mhtmg^x<{W1z(2o^ow4W7sK1K?%g zr$Dvm=$E*BXM^IC^FhgpD?stf7crN!p?eY8I8m>=znHvXJfueH-6kT5ks=j{%ihiF5 zd%)9w+x6pWaG2{`z&+r-9)AI3#z^! z2K&KJf~SB#2QLOsc#W&qAgJ-M0}R2tJ>CbZT_5+?KLL;8`pnllx}5`_#Pv1cb>L1= z{qu5A{r<4WZ-b)u6MxsW;~bCU9`6PRdHz9A{qa*!{dM;197f=!TtDFPE1=S!{(EkG zjDvdqVz3YVAgJ;Gbx`%``F+>^t>75f4e$!^L*P2_C*TOU=D#_5RKc^jem;0L_8V+YTk4E~e9-^2BT zoNwlM8b_65J@@`Q_*o8(9j*D~e@rFzdj|K<|NvM{`VZlsWYKUk=j$e?L7#7bE}kxV{pc z02yNTJKdN2L#`g?xR~q5a9qN1CD(t+QSoX1ob$ip(C-$GKj8Q?j(r@-FXZI!I42;~0)F zaOk&{`}#f3LGW~N&fj}K=O=SM4&Lscf5W5TQ11M1{rNLV|8CA7;P@HGF0N1V&&I%2 z9RGvknH*>EY!>_o#~RL`0V3Xl6F8se&~Fgz0VVs!IsXy3%0J^Y_&LW{IGP+gxqlw` z6OJvMKLyn9c+Ot|zK`P|$0m+F-1`lV?{fYfjte;S8|L^ejwzmfLO1+xn(L=?Y~;9( zL%*+bT+Q)ij=MPyasQve1^@h7&XeE&YA-K-x`xmZH=Fsmt z`yYG3XrO zk^C+rt$u4c-o|l{F8JNZQQ)|m=eKkGJ?H<(@gk0Xu0IFr*YCi5WLNof!3%u3L!58% z_nZFSyY!r6HPyTf#-14eLCI#0mrEv*K%(!N69}sLl61g$@O~h4IJOo4SpLO z1gG)rg`B@h*FEQly{)kCK&{xE?+Y7Iu|6{&>Y_2w;~$n6YL)U#xf#}5m8j9L^lN$t zHq7?+t__<}eW6?}Rt9`pa&oI$Xw;&a@@#n~JW#Bci_?{elS(UUDA|^BJ(_98^>Wm( zS8Od)tR8GFSIdq0s1$B5?vKJ!u~`hKi;XCZt6{H8x-F_k^6&5D5Ge6cZKXd0~>&0@3RsLg^@(aNM$f=q-iCI`1r3!`ULODutC|t2#4JlF9jUgZ_%=>cs_` zQLZ#YUf~#H*=IDSv6jqJ)%jwzr1GLeGf}Nsro*8ctQyV~E4n{hj~CM7;kJ<^-EdrT zH9eHw+gd4l!sKoal}h!fp=Pc>)LZKb!mv;%MboXhJ)5?U4Q-paHO&8ZiSvwo<5nYV zF4pM5cs8^QbI=_U7zI^TMxqL<#s%ZoLdg%H#iYQ=R=rB@*|2c1Ka37U)v!DpLgj-+ zisl*ZqrnNQRu;1Y8xWa#bpA$W=Hrl2T2{5zl*$cbt3tsiUw|fSeIdan>W3Kc5{ zi;IoIg2YGmo2t&l)lylMq^}o4d(2tbgx8{`1RdlZ4!4Ysj|@-l9KTsbr8M4@-tNhY z>~=N`i!nT!aaK?`9np!1vRD)-Ru`M|oVfRmgcFnFqdT_gWf8)0le<*OBa)RGApRD; zShQMepfe76v_P-9az?Y)si<;wrqU`!s{aw!+>4jAp*FC5L8bJ?o=#(W3!-FZf1$Cs zP$^gU7nyGCwRv2m+e zYc(miIUHYfI85_KvOH-o@iL#glWS*FDz{Noq9DC-m=}&m#ge0C+jw+DoL4jEqe^Wl zNxT@;^u;h~XbRO3hz^zg2resc*+^ZW?QvaW$^Bdhg#ND0QC=#$*X|4V?68p|PT#X> zM{bT8s#M~G;SM(jicKbfnP_9m0Pgm|a&tbc#+q|odHYqBjH#1q2ycYdLt}L(nHw>K z+e=U;(Q02)47N}#MXsnyQngB4EES6M3oTa_^@@e!p@Qz~`Y>eQ602y0ULA?jsx-?r zWS|Y~Ru#3UfqFr|K-}rb8tmR))m!$p8cjE4>Z(*CBYJOfrrEMdgPaoJ zep1{Rs%)n|O5`oLx5g=##g$UmvCI8mb?idH#gP2QJtd<`J+iqhVWgUx=~V=j=YlEE zt`8j(Ds`W#)Xbkq*$?2)rOx4V^tuEi(4{dK-O~tW_>a4KMYFbLp8hG-;x}v68Gw z=CiefT+EnC(psoRrL|l-R+=f+BVCz{QPKS&b33oc7+B`^ph|Xf%L=kuEtKcxO%gO2 zF*7v4J%Tf$*&@Ri5mKzEMA+#L7^zldmWr#oLpQ`tt3=KW<$(k=oDfKXjT;R&1z|ic zxdCIFt&&iYG-`b##+axN1m}n0P*RQlaQo1WBbphR%9-5~y=h&;>pkfN;__7}M4j6h zR56=ne(*B!w62Ha1#BIR6;aGFm}T1%)gtuU>I^mUgNHoTs(NzGPn4niQ)DLUwF!fTs8klS z)#@nKx3$U*bcE~$Bus>l-5gEqYPCNxywh61PcHAW$9d~JJEEwB*<|{Xr)apQaGRzWlt9-}yXIr&0@u^wnmpAc1qOCqzjMdUKBZ)) zOgwRMx1`t{qdTW2T(s}6GWX0))752VkD6FZu4^<{yShcrPgO?sX_qv?1ryhgjE%t=IHiLAdMG^+HOkMa;}q$A=N&ZfV9%rgjqI%TYP#TKOwR zP4>)taP-DpIePQba?%P=Zdw7oLpggJIFA~fq%a~SLxRps`2A3=noV!YG8m>w5`n$w zhq@kaEk|&g2yN_U?kj5LUoxuF>#bUIUFxVo32kZaVSaOS-=W^hq5iOlTZR_PCu1}p z49BA4ft4$kr07Fb>lH8c%KB}OfU6QM5JJ7!_E>554clT;FZVY)omLI5p& zYLXt8)$(N&3cth)3pdg1Bd(rLy=)D;RSrcerBTnRCMy5M&N0$F9OAUG`z*M&s5EPdx! zUz+1!9d&iZER|w?A)KkiGy8*~nsoB8ci zHPXG-B@(O$aahf*3bh)xiV3wv($TTW(H-IN7MD}%z@ijbTVe<{O961)X8J)@D>TPl zXBI5}Kwi})0aZB8s!@;kqu|%@#|N8HCe0xf4DXt9N^GUPfVW>u8xkqO@O+u6Qw}Cw zlo_*`4ytPx70E?#Rk7B-2Elq ztd^!94CAqh7w9;1onU#wfD-mS0fWMyXezIxh|S?02}ZV0hOA!Hf{}$BQ(8Ot zFI~sY8%E{`?pg=G=xY{?D3 R(oX;~Gx(CiTF-70c>@*d}rgU@}YGb*4<$`GT$a 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 D_|Wx3 literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/it.po b/local/recipes/dev/gnu-make/source/po/it.po new file mode 100644 index 0000000000..1e06f073f4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/it.po @@ -0,0 +1,2525 @@ +# Italian messages for GNU make. +# Copyright (C) 2009 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Francesco Groccia , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\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 \n" +"Language-Team: Italian \n" +"Language: it\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-Editor: Vim with po plugin\n" + +#: 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: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:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: l'archivio «%s» non esiste" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: «%s» non è un archivio valido" + +#: 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: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»" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"lbr$set_module() non è riuscita a estrarre informazioni sul modulo, stato = " +"%d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() non riuscita con lo stato = %d" + +#: src/arscan.c:261 +#, c-format +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: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:996 +msgid " (name might be truncated)" +msgstr " (il nome potrebbe essere troncato)" + +#: 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, modo = 0%o.\n" + +#: 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:501 +msgid "*** Break.\n" +msgstr "*** Interruzione.\n" + +#: 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: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:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Eliminazione del file «%s»" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Eliminazione del file «%s»" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# set di istruzioni da eseguire" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (comando interno):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (da «%s» riga %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Directory\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: impossibile eseguire stat.\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: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: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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (key %s, mtime %I64u): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (device %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "No" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " file, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "no" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " impossibilità" + +#: src/dir.c:1180 +msgid " so far." +msgstr " finora." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " impossibilità nelle directory %lu.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "riferimento alla variabile non terminato" + +#: 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: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: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: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: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: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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Eliminazione del file intermedio «%s»" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Rimozione dei file intermedi...\n" + +#: 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: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:1089 +msgid "# Not a target:" +msgstr "# Non è un obiettivo:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# File \"precious\" (prerequisito di .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Obiettivo \"phony\" (prerequisito di .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Obiettivo a riga di comando." + +#: 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:1102 +msgid "# Builtin rule" +msgstr "# Regola incorporata" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Regola di ricerca implicita completata." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Regola di ricerca implicita non completata." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Stem implicito/statico del modello: «%s»\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Il file è un prerequisito intermedio." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Ora di modifica mai controllata." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Il file non esiste." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Il file è molto vecchio." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Ultima modifica %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Il file è stato aggiornato." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Il file non è stato aggiornato." + +#: 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:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Dipendenze del set di istruzioni in esecuzione (QUESTO È UN BUG)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Aggiornato con successo." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Richiede di essere aggiornato (-q è impostato)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Aggiornamento non riuscito." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valore illecito nel membro \"command_state\"!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# File" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# statistiche tabella hash dei file:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Campo «%s» non memorizzato: %s" + +#: 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: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:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "primo argomento non numerico per la funzione \"wordlist\"" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "secondo argomento non numerico per la funzione \"wordlist\"" + +#: 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: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:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() non riuscita (e=%ld)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Pulitura del file batch temporaneo %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: file mancante" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "apertura: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "scrittura: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "chiusura: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: troppi argomenti" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "lettura: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: operazione sui file non valida: %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:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "non implementata su questa piattaforma: funzione «%s»" + +#: 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:2791 +#, c-format +msgid "Empty function name" +msgstr "Nome della funzione vuoto" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Nome della funzione non valido: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Nome della funzione troppo lungo: %s" + +#: 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:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Numero massimo di argomenti non sufficienti (%u) per la funzione %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: l'opzione «%s» è ambigua\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: l'opzione «--%s» non ammette argomenti\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: l'opzione «%c%s» non ammette argomenti\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: l'opzione «%s» richiede un argomento\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opzione «--%s» sconosciuta\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opzione «%c%s» sconosciuta\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opzione illecita -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opzione illecita -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: l'opzione richiede un argomento -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: l'opzione «-W %s» è ambigua\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: l'opzione «-W %s» non ammette argomenti\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Espansione di «%s»\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Valutazione di «%s»\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "impossibile allocare %lu byte per la tabella hash: memoria esaurita" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Carico=%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 "Collisioni=%lu/%lu=%.0f%%" + +#: 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: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: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:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Evitata la ricorsione della regola implicita.\n" + +#: src/implicit.c:451 +#, c-format +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:506 +#, c-format +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: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:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Tentativo di usare il prerequisito della regola «%s».\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Tentativo di usare il prerequisito implicito «%s».\n" + +#: 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 '%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: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/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:552 +msgid " (core dumped)" +msgstr " (creato dump del core)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignorato)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: 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:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Attesa per i processi non terminati...." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (remoto)" + +#: 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: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:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Pulitura del file batch temporaneo %s\n" + +#: 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: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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Token rilasciato per il processo figlio %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() non riuscita all'avvio del processo (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Contati %d argomenti nell'avvio fallito\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Token ottenuto per il processo figlio %p (%s).\n" + +#: 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: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:2106 +msgid "cannot enforce load limit: " +msgstr "impossibile far rispettare il limite di carico: " + +#: 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: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: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:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Impossibile ripristinare lo standard input\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Impossibile ripristinare lo standard output\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Impossibile ripristinare lo standard error\n" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: lo spazio dell'ambiente potrebbe essere esaurito" + +#: 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: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:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Contenuti del file batch:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Contenuti del file batch:%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 (riga %d) contesto della shell errato (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Apertura della tabella dei simboli globale non riuscita: %s" + +#: 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: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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Nome del simbolo vuoto per il caricamento: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Caricamento del simbolo %s da %s\n" + +#: 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" +msgstr "L'operazione «load» non è supportata su questa piattaforma." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opzioni:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignorato per compatibilità.\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Cambia DIRECTORY prima di fare qualunque " +"cosa.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Mostra molte informazioni di debug.\n" + +#: 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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Le variabili ambiente sovrascrivono i " +"makefile.\n" + +#: 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:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Legge FILE come un makefile.\n" + +#: 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: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:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Cerca nella DIRECTORY per i makefile inclusi.\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] Permette N processi alla volta; infiniti se " +"non viene specificato l'argomento.\n" + +#: 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: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" +" Non avvia processi multipli a meno che il " +"carico di lavoro non sia sotto 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 Usa il più recente mtime tra i collegamenti " +"simbolici e l'obiettivo.\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" +" Non esegue alcun set di istruzioni; lo stampa " +"solamente.\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 FILE, --old-file=FILE, --assume-old=FILE\n" +" Considera il FILE come molto vecchio e non " +"riesegue make.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TIPO], --output-sync[=TIPO]\n" +" Sincronizza l'output dei processi paralleli " +"dal TIPO.\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Non avvia alcun set di istruzioni; lo stato di " +"uscita indica se è aggiornato.\n" + +#: 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: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: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: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:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Disattiva l'opzione -k.\n" + +# ## touch = in questo contesto è simile alla funzione del comando 'touch' +#: 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:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Stampa informazioni di tracciamento.\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Stampa la directory corrente.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Disattiva l'opzione -w, anche se era stata " +"attivata implicitamente.\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 FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Considera il FILE come nuovo di zecca.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Avvisa quando viene referenziata una variabile " +"non definita.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "livello di debug specificato sconosciuto «%s»" + +#: 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:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [opzioni] [obiettivo] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Questo programma è stato compilato per %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Questo programma è stato compilato per %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Segnalare i bug a \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" +"%s: catturata una interruzione/eccezione (codice = 0x%lx, indirizzo = 0x%p)\n" + +#: src/main.c: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" +"Filtro eccezione non gestita chiamata dal programma %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 "Violazione accesso: operazione di scrittura all'indirizzo 0x%p\n" + +#: 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: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: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: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." +msgstr "" +"attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla " +"regola make superiore." + +#: 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:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Il Makefile dallo standard input è stato specificato due volte." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (file temporaneo)" + +#: 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: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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Reimpostazione alla modalità a singolo processo (-j1)." + +#: 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: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: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: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:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Il makefile «%s» incluso non è stato trovato." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Il makefile «%s» non è stato trovato" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Impossibile ritornare alla directory originale." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Riesecuzione[%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Nessun obiettivo" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Aggiornamento degli obiettivi....\n" + +#: 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: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:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "l'opzione «-%c» richiede un argomento intero positivo" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sCompilato per %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sCompilato per %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%s Licenza GPLv3+: GNU GPL versione 3 o successiva .\n" +"%s Questo programma è software libero: siete liberi di modificarlo e " +"ridistribuirlo.\n" +"%s Non c'è ALCUNA GARANZIA, per quanto consentito dalle vigenti normative.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Generazione del database delle informazioni, creato il %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Generazione del database completata il %s\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: 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:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Creazione del file batch temporaneo %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (file temporaneo): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (file temporaneo)" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: uscita dalla directory sconosciuta\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: ingresso nella directory «%s»\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: uscita dalla directory «%s»\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: uscita dalla directory sconosciuta\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: ingresso nella directory «%s»\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: uscita dalla directory «%s»\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Arresto.\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 "" + +#: 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:190 +msgid "creating jobs pipe" +msgstr "creazione della pipe dei processi" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "beffa della pipe dei processi" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inizializzazione nella pipe della modalità jobserver" + +#: 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:363 +msgid "write jobserver" +msgstr "scrittura del jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "job server spento" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect della pipe dei processi" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "lettura della pipe dei processi" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Lettura del makefile «%s»" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (nessun obiettivo predefinito)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (percorso di ricerca)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (ignora)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (nessuna espansione per «~»)" + +#: 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:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "UTF-8 BOM nel makefile buffer saltato\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintassi illecita nel condizionale" + +#: 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:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "regola mancante prima del set di istruzioni" + +#: 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:1156 +#, c-format +msgid "missing separator" +msgstr "separatore mancante" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "modello mancante per l'obiettivo" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "modelli multipli per l'obiettivo" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "il modello dell'obiettivo non contiene alcun «%%»" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "«endif» mancante" + +#: 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:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "testo non pertinente dopo la direttiva «define»" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "«endef» mancante, «define» non terminato" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "testo non pertinente dopo la direttiva «endef»" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "testo non pertinente dopo la direttiva «%s»" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "«%s» non pertinente" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "un solo «else» per condizionale" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Definizione malformata della variabile specifica per l'obiettivo" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "gli obbiettivi raggruppati devono fornire un set di istruzioni" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "regole del modello implicite e statiche miste" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "regole implicite e normali miste" + +#: 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: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: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:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "attenzione: sovrascrittura del set di istruzioni per l'obiettivo «%s»" + +#: 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:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** regole implicite e normali miste: sintassi deprecata" + +#: 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: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: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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "«%s» è aggiornato." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Pulizia del file «%s».\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%s Nessuna regola per generare l'obiettivo «%s»%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Considerato il file obiettivo «%s».\n" + +#: 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Il file «%s» è già stato esaminato.\n" + +#: 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:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Aggiornamento del file «%s» terminato.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Il file «%s» non esiste.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Attenzione: il file .LOW_RESOLUTION_TIME «%s» ha una marcatura temporale " +"ad alta risoluzione" + +#: 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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Uso del set di istruzioni predefinito per «%s».\n" + +#: 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:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Prerequisiti del file obiettivo «%s» terminati.\n" + +#: 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:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Abbandono sul file obiettivo «%s».\n" + +#: 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: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: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: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: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: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: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: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:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Non è necessario rigenerare l'obiettivo «%s»" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; uso del nome VPATH «%s»" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "L'obiettivo «%s» deve essere rigenerato.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Nome VPATH «%s» ignorato.\n" + +#: 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:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Rigenerazione del file obiettivo «%s» non riuscita.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "File obiettivo «%s» rigenerato correttamente.\n" + +#: 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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Uso dei comandi predefiniti per «%s».\n" + +#: 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:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "l'elemento .LIBPATTERNS «%s» non è un modello" + +#: 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:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Regole implicite" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Regole non implicite." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u regole implicite, %u (%.1f%%) terminale." + +#: 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" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Chiusura" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interruzione" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Uscita (con core dump)" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Istruzione illecita" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Rilevato trace/breakpoint" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Annullato" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Rilevato IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Rilevato EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Eccezione in virgola mobile" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Ucciso" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Errore di bus" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Errore di segmentazione" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Chiamata di sistema errata" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Pipe interrotta" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Sveglia" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminato" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Segnale 1 definito dall'utente" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Segnale 2 definito dall'utente" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Processo figlio uscito" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Mancanza di alimentazione elettrica" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Fermato (da terminale)" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Fermato (input tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Fermato (output tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Fermato" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Limite di tempo CPU superato" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Superato il limite di dimensione file" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Timer virtuale terminato" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Timer di profiling terminato" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Finestra modificata" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continuato" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Condizioni di I/O urgente" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O consentito" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Risorsa persa" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Segnale di pericolo" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Richiesta informazioni" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Co-processore a virgola mobile non disponibile" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s buffer strcache assenti\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 buffer strcache: %lu (%lu) / stringhe = %lu / memorizzazione = %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 buffer corrente: dimensione = %hu B / usato = %hu B / numero = %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 altra usata: totale = %lu B / count = %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 altra libera: totale = %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 prestazioni strcache: lookups = %lu / hit rate = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# statistiche della tabella hash:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatico" + +#: src/variable.c:1789 +msgid "default" +msgstr "predefinito" + +#: src/variable.c:1792 +msgid "environment" +msgstr "ambiente" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "ambiente con l'opzione -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "riga di comando" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "direttiva \"override\"" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (da «%s», riga %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# statistiche tabella di hash del set di variabili:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabili\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valori di variabile non specifici per il modello" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Nessun valore per la variabile \"pattern-specific\"." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valori di variabile specifici per il modello" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "attenzione: variabile «%.*s» non definita" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() non riuscita con %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-attenzione, potrebbe essere necessario riabilitare la gestione di CTRL+Y da " +"DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "CD INTERNO %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 "Accoda output a %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Accoda %.*s e pulisce\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Verrà invece eseguito %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Percorsi di ricerca VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Non ci sono percorsi di ricerca 'vpath'." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# percorsi di ricerca 'vpath' %u.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Percorso di ricerca non generale (variabile «VPATH»)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Percorso di ricerca generale (variabile «VPATH»):\n" +"# " + +#: 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:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "creazione del semaforo del jobserver: (Errore %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"errore interno: impossibile aprire il semaforo del jobserver «%s»: (Errore " +"%ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Client del jobserver (semaforo %s)\n" + +#: 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: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/local/recipes/dev/gnu-make/source/po/ja.gmo b/local/recipes/dev/gnu-make/source/po/ja.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e90152fa4fdb6813ac829758f166241df223b39d GIT binary patch literal 54247 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 literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/ja.po b/local/recipes/dev/gnu-make/source/po/ja.po new file mode 100644 index 0000000000..a74826205c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/ja.po @@ -0,0 +1,2652 @@ +# Japanese message catalog for make +# Copyright (C) 2001 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Daisuke Yamashita , 2001. +# Thanks to NISHIJIMA Takanori +# GOTO Masanori , 2003-2004. +# Takeshi Hamasaki , 2011, 2014, 2016, 2019, 2020, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: 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-25 01:14+0900\n" +"Last-Translator: Takeshi Hamasaki \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 2.4.2\n" +"X-Poedit-Basepath: make-4.3.90\n" +"X-Poedit-SearchPath-0: .\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„機能を使ãŠã†ã¨ã—ã¦ã„ã¾ã™: '%s'" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "VMS ã§ã¯æ›¸åº«ã®ãƒ¡ãƒ³ãƒã‚’ touch ã™ã‚‹æ©Ÿèƒ½ãŒã‚りã¾ã›ã‚“" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: 書庫 '%s' ãŒã‚りã¾ã›ã‚“" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "'%s' ã¯æœ‰åŠ¹ãªæ›¸åº«ã§ã¯ã‚りã¾ã›ã‚“" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: メンム'%s' 㯠'%s' 内ã«å­˜åœ¨ã—ã¾ã›ã‚“" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: '%s' ã¸ã® ar_member_touch ã‹ã‚‰ç•°å¸¸ãªå€¤ãŒè¿”りã¾ã—ãŸ" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() ãŒãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«æƒ…å ±ã®æŠ½å‡ºã«å¤±æ•—ã—ã¾ã—ãŸ. 状態 = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() ãŒå¤±æ•—ã—ã¾ã—ãŸ. 状態 = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "ライブラリ '%s' ã‚’é–‹ã‘ãªã„ãŸã‚, メンãƒã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ %d ãŒæ¤œç´¢ã§ãã¾ã›ã‚“" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (åå‰ãŒåˆ‡ã‚Šè©°ã‚られãŸã‹ã‚‚)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " 日付 %s" + +#: 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:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "レシピã®è¡Œæ•°ãŒå¤šã™ãŽã¾ã™ (ä¸Šé™ %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** 中断.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] 書庫ã®ãƒ¡ãƒ³ãƒ '%s' ã¯å¤šåˆ†å½ç‰©ã§ã™ ― 削除ã—ã¾ã›ã‚“ã§ã—ãŸ" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** 書庫ã®ãƒ¡ãƒ³ãƒ '%s' ã¯å¤šåˆ†å½ç‰©ã§ã™ ― 削除ã—ã¾ã›ã‚“ã§ã—ãŸ" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] ファイル '%s' を削除ã—ã¾ã™" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** ファイル '%s' を削除ã—ã¾ã™" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# 実行ã™ã‚‹ãƒ¬ã‚·ãƒ”" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (ビルトイン):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (ファイル '%s', %lu 行目):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# ディレクトリ\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: 状態を調ã¹ã‚‰ã‚Œã¾ã›ã‚“ã§ã—ãŸ.\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: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:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (device %ld, inode %ld): é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (key %s, mtime %s): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (device %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "0" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " 個ã®ãƒ•ァイル, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "0" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " 個ã®é©ç”¨ä¸èƒ½ãƒ•ァイルå" + +#: src/dir.c:1180 +msgid " so far." +msgstr " (ã“ã“ã¾ã§ã«)." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " 個ã®é©ç”¨ä¸èƒ½ãƒ•ァイルå (%lu 個ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå†…).\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "終端ã®ãªã„変数å‚ç…§" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "ファイル '%s' ã®ãŸã‚ã®ã®ãƒ¬ã‚·ãƒ”㌠%s:%lu ã§æŒ‡å®šã•れã¾ã—ãŸ," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "ファイル '%s' ã®ãŸã‚ã®ãƒ¬ã‚·ãƒ”ãŒæš—é»™ãƒ«ãƒ¼ãƒ«ã®æŽ¢ç´¢ã§è¦‹ã¤ã‹ã‚Šã¾ã—ãŸ," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "ã—ã‹ã—今㯠'%s' 㨠'%s' ã¯åŒã˜ãƒ•ァイルã¨è¦‹ãªã•れã¾ã™." + +#: 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:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "シングルコロン '%s' ã‹ã‚‰ãƒ€ãƒ–ルコロン '%s' ã«åå‰ã‚’変ãˆã‚‰ã‚Œã¾ã›ã‚“" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "ダブルコロン '%s' ã‹ã‚‰ã‚·ãƒ³ã‚°ãƒ«ã‚³ãƒ­ãƒ³ '%s' ã«åå‰ã‚’変ãˆã‚‰ã‚Œã¾ã›ã‚“" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** 中間ファイル '%s' を削除ã—ã¾ã™" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "中間ファイルを削除ã—ã¦ã„ã¾ã™...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: タイムスタンプãŒç¯„囲外ã§ã™ -- 代り㫠%s ã¨ã—ã¾ã™" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# ターゲットã§ã¯ã‚りã¾ã›ã‚“:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# 特別扱ã„ã®ãƒ•ァイル (.PRECIOUS ã®å¿…è¦æ¡ä»¶)" + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# 疑似ターゲット (.PHONY ã®å¿…è¦æ¡ä»¶)" + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# コマンドラインターゲット." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# デフォルトã¾ãŸã¯ MAKEFILES, -include/sinclude Makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# ビルトインルール" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# æš—é»™ãƒ«ãƒ¼ãƒ«ã®æŽ¢ç´¢ãŒè¡Œã‚れã¾ã—ãŸ." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# æš—é»™ãƒ«ãƒ¼ãƒ«ã®æŽ¢ç´¢ã¯è¡Œã‚れã¾ã›ã‚“ã§ã—ãŸ." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# æš—é»™/é™çš„パターン語幹: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# ファイルã¯ä¸­é–“å¿…è¦æ¡ä»¶ã§ã™." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# 修正時刻ãŒãƒã‚§ãƒƒã‚¯ã•れるã“ã¨ã¯ã‚りã¾ã›ã‚“." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# ファイルãŒå­˜åœ¨ã—ã¾ã›ã‚“." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# ファイルãŒéžå¸¸ã«å¤ã„ã§ã™." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# 最終修正 %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ›´æ–°ã•れã¦ã„ã¾ã™." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ›´æ–°ã•れã¦ã„ã¾ã›ã‚“." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# レシピをç¾åœ¨å®Ÿè¡Œä¸­ã§ã™ (*ã“れã¯ãƒã‚°ã§ã™*)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# ä¾å­˜é–¢ä¿‚レシピを実行中ã§ã™ (*ã“れã¯ãƒã‚°ã§ã™*)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# æ›´æ–°ã«æˆåŠŸã—ã¾ã—ãŸ." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# æ›´æ–°ãŒå¿…è¦ã§ã™ (-q ãŒã‚»ãƒƒãƒˆã•れã¦ã„ã¾ã™)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# æ›´æ–°ã«å¤±æ•—ã—ã¾ã—ãŸ." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# 'command_state' メンãƒã«ç„¡åйãªå€¤ã§ã™!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# ファイル" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# ファイルãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルã®çŠ¶æ…‹:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: フィールド '%s' ã¯ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã•れã¦ã„ã¾ã›ã‚“: %s" + +#: 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:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "'word' 関数ã¸ã®ç¬¬1引数㯠0 より大ãããªã‘れã°ãªã‚Šã¾ã›ã‚“" + +#: src/function.c:821 +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:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) ãŒå¤±æ•— (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) ãŒå¤±æ•— (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() ãŒå¤±æ•— (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe (): process_init_fd() ãŒå¤±æ•—\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "一時的ãªãƒãƒƒãƒãƒ•ァイル %s を消去ã—ã¾ã™\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: ファイルåãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: 引数ãŒå¤šã™ãŽã¾ã™" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: 無効ãªãƒ•ァイルæ“作: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "å¼•æ•°ã®æ•°(%u)ãŒé–¢æ•° '%s' ã«ã¨ã£ã¦ä¸å分ã§ã™" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "ã“ã®ãƒ—ラットフォームã§ã¯å®Ÿè£…ã•れã¦ã„ã¾ã›ã‚“: 関数 '%s'" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "終端ãŒãªã„関数呼ã³å‡ºã— '%s': '%c' ãŒã‚りã¾ã›ã‚“" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "空ã®é–¢æ•°å" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "無効ãªé–¢æ•°å: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "関数åãŒé•·ã™ãŽã¾ã™: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "引数個数指定(最å°å€¤;%u)ãŒç„¡åйã§ã™: 関数 %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "引数個数指定(最大値;%u)ãŒç„¡åйã§ã™: 関数 %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: オプション '%s' ã¯çŸ­ã™ãŽã¦æ­£ã—ã判別ã§ãã¾ã›ã‚“\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: オプション '--%s' ã¯å¼•æ•°ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: オプション '%c%s' ã¯å¼•æ•°ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: オプション '%s' ã«ã¯å¼•æ•°ãŒ1ã¤å¿…è¦ã§ã™\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: オプション '--%s' ã‚’èªè­˜ã§ãã¾ã›ã‚“\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: オプション '%c%s' ã‚’èªè­˜ã§ãã¾ã›ã‚“\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: 䏿­£ãªã‚ªãƒ—ション ― %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: 無効ãªã‚ªãƒ—ション ― %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: オプションã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™ ― %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: オプション '-W %s' ã¯çŸ­ã™ãŽã¦æ­£ã—ã判別ã§ãã¾ã›ã‚“\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: オプション '-W %s' ã¯å¼•æ•°ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: 展開中 '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: 評価中 '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ル用 %lu ãƒã‚¤ãƒˆã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾ã—ãŸ: ãƒ¡ãƒ¢ãƒªã‚’ä½¿ã„æžœãŸã—ã¾ã—" +"ãŸ" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "è² è·=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "å†ãƒãƒƒã‚·ãƒ¥=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "è¡çª=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "'%s' ã®ãŸã‚ã®æš—黙ルールを探ã—ã¾ã™.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "'%s' ã®ãŸã‚ã®æ›¸åº«ãƒ¡ãƒ³ãƒæš—黙ルールを探ã—ã¾ã™.\n" + +#: 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 "Trying harder.\n" +msgstr "剿æ¡ä»¶ã¨ã¨ã‚‚ã«ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ã„ã¾ã™.\n" + +#: src/implicit.c:501 +#, c-format +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:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" +"ルール '%s' ã‚’å´ä¸‹ã—ã¾ã™.ä¸å¯èƒ½ãªå¿…è¦æ¡ä»¶ '%s' ãŒã‚ã‚‹ãŸã‚ã§ã™.\n" +"\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:788 +#, c-format +msgid "Trying implicit prerequisite '%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: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" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" +"ルール '%s' ã‚’å´ä¸‹ã—ã¾ã™ã€‚ä¸å¯èƒ½ãªå¿…è¦æ¡ä»¶ '%s' ãŒã‚ã‚‹ãŸã‚ã§ã™.\n" +"\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/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:557 +msgid " (ignored)" +msgstr " (無視ã•れã¾ã—ãŸ)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<ビルトイン>" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] エラー %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** 未完了ã®ã‚¸ãƒ§ãƒ–ã‚’å¾…ã£ã¦ã„ã¾ã™...." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (リモート)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "æˆåŠŸã—ãŸå­ãƒ—ロセス %p PID %s %s を回åŽã—ã¾ã™\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "失敗ã—ãŸå­ãƒ—ロセス %p PID %s %s を回åŽã—ã¾ã™\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "一時的ãªãƒãƒƒãƒãƒ•ァイル %s を消去ã—ã¾ã™\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "一時的ãªãƒãƒƒãƒãƒ•ァイル %s ã®æ¶ˆåŽ»ã«å¤±æ•—ã—ã¾ã—ãŸ(%d)\n" + +#: 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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "å­ãƒ—ロセス %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() ãŒå¤±æ•—ã—プロセスãŒèµ·å‹•ã§ãã¾ã›ã‚“ã§ã—㟠(e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"èµ·å‹•ã®å¤±æ•—ã§ %d 個ã®å¼•æ•°ãŒã‚«ã‚¦ãƒ³ãƒˆã•れã¾ã—ãŸ\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "å­ãƒ—ロセス %p (%s) ã«å°ã‚’ã¤ã‘ã¾ã—ãŸ.\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: ターゲット '%s' ã‚’ %s ã®ãŸã‚ã«æ›´æ–°ã—ã¾ã™" + +#: 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:2106 +msgid "cannot enforce load limit: " +msgstr "システム負è·åˆ¶é™ã‚’課ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "ファイルãƒãƒ³ãƒ‰ãƒ«ã‚’使ã„å°½ãã—ã¾ã—ãŸ: 標準入力を複製ã§ãã¾ã›ã‚“" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "ファイルãƒãƒ³ãƒ‰ãƒ«ã‚’使ã„å°½ãã—ã¾ã—ãŸ: 標準出力を複製ã§ãã¾ã›ã‚“" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "ファイルãƒãƒ³ãƒ‰ãƒ«ã‚’使ã„å°½ãã—ã¾ã—ãŸ: 標準エラー出力を複製ã§ãã¾ã›ã‚“" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "標準入力を復元ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "標準出力を復元ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "標準エラー出力を復元ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe:環境設定ã®ãŸã‚ã®ãƒ¡ãƒ¢ãƒªã‚’使ã„å°½ãã™ã‹ã‚‚ã—れã¾ã›ã‚“" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL ãŒå¤‰æ›´ã•れã¾ã—㟠(å‰ã¯ '%s', 今㯠'%s')\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "一時的ãªãƒãƒƒãƒãƒ•ァイル %s を作æˆã—ã¾ã™\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"ãƒãƒƒãƒãƒ•ァイルã®å†…容:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"ãƒãƒƒãƒãƒ•ァイルã®å†…容 :%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 (%d 行目) 䏿­£ãªã‚·ã‚§ãƒ«ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆ (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "グローãƒãƒ«ã‚·ãƒ³ãƒœãƒ«ãƒ†ãƒ¼ãƒ–ルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "シンボル %s ã‚’ %s ã‹ã‚‰èª­ã¿è¾¼ã‚€ã®ã«å¤±æ•—ã—ã¾ã—ãŸ: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "空ã®ã‚·ãƒ³ãƒœãƒ«åを読ã¿è¾¼ã‚‚ã†ã¨ã—ã¦ã„ã¾ã™: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "シンボル %s ã‚’ %s ã‹ã‚‰èª­ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" + +#: 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' 命令ã¯ã“ã®ãƒ—ラットフォームã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "オプション:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m äº’æ›æ€§ã®ãŸã‚ã®ã‚‚ã®ã§, 無視ã•れる.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make ç„¡æ¡ä»¶ã«å…¨ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’ make ã™ã‚‹.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" make é–‹å§‹å‰ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª DIRECTORY ã¸ç§»å‹•ã™" +"ã‚‹.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d デãƒãƒƒã‚°æƒ…報を大é‡ã«è¡¨ç¤ºã™ã‚‹.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr " --debug[=FLAGS] 様々ãªã‚¿ã‚¤ãƒ—ã®ãƒ‡ãƒãƒƒã‚°æƒ…報を表示ã™ã‚‹.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" 環境変数㌠makefile 中ã®è¨˜è¿°ã«å„ªå…ˆã™ã‚‹\n" + +#: 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:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" FILE ã‚’ makefile ã¨ã—ã¦èª­ã¿è¾¼ã‚€\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦çµ‚了ã™ã‚‹.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors レシピã‹ã‚‰è¿”ã£ãŸã‚¨ãƒ©ãƒ¼ã‚’無視ã™ã‚‹.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +" インクルードã™ã‚‹ makefile を探索ã™ã‚‹ " +"DIRECTORY.\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] 一度㫠N 個ã¾ã§ã®ã‚¸ãƒ§ãƒ–を許å¯; 無引数ã ã¨ã‚¸ãƒ§ãƒ–" +"数制é™ãªã—.\n" + +#: 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: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" +" è² è· ãŒ 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 シンボリックリンクã¨ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã®ä¸­ã§ä¸€ç•ªæ–°ã—ã„ " +"mtime を使ã†.\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" +" レシピを実際ã«å®Ÿè¡Œã—ãªã„; 表示ã™ã‚‹ã®ã¿.\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 FILE, --old-file=FILE, --assume-old=FILE\n" +" FILE ã‚’ã¨ã¦ã‚‚å¤ã„ã‚‚ã®ã¨è¦‹ãªã—ã¦, å† make ã—ãª" +"ã„.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYPE], --output-sync[=TYPE]\n" +" 並列ジョブã®å‡ºåŠ›ã‚’ TYPE ã§æƒãˆã‚‹.\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question レシピを実行ã—ãªã„; 更新済ã§ã‚ã‚‹ã‹ã©ã†ã‹ã‚’終了" +"ステータスã§é€šçŸ¥.\n" + +#: 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:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr " -R, --no-builtin-variables ビルトインã®å¤‰æ•°è¨­å®šã‚’無効ã«ã™ã‚‹.\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" +" å¿…è¦æ¡ä»¶ã¨ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’シャッフルã™ã‚‹ã€‚\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet レシピを表示ã—ãªã„.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent レシピをエコーã™ã‚‹ ( --silent mode ã¯ç„¡åйã«ãª" +"ã‚‹).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" -k オプションをオフã«ã™ã‚‹.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’å† make ã™ã‚‹ä»£ã‚りã«ã‚¿ãƒƒãƒã™ã‚‹.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace トレース情報を表示ã™ã‚‹.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version make ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã—ã¦çµ‚了ã™ã‚‹.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory カレントディレクトリを表示ã™ã‚‹.\n" + +#: 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:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" FILE ã‚’ã„ã¤ã§ã‚‚最新ã¨ã—ã¦è¦‹ãªã™.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables 未定義ã®å¤‰æ•°ãŒå‚ç…§ã•れãŸã¨ãã«è­¦å‘Šã‚’発ã™ã‚‹.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "䏿˜Žãªãƒ‡ãƒãƒƒã‚°ãƒ¬ãƒ™ãƒ«æŒ‡å®š '%s'" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "未知ã®å‡ºåŠ›åŒæœŸåž‹ '%s'" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "ä½¿ã„æ–¹: %s [オプション] [ターゲット] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"ã“ã®ãƒ—ログラム㯠%s 用ã«ãƒ“ルドã•れã¾ã—ãŸ\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"ã“ã®ãƒ—ログラム㯠%s (%s) 用ã«ãƒ“ルドã•れã¾ã—ãŸ\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆã¯ ã¾ã§.\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: 割り込ã¿/ä¾‹å¤–ã‚’æ•æ‰ã—ã¾ã—㟠(code = 0x%lx, addr = 0x%p)\n" + +#: src/main.c: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" +"処ç†ã•れãªã„例外ã®ãŸã‚ã®ãƒ•ィルタãŒãƒ—ログラム %s ã‹ã‚‰å‘¼ã°ã‚Œã¾ã—ãŸ\n" +"例外コード = %lx\n" +"例外フラグ = %lx\n" +"例外アドレス = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "アクセスä¿è­·é•å: アドレス 0x%p ã§ã®æ›¸ãè¾¼ã¿æ“作\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "アクセスä¿è­·é•å: アドレス 0x%p ã§ã®èª­ã¿è¾¼ã¿æ“作\n" + +#: 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: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: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 "" +"警告: ジョブサーãƒãƒ¼ãŒåˆ©ç”¨ä¸å¯: 今回㯠-j1 を使ã„ã¾ã™. 親 make ルール㫠`+' " +"を追加ã—ã¾ã—ょã†." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"警告: 副次 make ã§ -j%d を強制指定ã—ã¾ã—ãŸ: ジョブサーãƒãƒ¼ãƒ¢ãƒ¼ãƒ‰ã‚’リセットã—" +"ã¾ã™." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "標準入力ã‹ã‚‰ã® makefile ãŒäºŒå›žæŒ‡å®šã•れã¾ã—ãŸ" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: 一時ファイル %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"警告: makefile ã§ -j%d を強制指定ã—ã¾ã—ãŸ: ジョブサーãƒãƒ¼ãƒ¢ãƒ¼ãƒ‰ã‚’リセットã—ã¾" +"ã™." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "並列ジョブ (-j) ã¯ã“ã®ãƒ—ラットフォームã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "å˜ä¸€ã‚¸ãƒ§ãƒ– (-j1) モードã«ãƒªã‚»ãƒƒãƒˆã—ã¾ã™." + +#: 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: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:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "makefile '%s' 自己å†å¸°ã®ãŠãれã‚り ― å†make ã—ã¾ã›ã‚“.\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: 読ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "makefile '%s' ã®å†makeã«å¤±æ•—ã—ã¾ã—ãŸ." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "インクルードã•れる makefile '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "makefile '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "å…ƒã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æˆ»ã‚Œã¾ã›ã‚“ã§ã—ãŸ" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "å†å®Ÿè¡Œã—ã¾ã™[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL ãŒäºŒã¤ä»¥ä¸Šã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’å«ã‚“ã§ã„ã¾ã™" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "ターゲットãŒã‚りã¾ã›ã‚“" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãŒæŒ‡å®šã•れã¦ãŠã‚‰ãš, makefile も見ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "最終ターゲットを更新中....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "警告: 時刻ã®ãšã‚Œã‚’検出. ä¸å®Œå…¨ãªãƒ“ãƒ«ãƒ‰çµæžœã«ãªã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "'%s%s' オプションã¯ç©ºã§ãªã„æ–‡å­—åˆ—å¼•æ•°ã‚’è¦æ±‚ã—ã¾ã™" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "'-%c' ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¯æ­£ã®æ•´æ•°å¼•æ•°ã‚’è¦æ±‚ã—ã¾ã™" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sã“ã®ãƒ—ログラム㯠%s 用ã«ãƒ“ルドã•れã¾ã—ãŸ\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sã“ã®ãƒ—ログラム㯠%s (%s) 用ã«ãƒ“ルドã•れã¾ã—ãŸ\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sライセンス GPLv3+: GNU GPL ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 ä»¥é™ \n" +"%sã“れã¯ãƒ•リーソフトウェアã§ã™: 自由ã«å¤‰æ›´ãŠã‚ˆã³é…布ã§ãã¾ã™.\n" +"%s法律ã®è¨±ã™é™ã‚Šã€ã€€ç„¡ä¿è¨¼ã€€ã§ã™.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Make データベース出力 %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Make データベース終了 %s\n" + +#: 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 "using default temporary directory '%s'" +msgstr "デフォルト一時ディレクトリ '%s' を使用ã—ã¾ã™" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "ä¸€æ™‚ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä½œæˆ %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "一時ファイルを unlink %s: %s" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: ディレクトリ(ディレクトリå䏿˜Ž)ã‹ã‚‰å‡ºã¾ã™\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: ディレクトリ '%s' ã«å…¥ã‚Šã¾ã™\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: ディレクトリ '%s' ã‹ã‚‰å‡ºã¾ã™\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: ディレクトリ(ディレクトリå䏿˜Ž)ã«å…¥ã‚Šã¾ã™\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: ディレクトリ(ディレクトリå䏿˜Ž)ã‹ã‚‰å‡ºã¾ã™\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: ディレクトリ '%s' ã«å…¥ã‚Šã¾ã™\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: ディレクトリ '%s' ã‹ã‚‰å‡ºã¾ã™\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "警告: 出力ロックをå–å¾—ã§ããªã„ã®ã§ã€å‡ºåŠ›åŒæœŸã‚’無効ã«ã—ã¾ã™ã€‚" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". 中止.\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 "ジョブサーãƒãƒ¼ã‚’é–‹ã‘ã¾ã›ã‚“ %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "未知ã®ã‚¸ãƒ§ãƒ–サーãƒãƒ¼èªè¨¼ã‚¹ã‚¿ã‚¤ãƒ« '%s'" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "ジョブパイプ作æˆä¸­" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "ジョブパイプ複製中" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "ジョブサーãƒãƒ¼ パイプã®åˆæœŸåŒ–" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "無効㪠--jobserver-auth 文字列 '%s'" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "ジョブサーãƒãƒ¼ã¸ã® write" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "ジョブサーãƒãƒ¼ãŒã‚·ãƒ£ãƒƒãƒˆãƒ€ã‚¦ãƒ³ã—ã¾ã—ãŸ" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "ジョブã®ãƒ‘イプ㮠pselect" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "ジョブã®ãƒ‘イプ㮠read" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "makefile '%s' ã®èª­ã¿è¾¼ã¿ä¸­" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æœ€çµ‚ターゲットãŒã‚りã¾ã›ã‚“)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (探索パス)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (æ°—ã«ã—ãªãã¦ã‚ˆã„)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (~ ã®å±•é–‹ãªã—)" + +#: 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:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "makefile ãƒãƒƒãƒ•ã‚¡ã®ä¸­ã® UTF-8 BOM をスキップã—ã¾ã™\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "æ¡ä»¶éƒ¨ã®æ–‡æ³•ãŒç„¡åйã§ã™" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "最åˆã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚ˆã‚Šå‰ã«ãƒ¬ã‚·ãƒ”ãŒã‚りã¾ã™" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "レシピã®å‰ã®ãƒ«ãƒ¼ãƒ«ãŒä¸è¶³ã—ã¦ã„ã¾ã™" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "分離記å·ã‚’欠ã„ã¦ã„ã¾ã™ (8 個ã®ç©ºç™½ã§ã—ãŸãŒ, TAB ã®ã¤ã‚‚りã§ã—ãŸã‹?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "分離記å·ã‚’欠ã„ã¦ã„ã¾ã™" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "ターゲットパターンを欠ã„ã¦ã„ã¾ã™" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "複数ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒ‘ターンã§ã™" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "ターゲットパターン㌠'%%' ã‚’å«ã‚“ã§ã„ã¾ã›ã‚“" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "'endif'ã€€ãŒæ¬ è½ã—ã¦ã„ã¾ã™" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "空ã®å¤‰æ•°å" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "'define' 疑似命令ã®å¾Œã‚ã«ç„¡é–¢ä¿‚ãªæ–‡å­—列ãŒã‚りã¾ã™" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "'endef' を欠ã„ã¦ãŠã‚Š, 'define' ãŒçµ‚了ã—ã¦ã„ã¾ã›ã‚“" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "'endef' 疑似命令ã®å¾Œã‚ã«ç„¡é–¢ä¿‚ãªæ–‡å­—列ãŒã‚りã¾ã™" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "'%s' 疑似命令ã®å¾Œã‚ã«ç„¡é–¢ä¿‚ãªæ–‡å­—列ãŒã‚りã¾ã™" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "無関係㪠'%s'" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "一ã¤ã®æ¡ä»¶éƒ¨ã«ã¤ã一ã¤ã—ã‹ 'else' を使ãˆã¾ã›ã‚“" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "ターゲット特有ã®å¤‰æ•°å®šç¾©ãŒç•°å¸¸ã§ã™" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "グループ化ã—ãŸã‚¿ãƒ¼ã‚²ãƒƒãƒˆã¯ãƒ¬ã‚·ãƒ”を供給ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "暗黙ルールã¨é™çš„ãƒ‘ã‚¿ãƒ¼ãƒ³ãƒ«ãƒ¼ãƒ«ãŒæ··ã–りã¾ã—ãŸ" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "暗黙ルールã¨é€šå¸¸ãƒ«ãƒ¼ãƒ«ãŒæ··ã–りã¾ã—ãŸ" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "ターゲット '%s' ã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒ‘ターンã¨ä¸€è‡´ã—ã¾ã›ã‚“" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "ターゲットファイル '%s' ㌠: 㨠:: é …ç›®ã®ä¸¡æ–¹ã‚’æŒã£ã¦ã„ã¾ã™" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "ターゲット '%s' ãŒåŒä¸€ãƒ«ãƒ¼ãƒ«å†…ã§è¤‡æ•°å›žä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "警告: ターゲット '%s' ã®ãŸã‚ã®ãƒ¬ã‚·ãƒ”ã‚’ç½®ãæ›ãˆã¾ã™" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "警告: ターゲット '%s' ã®ãŸã‚ã®å¤ã„レシピã¯ç„¡è¦–ã•れã¾ã™" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** 暗黙ルールã¨é€šå¸¸ãƒ«ãƒ¼ãƒ«ãŒæ··ã–りã¾ã—ãŸ: 推奨ã•れãªã„文法" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "警告: ターゲット '%s' ã®ã‚°ãƒ«ãƒ¼ãƒ—メンãƒãƒ¼ã‚·ãƒƒãƒ—を上書ãã—ã¾ã™" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "警告: NUL 文字ãŒã‚りã¾ã™; è¡Œã®æ®‹ã‚Šã¯ç„¡è¦–ã•れã¾ã™" + +#: 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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s' ã¯æ›´æ–°æ¸ˆã¿ã§ã™." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "ファイル '%s' ã®ä¾å­˜é–¢ä¿‚ã‚’æ•´ç†ã—ã¦ã„ã¾ã™.\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sターゲット '%s' ã‚’ make ã™ã‚‹ãƒ«ãƒ¼ãƒ«ãŒã‚りã¾ã›ã‚“%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "ファイル '%s' を検討ã—ã¦ã„ã¾ã™.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "最近ファイル '%s' ã®æ›´æ–°ã‚’試ã—ã¦å¤±æ•—ã—ã¦ã„ã¾ã™.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "ファイル '%s' ã¯æ¤œè¨Žæ¸ˆã¿ã§ã™.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "ファイル '%s'ã€€ã®æ›´æ–°ã‚’ã—ã¦ã„ã¾ã™.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "ファイル '%s'ã€€ã®æ›´æ–°ãŒçµ‚了ã—ã¾ã—ãŸ.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "ファイル '%s' ãŒå­˜åœ¨ã—ã¾ã›ã‚“.\n" + +#: 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:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "" +"ファイル '%2$s' ã®ã‚°ãƒ«ãƒ¼ãƒ—化ã•れãŸã‚¿ãƒ¼ã‚²ãƒƒãƒˆã®ãƒ”ã‚¢ '%1$s' ãŒå­˜åœ¨ã—ã¾ã›ã‚“.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "'%s' 用ã®ãƒ‡ãƒ•ォルトレシピを使用ã—ã¾ã™.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "循環 %s <- %s ä¾å­˜é–¢ä¿‚ãŒç ´æ£„ã•れã¾ã—ãŸ." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "ターゲットファイル '%s' ã®å¿…è¦æ¡ä»¶ã‚’満ãŸã—ã¾ã—ãŸ.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "'%s' ã®å¿…è¦æ¡ä»¶ã‚’ make ã—ã¾ã™.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "ターゲットファイル '%s' を諦ã‚ã¾ã™.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "ターゲット '%s' ã¯ã‚¨ãƒ©ãƒ¼ã«ã‚ˆã‚Š å†make ã§ãã¾ã›ã‚“ã§ã—ãŸ." + +#: 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:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "ターゲット '%2$s' ã®å¿…è¦æ¡ä»¶ '%1$s' ãŒå­˜åœ¨ã—ã¾ã›ã‚“.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "å¿…è¦æ¡ä»¶ '%s' ã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ '%s' よりも新ã—ã„.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "å¿…è¦æ¡ä»¶ '%s' ã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ '%s' よりもå¤ã„.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "ターゲット '%s' ã¯ãƒ€ãƒ–ルコロンã§, ã‹ã¤å¿…è¦æ¡ä»¶ã‚’æŒãŸãªã„.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "'%s' ã®ãŸã‚ã®ãƒ¬ã‚·ãƒ”ãŒç„¡ã, å¿…è¦æ¡ä»¶ã¯å®Ÿéš›ã«ã¯å¤‰æ›´ã•れã¾ã›ã‚“ã§ã—ãŸ.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "always-make フラグãŒç«‹ã£ã¦ã„ã‚‹ã®ã§ '%s' ã‚’ make ã—ã¾ã™.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "ターゲット '%s' ã‚’å†make ã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; VPATH å '%s' を使用ã—ã¾ã™" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "ターゲット '%s' ã‚’å†make ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " VPATH å '%s' を無視ã—ã¾ã™.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "'%s' ã®ãƒ¬ã‚·ãƒ”を実行中ã§ã™.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "ターゲットファイル '%s' ã®å†make ã«å¤±æ•—ã—ã¾ã—ãŸ.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "ターゲットファイル '%s' ã®å† make ã«æˆåŠŸã—ã¾ã—ãŸ.\n" + +#: 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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "'%s' ã®ãŸã‚ã®ãƒ‡ãƒ•ォルトã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使ã„ã¾ã™.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "警告: ファイル '%s' ã®ä¿®æ­£æ™‚刻 %s ã¯æœªæ¥ã®æ™‚刻ã§ã™" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS è¦ç´  '%s' ãŒãƒ‘ターンã§ã¯ã‚りã¾ã›ã‚“" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customs ãŒã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã—ã¦ãれã¾ã›ã‚“: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "警告: æ‹¡å¼µå­ãƒ«ãƒ¼ãƒ«å®šç¾©ã®å¿…è¦æ¡ä»¶ã‚’無視ã—ã¦ã„ã¾ã™" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# 暗黙ルール" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# 暗黙ルールãªã—." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u å€‹ã®æš—黙ルール, %u (%.1f%%) 端末。" + +#: 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 "未知ã®ã‚·ã‚°ãƒŠãƒ«" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "ãƒãƒ³ã‚°ã‚¢ãƒƒãƒ—" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "割り込ã¿" + +#: src/signame.c:98 +msgid "Quit" +msgstr "終了" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "䏿­£ãªãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢å‘½ä»¤" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "トレース/ブレイクãƒã‚¤ãƒ³ãƒˆãƒˆãƒ©ãƒƒãƒ—" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Abort ã—ã¾ã—ãŸ" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT トラップ" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT トラップ" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "æµ®å‹•å°æ•°ç‚¹ä¾‹å¤–" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Kill ã•れã¾ã—ãŸ" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "ãƒã‚¹ã‚¨ãƒ©ãƒ¼" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "メモリé•å" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "䏿­£ãªã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "èª­ã¿æ‰‹ã®ãªã„パイプã¸ã®æ›¸ãè¾¼ã¿" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "アラームクロック" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "強制終了" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "ユーザ定義シグナル 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "ユーザ定義シグナル 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "å­ãƒ—ロセス終了" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "é›»æºéšœå®³" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "ä¸€æ™‚åœæ­¢" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "ä¸€æ™‚åœæ­¢ (tty 入力)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "ä¸€æ™‚åœæ­¢ (tty 出力)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "ä¸€æ™‚åœæ­¢ (シグナル)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU 時間ãŒåˆ¶é™ã‚’è¶Šãˆã¾ã—ãŸ" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "ファイルサイズ制é™ã‚’è¶Šãˆã¾ã—ãŸ" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "仮想タイマ満了" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "プロファイルタイマ満了" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "ウィンドウサイズ変更" + +#: src/signame.c:189 +msgid "Continued" +msgstr "å†é–‹ã•れã¾ã—ãŸ" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "緊急 I/O æ¡ä»¶" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "入出力å¯èƒ½" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "リソースãŒå¤±ã‚れã¾ã—ãŸ" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "å±é™ºã‚·ã‚°ãƒŠãƒ«" + +#: src/signame.c:217 +msgid "Information request" +msgstr "æƒ…å ±è¦æ±‚" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "æµ®å‹•å°æ•°ç‚¹ã‚³ãƒ—ロセッサãŒåˆ©ç”¨ä¸èƒ½" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s 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 strcache ãƒãƒƒãƒ•ã‚¡: %lu (%lu) / 文字列 = %lu / æ ¼ç´ = %lu B / å¹³å‡ = %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 ç¾åœ¨ã®ãƒãƒƒãƒ•ã‚¡: サイズ = %hu B / 使用中 = %hu B / 個数 = %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 ãã®ä»– 使用中: åˆè¨ˆ = %lu B / 個数 = %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 ãã®ä»– 未使用: åˆè¨ˆ = %lu B / 最大 = %lu B / æœ€å° = %lu B / å¹³å‡ = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache ã®ç¨¼åƒ: 探索 = %lu / ヒット率 = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルã®çŠ¶æ…‹:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "自動変数" + +#: src/variable.c:1789 +msgid "default" +msgstr "デフォルト" + +#: src/variable.c:1792 +msgid "environment" +msgstr "環境変数" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile 変数" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "-e ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã§æŒ‡å®šã—ãŸç’°å¢ƒå¤‰æ•°" + +#: src/variable.c:1801 +msgid "command line" +msgstr "コマンドライン変数" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "'override' 疑似命令" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (ファイル '%s', %lu 行目)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# 変数セットã®ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルã®çŠ¶æ…‹:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# 変数\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# パターン指定 変数 値" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# パターン指定変数ã®å€¤ãªã—." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u 個ã®ãƒ‘ターン指定変数ã®å€¤" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "警告: 未定義ã®å¤‰æ•° '%.*s'" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() ㌠%d ã§å¤±æ•—ã—ã¾ã—ãŸ\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-警告, DCL ã‹ã‚‰ã® CTRL-Y æ“作をå†ã³æœ‰åйã«ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚知れã¾ã›ã‚“.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "ビルトイン 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 "出力を %s ã¸è¿½åŠ \n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "追加 %.*s ã¨å¾Œç‰‡ä»˜ã‘\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "代ã‚り㫠%s を実行ã—ã¾ã™\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH 探索パス\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# 'vpath' 探索パスã¯ã‚りã¾ã›ã‚“." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u ã¤ã® 'vpath' 探索パス.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# 一般㮠('VPATH' 変数) 探索パスãªã—." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# 一般㮠('VPATH' 変数) 探索パス:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "ジョブサーãƒãƒ¼ã®ã‚¹ãƒ­ãƒƒãƒˆã¯ %d ã¾ã§ã§ã™\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "ジョブサーãƒãƒ¼ セマフォを作æˆã—ã¦ã„ã¾ã™: (エラー %ld: %s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "ジョブサーãƒãƒ¼ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ (セマフォ %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "ジョブサーãƒãƒ¼ã®ã‚»ãƒžãƒ•ォを解放ã—ã¾ã™: (エラー %ld: %s)" + +#: 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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: シェルプログラムãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s 㯠30 ç§’é–“åœæ­¢ã—ã¾ã™..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) ãŒçµ‚ã‚りã¾ã—ãŸ. ç¶šã‘ã¾ã™.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "未知ã®ã‚¨ãƒ©ãƒ¼ %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "警告: ファイル '%s' ã®ä¿®æ­£æ™‚åˆ»ã¯æœªæ¥ã®ã‚‚ã®ã§ã™" + +#~ msgid " terminal." +#~ msgstr " 以上." + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: ターゲット '%s' ã®ãƒ¬ã‚·ãƒ”ã§å¤±æ•—ã—ã¾ã—ãŸ" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] エラー 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "dup jobserver" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "警告: 空ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "内部エラー: '%s' command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "ビルトイン [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "ビルトイン ECHO %s->%s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "䏿˜Žãªãƒ“ルトインコマンド '%s'\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ ".ONESHELL ã®ä¸­ã§æœªçŸ¥ã€ã¾ãŸã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ビルトインコマンド: '%s'\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "エラー, 空ã®ã‚³ãƒžãƒ³ãƒ‰\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "%s ã‹ã‚‰å…¥åŠ›ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•れã¾ã—ãŸ\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "%s ã¸ã‚¨ãƒ©ãƒ¼ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•れã¾ã—ãŸ\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "%s ã¸å‡ºåŠ›ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•れã¾ã—ãŸ\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "spawn ã®ã‚¨ãƒ©ãƒ¼, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "内部エラー: 複数㮠--sync-mutex オプション" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "内部エラー: 複数㮠--jobserver-fds オプション" + +#~ msgid "virtual memory exhausted" +#~ msgstr "ä»®æƒ³ãƒ¡ãƒ¢ãƒªã‚’ä½¿ã„æžœãŸã—ã¾ã—ãŸ" + +#~ msgid "write error" +#~ msgstr "書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "ビルトイン RM %s\n" + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# `update_status' メンãƒã«ç„¡åйãªå€¤!" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] エラー 0x%x (無視ã•れã¾ã—ãŸ)" + +#~ msgid "[%s] Error %d (ignored)" +#~ msgstr "[%s] エラー %d (無視ã•れã¾ã—ãŸ)" + +#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n" +#~ msgstr "レシピを %s:%lu ã‹ã‚‰å‘¼ã³å‡ºã—ã¦ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ `%s' ã‚’æ›´æ–°ã—ã¾ã™.\n" + +#~ msgid "Invoking builtin recipe to update target `%s'.\n" +#~ msgstr "ターゲット `%s' ã‚’æ›´æ–°ã™ã‚‹ãŸã‚内蔵レシピを呼ã³å‡ºã—ã¦ã„ã¾ã™.\n" + +#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n" +#~ msgstr "%s # strcache ãƒãƒƒãƒ•ã‚¡ %d ã®ã†ã¡: (* %d B/ãƒãƒƒãƒ•ã‚¡ = %d B)\n" + +#~ msgid "" +#~ "\n" +#~ "# strcache hash-table stats:\n" +#~ "# " +#~ msgstr "" +#~ "\n" +#~ "# strcache ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルã®çµ±è¨ˆ:\n" +#~ "# " + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "文法エラー, '\"' 内ã®ã¾ã¾ã§ã™\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "SIGCHLD ãŒç™ºç”Ÿ; %u å€‹ã®æœªå›žåŽå­ãƒ—ロセス.\n" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-警告, CTRL-Y ã¯å­ãƒ—ロセスを散らã‹ã—ãŸã¾ã¾ã«ã™ã‚‹ã§ã—ょã†.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "sh.exe ãŒä½¿ãˆãªã„状態㧠-j ã‚„ --jobs を指定ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "å˜ä¸€ã‚¸ãƒ§ãƒ–モード㮠make ã«ãƒªã‚»ãƒƒãƒˆã—ã¾ã™." + +#~ 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 "" +#~ "%sã“れã¯ãƒ•リーソフトウェアã§ã™. 利用許諾ã«ã¤ã„ã¦ã¯ã‚½ãƒ¼ã‚¹ã‚’\n" +#~ "%sã”覧ãã ã•ã„.\n" +#~ "%s商業性や特定ã®ç›®çš„ã¸ã®é©åˆæ€§ã®å¦‚何ã«é–¢ã‚らãš, ç„¡ä¿è¨¼ã§ã™.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "関係ã®ãªã„ `endef'" + +#~ msgid "empty `override' directive" +#~ msgstr "空㮠`override' 疑似命令" + +#~ msgid "invalid `override' directive" +#~ msgstr "無効㪠`override' 疑似命令" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "`%sinclude' ã«ãƒ•ァイルåãŒã‚りã¾ã›ã‚“" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "ターゲット `%s' ã®å¿…è¦æ¡ä»¶ãƒ‘ターンãŒç©ºã®ã¾ã¾ã§ã™" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "" +#~ "# ãƒãƒƒã‚·ãƒ¥è¦ç´ ã‚ãŸã‚Šã€å¹³å‡ %.3f å€‹ã€æœ€å¤§ %u 個ã®ãƒ•ァイルãŒã‚りã¾ã™ã€‚\n" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "デãƒãƒƒã‚¬ã« attach ã™ã‚‹ãŸã‚プロセスã®ä¸€æ™‚åœæ­¢ã‚’許å¯ã™ã‚‹" + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "# ãƒãƒƒã‚·ãƒ¥è¦ç´ ã‚ãŸã‚Šã€å¹³å‡ %.1f å€‹ã€æœ€å¤§ %u 個ã®å¤‰æ•°ãŒã‚りã¾ã™ã€‚\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "# ãƒãƒƒã‚·ãƒ¥è¦ç´ ã‚ãŸã‚Šå¹³å‡ %d.%d å€‹ã€æœ€å¤§ %u 個ã®å¤‰æ•°ãŒã‚りã¾ã™ã€‚\n" + +#~ msgid "the `word' function takes a positive index argument" +#~ msgstr "`word' 関数ã¯éžè² ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹å¼•æ•°ã‚’ã¨ã‚Šã¾ã™" diff --git a/local/recipes/dev/gnu-make/source/po/ko.gmo b/local/recipes/dev/gnu-make/source/po/ko.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c2af28d3f184f48c6aadc3e91c1521cdc7589bd4 GIT binary patch literal 51905 zcmdU&dz@TVmG6(r2t-gsk%yoMq3I5!J0XBTLy$Zg2;^lR1PmCfyQ|Yhx~rP5>O6d4 z2n`cRkRS;pkc378BoL&@i$uZqdvwH^@iC*L*U@pDuIj7zj^p*toyYzD*52pTsp{%Z zaOVDT>yy*Jv(MSjwbx#It+n^r`RU2WY!3MS;B`T8Civ|)2f@nM2f;_r($gTgsop)m z8N7h-3h+GeQ{Y>`Z-U2xe+`}u{vFr|9@7v6Zv`iVAvgon^E7x0_z+0cU^jRU_&x9) z;6H;Wf+vg*0#)G*@HFr;a31)6@Cxu#;CsNIg6{-hcfKp_*sQR99vCF>`BucOcRDFI1&IHf9#Ff(n9D|WN-zje!dq}{*Qsm=PB?wa6fnw_zGAD{<(ktJMdD%{{|}l zB?R6A&HzsZ7lM#5=mJ&#Hvjwpcsk+lfZ~sT03m(wCzk~QtP@-eiVnAeZwEJm;@77@ zSRwef5C1Qat`FWtCn?_bp!jg9$GbpSD|iN^%Y*NMute}5;A!9lI!)Jm z4!#RK4AMoxkHFKx6X66D878$<3E5ZeUj`NLXW&`jzk(DMoB@-m z9yfyT1XqEg*CtT;e*skgzY3~-zwr2Ppy+h!`&@oAK=peosORfI(enTpg1-ROKgV1h z1n&kf@OT5L@|S~C!TUj#`(03U{~7q_;O{`C`!bOxg1-Py1>ZK!<$D1b5}psL9(hpl zw}Nj24}+q|cR=O)3sCg^1NbKJdJTaOF&2w zbb-f%&w--f0Z@GSb5QY4XmR{99Xy9{E2#S411jAP@K|scsCo^8;_tr$RlifNar}5T zsQNd9h?Zb3sB+eT8eh+WqTgr05d0RX`W8Xub1clH^4iH}vzWp+&@$p-5Jox4t-22Nw(c}G~^7$ZG53U83-?O0T^Hos&{rBJ-!82hV zr8@^ydnSRZ|K*_QJ==%#;PHh26jc5Xf@;?RQ1a!w9^WwA_3Nde+J6(Ma#n(>_Z^_< zunoKf+zYCGzXny$*UfS5JQEcE%mmer4}&V_Q{V;Q4?ywF>*u=o?*did8^A{Jc2Maa z2UX9ngRcjF4l3VYg6h{(=DB)Z3N{m71danYg6D&efhU1q1H}(N1l2FU14WNh-|y&o zHh3c8n?RM{;c*jqA>l89)4|{Q@MZHI-`xg^-fKandl)UzXL`0GZwo1F9X&89pIb5?cg+UH+VT%0>MyHCB*@lPFiEa4_l?RhVFGT07^?^lB2`)#25<;$S@{ck~~ z`vWL?2a6qD-U_~*U>&G*&7k@}1-=)&AJjPb3fKhxcToLz)=lnx1E_vn3Z4Sq2fhUy z09F4%Q2G58sP+XnJH7}(@z*p^_4^=rD!3X{eI5kGKTm_o_ZuF63M#+f`S;-mT)xvl zjfYlH`Q8aC-FEN_a3A<)@Hb!s`0t?jtA2^&p9{gu3Ace4f!jTP4}2%#Ke@#{KN}RC z7lG>k4}JLk3jWP5fuGTztz$IY*6i+489Fq2#Q}iLAAdCijMb! zDsL;OdVdZSzx)Gu7WkGAI(g6tzJu@_@H8+DUIyL)P6A)@;a`KQ-`PuD`l~>-;}%f# zUkfUqM?ux=MNoY3Rq#6SUqRKUFR{XtOa?*&!W6sP`{{7lOY8#i#G+aOF$@)sDrW=)MxX1pG9pbiV}O1HN^c!;3-D zZ82#504m)9Q2kK?&jZisbo8GJs@_Y%)4?pLdaVQ1zNbKy{{v9zeh*Fo&&s%dS^_o` ze#D3W0#rNRe4DG^)u8&N8@vvD2D}*jEqFdyx7_jNJW%bp7gT@j@y~w(UP}0sF2{ef zLG^zM)Hu5xy!UnJ-(X1i_^d1ceDDIow}2;s>%il|t^WO!;AFzz2gTRNiur;9`HZFHQ+sc%%$M5E1(Ow z1^hVpo|W(}_$hE9_&e~^;LKI7K7Ro9e(Gv?415Swx;K5;*`@12)$0c!EE=5u5m%3m z;QfSu3vK}K_$YHI_@Bb zC_X<7z8U;);8O56pz@i!)}^}*d^_QffLDSW!BfHSfQt9`pz=}YO#6^TF5myK&J7UO~7OYyfxo@Yg}*{|1<5GWbrg4x9rjeF4-se;gG5{s0WYlkRc! zx)9WOxDK2O7Qj02AgJa2Yy1?_nPl6%%3Rn;R z6r2aXalH#K234<*gR{Wx;3?pce=g>HC*gO2;*(}jbh;T7pFQO9i~jjGYiClG!V6n{Mf{t!F_UIK1>z|rMvpys2uZ*=oPBX}<1 zTfhszJHfNT=fO$fcR}?-@Sx+nb3l!s%RrTPKdASQf=%Enp!l)`ror)_bn@i^Q1$;u za54DShupZ%fNvuF3Mjt(CaCrwy9wJ1oCc~MYr%`beW2?3Yf%06_RVfwodr%LTn|nF z7lS8({h->n8B{-g22}li1S-E%9(Me2J*e?>6R7s*L5=Ut;M>5x;ECYZK=tQefujF! z!K=a3A93~i0H}QK0UN<5Jbo8cx&P+F&08Fwbb_MG9pLfc)1cZn=J3!^L1zZY#8&rEI>~!>N2H!>aBcS;G zQBd{zI;j3X<|#+d6G5eWKR6Ry3SI;52Iqjk1#bo4_q6M`?V$SihhPZ4{ux)Vb3oCn z6MQq+3yP2K1Qq{zQ2GAIYT=19R$>7D$ zIyrGIIGga};6iX16g{Us=i2u%@La-Q1l1qE0!7z%?{V#(10F~C7Vuaw4PF9vgW~%q z!3p3ipwbP2=Ygj`@A&#^@OZ+jz_){I!BfCTJU$OjCH!Sj?f;WcJ37w-RnLdP7VvwZ z@;UVd$G>NT;@1y>;=4z{cYrT|s^8bZ3&4K`CxZ=xjxUygdVW7x2Ob7B{(c6Y0iODz zqsL@W?OW{ecJM;N>%j)_6;SDa1vY^v>~-NQz_SUbz$?JJz_)>)2UX5rf^P)hw9obD z$)Nfr1ug~;dVKSKC!ab%(Pa~;e*Q5idYy8>_0M8ZbV-Ba=Nu?{d;+`#d>YjIpMYn9 zzXDZ{V-7lbb|t9#%mGgV7l9{(9iZZ^2E`XIg6fYU@Jz7oB}d0;;5me|9zO|AA$$;= z2>#B8&pqViN-L=JcYqgzkAZIkU-kG)FeLm3@KW&f!*2e2KRBN7bD-${eNgrJKj2m1 zdq3m)r4Lki2PnS&Tkw4F^`CY5HiGKEIpB5RO0XUL0{9lN?q%0+mw<04d^@QAyazl3 z+y!=kU-seiUvd540;=2ssC4_lW592KGr;e7Jo$4jycnFq^KBmg2E3Z^X`grU_-3$~ za0fUWd;&ZT{0(?2c-$9UybzpDxDmVvydAt6du#Re3|>X}S6~ZR z_YG(NEC*G7(c^jFbaqz?6d%0=ia&o2UIxDPTaMqZ2hSwD78GAT4xR|^178OY@TZ^a zJ6w~wzQHBF*$;MdMZY#~zD;-r*G%qjgm?M-pMr?_;N3iH1F5uGd+gxAq_Xa7zlZxiu1+q7TriI3_i??8`!tt+>$%S0TE+8E`gEHKXSh~!=~u_~ zIj(=;`XSesd^~Q0VXotSSbe`#5BU{%CLWy2^#MId{QjQ%KjS)yIPKtkuJ>~#e%n;A+EhV)A*gr^*;apDsUa)O+L(Ru#@|L2QLBN%yp3KXN0fj+RmjPL*0JI z^6ox=AHlzJBe}PT>pI>)3_cEC4>oiCitA6g&gYqa3%Jha{$}v4dcf~4!W#3@?>TN- zcy@s6e{+8th*$|e1zrr+fuG@O;_BeKmFx9fmvf!YHJgj+#eTQ)cc;If&htip-{4VD zpSXXOID=dlas3_79|N~>^>F`J;9r5Sa_#2oA-oLyCf60*>vt{JWUlWiz^{+z&--_O z0sb$Zb#r};>rGrwaeayF6yAkgZCoGY`YPA|;rTA`?OZ2wuV2VDkFb8na@}Be?$5P6 zM_dQ*@b9N^e>~R#_uA&?_w(*~!WV*1gD?1Ze+_<%XOh7`;L3CV2zU*s-)8Wm;E%cf zgzJm``P1MfgdYKSaP8y%t6X<-WeC5(bv4&au6J=s_J0oiESG*OxV~d|$QPd7&ix1c zyNAHl{{AfR-9FxUp@04?_&u&S@aWTAf9{_@2`=Y4hG#$FdV*^@mwtEid@a`+u9LZ5 z#})l<_V+h>TmfF=Up~tHIovM>bKs@mm$_c#zR1S>FA|-`D$i zErjQAe_D51hz#i0e$Q5Atjh*H-TD;rdIiUlZ2vJ=|Xeen<)h~7?-%$?Nwa&a;;T>-z=_A zaDAL~)3`p&^+m!@f%=`!bvf4!KKvit|G?kh3vMBt{4L?xNBsMb=*75m!n(e&enn5J z&{-em)2ZIJ&QO7T(>VV!)7{gRY0DJC-oCDMeuCmR)HPk$QCBxUETnt8Guc#ElaEVE z9%UQzJ?XYgN2V=Yk?PH)TD#KRboHh4iZ&zDn{F%QdNb*~6>&|5Z1v)rOg5A6Ot*)# zQ_Is~d#aEMTT}UTn9GKBF6y=EY`Qnq6*ko0IB)90>+0j|$0w`aOkT=wW>oR{s<@t1 zW;`M6>CI#d6lf(V!kk>V?5N7H1{1rIIMLH1k-_54tESbB5v^{FX=Tj}7r1UAL8qfb z6w`$|M8L2!mG5jU7_IY#R3Y!EP?uMm@`c{ER9j~{Z0+mlNcSokFRGt5hjm@*+pfOx z;Y7X7WS8Z`DfU$1TyJVw+J~nRBeh~#6spRwC*9kT>+Mcu+tSTpS1z}_ucw?*r&uXf z@Hy4hk#>5n&-$URJxujdW+oeUq-a%p*p=$bwsjI^VP_^!f900-rn+fHrmGNAgky|R z-_e--coHwlcBZoJ$}hdDE!|Vd(BV)GRt?)yU3%Wpo9m9Vhud1Bc++$3uBNNX&#vi8 zdBP+fPHk`RP3P6jNvrC5#sy*6*w~(K?OV2F$~Cj5Uc2DdF!`G&&NKGS_2t9D>K=M9 z*AZHRWzZcG7zI^TMxrviE!Ub)_pV6yHs%YfyV6q@EWCMEi{-f>-NlFs3v{r(QciK~ zu#gM;@@bz*HrHrO-`MU);p(VX3;TMrBijFi^Bl{CJ}Z%+r#Ic3zP&G#&lIQud4|h!sV)gNk+aa7 zYD-t<;X|%(^uBgStV|){`m*imjto?3j6_^M3>WhzT-gcjQrR$$5lg8M7Vb?m0MiVN zc2|#S6R1n7Yh`M6zOh?!ul!q-ZOdibGhzXlbaiO2xeE&nl61j0WO_Jb=KPlF3+K+i zSy{#XIwgL51j1#nuhz3!8uVNm0exv(Yos<1Rt9X?c0 z)oziH*U0vd;GC4zS`rG@2lxvTa>`?P=BjsB7-!V!7Iq2tK3sxL{AG zStP25Wq=2KU5ZAVPy3W`b;#1D>8;QVx|-O;jQ zJUSwFsu`W>uAWLVDCEVU=3RzKUUR=>XnIw~kKl~bW{lL0v_03WvE+WP1494QCRaZb zxMFV$m&~z|qiJf%lsSpXacWmrZe=*fje%5wNvAD+Ma%&1@ybl0GtB0sEV%rZt14xt zj;bNN0ai!wOOTml&gU51UV<|FXX^`Mu;*K;Wsj=dR9m6XCJjGP;hlfdgGpU zqe^eu=CX*9dels>mZ0@Fn%3|7&@rK6*Gnywae@9X+dz?A?Qd7|+p#W8uS@oQIG@(T zCyw{7Fy6I!2%Rg>j4KtVuSYV59DQ!R$}J&j&FXQP)|9l7M&!&RS0k*XNY8O~%cLXy z$gxE_p&Pj*1w}06`Y^w$e+%tt#Il)ezMv6}f@5S9W0!k!g|dO-d8xRSzi2#Ti~0B2 zzV24!EIB#VqGEKT1;(9Hr7MTL?n3B##TH710!r{2(_ znUSfS*)7tWCg#1~6Hg#6T^E_CbMwv0W}56K3KLH&JU!Qqk%pBeih12e&u652(&)F@ zHfrJr4{5Sl^<=}s>t-$p`8PG3w&>dNR?IcdSaWlAUylY;yL%zUuRTXD*<3-xFJCA> z$6`hJp<<0lp*KoU`zNOp9m+cVt`$Otdx}8 zTssaLbR@Y}csSd_FunwbDZp8oU!iHtzBlKj)9o08rjhwR3mY157Zp%59a-je=9q09 zFV!I8yzA!9@dTVFsVwVP_V3p5&EZi+YRmO8$GHv+bBrIe@G7(K ziu14QY9E<#_3N>+T%KM{%_n$c1vf`r%^Gh;&!`#wI8kpgOT8>pbA{D(3)-s!BhdA+ zbwrE9R&XCpdS(buF`I!C|sL+rtKV8k_{rq5mJ_CxG$kd6iae@B zu|TjCekR1j)*R+#*DJ?zd(nt#jiru^x{ls7p0h%(fU@Hp zaLNbmGZ|u(m*073oQg=~qmoDF6ITFtUt9t1T}mfH>hib)^J-Z+EIOvjb3HHPSU$3o zNHS?nKT*dLt2u0u^wsQPev#$$Z?>F|>YIoX&4R1FbkoagGHC{vSi(k_IWuXPRj?W1 zNAA6SJ%x#}+m0UW(}a%F;1r5gbzQ3_gejbK5KSIB9>sutyoJ|7CP}&bcTX8^gLbN1cq9 z?<3#%C-rr0qK@WT*&XQqj3KCviG=N)Ex2sr$VAn=*xj00)`tup`PMvVI5bDkqp|Td z6xg^JG8}dFeC$zcSgUeqt1-3uvIzRzGPze!lpQf0fm}mtzPI-H_ol)`vzW16JJV_* z7qJ}LWwUW2<@BL!uaIZLl)`q`<8F%S$zlA_!A@p%pjc{pRT-v<#UAX+u=iTmNI}3%LeDlPK%d&kZ?yjqF`J1C0s!F_|UUn34Wg=%*=lbB2w0lf-okTXth!+K&tvA!kT!}Zh$uhx# zDejpwH(We*{`{$P7UFp%nH*5aWZ45O0CZpfZHeC?y`&HFLBc6*04p+2PSXHBg$D)*LQ0|o{T1Ps-le?-Y!Bk{Kw8FidCJ9 z@eZ^~Seb!6%b9qB6iz7~7t}{CAV!JVTQF5{{`u#JQ(2PZ-fM792zIAd%WKh^Th^Dq z!WglgH2~;sDW>(NQ}WU&^$a~1PnwpcqAMR)=*5+B7N_t%D<#D3GY6cl&dG<-#Lx1P z$D26KVbiR+i9^zHt7m#+!M;s*;gN%SSV&&w}VpVYmQ)s_tgATr+jitc6RjojVmZ2aP3# z@s8%r@F|cK*H&b81x>SNPGd$Rc3lngxOvxW{y}XGCRRplBzO0D_Ydn` zU44>ILDS-?GZ!L>Vs+12<*kJLD6f-7P(HW6C66FuDw?c}pSE;tJV$DZb5`N7XK1iKUCY@9SRbJ7KAD zkA&b#{J+c24z((NHriMpQD@G=5)G%%u%b+5T`g5``TN zgf(1@TaEMRwM-SqY35a(yL92~dGar4s-xvT6N^<|Q*@FynBJK|Et5x>KA)cHZR?{; zNEcqoT%6a~a&CmxVS8_m9>OUwT^%DPl0>9JEb+$#Q4`00A1wK*rKb+f%a zB2zw?j?*{S4YQi}6+MMfs{S1pAhZ09boE{=mt|BVXqmk*WC64%XfdTV(p*Bh%KS6d z#aeS+_QZyZlvq=bT1-UBP_so{c^c3$R9K7I+^ROr;r*E7g0l0-JmNlIVwg+Mb6Po) zapJPBTr1S_ac$Rwm0gbJUCdH6%AJ}h%fGMD@7Ks3VRLkqX))o6@&w^YbfnMpP4;J3n<^FkCWH-a)Cl=XfO%Np>K*7S37cp$ZGu2_LT zPV-cCOo;~5hJ$OcL7hRRI$NMp78(I02E7Dyagud+G=dIpI*8(VCD$=VAt&ob`T?5R zwHdRt82Fm{Z4JAkS=aXF`j8RPtDZFcXw`s5ar3LaiQ|In;M~5RVCKZRp>wm+?wNBv z|IYLl)l9tRy?v&B2Q%GLb9sf>m7*>c^*Th2CSuY0ZZ})W-eBbO%p02AIe(kj6e4Nc zlyo$L&e5j!MsX@ek5M9egF&C^?(2??G`do*frdJE;3(TTWg@q37DA6U&Gpfi5$3~; zG>V2iD=$5r5@EJ8rW_$}Yo5ll>H_A;_Hn@tGDzElS!x;$MAp~!m~|4)o2luIf8&B# z4E!q5iql(9$tc%)o3^G9)$1|s={DvFR|FcY%$aC~mVWc8@|_kXPV5TNFc={n^eVU9 zMu_^s&Du7TA?Dn^wU~Ec_0b~NR)eb(l=r{5auVaCB4fu5jh+=M2Ua4@?4)oC-3kP| zrFxu3AFuA%GFfHZ3SJH3cP25>r{%&%>&>z$A@p1EMDdl_go-R`*}!r}Ez+yJ{iK7v zO*DIUs*8%^FZZLd#*RMQ|6;pSg4yO=wmeN_(@%cSG$+wy0DUh{neR8)s^&V>VZ@K7c+Mt)+TT zB@H2|6JYtoZGzO!&WP7yD1e#~)k_znlx1TZYg9kRf_(mQRhojit+E%a_EP%P@QN`= z`ne{|Q6PhP67z!yO-FFxh&2THSb9IGY`Z{d3heVorUg9$LbLAJ;JCS zS;z8x>qbE3+7yKB%^@!|LZmtMqTKeNlC|?3M|0IYJg?98)>L+j7mY|fBew)6-AHG> zzb{h==3_!eT9Ek{c#<+xMC=($su53RagWo}9#x_%XLeZ34hd--MOm3~%XPKm;2SDH zbR0Xdg_u<=;0B6YE-6pAR&3=cS;@2@hV^TxT5jq{t)K%%T%16ad_2EA#^Uzbu0k6W zau8LHVz-DofyP>?@*GHwU@;3<5(B~(1Z3#oULPODqGan&7`8Pn6471dnoC@k<)B!t zToWu&WEN_*mFS##<)sVDG~TnvELO;;yE?)KZIE;(wyK~7kSTS2OndXwn(tf%Vl~oS zhw&;fkK+c9(5I}vgqZ1>~U-hFwMc-?PZlXMijLpKai794N8aJ(56O^TE2>t*4N0Z|AR z%)D01i!HiYJaf*B!0iuIXQ(ZySkbVpU?XPm1?gq-x;Tx`*8GD7%QHPT;1(^srtz|H z+T7XV^@@=??nsf`mTRKP1yI(9VJtZ-C2OZN=y_(^f$B5#+M%ySW~cx zzUrBCc_X4x#SYKv@Eq8iwJa6D6vn_@qWaF%+V4+jpqw&_B>%-J& zY|EkOn=H|Yt)4__W-^)PC106Vyl*U1Np_e!BOez~9;2GXqlIUmjQJGl+<3b(b{`?g z2eA<8Q;&7jUY~FrdCfC!&xm=@k|jq3vfIm(6q>RVD1L|7LTwwK*owKg+*w~{CNJz= zE$X1QQY%%-g~uG{K2EftU!K`ado_qT1b&@1hajuacYc*h0ttBC2%^~-a1AY)I+=)w$ko0Nk^+9W6gCtTtdU2x|v zam;pW=(1x6ySB2JUgLN(8_qA4@L09NDykI^kvJe+<_m66mH!$pwn|QS=$2EYvKt} ztLX_}g=XlyHe%WMqDn@?fF*CgZYXcK?MHGtykw^)I2eO*-Yf$*hYvBmsxyT;PxV|% z_JJwW3Ta?H6^m~#BJ{8_jg#()*J|mAjFd)lBQ3++WIi5cGg#UBFzP$6h9LvI^I0Rn z{IO9Qb0~TLuy%0AJ!_`A&$uVWmk7~T?HaL|fQ<89n#8uMz`I{7ov%_kxZF#zxfsv+ zbuE7M$iDYr|AaT%o5Kdb*41Ucw()^y`Jlbe=BaWvVwlwk09$pBR*&gy>vVJDxfs#c z3(mEd*w7p#?(JI!q-{E2eUGm*(%QCT{g?>bevDLyRwJ$7%d1$UL~?Q*e>N&2eLm#Y}~iZ`{;_W_Zz- z;D~1q>U0^nqwRG?;;Btos{>(s3Jl~<_KLCMCFYV zlU0dAxntwlBP5ZrY?PPVpg594M#-$&2k+;JI5%7I)Z`OS;yC}I4veiY&E&&}v)Qc^ zbhY-LOQ$aN^I~~T!fPu`L-vVZyT#N%VWwjfWH}-oX5$-opnFBR9k~g}sB&8K(ZJbq z13MF=hfR&z=f-v#l;o9(C299&To7p{K{TN2oxGR;r!YeBmoiZBb$fAB5iQeEABRo3 z@*h5VrjK&Wr;-0DR(|5h@e_U7*6vn{S=b5}PMt=xm=@g*?aMGb(HHaY8y~0i%6GJy zdxQmQl8sov7QqrbK~?X35PxD&nSVaW=J*H2QDjXN+M0Em=?7mkt~t%9OdfbjHS7Cz zt=E)*^{&?x9|k8uwh;-yp0GA*HDVw!yHa%Q0HsOLl@*R??}Ibx?L#A_`1Mhd<7mG%nxA?53+!Bitb zPikd$MGvw*sQ?%ohw&!)vhs&6b*`HQ%j7VTp!EaKi;|n>uaky}e#!#4l+a2}t%$sg z6$cD$HQn!&K;iQ`vgxj3`Y1)^GF|l4nB7X2+HHG3o6S6JR?Fo1%12Qn6HKxVU!7U6 z^>uaifoe$>s=nVvR^EBW$jLTVXj#!j=8`qmwbe?+5*0pk)>AaCX~ngi%0BamR+6H% z180k;q7^;at~btJ5ZIR@ez&E!Z&TV^h%E9sL{X;trKz|RY{=WLqbQ2@DD2zn+rP}yXo8j)&A2nn`!ta#O ziV{_xv&goOo2GmkDy#gC3eaWf-TWPzbQ~PHa*=B zmwacYr+UexT<=7pBQ-G+eLkLa8EFK55x|z<6QoI0O#V0L#)%o%d8-0e9?%%`7foKO zNmiPF14Ad8IAs_t?P!lDi*YsLH-|GKjfBO0&TWv@J8~1u$bv>DoSChW&Nh~LYXXf& z3W?in7I&Kq$J6q>-kf~$jWgRDZ*XZA%k?&g)8!0W$wJ8d)qUZWZ7X|M_g#(9%cQc}?|T&q*am_Bt#M&G#g{=hFn6Ml zUMX{3S*Sd;((cCPxvQ7ua(L5?pYlyef^y>KaCvUrY_@Ke+j(KrB+lnRQt^%RLL{cl z$W?`j$m0y74Hp%Tk-`*nkeB1BP|i7MY(db-Dr^ofYi!LF#@%F;X$~E+w8bc@T=cCl z!$GrdMQft1g1G58qb2$(W%#a*rMvD8hxWcwd}13r?}i4qxd_EQ2TJR=l?Lt%hhExN zI=t1rt30@7xPP$t!l7dSMmvgS_`buXfz9FYhF!z``%ByV!_v0?;mzB^;=VPdbz8!r z!B4t8RD5yMrsBZ8O8@j8tIzO;4W;cb+pFE1O567j-?=9&-an{2BJCaErgY!Vu=vcn z(&1gyB42uBW2t|er6pl;a0^u}Z9h~#)y5S&KCEbAbgE5t>yA{gFEJc`a2r%n?AK7} z(BPV|^vFG>?Hi0v)nzB&jX^vpU@`AIP+Y&RxPGUj`RK$}CEcc?3JMs-9BmSW4~IAJ zr(xmn-E_nL;-O99@I42H_Vvf--(bAE!*7av`-ks;+1HsI5={ZGnhnkM1gM+tm!Ct`WbwPj)7T z!#mau-*+f19`5I@dunIll-BPYe)!%{uwj>D6?*KD_^_@W9w&Fvb9hrfY(MnUq2i8R zrR{5CwhBvY_mm#pJ-m5K@d09Nr+^K`hqe_rZYe#ot`zmasF~=%oT$*F%qUrtL^bwq zVSuREXJDbt_owWpW0H|zQu;~-u|J(chk9>i~IH$ zpMpaUZYvHvHN1JZXIFP%OguUG^LMUfR1e>^hS78t+3$F;^vK-|YnaRijVInf7{@ZX z(myavyQ^{@{ZO8Gz?HVWEGbud8M$_d($*F4-&90+JkZa1J*so@&dn9ICC^dLEW79WqCD9SA2Gtx}tbz|Ind9ELk0z_cj@MWHQHS-EAj8A=mYx_K zdU5~IzLybnYlikdE&>(z>=!AwiMhk#CwG?mcf?GKbRYZRp3=chlKSP2bTY4++|tr& zpWj1Dc%qVNoxm}+7(7Ikhc^#|#myTu?+oo5Fw)<3carpDoap0P%=ik2_OC%kIa#zn zG*S;F$?yz=_W5M4)59y1GtX7}IzP4prc}N=!U++@=QoK(5fOAO)aqA-DswPiLz+IY zwTgHxM2y6u)xnMcN<2G4*@>9e-O-HcCeg6Cc0a<)GrI(PfAwIQSyfZf!GHR0X9rcb z;|R4Geqhh==3UmKl@(FlDszg2;^611_;HMLg-Yx96!*PceENAN|2t6&N?VbE>vxt0 z7|1&xL`m2bmJT4pkvQv60ygt<+t47oK>rcy9Sivi2{m^~ad3BO{q~VZ68Yyx$hEld z!Q#N4NR%NPog8$uu$-?FrxZ60B6(=ij?%%Wk}NvL8Aa+>CeFlIdS(p`h6N>!i_d;m z%(!<0JXz7A1?pWSS@~oaJzy{Uk&Y{BT+U>3pmaAP9+^@p8W)FGI&L%mjSeqLK8p`9 zNR);a9%y0#5KU?(`oIQ6JHf+l!Tx#TaKO`FYxmg-BsStGf@Ov1KRPi%mVo0afG~<8UPex~c|Y=b%bT z|8a^-IE-@m=@>!aOENGHGQpH*bxmhGCFPWJ zS#^oV!ZZD-168f~uR4c`dZVX^%jTem_M=LwB?zSAz)qf)HY3W6DiJ9}pdAlZ)g~*( z`cIw9Gnrv}QAN5JhCf0PG6NzD#4*trCqHQv zn}SYH!Av79>g4FEm^H>Y56X`zS@>pVl?g5rH!NWmJh_23-Z^~NHn9mhy)XE_Lq}>H z2F5`*$IM z#yEf~F_5b|T-6aH*b+evP95Vos&7%&{8%Q|btdaHGDn&u9Q>(nGR6e)L^`@O##cZJ0 zPs=H^Q?~NPT{<)h9>WHJe(TUc^+3xMPRYb$)71w(O3xfZPwXH2r5$D!DFQBMYltSI z60&Y!XL0S8p+Ou|Fw#0X1$bQMORLI(Z7_Z;u1RMeAHBLG9NxNFnp^o%>9LJNdw1() zg>!}nPOH*^SH*+t5Us`gp5oSZ#yta~0PWJWnFHk`v8pn${3W`!ZxA_P+t}8!Q?mR}bk0MLxA9_HUKuwM zECbJMPL80?%Y%o!Dm{VG@?rzzmtKd{L#otEIFh`L=uR_A$`unu8+N%&&6j9>M<2uk zRF!blwQfuZrKAg`A_uxT8O*t47$Z{mA$~ zI*}K_)l`fNoQOD-Dd*gw=KZ;Qn_H;0bG9nZwvuo080d)zx2mbdyf43_Q>Ebda6iHA?3o*#_20cY4^|-LA8g#vkJ~N-`(1D@Ku6B#{v+`ye6ra@C2+*Dk%A?f07 zz_B>=;-F3FvW!hN&?Jj1Q{7V6o|s~7s??xE<+~RN_Ss#-ci%71Egt$K9x;ZLZ(!m< zU5Kr#5odH12OkJ4P8qXGZ!FU_lF8KVsPl{ErRZI(ky(>k8fitg`q3QXhmzZmWe9&9 znNu$l4>Uz%sks;|RK$xL(FtLsr%zc~kT*k1AE(kfpgeL z56bz*hnD$_U5#pFTCN$HCTpfLtXplV&h4e5=}{=D5sFsEhg+TR3KIFvR|&8^D#g8< zaHA-GaqlDYm*dko&DxTPdQHn}1^(_}K1zwM6bmU8_cS*xG+h(y`kl zF;-npjV2{~L)2Z5TR)b4>SUJ(!dj=;IRcCsFL79#8#(4{s!(fScUIoF4Mal+xdXS~ zeF$>zl6;d3i1og;`;j^tXcD~M?!$^4ddYak=@!li8ifszGj5Gl)vn8H1vT*iSGlUu zKfu@+agdu7KWyKNLT|bdbNDe<9{xW#%*{>eRpzpD^Et!GI3r=iU~1Q0crHi1UBn-6 z0!EC#jeI8aI93(BRkqWs?<4ZM_*`=1pf{8Bx0)gFloUF3fW6QOa7Qhk-9c{^;(Mfs zc9F)+GnR*=X6R!m_js14aco7YVBIR^zbSAD_BSxJ#+&_)l8xgs78$5wiSy%7_ceL! z*l4G!N#{Jwt`_!2Y_R_FCWn))EQjL<#@8p`ERF#f-h?z>r{`Iys=@OvQw&~PSkM`B zZUlPMRsJfMG7{;E;%r23#9D&#V5<>bj`Fp!*`lojZhakPl+lXqjyFMmr=%-GA1ofl znRMPTF^bCQ+BYCw^sYPQ3UITSTe6R*F`K6=N-7^#_y2^pcAni)&~$jq%VGd@*4X;= z<3(%g@h%_#jPbzo_})a1iUC;6E$+p`qg&RVpu_C^Aa!Tm**uQV1b44f&tOFy zJn#pE(>@bX(O7c8RC=7I&{J9o(t=iZk)>eo68=S>gt{-=#sDYS2A-N}k!1 zk8PArSur}IeMsKgh_t-g8hNZiyTP#4>hKVQ(XCX(>RyvOACJl!(addc>YX^#1`SIk zv<59a;(9x8&nIvmkW zhS#qt4jhVmFL^wlckcPq`Q#z>S|b7zd+%-*xwagl(m`=>P)-6bE|l!i-IXWx)r^5l z#*XS6I=l-8DLsQwkzm}9QmhI~3vkPKc5I(0$xbp8v<$5M>lnG#k?7Le(-zBAb5fGD ziZ2}j%hBS~`$X`FVc^Uf{t2l?5E1Rg%U0XFBm$2XJJ4jXjRx7)vr<0<-f2skYj-Id zcjlkgPPQsi1YE3KA#vuSyoG9a}zQynyhg6i#`N*io3+QRdDF ze2qmN++BQNL)B?kp2$waEYliZ$GaYnM`-DmGu3}uy4y*m$_usF$p_eM!jx6rg;882 z=D<_xx8jlG#)E2%xH#%r?5wanZRPWU4a{0YgX>1tq~gdyM^N`6la3rb5+Rdr^l?G# z9hXZoI)6~S;0_;5_#`8XO8l5Ok5C&J9zi8pKL9(~d4w3e#T~l?c^$k4&#+?2CP)~D zFt6>ok?PMY{-TQGTwRAB$?SllZ7G9ia0=S?HaAFI;fNo~qaLwTbACxTN-X18kg?T| zLPoJjtti`A^?X#JczddiOx6mM7HpDjEv?DLs$~mf4L1WDt+kL`HiDgw=%>=8;21SU zvQU_}LgA3eNUT3py@j!z&N{Sr&G0=e5R})G$jFV5$j>xFw0Xn9$8u9Q{hVAg&=|ng zy>DkM!K>>>f`q%*bdwPYv>J;;?w$>dxYB?eDTAf8^!vX3+Qk>kuzom{1|^ysxRhZc zscl?!Bx36-o))W+Ocv=cqfA?2y%{`Vi9KV<^@4FhbYh~Ed zJMXheZzIy;Za4GezOjWsoyh1%aCy>op8mjX!!t#;a=DMeIb`s=#gZI{7Nd>3 zY!yPieI990c8~=X`ngO@Z~KI@LgTI@ZL9~V%cy;%7E}=05!HDQK4b=~vM4!Er`#3n zoEaK?0e)*Bo4)bJSU#(Y?bpnt=7OlmM4Iet%EWKoahr}AZ~MKk;o(CNx`FwbK?G^( z5k#6v@bVsIY@9vCCti?5wq516*+J&sws@LGF=Hd1ymvV7u4@lSD^CBJ+o}kxfl9ow9$RM6(!0<&~^x;$Yf6P};`C z%48emWBJC?c}M?|CAi{9y+sXV3vp69l?Qm_*g&-!{G3%Qv62q^*D!LAKC!WSIr>N) zc(hWh5++&Rtu5Bjr$@`HYRd8BFIwIh+=99h>o5st0ZUJbX+}GNFor7j`qa*N%z^Ed zC|L{WMbS36$7o;d17ZYci#?lj6Z-?`WG7UMY~J>(RAes$Wq8YG+?tZbRn|w~dqLTn!>X&D)hZ&w@AxRU z;hn*C)m1(vv%35W(vEceOk!0eP?}htp_wFnKBF>0%}G9y$w(HgnIcK5WL449w5&X0 zcCD(an*$jG+e!%u+`Q^Tm!XWM-o6)y#@ZF_uDRV-cOl8$z zp$cWddP7sVEUGHqozko|@eHNU#$W)c`R4bn&?}k{`y&mgx}L;0H^XRCck<~N%ryw7 zC$?%JU2Nfk{XP}@v~|>{q_{DjzLa@x_<@)GXi6UC96YLQq8KMo}?;2Eb^{ODA$Z;=fQca9iLC_>X*-%j_b~ve(}LQ zngXH@W@y-65V?;2bJ^I(7-H`PwHdk zN>~2^2KIa0{qm@Hmy~t$$f6o017td>V^P;wqBG&K?nXhfaiX;FgU!knhNC!+ zMK?N7N}zRsn_v}eU`Nx?f#=7gsBe_q00KkccVbPTCt_N?X}Z;V2r3f0*9ZD1R8EHk+do0R@Ffd0Kv5k{T~Yc>j6+Q80G zF75TtOIhEdRR!GNwuWVkME-G+{nC$eGe1u9C>VP)i`suNZkK0 zZ*Aqj|Bx)^-CLZehi{L(`>$FaMuI?8DxWLsw(!!FO5uqrtB;ob02&$H`K%KoIN<@H z9ntxr(g&GeY*a<6G7U*cHafXlkh^YUsG3LG7W}wt(9}dj`!|kPue#R_I)>J1>LZ?- zuX23g%C2^zI>}w$#pegD*9#JRSyY*-&*@AUkEY@@b5t!IF!CF)WJOGIdIgOVH4w7_ zMOxabmM9*<6OR&?P!mMsq++NFIrlE#2_zaP-mPo}>ZZPMOHLEXN_b;a>9hmWRoU%3 zsLW@i>hHc+Q1|#lZ=+?>vGl=&9uw(y%Z09IuNcx0N?yox7bQc}IIQ zneM2XAHA=p|HY_xBDbg2z;|G*_|S)bXTR5f5JN{3u^g+??WL`n_>G>}sjvIxO|r~l z`ie*OF~9a^%Hg?{CGStO%%{zr<>)XDUxMK+7()Sf3*-LCtw@HV54oM#rmx>=)2Xy6 zjuzRmC02`q(%>sLn&M5W7^YHzSfPnGXG_fyY3{Q%pr{%8fI|ZhhoL{ak=~*$fhJ|` z1@~Jzq6*o-hx3e6Sxju;o8$2?9gDMTyr9vP$f6@tXiOzprj>_isK2yPGxk(S*kacf z*B_1@KnYuh4UXl{TxjL`r;02J(q=?MSaK3p;~38NU)J~;yZovFb#=T=@qXz>Ht?pQ z&(oqRt2>_V%ZcNBM;7^7@;$f)vN9Ir2h|`P8r*CFW`e3Zuy0#E%J;jaEjXF5r%+r> z%T+(39v*E*fp~UQ7PTpEl*QXII9thVADY-={fo7GjGa>a-+75+i=BGTXD(K!+v*u@#ISU3L%E9@;96!h2aRbs+71En51hkF zvwUQNxXDLD)%H_`T0UfCR7Q-qikqtow^IT`{8I~%g+`)OlcZvKoY0M zxyevoquhTy<~}$%`oojQi0@BIc1tU!%Ep@=A`V#CXFkWRqFo z7m~d1N%p)o70Fe(42480J%J#I2Zj5p){RB@!dXu8qwQrlCx$LM7N1OvE{8@8=knUw zh;x?X(d+c6WX!~2%T=+C*sX5VxdppQFTW*qCnJx}6{9CF*Kc$IZR4e8IT#cb+&6kT zBljfuHAAL+jb8OYz?wCO<%l+PvU)S#(9Sc|Je!Rk8iYk7G3q)~#SVSu<)oW-%)zaM>#8=+12aZnyaw|Ho!q9Ow;qr`w=QLlANvHIpqG+qIl*m`}J%a z8R?zPS{-e)?VlsG=)j)?EeaG54~PQ##ygVCn&0hAwwh~-O3UHU6=?%EvZ>e(bwacn z2uY&caRl`j`OZ~?a|=^iqTrFQlE!4%pjoPP_)vJ6H$t_{g}VZqWB9J;Rads*#kwF0 z+}^uHAfm+IJn``?$4q-?ba@wKxpJ>cMK0#Ut8jn7g0|9Gvpb^WJ>9w3YGrwc&3&9!qK#SZSdA(;y9eor>Yb9&qPER6s4(tp#)^?^vkoUdd9^Vv(nr!1Mg80onzuH+eDtj3 zj^DF|d3?8(3w~Z`MWUcOb3fEw8NPDOI!lX_yoWbGUwn4A$@2K)%b~%Ct9?~fViD=B z^S!P66IQJ4p`#^{6Hdxp{3%-0bUlntKr?M?9pA{o?zY%nR

    r{O`yCxh7UTS>CmA zq`pH{tDRU=U;N32U%z)pY%sPt{yQ3<-q$hGJdIB2uAo_@{2#KZHOk+JpqV6+NXetc zlNG6^Rz(?7O0;F*iYiX%f4#?yQ*N}E$R!MDrXkw?GS{)B^*r-0Q zi|4C^sBDUhsakLGylQ8mM}rrarTKxXN{g%}Z#4P!Ce3t_brws5a&eMncd?a#Nhn(A z`F~xcH(p9R1~_5G=8cCx8&4ldKO86iv)pPk$A*iSF|n2$N#}B#bP9WdH){8ctuyPR z%PnkgK$dEFMaR}eMrqXb$w?*RPxKu3J-?s4HLFz~einBrU%}vj)hcGR9AJ8jr*q|+ z&KS8QOz$KiMhaV&nr^$$C|c=zh8;1cWcS2<9T^RpfG()FY!7OOR4q<%OJz=i$GdU0 zC;6WHBaNo=aJ-lRwdv;wcci4I(pPCn(bivtvdh{UTe(0HO^?g~BRRw=j+LUtOODrg uXuMNiUc;gBE* literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/ko.po b/local/recipes/dev/gnu-make/source/po/ko.po new file mode 100644 index 0000000000..37b2faf072 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/ko.po @@ -0,0 +1,2458 @@ +# Korean messages for GNU make. +# Copyright (C) 1996, 2001, 2013 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Bang Jun-Young , 1996. +# Changwoo Ryu , 2001, 2006, 2013-2014, 2016, 2019-2020, 2022. +# +# 용어 +# - recipe - 명령 (makeì˜ action으로 실행할 명령어를 ë§í•¨) +# - prerequisite - ì„ í–‰ ì¡°ê±´ +# +# 참고 +# - order-only란 ì˜ì¡´í•˜ëŠ” 타겟 중ì—서 명령어 순서만 지정하고 íŒŒì¼ ìˆ˜ì • +# 시ê°ì€ 무시하는 종류를 ë§í•œë‹¤. "Types of Prerequisites" 참고. +# +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-25 23:09+0900\n" +"Last-Translator: Changwoo Ryu \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "ì§€ì›ë˜ì§€ 않는 ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë ¤ê³  함: '%s'" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "ì•„ì¹´ì´ë¸Œ 멤버 touch는 VMSì—서 사용할 수 없습니다" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: '%s' ì•„ì¹´ì´ë¸Œê°€ 없습니다" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: '%s'ì€(는) 올바른 ì•„ì¹´ì´ë¸Œê°€ 아닙니다" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: '%s' 멤버가 '%s' ì•ˆì— ì—†ìŠµë‹ˆë‹¤" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: '%s'ì— ëŒ€í•˜ì—¬ ar_member_touchì—서 실패 리턴 코드" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module()ì´ ëª¨ë“ˆì •ë³´ë¥¼ 추출하는 ë° ì‹¤íŒ¨, ìƒíƒœ = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control()ì´ ì‹¤íŒ¨, ìƒíƒœ = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "멤버 ìƒíƒœ %2$dë²ˆì„ ì°¸ì¡°í•˜ë ¤ê³  '%1$s' ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì—´ 수 없습니다" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (ì´ë¦„ì´ ìž˜ë ¤ë‚˜ê°”ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " ë‚ ì§œ %s" + +#: 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:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "ëª…ë ¹ì–´ì— ì¤„ì´ ë„ˆë¬´ 많습니다 (최대 %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** 중지.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] ì•„ì¹´ì´ë¸Œ '%s' 멤버는 ê°€ì§œì¼ ìˆ˜ 있으므로 삭제하지 않습니다" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** ì•„ì¹´ì´ë¸Œ '%s' 멤버는 ê°€ì§œì¼ ìˆ˜ 있으므로 삭제하지 않습니다" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] '%s' 파ì¼ì„ 삭제합니다" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** '%s' 파ì¼ì„ 삭제합니다" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# 실행할 명령어" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (내장):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " ('%s'ì—서, %lu번째 줄):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# 디렉터리\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: statì„ í•  수 없었습니다.\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: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:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (장치 %ld, ì•„ì´ë…¸ë“œ %ld): ì—´ 수 없습니다.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (키 %s, ë³€ê²½ì‹œê° %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (장치 %d, ì•„ì´ë…¸ë“œ [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (장치 %ld, ì•„ì´ë…¸ë“œ %ld): " + +# 여기서 No는 "No files"ë¼ê³  ì“°ì¸ë‹¤. ê¶ê·¹ì ìœ¼ë¡œ msgidê°€ ê³ ì³ì ¸ì•¼ 함 +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "0ê°œ" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " 파ì¼, " + +# 여기서 no는 "no impossibilities"ë¼ê³  ì“°ì¸ë‹¤. ê¶ê·¹ì ìœ¼ë¡œ msgidê°€ ê³ ì³ì ¸ì•¼ 함 +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "0ê°œ" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " 불가능" + +#: src/dir.c:1180 +msgid " so far." +msgstr " 지금까지." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " 디렉토리 %luê°œì—서 불가능.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "변수 ì°¸ì¡°ì— ëë§ˆì¹¨ì´ ì—†ìŠµë‹ˆë‹¤" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "íŒŒì¼ '%s'ì˜ %s:%luì—서 ëª…ë ¹ì„ ì§€ì •í–ˆìŠµë‹ˆë‹¤." + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "íŒŒì¼ '%s'ì— ëŒ€í•œ ëª…ë ¹ì„ ë¬µì‹œì  ê·œì¹™ íƒìƒ‰ìœ¼ë¡œ 찾았습니다." + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "하지만 '%s' 파ì¼ì€ ì´ì œ '%s'ê³¼(와) ê°™ì€ íŒŒì¼ë¡œ 간주합니다." + +#: 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:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "ë‹¨ì¼ ì½œë¡  '%s'ì„(를) ì´ì¤‘ 콜론 '%s'(으)로 ì´ë¦„ì„ ë°”ê¿€ 수 없습니다" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "ì´ì¤‘ 콜론 '%s'ì„(를) ë‹¨ì¼ ì½œë¡  '%s'(으)로 ì´ë¦„ì„ ë°”ê¿€ 수 없습니다" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** 중간 íŒŒì¼ '%s'ì„(를) 삭제합니다" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "중간 파ì¼ì„ 제거합니다...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: 타임스탬프가 범위를 벗어나므로, %sì„(를) 대체합니다" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# íƒ€ê²Ÿì´ ì•„ë‹˜:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# 프레시어스 íŒŒì¼ (.PRECIOUSì˜ ì„ í–‰ì¡°ê±´)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# í¬ë‹ˆ 타겟 (.PHONYì˜ ì„ í–‰ì¡°ê±´)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# 명령행 타겟." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "" +"# 기본 ë©”ì´í¬íŒŒì¼, MAKEFILES ë©”ì´í¬íŒŒì¼, ë˜ëŠ” -include/sinclude ë©”ì´í¬íŒŒì¼." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# 내장 규칙" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# ë¬µì‹œì  ê·œì¹™ íƒìƒ‰ì´ 완료ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# ë¬µì‹œì  ê·œì¹™ íƒìƒ‰ì´ 완료ë˜ì§€ 않았습니다." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# 묵시ì /ê³ ì • 패턴 스템: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# 파ì¼ì´ ì¤‘ê°„ë‹¨ê³„ì˜ ì„ í–‰ì¡°ê±´ìž…ë‹ˆë‹¤." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# 변경 시ê°ì´ ê²°ì½” 검사ë˜ì§€ 않았ìŒ." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# 파ì¼ì´ 없습니다." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# 파ì¼ì´ 매우 오래ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# 마지막 변경 %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# 파ì¼ì„ ì—…ë°ì´íŠ¸í–ˆìŠµë‹ˆë‹¤." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# 파ì¼ì„ ì—…ë°ì´íŠ¸í•˜ì§€ 않았습니다." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# 현재 ì‹¤í–‰ì¤‘ì¸ ëª…ë ¹(ì´ê²ƒì€ 버그입니다)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# 현재 ì‹¤í–‰ì¤‘ì¸ ì˜ì¡´ì„±(ì´ê²ƒì€ 버그입니다)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# 성공ì ìœ¼ë¡œ ì—…ë°ì´íЏ." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# ì—…ë°ì´íЏ í•„ìš”(-q 설정ë¨)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# ì—…ë°ì´íЏ 실패." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# 'command_status' ë©¤ë²„ì— ê°’ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# 파ì¼" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# íŒŒì¼ í•´ì‹œ í…Œì´ë¸” 통계:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: '%s' 필드가 ìºì‹œì— ì—†ìŒ: %s" + +#: 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:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "'word' í•¨ìˆ˜ì˜ ì²«ë²ˆì§¸ ì¸ìžëŠ” 0보다 커야 합니다" + +#: src/function.c:821 +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:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) 실패 (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) 실패 (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() 실패 (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() 실패\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "임시 배치 íŒŒì¼ %sì„(를) ì§€ì›ë‹ˆë‹¤\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: íŒŒì¼ ì´ë¦„ì´ ì—†ìŠµë‹ˆë‹¤" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: ì¸ìžê°€ 너무 많습니다" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: 올바르지 ì•Šì€ íŒŒì¼ ë™ìž‘: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "함수 '%2$s'ì— ì¸ìž 갯수(%1$u)ê°€ 부족합니다" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "ì´ í”Œëž«í¼ì—서는 구현ë˜ì§€ 않았습니다: '%s' 함수" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "함수 '%s'ì— ëŒ€í•´ 종료ë˜ì§€ ì•Šì€ í˜¸ì¶œ: '%c' 문ìžê°€ 빠졌ìŒ" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "빈 함수 ì´ë¦„" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "ìž˜ëª»ëœ í•¨ìˆ˜ ì´ë¦„: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "함수 ì´ë¦„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "함수 `%2$s'ì— ìµœì†Œ ì¸ìž 갯수(%1$u)ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "함수 `%2$s'ì— ìµœëŒ€ ì¸ìž 갯수(%1$u)ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: '%s' ì˜µì…˜ì€ ì• ë§¤í•œ 옵션입니다\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: '--%s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: '%c%s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: '%s' ì˜µì…˜ì€ ì¸ìˆ˜ê°€ 필요합니다\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: ì¸ì‹í•  수 없는 옵션 '--%s'\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: ì¸ì‹í•  수 없는 옵션 '%c%s'\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ìž˜ëª»ëœ ì˜µì…˜ -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ë¶€ì ì ˆí•œ 옵션 -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: ì´ ì˜µì…˜ì€ ì¸ìˆ˜ê°€ 필요합니다 -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: '-W %s' ì˜µì…˜ì€ ì• ë§¤í•œ 옵션입니다\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: '-W %s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: '%s' 확장\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: '%s' í•´ì„\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "해시 í…Œì´ë¸”ì— %lu ë°”ì´íŠ¸ë¥¼ 할당할 수 없습니다: 메모리 바닥남" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "로드=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "다시 해시=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "ì¶©ëŒ=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "'%s'ì— ëŒ€í•œ ë¬µì‹œì  ê·œì¹™ì„ ì°¾ê³  있습니다.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "'%s'ì— ëŒ€í•œ ì•„ì¹´ì´ë¸Œë©¤ë²„ ë¬µì‹œì  ê·œì¹™ì„ ì°¾ê³  있습니다.\n" + +#: 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 "Trying harder.\n" +msgstr "ë” ì‹œë„하는 중.\n" + +# 스템(stem)ì´ëž€ 패턴 룰ì—서 prefix/suffix를 제외한 나머지를 ë§í•œë‹¤. +# 예를 들어 `%.c'ë¼ëŠ” íŒ¨í„´ì— `hello.c'ê°€ 들어 ë§žì•˜ì„ ê²½ìš° stemì€ `hello'ì´ë‹¤. +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "'%s' 패턴 규칙 ì‹œë„ ('%.*s' 스템).\n" + +# 스템(stem)ì´ëž€ 패턴 룰ì—서 prefix/suffix를 제외한 나머지를 ë§í•œë‹¤. +# 예를 들어 `%.c'ë¼ëŠ” íŒ¨í„´ì— `hello.c'ê°€ 들어 ë§žì•˜ì„ ê²½ìš° stemì€ `hello'ì´ë‹¤. +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "ìŠ¤í…œì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤: '%s%.*s'.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "불가능한 규칙 선행조건 '%2$s' ë•Œë¬¸ì— '%1$s' ê·œì¹™ì€ ê±°ë¶€ë©ë‹ˆë‹¤.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "불가능한 ë¬µì‹œì  ì„ í–‰ì¡°ê±´ '%2$s' ë•Œë¬¸ì— '%1$s' ê·œì¹™ì€ ê±°ë¶€ë©ë‹ˆë‹¤.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "규칙 선행조건 '%s'ì„(를) 시ë„합니다.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%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 "'%2$s' ë•Œë¬¸ì— í˜¸í™˜ì„± 규칙 '%1$s' 사용.\n" + +#: 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" + +#: 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/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:557 +msgid " (ignored)" +msgstr " (무시ë¨)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<내장>" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] 오류 %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** ë나지 ì•Šì€ ìž‘ì—…ì„ ê¸°ë‹¤ë¦¬ê³  있습니다...." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (ì›ê²©)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "성공한 하위 프로세스 %p PID %s %sì„(를) 거둬들입니다\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "실패한 하위 프로세스 %p PID %s %sì„(를) 거둬들입니다\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "임시 배치 íŒŒì¼ %sì„(를) ì§€ì›ë‹ˆë‹¤\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "임시 배치 íŒŒì¼ %s 지우기가 실패했습니다(%d)\n" + +#: 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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "하위 프로세스 %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()ê°€ 프로세스를 시작하는 ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤(e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"실행 실패ì—서 ì¸ìˆ˜ %dê°œ\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "하위 프로세스 %p(%s)ì—서 토í°ì„ 받았습니다.\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: '%s' 타겟 ì—…ë°ì´íЏ, ì´ìœ : %s" + +#: 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:2106 +msgid "cannot enforce load limit: " +msgstr "부하 ì œí•œì„ ê°•ì œí•  수 없습니다: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "íŒŒì¼ í•¸ë“¤ì´ ì—†ìŒ: 표준 ìž…ë ¥ì„ ë³µì‚¬í•  수 없습니다" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "íŒŒì¼ í•¸ë“¤ì´ ì—†ìŒ: 표준 ì¶œë ¥ì„ ë³µì‚¬í•  수 없습니다" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "íŒŒì¼ í•¸ë“¤ì´ ì—†ìŒ: 표준 오류를 복사할 수 없습니다" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "표준 ìž…ë ¥ì„ ë³µêµ¬í•  수 없습니다" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "표준 ì¶œë ¥ì„ ë³µêµ¬í•  수 없습니다" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "표준 오류를 복구할 수 없습니다" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: 환경 변수 ê³µê°„ì´ ë°”ë‹¥ë‚¬ì„ ìˆ˜ 있습니다" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELLì´ ë°”ë€Œì—ˆìŠµë‹ˆë‹¤(과거 '%s', 현재 '%s')\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "임시 배치 íŒŒì¼ %sì„(를) 만듭니다\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"배치 íŒŒì¼ ë‚´ìš©:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"배치 íŒŒì¼ ë‚´ìš©:%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 (%d번째 줄) ìž˜ëª»ëœ ì‰˜ 컨í…스트 (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "ì „ì—­ 심볼 í…Œì´ë¸”ì„ ì—¬ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: %s" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "%s ì‹¬ë³¼ì„ %sì—서 ì½ì–´ë“¤ì´ëŠ”ë° ì‹¤íŒ¨: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "ì½ì–´ë“¤ì¼ 심볼 ì´ë¦„ì´ ë¹„ì—ˆìŒ: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "%s ì‹¬ë³¼ì„ %sì—서 ì½ì–´ë“¤ìž„\n" + +#: 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' ìž‘ì—…ì€ ì´ í”Œëž«í¼ì—서 ì§€ì›ë˜ì§€ 않습니다" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "옵션:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m 무시ë©ë‹ˆë‹¤, í˜¸í™˜ì„ ìœ„í•´ 유지.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make ì¡°ê±´ì— ê´€ê³„ ì—†ì´ ëª¨ë“  íƒ€ê²Ÿì„ ë§Œë“­ë‹ˆë‹¤.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C <디렉터리>, --directory=<디렉터리>\n" +" 뭔가 하기 ì „ì— <디렉터리>로 ì´ë™í•©ë‹ˆë‹¤.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d 여러 가지 디버깅 정보를 출력합니다.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=플래그] 여러 가지 ì¢…ë¥˜ì˜ ë””ë²„ê¹… 정보를 출력합니다.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" 환경변수가 ë©”ì´í¬íŒŒì¼ ë‚´ìš©ì— ìš°ì„ í•©ë‹ˆë‹¤.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E <문ìžì—´>, --eval=<문ìžì—´>\n" +" <문ìžì—´>ì„ ë©”ì´í¬íŒŒì¼ 내용으로 í•´ì„합니다.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f <파ì¼>, --file=<파ì¼>, --makefile=<파ì¼>\n" +" <파ì¼>ì„ ë©”ì´í¬íŒŒì¼ë¡œ ì½ìŠµë‹ˆë‹¤.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help ì´ ë©”ì‹œì§€ë¥¼ 출력하고 ë냅니다.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors 명령ì—서 ë°œìƒí•˜ëŠ” 오류를 무시합니다.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I <디렉터리>, --include-dir=<디렉터리>\n" +" í¬í•¨í•  ë©”ì´í¬íŒŒì¼ì„ <디렉터리>ì—서 찾습니다.\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] ë™ì‹œì— Nê°œì˜ ìž‘ì—… 허용, ì¸ìž 없으면 무한대로 í—ˆ" +"ìš©.\n" + +#: 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: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" +" 로드가 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 심볼릭 ë§í¬ì™€ 실제 중 ë” ìµœê·¼ 수정 시ê°ì„\n" +" 사용합니다.\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" +" 실제로는 아무 ëª…ë ¹ë„ ì‹¤í–‰í•˜ì§€ 않고 표시만 합니" +"다.\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 <파ì¼>, --old-file=<파ì¼>, --assume-old=<파ì¼>\n" +" <파ì¼>ì´ ì•„ì£¼ 오래 ë˜ì—ˆë‹¤ê³  ìƒê°í•˜ê³  다시 만들" +"ì§€\n" +" 않습니다.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[ë°©ì‹], --output-sync[=ë°©ì‹]\n" +" 병렬 ìž‘ì—…ì˜ ì¶œë ¥ì„ <ë°©ì‹>ì— ë”°ë¼ ë§žì¶¥ë‹ˆë‹¤.\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question ëª…ë ¹ì„ ì‹¤í–‰í•˜ì§€ 않ìŒ. 종료 ìƒíƒœë¡œ ì—…ë°ì´íЏ\n" +" 여부를 알 수 있습니다.\n" + +#: 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:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr " -R, --no-builtin-variables 내장 변수를 지정하지 못하게 합니다.\n" + +#: 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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent 명령어를 출력합니다. (--silent 모드 ë„기)\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" -k ì˜µì…˜ì„ ë•니다.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch íƒ€ê²Ÿì„ ë‹¤ì‹œ 만들지 않고 touchë§Œ 합니다.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace ì¶”ì  ì •ë³´ë¥¼ 표시합니다.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version makeì˜ ë²„ì „ 번호를 출력하고 ë냅니다.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory 현재 디렉터리를 출력합니다.\n" + +#: 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:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W <파ì¼>, --what-if=<파ì¼>, --new-file=<파ì¼>, --assume-new=<파ì¼>\n" +" <파ì¼>ì„ ë¬´í•œížˆ ê³„ì† ìƒˆë¡œìš´ 것으로 취급합니" +"다.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables ì •ì˜ë˜ì§€ ì•Šì€ ë³€ìˆ˜ë¥¼ 참조할 때 경고를 냅니다.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "디버깅 단계 지정 '%s'ì´(ê°€) 잘못ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "알 수 없는 output-sync ë°©ì‹ '%s'" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "사용법: %s [옵션] [타겟] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"ì´ í”„ë¡œê·¸ëž¨ì€ %sì—서 사용하ë„ë¡ ë¹Œë“œë˜ì—ˆìŠµë‹ˆë‹¤\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"ì´ í”„ë¡œê·¸ëž¨ì€ %s(%s)ì—서 사용하ë„ë¡ ë¹Œë“œë˜ì—ˆìŠµë‹ˆë‹¤\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "문제ì ì„ 로 알려 주십시오.\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: ì¸í„°ëŸ½íЏ/예외가 발견ë˜ì—ˆìŠµë‹ˆë‹¤(코드 = 0x%lx, 주소 = 0x%p)\n" + +#: src/main.c: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" +"프로그램 %sì—서 처리ë˜ì§€ ì•Šì€ ì˜ˆì™¸ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤\n" +"예외코드 = %lx\n" +"예외플래그 = %lx\n" +"예외주소 = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "ì ‘ê·¼ 권한 위반: 주소 0x%pì— ì“°ê¸°\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "ì ‘ê·¼ 권한 위반: 주소 0x%pì—서 ì½ê¸°\n" + +#: 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: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: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 "" +"경고: 작업서버를 사용할 수 없습니다: -j1ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ìƒìœ„ ë©”ì´í¬ ê·œì¹™ì— " +"'+'를 추가합니다." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"경고: 파ìƒëœ ë©”ì´í¬ì—서 -j%d ì˜µì…˜ì´ ê°•ì œë˜ì—ˆìŠµë‹ˆë‹¤: 작업서버 모드를 초기화합" +"니다." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "표준입력ì—서 받아들ì´ëŠ” ë©”ì´í¬íŒŒì¼ì´ ë‘ ë²ˆ ì´ìƒ 지정ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: 임시 íŒŒì¼ %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"경고: ë©”ì´í¬íŒŒì¼ì—서 -j%d ì˜µì…˜ì´ ê°•ì œë˜ì—ˆìŠµë‹ˆë‹¤: 작업서버 모드를 초기화합니" +"다." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "병렬 작업(-j)ì€ ì´ í”Œëž«í¼ì—서 ì§€ì›í•˜ì§€ 않습니다." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "ë‹¨ì¼ ìž‘ì—… (-j1) 모드로 ëŒì•„갑니다." + +#: 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: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:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "ë©”ì´í¬íŒŒì¼ '%s'ì€(는) 반복할 수 있으므로, 다시 만들지 않습니다.\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: ì½ì–´ë“¤ì´ëŠ”ë° ì‹¤íŒ¨" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "'%s' ë©”ì´í¬íŒŒì¼ì„ 다시 ë§Œë“œëŠ”ë° ì‹¤íŒ¨." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "í¬í•¨ëœ ë©”ì´í¬íŒŒì¼ '%s'ì„(를) 찾지 못했습니다." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "ë©”ì´í¬íŒŒì¼ '%s'ì„(를) 찾지 못했습니다" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "ì›ëž˜ 디렉터리로 ëŒì•„ê°ˆ 수 없습니다" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "재실행[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL ì•ˆì— íƒ€ê²Ÿì´ ì—¬ëŸ¬ ê°œ 들어 있습니다" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "타겟 ì—†ìŒ" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "íƒ€ê²Ÿì´ ì§€ì •ë˜ì§€ 않았고 ë©”ì´í¬íŒŒì¼ì´ 없습니다" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "최종 íƒ€ê²Ÿì„ ê°±ì‹ í•©ë‹ˆë‹¤....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"경고: 시계가 잘못ë˜ì—ˆìŒì´ 발견ë˜ì—ˆìŠµë‹ˆë‹¤. 빌드가 불완전할 수 있습니다." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "'%s%s' ì˜µì…˜ì€ ë¹„ì–´ 있지 ì•Šì€ ë¬¸ìžì—´ ì¸ìˆ˜ê°€ 필요합니다" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "'-%c' ì˜µì…˜ì€ 0보다 í° ì •ìˆ˜ ì¸ìˆ˜ê°€ 필요합니다" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%s%s 빌드\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%s%s(%s) 빌드\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%së¼ì´ì„ ìФ GPLv3+: GNU GPL 버전 3 ë˜ëŠ” ì´í›„ \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# ë©”ì´í¬ ë°ì´í„°ë² ì´ìФ, %sì— í‘œì‹œ" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# ë©”ì´í¬ ë°ì´í„°ë² ì´ìФ 마침, %sì—서\n" + +#: 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 "using default temporary directory '%s'" +msgstr "기본 임시 디렉터리 '%s' 사용" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "%s 임시 íŒŒì¼ ë§Œë“¤ê¸°: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "임시 íŒŒì¼ %s ì‚­ì œ: %s" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: 알 수 없는 디렉터리 나ê°\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: 디렉터리 '%s' 들어ê°\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: 디렉터리 '%s' 나ê°\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: 알 수 없는 디렉터리 들어ê°\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: 알 수 없는 디렉터리 나ê°\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: 디렉터리 '%s' 들어ê°\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: 디렉터리 '%s' 나ê°\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "경고: 출력 ìž ê¸ˆì„ ì–»ì„ ìˆ˜ 없으므로, 출력 ë™ê¸°í™”를 사용하지 않습니다." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". 멈춤.\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 "%s 작업서버를 ì—´ 수 없습니다: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "알 수 없는 작업서버 ì¸ì¦ ìŠ¤íƒ€ì¼ '%s'" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "작업 파ì´í”„ ìƒì„±" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "작업 파ì´í”„ dup() 수행" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "작업서버 파ì´í”„ 초기화" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "ìž˜ëª»ëœ --jobserver-auth 문ìžì—´ '%s'" + +# ??? 디버깅 메세지 +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "작업서버 쓰기" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "작업 서버가 꺼졌습니다" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect 작업 파ì´í”„" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "작업 파ì´í”„ ì½ê¸°" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "'%s' ë©”ì´í¬íŒŒì¼ì„ ì½ê³  있습니다" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (최종 íƒ€ê²Ÿì´ ì—†ìŒ)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (íƒìƒ‰ 경로)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (ìƒê´€ 안함)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (~ 확장 ì—†ìŒ)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "ë©”ì´í¬íŒŒì¼ '%s'ì—서 UTF-8 BOM 무시\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "ë©”ì´í¬íŒŒì¼ 버í¼ì—서 UTF-8 BOM 무시\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "ì¡°ê±´ë¬¸ì— ë¶€ì ì ˆí•œ ë¬¸ë²•ì´ ì“°ìž„" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "첫번째 타겟보다 앞ì—서 명령어가 시작ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "명령 ì•žì— ê·œì¹™ì´ ë¹ ì¡ŒìŒ" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "" +"분리 기호가 없습니다 (빈 칸 8개가 ì•„ë‹ˆë¼ íƒ­ì„ ì“°ë ¤ê³  한 것 아니었습니까?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "분리 기호가 빠졌ìŒ" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "타겟 íŒ¨í„´ì´ ë¹ ì¡ŒìŒ" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "다중 타겟 패턴" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "타겟 íŒ¨í„´ì— '%%'ê°€ 없습니다." + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "'endif'ê°€ 빠졌ìŒ" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "빈 변수 ì´ë¦„" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "'define' ì§€ì‹œìž ë’¤ì— í•„ìš” 없는 í…스트 있ìŒ" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "'endef'ê°€ 빠졌ìŒ. 'define'ì„ ë§ˆì¹˜ì§€ 않았습니다" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "'endef' ì§€ì‹œìž ë’¤ì— í•„ìš” 없는 í…스트가 있ìŒ" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "'%s' ì§€ì‹œìž ë’¤ì— í•„ìš” 없는 í…스트가 있ìŒ" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "í•„ìš” 없는 '%s'" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "한 ê°œì˜ ì¡°ê±´ì—는 한 ê°œì˜ 'else'ë§Œ 있어야 합니다" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "타겟별 변수 ì •ì˜ í˜•ì‹ì´ 틀렸습니다" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "그룹 íƒ€ê²Ÿì€ ëª…ë ¹ì–´ë¥¼ 제공해야 합니다" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "ë¬µì‹œì  íŒ¨í„´ 룰과 ê³ ì •ëœ íŒ¨í„´ë£°ì´ ì„žì˜€ìŠµë‹ˆë‹¤" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "í˜¼í•©ëœ ë¬µì‹œì  ê·œì¹™ê³¼ ì¼ë°˜ì  규칙" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "타겟 '%s'ì€(는) 타겟 íŒ¨í„´ì— ë§žì§€ 않습니다" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "타겟 íŒŒì¼ '%s'ì€(는) :와 :: í•­ëª©ì„ ë™ì‹œì— ê°–ê³  있습니다" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "타겟 '%s'ì´(ê°€) ê°™ì€ ê·œì¹™ì—서 여러 번 주어졌습니다" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "경고: 타겟 '%s'ì— ëŒ€í•œ 명령보다 우선합니다" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "경고: 타겟 '%s'ì— ëŒ€í•œ 과거 ëª…ë ¹ì„ ë¬´ì‹œí•©ë‹ˆë‹¤" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** í˜¼í•©ëœ ë¬µì‹œì  ê·œì¹™ê³¼ ì¼ë°˜ì  규칙: 추천하지 않는 문법입니다" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "경고: 타겟 '%s'ì˜ ê·¸ë£¹ 소ì†ë³´ë‹¤ 우선합니다" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "경고: NUL 문ìžê°€ 발견ë˜ì—ˆìŠµë‹ˆë‹¤. ì¤„ì˜ ë‚˜ë¨¸ì§€ëŠ” 무시ë©ë‹ˆë‹¤" + +#: 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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s'ì€(는) ì´ë¯¸ ì—…ë°ì´íЏë˜ì—ˆìŠµë‹ˆë‹¤." + +# pruneì´ truncateì˜ ì˜ë¯¸ì¸ê°€ 지운다는 ì˜ë¯¸ì¸ê°€?? +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "'%s' 파ì¼ì„ 잘ë¼ëƒ…니다.\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%s타겟 '%s'ì„(를) 만들 ê·œì¹™ì´ ì—†ìŠµë‹ˆë‹¤%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "'%s' 타겟 파ì¼ì„ 고려합니다.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "ìµœê·¼ì— '%s' íŒŒì¼ ì—…ë°ì´íŠ¸ë¥¼ 시ë„í•´ 실패했습니다.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "'%s' 파ì¼ì€ ì´ë¯¸ 검토했습니다.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "ì•„ì§ '%s' 파ì¼ì„ ì—…ë°ì´íŠ¸í•˜ê³  있습니다.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "'%s' 파ì¼ì˜ ì—…ë°ì´íŠ¸ë¥¼ 마쳤습니다.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "'%s' 파ì¼ì´ 없습니다.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Warning: .LOW_RESOLUTION_TIME íŒŒì¼ '%s'ì— ê³ í•´ìƒë„ 타임 스탬프가 들어 있" +"습니다" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "'%2$s' 파ì¼ì˜ 그룹 타겟 ìƒëŒ€ '%1$s'ì´(ê°€) 없습니다.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "'%s'ì— ëŒ€í•´ 기본 명령 사용.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "%s <- %s ìƒí˜¸ ì˜ì¡´ì„±ì€ 무시ë©ë‹ˆë‹¤." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "타겟 íŒŒì¼ '%s'ì˜ ì„ í–‰ì¡°ê±´ì„ ë§ˆì³¤ìŠµë‹ˆë‹¤.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "'%s'ì˜ ì„ í–‰ì¡°ê±´ì´ ë§Œë“¤ì–´ì§€ê³  있습니다.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "타겟 íŒŒì¼ '%s'ì„(를) í¬ê¸°í•©ë‹ˆë‹¤.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "오류로 '%s' íƒ€ê²Ÿì„ ë‹¤ì‹œ 만들지 못했습니다." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "'%s' ì„ í–‰ ì¡°ê±´ì€ '%s' íƒ€ê²Ÿì— ëŒ€í•´ 순서만 ì„ í–‰ 조건입니다.\n" + +#: 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:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "'%s' ì„ í–‰ ì¡°ê±´ì´ '%s' 타겟보다 ë‚˜ì¤‘ì— ë§Œë“¤ì–´ì¡ŒìŠµë‹ˆë‹¤.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "'%s' ì„ í–‰ ì¡°ê±´ì´ '%s' 타겟보다 먼저 만들어졌습니다.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "'%s' íƒ€ê²Ÿì€ ì½œë¡  ë‘ ê°œê°€ 붙었고 ì„ í–‰ì¡°ê±´ì´ ì—†ìŠµë‹ˆë‹¤.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "'%s'ì— ëŒ€í•œ 명령어가 없고 ì–´ë–¤ ì„ í–‰ì¡°ê±´ë„ ì‹¤ì œë¡œ 바뀌지 않았습니다.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "always-make 옵션 ë•Œë¬¸ì— '%s' íƒ€ê²Ÿì„ ë§Œë“­ë‹ˆë‹¤.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "'%s' íƒ€ê²Ÿì„ ë‹¤ì‹œ 만들 필요가 없습니다" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; VPATH ì´ë¦„ '%s'ì„(를) 사용합니다" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "'%s' íƒ€ê²Ÿì„ ë‹¤ì‹œ 만들어야 합니다.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " VPATH ì´ë¦„ '%s'ì„(를) 무시합니다.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "'%s'ì˜ ëª…ë ¹ì´ ì‹¤í–‰ 중입니다.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "'%s' 타겟 파ì¼ì„ 다시 ë§Œë“œëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "'%s' 타겟 파ì¼ì„ 성공ì ìœ¼ë¡œ 다시 만들었습니다.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "'%s' 타겟 파ì¼ì„ -q 옵션으로 다시 만들어야 합니다.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "'%s'ì— ëŒ€í•´ 기본 ëª…ë ¹ì„ ì‚¬ìš©.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "경고: '%s' 파ì¼ì˜ 변경 시ê°(%s)ì´ ë¯¸ëž˜ìž…ë‹ˆë‹¤" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNSì˜ ì›ì†Œ '%s'ì´(ê°€) íŒ¨í„´ì´ ì•„ë‹™ë‹ˆë‹¤" + +# ??? 디버깅 메세지 -- 뭔지 알기 어려움 +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customsì€ exportë˜ì§€ 않습니다: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "경고: 접미어 규칙 ì •ì˜ì—서 ì„ í–‰ì¡°ê±´ì„ ë¬´ì‹œí•©ë‹ˆë‹¤" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# ë¬µì‹œì  ê·œì¹™" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# ë¬µì‹œì  ê·œì¹™ ì—†ìŒ." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# ë¬µì‹œì  ê·œì¹™ %uê°œ, %u (%.1f%%) 터미ë„." + +#: 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 "알 수 없는 신호" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "ëŠì–´ì§" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "ì¸í„°ëŸ½íЏ" + +#: src/signame.c:98 +msgid "Quit" +msgstr "ë내기" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "ìž˜ëª»ëœ ëª…ë ¹" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "ì¶”ì /ì¤‘ë‹¨ì  íŠ¸ëž©" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "중단ë¨" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT 트랩" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT 트랩" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "ë¶€ë™ ì†Œìˆ˜ì  ì˜ˆì™¸" + +#: src/signame.c:121 +msgid "Killed" +msgstr "죽었ìŒ" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "버스 오류" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "세그멘테ì´ì…˜ 오류" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "ìž˜ëª»ëœ ì‹œìŠ¤í…œ 호출" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "깨어진 파ì´í”„" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "ìžëª…종 시계" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "종료ë¨" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "ì‚¬ìš©ìž ì •ì˜ ì‹ í˜¸ 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "ì‚¬ìš©ìž ì •ì˜ ì‹ í˜¸ 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "하위 프로세스 ë남" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "ì „ë ¥ 중단" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "중지ë¨" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "중지ë¨(tty ìž…ë ¥)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "중지ë¨(tty 출력)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "중지ë¨(시그ë„)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU 시간 제한 초과ë¨" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "íŒŒì¼ í¬ê¸° 제한 초과ë¨" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "ê°€ìƒ íƒ€ì´ë¨¸ 시간 초과ë¨" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "프로파ì¼ë§ 타ì´ë¨¸ 시간 초과ë¨" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "ì°½ì´ ë°”ë€Œì—ˆìŒ" + +#: src/signame.c:189 +msgid "Continued" +msgstr "계ì†ë¨" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "긴급한 입출력 ìƒí™©" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "입출력 가능" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "ìžì› ì†ì‹¤" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "위험 신호" + +#: src/signame.c:217 +msgid "Information request" +msgstr "ì •ë³´ 요청" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "ë¶€ë™ì†Œìˆ˜ì  ì—°ì‚° 보조프로세서가 없습니다" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s 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 strcache 버í¼: %lu (%lu) / 문ìžì—´ = %lu / 저장 공간 = %lu B / í‰ê·  = %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 현재 버í¼: í¬ê¸° = %hu B / 사용 = %hu B / 개수 = %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 기타 사용: ì „ì²´ = %lu B / 개수 = %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 기타 빈 공간: ì „ì²´ = %lu B / 최대 = %lu B / 최소 = %lu B / í‰ê·  = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache 효율: 검색 = %lu / 히트 비율 = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# 해시 í…Œì´ë¸” 통계:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "ìžë™" + +#: src/variable.c:1789 +msgid "default" +msgstr "기본값" + +#: src/variable.c:1792 +msgid "environment" +msgstr "환경" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "ë©”ì´í¬íŒŒì¼" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "-e í•˜ì˜ í™˜ê²½" + +#: src/variable.c:1801 +msgid "command line" +msgstr "명령행" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "'override' 지시ìž" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " ('%s'ì—서, %lu번째 줄)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# 변수 ëª¨ìŒ í•´ì‹œ í…Œì´ë¸” 통계:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# 변수\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# íŒ¨í„´ì„ ìœ„í•œ 변수 ê°’" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# íŒ¨í„´ì„ ìœ„í•œ 변수 ê°’ì´ ì—†ìŠµë‹ˆë‹¤." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# 특정 íŒ¨í„´ì„ ìœ„í•œ 변수 ê°’ %uê°œ" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "경고: ì •ì˜ë˜ì§€ ì•Šì€ ë³€ìˆ˜ '%.*s'" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search()ê°€ %dë²ˆì„ ë¦¬í„´í•˜ë©° 실패했습니다\n" + +# DCL - Digital Command Language, VMSì—서만 존재하는 shell languageì˜ ì¼ì¢… +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-경고, DCLì—서 CTRL-Y를 다시 사용가능하ë„ë¡ í•´ì•¼ í•  것입니다.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "내장 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 "ì¶œë ¥ì„ %sì— ë¶™ìž…ë‹ˆë‹¤\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "%.*sì„(를) ë¶™ì´ê³  ì§€ì›ë‹ˆë‹¤\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "대신 %sì„(를) 실행\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH íƒìƒ‰ 경로\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# 'vpath' íƒìƒ‰ 경로가 ì—†ìŒ." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# 'vpath' íƒìƒ‰ 경로 %uê°œ.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# ì¼ë°˜ì ì¸ ('VPATH' 변수) íƒìƒ‰ 경로가 ì—†ìŒ." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# ì¼ë°˜ì ì¸ ('VPATH' 변수) íƒìƒ‰ 경로:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "작업서버 ìŠ¬ë¡¯ì€ %d개로 제한ë©ë‹ˆë‹¤\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "작업서버 세마í¬ì–´ 만들기: (오류 %ld: %s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "작업 서버 í´ë¼ì´ì–¸íЏ(세마í¬ì–´ %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "작업 서버 세마í¬ì–´ í•´ì œ: (오류 %ld: %s)" + +#: 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/local/recipes/dev/gnu-make/source/po/lt.gmo b/local/recipes/dev/gnu-make/source/po/lt.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c6ac4e684e784a0d53f093ec624e4d2457a31caa GIT binary patch literal 6827 zcma)=e~g^RS;t?XNy`;lC{0sJX~%?1e2w>fXFJ5KeQxad>|EnpUw!AKBnr{o?%dw^ zefNF0?~h9^32jw1st{@me?%6dKVpH3P=N^Y2SI}T0k@!lRD}u&35g0tRH&ja-gocz94GCoo&CJ;%)B%6{FrB+-LJpnP0vJJ4^iGr`PPp|(Z}Im-NYBy3vZ61 zx5K}LZ-FntpM_t8x4{2^zX)H2zX0D&Cj*bcpM;m;FTqFQPr*;ZpN5}KCBoIo~`#3i(8yFX?d$YCWHVTJLAz4E%EQ z{4(SdeUq=BgWqd7#mgH1eNb{7gqS`$3=t(d0zUv3AfITHuQ$OhD7!xi-w%HWO8!5C ze4>BmOY3`LJ_-3mUud5H80x*R zLfQ2d_%0}=N&Z`*^$*GqOFp#06(@^6+1SQ81N`D1Zocc8UG1#V@rbvgn9;Dny z>FA-kPC)5E*RdMA-%KCuC)uRu@g?2o$VfrAQBKgK!<;TSv_z2Qu>D2ivOG3fszaPpF`$Zp3e3zV}I>0Nt7{xf;WKb9!JLive_h8Fkt zP%cv*pvYfVDC0|hqDy{qKjk6H8s!2-*CmR4ME;;lej}fdUq(~6nX^83-7?F)E2i{( z&L^(W&C+0)_^vO_rK+jvWX6vxb5+i&--cc=o3_|&m3BRGrYLP$v}uW^);4`%hI!V{ z?ZB*8J}J#cmYZo!^}225;B+xF6&Z8ZmX5yMRla8y%yjRN>F?eRvYw-IZaSN#^T9BB z%cnDK9(q}NM`^k?cQZVtcHqpw_cu$k?o63iX_t|Ep(!&xw_z(5*3WFxRDI02$A>m8 ze3q)Fa5nF5nxQQ>c?|L%GLdwV6@_2-i7(OKYbuOS&2&{X{Nd8eQ!UjwR|fzizkP znRdHgutjMwuix;9C1*j%cB84OKUl_uLTxlQ}-gej`^qV#1|>h)$`pCqnt z6O#>tLRu{|-L2>G>6T5{C9iF1YI66{3YRRjRz#`>E-lUO01r=BkF?DXm8b6Z#xl(s zvsz|DRCqeE`M`9OtQ$vXY|j+iMd_%pNfMo@3ghxT%cFZ&F4vY#{D8RQ9`9mL*Ng7W zQbezGSLL}@EBi-hrJdXqzMtA8T3lXZYujNIoWAf+ICI@F=aLNXL50K2Ge$RS5t-x* zY&bcg-C`dpf<@Q$)Ix%qqou zqx)sGUew9>H11SP+?rzOy0z2WRDQU->xr6G+KX1Q#}IgfWmdV1K3w@Sy5ww6GL7Ry zF*}RCFS$V$oDD%;K5#v+P#Pjv(>}~{Hh9$!+vOxTEsbzbKdol7ynjkV6j_yb(PD-S zt4rrs?z`Ao)XjrSowL!Z>&tIyNkagQWa}Z~H6(5Z%gpRml;t)-aafht)#2`;^0H!= zq){v$D~JUn(QebEpsFuy-)T3RhimsP9x)HsJM|G0-h9xfz3egKgxsYUxxtWCU@^@z z-YWz=DaYufXnJhf+=t^V)Qvk9+sOR5B6~MWd&K=rzBll=1jE(y>YzaDX*A$i@k55) zUtdIN7L9{M+i>`M*F`INc7=eN;@AfYprb$S#9YaFAonB z>(di5XHHCCxV(0*b$qX%7R?l`#k9+Lk@nl>__{BrJ`%LjHnpM@CxUD!q7FS_7nGaM z>=VM+UXM6g%<}$um%6;x#{FmPx=YOb?EL)fv8fgIqD@-o*!G+XCLM<7V&UisQ{OHe zOsD7P78d5s?YA4<&K+2opEn;gbEX}hPc0l#Q|LB#a(>P{^;F%DhPfF!&eQS8%!!bm zokspNw!Y5Q6tKLKu#WSiYq|6B=o%Yn=PCkOUu?$-x1oLKYHm3(CwuwP^W$FJ*0~%5 zQaiBp%LVOghjq_M`d~wy+g{U z5q_kU&m2^A>*ty^ByO%?=d4${9}>*5zaQYJ9FyLxkG@iRR!XF1sdC)#O0AZPh`n8A zR|v{JE|P4o>0<^>3{e3mPN*JQ??%^RloLC)f<{q1wq6-wsw3GCw%4WgeNQ0~w83^& zRyYEeiL=D8k3v$?8Lz;b+K7XltNU_7RoJm+8fxOLjlhS3RpvRjo0icA!L(jrC&JPI9=$tx^p!i5NZ&4ucKO& z9tMxtxr%2s4#=B#)RTn7lCwb`XG!F5lveKispCu-Sc6ch8@=e$Y=B_3Bkl0_qUKl{ zU2A&btGnH>PH?xZ$v%-bGou%`@hnq~UNrg6RmK}Ve*#DLJD>5*EKPcuxFzMd!;nrT)!?#gW7uOGnrkl&4-MNl@0SDHm=_iV&E zB!^}U#m>1FdlFzf^sX^39;>sxGB?V7nYnZ^=b8Sz!24M}ihjKmxYkzVGph;?>rz3q zcRNmnbzDr=Dj(i8&ug3Z>@^deZo+nuGlYy<`pNq16dd%!7U, 2008. +msgid "" +msgstr "" +"Project-Id-Version: make-3.81\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2008-05-17 21:42+0300\n" +"Last-Translator: Gintautas Miliauskas \n" +"Language-Team: Lithuanian \n" +"Language: lt\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: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/ar.c:47 +#, fuzzy, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "bandymas naudoti nepalaikomÄ… funkcionalumÄ…: „%s“" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "" + +#: src/ar.c:151 +#, fuzzy, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Archyvas „%s“ neegzistuoja" + +#: 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:161 +#, fuzzy, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Archyvas „%s“ neegzistuoja" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "" + +#: src/arscan.c:261 +#, fuzzy, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "nepavyko atverti bibliotekos „%s“ bandant surasti narį „%s“" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (pavadinimas gali bÅ«ti sutrumpintas)" + +#: 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, mode = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "" + +#: src/commands.c:647 +#, fuzzy, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Trinamas failas „%s“" + +#: src/commands.c:649 +#, fuzzy, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Trinamas failas „%s“" + +#: src/commands.c:685 +#, fuzzy +msgid "# recipe to execute" +msgstr "# vykdytinos komandos" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (integruota)" + +#: src/commands.c:690 +#, fuzzy, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (nuo „%s“, %lu eilutÄ—):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Aplankai\n" + +#: 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: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:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "" + +#: 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:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "" + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "" + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Ne" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " failai, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "ne" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " negalimybÄ—s" + +#: src/dir.c:1180 +msgid " so far." +msgstr " kol kas." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " negalimybÄ—s %lu aplankuose.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "neterminuota nuoroda į kintamÄ…jį" + +#: 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: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: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: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:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" + +#: src/file.c:407 +#, fuzzy, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Trinamas tarpinis failas „%s“" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Å alinami tarpiniai failai...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Laiko žymÄ— už rėžių; keiÄiama į %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ne tikslas:" + +#: src/file.c:1094 +#, fuzzy +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Brangus failas (reikalingas .PRECIOUS)" + +#: src/file.c:1096 +#, fuzzy +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Keistas tikslas (reikalingas .PHONY)." + +#: src/file.c:1098 +#, fuzzy +msgid "# Command line target." +msgstr "# KomandinÄ—s eilutÄ—s tikslas" + +#: 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:1102 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# NÄ—ra neiÅ¡reikÅ¡tinių taisyklių." + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# NeiÅ¡reikÅ¡tinių taisyklių paieÅ¡ka atlikta." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# NeiÅ¡reikÅ¡tinių taisyklių paieÅ¡ka neatlikta." + +#: 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:1109 +#, fuzzy +msgid "# File is an intermediate prerequisite." +msgstr "# Failas yra tarpinÄ— sÄ…lyga" + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Modifikacijos laikas niekada netikrintas." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Failas neegzistuoja." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Failas labai senas." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Paskutinį kartÄ… pakeista %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Failas atnaujintas." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Failas nebuvo atnaujintas." + +#: src/file.c:1139 +#, fuzzy +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Dabar vykdomos komandos (TAI KLAIDA)." + +#: src/file.c:1142 +#, fuzzy +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Vykdomos priklausomybių komandos (TAI KLAIDA)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# SÄ—kmingai atnaujinta." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Turi bÅ«ti atnaujinta (-q nustatyta)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Nepavyko atnaujinti." + +#: src/file.c:1163 +#, fuzzy +msgid "# Invalid value in 'command_state' member!" +msgstr "# Netaisyklinga reikÅ¡mÄ— „command_state“ naryje!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Failai" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# failų maiÅ¡os lentelÄ—s statistika:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "" + +#: 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:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "" + +#: src/function.c:2347 src/function.c:2383 +#, fuzzy, c-format +msgid "open: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2360 +#, fuzzy, c-format +msgid "write: %s: %s" +msgstr "raÅ¡ymo klaida: %s" + +#: src/function.c:2363 src/function.c:2402 +#, fuzzy, c-format +msgid "close: %s: %s" +msgstr "%s%s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "" + +#: src/function.c:2397 +#, fuzzy, c-format +msgid "read: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2409 +#, fuzzy, c-format +msgid "file: invalid file operation: %s" +msgstr "%s: netaisyklingas argumentas -- %c\n" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "" + +#: src/getopt.c:659 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: parametras `%s' dviprasmis\n" + +#: src/getopt.c:683 +#, fuzzy, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: argumentas „--%s“ neleidžia parametro\n" + +#: src/getopt.c:688 +#, fuzzy, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: argumentas „%c%s“ neleidžia parametro\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, fuzzy, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: parametrui „%s“ reikia argumento\n" + +#: src/getopt.c:734 +#, fuzzy, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: neatpažintas argumentas „--%s“\n" + +#: src/getopt.c:738 +#, fuzzy, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: neatpažintas argumentas „%c%s“\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: neleistinas parametras -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: netaisyklingas argumentas -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: parametrui reikia argumento -- %c\n" + +#: src/getopt.c:844 +#, fuzzy, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: parametras „-W %s“ dviprasmis\n" + +#: src/getopt.c:862 +#, fuzzy, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: parametras „-W %s“ neleidžia argumento\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "" + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "" + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "" + +#: 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: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: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 "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, c-format +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:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "" + +#: 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 "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 "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/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:552 +msgid " (core dumped)" +msgstr "" + +#: src/job.c:557 +msgid " (ignored)" +msgstr "" + +#: src/job.c:561 src/job.c:1900 +#, fuzzy +msgid "" +msgstr " (integruota)" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "" + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr "" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "" + +#: 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:972 +#, fuzzy, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "%s: nepavyko atverti laikinojo failo: %s" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "" + +#: 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: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:2106 +#, fuzzy +msgid "cannot enforce load limit: " +msgstr "%s: nepayko pakeisti limito: %s" + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "" + +#: 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:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: 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:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr "" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr "" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" + +#: 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: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:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" + +#: 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: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:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" + +#: 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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr "" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" + +#: 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:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" + +#: 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:834 +#, fuzzy, c-format +msgid "unknown debug level specification '%s'" +msgstr "nežinomas debug lygio specifikacija „%s“" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Naudojimas: %s [argumentai] [tikslas] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Å i programa sukompiliuota %s sistemai\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Å i programa sukompiliuota %s (%s) sistemai\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "PraneÅ¡kite apie klaidas adresu \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" + +#: 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:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "" + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "" + +#: 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: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:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" + +#: 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:2548 +#, fuzzy, c-format +msgid "Included makefile '%s' was not found." +msgstr "„Make“ failas „%s“ nerastas" + +#: src/main.c:2552 +#, fuzzy, c-format +msgid "Makefile '%s' was not found" +msgstr "„Make“ failas „%s“ nerastas" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Nepavyko grįžti į pirminį aplankÄ…." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "NÄ—ra tikslų" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Nenurodyta tikslų ir nerasta „make“ failų" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Atnaujinami tikslai...\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" + +#: 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:3267 +#, fuzzy, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "parametrui „-%c“ reikia teigiamo sveiko argumento" + +#: src/main.c:3652 +#, fuzzy, c-format +msgid "%sBuilt for %s\n" +msgstr "" +"\n" +"%sÅ i programa sukompiliuota %s sistemai\n" + +#: 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:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "" + +#: 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 "%s: Ä®einama į nežinomÄ… aplankÄ…\n" + +#: 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:100 +#, fuzzy, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Ä®einama į aplankÄ… „%s“\n" + +#: src/output.c:102 +#, fuzzy, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: IÅ¡einama iÅ¡ aplanko „%s“\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: IÅ¡einama iÅ¡ nežinomo aplanko\n" + +#: src/output.c:111 +#, fuzzy, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Ä®einama į aplankÄ… „%s“\n" + +#: 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:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Pabaiga.\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 "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "" + +#: src/posixos.c:363 +#, fuzzy +msgid "write jobserver" +msgstr "raÅ¡ymo klaida: %s" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "" + +#: 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:330 +#, fuzzy, c-format +msgid "Reading makefile '%s'" +msgstr "Skaitomas „make“ failas „%s“" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (nÄ—ra numatytojo tikslo)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (paieÅ¡kos kelias)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (nesvarbu)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (nÄ—ra ~ iÅ¡plÄ—timo)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "netaisyklinga sÄ…lygos sintaksÄ—" + +#: src/read.c:1002 +#, fuzzy, c-format +msgid "recipe commences before first target" +msgstr "komandos prasideda prieÅ¡ pirmÄ…jį tikslÄ…" + +#: src/read.c:1053 +#, fuzzy, c-format +msgid "missing rule before recipe" +msgstr "trÅ«ksta taisyklÄ—s prieÅ¡ komandas" + +#: 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:1156 +#, fuzzy, c-format +msgid "missing separator" +msgstr "trÅ«ksta skirtuko%s" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "trÅ«ksta tikslo Å¡ablono" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "keli tikslo Å¡ablonai" + +#: src/read.c:1306 +#, fuzzy, c-format +msgid "target pattern contains no '%%'" +msgstr "tikslo Å¡ablone nÄ—ra „%%“" + +#: src/read.c:1349 +#, fuzzy, c-format +msgid "missing 'endif'" +msgstr "trÅ«ksta „endif“" + +#: 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:1423 +#, fuzzy, c-format +msgid "extraneous text after 'define' directive" +msgstr "Perteklinis tekstas po „endef“ direktyvos" + +#: src/read.c:1448 +#, fuzzy, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "trÅ«ksta „endef“, nebaigtas „define“" + +#: src/read.c:1476 +#, fuzzy, c-format +msgid "extraneous text after 'endef' directive" +msgstr "Perteklinis tekstas po „endef“ direktyvos" + +#: src/read.c:1548 +#, fuzzy, c-format +msgid "extraneous text after '%s' directive" +msgstr "Perteklinis tekstas po „%s“ direktyvos" + +#: src/read.c:1549 +#, fuzzy, c-format +msgid "extraneous '%s'" +msgstr "perteklinis „%s“" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "" + +#: 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:255 +#, fuzzy, c-format +msgid "'%s' is up to date." +msgstr "„%s“ atnaujinti nereikia." + +#: src/remake.c:350 +#, fuzzy, c-format +msgid "Pruning file '%s'.\n" +msgstr "Vis dar atnaujinamas failas „%s“.\n" + +#: 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:426 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sNÄ—ra taisyklÄ—s pasiekti tikslui „%s“%s" + +#: src/remake.c:452 +#, fuzzy, c-format +msgid "Considering target file '%s'.\n" +msgstr "Svarstomas tikslo failas „%s“.\n" + +#: 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:471 +#, fuzzy, c-format +msgid "File '%s' was considered already.\n" +msgstr "Failas „%s“ jau apsvarstytas.\n" + +#: src/remake.c:481 +#, fuzzy, c-format +msgid "Still updating file '%s'.\n" +msgstr "Vis dar atnaujinamas failas „%s“.\n" + +#: src/remake.c:484 +#, fuzzy, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Baigtas atnaujinti failas „%s“.\n" + +#: src/remake.c:513 +#, fuzzy, c-format +msgid "File '%s' does not exist.\n" +msgstr "Failas „%s“ neegzistuoja.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Failas „%s“ neegzistuoja.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "" + +#: src/remake.c:737 +#, fuzzy, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Svarstomas tikslo failas „%s“.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "" + +#: src/remake.c:757 +#, fuzzy, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Svarstomas tikslo failas „%s“.\n" + +#: 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:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "" + +#: 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:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "" + +#: src/remake.c:865 +#, fuzzy, c-format +msgid "No need to remake target '%s'" +msgstr "Nereikia atnaujinti taikinio „%s“" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "" + +#: src/remake.c:891 +#, fuzzy, c-format +msgid "Must remake target '%s'.\n" +msgstr "BÅ«tina atnaujinti taikinį „%s“.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr "" + +#: src/remake.c:906 +#, fuzzy, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Vykdomos „%s“ komandos.\n" + +#: src/remake.c:913 +#, fuzzy, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Nereikia atnaujinti taikinio „%s“" + +#: src/remake.c:916 +#, fuzzy, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "BÅ«tina atnaujinti taikinį „%s“.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "" + +#: src/remake.c:1118 +#, fuzzy, c-format +msgid "Using default commands for '%s'.\n" +msgstr "paskutinÄ— komanda: %s\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# NeiÅ¡reikÅ¡tinÄ—s taisyklÄ—s" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# NÄ—ra neiÅ¡reikÅ¡tinių taisyklių." + +#: src/rule.c:610 +#, fuzzy, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u neiÅ¡reikÅ¡tinių taisyklių, %u" + +#: 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" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Pertraukimas" + +#: src/signame.c:98 +msgid "Quit" +msgstr "IÅ¡eita" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Neleistina instrukcija" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "" + +#: src/signame.c:112 +#, fuzzy +msgid "IOT trap" +msgstr "EMT gaudyklÄ—" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT gaudyklÄ—" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Slankaus kablelio klaida" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Nutraukta" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "MagistralÄ—s klaida" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Segmentacijos klaida" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Blogas sisteminis kvietimas" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Žadintuvas" + +#: src/signame.c:139 +#, fuzzy +msgid "Terminated" +msgstr "apribota" + +#: src/signame.c:142 +#, fuzzy +msgid "User defined signal 1" +msgstr "%s: nutrauktas signalo %d" + +#: src/signame.c:145 +#, fuzzy +msgid "User defined signal 2" +msgstr "%s: nutrauktas signalo %d" + +#: src/signame.c:150 src/signame.c:153 +#, fuzzy +msgid "Child exited" +msgstr "Failas jau egzistuoja" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Elektros maitinimo sutrikimas" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Sustabdyta" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Sustabdyta (tty įvedimas)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Sustabdyta (tty iÅ¡vedimas)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Sustabdyta (signalas)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "VirÅ¡ytas CPU laiko limitas" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "VirÅ¡ytas failo dydžio limitas" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Langas pakeistas" + +#: src/signame.c:189 +msgid "Continued" +msgstr "PratÄ™sta" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Galimas įvedimas/iÅ¡vedimas" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "IÅ¡teklius prarastas" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Pavojaus signalas" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Informacijos užklausa" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Slankaus kablelio koprocesorius neprieinamas" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +#, fuzzy +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"\n" +"# failų maiÅ¡os lentelÄ—s statistika:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "" + +#: src/variable.c:1789 +msgid "default" +msgstr "" + +#: src/variable.c:1792 +msgid "environment" +msgstr "" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "" + +#: src/variable.c:1801 +#, fuzzy +msgid "command line" +msgstr "%s: komanda nerasta" + +#: src/variable.c:1804 +#, fuzzy +msgid "'override' directive" +msgstr "tuÅ¡Äia „override“ direktyva" + +#: src/variable.c:1814 +#, fuzzy, c-format +msgid " (from '%s', line %lu)" +msgstr " (nuo „%s“, %lu eilutÄ—):\n" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" + +#: src/variable.h:237 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "%s: neatpažintas argumentas „%c%s“\n" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" + +#: src/vpath.c:617 +#, fuzzy +msgid "# No 'vpath' search paths." +msgstr " (paieÅ¡kos kelias)" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: 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!" + +#~ msgid "%s: Command not found" +#~ msgstr "%s: Komanda nerasta" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Kevalo programa nerasta" + +#~ msgid "Unknown error %d" +#~ msgstr "Nežinoma klaida %d" + +#~ 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" + +#~ msgid "extraneous `endef'" +#~ msgstr "perteklinis „endef“" + +#, fuzzy +#~ msgid "invalid `override' directive" +#~ msgstr "netaisyklinga „override“ direktyva" + +#, fuzzy +#~ msgid "Redirected error to %s\n" +#~ msgstr "skaitymo klaida: %d: %s" diff --git a/local/recipes/dev/gnu-make/source/po/make.pot b/local/recipes/dev/gnu-make/source/po/make.pot new file mode 100644 index 0000000000..bfdd5b30b4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/make.pot @@ -0,0 +1,2321 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the GNU make package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.4\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" + +#: 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:996 +msgid " (name might be truncated)" +msgstr "" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr "" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr "" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr "" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr "" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "" + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "" + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "" + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr "" + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr "" + +#: src/dir.c:1180 +msgid " so far." +msgstr "" + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr "" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "" + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "" + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "" + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "" + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "" + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "" + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "" + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "" + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "" + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "" + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "" + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "" + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "" + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "" + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "" + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "" + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "" + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "" + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "" + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "" + +#: 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:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "" + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "" + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "" + +#: src/implicit.c:326 +#, c-format +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:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "" + +#: 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 "Looking for a rule with explicit file '%s'.\n" +msgstr "" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "" + +#: 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:552 +msgid " (core dumped)" +msgstr "" + +#: src/job.c:557 +msgid " (ignored)" +msgstr "" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "" + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr "" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "" + +#: 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:2106 +msgid "cannot enforce load limit: " +msgstr "" + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: 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:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr "" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr "" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" + +#: 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: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:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" + +#: 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: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:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" + +#: 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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr "" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" + +#: 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:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" + +#: 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:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "" + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "" + +#: 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" + +#: 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 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "" + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "" + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" + +#: 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 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr "" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "" + +#: 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 "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "" + +#: 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 "" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr "" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr "" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr "" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr "" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "" + +#: 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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "" + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "" + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "" + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr "" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" + +#: 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 "" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "" + +#: src/signame.c:98 +msgid "Quit" +msgstr "" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "" + +#: src/signame.c:121 +msgid "Killed" +msgstr "" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "" + +#: src/signame.c:189 +msgid "Continued" +msgstr "" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "" + +#: src/signame.c:217 +msgid "Information request" +msgstr "" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" + +#: src/variable.c:1786 +msgid "automatic" +msgstr "" + +#: src/variable.c:1789 +msgid "default" +msgstr "" + +#: src/variable.c:1792 +msgid "environment" +msgstr "" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "" + +#: src/variable.c:1801 +msgid "command line" +msgstr "" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr "" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: 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/local/recipes/dev/gnu-make/source/po/nl.gmo b/local/recipes/dev/gnu-make/source/po/nl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..163d4ac78fb79e8ebb530da82e56d565be2d0be3 GIT binary patch literal 48958 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 Zr+aDqfC$`Ew$M0Pl(LHpUYSvu{y+26QfvSK literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/nl.po b/local/recipes/dev/gnu-make/source/po/nl.po new file mode 100644 index 0000000000..779ab4b050 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/nl.po @@ -0,0 +1,2600 @@ +# Dutch translations for GNU make. +# Copyright (C) 2022 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# "On the plus side, Miss Vernon was outstandingly good-looking." +# +# Taco Witte , 2004. +# Benno Schulenberg , 2005, 2006, 2007, 2010. +# Benno Schulenberg , 2013, 2014, 2016, 2019, 2020, 2022. +msgid "" +msgstr "" +"Project-Id-Version: 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 10:45+0200\n" +"Last-Translator: Benno Schulenberg \n" +"Language-Team: Dutch \n" +"Language: nl\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=2; plural=(n != 1);\n" + +#: 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: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:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: archief '%s' bestaat niet" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: '%s' is geen geldig archief" + +#: 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:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: ar_member_touch() van '%s' is mislukt" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"uitpakken van module-info door lbr$set_module() is mislukt, afsluitwaarde= %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() is mislukt, afsluitwaarde = %d" + +#: src/arscan.c:261 +#, c-format +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: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:996 +msgid " (name might be truncated)" +msgstr " (naam kan afgekapt zijn)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Datum %s" + +#: 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:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Recept bevat te veel regels (max %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Afgebroken.\n" + +#: 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:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Archiefonderdeel '%s' kan onecht zijn; niet verwijderd" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Verwijderen van bestand '%s'" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Verwijderen van bestand '%s'" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# uit te voeren recept" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (ingebouwd):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (uit '%s', regel %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Mappen\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: kan diens status niet opvragen.\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: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: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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (sleutel %s, wijzigingstijd %s): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (apparaat %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Geen" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " bestanden, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "geen" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " onmogelijkheden" + +#: src/dir.c:1180 +msgid " so far." +msgstr " tot nu toe." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " onmogelijkheden in %lu mappen.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "onafgemaakte verwijzing naar variabele" + +#: 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: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: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: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: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: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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Verwijderen van tussentijds bestand '%s'" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Verwijderen van tussentijdse bestanden...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Tijdsstempel ligt buiten bereik; wordt vervangen door %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Is geen doel:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Waardevol bestand (vereiste van .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Nepdoel (vereiste van .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Doel afkomstig van opdrachtregel." + +#: 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:1102 +msgid "# Builtin rule" +msgstr "# Ingebouwde regel" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Impliciete regel-zoekopdracht is uitgevoerd." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Impliciete regel-zoekopdracht is niet uitgevoerd." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Impliciete/statische patroonstam: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Bestand is een tussentijds vereiste." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Wijzigingstijd is nooit gecontroleerd." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Bestand bestaat niet." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Bestand is erg oud." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Laatst gewijzigd %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Bestand is bijgewerkt." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Bestand is niet bijgewerkt." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Nog lopend recept (DIT IS EEN PROGRAMMAFOUT)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Nog lopende receptafhankelijkheden (DIT IS EEN PROGRAMMAFOUT)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Met succes bijgewerkt." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Moet worden bijgewerkt ('-q' is ingesteld)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Bijwerken is mislukt." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ongeldige waarde in 'command_state'-onderdeel!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Bestanden" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# hashtabel-statistieken van bestanden:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Veld '%s' is niet gecached: %s" + +#: 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: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:821 +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: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=%lu)\n" +msgstr "windows32_openpipe(): DuplicateHandle(In) is mislukt (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe(): DuplicateHandle(Err) is mislukt (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() is mislukt (e=%lu)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Opschonen van tijdelijk batch-bestand %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: ontbrekende bestandsnaam" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open(): %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write(): %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close(): %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: te veel argumenten" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read(): %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: ongeldige bestandsbewerking: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "onvoldoende aantal argumenten (%u) voor functie '%s'" + +#: 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:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "onafgemaakte aanroep van functie '%s': '%c' ontbreekt" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Lege functienaam" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Ongeldige functienaam: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Functienaam is te lang: %s" + +#: 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:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Ongeldig maximumaantal argumenten (%u) voor functie %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: optie '%s' is niet eenduidig\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: optie '--%s' staat geen argument toe\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: optie '%c%s' staat geen argument toe\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: optie '%s' vereist een argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: onbekende optie '--%s'\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: onbekende optie '%c%s'\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ongeldige optie -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ongeldige optie -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: optie vereist een argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: optie '-W %s' is niet eenduidig\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: optie '-W %s' staat geen argument toe\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Expanderen van '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Evalueren van '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"kan %lu bytes voor hashtabel niet reserveren: onvoldoende geheugen " +"beschikbaar" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Belasting=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Herhash=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Botsingen=%lu/%lu=%.0f%%" + +#: 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: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:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Geen archiefonderdeel-impliciete regel gevonden voor '%s'.\n" + +#: src/implicit.c:326 +#, c-format +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:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stam is te lang: '%s%.*s'.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Regel '%s' met onmogelijke regelvereiste '%s' wordt verworpen.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Regel '%s' met onmogelijke impliciete vereiste '%s' wordt verworpen.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Proberen van regelvereiste '%s'.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Proberen van impliciete vereiste '%s'.\n" + +#: 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" +msgstr "Vereiste '%s' gevonden als VPATH '%s'.\n" + +#: 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/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:552 +msgid " (core dumped)" +msgstr " (geheugendump gemaakt)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (genegeerd)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Fout %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Wachten op onvoltooide taken..." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (ginds)" + +#: 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: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:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Opschonen van tijdelijk batch-bestand %s\n" + +#: 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: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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Token vrijgegeven voor dochterproces %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() kan geen proces starten (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"%d argumenten geteld bij mislukte start\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Token verkregen voor dochterproces %p (%s).\n" + +#: 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: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:2106 +msgid "cannot enforce load limit: " +msgstr "kan belastingsgrens niet afdwingen: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"geen bestandshandvatten meer beschikbaar: kan standaardinvoer niet dupliceren" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"geen bestandshandvatten meer beschikbaar: kan standaarduitvoer niet " +"dupliceren" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"geen bestandshandvatten meer beschikbaar: kan standaardfoutuitvoer niet " +"dupliceren" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Kan standaardinvoer niet herstellen" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Kan standaarduitvoer niet herstellen" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Kan standaardfoutuitvoer niet herstellen" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: mogelijk geen omgevingsruimte meer beschikbaar" + +#: 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: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:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Inhoud van batch-bestand:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Inhoud van batch-bestand:%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 (regel %d) Onjuiste shell-context (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Openen van globale symbolentabel is mislukt: %s" + +#: 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: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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Lege symboolnaam om te laden: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Laden van symbool %s uit %s\n" + +#: src/load.c:232 +#, c-format +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:317 +msgid "Options:\n" +msgstr "Opties:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr "" +" -b, -m (genegeerd, maar herkend wegens " +"compatibiliteit)\n" + +#: 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: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:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d veel informatie weergeven voor het debuggen\n" + +#: 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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides omgevingsvariabelen gaan boven Makefiles\n" + +#: 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:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f BESTAND, --file=BESTAND, --makefile=BESTAND\n" +" het gegeven bestand als Makefile gebruiken\n" +"\n" + +#: 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:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors alle fouten in recepten negeren\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I MAP, --include-dir=MAP deze map doorzoeken naar ingesloten " +"Makefiles\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] het uitvoeren van N taken tegelijk toestaan;\n" +" zonder N is het aantal onbeperkt\n" + +#: 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: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" +" alleen extra taken starten als de\n" +" systeembelasting lager is dan 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 van een symbolische koppeling en zijn doel\n" +" de laatste wijzigingstijd gebruiken\n" +"\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" +" recepten niet uitvoeren, alleen weergeven\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 BESTAND, --old-file=BESTAND, --assume-old=BESTAND\n" +" BESTAND als oud beschouwen, niet opnieuw " +"maken\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYPE], --output-sync[=TYPE]\n" +" uitvoer van parallelle taken synchroniseren " +"op TYPE\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question geen recepten uitvoeren; de afsluitwaarde\n" +" geeft aan of alles bijgewerkt is\n" + +#: 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: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: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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent recepten weergeven (--silent-modus " +"uitschakelen)\n" + +#: 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: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:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace tracing-informatie weergeven\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory de huidige map weergeven\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory optie '-w' uitzetten, ook als deze impliciet\n" +" was aangezet\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 BESTAND, --what-if=BESTAND, --new-file=BESTAND, --assume-new=BESTAND\n" +" BESTAND als oneindig nieuw beschouwen\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables waarschuwen als naar een ongedefinieerde\n" +" variabele wordt verwezen\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "onbekende aanduiding '%s' voor debug-niveau" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "onbekend uitvoersynchronisatie-type: '%s'" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Gebruik: %s [OPTIES] [DOEL]...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Dit programma is gecompileerd voor %s.\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Dit programma is gecompileerd voor %s (%s).\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Rapporteer programmafouten aan ;\n" +"meld gebreken in de vertaling aan .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Onderbreking/uitzondering gekregen (code = 0x%lx, adres = 0x%p)\n" + +#: src/main.c: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" +"Filter voor onbehandelde uitzondering is aangeroepen vanuit programma %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 "Toegangsrechtenovertreding: schrijfopdracht op adres 0x%p\n" + +#: 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: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: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: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." +msgstr "" +"Waarschuwing: taakserver is onbeschikbaar: '-j1' wordt gebruikt. Voeg '+' " +"toe aan de ouderregel." + +#: 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:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile op standaardinvoer is dubbel opgegeven" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: tijdelijk bestand %s: %s" + +#: 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: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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Opnieuw instellen op enkele-taakmodus (-j1)." + +#: 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: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: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: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:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Ingesloten Makefile '%s' is niet gevonden." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile '%s' is niet gevonden." + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Kan niet terugkeren naar oorspronkelijke map" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Opnieuw uitvoeren[%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Geen doelen" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Bijwerken van doelen...\n" + +#: 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: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: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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sDit programma is gecompileerd voor %s.\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sDit programma is gecompileerd voor %s (%s).\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicentie GPLv3+: GNU GPL versie 3 of nieuwer \n" +"%sDit is vrije software: u mag het vrijelijk wijzigen en verder " +"verspreiden.\n" +"%sEr is GEEN GARANTIE, voor zover de wet dit toestaat.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Make-gegevensbank, weergegeven op %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Make-gegevensbank voltooid op %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s waarde %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s waarde %s: is geen map" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "standaard tijdelijke map '%s' wordt gebruikt" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "aanmaken van tijdelijk bestand %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "verwijderen van tijdelijk bestand %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: tijdelijk bestand %s: %s" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Een onbekende map wordt verlaten\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Map '%s' wordt binnengegaan\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Map '%s' wordt verlaten\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Een onbekende map wordt verlaten\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Map '%s' wordt binnengegaan\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Map '%s' wordt verlaten\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"Waarschuwing: kan geen uitvoervergrendeling verkrijgen: " +"uitvoersynchronisatie wordt uitgeschakeld." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Gestopt.\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 "Kan taakserver %s niet openen: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Onbekende authenticatiestijl '%s' voor taakserver" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "aanmaken van takenpijp" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "dupliceren van takenpijp" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "initialiseren van taakserverpijp" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "ongeldige tekenreeks '%s' voor '--jobserver-auth'" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "schrijven naar taakserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "taakserver is gestopt" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect() van takenpijp" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "lezen van takenpijp" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Lezen van Makefile '%s'" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (geen standaarddoel)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (zoekpad)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (maakt niet uit)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (geen expansie van ~)" + +#: 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: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:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "ongeldige syntax in voorwaardelijk deel" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "recept begint voor eerste doel" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "ontbrekende regel vóór recept" + +#: 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:1156 +#, c-format +msgid "missing separator" +msgstr "ontbrekend scheidingsteken" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "ontbrekend doelpatroon" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "meerdere doelpatronen" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "doelpatroon bevat geen '%%'" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "ontbrekende 'endif'" + +#: 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:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "extra tekst na 'define'-opdracht" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "ontbrekende 'endef', onafgemaakte 'define'" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "extra tekst na 'endef'-opdracht" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "extra tekst na '%s'-opdracht" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "extra '%s'" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "slechts één 'else' per voorwaardelijk deel" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Onjuiste doelspecifieke variabele-definitie" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "gegroepeerde doelen moeten een recept geven" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "gemengde impliciete en statische patroonregels" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "gemengde impliciete en normale regels" + +#: 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: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: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:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "Waarschuwing: er wordt voorbijgegaan aan recept voor doel '%s'" + +#: 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:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** gemengde impliciete en normale regels: verouderde syntax" + +#: 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: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: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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s' is up-to-date." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Snoeien van bestand '%s'.\n" + +#: 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: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:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Doelbestand '%s' wordt overwogen.\n" + +#: 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Bestand '%s' was al overwogen.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Bestand '%s' wordt nog bijgewerkt.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Bijwerken van bestand '%s' is voltooid.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Bestand '%s' bestaat niet.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Waarschuwing: .LOW_RESOLUTION_TIME-bestand '%s' heeft een hoge-resolutie " +"tijdsstempel" + +#: src/remake.c:538 +#, c-format +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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Standaardrecept wordt gebruikt voor '%s'.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Circulaire afhankelijkheid %s <- %s is weggelaten." + +#: 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:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "De vereisten van '%s' worden nu gemaakt.\n" + +#: 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:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Doel '%s' is niet opnieuw gemaakt vanwege fouten." + +#: 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: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:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Vereiste '%s' is nieuwer dan doel '%s'.\n" + +#: 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: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: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:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Maken van '%s' vanwege 'always-make'-vlag.\n" + +#: 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:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; VPATH-naam '%s' wordt gebruikt" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Doel '%s' moet opnieuw gemaakt worden.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " VPATH-naam '%s' wordt genegeerd.\n" + +#: 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:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Opnieuw maken van doelbestand '%s' is mislukt.\n" + +#: 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: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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Standaardopdrachten worden gebruikt voor '%s'.\n" + +#: 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:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS-element '%s' is geen patroon" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customs kan niet exporteren: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "Waarschuwing: vereisten voor suffixregeldefinitie worden genegeerd" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Impliciete regels" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Geen impliciete regels." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u impliciete regels, %u (%.1f%%) eindpunten." + +#: 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" + +# Vroeger ging dit over het afsluiten van een modemverbinding, +# tegenwoordig over het afsluiten van een pseudoterminal. +#: src/signame.c:92 +msgid "Hangup" +msgstr "Opgehangen" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Onderbroken" + +# Verleden tijd, "Afgesloten", net als de andere actiesignaalnamen. +#: src/signame.c:98 +msgid "Quit" +msgstr "Afgesloten" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Ongeldige instructie" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Traceer/breekpunt-instructie" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Afgebroken" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT-instructie" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT-instructie" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Drijvendekomma-berekeningsfout" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Geëlimineerd" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Busfout" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Segmentatiefout" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Onjuiste systeemaanroep" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Gebroken pijp" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Wekker" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Beëindigd" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Gebruikergedefinieerd signaal 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Gebruikergedefinieerd signaal 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Dochterproces is afgesloten" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Stroomstoring" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Gepauzeerd" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Gepauzeerd (terminalinvoer)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Gepauzeerd (terminaluitvoer)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Gepauzeerd (signaal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Limiet op processortijd is overschreden" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Limiet op bestandsgrootte is overschreden" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtuele timer is afgelopen" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Timer voor profilering is afgelopen" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Venster is veranderd" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Doorgegaan" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Urgente in-/uitvoertoestand" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "In-/uitvoer is mogelijk" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Hulpbron verloren" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Gevaarsignaal" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Verzoek om informatie" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Drijvendekomma-coprocessor is niet beschikbaar" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Geen 'strcache'-buffers\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 'strcache'-buffers: %lu (%lu) / strings = %lu / opslag = %lu B / " +"gemiddeld = %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 huidig buffer: grootte = %hu B / gebruikt = %hu B / aantal = %hu / " +"gemiddeld = %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 gebruikte: totaal = %lu B / aantal = %lu / gemiddeld = %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 vrij: totaal = %lu B / max = %lu B / min = %lu B / gemiddeld = %hu " +"B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s 'strcache'-prestatie: lookups = %lu / treffersverhouding = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# hashtabel-statistieken van bestanden:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatisch" + +#: src/variable.c:1789 +msgid "default" +msgstr "standaard" + +#: src/variable.c:1792 +msgid "environment" +msgstr "omgeving" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "Makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "omgeving onder -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "opdrachtregel" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "'override'-opdracht" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (uit '%s', regel %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# Statistieken van hashtabel van variabelenverzameling:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabelen\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Patroonspecifieke variabelewaarden" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Geen patroonspecifieke variabelewaarden" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u patroonspecifieke variabelewaarden" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "Waarschuwing: ongedefinieerde variabele '%.*s'" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() is mislukt met afsluitwaarde %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-waarschuwing: mogelijk dient u CTRL-Y-afhandeling opnieuw aan te zetten " +"vanuit DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "INGEBOUWDE 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 "Uitvoer wordt toegevoegd aan %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Toevoegen van %.*s en opschoning\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "In plaats daarvan wordt %s uitgevoerd\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH-zoekpaden\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Geen 'vpath'-zoekpaden." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u 'vpath'-zoekpaden.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Geen algemeen zoekpad ('VPATH'-variabele)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Algemeen zoekpad ('VPATH'-variabele):\n" +"# " + +#: 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:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "aanmaken van taakserver-semafoor: (Fout %ld: %s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Taakservercliënt (semafoor %s)\n" + +#: 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: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" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Shell-programma niet gevonden" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s slaapt gedurende 30 seconden..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "klaar met 30 seconden slapen. Make gaat verder.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Onbekende fout %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Waarschuwing: bestand '%s' heeft een wijzigingstijd in de toekomst" + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: recept voor doel '%s' is mislukt" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Waarschuwing: lege omleiding\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Onbekende ingebouwde opdracht '%s'\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ "Ingebouwde opdracht is onbekend of wordt niet ondersteund in .ONESHELL: " +#~ "'%s'\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Fout: lege opdracht\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Invoer wordt omgeleid van %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Foutuitvoer wordt omgeleid naar %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Uitvoer wordt omgeleid naar %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Fout bij processtart, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "*interne fout*: meerdere opties '--sync-mutex'" + +#~ msgid "virtual memory exhausted" +#~ msgstr "onvoldoende geheugen beschikbaar" + +#~ msgid "write error" +#~ msgstr "schrijffout" + +#~ msgid "# Invalid value in 'update_status' member!" +#~ msgstr "# Ongeldige waarde in 'update_status'-onderdeel!" + +#~ msgid "unknown trace mode '%s'" +#~ msgstr "onbekende trace-modus '%s'" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Fout 0x%x (genegeerd)" + +#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n" +#~ msgstr "Recept uit %s:%lu wordt aangeroepen om doel '%s' bij te werken.\n" + +#~ msgid "Invoking builtin recipe to update target `%s'.\n" +#~ msgstr "Ingebouwd recept wordt aangeroepen om doel '%s' bij te werken.\n" + +#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n" +#~ msgstr "%s Aantal strcache-buffers: %d (* %d bytes/buffer = %d bytes)\n" + +#~ msgid "process_easy() failed failed to launch process (e=%ld)\n" +#~ msgstr "process_easy() kan geen proces starten (e=%ld)\n" + +#~ msgid "empty `override' directive" +#~ msgstr "lege 'override'-opdracht" + +#~ msgid "invalid `override' directive" +#~ msgstr "ongeldige 'override'-opdracht" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-waarschuwing: CTRL-Y zal subproces(sen) achterlaten.\n" diff --git a/local/recipes/dev/gnu-make/source/po/pl.gmo b/local/recipes/dev/gnu-make/source/po/pl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..996bc68bd540bf326f2bddc2b3b07abe8c6873b8 GIT binary patch literal 49133 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

    cMVLd#`m@Z3lBw8Q;|QksbRl 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 literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/pl.po b/local/recipes/dev/gnu-make/source/po/pl.po new file mode 100644 index 0000000000..67ccce50b5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/pl.po @@ -0,0 +1,2455 @@ +# Polish translation for GNU make. +# Copyright (C) 1996, 2002, 2005, 2006, 2010, 2013, 2014, 2016, 2019, 2020, 2022 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# PaweÅ‚ Krawczyk , 1996. +# Jakub Bogusz , 2002-2022. +# +msgid "" +msgstr "" +"Project-Id-Version: 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 20:41+0200\n" +"Last-Translator: Jakub Bogusz \n" +"Language-Team: Polish \n" +"Language: pl\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" + +#: 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:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "element biblioteki `touch' jest niedostÄ™pny pod VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Archiwum '%s' nie istnieje" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: '%s' nie jest poprawnym archiwum" + +#: 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: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'" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"Uzyskanie informacji o module przez lnr$set_module() nie udaÅ‚o siÄ™, status = " +"%d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() nie powiodÅ‚o siÄ™, status = %d" + +#: src/arscan.c:261 +#, c-format +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: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:996 +msgid " (name might be truncated)" +msgstr " (nazwa może zostać okrojona)" + +#: 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, mode = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Polecenia majÄ… za dużo linii (limit to %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Przerwano.\n" + +#: 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: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:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] KasujÄ™ plik '%s'" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** KasujÄ™ plik '%s'" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# polecenia do wykonania" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (wbudowane):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (z '%s', linia %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Katalogi\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: stat() zwraca błąd.\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: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: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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (klucz %s, czas modyfikacji %s): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (urzÄ…dzenie %ld, i-wÄ™zeÅ‚ %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Nie" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " pliki, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "nie" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " niemożliwoÅ›ci" + +#: src/dir.c:1180 +msgid " so far." +msgstr " jak dotÄ…d." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " niemożliwoÅ›ci w %lu katalogach.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "niezakoÅ„czone odwoÅ‚anie do zmiennej" + +#: 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: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: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: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: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: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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Kasowanie pliku poÅ›redniego '%s'" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Kasowanie plików poÅ›rednich...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Oznaczenie czasu spoza zakresu; zastÄ…piono %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# To nie jest obiekt:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Cenny plik (zależność .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Obiekt niejawny (zależność .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Obiekt podany w linii poleceÅ„." + +#: 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:1102 +msgid "# Builtin rule" +msgstr "# ReguÅ‚a wbudowana" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Szukanie reguÅ‚ domyÅ›lnych zostaÅ‚o wykonane." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Szukanie reguÅ‚ domyÅ›lnych nie zostaÅ‚o wykonane." + +#: 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:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Plik jest zależnoÅ›ciÄ… przejÅ›ciowÄ…." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Czas modyfikacji nie byÅ‚ sprawdzany." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Plik nie istnieje." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Plik jest bardzo stary." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Ostatnio modyfikowany %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Plik zostaÅ‚ uaktualniony." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Plik nie zostaÅ‚ uaktualniony." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Aktualnie uruchamiane polecenia (TO JEST BÅÄ„D)." + +#: 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:1151 +msgid "# Successfully updated." +msgstr "# Uaktualnienie powiodÅ‚o siÄ™." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Powinien być uaktualniony (-q jest włączone)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Uaktualnianie nie powiodÅ‚o siÄ™." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Błędna wartość w elemencie 'command_state'!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Pliki" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# statystyki tablic haszujÄ…cych plików:\n" +"# " + +#: 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:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: pusta wartość" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: '%s' spoza zakresu" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "błędny pierwszy argument funkcji 'word'" + +#: src/function.c: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:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "błędny pierwszy argument funkcji 'wordlist'" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "błędny drugi argument funkcji 'wordlist'" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "pierwszy argument funkcji 'intcmp' nie jest liczbowy" + +#: src/function.c: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=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) nie powiodÅ‚o siÄ™ (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) nie powiodÅ‚o siÄ™ (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() nie powiodÅ‚o siÄ™ (e=%lu)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "CzyszczÄ™ tymczasowy plik wsadowy %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "plik: brak nazwy" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "otwarcie: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "zapis: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "zamkniÄ™cie: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "plik: zbyt dużo argumentów" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "odczyt: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "plik: błędna operacja na pliku: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "niewystarczajÄ…ca liczba argumentów (%u) dla funkcji '%s'" + +#: 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:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "nie dokoÅ„czone wywoÅ‚anie funkcji '%s': brak '%c'" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Pusta nazwa funkcji" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Błędna nazwa funkcji: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Zbyt dÅ‚uga nazwa funkcji: %s" + +#: 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:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Błędna maksymalna liczba argumentów (%u) dla funkcji %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: opcja '%s' jest niejednoznaczna\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: opcja '--%s' nie przyjmuje argumentów\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: opcja '%c%s' nie może mieć argumentów\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: opcja '%s' musi mieć argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: nieznana opcja '--%s'\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: nieznana opcja '%c%s'\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: niedozwolona opcja -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: błędna opcja -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opcja musi mieć argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: opcja '-W %s' jest niejednoznaczna\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: opcja '-W %s' nie może mieć argumentów\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Rozwijanie '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Wyliczanie '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"nie można przydzielić %lu bajtów na tablicÄ™ haszujÄ…cÄ…: pamięć wyczerpana" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "WypeÅ‚nienie=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Przehaszowania=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Kolizje=%lu/%lu=%.0f%%" + +#: 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: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:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Znaleziono standardowÄ… regułę typu archive-member dla '%s'.\n" + +#: src/implicit.c:326 +#, c-format +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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Dalsza próba.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Próbowanie reguÅ‚y wzorcowej '%s' z gałęziÄ… '%.*s'.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Gałąź zbyt dÅ‚uga: '%s%.*s'.\n" + +#: 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:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Próbowanie zależnoÅ›ci domyÅ›lnej '%s'.\n" + +#: 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 '%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: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/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/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:557 +msgid " (ignored)" +msgstr " (zignorowano)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Błąd %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Oczekiwanie na niezakoÅ„czone zadania...." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (zdalne)" + +#: 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: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:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Czyszczenie tymczasowego pliku wsadowego %s\n" + +#: 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: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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Zwolniony token dla potomka %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() nie mógÅ‚ uruchomić procesu (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Naliczono %d parametrów nieudanego uruchomienia\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Otrzymano token dla potomka %p (%s).\n" + +#: 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: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:2106 +msgid "cannot enforce load limit: " +msgstr "niemożliwe wymuszenie limitu obciążenia: " + +#: src/job.c:2195 +#, c-format +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:2207 +#, c-format +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:2221 +#, c-format +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:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Nie można odtworzyć stdin" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Nie można odtworzyć stdout" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Nie można odtworzyć stderr" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: mogÅ‚o zabraknąć miejsca na Å›rodowisko" + +#: 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:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Tworzenie tymczasowego pliku wsadowego %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Zawartość pliku wsadowego:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Zawartość pliku wsadowego:%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) ZÅ‚y kontekst powÅ‚oki (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Nie udaÅ‚o siÄ™ otworzyć tablicy symboli globalnych: %s" + +#: 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: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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Pusta nazwa symbolu do wczytania: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Wczytywanie symbolu %s z %s\n" + +#: 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" +msgstr "Operacja 'load' nie jest obsÅ‚ugiwana na tej platformie" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opcje:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignorowane dla kompatybilnoÅ›ci.\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C KATALOG, --directory=KATALOG\n" +" PrzejÅ›cie do KATALOGu przed robieniem\n" +" czegokolwiek.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d WyÅ›wietla dużo informacji diagnostycznych.\n" + +#: 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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Zmienne Å›rodowiska przykrywajÄ… makefile.\n" + +#: 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:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f PLIK, --file=PLIK, --makefile=PLIK\n" +" Czyta PLIK jako makefile.\n" + +#: 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:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignoruje błędy poleceÅ„.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I KATALOG, --include-dir=KATALOG\n" +" Szuka dołączanych makefile w KATALOGu.\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] Dopuszcza N zadaÅ„ naraz; brak N oznacza brak\n" +" ograniczeÅ„.\n" + +#: 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: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" +" Nie uruchamiaj wielu zadaÅ„ jeÅ›li load nie " +"jest\n" +" poniżej 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 Używanie ostatniego mtime miÄ™dzy dowiÄ…zaniem a " +"celem.\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" +" Nie wykonuje poleceÅ„; jedynie je wyÅ›wietla.\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 PLIK, --old-file=PLIK, --assume-old=PLIK\n" +" Uznanie PLIKu za bardzo stary i nie tworzenie " +"go\n" +" ponownie.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[SPOSÓB], --output-sync[=SPOSÓB]\n" +" Sposób synchronizacji wyjÅ›cia zadaÅ„ " +"równolegÅ‚ych.\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Nie uruchamia żadnych poleceÅ„; status powrotu\n" +" wskazuje aktualność.\n" + +#: 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: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: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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Wypisuje polecenia (wyłącza tryb --silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Wyłącza -k.\n" + +#: 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:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Wypisywanie informacji ze Å›ledzenia.\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory WyÅ›wietla aktualny katalog.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Wyłącza -w, nawet jeÅ›li byÅ‚o ono włączone\n" +" domyÅ›lnie.\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 PLIK, --what-if=PLIK, --new-file=PLIK, --assume-new=PLIK\n" +" Uznaje PLIK za nieskoÅ„czenie nowy.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Ostrzega przy odwoÅ‚aniach do " +"niezdefiniowanych\n" +" zmiennych.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "nieznany poziom diagnostyki '%s'" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "nieznany sposób synchronizacji wyjÅ›cia '%s'" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "SkÅ‚adnia: %s [opcje] [obiekt] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Ten program zostaÅ‚ zbudowany dla %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Ten program zostaÅ‚ zbudowany dla %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Błędy proszÄ™ zgÅ‚aszać na adres \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: zÅ‚apano przerwanie/wyjÄ…tek (kod = 0x%lx, adres = 0x%p)\n" + +#: src/main.c: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" +"NieobsÅ‚ugiwany filtr wyjÄ…tku wywoÅ‚any z programu %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 "Naruszenie praw dostÄ™pu: zapis pod adresem 0x%p\n" + +#: 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: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: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: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." +msgstr "" +"uwaga: serwer zadaÅ„ niedostÄ™pny: użycie -j1. Należy dodać `+' do nadrzÄ™dnej " +"reguÅ‚y make." + +#: 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:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile ze standardowego wejÅ›cia podano dwukrotnie" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: plik tymczasowy %s: %s" + +#: 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: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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Przełączanie w tryb jednozadaniowy (-j1)." + +#: 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: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: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: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:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Nie znaleziono włączanego pliku makefile '%s'." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Nie znaleziono pliku makefile '%s'" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Niemożliwy powrót do katalogu startowego" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Ponowne uruchamianie[%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Brak obiektów" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Uaktualnianie obiektów docelowych....\n" + +#: 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: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: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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sTen program zostaÅ‚ zbudowany dla systemu %s\n" + +#: 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:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicencja GPLv3+: GNU GPL wersja 3 lub nowsza \n" +"%sTo oprogramowanie jest wolnodostÄ™pne: można je swobodnie zmieniać i " +"rozpowszechniać.\n" +"%sNie ma Å»ADNEJ GWARANCJI w zakresie dopuszczalnym przez prawo.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Baza danych Make, wyÅ›wietlana na %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# ZakoÅ„czono tworzenie bazy danych Make na %s\n" + +#: 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 "using default temporary directory '%s'" +msgstr "użycie domyÅ›lnego katalogu tymczasowego '%s'" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "tworzenie pliku tymczasowego %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "usuwanie pliku tymczasowego %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: plik tymczasowy %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: plik tymczasowy %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: WejÅ›cie do nieznanego katalogu\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Opuszczenie nieznanego katalogu\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: WejÅ›cie do katalogu '%s'\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Opuszczenie katalogu '%s'\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Opuszczenie nieznanego katalogu\n" + +#: 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:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Opuszczenie katalogu '%s'\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"uwaga: nie można uzyskać blokady wyjÅ›cia, wyłączanie synchronizacji wyjÅ›cia." + +#: src/output.c: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 "Nie mozna otworzyć serwera zadaÅ„ %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Nieznany styl '%s' uwierzytelnienia serwera zadaÅ„" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "tworzenie potoku zadaÅ„" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duplikowanie potoku zadaÅ„" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inicjowanie potoku serwera zadaÅ„" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "błędny Å‚aÅ„cuch --jobserver-auth '%s'" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "zapis do serwera zadaÅ„" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "serwer zadaÅ„ zamkniÄ™ty" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect potoku zadaÅ„" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "odczyt potoku zadaÅ„" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Czytanie pliku makefile '%s'" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (brak celu domyÅ›lnego)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (przeszukiwana Å›cieżka)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (nieważne)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (brak rozszerzenia ~)" + +#: 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: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:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "błędna skÅ‚adnia wyrażenia warunkowego" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "polecenia zaczynajÄ… siÄ™ przed pierwszym obiektem" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "brakuje reguÅ‚y przed poleceniami" + +#: 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:1156 +#, c-format +msgid "missing separator" +msgstr "brakujÄ…cy separator" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "brakujÄ…cy wzorzec obiektu" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "wielokrotne wzorce obiektu" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "wzorzec obiektu nie zawiera '%%'" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "brakujÄ…cy 'endif'" + +#: 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:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "nadmiarowy tekst po dyrektywie 'define'" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "brakujÄ…cy 'endef', niezakoÅ„czone 'define'" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "nadmiarowy tekst po dyrektywie 'endef'" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "niezwiÄ…zany tekst po dyrektywie '%s'" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "nadmiarowy '%s'" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "tylko jedno 'else' w wyrażeniu warunkowym" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Źle sformuÅ‚owana definicja zmiennej dla celu" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "pogrupowane obiekty muszÄ… dostarczać opis polecenia" + +#: 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:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "pomieszane standardowe i normalne reguÅ‚y" + +#: 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: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: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:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "uwaga: polecenia zakrywajÄ…ce dla obiektu '%s'" + +#: 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: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:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "uwaga: zakrycie czÅ‚onkowstwa w grupie dla obiektu '%s'" + +#: 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: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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s' jest aktualne." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Czyszczenie pliku '%s'.\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sBrak reguÅ‚ do wykonania obiektu '%s'%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Przetwarzanie pliku obiektowego '%s'.\n" + +#: 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Plik '%s' byÅ‚ już przetwarzany.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Wciąż uaktualniam plik '%s'.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "SkoÅ„czyÅ‚em uaktualniać plik '%s'.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Plik '%s' nie istnieje.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Uwaga: plik .LOW_RESOLUTION_TIME '%s' ma dużą rozdzielczość znacznika " +"czasu" + +#: src/remake.c:538 +#, c-format +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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Stosowanie standardowych poleceÅ„ dla '%s'.\n" + +#: 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:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "ZakoÅ„czono zależnoÅ›ci pliku obiektu '%s'.\n" + +#: 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:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Zaniechany plik obiektowy '%s'.\n" + +#: 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: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: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: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: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: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: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:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Tworzenie '%s' z powodu flagi always-make.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Nie ma potrzeby ponownego robienia obiektu '%s'" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; użyto nazwy VPATH '%s'" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Konieczne ponowne wykonanie obiektu '%s'.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Zignorowano nazwÄ™ VPATH '%s'.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Uruchomiono polecenia dla '%s'.\n" + +#: 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:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Ponowne tworzenie pliku obiektu '%s' powiodÅ‚o siÄ™.\n" + +#: 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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Stosowanie standardowych poleceÅ„ dla '%s'.\n" + +#: 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:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Element .LIBPATTERNS '%s' nie jest wzorcem" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Zasady nie eksportowane: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "uwaga: ignorowanie zależnoÅ›ci przy definicji reguÅ‚y przyrostkowej" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# ReguÅ‚y stadardowe" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Brak standardowych reguÅ‚." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u standardowych reguÅ‚, %u (%.1f%%) koÅ„cowych." + +#: 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Å‚" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Rozłączenie" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Przerwanie" + +#: src/signame.c:98 +msgid "Quit" +msgstr "WyjÅ›cie" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Błędna instrukcja" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "PuÅ‚apka Å›ledzenia" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Przerwany" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "PuÅ‚apka IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "PuÅ‚apka EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "WyjÄ…tek zmiennoprzecinkowy" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Zabity" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Błąd szyny" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Naruszenie ochrony pamiÄ™ci" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Błędne wywoÅ‚anie systemowe" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Przerwany potok" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Budzik" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "ZakoÅ„czony" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "SygnaÅ‚ użytkownika 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "SygnaÅ‚ użytkownika 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Potomek powróciÅ‚" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Przerwa w zasilaniu" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Zatrzymany" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Zatrzymany (wejÅ›cie z tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Zatrzymany (wyjÅ›cie na tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Zatrzymany (sygnaÅ‚)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Przekroczony czas CPU" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Przekroczony limit wielkoÅ›ci pliku" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Wyczerpany stoper wirtualny" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Wyczerpany stoper profilujÄ…cy" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Zmienione okno" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Kontynuowany" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "NagÅ‚a sytuacja I/O" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O możliwe" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Zaginione zasoby" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "SygnaÅ‚ niebezpieczeÅ„stwa" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Żądanie informacji" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Koprocesor obliczeÅ„ zmiennoprzecinkowych niedostÄ™pny" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Brak buforów 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 bufory strcache: %lu (%lu) / Å‚aÅ„cuchów = %lu / miejsce = %lu B / Å›r = %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 bieżący buf: rozmiar = %hu B / użyty = %hu B / liczba = %hu / Å›r = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s pozostaÅ‚e użyte: razem = %lu B / liczba = %lu / Å›r = %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 pozostaÅ‚e wolne: razem = %lu B / maks = %lu B / min = %lu B / Å›r = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s wydajność strcache: wyszukiwaÅ„ = %lu / wsp. trafieÅ„ = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# statystyki tablic haszujÄ…cych:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatyczna" + +#: src/variable.c:1789 +msgid "default" +msgstr "domyÅ›lna" + +#: src/variable.c:1792 +msgid "environment" +msgstr "Å›rodowiskowa" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "Å›rodowisko pod -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "z linii poleceÅ„" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "dyrektywa 'override'" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (z '%s', linia %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# statystyki tablic haszujÄ…cych ustawionych zmiennych:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Zmienne\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# WartoÅ›ci zmiennych dla wzorca" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Brak wartoÅ›ci zmiennych dla wzorca." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u wartoÅ›ci zmiennych dla wzorca" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "uwaga: niezdefiniowana zmienna '%.*s'" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() nie powiodÅ‚o siÄ™ - %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-uwaga, bÄ™dzie trzeba ponownie umożliwić obsÅ‚ugÄ™ CTRL-Y z DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "WBUDOWANE 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 "Dołączanie wyjÅ›cia do %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Dołączanie %.*s i czyszczenie\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Zamiast tego wykonywanie %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Åšcieżki przeszukiwania VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Brak Å›cieżek przeszukiwania 'vpath'" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u Å›cieżek przeszukiwania 'vpath'.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Brak ogólnej (zmienna 'VPATH') Å›cieżki przeszukiwania." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Ogólna (zmienna 'VPATH') Å›cieżka przeszukiwania:\n" +"# " + +#: 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:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "tworzenie semafora serwera zadaÅ„: (Błąd %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"błąd wewnÄ™trzny: nie udaÅ‚o siÄ™ otworzyć semafora serwera zadaÅ„ '%s': (Błąd " +"%ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Klient serwera zadaÅ„ (semafor %s)\n" + +#: 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: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/local/recipes/dev/gnu-make/source/po/pt.gmo b/local/recipes/dev/gnu-make/source/po/pt.gmo new file mode 100644 index 0000000000000000000000000000000000000000..02a567486834b17d499486cc9da6013fd480277a GIT binary patch literal 39137 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 literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/pt.po b/local/recipes/dev/gnu-make/source/po/pt.po new file mode 100644 index 0000000000..f494daf9a0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/pt.po @@ -0,0 +1,2498 @@ +# Portuguese (Portugal) translation for the "make" package. +# Copyright (C) 2018 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Pedro Albuquerque , 2018, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\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 \n" +"Language-Team: Portuguese \n" +"Language: pt\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=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: 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:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "membro de touch arquivo indisponível em VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: arquivo \"%s\" não existe" + +#: 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:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: membro \"%s\" não existe em \"%s\"" + +#: 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\"" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() falhou ao extrair informação do módulo, estado = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() falhou com estado = %d" + +#: src/arscan.c:261 +#, c-format +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: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:996 +msgid " (name might be truncated)" +msgstr " (nome pode estar truncado)" + +#: 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, modo = 0%o.\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Receita com demasiadas linhas (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Break.\n" + +#: 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: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:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] a eliminar ficheiro \"%s\"" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** a eliminar ficheiro \"%s\"" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# receita a executar" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (interno):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (de \"%s\", linha %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Pastas\n" + +#: 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: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: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: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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (chave %s, mtime %I64u): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (dispositivo %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Não" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " ficheiros, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "não" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " impossibilidades" + +#: src/dir.c:1180 +msgid " so far." +msgstr " até agora." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " impossibilidades em %lu pastas.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "referencia de variável não terminada" + +#: 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: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: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: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: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: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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** A eliminar ficheiro intermédio \"%s\"" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "A remover ficheiros intermédios...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: datação fora do intervalo; a substituir %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Não é um alvo:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Ficheiro precioso (pré-requisito de .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Alvo falso (pré-requisito de .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Alvo da linha de comandos." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# A predefinição, MAKEFILES, ou -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Regra interna" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Foi feita uma procura com regra implícita." + +#: 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:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Haste de padrão implícito/estático: \"%s\"\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# O ficheiro é um pré-requisito imediato." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Hora de modificação nunca verificada." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# O ficheiro não existe." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# O ficheiro é muito antigo." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Última modificação %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# O ficheiro foi actualizado." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# O ficheiro não foi actualizado." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Receita actualmente em execução (ISTO É UM ERRO)." + +#: 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:1151 +msgid "# Successfully updated." +msgstr "# Actualizado com sucesso." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Precisa de actualização (-q está definido)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Falha ao actualizar." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valor inválido no membro \"command_state\"!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Ficheiros" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# estatísticas da hash-table dos ficheiros:\n" +"# " + +#: 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: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: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:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "primeiro argumento de função \"wordlist\" não-numérico" + +#: 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: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: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:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() falhou (e=%ld)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "A limpar ficheiro batch temporário %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "ficheiro: nome em falta" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "abrir: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "escrever: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "fechar: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "ficheiro: demasiados argumentos" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "ler: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "ficheiro: operação inválida: %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:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "não implementada nesta plataforma: função \"%s\"" + +#: 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:2791 +#, c-format +msgid "Empty function name" +msgstr "Nome de função vazio" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Nome de função inválido: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Nome de função muito longo: %s" + +#: 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: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" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: a opção \"%s\" é ambígua\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: a opção \"--%s\" não permite um argumento\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: a opção \"%c%s\" não permite um argumento\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: a opção \"%s\" requer um argumento\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opção não reconhecida \"--%s\"\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opção não reconhecida \"%c%s\"\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opção ilegal -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opção inválida -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opção requer um argumento -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: a opção \"-W %s\" é ambígua\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: a opção \"-W %s\" não permite argumentos\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: a expandir \"%s\"\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: a avaliar \"%s\"\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "impossível alocar %lu bytes para a tabela de hash: memória esgotada" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Load=%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 "Collisions=%lu/%lu=%.0f%%" + +#: 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: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: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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: 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:506 +#, c-format +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: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:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "A tentar pré-requisito de regra \"%s\".\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "A tentar pré-requisito implícito \"%s\".\n" + +#: 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 '%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: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/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:552 +msgid " (core dumped)" +msgstr " (núcleo despejado)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignorado)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: 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:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** A aguardar por trabalhos não terminados...." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (remoto)" + +#: 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: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:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "A limpar ficheiro batch temporário %s\n" + +#: 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: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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Símbolo lançado para filho %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() falhou ao lançar processo (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Contados %d argumentos no lançamento falhado\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Obtido símbolo para filho %p (%s).\n" + +#: 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: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:2106 +msgid "cannot enforce load limit: " +msgstr "Impossível forçar limite de carga: " + +#: 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: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: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:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "impossível restaurar stdin\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "impossível restaurar stdout\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "impossível restaurar stderr\n" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: o espaço de ambiente pode estar esgotado" + +#: 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: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:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Conteúdo do ficheiro batch:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Conteúdo do ficheiro batch:%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 (linha %d) Mau contexto de shell (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Falha ao abrir a tabela global de símbolos: %s" + +#: 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: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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Nome de símbolo vazio para carga: %s" + +#: 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: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" +msgstr "A operação \"load\" não é suportada nesta plataforma." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opções:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m ignora para compatibilidade.\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C PASTA, --directory=PASTA\n" +" muda para PASTA antes de qualquer outra " +"coisa.\n" + +#: 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: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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" substitui as variáveis de ambiente com os " +"makefiles.\n" + +#: 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:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n" +" lê FICHEIRO como makefile.\n" + +#: 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:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors ignora erros das receitas.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I PASTA, --include-dir=PASTA\n" +" procura em PASTA por makefiles incluídos.\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 tarefas de uma só vez; tarefas " +"infinitas sem argumento.\n" + +#: 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: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" +" não começa múltiplas tarefas a não ser que a " +"carga seja menor que 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 usa a última mtime entre ligações simbólicas e " +"alvo.\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" +" não executa realmente nenhuma receita; só as " +"imprime.\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 FICHEIRO, --old-file=FICHEIRO, --assume-old=FICHEIRO\n" +" Considera FICHEIRO muito antigo e não o " +"refaz.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TIPO], --output-sync[=TIPO]\n" +" sincroniza saída de tarefas paralelas por " +"TIPO.\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question não executa receitas; estado de saída mostra " +"actualização.\n" + +#: 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: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: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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Ecoa receitas (desactiva o modo --silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" desliga -k.\n" + +#: 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:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace imprime informação de rastreio.\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory imprime a pasta actual.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory desliga -w, mesmo que estivesse implicitamente " +"ligado.\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 FICHEIRO, --what-if=FICHEIRO, --new-file=FICHEIRO, --assume-" +"new=FICHEIRO\n" +" considea FICHEIRO infinitamente novo.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables avisa quando uma variável indefinida é " +"referenciada.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "especificação de nível de depuração \"%s\" desconhecida" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "tipo de output-sync \"%s\" desconhecido" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [OPÇÕES] [ALVO] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa construído para %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa construído para %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Reportar erros em \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: apanhado Interrupção/Excepção (código = 0x%lx, endereço = 0x%p)\n" + +#: src/main.c: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" +"Filtro de excepção não gerido chamado do programa %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 "Violação de acesso: operação de escrita no endereço 0x%p\n" + +#: 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: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: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: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: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:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile da entrada padrão especificado duas vezes." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (ficheiro temporário)" + +#: 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: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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "A repor modo de tarefa única (-j1)." + +#: 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: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: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: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:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "makefile \"%s\" incluído não encontrado." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile \"%s\" não encontrado" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Impossível voltar à pasta original." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "A re-executar[%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Sem alvos" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Sem alvos especificados e sem makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "A actualizar alvos objectivo...\n" + +#: 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: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: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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sConstruído para %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sConstruído para %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicença GPLv3+: GNU GPL versão 3 ou posterior \n" +"%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:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Base de dados make, impressa em %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Base de dados make terminada em %s\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "A usar receita predefinida para \"%s\".\n" + +#: 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:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "desligar (ficheiro temporário): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporário)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporário)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: a entrar em pasta desconhecida\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: a sair duma pasta desconhecida\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: a entrar na pasta \"%s\"\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: a sair da pasta \"%s\"\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: a sair duma pasta desconhecida\n" + +#: 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:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: a sair da pasta \"%s\"\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Parar.\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 "" + +#: 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:190 +msgid "creating jobs pipe" +msgstr "a criar túnel de tarefas" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "a enganar túnel de tarefas" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "a iniciar túnel de jobserver" + +#: 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:363 +msgid "write jobserver" +msgstr "escrever jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "encerramento de jobserver" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect túnel de tarefas" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "ler túnel de tarefas" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "A ler makefile \"%s\"" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (sem objectivo predefinido)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (caminho de procura)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (não importa)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (sem expansão ~)" + +#: 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: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:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintaxe inválida em condicional" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "a receita começa antes do primeiro alvo" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "regra em falta antes da receita" + +#: 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:1156 +#, c-format +msgid "missing separator" +msgstr "separador em falta" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "padrão de alvo em falta" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "múltiplos padrões de alvo" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "o padrão de alvo não contém \"%%\"" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "\"endif\" em falta" + +#: 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:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "texto estranho após directiva \"define\"" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "\"endef\" em falta, \"define\" não terminado" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "texto estranho após directiva \"endef\"" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "texto estranho após directiva \"%s\"" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "\"%s\" estranho" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "só um \"else\" por condicional" + +#: 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: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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "alvos agrupados têm de fornecer uma receita" + +#: 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:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "regras de padrão implícitas e normais misturadas" + +#: 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: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: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:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "aviso: a sobrepor receita para o alvo \"%s\"" + +#: 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:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** regras implícitas e normais misturadas: sintaxe obsoleta" + +#: 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: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: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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "\"%s\" está actualizado." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "A podar ficheiro \"%s\".\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sSem regra para fazer o alvo \"%s\"%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "A considerar o ficheiro alvo \"%s\"\n" + +#: 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Ficheiro \"%s\" já considerado.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Ainda a actualizar o ficheiro \"%s\".\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Terminou a actualização do ficheiro \"%s\".\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "O ficheiro \"%s\" não existe.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Aviso: o ficheiro \"%s\" .LOW_RESOLUTION_TIME tem um carimbo de alta " +"resolução" + +#: 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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "A usar receita predefinida para \"%s\".\n" + +#: 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:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Terminados os pré-requisitos do ficheiro alvo \"%s\",\n" + +#: 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:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "A desistir do ficheiro alvo \"%s\".\n" + +#: 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: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: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: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: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: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: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: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:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Sem necessidade de refazer o alvo \"%s\"" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; a usar nome VPATH \"%s\"" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Necessário refazer o alvo \"%s\".\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " A ignorar nome VPATH \"%s\".\n" + +#: 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:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Falha ao refazer ficheiro alvo \"%s\".\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Ficheiro alvo \"%s\" refeito com sucesso.\n" + +#: 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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "A usar comandos predefinidos para \"%s\".\n" + +#: 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:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "elemento .LIBPATTERNS \"%s\" não é um padrão" + +#: 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:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Regras implícitas" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Sem regras implícitas." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u regras implícitas, %u (%.1f%%) terminal." + +#: 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" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Desligar" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interromper" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Sair" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Instrução ilegal" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Armadilha de rastreio/ponto de quebra" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Abortado" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Armadilha IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Armadilha EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Excepção de vírgula flutuante" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Morto" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Erro de bus" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Falta de segmentação" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Má chamada de sistema" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Túnel quebrado" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarme" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminado" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Sinal 1 definido pelo utilizador" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Sinal 2 definido pelo utilizador" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Filho saiu" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Falha de energia" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Parado" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Parado (entrada tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Parado (saída tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Parado (sinal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Excedido limite de tempo da CPU" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Excedido limite de tamanho do ficheiro" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Temporizador virtual expirado" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Temporizador de perfil expirado" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Janela alterada" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continuado" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Condição I/O urgente" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Possível I/O" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Recurso perdido" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Sinal de perigo" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Pedido de informação" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Co-processador de vírgula flutuante não disponível" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Sem buffers 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 buffers strcache: %lu (%lu) / cadeias = %lu / capacidade = %lu B / média " +"= %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 buffer actual: tamanho = %hu B / usado = %hu B / total = %hu / média = %u " +"B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s outro usado: tamanho = %lu B / total = %lu / média = %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 outro livre: tamanho = %lu B / máximo = %lu B / mínimo = %lu B / média = " +"%hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s desempenho strcache: procuras = %lu / taxa de sucesso = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# estatísticas da hash-table:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automático" + +#: src/variable.c:1789 +msgid "default" +msgstr "predefinido" + +#: src/variable.c:1792 +msgid "environment" +msgstr "ambiente" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "ambiente sob -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "linha de comandos" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "directiva \"override\"" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (de \"%s\", linha %lu)" + +#: 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:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variáveis\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valores de variáveis específicas de padrão" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Sem valores de variáveis específicas de padrão" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valores de variáveis específicas de padrão" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "aviso: variável \"%.*s\" indefinida" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() falhou com %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-aviso, poderá ter de reactivar a gestão CTRL-Y a partir de DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "CD INTERNO %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 "Anexar saída a %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Anexar %.*s e limpar\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "A executar antes %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Caminhos de procura VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Sem caminhos de procura \"vpath\"." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# Caminhos de procura %u \"vpath\".\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Sem caminho de procura geral (variável \"VPATH\")." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Caminho de procura geral (variável \"VPATH\")." + +#: 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:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "a criar semáforo jobserver: (erro %ld: %s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Cliente jobserver (semáforo %s)\n" + +#: 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: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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: comando não encontrado\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: programa de shell não encontrado" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s vai suspender por 30 segundos..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "feito sleep(30). A continuar.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Erro desconhecido %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Aviso: o ficheiro \"%s\" tem a hora de modificação no futuro" + +#~ msgid " terminal." +#~ msgstr " terminal." diff --git a/local/recipes/dev/gnu-make/source/po/pt_BR.gmo b/local/recipes/dev/gnu-make/source/po/pt_BR.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6eff4e05a71dbb364464bb8802f35cd14b579cb0 GIT binary patch literal 39569 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 Ptu?TGud9{En^^x3AvU2~ literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/pt_BR.po b/local/recipes/dev/gnu-make/source/po/pt_BR.po new file mode 100644 index 0000000000..9ed3a63cf4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/pt_BR.po @@ -0,0 +1,2743 @@ +# Mensagem do GNU make em Português (Brasil) +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This file is distributed under the same license as the make package. +# Fábio Henrique F. Silva , 2000. +# Fábio Henrique F. Silva , 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 +# Fábio Henrique F. Silva , 2017, 2018, 2019 +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.2.91\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2019-10-04 22:31-0300\n" +"Last-Translator: Fábio Henrique F. Silva \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\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=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.0.6\n" + +# Caso você encontre alguma mensagem que não está bem traduzida, por +# favor me informe dando sua sugestão. +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "característica não suportada: '%s' " + +#: 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:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Arquivo '%s' não existe" + +#: 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: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: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'" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "o lbr$set_module() falhou ao obter informações do módulo, estado = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() falhou com estado = %d" + +#: src/arscan.c:261 +#, c-format +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: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:996 +msgid " (name might be truncated)" +msgstr " (o nome pode estar truncado)" + +#: 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, modo = 0%o.\n" + +#: 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:501 +msgid "*** Break.\n" +msgstr "*** Quebra.\n" + +#: 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: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:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "** [%s] Apagando arquivo '%s'" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "** Apagando arquivo '%s'" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# comandos a executar" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (embutido):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (de '%s', linha %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Diretórios\n" + +#: 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: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: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: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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (chave %s, mtime %ull): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (dispositivo %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Não" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " arquivos, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "não" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " impossibilidades" + +#: src/dir.c:1180 +msgid " so far." +msgstr " até agora." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " impossibilidades em %lu diretórios.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "referência a variável não finalizada" + +#: 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: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: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: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: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: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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "** Apagando arquivo intermediário '%s'" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Apagando arquivo intermediário...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Data/Hora fora de faixa; substituindo %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Não é um alvo:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Arquivo importante (prerequisito de .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Alvo Falso (prerequisito de .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Linha de Comando do Alvo." + +#: 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:1102 +msgid "# Builtin rule" +msgstr "# Regra implícita" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Pesquisa por regra implícita concluida." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Pesquisa por regra implícita não concluida." + +#: 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:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# O arquivo é um pré-requisito intermediário." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# O Período da modificação nunca foi verificado." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# O Arquivo não existe." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# O Arquivo está desatualizado." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Última modificação %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# O Arquivo foi atualizado." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# O Arquivo não foi atualizado." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Comandos em execução (ISTO É UMA FALHA)." + +#: 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:1151 +msgid "# Successfully updated." +msgstr "# Atualizado com sucesso." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Precisa ser atualizado (-q está definido)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Problemas com a atualização." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valor inválido no membro 'command_state' !" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Arquivos" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# tabela hash de arquivos:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Campo '%s' não memorizado: %s" + +#: 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: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:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "primeiro argumento não numérico para a função 'wordlist' " + +#: 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: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: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:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() falhou (e=%ld)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Apagando o arquivo de lote temporário %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "arquivo: faltando o nome do arquivo" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "aberto: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "gravação: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "fechado: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "arquivo: muitos argumentos" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "lido: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "arquivo: operação de arquivo inválida: %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:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "A função '%s' não foi implementada nesta plataforma " + +#: 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:2791 +#, c-format +msgid "Empty function name" +msgstr "Nome da função vazio" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Nome da função inválido: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Nome da função muito longo: %s" + +#: 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: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" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "" +"%s: a opção '%s' é ambigua\n" +"\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "" +"%s: a opção '--%s' não permite um argumento\n" +"\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: a opção '%c%s' não permite um argumento\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "" +"%s: a opção '%s' requer um argumento\n" +"\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "" +"%s: a opção é desconhecida '--%s'\n" +"\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "" +"%s: a opção é desconhecida '%c%s'\n" +"\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: a opção é ilegal -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: a opção é inválida -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opção requer um argumento -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "" +"%s: a opção '-W %s' é ambigua\n" +"\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "" +"%s: a opção '-W %s' não permite um argumento\n" +"\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Expandindo '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Avaliando '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "não foi possível alocar %lu bytes para a tabela hash: memória cheia" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Carga=%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 "Colisões=%lu/%lu=%.0f%%" + +#: 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: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: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:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Evitando recursão em regra implícita.\n" + +#: src/implicit.c:451 +#, c-format +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: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: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:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "" +"Tentanto pré-requisito para a regra '%s'.\n" +"\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "" +"Tentando pré-requisito implícito '%s'.\n" +"\n" + +#: 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 '%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: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/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:552 +msgid " (core dumped)" +msgstr " (arquivo core criado)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr "(ignorado)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: 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:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "** Esperando que outros processos terminem." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (remoto)" + +#: 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:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Descarregando processo filho %p PID %s %s\n" + +#: 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: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: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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Liberado sinalizador para o processo filho %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() falhou ao executar o processo (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Contados %d args na falha de execução\n" + +#: 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: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:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: alvo atualizado '%s'devido a: %s" + +#: 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:2106 +msgid "cannot enforce load limit: " +msgstr "não pôde forçar a carga limite:" + +#: 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: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: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:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Não é possível restaurar stdin\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Não é possível restaurar stdout\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Não é possível restaurar stderr\n" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: o espaço de ambiente pode estar cheio" + +#: 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: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:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Conteúdo do arquivo de lote:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Conteúdo do arquivo de lote:%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 (linha %d) contexto inválido (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Falha ao abrir a tabela de símbolos globais: %s" + +#: 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: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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Nome do símbolo vazio: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Carregando símbolo %s de %s\n" + +#: 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" +msgstr "A operação 'load' não é suportada nesta plataforma." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opções:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignorado para compatibilidade.\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRETÓRIO, --directory=DIRETÓRIO\n" +" Muda para o DIRETÓRIO antes de fazer algo.\n" + +#: 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: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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Assume os valores das variáveis de ambiente.\n" + +#: 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:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f ARQUIVO, --file=ARQUIVO, --makefile=ARQUIVO\n" +" Lê o ARQUIVO como se fosse um arquivo make.\n" + +#: 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:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignora os erros dos comandos.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIRETÓRIO, --include-dir=DIRETÓRIO\n" +" Pesquisa o DIRETÃ’RIO por arquivos make a " +"incluir.\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 tarefas de uma vez; tarefas infinitas " +"sem argumentos.\n" + +#: 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: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" +" Não inicia múltiplas tarefas a menos que a " +"carga seja menor que 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 Usa o tempo mais antigo entre o vínculo simbólico " +"e o alvo.\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" +" Não executa quaisquer comandos; apenas imprime-" +"os.\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 ARQUIVO, --old-file=ARQUIVO, --assume-old=ARQUIVO\n" +" Considera o ARQUIVO como muito antigo e não " +"reprocessá-o.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Sincroniza a saída de tarefas paralelas pelo " +"TIPO.\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Não executa os comandos; O código de saida " +"indica se está atualizado.\n" + +#: 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: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: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: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:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Desativa a opção -k.\n" + +#: 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:384 +msgid " --trace Print tracing information.\n" +msgstr " -trace Imprime informação de depuração.\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Imprime o diretório atual.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Desativa a opção -w, mesmo que ela esteja " +"implicitamente ativada.\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 ARQUIVO, --what-if=ARQUIVO, --new-file=ARQUIVO, --assume-new=ARQUIVO\n" +" Considera o ARQUIVO infinitamente novo.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Avisa quando um variável não definida for " +"referenciada.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "nível de depuração desconhecido: '%s' " + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [opções] [alvo] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa foi compilado para %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa foi compilado para %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Informe os problemas para .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Interrupção/Exceção capturada (código = 0x%lx, endereço = 0x%p)\n" + +#: src/main.c: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" +"Não pôde tratar o filtro de exceção chamado por %s\n" +"CódigoExceção = %lx\n" +"SinalExceção = %lx\n" +"EndereçoExceção = 0x%p\n" + +#: 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: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: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: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: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: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:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile na entrada padrão especificado duas vezes." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (arquivo temporário)" + +#: 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: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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Reiniciando no modo de tarefa única (-j1)." + +#: 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: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: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: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:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Arquivo '%s' incluido não foi encontrado. " + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "O arquivo '%s' não foi encontrado. " + +#: 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:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Re-executando[%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Sem alvo" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Atualizando os objetivos finais...\n" + +#: 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: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: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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sCompilado para %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sCompilado para %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicença GPLv3+: GNU GPL versão 3 ou posterior \n" +"%sIsto é um aplicativo livre: você pode alterá-lo e redistribui-lo " +"livremente.\n" +"%sNÃO Hà GARANTIAS, exceto o que for permitido por lei.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Banco de dados do Make, impresso em %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Banco de dados do Make finalizado em %s\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: 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:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Criando arquivo de lote temporário %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "desvinculado (arquivos temporário): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (arquivo temporário)" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Saindo de um diretório desconhecido\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "" +"%s: Entrando no diretório '%s'\n" +"\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "" +"%s: Saindo do diretório '%s'\n" +"\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Saindo de um diretório desconhecido\n" + +#: 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:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "" +"%s[%u]: Saindo do diretório '%s'\n" +"\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Pare.\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 "" + +#: 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:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duplicando canalização de tarefas" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inicializando a canalização do jobserver" + +#: 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:363 +msgid "write jobserver" +msgstr "gravar jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "servidor de job desligado" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "tarefas canalizadas pselect" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "tarefas canalizadas lidas" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Lendo arquivos makefile '%s' " + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (não há objetivo padrão)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (caminho de pesquisa)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (sem importância)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (sem expansão ~)" + +#: 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:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Ignorando UTF-8 BOM no makefile buffer\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "síntaxe inválida na condicional" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "comandos começam antes do primeiro alvo" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "falta uma regra antes dos comandos" + +#: 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:1156 +#, c-format +msgid "missing separator" +msgstr "faltando o separador" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "faltando o padrão dos alvos" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "múltiplos padrões para o alvo" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "padrão para o alvo não contém '%%' " + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "faltando 'endif' " + +#: 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:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "Texto estranho depois da diretiva 'define' " + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "faltando 'endef', 'define' não terminado " + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "Texto estranho depois da diretiva 'endef'" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "Texto estranho depois da diretiva '%s' " + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "'%s' estranho " + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "use apenas um 'else' por condicional " + +#: 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: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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "alvos agrupados devem fornecer uma instrução" + +#: 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:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "As regras implícitas e normais misturadas" + +#: 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: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: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:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "aviso: sobrescrevendo os comandos para o alvo '%s'" + +#: 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: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:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "aviso: sobrescrevendo o grupo para o alvo '%s'" + +#: 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: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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s' está atualizado. " + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "" +"Atualizando o arquivo '%s'.\n" +"\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sSem regra para processar o alvo '%s'%s " + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "" +"Considerando o arquivo alvo '%s'.\n" +"\n" + +#: 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "" +"O arquivo '%s' já foi considerado.\n" +"\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "" +"Ainda está atualizando o arquivo '%s'.\n" +"\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "" +"Atualização do arquivo '%s' concluida.\n" +"\n" + +#: 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:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Aviso: arquivo .LOW_RESOLUTION_TIME '%s' tem uma etiqueta de tempo de " +"alta resolução " + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "" +"Pré-requisitos '%s' do alvo '%s' não existem.\n" +"\n" + +#: 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:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Dependência circular %s <- %s abandonada." + +#: 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: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:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "" +"Desistindo do arquivo '%s'.\n" +"\n" + +#: 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: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: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: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: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: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: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: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:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Não é necessário reprocessar o alvo '%s' " + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; usando o nome VPATH '%s' " + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "" +"O alvo '%s' deve ser reprocessado.\n" +"\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr "" +" Ignorando o nome VPATH '%s'.\n" +"\n" + +#: 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:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "" +"Falha ao reprocessar o alvo '%s'.\n" +"\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "" +"Alvo '%s' reprocessado com sucesso.\n" +"\n" + +#: 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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "" +"Usando os comandos padrões para '%s'.\n" +"\n" + +#: 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: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:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customizações não exportadas: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Regras implícitas." + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Faltam as regras implícitas." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u regras implícitas, %u (%.1f%%) terminal." + +#: 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" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Desconectar" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interrupção" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Sair" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Instrução ilegal" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Aviso Trace/breakpoint" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Abortado" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Aviso IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Aviso EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Exceção de ponto flutuante" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Finalizado" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Erro de barramento" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Falha de segmentação" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Chamada de sistema inválida" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Canalização interrompida" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Despertador" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminado" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Sinal 1 definido pelo usuário" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Sinal 2 definido pelo usuário" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "O Filho saiu" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Falha na Energia Elétrica" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Parado" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Parado (entrada tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Parado (saida tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Parado (sinal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Tempo de CPU excedido" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Tamanho do arquivo excedido" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Temporizador virtual expirou" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Temporizador de perfil expirou" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Janela alterada" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continuação" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Condição de E/S urgente" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Possível E/S" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Recurso perdido" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Sinal perigoso" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Solicitação de informação" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Co-processador aritmético indisponível" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Não há strcache buffers\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 strcache buffers: %lu (%lu) / strings = %lu / armazenamento = %lu / med = " +"%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 buf atual: tamanho = %hu B / usado = %hu B / contado = %hu / med = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s outro usado: total = %lu B / contado = %lu / med = %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 outro livre: total = %lu B / max = %lu B / min = %lu B / med = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s desempenho strcache: pesquisados = %lu / encontrados = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# tabela hash de arquivos:\n" +"#" + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automático" + +#: src/variable.c:1789 +msgid "default" +msgstr "padrão" + +#: src/variable.c:1792 +msgid "environment" +msgstr "ambiente" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "ambiente sob -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "linha de comando" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "diretiva 'override' " + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (de '%s', linha %lu) " + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# tabela hash do conjunto de variávies:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variáveis\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valores da variável de padrões específicos" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Faltam valores para variável de padrões específicos" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valores para variável de padrões específicos" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "aviso: variável indefinida '%.*s' " + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() falhou com %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-warning, pode ser preciso reativar o CTRL-Y no DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "CD EMBUTIDO %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 "Saida redirecionada para %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Acrescentado %.*s e limpo\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Executando %s ao invés de\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Caminho VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Sem caminho 'vpath'. " + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u caminhos 'vpath'.\n" +"\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Sem caminho genérico (variável 'VPATH')." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Caminho genérico (variável 'VPATH'):\n" +"# " + +#: 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:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "criando semáforos jobserver: (Erro %ld: %s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Cliente Jobserver (semáforo %s)\n" + +#: 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: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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Comando não encontrado\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Interpretador de comandos não encontrado" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s está suspenso por 30 segundos..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) concluido. Continuando.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Erro desconhecido %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "** Aviso: O arquivo '%s' está com a hora adiantada " + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Valor inválido no membro `update_status' !" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Erro 0x%x (ignorado)" + +#~ msgid "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] Erro 0x%x" + +#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n" +#~ msgstr "Chamando os comandos de %s:%lu para atualizar o alvo `%s'.\n" + +#~ msgid "Invoking builtin recipe to update target `%s'.\n" +#~ msgstr "Chamando comandos internos para atualizar o alvo `%s'.\n" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "erro interno: múltiplas opções --jobserver-fds" + +#~ msgid "dup jobserver" +#~ msgstr "dup jobserver" + +#~ msgid "virtual memory exhausted" +#~ msgstr "A memória virtual encheu" + +#~ msgid "write error" +#~ msgstr "erro de gravação" + +#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n" +#~ msgstr "%s # de buffers strcache: %d (* %d B/buffer = %d B)\n" + +#~ msgid "" +#~ "\n" +#~ "# strcache hash-table stats:\n" +#~ "# " +#~ msgstr "" +#~ "\n" +#~ "# tabela hash de arquivos:\n" +#~ "#" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Aviso: Redireção vazia\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "erro interno: `%s' command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "EMBUTIDO [%s][%s]\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "RM EMBUTIDO %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Comando embutido desconhecido `%s'.\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Erro, comando vazio\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Entrada de %s redirecionada\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Erro redirecionado para %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Saida redirecionada para %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Erro de execução, %d\n" + +#~ msgid "process_easy() failed failed to launch process (e=%ld)\n" +#~ msgstr "process_easy() falhou ao executar o processo (e=%ld)\n" + +#~ 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 "" +#~ "%sEste é um programa livre; veja o fonte para as condições de cópia.\n" +#~ "%sNão há garantias; nem mesmo de COMERCIALIZAÇÃO OU ATENDIMENTO A UMA\n" +#~ "%sFUNÇÃO EM PARTICULAR.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "`endef' extranho" + +#~ msgid "empty `override' directive" +#~ msgstr "diretiva `override' vazia" + +#~ msgid "invalid `override' directive" +#~ msgstr "diretiva `override' inválida" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-warning, CTRL-Y sairá do(s) subprocesso(s).\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "Erro de sintaxe dentro de '\"'\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "Recebido um SIGSHLD; %u processos filhos descarregados.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Não especifique -j ou --jobs se o sh.exe não estiver disponível." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Reiniciando o make para o modo de trabalho único." + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "sem nome de arquivo para `%sinclude'" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "O alvo `%s' deixou pre-requisito padrão vazio" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Nenhum arquivo." diff --git a/local/recipes/dev/gnu-make/source/po/quot.sed b/local/recipes/dev/gnu-make/source/po/quot.sed new file mode 100644 index 0000000000..0122c46318 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/quot.sed @@ -0,0 +1,6 @@ +s/"\([^"]*\)"/“\1â€/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“â€/""/g diff --git a/local/recipes/dev/gnu-make/source/po/remove-potcdate.sin b/local/recipes/dev/gnu-make/source/po/remove-potcdate.sin new file mode 100644 index 0000000000..2436c49e78 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/local/recipes/dev/gnu-make/source/po/ro.gmo b/local/recipes/dev/gnu-make/source/po/ro.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b2ede8f29b6c62d260488269d1606dfc63a305a0 GIT binary patch literal 52157 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 X_G>8i$yA!4@~Ovz42bM=s#pGhTJLXs literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/ro.po b/local/recipes/dev/gnu-make/source/po/ro.po new file mode 100644 index 0000000000..2a17574834 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/ro.po @@ -0,0 +1,2640 @@ +# Mesajele în limba română pentru pachetul make. +# Copyright © 2022 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Remus-Gabriel Chelu , 2022. +# +# Cronologia traducerii fiÈ™ierului „makeâ€: +# Traducerea iniÈ›ială, făcută de R-GC, pentru versiunea make 4.2.93. +# Actualizare a traducerii pentru versiunea 4.3.90, făcută de R-GC, în 2022. +# Actualizare a traducerii pentru versiunea 4.3.91, făcută de R-GC, în 2022. +# Actualizare a traducerii pentru versiunea 4.3.92, făcută de R-GC, în 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.3.92\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-24 12:06+0200\n" +"Last-Translator: Remus-Gabriel Chelu \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || ((n%100) > 0 && (n" +"%100) < 20)) ? 1 : 2);\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.1.1\n" + +# R-GC, scrie: +# după revizarea fiÈ™ierului, DȘ, zice: +# → aÈ™ folosi „funcÈ›ionalitateâ€, „caracteristica†se referă la +# însuÈ™ire/trăsătură (conform dexonline) +# *** +# Ok, corecÈ›ie aplicată (în contextul dat, cred că +# e o bună alegere) +# === +# după revizarea, din nou, a fiÈ™ierului cu ocazia +# trecerii la versiunea 4.3.91 È™i revizarea amănunÈ›ită +# a definiÈ›ilor pentru „caracteristică†și „funcÈ›ionalitate†+# din dexonline, revin la prima variantă a traducerii: +# «caracteristici». +# funcÈ›ionalitate ~= o caracteristică a cuiva, sau a +# unui dispozitiv este în stare de funcÈ›iune, este +# validă pentru a îndeplini un anumit scop sau +# funcÈ›iune. +# Exemplu: membrele sale, sunt complet funcÈ›ionale! +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "încercare de utilizare a unei caracteristici neacceptate: „%sâ€" + +# R-GC, scrie: +# o altă „versiune†a mesjului tradus, ar fi: +# „nu se poate executa «touch» asupra unui membru al unei arhive(unei părÈ›i de-o arhivă) pe VMS†+# *** +# Opinii/Idei? +# după revizarea fiÈ™ierului, DȘ, zice: +# → aici eu i-aÈ™ zice aÈ™a: „pe VMS nu este disponibilă modificare +# marcajelor de timp†sau „nu este disponibilă modificarea marcajelor de +# timp pe VMS†+# === +# CorecÈ›ie, aplicată +# traducerea iniÈ›ială, era: +# „nu se pot modifica marcajele de timp ale unui membru al unei arhive pe VMS†+#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "nu este disponibilă modificarea marcajelor de timp pe VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Arhiva „%s†nu există" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: %s nu este o arhivă validă" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Membrul „%s†nu există în „%sâ€" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: Cod de returnare greÈ™it de la ar_member_touch pe „%sâ€" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"lbr$set_module() nu a reuÈ™it să extragă informaÈ›iile despre modul, starea de " +"ieÈ™ire = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() a eÈ™uat cu starea = %d" + +# R-GC, scrie: +# după revizarea fiÈ™ierului, DȘ, zice: +# → aici cratima nu este necesară +# === +# Ok, corecÈ›ie aplicată +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"nu se poate deschide biblioteca „%s†pentru a căuta È™i a obÈ›ine starea " +"elementului %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "%s nu este valid pentru arhiva %s membru %s" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Membru „%sâ€%s: %ld octeÈ›i la %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (numele poate fi trunchiat)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Data %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, mod = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "ReÈ›eta conÈ›ine prea multe linii (limita este de %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** ÃŽntrerupere.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Membrul arhivei „%s†poate fi fals; nu se È™terge" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Membrul arhivei „%s†poate fi fals; nu se È™terge" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Se È™terge fiÈ™ierul „%sâ€" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Se È™terge fiÈ™ierul „%sâ€" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# reÈ›eta de executat" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (comanda internă):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (din „%sâ€, linia %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Directoare\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: nu a putut fi stabilit.\n" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (cheia %s, mtime %s): nu a putut fi deschis.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (dispozitiv %d, nod-i [%d,%d,%d]): nu a putut fi deschis.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (dispozitiv %ld, nod-i %ld): nu a putut fi deschis.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (cheia %s, mtime %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (dispozitiv %d, nod-i [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (dispozitiv %ld, nod-i %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Nu" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " fiÈ™iere, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "nu" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " imposibilități" + +#: src/dir.c:1180 +msgid " so far." +msgstr " până acum." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " imposibilități în %lu directoare.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: nu se expandează recursiv %s pentru a exporta în funcÈ›ia de shell\n" + +# R-GC, scrie: +# ar fi mai bine, înlocuită sintagma: +# „(în cele din urmă)â€, cu: +# „(până la urmă)†? +# *** +# Opinii/Idei? +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Variabila recursivă „%s†se referă la ea însăși (în cele din urmă)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "referință la variabilă neterminată" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "ReÈ›eta a fost specificată pentru fiÈ™ierul „%s†la %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"ReÈ›eta pentru fiÈ™ierul „%s†a fost găsită prin căutarea regulilor implicite," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "dar „%s†este considerat acum acelaÈ™i fiÈ™ier ca „%sâ€." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "ReÈ›eta pentru „%s†va fi ignorată în favoarea celei pentru „%sâ€." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"nu se poate redenumi de la două puncte simple „%s†la două puncte duble „%sâ€" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" +"nu se poate redenumi de la două puncte duble „%s†la două puncte simple „%sâ€" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Se È™terge fiÈ™ierul intermediar „%sâ€" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Se elimină fiÈ™ierele intermediare...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s nu poate să fie atât .NOTINTERMEDIATE, cât È™i .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s nu poate să fie atât .NOTINTERMEDIATE, cât È™i .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE È™i .SECONDARY se exclud reciproc" + +#: src/file.c:942 +msgid "Current time" +msgstr "Ora actuală" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Marcaj de timp în afara intervalului; se substituie %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Nu este o È›intă:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# FiÈ™ier preÈ›ios (cerinÈ›a prealabilă a .PRECIOUS)." + +# R-GC, scrie: +# nu È™tiu dacă în acest context, „Phony target†+# n-ar trebui să fie tradus ca: +# „Țintă pretinsă†+# *** +# Opinii/Idei? +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Èšintă falsă (cerinÈ›a prealabilă a .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Èšintă din linia de comandă." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "" +"# Un fiÈ™ier implicit, MAKEFILES sau, unul via -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Regulă internă" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Căutarea implicită a regulilor a fost efectuată." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Căutarea implicită a regulilor nu a fost efectuată." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Familia modelului implicit/static: „%sâ€\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# FiÈ™ierul este o cerință prealabilă intermediară." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# FiÈ™ierul este o cerință prealabilă a .NOTINTERNMEDIATE." + +# R-GC, scrie: +# nu È™tiu dacă în acest context, „Phony target†+# n-ar trebui să fie tradus ca: +# „Țintă pretinsă†+# *** +# Opinii/Idei? +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# FiÈ™ierul este secundar (cerință prealabilă a .SECONDARY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# De asemenea, face:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Ora de modificare nu a fost niciodată verificată." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# FiÈ™ierul nu există." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# FiÈ™ierul este foarte vechi." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Ultima modificare %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# FiÈ™ierul a fost actualizat." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# FiÈ™ierul nu a fost actualizat." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# ReÈ›eta rulează în acest moment (ACESTA ESTE O EROARE)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# ReÈ›eta de dependenÈ›e rulează (ACESTA ESTE O EROARE)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Actualizat cu succes." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Trebuie să fie actualizat („-q†este activată)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Actualizarea a eÈ™uat." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valoare nevalidă în membrul „command_stateâ€!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# FiÈ™iere" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# statistici din tabelul sumelor de control ale fiÈ™ierelor:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Câmpul „%s†nu este stocat în memoria tampon: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: valoare goală" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: „%s†în afara intervalului" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "primul argument al funcÈ›iei „word†nu este valid" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "primul argument al funcÈ›iei „word†trebuie să fie mai mare decât 0" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "primul argument al funcÈ›iei „wordlist†nu este valid" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "al doilea argument al funcÈ›iei „wordlist†nu este valid" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "primul argument al funcÈ›iei „intcmp†este nenumeric" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "al doilea argument al funcÈ›iei „intcmp†este nenumeric" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) a eÈ™uat (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) a eÈ™uat (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() a eÈ™uat (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() a eÈ™uat\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Se curăță fiÈ™ierul lotului de comenzi temporar %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "fiÈ™ier: lipseÈ™te numele fiÈ™ierului" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "deschide: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "scrie: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "închide: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "fiÈ™ier: prea multe argumente" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "citeÈ™te: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "fiÈ™ier: operaÈ›ie de fiÈ™ier nevalidă: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "număr insuficient de argumente (%u) pentru funcÈ›ia „%sâ€" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "neimplementat pe această platformă: funcÈ›ia „%sâ€" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "apel neterminat la funcÈ›ia „%sâ€: lipseÈ™te „%câ€" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Numele funcÈ›iei este gol" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Numele funcÈ›iei este nevalid: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Numele funcÈ›iei este prea lung: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Număr minim de argumente (%u) nevalid pentru funcÈ›ia %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Număr maxim de argumente (%u) nevalid pentru funcÈ›ia %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: opÈ›iunea „%s†este ambiguă\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: opÈ›iunea „--%s†nu permite un argument\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: opÈ›iunea „%c%s†nu permite un argument\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: opÈ›iunea „%s†necesită un argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opÈ›iune nerecunoscută „--%sâ€\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opÈ›iune nerecunoscută „%c%sâ€\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opÈ›iune ilegală -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opÈ›iune nevalidă -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opÈ›iunea necesită un argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: opÈ›iunea „-W %s†este ambiguă\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: opÈ›iunea „-W %s†nu permite un argument\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Se expandează „%sâ€\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Se evaluează „%sâ€\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"nu se pot aloca %lu octeÈ›i pentru tabelul sumelor de control: memorie " +"epuizată" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "ÃŽncărcare=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Coliziuni=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Se caută o regulă implicită pentru „%sâ€.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Se caută regula implicită de membru al arhivei pentru „%sâ€.\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "" +"Nu a fost găsită nicio regulă implicită de membru al arhivei pentru „%sâ€.\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Evitarea recursiunii regulilor implicite pentru regula „%sâ€.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Continuă să se încerce.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Se încearcă regula modelului „%s†cu familia „%.*sâ€\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Familie prea lungă: „%s%.*sâ€.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" +"Se respinge regula „%s†din cauza cerinÈ›ei prealabile imposibile a regulii " +"„%sâ€.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Se respinge regula „%s†din cauza cerinÈ›ei prealabile implicite imposibile " +"„%sâ€.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Se încearcă cerinÈ›a prealabilă a regulii „%sâ€.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Se încearcă cerinÈ›a prealabilă implicită „%sâ€.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s†ar trebui să existe.n\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "S-a găsit „%sâ€.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Se utilizează regula de compatibilitate „%s†din cauza „%sâ€.\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"CerinÈ›a prealabilă „%s†a regulii „%s†nu este aÈ™a cum ar trebui să fie.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "S-a găsit cerinÈ›a prealabilă „%s†ca VPATH „%sâ€.\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Se caută o regulă cu fiÈ™ierul explicit „%sâ€.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Se caută o regulă cu fiÈ™ierul intermediar „%sâ€.\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" +"Se respinge regula „%s†din cauza cerinÈ›ei preliminare imposibile „%sâ€.\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Nu s-a găsit „%sâ€.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "S-a găsit regula implicită „%s†pentru „%sâ€.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Se caută o regulă de compatibilitate pentru „%sâ€..\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Nu s-a găsit nicio regulă implicită pentru „%sâ€.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Nu se poate crea un fiÈ™ier temporar" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (conÈ›inutul memoriei descărcat)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignorat)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Eroare %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Se aÈ™teaptă ca alte sarcini să se termine...." + +# R-GC, scrie: +# am ales traducerea mot-amot, pentru că +# consider că este cea ce reflectă cu exactitate +# starea procesului. Alte echipe au tradus ca +# „proces-copil activ ...â€, ceea ce este inexact. +# De exemplu, un proces oprit, nu poate să fie +# activ. +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Proces-copil viu %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (la distanță)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Finalizarea procesului-copil câștigător %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Finalizarea procesului-copil pierdut %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Se curăță fiÈ™ierul lotului de comenzi temporar %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Curățarea fiÈ™ierului lotului de comenzi temporar %s a eÈ™uat (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Se elimină procesul-copil %p PID %s%s din lanÈ›.\\\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Se eliberează indicativul pentru procesul-copil %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() nu a reuÈ™it să lanseze procesul (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Au fost numărate %d argumente în lansarea eÈ™uată\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Se pune procesul-copil %p (%s) PID %s%s în lanÈ›.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Se obÈ›ine indicativul pentru procesul-copil %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: se actualizează È›inta „%s†datorită: %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "È›inta nu există" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "nu se pot aplica limitele de încărcare pe acest sistem de operare" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "nu poate aplica limita de încărcare: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"nu mai există operatori de fiÈ™iere disponibili: nu s-a putut duplica " +"intrarea standard" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"nu mai există operatori de fiÈ™iere disponibili: nu s-a putut duplica ieÈ™irea " +"standard" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"nu mai există operatori de fiÈ™iere disponibili: nu s-a putut duplica ieÈ™irea " +"de eroare standard" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Nu s-a putut restabili intrarea standard" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Nu s-a putut restabili ieÈ™irea standard" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Nu s-a putut restabili ieÈ™irea de eroare standard" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "procesul-copil «make» procesat cu PID %s, dar încă aÈ™teaptă PID %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: spaÈ›iul de mediu ar putea fi epuizat" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL schimbat (era „%sâ€, acum „%sâ€)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Se creează fiÈ™ierul lotului de comenzi temporar %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"ConÈ›inutul fiÈ™ierului lotului de comenzi:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"ConÈ›inutul fiÈ™ierului lotului de comenzi:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "%s (linia %d) Context shell greÈ™it (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Nu s-a putut deschide tabelul global de simboluri: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "S-a încărcat obiectul partajat %s\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Obiectul încărcat %s nu este declarat ca fiind compatibil GPL" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Nu s-a putut încărca simbolul %s din %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Nume de simbol gol pentru încărcare: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Se încarcă simbolul %s din %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Se descarcă obiectul partajat %s\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "OperaÈ›ia „load†nu este acceptată pe această platformă" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "OpÈ›iuni:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignorat din motive de compatibilitate.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make Face necondiÈ›ionat toate È›intele.\n" + +# R-GC, scrie: +# după revizarea fiÈ™ierului, DȘ, zice: +# → aici cred că se poate adapta „înainte de a începe.†+# === +# Am reformulat traducerea +# traducerea iniÈ›ială: +# „... înainte de a face ceva.†+#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRECTOR, --directory=DIRECTOR\n" +" Schimbă la DIRECTOR(ul) înainte de a începe " +"vreo operaÈ›ie.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d AfiÈ™ează o mulÈ›ime de informaÈ›ii de depanare.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=FANIOANE] AfiÈ™ează diferite tipuri de informaÈ›ii de " +"depanare.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Variabilele de mediu primează față de " +"fiÈ™ierele makefile.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E ȘIR, --eval=ȘIR Evaluează ȘIR(ul) ca o declaraÈ›ie de " +"makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FIȘIER, --file=FIȘIER, --makefile=FIȘIER\n" +" CiteÈ™te FIȘIER ca pe un fiÈ™ier makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help AfiÈ™ează acest mesaj È™i iese.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignoră erorile din reÈ›ete.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIRECTOR, --include-dir=DIRECTOR\n" +" Caută în DIRECTOR pentru fiÈ™ierele makefile " +"incluse.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Permite N lucrări simultan; fără argument, un " +"număr infinit de lucrări.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=STIL Selectează stilul serverului de lucrări de " +"utilizat.\n" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Continuă atunci când unele È›inte nu pot fi " +"făcute.\n" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Nu începe mai multe lucrări decât dacă " +"încărcarea este sub N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times Utilizează ora ultimei modificări între " +"legături simbolice È™i È›intă.\n" + +#: src/main.c:355 +msgid "" +" -n, --just-print, --dry-run, --recon\n" +" Don't actually run any recipe; just print " +"them.\n" +msgstr "" +" -n, --just-print, --dry-run, --recon\n" +" Nu rulează de fapt nicio reÈ›etă; doar o " +"afiÈ™ează.\n" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o FIȘIER, --old-file=FIȘIER, --assume-old=FIȘIER\n" +" Consideră FIȘIER(ul) ca fiind foarte vechi È™i " +"nu-l reface.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TIP], --output-sync[=TIP]\n" +" Sincronizează ieÈ™irea lucrărilor paralele după " +"TIP.\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base AfiÈ™ează baza de date internă a «make».\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Nu rulează nicio reÈ›etă; starea de ieÈ™ire " +"indică dacă este actualizată.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules Dezactivează regulile implicite interne.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Dezactivează configurările variabilelor " +"interne.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Efectuează amestecarea cerinÈ›elor prealabile " +"È™i a obiectivelor.\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Nu afiÈ™ează reÈ›etele.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent AfiÈ™ează reÈ›etele (dezactivează opÈ›iunea „--" +"silentâ€).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Dezactivează opÈ›iunea „-kâ€.\n" + +# R-GC, scrie: +# după revizarea fiÈ™ierului, DȘ, zice: +# → cred că ar trebui pusă „data†sau „timpul†în loc de „ora†+# === +# Cum È›i-se pare „marcajul de timpâ€, DȘ? +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Actualizează marcajul de timp al È›intelor în " +"loc să-le reconstruiască.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" +" --trace AfiÈ™ează informaÈ›iile de urmărire a " +"execuÈ›iei.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version AfiÈ™ează numărul versiunii de «make» È™i iese.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory AfiÈ™ează directorul curent.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Dezactivează opÈ›iunea „-wâ€, chiar dacă a fost " +"activată implicit.\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W FIȘIER, --what-if=FIȘIER, --new-file=FIȘIER, --assume-new=FIȘIER\n" +" Consideră că FIȘIER(ul) este infinit de nou.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Avertizează atunci când se face referire la o " +"variabilă nedefinită.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "eroare de scriere: ieÈ™irea standard" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "un È™ir gol nu este valid ca nume de fiÈ™ier" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "specificaÈ›ie necunoscută a nivelului de depanare „%sâ€" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "tip de sincronizare de ieÈ™ire necunoscut „%sâ€" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Utilizare: %s [opÈ›iuni] [È›intă] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Acest program a fost construit pentru %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Acest program a fost construit pentru %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "RaportaÈ›i erorile la \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: ÃŽntrerupere/ExcepÈ›ie capturată (cod = 0x%lx, addr = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Filtru de excepÈ›ii negestionat apelat din programul %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "ÃŽncălcarea accesului: operaÈ›ie de scriere la adresa 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "ÃŽncălcarea accesului: operaÈ›ie de citire la adresa 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "" +"funcÈ›ia find_and_set_shell() stabileÈ™te valoarea lui default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" +"funcÈ›ia find_and_set_shell() stabileÈ™te calea de căutare a lui default_shell " +"= %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "înlăturare (legătură simbolică la fiÈ™ier temporar): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"avertisment: serverul de lucrări nu este disponibil: se foloseÈ™te „-j1â€. " +"AdăugaÈ›i „+†la regula părinte(parent) de «make»." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"avertisment: „-j%d†forÈ›at în submake: se reconfigurează modul server de " +"lucrări." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "" +"FiÈ™ierul „Makefile†de la intrarea standard a fost specificat de două ori" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: fiÈ™ierul temporar %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"avertisment: „-j%d†forÈ›at în „makefileâ€: se reconfigurează modul server de " +"lucrări." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Lucrările paralele (-j) nu sunt acceptate pe această platformă." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Se configurează la modul o singură lucrare (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Se utilizează controlorul serverului de lucrări „%sâ€\n" + +# R-GC, scrie: +# în versiunile anterioare, am tradus: +# mutex = mutiplexor +# *** +# cu modificările apărute în versiunea 4.3.91, +# acest mesaj a fost un pic modificat de către +# autori, È™i cum re-revizam întregul fiÈ™ier mi-a +# venit idea să caut ternenul în wikipedia; +# aÈ™a am aflat că: +# „In computer science, a lock or mutex (from mutual exclusion) is a synchronization primitive: a mechanism that enforces limits on access to a resource when there are many threads of execution. A lock is designed to enforce a mutual exclusion concurrency control policy, and with a variety of possible methods there exists multiple unique implementations for different applications. †+# === +# redirecÈ›ionare de la «Mutex» +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Se utilizează blocarea de sincronizare a ieÈ™irii %s\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Legăturile simbolice nu sunt acceptate: se dezactivează opÈ›iunea „-Lâ€." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Modul de amestecare activat: %s\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Se actualizează fiÈ™ierele makefile....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefile „%s†ar putea să fie în buclă; nu se reconstruieÈ™te.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: nu s-a putut încărca" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Nu s-a reuÈ™it refacerea fiÈ™ierului makefile „%sâ€." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "FiÈ™ierul makefile inclus „%s†nu a fost găsit." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "FiÈ™ierul makefile „%s†nu a fost găsit" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Nu s-a putut schimba înapoi la directorul iniÈ›ial" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Se execută din nou[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL conÈ›ine mai mult de o È›intă" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Fără È›inte" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Nu sunt specificate È›inte È™i nu a fost găsit niciun fiÈ™ier makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Se actualizează obiectivele vizate....\n" + +# R-GC, scrie: +# după revizarea fiÈ™ierului, DȘ, zice: +# → inspirându-mă din glosar aÈ™ zice: â€Versiunea compilată poate fi +# incompletă†/ „Această versiune compilată poate fi incompletă†+# → + aÈ™ retuÈ™a È™i următoarele linii cu „build†= „compilat†+# === +# nu sunt de acord cu idea; dacă folosim: +# directory = director È™i, folder = dosar; mi-se +# pare corect să folosim: +# build = construcÈ›ie È™i compile = compilare +# mai ales, că «make» face amîndouă operaÈ›iile +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"avertisment: A fost detectată o decalare a ceasului. ConstrucÈ›ia dvs. " +"poate fi incompletă." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "opÈ›iunea „%s%s†necesită un È™ir care nu este gol ca argument" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "opÈ›iunea „-%c†necesită un întreg pozitiv ca argument" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sConstruit pentru %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sConstruit pentru %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicenÈ›a GPLv3+: GNU GPL versiunea 3 sau ulterioară \n" +"%sAcesta este software liber: sunteÈ›i liber să îl modificaÈ›i È™i să îl " +"redistribuiÈ›i.\n" +"%sNU există NICIO GARANÈšIE, în măsura permisă de lege.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Baza de date a lui «make», afiÈ™ată pe %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Se finalizează baza de date a lui «make» pe %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s valoare %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s valoare %s: nu este un director" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "se utilizează directorul temporar implicit „%sâ€" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "crează fiÈ™ierul temporar %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "înlăturare legătură simbolică la fiÈ™ier temporar %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: fiÈ™ierul temporar %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: fiÈ™ierul temporar %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Se intră într-un director necunoscut\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Se părăseÈ™te un director necunoscut\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Se intră în directorul „%sâ€\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Se părăseÈ™te directorul „%sâ€\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Se intră într-un director necunoscut\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Se părăseÈ™te un director necunoscut\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Se intră în directorul „%sâ€\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Se părăseÈ™te directorul „%sâ€\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"avertisment: Nu se poate obÈ›ine blocarea ieÈ™irii, se dezactivează " +"sincronizarea ieÈ™irii." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Stop.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "Nu se poate deschide serverul de lucrări %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Stil necunoscut de autentificare al serverului de lucrări „%sâ€" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "se creează linia de legătură pentru lucrări" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "se duplică linia de legătură pentru lucrări" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "se iniÈ›ializează linia de legătură a serverului de lucrări" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "È™ir nevalid „%s†al argumentului opÈ›iunii „--jobserver-authâ€" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "scrie în serverul de lucrări" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "serverul de lucrări este oprit" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "funcÈ›ia pselect() a liniilor de legătură de lucrări" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "citeÈ™te liniile de legătură ale lucrărilor" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "È™ir nevalid „%s†al argumentului opÈ›iunii „---sync-mutexâ€" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "nu se poate deschide blocarea de sincronizare a ieÈ™irii %s: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Nu se poate deschide „%s†cu O_TMPFILE: %s.\n" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Se citesc fiÈ™ierele makefile...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Se citesc fiÈ™ierele makefile '%s'" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (nici un obiectiv implicit)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (cale de căutare)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (nu contează)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " („~†nu se înlocuieÈ™te)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "Se omite BOM UTF-8 în fiÈ™ierul makefile „%sâ€\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Se omite BOM UTF-8 în fiÈ™ierul makefile din memoria tampon\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintaxă nevalidă în condiÈ›ional" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "reÈ›eta începe înainte de prima È›intă" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "lipseÈ™te o regulă înaintea reÈ›etei" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "lipseÈ™te separatorul (v-aÈ›i referit la TAB în loc de 8 spaÈ›ii?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "lipseÈ™te separatorul" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "modelul È›intă" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "multiple modele de È›intă" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "modelul È›intă nu conÈ›ine „%%â€" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "lipseÈ™te „endifâ€" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "nume de variabilă gol" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "text de prisos după directiva „define“" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "lipseÈ™te „endefâ€, „define†neterminat" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "text de prisos după directiva „endef“" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "text de prisos după directiva „%s“" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "„%s†de prisos" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "doar un „else†per condiÈ›ional" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "DefiniÈ›ie de variabilă specifică È›intei incorectă" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT nu ar trebui să aibă cerinÈ›e prealabile" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT nu ar trebui să aibă comenzi" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "cerinÈ›ele prealabile nu pot fi definite în reÈ›ete" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "È›intele grupate trebuie să furnizeze o reÈ›etă" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "regulile de model implicite È™i statice sunt amestecate" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "regulile implicite È™i normale sunt amestecate" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "È›inta „%s†nu se potriveÈ™te cu modelul È›intă" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "fiÈ™ierul È›intă „%s†are ambele intrări „:†și „::â€" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "È›inta „%s†este dată de mai multe ori în aceeaÈ™i regulă" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "avertisment: se înlocuieÈ™te reÈ›eta pentru È›inta „%sâ€" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "avertisment: se ignoră vechea reÈ›etă pentru È›inta „%sâ€" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** regulile implicite È™i normale sunt amestecate: sintaxă învechită" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "avertisment: se înlocuieÈ™te apartenenÈ›a la grup pentru È›inta „%sâ€" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "avertisment: caracter NUL detectat; restul liniei este ignorat" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "" +"avertisment: reÈ›eta modelului nu a actualizat È›inta corespunzătoare „%sâ€" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Nu trebuie făcut nimic pentru „%sâ€." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s†este actualizat." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Se scurtează fiÈ™ierul „%sâ€.\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sNici o regulă pentru a face È›inta „%sâ€, necesară pentru „%sâ€%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sNici o regulă pentru a face È›inta „%sâ€%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Luând în considerare fiÈ™ierul È›intă „%sâ€.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "ÃŽncercarea recentă de actualizare a fiÈ™ierului „%sâ€, a eÈ™uat.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "FiÈ™ierul „%s†a fost deja luat în considerare.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "FiÈ™ierul „%s†este încă în curs de actualizare.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "S-a terminat actualizarea fiÈ™ierului „%sâ€.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "FiÈ™ierul „%s†nu există.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Avertisment: fiÈ™ierul .LOW_RESOLUTION_TIME „%s†are un marcaj de timp de " +"înaltă rezoluÈ›ie" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Partenerul grupat al È›intei „%s†din fiÈ™ierul „%s†nu există.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Se utilizează reÈ›eta implicită pentru „%sâ€.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "DependenÈ›a circulară %s ↠%s este omisă." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "S-au încheiat cerinÈ›ele prealabile ale fiÈ™ierului È›intă „%sâ€.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "CerinÈ›ele prealabile pentru „%s†sunt în curs de realizare.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Se renunță la fiÈ™ierul È›intă „%sâ€.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Èšintă „%s†nu a fost refăcută din cauza erorilor." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "" +"CerinÈ›a prealabilă „%s†este numai pentru ordonare secvenÈ›ială pentru È›inta " +"„%sâ€.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "CerinÈ›a prealabilă „%s†a È›intei „%s†nu există.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "CerinÈ›a prealabilă „%s†este mai nouă decât È›inta „%sâ€.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "CerinÈ›a prealabilă „%s†este mai veche decât È›inta „%sâ€.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "" +"Èšinta „%s†are două două puncte duble „::†și nu are cerinÈ›e prealabile.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" +"Nicio reÈ›etă pentru „%s†și nicio cerință prealabilă nu a fost schimbată.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Se realizează „%s†din cauza opÈ›iunii „--always-makeâ€.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Nu este necesar să se reconstruiască È›inta „%sâ€" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; folosind numele VPATH „%sâ€" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Trebuie să se reconstruiască È›inta „%sâ€.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Se ignoră numele VPATH „%sâ€.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "ReÈ›eta lui „%s†este în curs de executare.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Nu s-a putut reconstrui fiÈ™ierul È›intă „%sâ€.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "S-a reconstruit cu succes fiÈ™ierul È›intă „%sâ€.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "FiÈ™ierul È›intă „%s†trebuie reconstruit cu opÈ›iunea „-qâ€.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Se utilizează comenzile implicite pentru „%sâ€.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Avertisment: FiÈ™ierul „%s†are ora de modificare %s s în viitor" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Elementul .LIBPATTERNS „%s†nu este un model" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Valorile definite de către utilizator, nu vor fi exportate: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" +"avertisment: se ignoră cerinÈ›ele prealabile privind definirea regulii " +"sufixului" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Reguli implicite" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Fără reguli implicite." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u reguli implicite, %u (%.1f%%) terminal." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "EROARE: num_pattern_rules este greÈ™it! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "mod de amestecare nevalid: %s: „%sâ€" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "semnal necunoscut" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Terminare anormală(Hangup)" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "ÃŽntrerupere" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Părăsire" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "InstrucÈ›iune ilegală" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "InstrucÈ›iuni de urmărire/punct de întrerupere" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Se renunță" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Detectare IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Detectare EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "ExcepÈ›ie virgulă mobilă" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Omorît" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Eroare de magistrală de date(bus)" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Eroare de segmentare" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Apel de sistem greÈ™it" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Linie de conectare întreruptă" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Ceas cu alarmă" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminat" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Semnalul «1» definit de utilizator" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Semnalul «2» definit de utilizator" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Procesul-copil a terminat" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Pană de curent" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Oprit" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Oprit (intrare tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Oprit (ieÈ™ire tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Oprit (semnal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "S-a depășit limita de timp CPU" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "S-a depășit limita de dimensiune a fiÈ™ierului" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Cronometrul virtual a expirat" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Cronometrul de creare a profilului a expirat" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Fereastră redimensionată" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continuare" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "CondiÈ›ie In/IeÈ™ urgentă" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "In/IeÈ™ posibilă" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Resursă pierdută" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Semnal de pericol" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Solicitare de informaÈ›ie" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Coprocesorul în virgulă mobilă nu este disponibil" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Fără memorii tampon strcache\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s memorii tampon strcache: %lu (%lu) / È™iruri = %lu / stocare = %lu B / " +"media = %lu B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s memoria tampon actuală: dimensiune = %hu B / utilizată = %hu B / " +"cantitatea = %hu / media = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s alta utilizată: total = %lu B / cantitatea = %lu / media = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s alta liberă: total = %lu B / max = %lu B / min = %lu B / media = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s randamentul strcache: căutări = %lu / rata de potrivire = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# statistici din tabelul sumelor de control ale fiÈ™ierelor:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automat" + +#: src/variable.c:1789 +msgid "default" +msgstr "implicit" + +#: src/variable.c:1792 +msgid "environment" +msgstr "mediu" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "mediu cu opÈ›iunea „-eâ€" + +#: src/variable.c:1801 +msgid "command line" +msgstr "linie de comandă" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "directiva „overrideâ€" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (din „%sâ€, linia %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "" +"# statistici pentru setul de variabile din tabelul sumelor de control\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabiles\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valori de variabile specifice modelului" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Nu există valori de variabile specifice modelului." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valori de variabile specifice modelului" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "avertisment: variabilă nedefinită „%.*sâ€" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() a eÈ™uat cu %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-avertisment, poate fi necesar să reactivaÈ›i controlul combinaÈ›iei de taste " +"«CTRL-Y» din DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "COMANDA INTERNÄ‚ «CD» %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Adăugă ieÈ™irea la %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Adăugă %.*s È™i curăță\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Se execută %s în schimb\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Căi de căutare VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Fără căi de căutare „vpathâ€." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u căi de căutare „vpathâ€.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Nicio cale de căutare generală (variabilă „VPATHâ€)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Calea de căutare generală (variabilă „VPATHâ€):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Sloturi ale serverului de lucrări limitate la %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "se creează semaforul serverului de lucrări: (Eroare %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"eroare internă: nu se poate deschide semaforul serverului de lucrări „%sâ€: " +"(Eroare %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Clientul serverului de lucrări (semafor %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "eliberare a semaforului serverului de lucrări: (Eroare %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "în aÈ™teptarea semaforului sau a procesului-copil: (Eroare %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "nu se poate analiza blocarea de sincronizare a ieÈ™irii %s: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "blocare de sincronizare a ieÈ™irii nevalidă: %s" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "Configurarea serverului de lucrări (fifo %s)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "Configurarea serverului de lucrării (fds %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Clientul serverului de lucrări (fds %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "fopen (fiÈ™ier temporar)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: utilizator %lu (real %lu), grup %lu (real %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Accesul a fost iniÈ›ializat" + +#~ msgid "User access" +#~ msgstr "Acces de utilizator" + +#~ msgid "Make access" +#~ msgstr "Acces de «make»" + +#~ msgid "Child access" +#~ msgstr "Acces de proces-copil" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TIP] (--output-sync[=TIP]) nu este configurat pentru această " +#~ "construcÈ›ie." + +#~ msgid "jobserver pipeline" +#~ msgstr "linia de legătură a serverului de lucrări" diff --git a/local/recipes/dev/gnu-make/source/po/ru.gmo b/local/recipes/dev/gnu-make/source/po/ru.gmo new file mode 100644 index 0000000000000000000000000000000000000000..ca777b8f47947e972e5ab7628a401da977e61180 GIT binary patch literal 51042 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 V0E3q@lE|If60uU0O`6V`{x6(6AC&+A literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/ru.po b/local/recipes/dev/gnu-make/source/po/ru.po new file mode 100644 index 0000000000..73cbac4830 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/ru.po @@ -0,0 +1,2640 @@ +# Translation of make messages to Russian. +# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2009 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Oleg S. Tihonov , 1998. +# Alexey Mahotkin , 2001. +# Denis Perchine , 2001, 2002. +# Pavel Maryanov , 2009. +# Yuri Kozlov , 2009, 2010, 2013, 2014, 2016, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\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 \n" +"Language-Team: Russian \n" +"Language: ru\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: Lokalize 2.0\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "попытка иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ ÑредÑтва: «%s»" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "обновление времени Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‡Ð»ÐµÐ½Ð° архива невозможно в ÑиÑтеме VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "обновление времени изменениÑ: Ðрхив «%s» не ÑущеÑтвует" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "обновление времени изменениÑ: Ðеверный архив: «%s»" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "обновление времени изменениÑ: Элемент «%s» не ÑодержитÑÑ Ð² «%s»" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "" +"обновление времени изменениÑ: Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ ar_member_touch вернула\n" +"ошибочное значение Ð´Ð»Ñ Â«%s»" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() не Ñмогла извлечь информацию о модуле, ÑÑ‚Ð°Ñ‚ÑƒÑ = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$init_control() вернула код ошибки %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"невозможно открыть библиотеку «%s» Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ Ñлемента %d" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (Ð¸Ð¼Ñ Ð¼Ð¾Ð¶ÐµÑ‚ быть уÑечено)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Дата %s" + +#: 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:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Ð’ ÑпоÑобе Ñлишком много Ñтрок (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** ОÑтанов.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Элемент архива «%s», кажетÑÑ, недейÑтвителен; не удалён" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Элемент архива «%s», кажетÑÑ, недейÑтвителен; не удалён" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] УдалÑетÑÑ Ñ„Ð°Ð¹Ð» «%s»" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** УдалÑетÑÑ Ñ„Ð°Ð¹Ð» «%s»" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# ÑпоÑоб, который Ñледует применить" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (вÑтроенные):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (из «%s», Ñтрока %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Каталоги\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: невозможно получить ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð¾Ð¼ stat.\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: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:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (уÑтройÑтво %ld, inode %ld): невозможно открыть.\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (ключ %s, mtime %l64u): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (уÑтройÑтво %d, inode [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (уÑтройÑтво %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Ðет" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " файлов," + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "нет" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " недоÑтижимых целей" + +#: src/dir.c:1180 +msgid " so far." +msgstr " на текущий момент." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " недоÑтижимых целей в %lu каталогах.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ ÑÑылка на переменную" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "СпоÑоб Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» был задан в %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "СпоÑоб Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» был найден из неÑвного правила," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "но «%s» и «%s» теперь ÑчитаютÑÑ Ð¾Ð´Ð½Ð¸Ð¼ и тем же файлом." + +#: 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:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"невозможно переименовать «%s» Ñ Ð¾Ð´Ð½Ð¸Ð¼ двоеточием в «%s» Ñ Ð´Ð²ÑƒÐ¼Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ñми" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" +"невозможно переименовать «%s» Ñ Ð´Ð²ÑƒÐ¼Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ñми в «%s» Ñ Ð¾Ð´Ð½Ð¸Ð¼ двоеточием" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Удаление промежуточного файла «%s»" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Удаление промежуточных файлов...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Временной штамп выходит за пределы диапазона; подÑтавлÑем %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ðе ÑвлÑетÑÑ Ñ†ÐµÐ»ÑŒÑŽ:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Ценный файл (завиÑимоÑть .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# ПÑевдоцель (завиÑимоÑть от .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Цель, Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÐ¼Ð°Ñ Ð¸Ð· командной Ñтроки." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# По умолчанию, MAKEFILES, или -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Ð’Ñтроенное правило" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# ПроизводилÑÑ Ð¿Ð¾Ð¸Ñк неÑвных правил." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# ПоиÑк неÑвных правил не производилÑÑ." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# ОÑнова неÑвного или ÑтатичеÑкого образца: «%s»\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Файл — Ð¿Ñ€Ð¾Ð¼ÐµÐ¶ÑƒÑ‚Ð¾Ñ‡Ð½Ð°Ñ Ð·Ð°Ð²Ð¸ÑимоÑть." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Ð’Ñ€ÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð¸ разу не проверÑлоÑÑŒ." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Файл не ÑущеÑтвует." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Файл очень Ñтарый." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Ð’Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ñледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Файл был обновлён." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Файл не был обновлён." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Ð’ данный момент уже применÑетÑÑ Ð½ÐµÐºÐ¸Ð¹ ÑпоÑоб (ЭТО ОШИБКÐ)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "" +"# Ð’ данный момент уже применÑетÑÑ Ð½ÐµÐºÐ¸Ð¹ ÑпоÑоб по завиÑимоÑÑ‚Ñм (ЭТО ОШИБКÐ)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# УÑпешно обновлено." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Должно быть обновлено (задан ключ -q)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Попытка Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÐµÐ·ÑƒÑпешна." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ðеверное значение члена «command_state»!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Файлы" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# ÑоÑтоÑние файлов хеш-таблицы:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Поле «%s» не кешировано: %s" + +#: 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:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "первый аргумент функции «word» должен быть больше нулÑ" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "нечиÑловой первый аргумент функции «wordlist»" + +#: 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:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) вернула код ошибки (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:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() вернула код ошибки (e=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() завершилаÑÑŒ неудачно\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Очищаю временный пакетный файл %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "файл: отÑутÑтвует Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "открытие: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "запиÑÑŒ: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "закрытие: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "файл: Ñлишком много аргументов" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "чтение: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "файл: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð¼: %s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "недоÑтаточно аргументов (вÑего %d) функции «%s»" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "не реализовано на Ñтой платформе: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Â«%s»" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "незавершённый вызов функции «%s»: пропущено «%c»" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "ПуÑтое Ð¸Ð¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Ðекорректное Ð¸Ð¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Слишком длинное Ð¸Ð¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Ðекорректное минимальное чиÑло аргументов (вÑего %u) функции %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Ðекорректное макÑимальное чиÑло аргументов (вÑего %u) функции %s" + +# Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ getopt иÑключены, Ñ‚.к. они отноÑÑÑ‚ÑÑ Ðº уже +# уÑтаревшей верÑии Ñтой библиотеки, и иÑчезнут в Ñледующей верÑии make +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: ключ «%s» не однозначен\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: ключ «--%s» должен иÑпользоватьÑÑ Ð±ÐµÐ· аргумента\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: ключ «%c%s» должен иÑпользоватьÑÑ Ð±ÐµÐ· аргумента\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: ключу «%s» требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: неизвеÑтный ключ «--%s»\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: неизвеÑтный ключ «%c%s»\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: недопуÑтимый ключ -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: неверный ключ -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: ключ требует аргумент -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: ключ «-W %s» неоднозначен\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: ключ «-W %s» должен иÑпользоватьÑÑ Ð±ÐµÐ· аргумента\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: раÑширÑетÑÑ Â«%s»\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: вычиÑлÑетÑÑ Â«%s»\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "не удалоÑÑŒ выделить %lu байт Ð´Ð»Ñ Ñ…ÐµÑˆ-таблицы: закончилаÑÑŒ памÑть" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Загружено=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Переформулировано=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Противоречий=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "ПоиÑк неÑвного правила Ð´Ð»Ñ Â«%s».\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "ПоиÑк неÑвного правила Ð´Ð»Ñ Ñлемента архива «%s».\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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Попытка Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° Ñ Ð¾Ð±Ñ€Ð°Ð·Ñ†Ð¾Ð¼ «%.*s».\n" + +#: src/implicit.c:506 +#, c-format +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:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Отвержение невозможной неÑвной завиÑимоÑти «%s».\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Попытка Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° завиÑимоÑти «%s».\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Попытка Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½ÐµÑвной завиÑимоÑти «%s».\n" + +#: 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 +#, 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: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/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:552 +msgid " (core dumped)" +msgstr " (Ñделан дамп памÑти)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (игнорирование)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<вÑтроенное>" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Ошибка %d%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Ожидание Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ð¹â€¦" + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (удалённый)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "ПодбираетÑÑ ÑƒÐ´Ð°Ñ‡Ð½Ð¾ завершившийÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼Ð¾Ðº %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "ПодбираетÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡Ð½Ð¾ завершившийÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼Ð¾Ðº %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Подчищаю временный пакетный файл %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "ОчиÑтка временного пакетного файла %s завершилаÑÑŒ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ (%d)\n" + +#: 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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "ОÑвобождён токен Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° %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() не Ñмогла запуÑтить процеÑÑ (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"При неудачном запуÑке ÑоÑчитано %d аргументов\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Получен токен Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: обновление цели «%s» из-за: %s" + +#: 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:2106 +msgid "cannot enforce load limit: " +msgstr "невозможно уÑтановить пределы загрузки: " + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "закончилиÑÑŒ файловые деÑкрипторы: не удалоÑÑŒ Ñделать копию stdin\n" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "закончилиÑÑŒ файловые деÑкрипторы: не удалоÑÑŒ Ñделать копию stdout\n" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "закончилиÑÑŒ файловые деÑкрипторы: не удалоÑÑŒ Ñделать копию stderr\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Ðе удалоÑÑŒ воÑÑтановить stdin\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Ðе удалоÑÑŒ воÑÑтановить stdout\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Ðе удалоÑÑŒ воÑÑтановить stderr\n" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: вероÑтно, закончилоÑÑŒ меÑто под окружение" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $SHELL изменилаÑÑŒ (было «%s», теперь «%s»)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "СоздаётÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¹ пакетный файл %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Содержимое файла пакетных заданий:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Содержимое файла пакетных заданий:%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 (Ñтрока %d) Плохой контекÑÑ‚ командного процеÑÑора (!unixy && !" +"batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Ðе удалоÑÑŒ открыть глобальную таблицу Ñимволов: %s" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Ðе удалоÑÑŒ загрузить Ñимвол %s из %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "ПуÑтое Ð¸Ð¼Ñ Ñимвола Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "ЗагружаетÑÑ Ñимвол %s из %s\n" + +#: 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" +msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Â«load» не поддерживаетÑÑ Ð½Ð° Ñтой платформе." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Ключи:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m ИгнорируетÑÑ Ð´Ð»Ñ ÑовмеÑтимоÑти.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make Без уÑловий отрабатывать вÑе цели.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C КÐТÐЛОГ, --directory=КÐТÐЛОГ\n" +" Перейти в КÐТÐЛОГ перед выполнением дейÑтвий.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Выводить маÑÑу отладочных Ñообщений.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=ФЛÐГИ] Выводить различные типы отладочной " +"информации.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Переменные Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð¼ÐµÐ½ÑÑŽÑ‚ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ " +"makefile.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E СТРОКÐ, --eval=СТРОКРВычиÑлить СТРОКУ как предложение makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f ФÐЙЛ, --file=ФÐЙЛ, --makefile=ФÐЙЛ\n" +" ИÑпользовать ФÐЙЛ в качеÑтве makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Показать Ñту Ñправку и выйти.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Игнорировать ошибки ÑпоÑобов.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I КÐТÐЛОГ, --include-dir=КÐТÐЛОГ\n" +" ИÑкать включаемые make-файлы в КÐТÐЛОГЕ.\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] ЗапуÑкать одновременно до N заданий; \n" +" еÑли N не указано, чиÑло заданий " +"неограничено.\n" + +#: 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: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" +" неÑколько заданий, еÑли загрузка больше 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 ИÑпользовать поÑледнее mtime при выборе между\n" +" ÑимволичеÑкими ÑÑылками и целью.\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" +" Ðе применÑть ÑпоÑоб на Ñамом деле; проÑто\n" +" напечатать его.\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 ФÐЙЛ, --old-file=ФÐЙЛ, --assume-old=ФÐЙЛ\n" +" Считать ФÐЙЛ очень Ñтарым и не переделывать " +"его.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[ТИП], --output-sync[=ТИП]\n" +" Синхронизировать вывод параллельных\n" +" заданий Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ ТИП.\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Ðе применÑть ÑпоÑоб;\n" +" код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚, вÑÑ‘ ли уже " +"Ñделано.\n" + +#: 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:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Выключить уÑтановку вÑтроенных\n" +" значений переменных.\n" + +#: 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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Показывать ÑпоÑобы (отключает режим --" +"silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Отменить ключ -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch УÑтановить Ð²Ñ€ÐµÐ¼Ñ Ð´Ð¾Ñтупа целей в текущее,\n" +" а не переÑобирать их.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Выводить траÑÑировочную информацию.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version Показать информацию о верÑии и выйти.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Ðапечатать текущий каталог.\n" + +#: 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:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W ФÐЙЛ, --what-if=ФÐЙЛ, --new-file=ФÐЙЛ, --assume-new=ФÐЙЛ\n" +" Считать ФÐЙЛ вÑегда новым.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Выдавать предупреждение при ÑÑылке\n" +" на неопределённую переменную.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "задан неизвеÑтный уровень отладки «%s»" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "неизвеÑтный тип output-sync «%s»" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "ИÑпользование: %s [КЛЮЧ]... [ЦЕЛЬ]...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Эта программа Ñобрана Ð´Ð»Ñ %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Эта программа Ñобрана Ð´Ð»Ñ %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Сообщайте об ошибках по адреÑу \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: поймано прерывание или иÑключение (код = 0x%lx, Ð°Ð´Ñ€ÐµÑ = 0x%p)\n" + +#: src/main.c: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" +"Ðеобработанное иÑключение в программе %s\n" +"Код иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ = %lx\n" +"Флаги иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ = %lx\n" +"ÐÐ´Ñ€ÐµÑ Ð¸ÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Ðарушение доÑтупа: Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи по адреÑу 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Ðарушение доÑтупа: Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑа 0x%p\n" + +#: 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: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: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 "" +"предупреждение: Ñервер заданий недоÑтупен: иÑпользуетÑÑ -j1. Добавьте «+» к " +"правилу в родительÑком make." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"предупреждение: в Ñуб-Makefile принудительно задан -j%d; ÑÐ±Ñ€Ð¾Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° " +"Ñервера заданий" + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile из Ñтандартного ввода указан дважды." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (временный файл)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"предупреждение: в makefile принудительно задан -j%d; ÑÐ±Ñ€Ð¾Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° Ñервера " +"заданий" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Параллельные Ð·Ð°Ð´Ð°Ð½Ð¸Ñ (-j) не поддерживаютÑÑ Ð½Ð° Ñтой платформе." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "ВозвращаетÑÑ Ñ€ÐµÐ¶Ð¸Ð¼ одиночного Ð·Ð°Ð´Ð°Ð½Ð¸Ñ (-j1)." + +#: 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: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:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Make-файл «%s», возможно, зациклен, он не будет переÑобиратьÑÑ.\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: не удалоÑÑŒ загрузить" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Попытка переÑобрать make-файл «%s» завершилаÑÑŒ неудачно." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Включаемый make-файл «%s» не найден." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Make-файл «%s» не найден" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Ðевозможно перейти в первоначальный каталог." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Повторное выполнение[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL Ñодержит более одной цели" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Ðет целей" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Ðе заданы цели и не найден make-файл" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Обновление целей результата...\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "предупреждение: Ðеправильный ход чаÑов. Сборка может быть неполной." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "длÑ ключа «%s%s» нужно указать аргументом непуÑтую Ñтроку" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "ключ «-%c» должен иÑпользоватьÑÑ Ñ Ñ†ÐµÐ»Ñ‹Ð¼ положительным аргументом" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sЭта программа Ñобрана Ð´Ð»Ñ %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sЭта программа Ñобрана Ð´Ð»Ñ %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sÐ›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ GPLv3+: GNU GPL верÑии 3 или новее \n" +"%sЭто Ñвободное программное обеÑпечение: вы можете Ñвободно изменÑть его и\n" +"%sраÑпроÑтранÑть. ÐЕТ ÐИКÐКИХ ГÐРÐÐТИЙ вне пределов, допуÑтимых законом.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# База данных Make, напечатана %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Печать базы данных Make завершена %s\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: 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:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (временный файл)" + +#: 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 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Вход в неизвеÑтный каталог\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Выход из неизвеÑтного каталога\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: вход в каталог «%s»\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: выход из каталога «%s»\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: вход в неизвеÑтный каталог\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: выход из неизвеÑтного каталога\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: вход в каталог «%s»\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: выход из каталога «%s»\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". ОÑтанов.\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 "" + +#: 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:190 +msgid "creating jobs pipe" +msgstr "ÑоздаётÑÑ ÐºÐ°Ð½Ð°Ð» заданий" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "делаетÑÑ ÐºÐ¾Ð¿Ð¸Ñ ÐºÐ°Ð½Ð°Ð»Ð° заданий" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ÐºÐ°Ð½Ð°Ð»Ð° Ñервера заданий" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñтрока --jobserver-auth «%s»" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "запиÑÑŒ Ñервера заданий" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "Ñервер заданий выключен" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect из канала заданий" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "чтение канала заданий" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Чтение make-файла «%s»" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (нет цели по умолчанию)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (путь поиÑка)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (игнорировать ошибки)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (не раÑкрывать Ñимвол `~') " + +#: 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:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "ПропуÑк UTF-8 BOM в буфере make-файла\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "неверный ÑинтакÑÐ¸Ñ Ð² уÑловном выражении" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "обнаружен ÑпоÑоб до первого Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ†ÐµÐ»Ð¸" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "перед ÑпоÑобом отÑутÑтвует правило" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "пропущен разделитель (возможно нужен TAB вмеÑто воÑьми пробелов?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "пропущен разделитель" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "пропущен образец цели" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "неÑколько образцов цели" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "образец цели не Ñодержит «%%»" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "отÑутÑтвует «endif»" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "пуÑтое Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "излишний текÑÑ‚ поÑле директивы «define»" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "отÑутÑтвует «endif», Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ Â«define»" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "излишний текÑÑ‚ поÑле директивы «endef»" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "Излишний текÑÑ‚ поÑле директивы «%s»" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "излишнÑÑ Â«%s»" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "в уÑловном выражении возможна только одна «else»" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Ðеправильный формат Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ цели" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ñ‹Ñ… целей должен предоÑтавлÑтьÑÑ ÑпоÑоб" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "Ñмешаны неÑвные правила и правила Ñо ÑтатичеÑкими образцами" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "Ñмешаны неÑвные и обычные правила" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "цель «%s» не ÑоответÑтвует образцу целей" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "целевой файл «%s» имеет Ð²Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¸ Ñ :, и Ñ ::" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "цель «%s» указана неÑколько раз в одном правиле" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "предупреждение: переопределение ÑпоÑоба Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s»" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "предупреждение: Ñтарый ÑпоÑоб Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s» игнорируютÑÑ" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** Ñмешаны неÑвные и обычные правила: уÑтаревший ÑинтакÑиÑ" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "предупреждение: переопределение членÑтва группы Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s»" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "предупреждение: вÑтречен Ñимвол NUL; игнорируетÑÑ Ð´Ð¾ конца Ñтроки" + +#: 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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "«%s» не требует обновлениÑ." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "ОбрезаетÑÑ Ñ„Ð°Ð¹Ð» «%s».\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sÐет правила Ð´Ð»Ñ Ñборки цели «%s»%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Обработка целевого файла «%s».\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° обновить файл «%s» завершилаÑÑŒ неудачно.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Файл «%s» уже был обработан.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Файл «%s» обновлÑетÑÑ Ð² данный момент.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Обновление файла «%s» завершено.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Файл «%s» не ÑущеÑтвует.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Предупреждение: у файла «%s» параметр LOW_RESOLUTION_TIME Ñодержит метку " +"времени Ñ Ð²Ñ‹Ñокой точноÑтью" + +#: 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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "ИÑпользование ÑпоÑоба по умолчанию Ð´Ð»Ñ Â«%s».\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "ЦикличеÑÐºÐ°Ñ Ð·Ð°Ð²Ð¸ÑимоÑть %s <- %s пропущена." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Обновление целей, от которых завиÑит целевой файл «%s», завершено.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Цели, от которых завиÑит «%s», в наÑтоÑщий момент ÑобираютÑÑ.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Ðварийный оÑтанов на целевом файле «%s».\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Цель «%s» не была переÑобрана из-за ошибок." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "ЗавиÑимоÑть «%s» Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s» завиÑит от порÑдка.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "ЗавиÑимоÑть «%s» цели «%s» не ÑущеÑтвует.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "ЗавиÑимоÑть «%s» новее, чем цель «%s».\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "ЗавиÑимоÑть «%s» Ñтарее, чем цель «%s».\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "Цель «%s» объÑвлена Ñ Ð´Ð²ÑƒÐ¼Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ñми и не имеет завиÑимоÑтей.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "СпоÑоб Ð´Ð»Ñ Â«%s» не задан, и начальные уÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ðµ изменены.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "ПереÑборка «%s» из-за уÑтановленного флага always-make.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Ðет необходимоÑти переÑобирать цель «%s»" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; иÑпользуетÑÑ VPATH-Ð¸Ð¼Ñ Â«%s»" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Ðеобходимо переÑобрать цель «%s».\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " ИгнорируетÑÑ VPATH-Ð¸Ð¼Ñ Â«%s».\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÑетÑÑ ÑпоÑоб «%s».\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Ðе удалоÑÑŒ переÑоздать файл цели «%s».\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Целевой файл «%s» уÑпешно переÑоздан.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Целевой файл «%s» требует переÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ -q.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "ИÑпользование команд по умолчанию Ð´Ð»Ñ Â«%s».\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Предупреждение: Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» находитÑÑ Ð² будущем (%s)" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Элемент .LIBPATTERNS «%s» не ÑвлÑетÑÑ Ð¾Ð±Ñ€Ð°Ð·Ñ†Ð¾Ð¼" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Ðе ÑкÑпортируемые наÑтройки: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# ÐеÑвные правила" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# ÐеÑвных правил нет." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# ÐеÑвных правил: %u, терминальных: %u (%.1f%%)" + +#: 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 "неизвеÑтный Ñигнал" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Обрыв терминальной линии" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Прерывание" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Ðварийное прерывание" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¸Ð½ÑтрукциÑ" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Прерывание на контрольной точке" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Прервано" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Ошибка IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Ошибка ÑмулÑции" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Ошибка операции Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Уничтожение" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Ðеверное обращение к памÑти" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Ðарушение прав доÑтупа к памÑти" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Ðеправильный ÑиÑтемный вызов" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Обрыв канала" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Сигнал по таймеру" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Завершение" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "ОпределÑемый пользователем Ñигнал 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "ОпределÑемый пользователем Ñигнал 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Потомок завершил работу" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Отказ питаниÑ" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "ОÑтанов" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "ОÑтанов (ввод Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð»Ð°) " + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "ОÑтанов (вывод на терминал)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "ОÑтанов (Ñигнал)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Превышен предел процеÑÑорного времени" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Превышен предел размера файла" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Виртуальное Ð²Ñ€ÐµÐ¼Ñ Ð¸Ñтекло" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ñтекло" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Окно изменено" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Возобновление" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ ÑкÑтренного ввода/вывода" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Возможен ввод/вывод" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "РеÑÑƒÑ€Ñ Ð¿Ð¾Ñ‚ÐµÑ€Ñн" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Сигнал опаÑноÑти" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "СопроцеÑÑор Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой недоÑтупен" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s без буферов 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 буферы strcache: %lu (%lu) / Ñтрок = %lu / хранилище = %lu Б / Ñред = %lu " +"Б\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 текущий buf: размер = %hu Б / иÑпользуетÑÑ = %hu Б / кол-во = %hu / Ñред " +"= %u Б\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" +"%s Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ иÑпользуетÑÑ: вÑего = %lu Б / кол-во = %lu / Ñред = %lu Б\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 Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñвободно: вÑего = %lu Б / макÑ. = %lu Б / мин. = %lu Б / " +"Ñред. = %hu Б\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s производительноÑть strcache: поиÑков = %lu / найдено = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# ÑоÑтоÑние хеш-таблицы:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "автоматичеÑкаÑ" + +#: src/variable.c:1789 +msgid "default" +msgstr "по умолчанию" + +#: src/variable.c:1792 +msgid "environment" +msgstr "определена в Ñреде" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "make-файл" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "окружение Ñ -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "определена в командной Ñтроке" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "Директива «override»" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (из «%s», Ñтрока %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# ÑоÑтоÑние переменных в хеш-таблице:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Переменные\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… оÑобенные Ð´Ð»Ñ Ð¼Ð°Ñки" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Ðет значений переменных оÑобенных Ð´Ð»Ñ Ð¼Ð°Ñки." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u значений переменных оÑобенных Ð´Ð»Ñ Ð¼Ð°Ñки" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "предупреждение: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Â«%.*s»" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() вернула код ошибки %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-предупреждение, возможно вам потребуетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ разрешить\n" +"обработку CTRL-Y из DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "ВСТРОЕÐÐЫЙ 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 "Стандартный вывод добавлен в %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Добавить %.*s и очиÑтить\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "ВмеÑто заданного выполнÑетÑÑ %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Пути поиÑка VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Ðе определён путь поиÑка «vpath»." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u путей поиÑка по «vpath»\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Ðе определён общий (Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Â«VPATH») путь поиÑка." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Общий (Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Â«VPATH») путь поиÑка:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "КоличеÑтво Ñлотов Ñервера заданий ограничено %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "Ñоздание Ñемафора Ñервера заданий: (ошибка %ld: %s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Клиент Ñервера заданий (Ñемафор %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "оÑвобождение Ñемафора Ñервера заданий: (ошибка %ld: %s)" + +#: 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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Команда не найдена\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Командный процеÑÑор не найден" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s приоÑтанавливаетÑÑ Ð½Ð° 30 Ñекунд..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) завершён. Продолжаем.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Предупреждение: Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» находитÑÑ Ð² будущем" + +#~ msgid " terminal." +#~ msgstr " терминал." + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: ошибка Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ€ÐµÑ†ÐµÐ¿Ñ‚Ð° Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s»" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Ошибка 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "Ñоздаю копию Ñервера заданий" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Предупреждение: ПуÑтое перенаправление\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: «%s» command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "ВСТРОЕÐÐЫЙ [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "ВСТРОЕÐÐÐЯ ECHO %s->%s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð²ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° «%s»\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° неизвеÑтна или не поддерживаетÑÑ Ð² .ONESHELL: «%s»\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Ошибка, пуÑÑ‚Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Стандартный ввод перенаправлен из %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Поток ошибок перенаправлен в %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Стандартный вывод перенаправлен в %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Ошибка Ð¿Ð¾Ñ€Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неÑколько ключей --sync-mutex" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неÑколько ключей --jobserver-fds" + +#~ msgid "virtual memory exhausted" +#~ msgstr "закончилаÑÑŒ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¼Ñть" + +#~ msgid "write error" +#~ msgstr "ошибка запиÑи" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "ВСТРОЕÐÐЫЙ RM %s\n" + +#~ msgid "# Invalid value in 'update_status' member!" +#~ msgstr "# Ðеверное значение члена «update_status»!" + +#~ msgid "unknown trace mode '%s'" +#~ msgstr "неизвеÑтный режим траÑÑировки «%s»" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Ошибка 0x%x (игнорирована)" + +#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n" +#~ msgstr "ПрименÑетÑÑ ÑпоÑоб из %s:%lu Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ†ÐµÐ»Ð¸ `%s'.\n" + +#~ msgid "Invoking builtin recipe to update target `%s'.\n" +#~ msgstr "ВыполнÑетÑÑ Ð²Ñтроенный ÑпоÑоб Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ†ÐµÐ»Ð¸ `%s'.\n" + +#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n" +#~ msgstr "%s # буферов strcache: %d (* %d B/buffer = %d B)\n" + +#~ msgid "" +#~ "\n" +#~ "# strcache hash-table stats:\n" +#~ "# " +#~ msgstr "" +#~ "\n" +#~ "# ÑоÑтоÑние хеш-таблицы strcache:\n" +#~ "# " + +#~ msgid "process_easy() failed failed to launch process (e=%ld)\n" +#~ msgstr "process_easy() не Ñмогла запуÑтить процеÑÑ (e=%ld)\n" + +#~ 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 "" +#~ "%sЭто ÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°; подробноÑти об уÑловиÑÑ… раÑпроÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ " +#~ "Ñмотрите\n" +#~ "%sв иÑходном коде. Мы ÐЕ предоÑтавлÑем гарантий; даже гарантий\n" +#~ "%sКОММЕРЧЕСКОЙ ЦЕÐÐОСТИ или ПРИГОДÐОСТИ ДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "излишний `endef'" + +#~ msgid "empty `override' directive" +#~ msgstr "пуÑÑ‚Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° `override'" + +#~ msgid "invalid `override' directive" +#~ msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° `override'" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-предупреждение, поÑле CTRL-Y оÑтанутÑÑ Ñуб-процеÑÑÑ‹.\n" diff --git a/local/recipes/dev/gnu-make/source/po/sr.gmo b/local/recipes/dev/gnu-make/source/po/sr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..ed1121da61d525fe88a6cce1dc3f6aa16d68a317 GIT binary patch literal 59190 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 literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/sr.po b/local/recipes/dev/gnu-make/source/po/sr.po new file mode 100644 index 0000000000..79ce979e4d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/sr.po @@ -0,0 +1,2509 @@ +# Serbian translation for make. +# Copyright © 2020 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# МироÑлав Ðиколић , 2016–2022. +msgid "" +msgstr "" +"Project-Id-Version: make-4.3.90\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-09-25 10:48+0200\n" +"Last-Translator: МироÑлав Ðиколић \n" +"Language-Team: Serbian <(nothing)>\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "покушавам да кориÑтим неподржану функцију: „%s“" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "члан архиве додирника није доÑтупан на ВМС-у" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Ðрхива „%s“ не поÑтоји" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: „%s“ није иÑправна архива" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Члан „%s“ не поÑтоји у „%s“" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: Лош повратни код из „ar_member_touch“ на „%s“" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"Функција „lbr$set_module()“ није уÑпела да извуче податке модула, Ñтање = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "Функција „lbr$ini_control()“ није уÑпела Ñа Ñтањем = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "не могу да отворим библиотеку „%s“ да потражим Ñтање члана %d" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (назив је можда Ñкраћен)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Датум %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " уид = %d, гид = %d, режим = 0%o.\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Рецепт има превише редова (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Прекид.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Члан архиве „%s“ је можда лажан; није обриÑан" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Члан архиве „%s“ је можда лажан; није обриÑан" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Бришем датотеку „%s“" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Бришем датотеку „%s“" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# рецепт за извршавање" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (уграђено):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (од „%s“, %lu. ред):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Директоријуми\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: не могу да добавим податке.\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: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:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (уређај %ld, и-чвор %ld): не могу да отворим.\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (кључ „%s“, м-време %I64u): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (уређај %d, и-чвор [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (уређај %ld, и-чвор %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Ðе" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " датотеке, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "не" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " немогућноÑти" + +#: src/dir.c:1180 +msgid " so far." +msgstr " за Ñада." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " немогућноÑти у %lu директоријума.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "недовршена упута променљиве" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Рецепт је наведен за датотеку „%s“ у %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "Ðашао Ñам рецепт за датотеку „%s“ изричитом претрагом правила," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "али Ñе „%s“ Ñада Ñматра иÑтом датотеком као „%s“." + +#: 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:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "не могу да преименујем једну двотачку „%s“ у две двотачке „%s“" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "не могу да преименујем две двотачке „%s“ у једну двотачку „%s“" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Бришем поÑредничку датотеку „%s“" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Уклањам поÑредничке датотеке...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: ВременÑка ознака је ван опÑега; замењујем „%s“" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ðије мета:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Драгоцена датотека (предуÑлов од „.PRECIOUS“)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Лажна мета (предуÑлов од „.PHONY“)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Мета линије наредби." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# ОÑновно, „MAKEFILES“, или „-include/sinclude makefile“." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Правило изградње" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Претрага по изричитом правилу је обављена." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Претрага по изричитом правилу није обављена." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Изричити/Ñтатички корен шаблона: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Датотека је прелазни предуÑлов." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Време измене није никада проверено." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Датотека не поÑтоји." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Датотека је превише Ñтара." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# ПоÑледња измена „%s“\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Датотека је оÑвежена." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Датотека није оÑвежена." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Рецепт тренутно ради (ОВО ЈЕ ГРЕШКÐ)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Рецепт завиÑноÑти ради (ОВО ЈЕ ГРЕШКÐ)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# УÑпешно је оÑвежена." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Треба да Ñе оÑвежи („-q“ је подешено)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Ðије уÑпела да Ñе оÑвежи." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# ÐеиÑправна вередноÑÑ‚ у члану „command_state“!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Датотеке" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# ÑтатиÑтика хеш-табеле датотека:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Поље „%s“ није у оÑтави: %s" + +#: 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:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "први аргумент за функцију „word“ мора бити број већи од 0" + +#: src/function.c:821 +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:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: „DuplicateHandle(In)“ није уÑпело (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: „DuplicateHandle(Err)“ није уÑпело (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "„CreatePipe()“ није уÑпело (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): „process_init_fd()“ није уÑпело\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Бришем привремену датотеку групе „%s“\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: недоÑтаје назив датотеке" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: превише аргумената" + +# +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: неиÑправна радња датотеке: %s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "недовољан број аргумената (%d) за функцију „%s“" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "није примењено на овој платформи: функција „%s“" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "недовршен позив за функцију „%s“: недоÑтаје „%c“" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Празан назив функције" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "ÐеиÑправан назив функције: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Ðазив функције је предуг: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "ÐеиÑправан најмањи број аргумената (%u) за функцију „%s“" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "ÐеиÑправан највећи број аргумената (%u) за функцију „%s“" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: опција „%s“ је нејаÑна\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: опција „--%s“ не дозвољава аргумент\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: опција „%c%s“ не дозвољава аргумент\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: опција „%s“ захтева аргумент\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: непозната опција „--%s“\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: непозната опција „%c%s“\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: неиÑправна опција -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: неиÑправна опција -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: опција захтева аргумент -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: опција „-W %s“ је нејаÑна\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: опција „-W %s“ не дозвољава аргумент\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Проширујем „%s“\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Процењујем „%s“\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "не могу да доделим %lu бајта за хеш табелу: меморија је потрошена" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Учитавам=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Поново хеширам=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Сукоби=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Тражим изричито правило за „%s“.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Тражим изричито правило члана архиве за „%s“.\n" + +#: 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 "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:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Корен је предуг: „%s%.*s“.\n" + +#: 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:788 +#, c-format +msgid "Trying implicit prerequisite '%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: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/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:552 +msgid " (core dumped)" +msgstr " (језгрени избачај)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (занемарено)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<уграђено>" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] грешка %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Чекам на недовршене поÑлове...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Ðктиван Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ (%s) ПИД %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (удаљено)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "ПочиÑтио Ñам уÑпели Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ ПИД %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "ПочиÑтио Ñам неуÑпели Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ ПИД %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Бришем привремену датотеку групе „%s“\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "ÐиÑам уÑпео да обришем привремену датотеку групе „%s“ (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Уклањам Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ ПИД %s%s из ланца.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Отпуштен прÑтен за Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%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()“ није уÑпела да покрене Ð¿Ñ€Ð¾Ñ†ÐµÑ (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Избројах %d аргумента у неуÑпелом покретању\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Добијен прÑтен за Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: оÑвежавам мету „%s“ уÑлед: %s" + +#: 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:2106 +msgid "cannot enforce load limit: " +msgstr "не могу да Ñпроведем ограничење оптерећења: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "нема више ручки датотеке: не могу да удвоÑтручим Ñтандардни улаз" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "нема више ручки датотеке: не могу да удвоÑтручим Ñтандардни излаз" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "нема више ручки датотеке: не могу да удвоÑтручим Ñтандардну грешку" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Ðе могу да повратим Ñтандардни улаз" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Ðе могу да повратим Ñтандардни излаз" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Ðе могу да повратим Ñтандардну грешку" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: можда је потрошен проÑтор окружења" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "„$SHELL“ је промењена (беше „%s“, Ñада је „%s“)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Правим привремену датотеку групе „%s“\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Садржај датотеке групе:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Садржај датотеке групе:%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 (%d. ред) Лош контекÑÑ‚ шкољке (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "ÐиÑам уÑпео да отворим општу табелу Ñимбола: %s" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "ÐиÑам уÑпео да учитам Ñимбол „%s“ из „%s“: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Празан назив Ñимбола за учитано: „%s“" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Учитавам Ñимбол „%s“ из „%s“\n" + +#: 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“ није подржана на овој платформи" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Опције:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Занемарено зарад ÑаглаÑноÑти.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make БезуÑловно одрађује Ñве мете.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C ДИР, --directory=ДИР\n" +" Прелази у ДИРЕКТОРИЈУМ пре него што било шта " +"уради.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d ИÑпиÑује доÑта података за уклањање грешака.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=ЗÐСТÐВИЦЕ] ИÑпиÑује разне врÑте података за уклањање " +"грешака.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Променљиве окружења превазилазе " +"мејк_датотеке.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E STRING, --eval=ÐИСКРПроцењује ÐИСКУ као изјаву мејк_датотеке.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f ДТТКÐ, --file=ДТТКÐ, --makefile=ДТТКÐ\n" +" Чита ДÐТОТЕКУ као мејк_датотеку.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Приказује ову помоћ и излази.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Занемарује грешке из рецепата.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I ДИР, --include-dir=ДИР\n" +" Тражи у ДИРЕКТОРИЈУМУ укључене мејк_датотеке.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [Бр.], --jobs[=Бр.] Допушта БРОЈ поÑла одједном; беÑконачан број " +"поÑлова без аргумената.\n" + +#: 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:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" +" -l [Бр.], --load-average[=Бр.], --max-load[=Бр.]\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 КориÑти поÑледње м-време између Ñимболичких " +"веза и мете.\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" +" Ðе покреће никакав рецепт; Ñамо их иÑпиÑује.\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 ДТТКÐ, --old-file=ДТТКÐ, --assume-old=ДТТКÐ\n" +" Сматра да је ДÐТОТЕКРврло Ñтара и не одрађује " +"је.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[ВРСТÐ], --output-sync[=ВРСТÐ]\n" +" УÑаглашава излаз паралелних поÑлова ВРСТОМ.\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base ИÑпиÑује унутрашњу базу података мејка.\n" + +#: 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:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr " -r, --no-builtin-rules ИÑкључује уграђена изричита правила.\n" + +#: 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: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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Одзвања рецептима (иÑкључује режим „--" +"silent“).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" ИÑкључује „-k“.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Додирује мете умеÑто да их поново одрађује.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace ИÑпиÑује податке о праћењу.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version ИÑпиÑује издање програма и излази.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory ИÑпиÑује тренутни директоријум.\n" + +#: 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:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W ДТТКÐ, --what-if=ДТТКÐ, --new-file=ДТТКÐ, --assume-new=ДТТКÐ\n" +" Сматра да је ДÐТОТЕКРбеÑконачно нова.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Упозорава када Ñе упућује на неодређену " +"променљиву.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "непозната одредба нивоа прочишћавања „%s“" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "непозната врÑта уÑклађивања излаза „%s“" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Употреба: %s [опције] [мета] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Овај програм је изграђен за „%s“\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Овај програм је изграђен за „%s“ (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Грешке пријавите на \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Добих прекид/изузетак (код = 0x%lx, адреÑа = 0x%p)\n" + +#: src/main.c: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" +"Ðеобрадив филтер изузеткаје позван из програма „%s“\n" +"Код изузетка = %lx\n" +"ЗаÑтавице изузетка = %lx\n" +"ÐдреÑа изузетка = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Повреда приÑтупа: радња пиÑања на адреÑи 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Повреда приÑтупа: радња читања на адреÑи 0x%p\n" + +#: 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:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" +"Претрага путање „нађи_и_подеÑи_шкољку()“ подешава „оÑновну_шкољку“ = %s\n" + +#: 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 "" +"упозорење: поÑлужитељ поÑла није доÑтупан: кориÑтим „-j1“. Додајте + да " +"родитељ одреди правило." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"упозорење: „-j%d“ је приÑиљено у Ñубмејку: поново подешава режим поÑлужитеља " +"поÑла." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Мејк_датотека Ñа Ñтандардног улаза је наведена два пута" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: привремена датотека „%s“: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"упозорење: „-j%d“ је приÑиљено у „makefile“: поново подешава режим " +"поÑлужитеља поÑла." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Паралелни поÑлови (-j) ниÑу подржани на овој платформи." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Враћам на режим једног поÑла (-j1) mode." + +#: 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: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:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Мејк_датотека „%s“ Ñе можда понавља; неђу је поново одрадити.\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: ниÑам уÑпео да учитам" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "ÐиÑам уÑпео поново да одрадим мејк_датотеку „%s“." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "ÐиÑам нашао укључену мејк_датотеку „%s“." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "ÐиÑам нашао мејк_датотеку „%s“" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Ðе могу да Ñе вратим у изворни директоријум" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Поново-извршавам[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "„.DEFAULT_GOAL“ Ñадржи више од једне мете" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Ðема мета" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "ÐиÑу наведене мете и ниÑам нашао мејк_датотеку" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "ОÑвежавам циљне мете...\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"упозорење: Откривен је проблем Ñа чаÑовником. Ваша изградња може бити " +"недовршена." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "Опција „%s%s“ захтева аргумент не-празне ниÑке" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "Опција „-%c“ захтева аргумент позитивног целог броја" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sИзградња за „%s“\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sИзградња за „%s“(%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sДозвола ОЈЛи3+: Гнуова ОЈЛ 3. издање или новије \n" +"%sОво је Ñлободан Ñофтвер: можете Ñлободно да га мењате и раÑподељујете.\n" +"%sÐема ÐИКÐКВЕ ГÐРÐÐЦИЈЕ, у Ñкалду Ñа законом.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# База података мејка, штампана %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# База података мејка је завршена %s\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: 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 "fwrite: привремена датотека „%s“: %s" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "поништавам везу (привремена датотека): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen: привремена датотека „%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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Ðапуштам непознат директоријум\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Улазим у директоријум „%s“\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Ðапуштам директоријум „%s“\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Улазим у непознат директоријум\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Ðапуштам непознат директоријум\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Улазим у директоријум „%s“\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Ðапуштам директоријум „%s“\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"упозорење: Ðе могу да прибавим катанац излаза, иÑкључујем уÑклађивање излаза." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Стајем.\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 "Ðе могу да отворим Ñервер поÑла „%s“: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Ðепознат Ñтил уÑклађивања Ñервера поÑла „%s“" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "Ñтварам Ñпојку поÑла" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "удвоÑтручавам Ñпојку поÑлова" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "почетна Ñпојка поÑлужитеља поÑла" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "неиÑправна „--jobserver-auth“ ниÑка „%s“" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "пишем поÑлужитеља поÑла" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "поÑлужитељ поÑла је угашен" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "п-бира Ñпојку поÑлова" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "читам Ñпојку поÑла" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Читам мејк_датотеку „%s“" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (нема оÑновног циља)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (претражујем путању)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (не марим)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (нема ~ проширења)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "ПреÑкачем УТФ-8 БОМ у мејк_датотеци „%s“\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "ПреÑкачем УТФ-8 БОМ у међумеморији мејк_датотеке\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "неиÑправна ÑинтакÑа у уÑлову" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "рецепт долази пре прве мете" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "недоÑтаје правило пре рецепта" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "недоÑтаје раздвајач (да ли Ñте миÑлили ТÐБУЛÐТОР умеÑто 8 размака?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "недоÑтаје раздвојник" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "недоÑтаје шаблон мете" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "више шаблона мете" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "шаблон мете не Ñадржи „%%“" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "недоÑтаје „endif“" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "празан назив променљиве" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "Ñувишан текÑÑ‚ након директиве „define“" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "недоÑтаје „endef“, неокончано „define“" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "Ñувишан текÑÑ‚ након директиве „endef“" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "Ñувишан текÑÑ‚ након директиве „%s“" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "Ñувишно „%s“" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "Ñамо једно „else“ по уÑлову" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Лоша одредница променљиве Ñпецифичне мети" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "групиÑане мете морају обезбедити рецепт" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "помешана правила изричитог и Ñтатичког шаблона" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "помешана изричита и обична правила" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "мета „%s“ не одговара шаблону мете" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "датотека мете „%s“ има и : и :: уноÑе" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "мета „%s“ је дата више од једном у иÑтом правилу" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "упозорење: препиÑујем рецепт за мету „%s“" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "упозорење: занемарујем Ñтари рецепт за мету „%s“" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** помешана изричита и обична правила: заÑтарела ÑинтакÑа" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "упозорење: препиÑујем чланÑтво групе за мету „%s“" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "упозорење: видех ÐИШТÐÐ’ÐРзнак; оÑтатак реда је занемарен" + +#: 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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s“ је оÑвежено." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "ЧиÑтим датотеку „%s“.\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sÐема правила за одрађивање мете „%s“%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Разматрам датотеку мете „%s“.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Ðедавно Ñам покушао и ниÑам уÑпео да оÑвежим датотеку „%s“.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Датотека „%s“ је већ разматрана.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Још увек оÑвежавам датотеку „%s“.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Завршио Ñам оÑвежавање датотеке „%s“.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Датотека „%s“ не поÑтоји.\n" + +#: 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:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "ГрупиÑани парњак мете „%s“ датотеке „%s“ не поÑтоји.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "КориÑтим оÑновни рецепт за „%s“.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Кружна „%s <— %s“ завиÑноÑÑ‚ је одбачена." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Завршио Ñам предуÑлове датотеке мете „%s“.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "ПреудÑлови од „%s“ Ñу одрађени.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "ОдуÑтајем над датотеком мете „%s“.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Мета „%s“ није поново одрађена због грешака." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "ПредуÑлов „%s“ је Ñамо по поретку за мету „%s“.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "ПреудÑлов „%s“ мете „%s“ не поÑтоји.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "ПредуÑлов „%s“ је новији од мете „%s“.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "ПредуÑлов „%s“ је Ñтарији од мете „%s“.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "Мета „%s“ је двоÑтрука двотачка и нема предуÑлове.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "Ðема рецепта за „%s“ и никакви предуÑлови заправо ниÑу мењани.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Одрађујем „%s“ због заÑтавице увек-одради.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Ðема потребе за поновнм одрађивањем мете „%s“" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; кориÑтим „VPATH“ назив „%s“" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Морам поново да одрадим мету „%s“.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Занемарујем „VPATH“ назив „%s“.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Рецепт од „%s“ је покренут.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "ÐиÑам уÑпео поново да одрадим датотеку мете „%s“.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "УÑпешно Ñам одрадио датотеку мете „%s“.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Датотека мете „%s“ треба поново да Ñе одради под „-q“.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "КориÑтим оÑновне наредбе за „%s“.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Упозорење: Датотека „%s“ има време измене %s Ñек. у будућноÑти" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "„.LIBPATTERNS“ елемент „%s“ није шаблон" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Прилагођени неће извеÑти: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "упозорење:занемарујем предуÑлове на дефиницији правила ÑуфикÑа" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Изричита правила" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Ðема изричитих правила." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u изричита правила, %u (%.1f%%) терминал." + +#: 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 "непознати Ñигнал" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "ОбуÑтави" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Прекини" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Изађи" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "ÐеиÑправна инÑтрукција" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Замка праћења/тачке прекида" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Прекинуто" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "ИОТ замка" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "ЕМТ замка" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Изузетак покретног зареза" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Убијен" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Грешка Ñабирнице" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Грешка Ñегментације" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Лош ÑиÑтемÑки позив" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Оштећена Ñпојка" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Будилник" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Окончан" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "КориÑнички одређени Ñигнал 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "КориÑнички одређени Ñигнал 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "ÐŸÐ¾Ñ‚Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ˜Ðµ напуштен" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "ÐеуÑпех напајања" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "ЗауÑтављен" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "ЗауÑтављен (улаз конзоле)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "ЗауÑтављен (излаз конзоле)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "ЗауÑтављен (Ñигнал)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Прекорачено је временÑко ограничење процеÑора" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Прекорачено је ограничење величине датотеке" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Виртуелни одбројавач је иÑтекао" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Одбројавач профилиÑања је иÑтекао" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Прозор је измењен" + +#: src/signame.c:189 +msgid "Continued" +msgstr "ÐаÑтављен" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Хитни У/И уÑлов" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O је могућ" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "СИГВИÐД" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "СИГФОÐ" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Губитак изворишта" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "ОпаÑан Ñигнал" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Захтев за информацијама" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Ко-процеÑор покретног зареза није доÑтупан" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Ðема међумеморија причуваних ниÑки\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 међумеморије причуваних ниÑки: %lu (%lu) / ниÑке = %lu / Ñмештај = %lu " +"B / проÑек = %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 текућа међумеморија: величина = %hu B / коришћено = %hu B / број = %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 оÑталих коришћених: укупно = %lu B / број = %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 оÑталих Ñлободних: укупно = %lu B / највише = %lu B / најмање = %lu B / " +"проÑек = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s учинковитоÑÑ‚ причуваних ниÑки: тражења = %lu / проÑек погодака = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# ÑтатиÑтика хеш-табеле:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "аутоматÑки" + +#: src/variable.c:1789 +msgid "default" +msgstr "оÑновно" + +#: src/variable.c:1792 +msgid "environment" +msgstr "окружење" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "мејк_датотека" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "окружење под „-e“" + +#: src/variable.c:1801 +msgid "command line" +msgstr "линија наредби" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "директива „override“" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (од „%s“, %lu. ред)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# променљива подешава ÑтатиÑтику хеш табеле:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Променљиве\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# ВредноÑти променљиве према шаблону" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Ðема вредноÑти променљиве према шаблону." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u вредноÑти променљиве према шаблону" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "упозорење: неодређена променљива „%.*s“" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "Функција „sys$search()“ није уÑпела Ñа %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-упозорење, мораћете поново да укључите „КТРЛ-Y“ руковање из ДЦЛ-а.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "ЦД ИЗГРÐДЊЕ „%s“\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "ДЦЛ: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Придодајем излаз на „%s“\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Придодајем „%.*s“ и чиÑтим\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "УмеÑто тога извршавам „%s“\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# „VPATH“ путање претраге\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Ðема „vpath“ путања претраге." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u „vpath“ путање претраге.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Ðема опште (променљиве „VPATH“) путање претраге." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Општа (променљиве „VPATH“) путања претраге:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Подножја поÑлужитеља поÑла Ñу ограничена на %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "правим Ñемафор поÑлужитеља поÑла: (грешка %ld: %s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Клијент поÑлужитеља поÑла (Ñемафор „%s“)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "отпуштам Ñемафор поÑлужитеља поÑла: (грешка %ld: %s)" + +#: 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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Ðема такве наредбе\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: ÐиÑам нашао програм шкољке" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "„%s“ је обуÑтављен за 30 Ñекунде..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "обављено је „Ñпавај(30)“. ÐаÑтављам.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Ðепозната грешка %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Упозорење: Датотека „%s“ има време измене у будућноÑти" + +#~ msgid " terminal." +#~ msgstr " терминал." diff --git a/local/recipes/dev/gnu-make/source/po/stamp-po b/local/recipes/dev/gnu-make/source/po/stamp-po new file mode 100644 index 0000000000..9788f70238 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/stamp-po @@ -0,0 +1 @@ +timestamp diff --git a/local/recipes/dev/gnu-make/source/po/sv.gmo b/local/recipes/dev/gnu-make/source/po/sv.gmo new file mode 100644 index 0000000000000000000000000000000000000000..4c29a091802e25d5447f6b38ca8cb9d2d44d12f0 GIT binary patch literal 48252 zcmb`Q34C2wb?#4SN)l%x2}#HVCxaq6@s(p|a^yHfwq-}LY&n+fBsht=(mj%{bqD1R zvc(W+0&T)jLJOe;0u*9Mfii`-Wu_IOw2v7|d4&g*;g!;sp`}1uXy5-^d!ON6T}ckF z_vh{J40~LA?X}lld!MCmoO<-D1AbpQDhSR6KYdaV9C%U?JnuX`4T4*`-Sb<)OSzu~ zF9zQXo(%pacr5t8!SlgygE{c%o**~{TnmQaW>C)~@O1F^L81nK1YQV!0XzfzH}FL8 zgq1;{Dx3{I4O|EA1aAV@gKq{e0KWmA10HpWE9X40!TojM5cnv#8C2z!egM?{17IEe z8h8yjyebH`gZF{ggMR~7!KYE_t>C?&?mrJIpX+;rpai}W+yed=cq2HlItX3}-VZ9@ zQ!WdFP2e_g0(=Fy5BwRZcI;Ub1byJ|fy3ZuK;?7Z+8}s7I0ZJr{|nv)-gY@{1HT5U zzGq+I@}B~U61)>seZC0}f)`)u%9#O=(|b_;d>9n{z672C{tTq+gWtHy(f?FX{Sktq z|JC3Ma3^>+xEDMXoCVd-_kqg)b)fP&1Re{%AAAb<5wHvVtbhJf@M`XV1uFiP+?)(< z2G0aXK}Z;sK$ZV`|NJrVEbc!8ia-7yg!I90t_uQKC%6I>9c~Ao3f>QjUk`z>LhxyS z|8tP851vjZDc+5s_;8=cdq7w#cpFHU2VVeTiQvD%r-7^JG^HB=F9M$h@+x=%_;m0C zAYBxE6+8<(fzDPvF9yZ0yTP-;J3+PkW#Ad$>p_j9M?vNL*Wd>5KR~)PSa)p@z#>5z z6kop4IVnUlBYPoCDPl4}ebw-w2)#z7s6rg|2U}r|2(MneaGXkK+);UXS)10gX;G&P|xoLMbF2;5d03P{yF;kAb19N zsmE=g%AW@N!Iy(7_j91={!Q?+;7>uNnZB1$aDo34>Stauq24*zWO8aESX?gRpS$ZBTSN3*n;sD?vyRl)&S_ zcYvbbW1#r(??A;nVZiarCh$V;$3WHpw?Umo43RF4&3Z4%>Wzdzk z78IX76Fe5Y6+96f^Y=5L`g0Ccc`pYQ|DB-v_miON^>y%K@TePIy?a2>{RU9uu>@WK z{tl>mz8w_b&Vw2sKL%HVCv9`@*MXwPO`!6*1MCLx29@92LDA=NQ2qTq@X6r0Fptt* z2&z4ofvW#Cpy<8b-`Bz8xc?nc`M(lWyB-52Uq0vYH@3Tey&6>eZvj=#0Z{e63ltq* z4_*nr4^;cU52~I=?Qrcp7Zm>tf@;TeK$Y`m@KW$Ap!nuV!!G{QLDhE~m;>(wmF|t8 z>iHMolfb_NmG5^!_3P<7UA?Xb`?%i?t^n@`F9BZ%J_Yu`kKd|fGYo( z5!VlwfUCLR0U|PkyTGf#4}+q|PeIZB>`|BhI#B&T0Ui%N1a1WX2)qXTC-6G(;@z&C z2oxRf1;sz_@y|aGiVyx3RJ+gI3#u<-oed|E~kJ`<+ck{x;{|-p9il3Uk+*epwc}At_L3lPXd1g_JIEdiod$|I{sM$Uc>!3csclx$1i~AaQ~aPx##DD zqVsN0{r?-wBHD-v^Hc&mD98*aeCXL*UuqZJ@^O0Z{#QAE^4ygUP*d3tj-8GU@ON zP;|Q)w0;1U?lDmP@lW8z;Mr4-{{5ipy$?JKtbnT5y`b862vqrB0hR7&;0Ex#qU)!< zU?2Cd@%LW@)sB<)yZT)Zs$a_B4dC0rE5ILvmw;W#!Lz_*32yXQ^7sI#bRP#*pC5yw%XxRZ zbn8HkuN|Q3aVIExJpvkkf<`Y;`J8%>d%qD>yY_)<_g&yKz*m4O=iT5M@ay0v@T3>H zcI^UH&dWgY-8?u1p7vsNdGOhw@_Q3_9{65R{qQ;P$>3MP^TBU|A$ZhpyZZ~ki@4tm z_JKuE^?Mjpz2?ES;CH~2!83lx(cxlH?d=EEFL!{V_d)Oi@GbuSlOBHpivH)`>-g^m zu$%h|sQNzO@%>;g_g@5W1dqDUwQC4ef87rLEm#K?Z^ui#Tmbd{aZv5~8rTH}FLm{~ z7`%|%K~V9^;F;h(9$yEp=l)Sp;41FNL6vhqcpUgX@L2G}p!)rB@M`dv;PK!U zuWw1Fi-?3Z4Z15LA1A1&Yq6-S6h@HQcug7pVB}1;uCo0EXa+ z54iE!3yRJaQ1zY#MVA+YXMnE&d%?GYPX+%PRQw-+J>b89s^>Ycars>hZs7g^D0)2x zihf@PpA7ySRD1r*zwi137k@LTaeX(a{(dufHTV%wbow_i2X?*I&4(l4W!&EniY|W! zsy^QY)$U^-bn zY8-#pKR@pEF5Z>kl{|kYDE?@Iec(Oddhny5#^HZ}qu?_ia^=4YJcs))fKLPe8N32~ z@*5mqtp`Q-&EQ$!t^U3aiZ1tps^6c2qStr9TfuYR=-M$0>ix&Sr-T0pijFJZ#GDVV z1CIw^1S;MA;4t_DQ1$HlLl^%Q;2Q2f0;(QA0*l~rZ+3L9gC}tR5UBC+c2IosD5&;) z2o!(*7!CI2#W5Hfa2r#fuhUf9=`#e&;8Fqwg0S#oxB?aRnAL5 z@x{kL)#JyY=<@HN`ghGCSC893^=BCrzuW_^0}q3u&yPTj$MfFm%DV|XllwZT`n(iW z`iH?T@Pptf;I};f3wS;EN59R{e*hGJ-U(g=J_w4Q9|J|tpMckb$3NogcLONCxfPUL zc{Qkdz6n%&z69O?9{)!UM?tmkA+R6(6e#{%@pd;)4}coqF96lwzYB`*9t2MY4};y{ zC&4F!KLk$$|II%??j5duYe2o<1gbx81kV8Xf|r6dQ2p`-P;%q5;CbM$K=I!>?{xg! z2cFISFsOF#2Ume_1Gj-+2G0epA(d!4G=yLJ996hQY z9|Sc%9|x}i{}WVxSH9cPa}reh-w3L{e*vmrz6Xl#{|#;j*S^Qm^@ZRu+($cY{jzJ@9Do7oht0SKw9PmG5&{0!62{fa=$8 zff@(rJnH&&19&m_L!ib%9efJ-2q=F20C)oUMeqXfo1ohJr1!h{mw-Lo?*oL@r(~Re%cF)es2S> z0>A6;&-oxa2KTpss^5D-<^Rv%CNTVvYi9veyIu}n2hM{Vz$bm!$${&^Gr8Xbs@@gw zDDX}E_aee)2x|$SBAm?g_k&Y}_&3hQr@7xu8030C;U2=P2sNJlACN8&PUE@(ibj9P z_5UKM{-a?0+vqRKJbO9e4cy=B-=72C#{K8OTL>Q`e2)8<5iaBUufblzUvsVB%N+zC z@%R4L;P3eVUH*@S~U|2?1X)!Y{e z2MGE}rhJs}_k_P8{JD?EW$@30YfWw4m=|SfAJ+A*3;VHx^fV&7c z5wgD%GG*lbHR9KP@AUUQ;4tBQo<19V5!esLzmNOtANmKEdOQJyqU_%_}hB>ak? z-)|Ex=G_7R{%^VeR{}#fcpuMdU_arR{{3~}z1+Xb-*Xu}%=LePSAr)I4imn~{q=;0 z2>ShngWwq6y~JO~@JlY9N!U%ef%gx9Zv<}y`w0J+@H>P{c&6V7;e4)d1tkylyN7#? z`S|w^E(Un^7~$W!ej4~G@Xg>AU>Ep7LN8&0a692iglh7vohiNgyRW^2!BpEop&K&obY_YkaT{RXa&BRu9_o8EL2@BWzkHQ-ypcl&q$8~iJtod$k|Q0MwJ;1*E7SA)+3 zzee~?!k_u)Zw0U9{x#qm2#<38IN`SlMeg5CxSlXbcsgMn&p!%&h@jsr;WKuHeBs%h zTtCad`+acEU!Mm)!^c}G^v~Z8eu3~CJVGT2KI@;q1)L@v&9ko){*bVVpx=vmemCKT zgi{Ge5#ryi{(6tcS#XPg`5@O9a(y#c1+NC@3Ge0l9|<|G^*h?5u3t>pp$q@3@a{+c zy4%Ma;C=_!Yru~a{*vo62^$Ez2yfzqXYU8^^zZb1gzKxpf6-0b?>YYd#~z;qt|If}m^l^WK-63bWzMoJa==UJubh~2B!Lz&kwO~c&T9?-m?jzi- z8-7EC-zB_&bQ=lJA^aKlhd}+#B3wh*=I{TT>#z9h`@lcoKKt9tv*-Hv&((_+7lvKU zuzPkU-ruWoJ{9Vw-n+uTES6_V#qnYztTjtfeU;+(boH*8=;~S-HlkX&Sjm@q zeOyxVsFJJCMB~MY;&?cluNCuSrHG4CGpZ}v=3*@xZ&Yi=sBT4UDUz*TY$;ZX^{J>3 zZqH9gVIkkhhhzDA6jm!?my5bJszkMXDeURqv$KEnhVCT$mD#HIk(crtj4QrN71xv2 zj8}y-wPK|~fmVVd?5Kv5M^uJ2nAokviJvY<28*||omP8dTJ1?_Wz7snT(^*5%F!W? z>Fy>(z;G&GpUO3i*7ZidQFm16s;f=)Mr}MlJ{5&y&54PqrewTmf7%yzmDIPT=E`uj z-WDs9^>Bkd)qS;=pN#zdMq=b=C*!-e3}>R+M737VSH`2huvD#1H)qm}ro>A5hR><1 zi?o}nP3woQLYS{nX0Z}ZZ5SE7b!foy9EnPdsIWl?+biXi#10$Puvw3MCY5T= zm_AqVqi`;+)o8O;A>l-rJFqH@W}`}2oCxWv19|GlJBS3;Vty~pr5V=gDH_xM8yKIe zh79$h+SXGj){QrFIUl_YVORQ0>QnG#DcZZ?xg!Guo1a&sv#RCi)u=_S9zCy8twhhi zeMNizt@k?}%Y{BGkzl44)uKC_#d@(p4ahT`tmaD+Y$9i)mLHE=^YC}BZ}h%%M;yo_ z;hL2~G*N^qxmd*2!|-O_ga@XeUA__~F%l^i!oszP0T?kb3a%a-S5cRI=|Fz2o-0f4 zrN7;k@oJ?|6brzlbD_QFDr_)FqK0qCrf~D%u7ORX!@F)(R!P5ZNFFakxlN1>#x-n` zqzK0%xDOdz6$SE@xyBS1uEGQ1$mp)Y9a~jcgj9zQb*pL*NXTns`$uq2-fArg1#9xE z45zq!2Gin{Rk1Q&Y8E2Z|A=euie(rh z40kihXz-M%V7(ER^&Ap34n*{%kL(!8QQkFRc<<<~I|pu8w$)~1rr99h%J|+5_H-GV zj}UXJR;?7D!}Ml}jbZalZl$PXgEt(T3zd~CY?q2*@S5Z+Rz+OYkl;!GC zqe0(!B8>QKrlV*kH>uv$14R4GG8L9|kc2`!OuHK09BvsL8c^~BQ~5@&II$tVuS5rO z>ha`3zFu#Zqa4re(K1DCs#fa70-{;@i7m$>Nkf!_M#Lx}7gvEX$}Xp)C3`hES%H0# z>hQyOwaj!}94nTJ4KK6`*|@FOZtRz;jpf8~q?SjO*&@9trp{FnRyFEfU#58jX_};$ zD9opB=h}&c$}JR?C`cYGQ{b*BUvRW+8IO*LQ)`YlL16iP9`JiZjSSHJ6D2eXWjOM881X zvB(6q2OFddgGpgQKc5yToyCZjGF1y614uDY5lGb9TO^cx70!{F3|tA zHc%v2`#Y8VPF5GD*Jb-Y+(ql*6UTe&jdyJxLg%V8<4VP8&Pc|PqtC6T+%l5ZRy{7$ zj*>Rkh}`nX)reJ6tmnA86{A=`a%>T0bR(Cfp@@xYljT?YZ`7W~EL*J98ye9lI7UV> zcG{D($_9$prQ){!;_=K{%)hTR%VWq{a&oFg%jiZ6Ogg1aS4?vnZ`M#|8eyV!SYtLz z2k5E?VQ6wdHFOJ^N}jRT-Bs_lXw70l>xaUsa5A})Rwxy^tEwnH@qD(jkDGB*Nt)%E zsIZb-$4cY*TBJLZG0J*X$lOlxtYQ{<+^3wK+_H?UR^{U4lu3dHBW9cixL0sSG?8cc zn(n9^VW+!bq?tUkRJEcfbVIdamB_50c_9G}Cj?TOtM$5@f>`w~cmQMDA}gjMan$;H zl~qu!H@Gki`{Qb?3b*%f8_>+iRL<-c>rJccUhhdJ5SOk*ChFXJpR(DgbrXe&r**%n zT4s^PDoYgex{aQ1j%FhC+sZgK@q>pnm5O?@XY_`_k&u7=;l|xtS6VS!++xkm)y)|V zrhI$nQu|<#lgKhhDQf?j1KJDKCpSP ze{>)%M$uWgNOqK?LQ%Y#T^Y1QtV_Ta@(8S+Y#b|KWMI?qj?MkMZuMzH!=8h;TuoyIr%=cN? zle<$?K+SYy**R5ZwsE}FfrvYA7~bItxKmPDt6z8shp>>|_jZzat~_02?yXTdoy-Sl!xF=B9u zC2WM5F_VT_1^W!cYh2XPT&r~lx<6wGYO_RQ?OkcOY?8=C)x209D^50%!3*D- zYZwoOV?rYH$yp8m3TqDoM>RmM9$1roA62G9#dT>kxepUML}n)6~~w> zu?F{ACKxcqJv)ZOoBMa|>fbSn<&k7EKp~U09$*8YTx2V#AS+fWFN;lAos9@ni->CL z4X-4Kyf%=Rc)tp>PgHQ(CGqz<>2rHHAmam*x8xD!?Comao{=YuiJZ1*3x~Ih5D)*Q zvx#H1=VH7Atum|3z@Al2JV6Sl6t4)nV-pag#MWCdRdC5AmxTRn$#Ly9I41{@BiwEJFWR0%H4yM5}GS=4heXOfc^liO|rMJ?^9}IG`@6)DLHZDZz zDXc(Z@LGh$&vr33jqV!C-O3Agm5fB%KH9u#2%`6f;RyCrU2PuN(!YCXbl=wDe$*T^ zmOP7hG;fAagQS?Y;#F7BJ2beFElt)hJ4QmfOd{KLHO%AYU9b5Eoi&(58L^REZhG?% z`(34`! z?{KzQMLf~deb7!e3*>@ZVPM$PTr4}7+b&y};y?|9?~+MM`C2&~FIC5$6P$!IGg2@YW7*i~7k2GNDN>;ka`(}Bc?}UBE zJraTku>Ve;A8J?pe6+D9Q3r=uiH4gtTT!O6&S|w~TaCd+DXDH?m=0UfPVI5mn?VTk zIz@GeK%I|My*JjX)2x?g*is8NvT`!}YOrbNZnt796%o1!lyQ@l!6v8qjzf9~iNcNs z!X7S*TaEMhwU#Q5)6A+myl-^-PT3bU)zNaFiN#9y6rJP^Hcb^#%VZIz&o>oo<4wAR zbm6tk#dVD>XGWL{3$-degi&CVIz~(+iAaUm;!g;oCNBLx-WKlZDxkl$$90Ws&#+o5 zu?5Jc!UksT)r1XQy_a!%A=ugs_UjQX z<%3NaeXC`d)vT}RDU4F}?}`AK`)J4p=u9wRN^7jSgff-+XY7lO zRZI57hKrO~Q;!BrL~5aCo4T?zpkt`80b6sc+AxQ=W3C8N%*4*kAG<_Mdk+YDD!HF>4AD&yBSs+eH%CCN8! zFIf~@|Fw~Wf> z+G9#Im^K`2VGZgQRI0Pxw8}ywfW)AefG$q9?v6&#!A%EoJg?+B#%NTvx{-c>X129x zD=h}TrhePQZfVxmTD6Ich+oY_@S{}&8YRtdwc^(I7(USiSuvYV~6-eBbO%r7*#a`rZ{DMZq-Dd}k3 zIzyY<8^>uGJw}Q64Ga2WxmivYX>_Gb13g`wz)`kI%1mx$HbRdy&5iMq5$409G>V=& zJ1;X+5@B{SCXGw;~u~;J1lZ zjNW=mM%A(XI+{XMug4UkapnkD1RAWCGw}{B{pM5Erz}d6*cGB-us}NKRdw1%i2A|J z+BTCR=G?ipgm+-|#UgiBgWD6N=U-eoneow*vEzoEXNA^*l}WQbE1W{N1Hoyj8K==F zyF0c`)*82kSA*o8Nlf%i`hiBg`<19!5~U7VN;5#I|I)eGyG&bMv^ zwC+to$XXS7p%Eg@sfKbpgGyH5Ifmx8d3a~j&epVcix-VZJR`RRC*4SA-P9~Lf?X^j zV=c(+3p~l&Qbg>TNU8--wc=i(r!%TVscP%6gdH-{IF53l=(g)R$H6w#fan-@U<)y; zSilVww_TD>xK?cIC^^8iAcpmOsM>Ct$j{P&A}&UtRzBX9jK#yW~D7EdKIVItg&&&fM^6GgIl$|IG~H0 z2X|}^-1$IthT4)(6b(BHwqOPyi6&)raT=fP`3ED@#TgrLyGOU=)`c5~w~N? zBDo{iM3V_1)rVm$87pL57-?ucb=34_NkSziiXr-&tJ3Jn>K>1`Lbb_KBR5_}(KlJ55!*hA z(#&i!%}c&AV_4tVrjqP1b4EQWARVKc#N&-;pN#nw>72V$8M}`VWP=z*`gF58Ds*QI zM_%(x+OuFDv}D;4f$aA3B#)--1d2Z)HmYO8tH)UGO}o{XEt5xUbD|DvE45OU-2IZ{ z+{cMG^wXKmv{$njb;m5?<1RXMcURn=T56%mH`(lTr@_@x!S0I4qDn4Qu6Jv@L$7o` zI#z6C;$0CWuVSV*(=X3Cfy{bBi!PSI?vQe@TZaU-zzO%dO&83$dmXdg9=hx}!LFk$ zrq?)L4%d)w;nTG|Rh8n!L1xSv<9XFp*Q%z)jgRWYM$J^2YLC&T_a!-`^rKac8m1#^ zrbUh`zzr%p=gXNsHlXd@o?=Z?L7T#mSjM*`Mgt8DckUv4&H{4D8e%i&1a?~#v73t= zfIlG3K|AAtJ`}+YBSEN<(yXMcJb@jE6mH)&pwp{bvW^Gr*CZ37cGEMq3eC`U9mKNn zMU{+(0bAaF-%!?YJCEdac*#ypa4-hryiW_XGHYJ8Q-L2xg{=3+c&*R}ZZBm3Ti^Amp2 z-WT@xy{?kk+Exah<%2@g=BYFrG0YqSz;@l^-D5i2I^E28E=K(If-~)94m1auYx|Y~ zX&VLX@9}j;q+>hQkC}TrkCC6yZlv{lx{I|)Bqs;5+g*!9lo5F%8*ieZPUBz$ZAdNJ zF;UgTK1P(Y&{%_g-)kcRs=El~B4_d-z3z-4?s1}P#yjVV&p9fz!eX z)_s|!11`QN+PF|5b*MUfzUfg4y);Feh z9BexlSbVVv^C_Wbj`Zwl+*DDkB^w&DCPvLNTAydOp_5hjYubX5?Sw@6HOB^qhRCb1VtB4gP& zFLyw3A%`rIS-TD1&l5>*w&SVECz-@C{zDxYTVI;Vh7V_RS|=!t)h?n__xX7--IMUz z3e%8%;#aVk8Ys+k9D+-{r$I?R zklB)UZ&n1cW)j2$y4%T%Rd5O;1bZn11zWclH!abM6Wz(ZDOdi(C(rb8j`axnpJ(SM ziJUyqmu&^NQ_RLzINHCFW-%?g6WZ%ocA_uVpSdzg>6PzzH+Pv0YLYG3z!t$WCqY&3 zdXRi#(3*ces8sm}#ZhEU6xyD3#Pox$8Pl9*R3;BBrJD8qzSa{;z<$>giVuU6ppruZ za3*Y=S}hnz4Egc$OlELo<98YY3lf-3Np^_ts8o--bs(jM$DO$Jvv8~G?`M1&!e|#pRxfiCA5`OTOv=gJE5`ew?>*Y>$O>~mkGP_VLy z(`-*o{?@f=uIeX?*)~y^ieq;8z$(IIz)lC>g~$74eirB|1lU!|19oN*o^}FAEpoJAA>}gdmb;8=e zX?+n7-j?Y`-<5~$x(tgauXJ)6v76j7^HZXTC)UQmowo6MVn*3b4hgv0`}0bDe9xh? zFkyW2Wei~YJr=PR2?F>P7tu9DY6Hh3DIT=w-1)kG9?s)ARfD@ zuD0O7fJv|5FCgr`v|Buaav_!2DL)9dObh*?K-JjvbU$3`Q^lF~Et9m~nMBJqF&2G3 zo^%;$1b!31w%{|Q$y7}CH)qC47}r^=0(KtI80(j>-KR-bntu;NC!RR9FxWRyNG6LF z9pd+en`4cH&3*hfXw|#$5X{1Y7A735bVz3h%lv8rjYkTJJ8YJ8o4Ze@<(;*vZ1TCm zLT-=yc8-y(?Zhj3FYmo(?TTHI%-Ol^bv|UvZN#XZ8|A2QyHR_^&f(lHJ~Yu`q@2Ey z>kHRjwsvi9&1Jc@SB96Z>$`I8rI)R}?6MX5KqrTxu~J9qRcjploj=T7xVwOq<8W_y z?PQgMbd~Fy{y}d&x{g$wgTMfn8;$aO8Z>f1M|Y>fYa27U`t0>uAXIC;cGD7_uN7uj zZ0EFQ+O##jm*J8F;lyXnqX`ys~h%?%OYX$b8g*x%&L!>Dl>* zC;2umejOWHwOnPRfNwZsFEydu)YLg|S}IQFV>dPB`NPuDYks1b*3>CKHBpItG2vEJ z>NY+yEmfJKt&lA&e`|WYMKOw#^~U_eB{n{-z?>eDsTjk?UC%^>zcjP6gYIHLk7^T|F` zTwwZUSqfRy?MFgKYjCF1jGTMCuNy~PThXw>n+_-7bgfflaD=3M>XZ1fu^O`yw~s$? zgdk5g$R@Ir1$Du5|JjRuXw&M}hMs|U{I@f!Ii5ag%m4ISnmRHnPRBPfE%`GQP+JaI zAkAlH7@&M*(2`xFHvjO%M1B6@>8Lh^UC3o?ZfD7OzNZ!y!k_%Ep>&JsX0aLj$=<(?F**T!Ss<%icB(fs)3ou`6b=pY#rW}`PM%i z5jVrtOvgn=AqUtrD#HmDZ44bzmKl@zSw`(89N`QOxlf(r8n+-e<{xe}Jf~J!f0gGC zl{^&?$tlcjyW!Je^(PFu*H_Rjo%H(e3mE1QjKn%0%n+!KxFyt};t_ z!`TS;<0gZVGhMAAOvwkihku!*C7Z%+{iFRu!&~*`dZHt5@DG=9o3L@N5l%aa&qfZz z(cu z$%Ao8sF)e7}SzoPO6=FglYL zR&gdt4FWvkkQM!D;@O?SE7lpX@N8uoS&E!SmZV)_zHvIb##zp7#>iY{T8?orK;{t) z416(;I(t@nGF?ttc^lZv^r)Y5@uB0Iy@U&$!Ade5Ay=_7CP|wr1v2Pqws+&F;>E{^ zI*b9Ix*gF2w5;WP>12dU)|ZY_XI$x6?io)yx^H!)vrPLpMvUxf<_}KuBU#Jg6w5%) z(AXsc*2}DA-RRWNYasq~#*Yrpr|Q#C#1VE0cRGoDFH?2q3i4S}w*T5*b+#8v`{xfk zVIo#UE*A?`lX_yz)&XEnbwp1MMY%Q6bsR_c%TP8RB{5-rQb&y?JnAIWU>>1gI9lOMul8d-|qn92Lx{-?a{ z?3_O|hHTysRn+~O_mQ^+1elsqk|1*)*|4KBchtfij#?FU{r{K0oo&)st!;jeaGk-9 zh3Ph9$Sf&1g%)2sDisSv3j_MW&Eq3r!3Bf6jOIvpP3H0Xzz4+e6FrSCC0d&}R~22G zmvFa}aHv>XrxM5lvG12RF8LDfc04WMA4dc}godTPX%ALlrl2=sEehe(M3{Ryw1nTC zMZ|OaqAwQA>=wmJm9DTWK^XU&e=!Zhk(KpVcGN84erLxV&DU(C=`AdxUTQ8NOPdU( zR<=;uyHr}j5lQXliLxM9@(QEMhwOQunFn2|C$e@IPa zU(B_&EnYpEW`U~|J)Mh5K9fzI_*863*CIbH*TKY>kEkB6M|H+eK7y-d72un{L{y{4 zV)30*pZYYS#T%sXCDE6R40FsgJSm?|*p8fO3Wh{)V0(lOLPhjv-JF{r?#;u`h^g+h zt5UFGhpm7$jNQrU5_d9AD9ocM^i*;!FM zC;QPLIo)iiR(V?3r5)Oe%rmjepN<}XmWm=q^ApMZ;h7oMN{G;woMU%BNRW)PAD?I2 z%O!HFXlBP;#Iz=*jf>RRPsewQ=G7NwUZH@xiP@?>D5Vef>11T3RfE#qP+Dyclt@xi zEXuLPuFYJx;C;NxmsNDKkjq97yc;0TtY{rQ#7@S*DjS`2eLP*5-xi#%X*$6r&=xdk zn{%XAme6bYPC&;dkH9mKW)&L%Hnoh+AEH0o<&aIs3)}-8dCElI1h8B@OFJJynBz;) zw9IGTFOV~o#GZlV@W(0NE(RXBW3y!JsfV32EP8ymfp};$cP{5HD9I~v800eZb?A^= zQWtX?l%!AH2HE(AJMAC?t@ZLs4~)u)9B*KO7D+T8I~972(tO3Fhf>wp(?-`Kg?2#> zu~8@63|UoKfAZam&(XPUNhA2jPDGl1<6>aE$Lg7CJ)w-rtZ!9RQj`AKv0Am!SRETb zk!4yFVYYKtP#hLGUqYCIV}IYqm3R}Hf4E$Mdl#u-{CctKjTQ@aPqu^#lh~7S zF~m63ZYdHLhnzku zJ0TnQN9KWOvspew?ulA4-fWQk?d24j1{w~Hs~xMQY2nb}MnA=b5g5|2g9TFhQ8{)$rJ)lqmjXGCeF&LYISELutmwMOZbOV6Pk(K?INPGGx?!BG=P+T}?2T~S&l#;6 zW-&U(rFBx6?vfj$Q5atDr8`2OxH7Hp$}l8z$HEwcX4aO}s(LFMEs%|fk5Vj)JxjSU zGAm75rfI>{0Tmg)12d)h!#bLWlu(fcy`_1kY5EY<8W+uxB6>K7{UF0Kt3 z=jAAV#HlGXUpU*=1DtF&M@Ni1nY34h&YclznPyy`Fs)WNMdbMy;p{9NX82&XbW8h; zyCdli8d$9!k7OE{qD&d&%qqu-PL#+Nk4HK0@hCIyjQO12U}~pZA1!o#By&k`qGegC z`NL%#pUJ!_l|M48D!O{?;s{}g8Al53R9;qXc}cBSI=+=f4`CzPWmc^D8lI4xqQqj` zxxdJ@nNxymy_E!?NH8+hs00|FD6Vdc5Y8%bE|ouyGXF5!YV2M&O*-4ArQ1P;!<=WN zPRY!+xJt;j7J|C6I0VN2d4$bt_ z4Cgj*^q$u)HOBmy^|GSWq-r``U<-^6oxCU6ED)>jSr0 zWgU#LSY@auOxEf}X~A12I&+~k6cxntbyM-=M2SNyCAm<_X$U)I%b6OWF<%`9+u~J% zn;z&EclwXoQ+%KqXj0RbagfgvHjW-9_r?(Qv zi?!({yaRK_mJsdNd%sI{-ptIv`MrVmnwUGC>{S0x$au;6TpN(opG3HoLa<7B8D-S1 zog=nbiO>>sy!nXo-xj-IifS#6LO7cf%s+tght4aTyr$k(=`H3_<)CX6Y|E^;&9?32 zQDT47hRE`fIIg~IMjQxhk3%23L4mF{gJw1fJGk>fxO=j1alEUh76sgnfy-gjh_mT+ zCM^CWn$m$}P=E^)cTEybkR{=)RIO95C9a#c)`P&dRfqT1 z!jK`ln>0L6FNp65>VQguIKN;MBbz6r95(?sB z$v=XwZ2~`z_qv$wETkA4CV~VnK9hFJ9#V=EgS!tHd5wzDU^Tq{R851<#1Zzhk zZN(R`JPmTDiq6G3Kj!qznqPHlBUWn<_s>cRD#)c2vx1kIaw?Vc<7!w>-AXz$2_u1)WW%6d9=Lx62F*$rSo$)@U)7G)?DStL=LSFEofLS`Q zvxvGZj}UPflyQwb#NU~cY-BIB;(57~BdRTP9MNDy1eLATArevwm+IS zGK#lsKop{B`J~eEI0+PqVy${}$Y0J!7ssMf!=xyWZ?ZbD`be+~YjJdY>Z9~<#J~PseAhxkw%50g$ z+x>xx3}CrR3aM=Jft{+gC{hpG{SKC7`e1?I0Uwe8!9S zWW@m!9=mmsn|ly7@IqWQN*<){`cG1!WiQD|%M5ij_$owe@1t0XB8?Wwq_sH8$Mg`} zPcrjjYu&6;a=>AS5nBqiwIjuKSoGMsSCO4z#wIy6(S)ou)~@0%(-Ong+t13jZ_2o- z2XUoar7n57`n#IZYSa!>#<;I!4&4>l4=Vj#N_=RFGjc+T>>JlG(shLtIN-SP?%cO0|7EbF+GQQMCBzh5PR;^aU&vKcz z*DSM{9J|>vV}rIMIhlqXg(V9M_F!YA!)5JLv~PyZ{2hBdb-bnCoQ?|n^Kt*VJJi_=y$buhBqJbFnZi|ym-dCttxonpkggGojimQi7y!y=_w9ThngYGYgN zs+Ly-Yhh>Aa<_EY=w#7VlxoafP9a& zIU(b0HdRQ}zgVf1LnF@7I&IMSIOcT<_rA!Se5A3#4fy|J?6|4XzP!qrH?j_ri^bP+ zk>jstWWQm@9AdPtv;1zXOodd6`s|L+`!IZwG5lFFQ^;FKp6V?>Wj4nrS8YDa^pY=Y z8*}>JfnDUvq<37FzF=%{baH}2Uak+MUZHMlK3Q0x^IL{7My6Cdi=LU+wezg~1(`E& zUo%8swNB2~Zl_#MoBuLtE$(1UCl!bmF32F!ved9dnMi~Ho##qzt$Mp@U2U|5opWiH zOj^US$9(#Tu829?I4KzOa;h1kF^G;8*F5Mr2tj6 zQkCVvWCQ{Wi%=!8u7!JTFSuI6Gn%sWe$jj^KCCo59zN09pRA3a&?}upNM=rJnS|mN z(;YrbGKg1LWaM@~+SKe$aXYCKWa^2Jr#a)Hg(R1$GA-Hp)3JU@KJKU^spD@xq(dl$ z`BY;&&vw>Yw8K4a(@K96D!UVCqt*mjddQ8OC) zBlRio`YLay6ulwJR3jVKPOhW}RT6J&_36ML#&f%y?42PBII?7h1Ur%>t<7>ux+Bnf z+45yO3V)lJ9CXms7Mn(%%o!<^O_qmfY4Bm1&NV@PyHMop+r6wHiwknooXuQL!o@F^ z%BVwhmrth>(u`12SsXSRw&{mJ&et2URY!sz{|QN>mx+p;DQaY57U3guI;uG9owg-8 zc#H9oF_c-ulBA7liTUCQq?8)qtm7^tKWxxm0~4byTS73Qw{qJ%_b~#(v*zNud!!VT zlAN^A|t? zM;Kq{d?ysW)!Q4IiknJ3k#)oNw%VUvP8%}4C={@%2+)hV(j9uq&Z%KBqeJTgr)-m{?=P(Uu= z0M%7SCnr{9(Dhb>HurA}DAeNqt^F;UiZhlw4J$50)!;lpA@2vXxXeufiOV;P1Wn^k z>SmI!%^O_XyCSWS7)W$#F|=!LIzL*XOpgg$ zE>^#VC3V;{%*>eaAwzcn1rhH*=j9u*Mm{TaRUnJCp~ZtDO}{rFO~Q zX$YbI;pUEBZcn`Y=u4A&W3S}1_=ZzOVjKCp^Mi}&R-Y$mfZHICw?K3p+pD0)dPS%& zZQ1jc-)M_H-7OeC{yl8Z!RTnAw>zh=Xpv7c%W?sHuewzs3FLkov%3nF9HM4Y*Cz=0F)qzAhdgh_xnMQTg8 zC(>s!3qTn#+~*8mJYOPS<8vZ*7%-ua>w9B0KO4qLQcok^zg|7? z%Y7I>o;H$Fle1k(&H;niEn>rMI#X%#eR_Y>+*7C{P*}#N8#s2;VR|Pzut{);N?*(I z_XPOx&6FA~vwG9qoYy@WDD-zV=q8~ZSict zDf~>A!e@MWmO8BA>`m;Iqs?%WsSu9&a`+$A-z`c=v&wHz#j}ANDe)fu(JoLWC5idy zv&Dn^nmt~4IOcB?u$_{rZ!#M!lD*zzp9xVn+v#J7G;vDX&{iO^WRc5IGvGmg^V>I+ z9+ic=FC~z<3S^@ImDviYWGK<, 1996-2002. +# Christer Andersson , 2007. +# Göran Uddeborg , 2011, 2013, 2014, 2016, 2019, 2020, 2022. +# +# $Id: make.po,v 1.34 2022-10-25 08:53:05+02 göran Exp $ +msgid "" +msgstr "" +"Project-Id-Version: 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-25 08:52+0200\n" +"Last-Translator: Göran Uddeborg \n" +"Language-Team: Swedish \n" +"Language: sv\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" + +#: 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: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:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "nudda: Arkivet â€%s†finns inte" + +#: 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:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "nudda: medlemmen â€%s†finns inte i â€%sâ€" + +#: 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â€" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"lbr$set_module() misslyckades med att extrahera modulinformation, status = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() misslyckades och gav status = %d" + +#: src/arscan.c:261 +#, c-format +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: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:996 +msgid " (name might be truncated)" +msgstr " (namnet kan vara avkortat)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Datum %s" + +#: 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:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Receptet har för mÃ¥nga rader (gräns %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Avbrott.\n" + +#: 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:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Arkivmedlemmen â€%s†kan vara felaktig; ej borttagen" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Tar bort filen â€%sâ€" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Tar bort filen â€%sâ€" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# recept att utföra" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (inbyggd):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (frÃ¥n â€%sâ€, rad %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Kataloger\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: kunde inte ta status.\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: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: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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (nyckel %s, mtid %s): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (enhet %ld, inod %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Inga" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " filer, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "inga" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " omöjligheter" + +#: src/dir.c:1180 +msgid " so far." +msgstr " hittills." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " omöjligheter i %lu kataloger.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "oavslutad variabelreferens" + +#: 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: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: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: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: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: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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Tar bort mellanfilen â€%sâ€" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Tar bort mellanfiler …\n" + +#: 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: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:1089 +msgid "# Not a target:" +msgstr "# Inte ett mÃ¥l:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Värdefull fil (nödvändig för .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# LÃ¥tsasmÃ¥l (nödvändig för .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# KommandoradsmÃ¥l." + +#: 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:1102 +msgid "# Builtin rule" +msgstr "# Inbyggd regel" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Implicit regelsökning har genomförts." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Implicit regelsökning har inte genomförts." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Implicit/statisk mönsterstam: â€%sâ€\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Filen är ett övergÃ¥ende beroende." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Ändringstiden har inte kontrollerats." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Filen finns inte." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Filen är mycket gammal." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Senast ändrad %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Filen har uppdaterats." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Filen har inte uppdaterats." + +#: 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:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Beroenderecept körs (DETTA ÄR ETT FEL)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Uppdateringen lyckades." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Behöver uppdateras (-q har angivits)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Uppdateringen misslyckades." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ogiltigt värde i medlemmen â€command_stateâ€!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Filer" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# statistik för filhashtabell:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Fältet â€%s†cachas inte: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: tomt värde" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: â€%s†utanför intervallet" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "felaktigt första argument till funktionen â€wordâ€" + +#: src/function.c: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:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "felaktigt första argument till funktionen â€wordlistâ€" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "felaktigt andra argument till funktionen â€wordlistâ€" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "icke-numeriskt första argument till funktionen â€intcmpâ€" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "icke-numeriskt andra argument till funktionen â€intcmpâ€" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) misslyckades (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Fel) misslyckades (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() misslyckades (e=%lu)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Städar bort tillfällig satsfil %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: filnamn saknas" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "öppna: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "skriv: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "stäng: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: för mÃ¥nga argument" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "läs: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: felaktig filÃ¥tgärd: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "otillräckligt antal argument (%u) till funktionen â€%sâ€" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "ej implementerat pÃ¥ denna plattform: funktionen â€%sâ€" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "oavslutat funktionsanrop â€%sâ€: â€%c†saknas" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Tomt funktionsnamn" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Felaktigt funktionsnamn: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Funktionsnamnet är för lÃ¥ngt: %s" + +#: 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:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Felaktigt största antal argument (%u) till funktionen â€%sâ€" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: flaggan â€%s†är tvetydig\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: flaggan â€--%s†tar inget argument\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: flaggan â€%c%s†tar inget argument\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: flaggan â€%s†kräver ett argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: okänd flagga â€--%sâ€\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: okänd flagga â€%c%sâ€\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: otillÃ¥ten flagga -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ogiltig flagga -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: flaggan kräver ett argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: flaggan â€-W %s†är tvetydig\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: flaggan â€-W %s†tar inget argument\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Expanderar â€%sâ€\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Evaluerar â€%sâ€\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "kan inte allokera %lu byte för hashtabell: minnet slut" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Fyllnadsgrad=%lu/%lu=%.0f %%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Omhash=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Kollisioner=%lu/%lu=%.0f %%" + +#: 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: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:61 +#, c-format +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:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Undviker rekursion orsakad av implicit regel för regeln â€%sâ€.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Försöker hÃ¥rdare.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Prövar mönsterregeln â€%s†med stammen â€%.*sâ€.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stammen är för lÃ¥ng: â€%s%.*sâ€.\n" + +#: 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:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Prövar den implicita förutsättningen â€%sâ€.\n" + +#: 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 "Looking for a rule with explicit file '%s'.\n" +msgstr "Letar efter en regel med den explicita filen â€%sâ€.\n" + +#: 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/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/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:557 +msgid " (ignored)" +msgstr " (ignoreras)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Fel %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Inväntar oavslutade jobb..." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (fjärr)" + +#: 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: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:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Städar bort tillfällig satsfil %s\n" + +#: 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: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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Frigjorde symbol för barnprocessen %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() misslyckades med processtart (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Räknade till %d argument vid misslyckad start\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Erhöll symbol för barnprocessen %p (%s).\n" + +#: 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: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:2106 +msgid "cannot enforce load limit: " +msgstr "kan inte upprätthÃ¥lla lastbegränsning: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "inga fler filhandtag: kunde inte duplicera standard in" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "inga fler filhandtag: kunde inte duplicera standard ut" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "inga fler filhandtag: kunde inte duplicera standard fel" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Kunde inte Ã¥terställa standard in" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Kunde inte Ã¥terställa standard ut" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Kunde inte Ã¥terställa standard fel" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: miljöutrymmet kanske är slut" + +#: 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:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Skapar tillfällig satsfil %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"SatsfilinnehÃ¥ll:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"SatsfilinnehÃ¥ll:%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 (rad %d) Felaktigt skalsammanhang (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Misslyckades att öppna den globala symboltabellen: %s" + +#: 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: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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Tomt symbolnamn för laddning: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Laddar symbol %s frÃ¥n %s\n" + +#: 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" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Flaggor:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignoreras av kompatibilitetsskäl.\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C KATALOG, --directory=KATALOG\n" +" Byt katalog till KATALOG innan nÃ¥got görs.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d Skriv ut massor av felsökningsinformation.\n" + +#: 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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Miljövariabler Ã¥sidosätter makefiler.\n" + +#: 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:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FIL, --file=FIL, --makefile=FIL\n" +" Använd FIL som makefil.\n" + +#: 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:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignorera fel frÃ¥n recept.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I KATALOG, --include-dir=KATALOG\n" +" Genomsök KATALOG efter inkluderade makefiler.\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] TillÃ¥t N samtidiga jobb; oändligt mÃ¥nga om " +"inget antal anges.\n" + +#: 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: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" +" PÃ¥börja fler jobb endast om lasten understiger " +"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 Använd den senaste av mtiderna för symboliska " +"länkar eller mÃ¥l.\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" +" Kör inte nÃ¥got recept, skriv bara ut dem.\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 FIL, --old-file=FIL, --assume-old=FIL\n" +" Betrakta FIL som mycket gammal och Ã¥terskapa " +"den inte.\n" + +#: 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" +" Synkronisera utmatningen av parallella jobb\n" +" enligt TYP.\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Kör inga recept; slutstatus visar om det är " +"aktuellt.\n" + +#: 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: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: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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Skriv recept (avaktivera --silent-läge).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Stäng av -k.\n" + +#: 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:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Skriv spÃ¥rningsinformation.\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Skriv ut aktuell katalog.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Stäng av -w, även om det är implicit " +"pÃ¥slaget.\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 FIL, --what-if=FIL, --new-file=FIL, --assume-new=FIL\n" +" Betrakta FIL som hur ny som helst.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Varna vid användning av en odefinierad " +"variabel.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "okänd felsökningsnivÃ¥ â€%s†angiven" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "okänd typ av utmatningssynkronisering â€%sâ€" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Användning: %s [flaggor] [mÃ¥l] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Detta program byggdes för %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Detta program byggdes för %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Anmäl fel till .\n" +"Skicka synpunkter pÃ¥ översättningen till .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Avbrott/Undantag fÃ¥ngat (kod = 0x%lx, adress = 0x%p)\n" + +#: src/main.c: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" +"Ett ohanterat undantagsfilter anropades frÃ¥n programmet %s\n" +"Undantagskod = %lx\n" +"Undantagsflaggor = %lx\n" +"Undantagsadress = 0x%p\n" + +#: 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: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: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: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: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." +msgstr "" +"varning: jobbserver otillgänglig: använder -j1. Lägg till â€+†i " +"föräldraregeln." + +#: 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:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefil frÃ¥n standard in angavs dubbelt" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: temporärfilen %s: %s" + +#: 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: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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Ã…terställer till enkeljobbsläge (-j1)." + +#: 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: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:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefilen â€%s†kan loopa; Ã¥terskapas inte.\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: 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:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Den inkluderade makefilen â€%s†fanns inte." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefilen â€%s†fanns inte" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Kunde inte Ã¥tergÃ¥ till ursprungskatalogen" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Utför pÃ¥ nytt[%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Inga mÃ¥l" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Uppdaterar slutmÃ¥l...\n" + +#: 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: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: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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sByggt för %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sByggt för %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicens GPLv3+: GNU GPL version 3 eller senare \n" +"%sDetta är fri programvara. du fÃ¥r lov att ändra och vidaredistribuera den.\n" +"%sDet finns INGEN GARANTI, sÃ¥ lÃ¥ngt lagen tillÃ¥ter.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Make-databas, utskriven %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Färdigställde Make-databas %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s värde %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s värde %s: inte en katalog" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "använder standardtemporärkatalogen â€%sâ€" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "skapa temporärfilen %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "avlänka temporärfilen %s: %s" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Lämnar en okänd katalog\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: GÃ¥r till katalogen â€%sâ€\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Lämnar katalogen â€%sâ€\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Lämnar en okänd katalog\n" + +#: 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:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Lämnar katalogen â€%sâ€\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"varning: Kan inte fÃ¥ utmatningslÃ¥s, avaktiverar utmatningssynkronisering." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Stannar.\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 "Det gÃ¥r inte att öppna jobbservern %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Okänd autentiseringsstil för jobbservern â€%sâ€" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "skapar jobbrör" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duplicerar jobbrör" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "iordningställer rör till jobbserver" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "felaktig sträng --jobserver-auth â€%sâ€" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "skriver till jobbserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "jobbservern stängdes ner" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect jobbrör" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "läser frÃ¥n jobbledning" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Läser makefilen â€%sâ€" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (inget standardmÃ¥l)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (sökväg)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (oviktigt)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (ingen ~-expansion)" + +#: 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: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:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "ogiltig syntax i villkorssats" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "recept inleds före första mÃ¥let" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "regel saknas före recept" + +#: 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:1156 +#, c-format +msgid "missing separator" +msgstr "separator saknas" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "mÃ¥lmönster saknas" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "flera mÃ¥lmönster" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "mÃ¥lmönstret innehÃ¥ller inget â€%%â€" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "â€endif†saknas" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "tomt variabelnamn" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "överflödig text efter direktivet â€defineâ€" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "â€endef†saknas, oavslutad â€defineâ€" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "överflödig text efter direktivet â€endefâ€" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "överflödig text efter direktivet â€%sâ€" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "överflödigt â€%sâ€" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "endast ett â€else†per villkor" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Felformad mÃ¥lberoende variabeldefinition" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "grupperade mÃ¥l mÃ¥ste tillhandahÃ¥lla ett recept" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "blandade implicita regler och statiska mönsterregler" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "blandade implicita regler och normala regler" + +#: 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: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: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:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "varning: Ã¥sidosätter recept för mÃ¥let â€%sâ€" + +#: 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: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:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "varning: Ã¥sidosätter gruppmedlemskap för mÃ¥let â€%sâ€" + +#: 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: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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "â€%s†är aktuell." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Beskär filen â€%sâ€.\n" + +#: 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: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:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Överväger mÃ¥lfilen â€%sâ€.\n" + +#: 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Filen â€%s†har redan övervägts.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Uppdaterar fortfarande filen â€%sâ€.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Slutförde uppdaterandet av filen â€%sâ€.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Filen â€%s†finns inte.\n" + +#: 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:538 +#, c-format +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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Använder standardrecept för â€%sâ€.\n" + +#: 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: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:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Förutsättningarna för â€%s†skapas.\n" + +#: 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:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "MÃ¥let â€%s†återskapades inte pÃ¥ grund av fel." + +#: 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: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: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: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: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: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: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:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Inget behov att Ã¥terskapa mÃ¥let â€%sâ€" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; använder VPATH-namnet â€%sâ€" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "MÃ¥ste Ã¥terskapa mÃ¥let â€%sâ€.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Bortser frÃ¥n VPATH-namnet â€%sâ€.\n" + +#: 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:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Misslyckades med att Ã¥terskapa mÃ¥lfilen â€%sâ€.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Ã…terskapade mÃ¥lfilen â€%sâ€.\n" + +#: 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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Använder standardkommandon för â€%sâ€.\n" + +#: 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:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS-elementet â€%s†är inte ett mönster" + +#: 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:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "varning: ignorerar förutsättningar i suffixregeldefinition" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Implicita regler" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Inga implicita regler." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u implicita regler, %u (%.1f %%) slutliga." + +#: 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" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Avringd" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Avbrott" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Avslutad" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "OtillÃ¥ten instruktion" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "SpÃ¥rningsfälla" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Avbruten" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IO-fälla" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Emulatorfälla" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Flyttalsundantag" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Dödad" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Bussfel" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Segmenteringsfel" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Felaktigt systemanrop" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Ledningsbrott" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarmklocka" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Avslutad" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Användarsignal 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Användarsignal 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Barn avslutades" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Strömavbrott" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Stoppades" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Stoppades (tty-läsning)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Stoppades (tty-utskrift)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Stoppades (signal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU-tidsgräns överskreds" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Filstorleksgräns överskreds" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtuellt tidur löpte ut" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Profileringstidur löpte ut" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Fönster ändrat" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Fortsatte" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "BrÃ¥dskande I/O-läge" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O-tillfälle" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Miste resurs" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Farosignal" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Informationsbegäran" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Flyttalsprocessor inte tillgänglig" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Inga strcache-buffertar\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 strcache-buffertar: totalt = %lu (%lu) / strängar = %lu / lagring = %lu " +"B / snitt = %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 aktuell buf: storlek = %hu B / använt = %hu B / antal = %hu / snitt = %u " +"B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s annat använt: totalt = %lu B / antal = %lu / snitt = %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 annat ledigt: totalt = %lu B / max = %lu B / min = %lu B / snitt = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache-prestanda: uppslagningar = %lu / träffsäkerhet = %lu %%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# statistik för hashtabell:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatisk" + +#: src/variable.c:1789 +msgid "default" +msgstr "normal" + +#: src/variable.c:1792 +msgid "environment" +msgstr "miljö" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefil" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "miljö enligt -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "kommandorad" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "â€overrideâ€-direktiv" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (frÃ¥n â€%sâ€, rad %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# statistik för variabelmängd-hashtabell:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabler\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Mönsterspecifika variabelvärden" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Inga mönsterspecifika variabelvärden." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u mönsterspecifika variabelvärden" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "varning: odefinierad variabel â€%.*sâ€" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() misslyckades med %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-varning, CTRL-Y-hantering kanske behöver Ã¥terställas frÃ¥n DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "INBYGGT 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 "Lägg till utdata till %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Lägg till %.*s och rensa upp\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Utför %s i stället\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH-sökvägar\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Inga â€vpathâ€-sökvägar." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u â€vpathâ€-sökvägar.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Ingen allmän sökväg (enligt â€VPATHâ€-variabeln)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Allmän sökväg (enligt â€VPATHâ€-variabeln):\n" +"# " + +#: 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:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "skapar jobbserversemafor: (Fel %ld: %s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Jobbserverklient (semafor %s)\n" + +#: 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: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/local/recipes/dev/gnu-make/source/po/tr.gmo b/local/recipes/dev/gnu-make/source/po/tr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..7e8cf06e27aaac8c690340947a6f981c670978be GIT binary patch literal 17599 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 P&UTw6DJypcB6<6NLl{gj literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/tr.po b/local/recipes/dev/gnu-make/source/po/tr.po new file mode 100644 index 0000000000..78454e9604 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/tr.po @@ -0,0 +1,2662 @@ +# Turkish translations for GNU Make messages. +# Copyright (C) 2006 Free Software Foundation, Inc. +# Nilgün Belma Bugüner , 2001, ..., 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: make 3.81\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2006-04-23 08:45+0300\n" +"Last-Translator: Nilgün Belma Bugüner \n" +"Language-Team: Turkish \n" +"Language: tr\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: KBabel 1.9.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: 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: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:151 +#, fuzzy, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "Dokunulup geçildi: ArÅŸiv `%s' yok" + +#: 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: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: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ı" + +#: src/arscan.c:130 +#, fuzzy, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module modül bilgisini çıkarırken baÅŸarısız oldu, durum = %d" + +#: src/arscan.c:236 +#, fuzzy, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control durum =%d ile baÅŸarısız oldu" + +#: src/arscan.c:261 +#, fuzzy, c-format +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: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:996 +msgid " (name might be truncated)" +msgstr "(isim kırpılmış olmalı)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Tarih %s" + +#: 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:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Bırakıldı.\n" + +#: 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:633 +#, fuzzy, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** ArÅŸiv üyesi `%s' sahte olabilir; silinmedi" + +#: src/commands.c:647 +#, fuzzy, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] `%s' dosyası siliniyor" + +#: src/commands.c:649 +#, fuzzy, c-format +msgid "*** Deleting file '%s'" +msgstr "*** `%s' dosyası siliniyor" + +#: src/commands.c:685 +#, fuzzy +msgid "# recipe to execute" +msgstr "# çalıştırma komutları" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (paket içinde):" + +#: src/commands.c:690 +#, fuzzy, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (`%s'den, satır %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Dizin\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: durumlanamadı.\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: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: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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (anahtar (key) %s, deÄŸiÅŸiklik tarihi (mtime) %d):" + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (aygıt %ld, i-düğüm %ld):" + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Hayır" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " dosyaları," + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "hayır" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr "olanaksızlıklar" + +#: src/dir.c:1180 +msgid " so far." +msgstr " çok uzak." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " %lu dizinde olanaksızlıklar.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "sonlandırılmamış deÄŸiÅŸken bağıntısı" + +#: 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: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: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: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: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: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:407 +#, fuzzy, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Aracı dosya `%s' siliniyor" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Aracı dosyalar siliniyor...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Tarih damgası kapsamdışı; yerine %s kullanılıyor" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Bir hedef deÄŸil:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Kıymetli dosya (.PRECIOUS önceden gerekliliÄŸi)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Sahte hedef (.PHONY önceden gerekliliÄŸi)." + +#: src/file.c:1098 +#, fuzzy +msgid "# Command line target." +msgstr "# Komut-satırı hedefi." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Bir öntanımlı,MAKEFILES veya -include/sinclude makefile." + +#: src/file.c:1102 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# Örtük kural yok." + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Örtük kural araÅŸtırması yapılmıştı." + +#: 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: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: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: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:1123 +msgid "# Modification time never checked." +msgstr "# DeÄŸiÅŸiklik zamanı hiç kontrol edilmedi." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Dosya yok." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Dosya çok eski." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Son deÄŸiÅŸiklik tarihi %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Dosya güncelleÅŸtirilmiÅŸti." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Dosya güncelleÅŸtirilmemiÅŸti." + +#: 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: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:1151 +msgid "# Successfully updated." +msgstr "# Tamamen güncellendi." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# GüncellenmiÅŸ olması gerekir (-q verildi)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# GüncellenmiÅŸ olamadı." + +#: src/file.c:1163 +#, fuzzy +msgid "# Invalid value in 'command_state' member!" +msgstr "# `command_state' üyesinde geçersiz deÄŸer!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Dosyalar" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# dosyaların hash tablosu durumları:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "" + +#: 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' iÅŸlevinde sayısal olmayan ilk argüman" + +#: 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:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "`wordlist' iÅŸlevinde sayısal olmayan ilk argüman" + +#: 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 first argument to 'intcmp' function" +msgstr "`wordlist' iÅŸlevinde sayısal olmayan ilk argüman" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "`wordlist' iÅŸlevinde sayısal olmayan ikinci argüman" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "create_child_process: DuplicateHandle(In) baÅŸarısız (e=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +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:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() baÅŸarısız (e=%ld)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Geçici komut-listesi (batch) dosyası %s temizleniyor\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "" + +#: src/function.c:2347 src/function.c:2383 +#, fuzzy, c-format +msgid "open: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2360 +#, fuzzy, c-format +msgid "write: %s: %s" +msgstr "yazma hatası: %s" + +#: src/function.c:2363 src/function.c:2402 +#, fuzzy, c-format +msgid "close: %s: %s" +msgstr "%s%s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "" + +#: src/function.c:2397 +#, fuzzy, c-format +msgid "read: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2409 +#, fuzzy, c-format +msgid "file: invalid file operation: %s" +msgstr "%s: geçersiz seçenek -- %c\n" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "argüman sayısı (%d) `%s' iÅŸlevinde yetersiz" + +#: 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: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:2791 +#, c-format +msgid "Empty function name" +msgstr "" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "" + +#: 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:2801 +#, fuzzy, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "argüman sayısı (%d) `%s' iÅŸlevinde yetersiz" + +#: src/getopt.c:659 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: `%s' seçeneÄŸi belirsiz\n" + +#: src/getopt.c:683 +#, fuzzy, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: `--%s' seçeneÄŸi argümansız kullanılır\n" + +#: src/getopt.c:688 +#, fuzzy, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: seçenek `%c%s' argümansız kullanılır\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, fuzzy, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: `%s' seçeneÄŸi bir argümanla kullanılır\n" + +#: src/getopt.c:734 +#, fuzzy, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: `--%s' seçeneÄŸi bilinmiyor\n" + +#: src/getopt.c:738 +#, fuzzy, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: `%c%s' seçeneÄŸi bilinmiyor\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: kuraldışı seçenek -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: geçersiz seçenek -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: seçenek bir argümanla kullanılır -- %c\n" + +#: src/getopt.c:844 +#, fuzzy, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: `-W %s' seçeneÄŸi belirsiz\n" + +#: src/getopt.c:862 +#, fuzzy, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: `-W %s' seçeneÄŸi argümansız kullanılır\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "" + +#: src/hash.c:50 +#, fuzzy, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "hash tablosu için %ld bayt ayrılamıyor: bellek tükendi" + +#: src/hash.c:280 +#, fuzzy, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Yük=%ld/%ld=%.0f%%, " + +#: src/hash.c:282 +#, fuzzy, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%d, " + +#: src/hash.c:283 +#, fuzzy, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Çakışmalar=%ld/%ld=%.0f%%" + +#: 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: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: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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "`%.*s' köküyle kalıp kuralı deneniyor.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 +#, fuzzy, c-format +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:770 +#, fuzzy, c-format +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:787 +#, fuzzy, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Kural önceden gerekliliÄŸi `%s' deneniyor.\n" + +#: src/implicit.c:788 +#, fuzzy, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Örtük önceden gereklilik `%s' deneniyor.\n" + +#: 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 "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: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/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:552 +msgid " (core dumped)" +msgstr " (bellek kopyası - core dosyası - diske yazıldı)" + +#: src/job.c:557 +#, fuzzy +msgid " (ignored)" +msgstr "[%s] Hata %d (yoksayıldı)" + +#: src/job.c:561 src/job.c:1900 +#, fuzzy +msgid "" +msgstr " (paket içinde):" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "*** [%s] Hata %d" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** BitmemiÅŸ iÅŸler için bekliyor...." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (karşıdan)" + +#: 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: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:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Geçici komut-listesi dosyası %s temizleniyor\n" + +#: 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: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: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: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:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Sayılan %d argüman ile baÅŸarısız oldu\n" + +#: 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: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: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: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:2106 +msgid "cannot enforce load limit: " +msgstr "ulaşılamayan yük sınırı: " + +#: 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: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:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "baÅŸka dosya tutucu yok: standart girdi kopyalanamadı\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Standart girdi eski haline getirilemedi\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Standart çıktı eski haline getirilemedi\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Standart girdi eski haline getirilemedi\n" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: ortam alanı tükenmiÅŸ olabilir" + +#: 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: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:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" + +#: 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" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: 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" +msgstr "Bu platformda paralel iÅŸler (-j) desteklenmiyor." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Seçenekler:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Uyumluluk için yoksayıldı.\n" + +#: 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: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:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -b, -m Bir sürü hata ayıklama bilgisi basar.\n" + +#: 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: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:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f DOSYA, --file=DOSYA, --makefile=DOSYA\n" +" DOSYAyı bir makefile olarak okur.\n" + +#: 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: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:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DİZİN, --include-dir=DİZİN\n" +" Eklenecek makefile'ları DİZİNde arar.\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] Bir defada N iÅŸe izin verir; argumansız iÅŸ\n" +" sayısı sınırsızdır.\n" + +#: 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: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" +" Yük N'den az olmadıkça çoklu iÅŸler " +"baÅŸlatılmaz.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times sembolik baÄŸlarla hedef arasında en son mtime\n" +" kullanılır\n" + +#: src/main.c:355 +#, fuzzy +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" +" Gerçekte komutlar çalıştırılmaz, gösterilir.\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 DOSYA, --old-file=DOSYA, --assume-old=DOSYA\n" +" DOSYAnın çok eski olduÄŸu varsayılır ve\n" +" yeniden iÅŸlem yapılmaz.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: 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:366 +#, fuzzy +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Komut çalıştırmaz; güncelse çıkışta belirtir\n" + +#: 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: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: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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" + +#: 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: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:384 +#, fuzzy +msgid " --trace Print tracing information.\n" +msgstr " -b, -m Bir sürü hata ayıklama bilgisi basar.\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Kullanılan dizini basar.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Dolaylı olarak açılmış olsa bile -w 'yi " +"kapatır\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 DOSYA, --what-if=DOSYA, --new-file=DOSYA, --assume-new=DOSYA\n" +" DOSYA sonsuz yeni varsayılır.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Atanmamış bir deÄŸiÅŸkene bağıntı yapıldığında\n" +" uyarır.\n" + +#: 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:834 +#, fuzzy, c-format +msgid "unknown debug level specification '%s'" +msgstr "Hata ayıklama düzeyi özelliÄŸi `%s' bilinmiyor" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Kullanım: %s [seçenekler] [hedef] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Bu program %s için kurgulanmış\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Bu program %s için kurgulanmış (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Yazılım hatalarını adresine,\n" +"çeviri hatalarını adresine bildiriniz.\n" + +#: src/main.c:940 +#, fuzzy, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Kesinti/OlaÄŸandışı durum saptandı (kod = 0x%lx, adres = 0x%lx)\n" + +#: src/main.c:947 +#, fuzzy, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"program %s tarafından elde edilmemiÅŸ olaÄŸandışı-durum süzgeci çaÄŸrıldı\n" +"OlaÄŸandışılıkKodu = %lx\n" +"OlaÄŸandışılıkBayrakları = %lx\n" +"OlaÄŸandışılıkAdresi = %lx\n" + +#: 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: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: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: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: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." +msgstr "" +"uyarı: iÅŸ sunucusu kullanımdışı: -j1 kullanılıyor. Üst make kuralına `+' " +"ekle." + +#: 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:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile standart girdiden iki kez belirtildi." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (geçici dosya)" + +#: 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:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Bu platformda paralel iÅŸler (-j) desteklenmiyor." + +#: 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: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: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: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: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:2548 +#, fuzzy, c-format +msgid "Included makefile '%s' was not found." +msgstr "İçerilen make dosyası `%s' bulunamadı." + +#: src/main.c:2552 +#, fuzzy, c-format +msgid "Makefile '%s' was not found" +msgstr "`%s' make dosyası bulunamadı" + +#: 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:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Yeniden çalıştırılıyor[%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Hedef yok" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Hedefler belirtilmediÄŸinden make dosyası yok" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Amaçlanan hedefler güncelleniyor...\n" + +#: 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: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: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:3652 +#, fuzzy, c-format +msgid "%sBuilt for %s\n" +msgstr "" +"\n" +"%sBu program %s için derlenmiÅŸ\n" + +#: 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:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Make veri tabanı, %s üzerine basıldı" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# %s üzerindeki Make veri tabanı tamamlandı\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: 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:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "%s geçici komut-liste dosyasını oluÅŸturuyor\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (geçici dosya): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (geçici dosya)" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: bilinmeyen dizinden çıkılıyor\n" + +#: src/output.c:100 +#, fuzzy, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: `%s' dizine giriliyor\n" + +#: src/output.c:102 +#, fuzzy, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: `%s' dizininden çıkılıyor\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Bilinmeyen dizinden çıkılıyor\n" + +#: src/output.c:111 +#, fuzzy, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]:`%s' dizinine giriliyor\n" + +#: 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:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Durdu.\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 "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "iÅŸleri yaratıyor" + +#: src/posixos.c:201 src/posixos.c:434 +#, fuzzy +msgid "duping jobs pipe" +msgstr "iÅŸleri yaratıyor" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "iÅŸleri hazırlıyor" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "içsel hata: --jobserver-fds dizgesi `%s' geçersiz" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "iÅŸ-sunucusu yazıyor" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +#, fuzzy +msgid "pselect jobs pipe" +msgstr "görev listesi okunuyor" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "görev listesi okunuyor" + +#: 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:330 +#, fuzzy, c-format +msgid "Reading makefile '%s'" +msgstr "`%s' make dosyası okunuyor" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (öntanımlı amaç yok)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (arama yolu)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (umurunda deÄŸil)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr "( ~ uzantısı yok)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "ÅŸartlı ifade de yazılış hatası" + +#: src/read.c:1002 +#, fuzzy, c-format +msgid "recipe commences before first target" +msgstr "komutlar ilk hedeften önce baÅŸlıyor" + +#: src/read.c:1053 +#, fuzzy, c-format +msgid "missing rule before recipe" +msgstr "komutlardan önceki kural kayıp" + +#: 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:1156 +#, fuzzy, c-format +msgid "missing separator" +msgstr "kayıp ayraç%s" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "hedef kalıp kayıp" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "çok sayıda hedef kalıp" + +#: src/read.c:1306 +#, fuzzy, c-format +msgid "target pattern contains no '%%'" +msgstr "hedef kalıp `%%' içermiyor" + +#: src/read.c:1349 +#, fuzzy, c-format +msgid "missing 'endif'" +msgstr "`endif' kayıp" + +#: 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:1423 +#, fuzzy, c-format +msgid "extraneous text after 'define' directive" +msgstr "`endef' yönergesinden sonraki metin yersiz" + +#: src/read.c:1448 +#, fuzzy, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "`endef' kayıp, `define' sonlandırılmamış" + +#: src/read.c:1476 +#, fuzzy, c-format +msgid "extraneous text after 'endef' directive" +msgstr "`endef' yönergesinden sonraki metin yersiz" + +#: src/read.c:1548 +#, fuzzy, c-format +msgid "extraneous text after '%s' directive" +msgstr "`%s' yönergesinden sonraki metin yersiz" + +#: src/read.c:1549 +#, fuzzy, c-format +msgid "extraneous '%s'" +msgstr "`%s' yersiz" + +#: src/read.c:1577 +#, fuzzy, c-format +msgid "only one 'else' per conditional" +msgstr "her ÅŸartlı ifade de sadece bir `else'" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Hedefe özgü deÄŸiÅŸken tanımı bozuk" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: 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:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "örtük ve normal kurallar karışmış" + +#: 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: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: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: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: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:2308 +#, fuzzy, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "örtük ve normal kurallar karışmış" + +#: 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: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: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:255 +#, fuzzy, c-format +msgid "'%s' is up to date." +msgstr "`%s' güncel" + +#: src/remake.c:350 +#, fuzzy, c-format +msgid "Pruning file '%s'.\n" +msgstr "Budanmış dosya `%s'.\n" + +#: 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: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:452 +#, fuzzy, c-format +msgid "Considering target file '%s'.\n" +msgstr "hedef dosya `%s' hesaba katılıyor.\n" + +#: 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:471 +#, fuzzy, c-format +msgid "File '%s' was considered already.\n" +msgstr "`%s' dosyası zaten hesaba katıldı.\n" + +#: src/remake.c:481 +#, fuzzy, c-format +msgid "Still updating file '%s'.\n" +msgstr "`%s' dosyası hala güncelleniyor.\n" + +#: 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:513 +#, fuzzy, c-format +msgid "File '%s' does not exist.\n" +msgstr "`%s' dosyası yok.\n" + +#: src/remake.c:520 +#, fuzzy, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Uyarı: .LOW_RESOLUTION_TIME dosyası `%s' yüksek çözünürlüklü bir zaman " +"damgası içeriyor" + +#: src/remake.c:538 +#, fuzzy, c-format +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: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: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: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: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:757 +#, fuzzy, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "`%s' hedef dosyasında umut kesiliyor.\n" + +#: 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: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: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: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: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: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: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: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:865 +#, fuzzy, c-format +msgid "No need to remake target '%s'" +msgstr "Hedef `%s' nin yeniden derlenmesine gerek yok" + +#: src/remake.c:867 +#, fuzzy, c-format +msgid "; using VPATH name '%s'" +msgstr "; VPATH ismi `%s' kullanılıyor" + +#: src/remake.c:891 +#, fuzzy, c-format +msgid "Must remake target '%s'.\n" +msgstr "Hedef `%s' yeniden derlenmeli.\n" + +#: src/remake.c:897 +#, fuzzy, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " VPATH ismi `%s' yoksayılıyor.\n" + +#: 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: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: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: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: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: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: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:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "ÖzelleÅŸtirilmiÅŸ olanlar dışarı aktarılmayacak: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Örtük Kurallar" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Örtük kural yok." + +#: src/rule.c:610 +#, fuzzy, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u örtük kural, %u" + +#: 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" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Tıkanma" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Kesme" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Çık" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Yönergeler uygun deÄŸil" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "İzleme/kesmenoktası yakalayıcı" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "İptal edildi" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT tuzağı" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT tuzağı" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Gerçek sayı olaÄŸandışı durumu" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Süreç durduruldu" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Veri yolu hatası" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Parçalama arızası" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Sistem çaÄŸrısı hatalı" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Veri alınamıyor" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarm saati" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Sonlandırıldı" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Kullanıcı tanımlı sinyal 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Kullanıcı tanımlı sinyal 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Ast bıraktı" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Güç kesilmesi" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Durduruldu" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Durduruldu (konsol girdisi)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Durduruldu (konsol çıktısı)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Durduruldu (sinyal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU zaman sınırı aşıldı" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Dosya uzunluÄŸu sınırı aşıldı" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Sanal süreölçer kullanım süresi doldu" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Tanıtım süreölçer kullanım süresi doldu" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Pencere boyutları deÄŸiÅŸtirildi" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Devam ediliyor" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Acil G/Ç koÅŸulu" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "G/Ç mümkün" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Kaynak kaybı" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Tehlike sinyali" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Bilgi isteÄŸi" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Aritmetik iÅŸlemci kullanılabilir deÄŸil" + +#: src/strcache.c:274 +#, fuzzy, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "%s dizge belleÄŸi tamponlarının sayısı: %d\n" + +#: src/strcache.c:304 +#, fuzzy, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "%s dizge belleÄŸi boÅŸ: toplam = %d / max = %d / min = %d / ort = %d\n" + +#: src/strcache.c:308 +#, fuzzy, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "%s dizge belleÄŸi boyu: toplam = %d / max = %d / min = %d / ort = %d\n" + +#: src/strcache.c:319 +#, fuzzy, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s dizge belleÄŸi boyu: toplam = %d / max = %d / min = %d / ort = %d\n" + +#: src/strcache.c:322 +#, fuzzy, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "%s dizge belleÄŸi boÅŸ: toplam = %d / max = %d / min = %d / ort = %d\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +#, fuzzy +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"\n" +"# dosyaların hash tablosu durumları:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "otomatik" + +#: src/variable.c:1789 +msgid "default" +msgstr "öntanımlı" + +#: src/variable.c:1792 +msgid "environment" +msgstr "çevre" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "derleme dosyası" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "çevre -e altında" + +#: src/variable.c:1801 +msgid "command line" +msgstr "komut satırı" + +#: src/variable.c:1804 +#, fuzzy +msgid "'override' directive" +msgstr "`override' yönergesi" + +#: src/variable.c:1814 +#, fuzzy, c-format +msgid " (from '%s', line %lu)" +msgstr " (`%s'den, satır %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# deÄŸiÅŸken kümesi hash tablosunun durumu:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# DeÄŸiÅŸkenler\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Kalıba özgü DeÄŸiÅŸken DeÄŸerleri" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# ÖrneÄŸe duyarlı deÄŸiÅŸken deÄŸeri yok." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u örneÄŸe duyarlı deÄŸiÅŸken deÄŸeri" + +#: src/variable.h:237 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "uyarı: `%.*s' deÄŸiÅŸkeni atanmamış" + +#: src/vmsfunctions.c:91 +#, fuzzy, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search %d ile baÅŸarısız\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-uyarı, DCL den yönetimi almak için CTRL-Y'yi yeniden " +"etkinleÅŸtirebilirsiniz.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "OLUÅžUMİÇİ CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "" + +#: src/vmsjobs.c:1281 +#, fuzzy, c-format +msgid "Append output to %s\n" +msgstr "%s e yönlendirilmiÅŸ çıktı\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "%s yerine çalıştırılıyor\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH Arama yolu\n" + +#: src/vpath.c:617 +#, fuzzy +msgid "# No 'vpath' search paths." +msgstr "# `vpath' arama yolları yok" + +#: src/vpath.c:619 +#, fuzzy, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u `vpath' arama yolu.\n" + +#: src/vpath.c:622 +#, fuzzy +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Genel arama yolu (`VPATH' çevre deÄŸiÅŸkeni) yok." + +#: src/vpath.c:628 +#, fuzzy +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Genel (`VPATH' çevre deÄŸiÅŸkeni) arama yolu:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: 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!" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Hata 0x%x (yoksayıldı)" + +#~ msgid "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] Hata 0x%x" + +#~ msgid "process_easy() failed failed to launch process (e=%ld)\n" +#~ msgstr "Süreci baÅŸlatmada process_easy() baÅŸarısız oldu (e=%ld)\n" + +#~ msgid "%s: Command not found" +#~ msgstr "%s: Komut bulunamadı" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Kabuk uygulaması bulunamadı" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s 30 saniyeliÄŸine askıya alınıyor..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) bitti. Devam ediliyor.\n" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "içsel hata: çok sayıda --jobserver-fds seçeneÄŸi" + +#~ msgid "dup jobserver" +#~ msgstr "çift iÅŸ sunucusu" + +#~ 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 "" +#~ "%sBu bir serbest yazılımdır; kopyalama koÅŸulları için kaynak koduna " +#~ "bakınız.\n" +#~ "%sHiçbir garantisi yoktur; hatta SATILABİLİRLİĞİ veya ÅžAHSİ " +#~ "KULLANIMINIZA\n" +#~ "%sUYGUNLUÄžU için bile garanti verilmez.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Bilinmeyen hata %d" + +#~ 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ı" + +#~ msgid "extraneous `endef'" +#~ msgstr "yersiz `endef'" + +#~ msgid "empty `override' directive" +#~ msgstr "boÅŸ `override' yönergesi" + +#~ msgid "invalid `override' directive" +#~ msgstr "`override' yönergesi geçersiz" + +#~ msgid "Warning: File `%s' has modification time in the future" +#~ msgstr "Uyarı: `%s' dosyası gelecekteki bir deÄŸiÅŸiklik tarihini içeriyor" + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "" +#~ "\n" +#~ "%s # of strings in strcache: %d\n" +#~ msgstr "" +#~ "\n" +#~ "%s dizge belleÄŸindeki dizgelerin sayısı: %d\n" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Uyarı: BoÅŸ yönlendirme\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "içsel hata: `%s' command_state" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-uyarı, CTRL-Y etraftaki alt-süreç(ler)i bıraktıracak.\n" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "OLUÅžUMİÇİ [%s][%s]\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "OLUÅžUMİÇİ RM %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "OluÅŸumiçi komut '%s' bilinmiyor\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Hata, boÅŸ komut\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "%s den yönlendirilmiÅŸ girdi\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "%s e yönlendirilmiÅŸ hata\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "doÄŸum hatası, %d\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "Dosyada hala yazılış hatası var: '\"'\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "SIGCHLD sinyali alındı; %u saÄŸlanmamış ast dosya.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "sh.exe yoksa -j veya --jobs belirtilemez." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Tek iÅŸ kipi için make'i baÅŸlatma konumuna alıyor" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "`%sinclude' için dosyaismi yok" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "hedef `%s' önceden gereklilik kalıbını boÅŸ bırakıyor" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Dosyalar yok." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u dosya %u hash kümesinde.\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "# her tabloda ortalama %.3f dosya, bir tabloda en çok %u dosya.\n" + +#~ msgid "DIRECTORY" +#~ msgstr "DİZİN" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "Hiç bir ÅŸey yapmadan DİZİNe geçer" + +#~ msgid "FLAGS" +#~ msgstr "BAYRAKLAR" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "Bir hata ayıklayıcı eklemeye izin vermek için süreci askıya alır" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "Çevre deÄŸiÅŸkenleri makefile'ları geçersiz kılıyor" + +#~ msgid "FILE" +#~ msgstr "DOSYA" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "DOSYAyı bir makefile olarak okur" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "İçerilmiÅŸ makefile'lar için DİZİNi araÅŸtırır" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "Yük N'in altında olmadıkça iÅŸler baÅŸlatılmaz" + +#~ msgid "Don't actually run any commands; just print them" +#~ msgstr "Genellikle hiçbir komut çalıştırılmaz; onları basar" + +#~ msgid "Consider FILE to be very old and don't remake it" +#~ msgstr "DOSYAnın çok eski olduÄŸunu hesaba katarak yeniden derlemez." + +#~ msgid "Don't echo commands" +#~ msgstr "Komutları ekolamaz" + +#~ msgid "Turns off -k" +#~ msgstr "-k 'yı kapatır" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "DOSYAnın ne kadar yeni olduÄŸundaki belirsizliÄŸi hesaba katar." + +#~ msgid "Entering" +#~ msgstr " Dizine girdi:" + +#~ msgid "Leaving" +#~ msgstr "Dizini bıraktı:" + +#~ msgid "# No variables." +#~ msgstr "# DeÄŸiÅŸkenker yok" + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "# her tabloda %.1f deÄŸiÅŸken ortalaması, bir tabloda en çok %u\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "# her tabloda %d.%d deÄŸiÅŸken ortalaması, bir tabloda en çok %u\n" diff --git a/local/recipes/dev/gnu-make/source/po/uk.gmo b/local/recipes/dev/gnu-make/source/po/uk.gmo new file mode 100644 index 0000000000000000000000000000000000000000..f78894e76f8691887c6b98ff4ed9ba5f40a896a2 GIT binary patch literal 61658 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 HFpK{G6Mx(h literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/uk.po b/local/recipes/dev/gnu-make/source/po/uk.po new file mode 100644 index 0000000000..93d8a15320 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/uk.po @@ -0,0 +1,2593 @@ +# Переклад make українÑькою. +# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Volodymyr M. Lisivka , 2001-2012. +# Yuri Chornoivan , 2012, 2013, 2014, 2016, 2019, 2020, 2022. +msgid "" +msgstr "" +"Project-Id-Version: make 4.3.91\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-19 20:05+0300\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\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=1; plural=0;\n" +"X-Generator: Lokalize 20.12.0\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "Ñпроба вжити можливіÑть, підтримки Ñкої не передбачено: \"%s\"" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни члена архіву неможливо у ÑиÑтемі VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни: Ðрхів \"%s\" не Ñ–Ñнує" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни: некоректний архів: \"%s\"" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни: Член \"%s\" не міÑтитьÑÑ Ñƒ \"%s\"" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "" +"Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни: Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ ar_member_touch повернула\n" +"помилковий код відповіді Ð´Ð»Ñ \"%s\"" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() не вдалоÑÑ Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ дані модулÑ, Ñтан = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "Помилка lbr$ini_control() з повідомленнÑм Ñтану = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ бібліотеку «%s» Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ Ñтану елемента %d" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (ім'Ñ Ð¼Ð¾Ð¶Ðµ бути обрізано)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Дата %s" + +#: 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:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "У рецепті забагато Ñ€Ñдків (Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ - %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Зупинка.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Елемент архіву, «%s», можливо Ñ” фіктивним; не вилучено" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Елемент архіву, «%s», можливо Ñ” фіктивним; не вилучено" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Вилучаємо файл \"%s\"" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Вилучаємо файл \"%s\"" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# ÑпоÑіб, Ñкий Ñлід заÑтоÑувати" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (вбудоване):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (з \"%s\", Ñ€Ñдок %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Каталоги\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: неможливо отримати інформацію (stat).\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: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:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (приÑтрій %ld, івузол %ld): не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (ключ %s, Ñ‡Ð°Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (приÑтрій %d, івузол [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (приÑтрій %ld, івузол %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "ÐÑ–" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " файлів, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "ні" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " недоÑÑжних цілей" + +#: src/dir.c:1180 +msgid " so far." +msgstr " на поточний момент." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " недоÑÑжних цілей у %lu каталогах.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "незавершена поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° змінну" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "СпоÑіб Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» було задано %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"СпоÑіб Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» було знайдено за допомогою пошуку неÑвних правил," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "але \"%s\" Ñ– \"%s\" тепер вважаютьÑÑ Ð¾Ð´Ð½Ð¸Ð¼ Ñ– тим же ж файлом. " + +#: 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:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"неможливо перейменувати \"%s\" з однією двокрапкою у \"%s\" з двома " +"двокрапками" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" +"неможливо перейменувати \"%s\" з двома двокрапками у \"%s\" з однією " +"двокрапкою" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Вилучаємо проміжний файл «%s»" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Вилучаємо проміжні файли...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: чаÑова позначка поза допуÑтимим діапазоном; замінюємо на %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ðе Ñ” метою:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# ВартіÑний файл (залежніÑть .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# ПÑевдоціль (залежніÑть .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Мета, що викликаєтьÑÑ Ð· командного Ñ€Ñдка." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Типово, MAKEFILES, або -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Вбудоване правило" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Пошук неÑвних правил виконано." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Пошук неÑвних правил не було виконано." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# ОÑнова неÑвного або Ñтатичного шаблону: \"%s\"\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Файл Ñ” проміжною залежніÑтю." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Ð§Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ ніколи не перевірÑвÑÑ." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Файл не Ñ–Ñнує." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Файл дуже Ñтарий." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# ВоÑтаннє оновлено %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Файл був оновлений." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Файл не було оновлено." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# ВиконуєтьÑÑ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ° (ЦЕ ПОМИЛКÐ)" + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Ці залежноÑті вже оброблÑютьÑÑ (ЦЕ ПОМИЛКÐ)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# УÑпішно оновлено." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Повинно бути оновлено (вÑтановлений ключ -q)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Спроба Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð±ÐµÐ·ÑƒÑпішна." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð»ÐµÐ½Ð° \"command_state\"!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Файли" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# ÑтатиÑтика щодо таблиці хешів файлів:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: поле «%s» не кешовано: %s" + +#: 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:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "першим аргументом функції «word» має бути чиÑло, більше за 0" + +#: src/function.c:821 +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:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: помилка DuplicateHandle(In) (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: помилка DuplicateHandle(Err) (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "Помилка CreatePipe() (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): помилка process_init_fd()\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Спорожнюємо тимчаÑовий пакетний файл %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: не вказано назви файла" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: надто багато аргументів" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: некоректна Ð´Ñ–Ñ Ð½Ð°Ð´ файлом: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "недоÑÑ‚Ð°Ñ‚Ð½Ñ ÐºÑ–Ð»ÑŒÐºÑ–Ñть аргументів (%u) функції «%s»" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "не реалізовано на цій платформі: Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Â«%s»" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "незавершений виклик функції \"%s\"; пропущено \"%c\"" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "ÐŸÐ¾Ñ€Ð¾Ð¶Ð½Ñ Ð½Ð°Ð·Ð²Ð° функції" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Ðекоректна назва функції: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Ðазва функції Ñ” задовгою: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Ðекоректна мінімальна кількіÑть аргументів (%u) функції %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Ðекоректна макÑимальна кількіÑть аргументів (%u) функції %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: параметр «%s» не Ñ” однозначним\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² до параметра «--%s» не передбачено\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² до параметра «%c%s» не передбачено\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: до параметра «%s» Ñлід додати аргумент\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: невідомий параметр «--%s»\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: невідомий параметр «%c%s»\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: невірний параметр -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: невірний параметр -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: параметру необхідний аргумент -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: параметр «-W %s» не Ñ” однозначним\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² до параметра «-W %s» не передбачено\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: розгортаємо «%s»\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: обчиÑлюємо «%s»\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити %lu байтів Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– хешів: вичерпано пам’Ñть" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "ЗавантаженнÑ=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Повторне хешуваннÑ=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Збіги=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Пошук неÑвного правила Ð´Ð»Ñ \"%s\".\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Пошук неÑвного правила Ð´Ð»Ñ Ñ‡Ð»ÐµÐ½Ð° архіву \"%s\".\n" + +#: 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 "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:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Занадто довгий шаблон: «%s%.*s».\n" + +#: 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:788 +#, c-format +msgid "Trying implicit prerequisite '%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: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/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:552 +msgid " (core dumped)" +msgstr " (зроблений дамп пам'Ñті)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ігноруєтьÑÑ)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<вбудований>" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Помилка %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** ÐžÑ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½ÑŒ..." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (віддалений)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Підбираємо вдалий дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· PID %p %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Підбираємо невдалий дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· PID %p %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Ð—Ð½Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñового командного файла %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "" +"Спроба Ð²Ð¸Ñ‚Ð¸ÐºÐ°Ð½Ð½Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñового файла пакетної обробки %s зазнала невдачі (%d)\n" + +#: 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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Звільнено Ñимвол Ð´Ð»Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½ÑŒÐ¾Ð³Ð¾ процеÑу %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() не вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити Ð¿Ñ€Ð¾Ñ†ÐµÑ (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Під Ñ‡Ð°Ñ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾Ð³Ð¾ запуÑку кількіÑть аргументів дорівнювала %d\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Отримано Ñимвол Ð´Ð»Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½ÑŒÐ¾Ð³Ð¾ процеÑу %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¼ÐµÑ‚Ð¸ «%s» з такої причини: %s" + +#: 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:2106 +msgid "cannot enforce load limit: " +msgstr "неможливо вÑтановити Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° завантаженнÑ: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "не виÑтачає файлових деÑкрипторів: не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ stdin" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "не виÑтачає файлових деÑкрипторів: не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ stdout" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "не виÑтачає файлових деÑкрипторів: не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ stderr" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ stdin" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ stdout" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ stderr" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: ймовірно, завершилоÑÑ Ð¼Ñ–Ñце у Ñередовищі" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL змінено (було «%s», тепер «%s»)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Створюємо тимчаÑовий пакетний файл %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"ВміÑÑ‚ файла пакетної обробки:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"ВміÑÑ‚ пакетного файла:%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 (Ñ€Ñдок %d) Поганий контекÑÑ‚ оболонки (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ таблицю загальних Ñимволів: %s" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñимвол %s з %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "ÐŸÐ¾Ñ€Ð¾Ð¶Ð½Ñ Ð½Ð°Ð·Ð²Ð° Ñимволу Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Завантажуємо Ñимвол %s з %s\n" + +#: 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» не передбачено" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Ключі:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m ІгноруєтьÑÑ, Ð´Ð»Ñ ÑуміÑноÑті.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make безумовно оброблÑти вÑÑ– запиÑи мети.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C КÐТÐЛОГ, --directory=КÐТÐЛОГ\n" +" Перейти до каталогу до Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð±ÑƒÐ´ÑŒ-Ñких " +"дій.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d ВивеÑти діагноÑтичні повідомленнÑ.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=ПРÐПОРЦІ] ВивеÑти діагноÑтичні Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¸Ñ… " +"типів.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Змінні Ñередовища мають вищий пріоритет за " +"змінні makefile.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr " -E РЯДОК, --eval=РЯДОК Обробити РЯДОК Ñк інÑтрукцію makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f ФÐЙЛ, --file=ФÐЙЛ, --makefile=ФÐЙЛ\n" +" ВикориÑтати ФÐЙЛ Ñк makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help ВивеÑти це Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ– вийти.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" +" -i, --ignore-errors Ігнорувати помилки від ÑпоÑобів збираннÑ.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I КÐТÐЛОГ, --include-dir=КÐТÐЛОГ\n" +" Виконати пошук включених makefile у каталозі.\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] Виконувати одночаÑно N завдань; Ñкщо не " +"вказано — необмежену кількіÑть.\n" + +#: 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: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" +" Ðе запуÑкати декількох завдань, Ñкщо " +"Ð½Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” 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 ВикориÑтовувати новіший Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ з чаÑів " +"зміни поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñ– мети.\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" +" Ðе заÑтоÑовувати ÑпоÑобів збираннÑ, проÑто " +"вивеÑти назви ÑпоÑобів.\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 ФÐЙЛ, --old-file=ФÐЙЛ, --assume-old=ФÐЙЛ\n" +" Вважати ФÐЙЛ дуже Ñтарим Ñ– не виконувати його " +"повторного збираннÑ.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[ТИП], --output-sync[=ТИП]\n" +" Ñинхронізувати виведені дані паралельних " +"завдань за ТИПом.\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question не заÑтоÑовувати жодних " +"ÑпоÑобів; код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ”, чи вÑе вже " +"зроблено.\n" + +#: 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:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr " -R, --no-builtin-variables Вимкнути вбудовані параметри змінних.\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" +" Виконати Ð¿ÐµÑ€ÐµÐ¼Ñ–ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´ÑƒÐ¼Ð¾Ð² Ñ– цілей.\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Ðе виводити ÑпоÑоби збираннÑ.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Виводити ÑпоÑоби Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ (вимкнути режим --" +"silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Вимкнути -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Змінювати Ñ‡Ð°Ñ Ð´Ð¾Ñтупу до мети заміÑть Ñ—Ñ— " +"повторного збираннÑ.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace ВивеÑти дані щодо траÑуваннÑ.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version ВивеÑти дані щодо верÑÑ–Ñ— make Ñ– вийти.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Виводити дані щодо поточного каталогу.\n" + +#: 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:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W ФÐЙЛ, --what-if=ФÐЙЛ, --new-file=ФÐЙЛ, --assume-new=ФÐЙЛ\n" +" Вважати ФÐЙЛ завжди новим.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Попереджати про поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° невизначену " +"змінну.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "невідома ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ñ€Ñ–Ð²Ð½Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтики, «%s»" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "невідомий тип Ñинхронізації виведених даних, «%s»" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "ВикориÑтаннÑ: %s [КЛЮЧІ]... [ЦІЛЬ]...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Цю програму зібрано Ð´Ð»Ñ %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Цю програму зібрано Ð´Ð»Ñ %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Повідомлюйте про помилки до \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: ÑталоÑÑ Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ (код = 0x%lx, адреÑа = 0x%p)\n" + +#: src/main.c: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" +"З програми %s викликано фільтр непридатних до обробки виключень\n" +"Код Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ = %lx\n" +"Прапорці Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ = %lx\n" +"ÐдреÑа Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "ÐŸÐ¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» доÑтупу: Ð´Ñ–Ñ Ð· запиÑу за адреÑою 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "ÐŸÐ¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» доÑтупу: Ð´Ñ–Ñ Ð· Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð° адреÑою 0x%p\n" + +#: 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: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: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 "" +"попередженнÑ: Ñервер завдань недоÑтупний: викориÑтовуємо -j1. Додайте «+» до " +"батьківÑького правила збираннÑ." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "попередженнÑ: у submake вказано -j%d: вимикаємо режим Ñервера завдань." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile зі Ñтандартного джерела вхідних даних вказано двічі" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: тимчаÑовий файл %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"попередженнÑ: у makefile вказано -j%d: вимикаємо режим Ñервера завдань." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Ðа цій платформі паралельної обробки завдань (-j) не передбачено." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "ПовертаємоÑÑ Ð´Ð¾ режиму єдиного Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ (-j1)." + +#: 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: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:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Make-файл \"%s\", можливо, зациклений, він не перезбиратиметьÑÑ.\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: не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Спроба перезібрати make-файл \"%s\" безуÑпішна." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Make-файл \"%s\", Ñкий включаєтьÑÑ, не було знайдено." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Make-файл \"%s\" не було знайдено" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¹Ñ‚Ð¸ у первіÑний каталог" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Повторне виконаннÑ[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL міÑтить декілька запиÑів мети" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Ðема цілей" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Ðе задані цілі Ñ– не знайдений make-файл" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ†Ñ–Ð»ÐµÐ¹ мети...\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"попередженнÑ: виÑвлено Ð²Ñ–Ð´Ñ…Ð¸Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ–Ð² годинника. Ð—Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ðµ бути " +"неповним." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "разом з «%s%s» мало бути вказано непорожній Ñ€Ñдковий аргумент" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "ключ \"-%c\" повинен викориÑтовуватиÑÑ Ð· цілим додатним аргументом" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sЗібрано Ð´Ð»Ñ %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sЗібрано Ð´Ð»Ñ %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sУмови Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ»Ð°Ð´ÐµÐ½Ð¾ у GPLv3+: GNU GPL верÑÑ–Ñ— 3 або новішій, " +"\n" +"%sЦе вільне програмне забезпеченнÑ: ви можете вільно змінювати Ñ– поширювати " +"його.\n" +"%sВам не надаєтьÑÑ Ð–ÐžÐ”ÐИХ ГÐРÐÐТІЙ, окрім гарантій передбачених " +"законодавÑтвом.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# База даних Make, надрукована %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Друк бази даних Make завершено %s\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "ВикориÑтовуємо типовий ÑпоÑіб Ð´Ð»Ñ Â«%s».\n" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñового файла %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "від'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñового файла %s: %s" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: виходимо з невідомого каталогу\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: входимо до каталогу «%s»\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Залишаю каталог \"%s\"\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: входимо до невідомого каталогу\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: залишаємо невідомий каталог\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: входимо до каталогу «%s»\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Залишаю каталог \"%s\"\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"попередженнÑ: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ, вимикаємо " +"Ñинхронізацію виведеннÑ." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Зупинка.\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 "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñервер завдань %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Ðевідомий Ñтиль Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ Ð½Ð° Ñервері завдань «%s»" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "Ñтворюємо канал завдань" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "дублюємо канал завдань" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "ініціалізуємо канал Ñервера завдань" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "некоректний Ñ€Ñдок --jobserver-auth «%s»" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ Ñервера завдань" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "Ñервер завдань вимкнено" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pselect Ð´Ð»Ñ ÐºÐ°Ð½Ð°Ð»Ñƒ завдань" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñів з потоку завдань" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ make-файла \"%s\"" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (немає типової мети)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (шлÑÑ… пошуку)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (не зважати)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (не розширювати ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "ПропуÑкаємо мітку UTF-8 у файлі makefile «%s»\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "ПропуÑкаємо мітку UTF-8 у буфері файла makefile\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "невірний ÑинтакÑÐ¸Ñ Ñƒ умовному вираженні" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑпоÑобу Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð¿Ð¾Ñ‡Ð¸Ð½Ð°Ñ”Ñ‚ÑŒÑÑ Ð´Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÑˆÐ¾Ñ— мети" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "пропущено правило до ÑпоÑобу" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "пропущено роздільник (ви хотіли ввеÑти TAB заміÑть 8 пробілів?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "пропущено розділювач" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "пропущений шаблон цілі" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "не один шаблон цілі" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "шаблон цілі не міÑтить \"%%\"" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "пропущена \"endif\"" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "порожнє ім'Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "зайвий текÑÑ‚ піÑÐ»Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð¸ «define»" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "пропущена \"endif\", незавершена \"define\"" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "зайвий текÑÑ‚ піÑÐ»Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð¸ «endef»" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "зайвий текÑÑ‚ піÑÐ»Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð¸ \"%s\"" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "зайва \"%s\"" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "в умовному виразі можлива лише одна директива `else'" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Помилкове Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñпецифічного Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "Ð´Ð»Ñ Ð·Ð³Ñ€ÑƒÐ¿Ð¾Ð²Ð°Ð½Ð¸Ñ… цілей має бути надано ÑпоÑіб збираннÑ" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "змішані неÑвні правила Ñ– правила зі Ñтатичними зразками" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "змішані неÑвні Ñ– звичайні правила" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "ціль \"%s\" не відповідає зразку цілей" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "цільовий файл \"%s\" має Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñ– з \":\", Ñ– з \"::\" " + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "ціль \"%s\" зазначено декілька разів у одному правилі" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "попередженнÑ: замінюємо ÑпоÑіб Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s»" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "попередженнÑ: ігноруємо заÑтарілий ÑпоÑіб Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s»" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** змішані неÑвні Ñ– звичайні правила: заÑтарілий ÑинтакÑиÑ" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "попередженнÑ: перевизначаємо учаÑть у групах Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s»" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "попередженнÑ: зуÑтрінутий Ñимвол NUL; ігноруєтьÑÑ Ð´Ð¾ ÐºÑ–Ð½Ñ†Ñ Ñ€Ñдки" + +#: 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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "\"%s\" не вимагає оновленнÑ." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Обрізаємо файл «%s».\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sÐема правила Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ†Ñ–Ð»Ñ– \"%s\"%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Обробка цільового файла \"%s\".\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ñпроба оновити файл \"%s\" завершилаÑÑ Ð±ÐµÐ·ÑƒÑпішно.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Файл \"%s\" вже було оброблено.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Ð’Ñе ще оновлюєтьÑÑ Ñ„Ð°Ð¹Ð» \"%s\".\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\" завершено.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Ðе виÑвлено файла з назвою «%s».\n" + +#: 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:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Згрупованого вузла цілей «%s» файла «%s» не Ñ–Ñнує.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "ВикориÑтовуємо типовий ÑпоÑіб Ð´Ð»Ñ Â«%s».\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Циклічна залежніÑть %s <- %s пропущена." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Завершено обробку попередніх залежноÑтей файла мети «%s».\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Цілі, від Ñких залежить \"%s\", збираютьÑÑ.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Ðварійний зупинка на цільовому файлі \"%s\".\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Ціль \"%s\" не була перезібрана через помилки." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "ЗалежніÑть «%s» визначено Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s» лише порÑдком збираннÑ.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "ЗалежноÑті «%s» мети «%s» не Ñ–Ñнує.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "ЗалежніÑть «%s» Ñ” новішою за мету «%s».\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "ЗалежніÑть «%s» Ñ” Ñтарішою за мету «%s».\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "Ціль \"%s\" оголошена з двома двокрапками Ñ– не має залежноÑтей.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "Ðемає ÑпоÑобу Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Â«%s», вÑÑ– попередні залежноÑті не змінено.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Збираємо «%s» через вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° always-make.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Потреби у повторному збиранні мети «%s» немає" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; викориÑтовуємо назву VPATH «%s»" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Ðеобхідно перезібрати ціль \"%s\".\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Ігноруємо назву VPATH «%s».\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "ЗаÑтоÑовуємо ÑпоÑіб «%s».\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Спроба перезібрати цільовий файл \"%s\" безуÑпішна.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Цільовий файл \"%s\" уÑпішно перезібраний.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Цільовий файл \"%s\" вимагає Ð¿ÐµÑ€ÐµÐ·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð· ключем -q.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… команд Ð´Ð»Ñ Â«%s».\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Увага: Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ файла «%s» перебуває на %s Ñ Ñƒ майбутньому" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Елемент .LIBPATTERNS «%s» не Ñ” зразком" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "ÐеекÑпортовні налаштуваннÑ: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" +"попередженнÑ: ігноруємо передумови щодо ÑуфікÑального Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð°" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# ÐеÑвні правила" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# ÐеÑвних правил нема." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# ÐеÑвних правил: %u, термінальних: %u (%.1f%%)." + +#: 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 "невідомий Ñигнал" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Обрив" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "ПерериваннÑ" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Вихід" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "ÐеприпуÑтима інÑтрукціÑ" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "ПаÑтка траÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡Ð¸ точки зупинки" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Припинено" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "ПаÑтка IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "ПаÑтка EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Помилка операції з крапкою, що плаває" + +#: src/signame.c:121 +msgid "Killed" +msgstr "ЗнищеннÑ" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Помилка на шині" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Збій Ñегментації" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Поганий ÑиÑтемний виклик" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Обрив каналу" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Сигнал по таймеру" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Завершено" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Обумовлений кориÑтувачем Ñигнал 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Обумовлений кориÑтувачем Ñигнал 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Ðащадок завершив роботу" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Збій живленнÑ" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Зупинено" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Зупинено (ввід з термінала) " + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Зупинено (вивід на термінал)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Зупинено (Ñигнал)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Перевищене Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° процеÑорний чаÑ" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Перевищений межа розміру файла" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Віртуальний Ñ‡Ð°Ñ Ð¼Ð¸Ð½ÑƒÐ²" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Ð§Ð°Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð¼Ð¸Ð½ÑƒÐ²" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Вікно змінено" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Продовжено" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Умова екÑтреного вводу/виводу" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Можливий ввід/вивід" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "РеÑÑƒÑ€Ñ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Сигнал небезпеки" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Запит інформації" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Допоміжний процеÑор Ð´Ð»Ñ Ð¾Ð±Ñ‡Ð¸Ñлень з рухомою комою недоÑтупний" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s немає буферів 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" +"Буфери strcache %s: %lu (%lu) / Ñ€Ñдків = %lu / Ñховище = %lu Б / Ñер = %lu " +"Б\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: розмір = %hu Б / викориÑтано = %hu Б / кількіÑть = %hu / " +"Ñер = %u Б\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "Інше викориÑтане %s: загалом = %lu B / кількіÑть = %lu / Ñер = %lu Б\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: загалом = %lu Б / Ð¼Ð°ÐºÑ = %lu Б / мін = %lu Б / Ñер = %hu Б\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"Ð¨Ð²Ð¸Ð´ÐºÐ¾Ð´Ñ–Ñ strcache %s: циклів пошуку = %lu / відÑоток знайденого = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# ÑтатиÑтика щодо таблиці хешів:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "автоматична" + +#: src/variable.c:1789 +msgid "default" +msgstr "типовий" + +#: src/variable.c:1792 +msgid "environment" +msgstr "визначена у Ñередовищі" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "файл make" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "заданий ключ -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "визначена у командному Ñ€Ñдку" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "Директива «override»" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (з \"%s\", Ñ€Ñдок %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# Ñтан змінних у хеш-таблиці:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Змінні\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Специфічні Ð´Ð»Ñ Ð·Ñ€Ð°Ð·ÐºÐ° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ…" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Ðемає Ñпецифічних Ð´Ð»Ñ Ð·Ñ€Ð°Ð·ÐºÐ° значень змінних." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u Ñпецифічних Ð´Ð»Ñ Ð·Ñ€Ð°Ð·ÐºÐ° значень змінних" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "попередженнÑ: невизначена змінна \"%.*s\"" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() повернуто код помилки %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-попередженнÑ, ймовірно, вам варто повторно увімкнути обробку CTRL-Y з DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "ВБУДОВÐÐИЙ 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 "ДопиÑати виведенні дані до %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "ДопиÑати %.*s Ñ– Ñпорожнити\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "ЗаміÑть заданого виконуєтьÑÑ %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# ШлÑхи пошуку VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Ðе визначено шлÑÑ… пошуку \"vpath\"." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u шлÑхи пошуку \"vpath\".\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Ðе визначено загальний шлÑÑ… пошуку (змінна \"VPATH\")." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Загальний шлÑÑ… пошуку (змінна \"VPATH\"):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Слоти Ñервера завдань обмежено значеннÑм %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "Ñтворюємо Ñемафор Ñервера завдань: (помилка %ld: %s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Клієнт Ñервера завдань (Ñемафор %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "ÑпуÑкаємо Ñемафор Ñервера завдань: (Помилка %ld: %s)" + +#: 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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: не знайдено команди\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Командний процеÑор не знайдений" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s призупинÑєтьÑÑ Ð½Ð° 30 Ñекунд..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "виконано sleep(30). Продовжуємо.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Ðевідома помилка %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Увага: Файл \"%s\" має майбутній Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸" + +#~ msgid " terminal." +#~ msgstr "." + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: Ñпроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ€ÐµÑ†ÐµÐ¿Ñ‚Ð° Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s» зазнала невдачі" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Помилка 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "дублюємо Ñервер завдань" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "ПопередженнÑ: порожнє переÑпрÑмуваннÑ\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: «%s» command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "ВБУДОВÐÐИЙ [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "ВБУДОВÐÐЕ ECHO %s->%s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Ðевідома вбудована команда \"%s\".\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ "У .ONESHELL Ñ†Ñ Ð²Ð±ÑƒÐ´Ð¾Ð²Ð°Ð½Ð° команда Ñ” невідомою або непідтримуваною: «%s»\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Помилка, Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "ПереÑпрÑмоване Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð· %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилку переÑпрÑмовано до %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "ПереÑпрÑмовуємо Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð¾ %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Помилка Ð¿Ð¾Ñ€Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: вказано декілька параметрів --sync-mutex" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: вказано декілька ключів --jobserver-fds" + +#~ msgid "virtual memory exhausted" +#~ msgstr "віртуальна пам'Ñть вичерпана" + +#~ msgid "write error" +#~ msgstr "помилка запиÑу" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "ВБУДОВÐÐИЙ RM %s\n" + +#~ msgid "# Invalid value in 'update_status' member!" +#~ msgstr "# Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð»ÐµÐ½Ð° \"update_status\"!" + +#~ msgid "unknown trace mode '%s'" +#~ msgstr "невідомий режим траÑÑƒÐ²Ð°Ð½Ð½Ñ Â«%s»" diff --git a/local/recipes/dev/gnu-make/source/po/vi.gmo b/local/recipes/dev/gnu-make/source/po/vi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..400637efeac64b94f8aaae051940bc31d033aaa1 GIT binary patch literal 42515 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 literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/vi.po b/local/recipes/dev/gnu-make/source/po/vi.po new file mode 100644 index 0000000000..6d1eee5fe3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/vi.po @@ -0,0 +1,2625 @@ +# Vietnamese translation for Make. +# Bản dịch tiếng Việt dành cho make. +# Copyright © 2016 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Clytie Siddall , 2006-2010. +# Nguyá»…n Thái Ngá»c Duy , 2012. +# Trần Ngá»c Quân , 2012-2014, 2016, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\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 \n" +"Language-Team: Vietnamese \n" +"Language: vi\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=1; plural=0;\n" +"X-Language-Team-Website: \n" +"X-Generator: Poedit 2.2.4\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: 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: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:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Kho “%s†không tồn tại" + +#: 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: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: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â€" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"lbr$set_module() đã không giải nén thông tin vá» mô-Ä‘un, trạng thái = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() bị lá»—i vá»›i trạng thái = %d" + +#: src/arscan.c:261 +#, c-format +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: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:996 +msgid " (name might be truncated)" +msgstr " (có lẽ tên đã bị cắt ngắn)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Ngày %s" + +#: 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: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:501 +msgid "*** Break.\n" +msgstr "*** Ngắt.\n" + +#: 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: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:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Äang xóa tập tin “%sâ€" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Äang xóa tập tin “%sâ€" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# công thức cần thá»±c hiện" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (dá»±ng-sẵn):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (từ “%sâ€, dòng %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Thư mục\n" + +#: 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: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: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: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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (khóa %s, mtime %I64u): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (thiết bị %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Không" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " tập tin, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "không" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " việc không thể làm được" + +#: src/dir.c:1180 +msgid " so far." +msgstr " cho đến giá»." + +#: 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: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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "tham chiếu biến chưa chấm dứt" + +#: 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: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: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: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: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: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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Äang xóa tập tin trung gian “%sâ€" + +#: 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: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: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:1089 +msgid "# Not a target:" +msgstr "# Không phải là đích:" + +#: 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:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Äích giả (Ä‘iá»u kiện tiên quyết cá»§a .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Äích dòng lệnh." + +#: 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:1102 +msgid "# Builtin rule" +msgstr "# Quy tắc dá»±ng sẵn" + +#: 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: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:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Cuống mẫu ngầm/tÄ©nh: “%sâ€\n" + +#: 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: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:1123 +msgid "# Modification time never checked." +msgstr "# Chưa kiểm tra giá» sá»­a đổi." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Tập tin không tồn tại." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Tập tin rất cÅ©." + +#: 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:1135 +msgid "# File has been updated." +msgstr "# Tập tin đã được cập nhật." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Tập tin chưa được cập nhật." + +#: 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: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:1151 +msgid "# Successfully updated." +msgstr "# Cập nhật thành công." + +#: 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:1158 +msgid "# Failed to be updated." +msgstr "# Gặp lá»—i khi cập nhật." + +#: 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:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Tập tin" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# thống kê bảng băm tập tin:\n" +"# " + +#: 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: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: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: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:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "đối số thứ hai không phải số cho hàm “wordlistâ€" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) gặp lá»—i (e=%ld)\n" + +#: src/function.c: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:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() bị lá»—i (e=%ld)\n" + +#: 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: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: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:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "mở: %s: %s" + +#: 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:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "đóng: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: quá ít đối số" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read: %s: %s" + +#: 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: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: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: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:2791 +#, c-format +msgid "Empty function name" +msgstr "Tên hàm trống rá»—ng" + +#: 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:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Tên hàm quá dài: %s" + +#: 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: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â€" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: tùy chá»n “%s†chưa rõ ràng\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: tùy chá»n “--%s†không nhận đối số\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: tùy chá»n “%c%s†không nhận đối số\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: tùy chá»n “%s†cần má»™t đối số\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: không nhận ra tùy chá»n “--%sâ€\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: không nhận ra tùy chá»n “%c%sâ€\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: tùy chá»n không hợp lệ -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: tùy chá»n không hợp lệ -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: tùy chá»n cần má»™t đối số -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: tùy chá»n “-W %s†chưa rõ ràng\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: tùy chá»n “-W %s†không nhận má»™t đối số\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Äang khai triển “%sâ€\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Äang định giá “%sâ€\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "không thể cấp phát %lu byte cho bảng băm: hết bá»™ nhá»›" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Tải =%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Băm lại=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Xung đột =%lu/%lu=%.0f%%" + +#: 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: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: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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: 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:506 +#, c-format +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: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: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: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: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 '%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: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/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:552 +msgid " (core dumped)" +msgstr " (đổ lõi)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (bá» qua)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: 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: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: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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (máy chá»§)" + +#: 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: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: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: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: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: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: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:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Äếm được %d đối số trong lần khởi chạy bị lá»—i\n" + +#: 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: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: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: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:2106 +msgid "cannot enforce load limit: " +msgstr "không thể buá»™c giá»›i hạn tải: " + +#: 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: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: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: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: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: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: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: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: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: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:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Ná»™i dung tập tin bó lệnh:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Ná»™i dung tập tin bó lệnh:%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 (dòng %d) Ngữ cảnh shell sai (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +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: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: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: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:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Äang tải ký hiệu %s từ %s\n" + +#: 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" +msgstr "Không há»— trợ thao tác “load†trên hệ thống này." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Tùy chá»n:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Bá» qua để tương thích.\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +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: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: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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Biến môi trưá»ng đè tập tin makefile.\n" + +#: 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:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +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: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: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:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +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:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +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: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:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +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: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: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" +" Không chạy công thức; chỉ in chúng ra.\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 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:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[KIỂU], --output-sync[=KIỂU]\n" +" Äồng bá»™ hóa kết xuất công việc song song theo " +"KIỂU.\n" + +#: 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: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: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: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: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: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:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Tắt -k.\n" + +#: 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:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Hiển thị thông tin dấu vết.\n" + +#: 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: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: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:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +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: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: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: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:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "không hiểu kiểu output-sync “%sâ€" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Cách dùng: %s [các_tùy_chá»n] [đích] …\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Chương trình này đã được dịch cho %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Chương trình này đã được dịch cho %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Hãy thông báo lá»—i cho \n" +"Hãy thông báo lá»—i dịch cho .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Bắt được ngắt/ngoại lệ (mã = 0x%lx, địa chỉ = 0x%p)\n" + +#: src/main.c: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" +"Bá»™ lá»c ngoại lệ không quản lý được gá»i từ chương trình %s\n" +"ExceptionCode (mã ngoại lệ) = %lx\n" +"ExceptionFlags (các cá» ngoại lệ) = %lx\n" +"ExceptionAddress (địa chỉ ngoại lệ) = 0x%p\n" + +#: 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: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: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: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: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." +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: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: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:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (tập tin tạm)" + +#: 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: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: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: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: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: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" + +# 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: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:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Không tìm thấy makefile “%sâ€" + +#: 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:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Thá»±c hiện lại[%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Không có đích" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Äang cập nhật đích mong muốn…\n" + +#: 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: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: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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sÄÆ°á»£c biên dịch cho %s\n" + +#: 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:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sGiấy phép GPL pb3+: Giấy phép Công cá»™ng GNU phiên bản 3 hay sau \n" +"%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:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# CÆ¡ sở dữ liệu Make, in lúc %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Hoàn tất cÆ¡ sở dữ liệu Make lúc %s\n" + +# 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 value %s: not a directory" +msgstr "" + +#: 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: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: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:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (tập tin tạm)" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Rá»i khá»i thư mục lạ\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Vào thư mục “%sâ€\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Rá»i thư mục “%sâ€\n" + +#: 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: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:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Vào thư mục “%sâ€\n" + +#: 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:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Dừng.\n" + +# Variable: don't translate / Biến: đừng dịch +#: 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 "" + +#: 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:190 +msgid "creating jobs pipe" +msgstr "tạo ống dẫn công việc" + +#: 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:207 +msgid "init jobserver pipe" +msgstr "khởi tạo đưá»ng ống “jobserverâ€" + +#: 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:363 +msgid "write jobserver" +msgstr "ghi lại trình phục vụ công việc" + +#: 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:486 +msgid "pselect jobs pipe" +msgstr "pselect (chá»n tiến trình?) ống dẫn công việc" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "Ä‘á»c ống dẫn công việc" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Äang Ä‘á»c makefile “%sâ€" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (không có mục đích mặc định)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (đưá»ng dẫn tìm kiếm)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (không quan tâm)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (không nối thêm ~)" + +#: 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: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: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: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:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "thiếu quy tắc trước công thức" + +#: 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:1156 +#, c-format +msgid "missing separator" +msgstr "thiếu dấu phân cách" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "thiếu mẫu đích" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "nhiá»u mẫu đích" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "mẫu đích không chứa “%%â€" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "thiếu chỉ thị “endifâ€" + +#: 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: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:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "thiếu “endefâ€, chỉ thị “define†chưa hoàn thiện" + +#: 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: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:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "gặp “%s†thừa" + +#: 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: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: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: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: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:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "trá»™n quy tắc ngầm và thưá»ng" + +#: 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: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: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: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: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: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: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: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: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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "“%s†đã cập nhật rồi." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Xén bá»›t tập tin “%sâ€.\n" + +#: 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: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:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Coi tập tin đích “%sâ€.\n" + +#: 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: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: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: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: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:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +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: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: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: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: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: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:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Chịu thua tập tin đích “%sâ€.\n" + +#: 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: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: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: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: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: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: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:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Tạo “%s†do cỠ“always-makeâ€.\n" + +#: 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:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; dùng tên VPATH “%sâ€" + +#: 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:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Bá» qua tên VPATH “%sâ€.\n" + +#: 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: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: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: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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Dùng lệnh mặc định cho “%sâ€.\n" + +#: 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: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: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:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Quy tắc ngầm" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Không có quy tắc ngầm." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u quy tắc ngầm, %u (%.1f%%) đầu cuối." + +#: 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ạ" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Treo" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Ngắt" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Thoát" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Chỉ lệnh không hợp lệ" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Bẫy vết/Ä‘iểm ngắt" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Bị há»§y bá»" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Bẫy IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Bẫy EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Ngoại lệ dấu chấm động" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Bị buá»™c kết thúc" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Lá»—i bus" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Lá»—i phân Ä‘oạn" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Lệnh gá»i hệ thống sai" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "á»ng dẫn há»ng" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Äồng hồ báo động" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Äã chấm dứt" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Tín hiệu tá»± định nghÄ©a 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Tín hiệu tá»± định nghÄ©a 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Tiến trình con đã thoát" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Mất Ä‘iện đột ngá»™t" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Bị ngừng" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Bị ngừng (đầu vào tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Bị ngừng (đầu ra tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Bị ngừng (tín hiệu)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Vượt giá»›i hạn thá»i gian CPU" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Vượt giá»›i hạn kích cỡ tập tin" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Bá»™ đếm thá»i gian ảo đã hết hạn" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Hết hạn đếm thá»i gian khi theo dõi cách sá»­ dụng tiá»m năng hệ thống" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Cá»­a sổ bị thay đổi" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Äã tiếp tục" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Äiá»u kiện I/O khẩn cấp" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O có thể" + +# Literal: don't translate / NghÄ©a chữ: đừng dịch +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +# Literal: don't translate / NghÄ©a chữ: đừng dịch +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Tài nguyên bị mất" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Tín hiệu nguy hiểm" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Yêu cầu thông tin" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Không có bá»™ đồng xá»­ lý số thá»±c dấu chấm động" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Không có bá»™ đệm 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 bá»™ đệm strcache: %lu (%lu) / chuá»—i = %lu / lưu = %lu B / t.bình = " +"%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 đệm hiện tại: kcỡ = %hu B / đã dùng = %hu B / slượng = %hu / tbình = %u " +"B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s được dùng khác: tổng = %lu B / s.lượng = %lu / t.bình = %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 trống khác: tổng = %lu B / tÄ‘a = %lu B / t.thiểu = %lu B / t.bình = %hu " +"B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s hiệu năng strcache: tra cứu = %lu / tá»· lệ trúng = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# thống kê bảng băm tập tin:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "tá»± động" + +#: src/variable.c:1789 +msgid "default" +msgstr "mặc định" + +#: src/variable.c:1792 +msgid "environment" +msgstr "môi trưá»ng" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "môi trưá»ng vá»›i -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "dòng lệnh" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "chỉ thị “overrideâ€" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (từ “%sâ€, dòng %lu)" + +#: 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:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Biến\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Giá trị biến đặc tả cho mẫu" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Không có giá trị biến đặc tả cho mẫu." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u giá trị biến đặc tả cho mẫu" + +#: 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" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() gặp lá»—i vá»›i %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-warning, có lẽ bạn cần phải bật lại xá»­ lý CTRL-Y từ DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN 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 "Nối thêm đầu ra vào %s\n" + +#: 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:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Thá»±c hiện %s để thay thế\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# ÄÆ°á»ng dẫn tìm kiếm VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Không có đưá»ng dẫn tìm kiếm “vpathâ€." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u đưá»ng dẫn tìm kiếm “vpathâ€.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Không có đưá»ng dẫn tìm kiếm chung (biến “VPATHâ€)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# ÄÆ°á»ng dẫn tìm kiếm chung (biến “VPATHâ€):\n" +"# " + +#: 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: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: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: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: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: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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Không tìm thấy lệnh\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Không tìm thấy chương trình hệ vá»" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s Ä‘ang ngưng trong 30 giây…" + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "đã ngá»§(30). Tiếp tục.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Lá»—i chưa biết %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Cảnh báo: Tập tin “%s†có giá» sá»­a đổi ở thì tương lai." + +#~ msgid " terminal." +#~ msgstr " thiết bị cuối." + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: công thức cho đích “%s†gặp lá»—i" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Lá»—i 0x%x%s" + +# Variable: don't translate / Biến: đừng dịch +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "dup jobserver" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Cảnh báo: Chuyển hướng trống rá»—ng\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "lá»—i ná»™i bá»™: command_state “%sâ€" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "BUILTIN [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "BUILTIN ECHO %s->%s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Không hiểu lệnh dá»±ng sẵn “%sâ€\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ "Lệnh dá»±ng sẵn là chưa biết hoặc không được há»— trợ trong .ONESHELL: “%sâ€\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Lá»—i, lệnh trống rá»—ng\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Äã chuyển hướng đầu vào từ %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Äã chuyển hướng lá»—i tá»›i %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Äã chuyển hướng đầu ra tá»›i %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Gặp lá»—i sản sinh tiến trình, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "lá»—i ná»™i bá»™: có nhiá»u tùy chá»n --sync-mutex" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "lá»—i ná»™i bá»™: có nhiá»u tùy chá»n --jobserver-fds" + +#~ msgid "virtual memory exhausted" +#~ msgstr "hết bá»™ nhá»› ảo" + +#~ msgid "write error" +#~ msgstr "lá»—i ghi" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "BUILTIN RM %s\n" + +#~ msgid "# Invalid value in 'update_status' member!" +#~ msgstr "# Gặp giá trị sai trong thành phần “update_statusâ€!" + +#~ msgid "unknown trace mode '%s'" +#~ msgstr "không hiểu chế độ theo vết “%sâ€" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Lá»—i 0x%x (bá» qua)" + +#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n" +#~ msgstr "Gá»i công thức từ %s:%lu để cập nhật đích “%sâ€.\n" + +#~ msgid "Invoking builtin recipe to update target `%s'.\n" +#~ msgstr "Gá»i công thức dá»±ng sẵn để cập nhật đích “%sâ€.\n" + +#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n" +#~ msgstr "%s # vùng đệm strcache: %d (* %d B/buffer = %d B)\n" + +#~ msgid "" +#~ "\n" +#~ "# strcache hash-table stats:\n" +#~ "# " +#~ msgstr "" +#~ "\n" +#~ "# thống kê bảng băm strcache:\n" +#~ "# " + +#~ msgid "process_easy() failed failed to launch process (e=%ld)\n" +#~ msgstr "" +#~ "Việc process_easy() (tiến trình dá»…) bị lá»—i khi cố khởi chạy tiến trình (e=" +#~ "%ld)\n" + +#~ 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 "" +#~ "%sPhần má»m này tá»± do; hãy xem mã nguồn để tìm thấy Ä‘iá»u kiện sao chép.\n" +#~ "%sKhông bảo đảm gì cả, dù khả năng bán hay khả năng làm việc dứt khoát.\n" +#~ "%s\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "gặp “endef†bắt nguồn ở ngoài" + +#~ msgid "empty `override' directive" +#~ msgstr "chỉ thị “override†(đè) rá»—ng" + +#~ msgid "invalid `override' directive" +#~ msgstr "chỉ thị “override†(đè) không hợp lệ" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "* cảnh báo, CTRL-Y sẽ để má»™t số tiến trình con còn lại.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Äừng ghi rõ “-j†hay “--jobs†nếu không sẵn sàng." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Äang đặt lại trình make cho chế độ công việc đơn." diff --git a/local/recipes/dev/gnu-make/source/po/zh_CN.gmo b/local/recipes/dev/gnu-make/source/po/zh_CN.gmo new file mode 100644 index 0000000000000000000000000000000000000000..36a485661490486e3b697ca503c6764c3ac6d7a5 GIT binary patch literal 37823 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 cz00;4f6!~T, 2002. +# LI Daobing , 2008, 2013. +# Mingye Wang , 2015, 2016. +# Boyuan Yang <073plan@gmail.com>, 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2020-01-05 15:27-0500\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" +"Language-Team: Chinese (simplified) \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 2.2.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "è¯•å›¾ä½¿ç”¨ä¸æ”¯æŒçš„功能:“%sâ€" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "VMS ç³»ç»Ÿä¸Šä¸æ”¯æŒ touch å½’æ¡£æˆå‘˜" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch:归档文件“%sâ€ä¸å­˜åœ¨" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch:“%sâ€ä¸æ˜¯åˆæ³•的归档文件" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch:在“%2$sâ€ä¸­ä¸å­˜åœ¨æˆå‘˜â€œ%1$sâ€" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch:“%sâ€ä¸Šçš„ ar_member_touch 的返回ç ä¸å½“" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_modules() èŽ·å–æ¨¡å—ä¿¡æ¯å¤±è´¥ï¼Œè¿”å›žçŠ¶æ€ = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() å¤±è´¥ï¼Œè¿”å›žçŠ¶æ€ = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "无法打开库“%sâ€ä»¥å¯»æ‰¾æˆå‘˜ï¼ŒçŠ¶æ€ %d" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (åç§°å¯èƒ½è¢«æˆªæ–­)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " 日期 %s" + +#: 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:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "命令酿–¹è¡Œæ•°å¤ªå¤š (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** 中断。\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] å½’æ¡£æˆå‘˜â€œ%sâ€å¯èƒ½æ˜¯å‡çš„;未删除" + +# 是化学的æˆåˆ†ï¼Œæ˜¯ç‰¹æŠ€ï¼ +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** å½’æ¡£æˆå‘˜â€œ%sâ€å¯èƒ½æ˜¯å‡çš„;未删除" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] 正在删除文件“%sâ€" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** 正在删除文件“%sâ€" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# è¦æ‰§è¡Œçš„é…æ–¹" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (内置):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (从“%sâ€ï¼Œè¡Œ %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# 目录\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s:无法对其进行 stat æ“作。\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: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:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (设备 %ld,i-节点 %ld):无法打开。\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (关键字 %s,修改时间 %I64u):" + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):" + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (设备 %ld,i-节点 %ld):" + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "æ— " + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " 文件, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "æ— " + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " ä¸å¯èƒ½" + +#: src/dir.c:1180 +msgid " so far." +msgstr " 迄今为止。" + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " ä¸å¯èƒ½åœ¨ %lu 目录中。\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "未终止的å˜é‡å¼•用" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "关于文件“%sâ€çš„命令酿–¹åœ¨ %s:%lu 处指定," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "关于文件“%sâ€çš„命令酿–¹é€šè¿‡éšå«è§„则æœç´¢è€Œæ‰¾åˆ°ï¼Œ" + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "但“%sâ€çŽ°åœ¨è¢«çœ‹åšâ€œ%sâ€çš„åŒä¸€ä¸ªæ–‡ä»¶ã€‚" + +#: 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:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "无法将å•冒å·â€œ%sâ€é‡å‘½å为åŒå†’å·â€œ%sâ€" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "无法将åŒå†’å·â€œ%sâ€é‡å‘½å为å•冒å·â€œ%sâ€" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** 正在删除中间文件“%sâ€" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "正在删除中间文件...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%sï¼šæ—¶é—´æ ‡è®°è¶…å‡ºèŒƒå›´ï¼›æ­£åœ¨æ›¿æ¢ %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# 䏿˜¯ä¸€ä¸ªç›®æ ‡ï¼š" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# é‡è¦æ–‡ä»¶ (.PRECIOUSçš„å‰æ)。" + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# å‡ç›®æ ‡ (.PHONYçš„å‰æ)。" + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# 命令行目标。" + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# 缺çœçš„ã€MAKEFILES 指定的ã€-include/sinclude 包å«çš„ makefile。" + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# 内建规则" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# 对éšå«è§„则的æœç´¢å·²å®Œæˆã€‚" + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# 对éšå«è§„则的æœç´¢å°šæœªå®Œæˆã€‚" + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# éšå«/陿€æ¨¡å¼ä¸»å¹²ï¼šâ€œ%sâ€\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# æ–‡ä»¶æ˜¯ä¸€ä¸ªä¸­é—´å‰æã€‚" + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# ä»Žä¸æ£€æŸ¥ä¿®æ”¹æ—¶é—´ã€‚" + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# 文件ä¸å­˜åœ¨ã€‚" + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# 文件éžå¸¸é™ˆæ—§ã€‚" + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# 最近更新 %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# 文件已ç»è¢«æ›´æ–°ã€‚" + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# 文件尚未被更新。" + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# 正在è¿è¡Œçš„é…æ–¹ (这是 BUG)。" + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# 正在è¿è¡Œçš„ä¾èµ–æ€§é…æ–¹ (这是 BUG)。" + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# æ›´æ–°æˆåŠŸã€‚" + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# éœ€è¦æ›´æ–° (用 -q 设定)。" + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# 更新失败。" + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# “command_stateâ€æˆå‘˜ä¸­å­˜åœ¨æ— æ•ˆçš„值ï¼" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# 文件" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# 文件æ‚凑表状æ€:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s:字段“%sâ€æœªè¢«ç¼“存:%s" + +#: 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:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "“wordâ€å‡½æ•°çš„ç¬¬ä¸€ä¸ªå‚æ•°å¿…须大于 0" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "“wordlistâ€å‡½æ•°çš„ç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" + +#: 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:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) 失败 (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:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() 失败 (e=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() 失败\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "æ­£åœ¨æ¸…é™¤ä¸´æ—¶æ‰¹å¤„ç†æ–‡ä»¶ %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file:缺少文件å" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close:%s:%s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "fileï¼šå¤ªå¤šå‚æ•°" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read:%s:%s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file:无效文件(file)æ“作:%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:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "在本平å°ä¸Šæœªå®žçŽ°ï¼šå‡½æ•°â€œ%sâ€" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "对函数“%sâ€çš„æœªç»ˆæ­¢çš„è°ƒç”¨ï¼šé—æ¼â€œ%câ€" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "空函数å" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "无效的函数å称:%s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "函数å称太长:%s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "函数“%2$sâ€çš„æœ€å°‘傿•°æ•°é‡ (%1$u) 无效" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "函数“%2$sâ€çš„æœ€å¤šå‚æ•°æ•°é‡ (%1$u) 无效" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s:选项“%sâ€å«ä¹‰ä¸æ¸…\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s:选项“--%sâ€ä¸å…è®¸å‚æ•°\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s:选项“%c%sâ€ä¸å…è®¸å‚æ•°\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s:选项“%sâ€éœ€è¦ä¸€ä¸ªå‚æ•°\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s:无法识别的选项“--%sâ€\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s:无法识别的选项“%c%sâ€\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%sï¼šéžæ³•选项 -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%sï¼šéžæ³•选项 -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s:选项需è¦ä¸€ä¸ªå‚æ•° -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s:选项“-W %sâ€å«ä¹‰ä¸æ¸…\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s:选项“-W %sâ€ä¸å…è®¸ç»™å‡ºå‚æ•°\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: 正拓展 '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: 正求值 '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "无法为æ‚å‡‘è¡¨åˆ†é… %lu 字节: 内存耗尽" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "è´Ÿè½½=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "釿–°æ‚凑=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "碰撞=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "正在为“%sâ€å¯»æ‰¾éšå«è§„则。\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "正在为“%sâ€å¯»æ‰¾å½’æ¡£æˆå‘˜éšå«è§„则。\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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "用主干“%.*sâ€å°è¯•åŒ¹é…æ¨¡å¼è§„则。\n" + +#: src/implicit.c:506 +#, c-format +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:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "æ‹’ç»ä¸å¯èƒ½çš„éšå«å‰æâ€œ%sâ€ã€‚\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "å°è¯•è§„åˆ™å‰æâ€œ%sâ€ã€‚\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "å°è¯•éšå«å‰æâ€œ%sâ€ã€‚\n" + +#: 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 +#, 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: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/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:552 +msgid " (core dumped)" +msgstr " (核心已转储)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (已忽略)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<内置>" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s:%s] 错误 %d%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** 正在等待未完æˆçš„任务...." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (远程)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "正在中止获胜的å­è¿›ç¨‹ %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "正在中止失败的å­è¿›ç¨‹ %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "正在清除临时批文件 %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "清ç†ä¸´æ—¶æ‰¹å¤„ç†æ–‡ä»¶ %s 失败 (%d)\n" + +#: 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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "为å­è¿›ç¨‹ %p (%s) 释放令牌 (token)。\n" + +#: 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:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"失败执行中共有 %d ä¸ªå‚æ•°ã€‚\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "获得至进程 %p (%s) 的标记。\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s:更新“%sâ€ï¼Œå› ä¸ºï¼š%s" + +#: 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:2106 +msgid "cannot enforce load limit: " +msgstr "无法实施负载é™åˆ¶ï¼š" + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "æ²¡æœ‰å‰©ä½™çš„æ–‡ä»¶å¥æŸ„: 无法å¤åˆ¶æ ‡å‡†è¾“å…¥\n" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "æ²¡æœ‰å‰©ä½™çš„æ–‡ä»¶å¥æŸ„: 无法å¤åˆ¶æ ‡å‡†è¾“出\n" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "æ²¡æœ‰å‰©ä½™çš„æ–‡ä»¶å¥æŸ„: 无法å¤åˆ¶æ ‡å‡†é”™è¯¯\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "无法还原标准输入\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "无法还原标准输出\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "无法还原标准错误\n" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: 环境å˜é‡ç©ºé—´å¯èƒ½ä¼šè€—å°½" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL å·²æ”¹å˜ (原为“%sâ€ï¼ŒçŽ°ä¸ºâ€œ%sâ€)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "正在创建临时批文件 %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"æ‰¹å¤„ç†æ–‡ä»¶å†…容:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"æ‰¹å¤„ç†æ–‡ä»¶å†…容:%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 (行 %d) 错误的 shell 上下文 (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "打开全局符å·è¡¨å¤±è´¥ï¼š%s" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "从 %2$s åŠ è½½ç¬¦å· %1$s 失败:%3$s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "è¦åŠ è½½çš„ç¬¦å·å为空:%s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "正从 %2$s åŠ è½½ç¬¦å· %1$s\n" + +#: 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" +msgstr "本平å°ä¸æ”¯æŒâ€œloadâ€æ“作。" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "选项:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m 为兼容性而忽略。\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make æ— æ¡ä»¶åˆ¶ä½œ (make) 所有目标。\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr " -C 目录, --directory=目录 在执行å‰å…ˆåˆ‡æ¢åˆ° <目录>。\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d 打å°å¤§é‡è°ƒè¯•ä¿¡æ¯ã€‚\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr " --debug[=æ——æ ‡] 打å°å„ç§è°ƒè¯•ä¿¡æ¯ã€‚\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" 环境å˜é‡è¦†ç›– makefile 中的å˜é‡ã€‚\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr " -E 字串, --eval=字串 å°† <字串> 作为 makefile 语å¥ä¼°å€¼ã€‚\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f 文件, --file=文件, --makefile=文件\n" +" 从 <文件> 中读入 makefile。\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help 打å°è¯¥æ¶ˆæ¯å¹¶é€€å‡ºã€‚\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors 忽略æ¥è‡ªå‘½ä»¤é…方的错误。\n" + +#: 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: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: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: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" +" 在系统负载高于 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 使用软链接åŠè½¯é“¾æŽ¥ç›®æ ‡ä¸­ä¿®æ”¹æ—¶é—´è¾ƒæ™šçš„一个。\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" +" åªæ‰“å°å‘½ä»¤é…方,ä¸å®žé™…执行。\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 文件, --old-file=文件, --assume-old=文件\n" +" å°† <文件> 当åšå¾ˆæ—§ï¼Œä¸å¿…釿–°åˆ¶ä½œã€‚\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[类型], --output-sync[=类型]\n" +" 使用 <类型> æ–¹å¼åŒæ­¥å¹¶è¡Œä»»åŠ¡è¾“å‡ºã€‚\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question ä¸è¿è¡Œä»»ä½•é…æ–¹ï¼›é€€å‡ºçжæ€è¯´æ˜Žæ˜¯å¦å·²å…¨éƒ¨æ›´æ–°ã€‚\n" + +#: 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:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr " -R, --no-builtin-variables ç¦ç”¨å†…ç½®å˜é‡è®¾ç½®ã€‚\n" + +#: 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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr " --no-silent 坹酿–¹è¿›è¡Œå›žæ˜¾ï¼ˆç¦ç”¨ --silent 模å¼ï¼‰ã€‚\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" 关闭 -k。\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch touch ç›®æ ‡ï¼ˆæ›´æ–°ä¿®æ”¹æ—¶é—´ï¼‰è€Œä¸æ˜¯é‡æ–°åˆ¶ä½œå®ƒ" +"们。\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace 打å°è·Ÿè¸ªä¿¡æ¯ã€‚\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version æ‰“å° make 的版本å·å¹¶é€€å‡ºã€‚\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory 打å°å½“å‰ç›®å½•。\n" + +#: 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:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W 文件, --what-if=文件, --new-file=文件, --assume-new=文件\n" +" å°† <文件> å½“åšæœ€æ–°ã€‚\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr " --warn-undefined-variables 当引用未定义å˜é‡çš„æ—¶å€™å‘出警告。\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "未知的调试级别定义“%sâ€" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "䏿˜Žè¾“å‡ºåŒæ­¥ç±»åž‹â€œ%sâ€" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "用法:%s [选项] [目标] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"该程åºä¸º %s 编译\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"该程åºä¸º %s (%s) 编译\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "报告错误到 \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s:æ•获中断/异常 (ä»£ç  = 0x%lx, åœ°å€ = 0x%p)\n" + +#: src/main.c: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" +"ä»Žç¨‹åº %s 产生的未处ç†çš„异常过滤器\n" +"å¼‚å¸¸ç  = %lx\n" +"异常标志 = %lx\n" +"å¼‚å¸¸åœ°å€ = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "访问冲çªï¼šåœ°å€ 0x%p 处的写æ“作\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "访问冲çªï¼šåœ°å€ 0x%p 处的读æ“作\n" + +#: 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: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: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:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "警告: å­ make 中强制 -j%d: é‡ç½® jobserver 模å¼ã€‚" + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "两次指明æ¥è‡ªæ ‡å‡†è¾“入的 makefile。" + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (临时文件)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "警告: å­ make 中强制 -j%d: é‡ç½® jobserver 模å¼ã€‚" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "本平å°ä¸æ”¯æŒå¹¶è¡Œä»»åŠ¡ (-j)。" + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "é‡ç½®ä¸ºå•ä»»åŠ¡æ¨¡å¼ (-j1)。" + +#: 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: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:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefile “%sâ€å¯èƒ½å¾ªçŽ¯ï¼›ä¸ä¼šé‡æ–°æ‰§è¡Œå®ƒã€‚\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: 加载失败" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "釿–°æ‰§è¡Œ makefile“%sâ€å¤±è´¥ã€‚" + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "找ä¸åˆ°è¢«å¼•入的 makefile“%sâ€ã€‚" + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "找ä¸åˆ° makefile “%sâ€" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "无法回到原始目录。" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "釿–°æ‰§è¡Œ[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL 包å«å¤šä½™ä¸€ä¸ªç›®æ ‡" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "无目标" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "没有指明目标并且找ä¸åˆ° makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "更新目标....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "警告:检测到时钟错误。您的构建版本å¯èƒ½æ˜¯ä¸å®Œæ•´çš„。" + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "“%s%sâ€é€‰é¡¹éœ€è¦éžç©ºå­—ç¬¦ä¸²å‚æ•°" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "“-%câ€é€‰é¡¹éœ€è¦æ­£æ•´æ•°å‚æ•°" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%s为 %s 编译\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%s为 %s (%s) 编译\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%s许å¯è¯ï¼šGPLv3+:GNU 通用公共许å¯è¯ç¬¬ 3 版或更新版本。\n" +"%s本软件是自由软件:您å¯ä»¥è‡ªç”±ä¿®æ”¹å’Œé‡æ–°å‘布它。\n" +"%s在法律å…许的范围内没有其他ä¿è¯ã€‚\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# make æ•°æ®åŸºç¡€ï¼Œæ‰“å°åœ¨ %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# 在 %s ä¸Šå®Œæˆ make æ•°æ®åŸºç¡€\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: 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:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "删除 (临时文件):" + +#: 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 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: 进入一个未知的目录\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: 离开一个未知的目录\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: 进入目录“%sâ€\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: 离开目录“%sâ€\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: 进入一个未知的目录\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: 离开一个未知的目录\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: 进入目录“%sâ€\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: 离开目录“%sâ€\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr "。 åœæ­¢ã€‚\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 "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "䏿˜Žè¾“å‡ºåŒæ­¥ç±»åž‹â€œ%sâ€" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "正在创建任务管é“" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "正在å¤åˆ¶ä»»åŠ¡ç®¡é“" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "åˆå§‹åŒ–任务æœåŠ¡å™¨ç®¡é“" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "å†…éƒ¨é”™è¯¯ï¼šéžæ³• --jobserver-auth 验è¯å­—符串“%sâ€" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "写入任务æœåС噍" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "任务æœåС噍关闭" + +# , fuzzy +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect 任务管é“" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "读å–任务管é“" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "正在读入 makefile “%sâ€" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (没有缺çœç›®æ ‡)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (æœç´¢è·¯å¾„)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (ä¸ç”¨ç†)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (没有 ~ 扩展)" + +#: 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:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "跳过 Makefile 缓冲区中的 UTF-8 BOM\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "æ¡ä»¶ä¸­å«æœ‰æ— æ•ˆè¯­æ³•" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "é…æ–¹åœ¨ç¬¬ä¸€ä¸ªç›®æ ‡å‰å¼€å§‹" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "é…æ–¹ä¹‹å‰é—æ¼äº†è§„则" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "分隔符缺失 (你大概想用 TABï¼Œè€Œä¸æ˜¯å…«ä¸ªç©ºæ ¼)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "缺失分隔符" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "无目标匹é…" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "多个目标匹é…" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "目标模å¼ä¸å«æœ‰â€œ%%â€" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "é—æ¼â€œendifâ€" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "空å˜é‡å" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "“endefâ€æŒ‡ä»¤åŽå«æœ‰ä¸è¯¥å‡ºçŽ°çš„æ–‡å­—" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "é—æ¼â€œendefâ€ï¼Œæœªç»ˆæ­¢çš„“defineâ€" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "“endefâ€æŒ‡ä»¤åŽå«æœ‰ä¸è¯¥å‡ºçŽ°çš„æ–‡å­—" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "在“%sâ€æŒ‡ä»¤ä¹‹åŽå«æœ‰ä¸è¯¥å‡ºçŽ°çš„æ–‡å­—" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "ä¸è¯¥å‡ºçŽ°çš„â€œ%sâ€" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "æ¯ä¸ªæ¡ä»¶åªèƒ½æœ‰ä¸€ä¸ªâ€œelseâ€" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "畸形的针对目标的标é‡å®šä¹‰" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "æˆç»„的目标必须æä¾›ä¸€ä¸ªé…æ–¹" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "混和的éšå«å’Œé™æ€æ¨¡å¼è§„则" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "混和的éšå«å’Œæ™®é€šè§„则" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "目标“%sâ€ä¸åŒ¹é…目标模å¼" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "目标文件“%sâ€å«æœ‰ : å’Œ :: ä¸¤ç§æ¡ç›®" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "目标“%sâ€åœ¨åŒä¸€ä¸ªè§„则中给出了多次" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "警告:覆盖关于目标“%sâ€çš„é…æ–¹" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "警告:忽略关于目标“%sâ€çš„æ—§é…æ–¹" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** éšå«å’Œæ™®é€šè§„则混åˆï¼šå·²å¼ƒç”¨çš„语法" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "警告:覆盖关于目标“%sâ€çš„组æˆå‘˜" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "警告:é‡åˆ°äº† NUL 字符;忽略行的剩余部分" + +#: 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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "“%sâ€å·²æ˜¯æœ€æ–°ã€‚" + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "正删除文件“%sâ€ã€‚\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%s没有规则å¯åˆ¶ä½œç›®æ ‡â€œ%sâ€%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "正在考虑目标文件“%sâ€ã€‚\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "最近已å°è¯•过更新文件“%sâ€å¹¶å¤±è´¥ã€‚\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "已考虑过文件“%sâ€ã€‚\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "ä»ç„¶åœ¨æ›´æ–°æ–‡ä»¶â€œ%sâ€ã€‚\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "更新文件“%sâ€å®Œæˆã€‚\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "文件“%sâ€ä¸å­˜åœ¨ã€‚\n" + +#: 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: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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "使用“%sâ€çš„é»˜è®¤é…æ–¹ã€‚\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "放弃循环ä¾èµ– %s <- %s 。" + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "目标文件“%sâ€çš„å‰æå·²å®Œæˆã€‚\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "正在制作“%sâ€çš„å‰æã€‚\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "放弃目标文件“%sâ€ã€‚\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "由于错误目标“%sâ€å¹¶æœªé‡æ–°åˆ¶ä½œã€‚" + +#: 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:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "目标“%2$sâ€çš„å‰æâ€œ%1$sâ€ä¸å­˜åœ¨ã€‚\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "å‰æâ€œ%sâ€æ¯”目标“%sâ€æ–°ã€‚\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "å‰æâ€œ%sâ€æ¯”目标“%sâ€æ—§ã€‚\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "目标“%sâ€æ˜¯åŒå†’å·ç›®æ ‡å¹¶ä¸”æ²¡æœ‰å‰æã€‚\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "没有关于“%sâ€çš„é…æ–¹ï¼Œå¹¶ä¸”没有实际改å˜çš„å‰æã€‚\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "由于 always-make 标志所以制作“%sâ€ã€‚\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "ä¸éœ€è¦é‡æ–°åˆ¶ä½œç›®æ ‡â€œ%sâ€" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr ";使用 VPATH å称“%sâ€" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "å¿…é¡»é‡æ–°åˆ¶ä½œç›®æ ‡â€œ%sâ€ã€‚\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " 忽略 VPATH å称“%sâ€ã€‚\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "“%sâ€çš„命令酿–¹æ­£åœ¨è¢«æ‰§è¡Œã€‚\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "釿–°åˆ¶ä½œç›®æ ‡æ–‡ä»¶â€œ%sâ€å¤±è´¥ã€‚\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "釿–°åˆ¶ä½œç›®æ ‡æ–‡ä»¶â€œ%sâ€æˆåŠŸã€‚\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "目标文件“%sâ€éœ€è¦ä»¥ -q 选项釿–°åˆ¶ä½œã€‚\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "使用关于“%sâ€çš„默认命令。\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "警告:文件“%sâ€çš„ä¿®æ”¹æ—¶é—´åœ¨æœªæ¥ %s ç§’åŽ" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS 的元素“%sâ€ä¸æ˜¯ä¸€ä¸ªæ¨¡å¼" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "用户ä¸å¸Œæœ›å¯¼å‡ºï¼š%s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# éšå«è§„则" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# 没有éšå«è§„则。" + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u æ¡éšå«è§„则,%u (%.1f%%) 为末端。" + +#: 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 "未知的信å·" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "挂起" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "中断" + +#: src/signame.c:98 +msgid "Quit" +msgstr "退出" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "éžæ³•指令" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "跟踪/断点陷阱" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "已中止" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT 陷阱" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT 陷阱" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "浮点数异常" + +#: src/signame.c:121 +msgid "Killed" +msgstr "å·²æ€æ­»" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "总线错误" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "段错误" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "错误的系统调用" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "断开的管é“" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "闹钟" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "已终止" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "ç”¨æˆ·å®šä¹‰ä¿¡å· 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "ç”¨æˆ·å®šä¹‰ä¿¡å· 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "å­è¿›ç¨‹å·²é€€å‡º" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "电æºå¤±æ•ˆ" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "å·²åœæ­¢" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "å·²åœæ­¢ (tty 输入)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "å·²åœæ­¢ (tty 输出)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "å·²åœæ­¢ (ä¿¡å·)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU 时间超出é™åˆ¶" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "文件大å°è¶…出é™åˆ¶" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "虚拟时钟超时" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "测试时钟超市" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "窗å£å·²æ”¹å˜" + +#: src/signame.c:189 +msgid "Continued" +msgstr "ç»§ç»­" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "紧急 I/O æ¡ä»¶" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O å¯è¡Œ" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "资æºä¸¢å¤±" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "å±é™©ä¿¡å·" + +#: src/signame.c:217 +msgid "Information request" +msgstr "ä¿¡æ¯è¯·æ±‚" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "浮点数å处ç†å™¨ä¸å¯ç”¨" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s 没有 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 strcache 缓冲: %lu (%lu) / 字串 = %lu / 空间 = %lu B / å¹³å‡ = %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 ç›®å‰ç¼“冲: 尺寸 = %hu B / 已用 = %hu B / æ•°é‡ = %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 其他已用: 总共 = %lu B / æ•°é‡ = %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 其他空余: 总共 = %lu B / 最大 = %lu B / æœ€å° = %lu B / å¹³å‡ = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache 性能:查找 = %lu / 命中率 = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# æ‚凑表统计数æ®:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "自动" + +#: src/variable.c:1789 +msgid "default" +msgstr "默认" + +#: src/variable.c:1792 +msgid "environment" +msgstr "环境" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "-e 指定的环境å˜é‡" + +#: src/variable.c:1801 +msgid "command line" +msgstr "命令行" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "“overrideâ€æŒ‡ä»¤" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (从“%sâ€ï¼Œè¡Œ %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# å˜é‡çš„æ‚å‡‘è¡¨çŠ¶æ€:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# å˜é‡\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Pattern-specific å˜é‡å€¼" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# 没有 pattern-specific å˜é‡çš„值。" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u 个 pattern-specific å˜é‡çš„值" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "警告:未定义的å˜é‡â€œ%.*sâ€" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() 失败并返回 %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-警告, ä½ å¯èƒ½å¿…须从 DCL 釿–°å¯ç”¨ CTRL-Y 处ç†ã€‚\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN 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 "将输出追加到 %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "追加 %.*s 并清ç†\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "执行 %s 作为替代\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH æœç´¢è·¯å¾„\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# 没有“vpathâ€æœç´¢è·¯å¾„。" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u “vpathâ€æœç´¢è·¯å¾„。\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# 没有通用æœç´¢è·¯å¾„(“VPATHâ€å˜é‡)。" + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# 通用æœç´¢è·¯å¾„(“VPATHâ€å˜é‡):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Jobserver æ§½ä½æ•°é™åˆ¶ä¸º %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "正创建 jobserver ä¿¡å·é‡ï¼šï¼ˆé”™è¯¯ %ld:%s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Jobserver 客户端(信å·é‡ %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "释放 jobserver ä¿¡å·é‡ï¼šï¼ˆé”™è¯¯ %ld:%s)" + +#: 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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]:%s:命令未找到\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s:未找到 shell 程åº" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s 正在挂起 30 ç§’..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "ç¡çœ å®Œæˆ(30)。继续。\n" + +#~ msgid "Unknown error %d" +#~ msgstr "未知错误 %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "警告:文件“%sâ€çš„修改时间在未æ¥" + +#~ msgid " terminal." +#~ msgstr " 终端。" + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: '%s' çš„å‘½ä»¤é…æ–¹å¤±è´¥" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] 错误 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "å¤åˆ¶ä»»åŠ¡æœåС噍" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "警告:空的é‡å®šå‘\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "内部错误:“%sâ€command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "BUILTIN [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "BUILTIN ECHO %s->%s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "未知的内置命令“%sâ€\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "内置命令在 .ONESHELL 内未知或ä¸å—支æŒï¼šâ€œ%sâ€\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "错误,空命令\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "æ¥è‡ª %s çš„é‡å®šå‘输入\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "到 %s çš„é‡å®šå‘错误输出\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "到 %s çš„é‡å®šå‘输出\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "错误产生,%d\n" + +#, fuzzy +#~ msgid "# Invalid value in 'update_status' member!" +#~ msgstr "# “update_statusâ€æˆå‘˜ä¸­æ— æ•ˆçš„值ï¼" + +#, fuzzy +#~ msgid "unknown trace mode '%s'" +#~ msgstr "未知的内置命令“%sâ€\n" + +#, fuzzy +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "内部错误:多个 --jobserver-fds 选项" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "内部错误:多个 --jobserver-fds 选项" + +#~ msgid "virtual memory exhausted" +#~ msgstr "虚拟内存耗尽" + +#~ msgid "write error" +#~ msgstr "写错误" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "BUILTIN RM %s\n" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] 错误 0x%x (忽略)" + +#~ msgid "process_easy() failed failed to launch process (e=%ld)\n" +#~ msgstr "process_easy() å¯åŠ¨è¿›ç¨‹å¤±è´¥ (e=%ld)\n" + +#~ 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 "" +#~ "%s该程åºä¸ºè‡ªç”±è½¯ä»¶ï¼Œè¯¦æƒ…å¯å‚é˜…ç‰ˆæƒæ¡æ¬¾ã€‚在法律å…许的范围内\n" +#~ "%s我们ä¸ä½œä»»ä½•æ‹…ä¿ï¼Œè¿™åŒ…å«ä½†ä¸é™äºŽä»»ä½•商业适售性以åŠé’ˆå¯¹ç‰¹\n" +#~ "%s定目的的适用性的担ä¿ã€‚\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "多于的“endefâ€" + +#~ msgid "empty `override' directive" +#~ msgstr "空“overrideâ€æŒ‡ä»¤" + +#~ msgid "invalid `override' directive" +#~ msgstr "无效的“overrideâ€æŒ‡ä»¤" + +#~ msgid "" +#~ "\n" +#~ "%s # of strings in strcache: %d\n" +#~ msgstr "" +#~ "\n" +#~ "%s strcache 中的字符串数é‡: %d\n" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-警告, CTRL-Y 将利刀å­è¿›ç¨‹çŽ¯å¢ƒã€‚\n" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# 无文件。" + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# 有 %u 个文件存储在 %u 个æ‚凑å•元中。\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "# æ¯ä¸ªå•元平å‡å«æœ‰ %.3f 个文件,一个å•å…ƒæœ€å¤šå«æœ‰ %u 个文件。\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "语法错误,ä»ç„¶åœ¨â€œ\"â€ä¹‹ä¸­\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "收到 SIGCHLD ä¿¡å·ï¼›å°šæœ‰ %u 个å­è¿›ç¨‹å­˜åœ¨ã€‚\n" + +#~ msgid "DIRECTORY" +#~ msgstr "DIRECTORY" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "在åšä»»ä½•事之å‰è½¬ç§»åˆ° DIRECTORY 中" + +#~ msgid "FLAGS" +#~ msgstr "标志" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "挂起进程以便调试器进行连接" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "环境å˜é‡è¦†ç›– makefile" + +#~ msgid "FILE" +#~ msgstr "FILE" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "å°† FILE 作为 makefile 读入" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "在 DIRECTORY 中æœç´¢å¼•入的 makefile" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "除éžè´Ÿè½½ä½ŽäºŽ N å¦åˆ™å°±ä¸å¯åŠ¨å¤šä¸ªä»»åŠ¡" + +#~ msgid "Don't actually run any commands; just print them" +#~ msgstr "ä¸ä¼šå®žé™…è¿è¡Œä»»ä½•å‘½ä»¤ï¼›åªæ˜¯æ‰“å°å®ƒä»¬" + +#~ msgid "Consider FILE to be very old and don't remake it" +#~ msgstr "å°† FILE 认定为过于陈旧而ä¸é‡çŽ°åˆ›å»ºå®ƒ" + +#~ msgid "Don't echo commands" +#~ msgstr "ä¸è¦å›žæ˜¾å‘½ä»¤" + +#~ msgid "Turns off -k" +#~ msgstr "关闭 -k" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "å°† FILE çœ‹åšæ— é™æ–°" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "如果 sh.exe ä¸å¯ç”¨ï¼Œå°±ä¸è¦ç»™å‡º -j 或 --jobs。" + +#~ msgid "Resetting make for single job mode." +#~ msgstr "å°† make é‡ç½®ä¸ºå•任务模å¼ã€‚" + +#~ msgid "Entering" +#~ msgstr "正在进入" + +#~ msgid "Leaving" +#~ msgstr "正在离开" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "“%sinclude†没有文件å" + +#~ msgid "# No variables." +#~ msgstr "# 没有å˜é‡ã€‚" + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "# æ¯ä¸ªæ‚凑å•元平å‡å­˜å‚¨ %.1f 个å˜é‡ï¼Œä¸€ä¸ªå•元最多存储 %u 个。\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "# æ¯ä¸ªæ‚凑å•元平å‡å­˜å‚¨ %d.%d 个å˜é‡ï¼Œä¸€ä¸ªå•元最多存储 %u 个。\n" diff --git a/local/recipes/dev/gnu-make/source/po/zh_TW.gmo b/local/recipes/dev/gnu-make/source/po/zh_TW.gmo new file mode 100644 index 0000000000000000000000000000000000000000..783d771a7e9f5c429b2f9ca00af405685ba6aa99 GIT binary patch literal 45174 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 n*YZ@(aQfel&h=WJ?&&z$Weg9I, 2002. +# LI Daobing , 2008, 2013. +# Mingye Wang , 2015, 2016. +# Y.C Cheng , 2017. +# Boyuan Yang <073plan@gmail.com>, 2018, 2019. +# Yi-Jyun Pan , 2019, 2020, 2022. +msgid "" +msgstr "" +"Project-Id-Version: make 4.3.90\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-09-23 07:02+0800\n" +"Last-Translator: Yi-Jyun Pan \n" +"Language-Team: Chinese (traditional) \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.1.1\n" +"X-ZhConverter: ç¹åŒ–姬 dict-4ac8d2ed-r906 @ 2019/10/24 21:28:21 | https://" +"zhconvert.org\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "è©¦åœ–ä½¿ç”¨ä¸æ”¯æ´çš„功能:「%sã€" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "VMS ç³»çµ±ä¸Šä¸æ”¯æ´ touch å°å­˜æˆå“¡" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch:å°å­˜æª”案「%sã€ä¸å­˜åœ¨" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch:「%sã€ä¸æ˜¯æœ‰æ•ˆçš„å°å­˜æª”案" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch:在「%2$sã€ä¸­ä¸å­˜åœ¨æˆå“¡ã€Œ%1$sã€" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch:「%sã€ä¸Šçš„ ar_member_touch 的返回碼ä¸ç•¶" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_modules() å–得模組訊æ¯å¤±æ•—,返回狀態 = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() 失敗,返回狀態 = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "無法打開函å¼åº«ã€Œ%sã€ä»¥å°‹æ‰¾æˆå“¡ï¼Œç‹€æ…‹ %d" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (å稱å¯èƒ½è¢«æˆªæ–·)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " 日期 %s" + +#: 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:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "指令方案行數太多 (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** 中斷。\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] å°å­˜æˆå“¡ã€Œ%sã€å¯èƒ½æ˜¯å‡çš„;未刪除" + +# 是化學的æˆåˆ†ï¼Œæ˜¯ç‰¹æŠ€ï¼ +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** å°å­˜æˆå“¡ã€Œ%sã€å¯èƒ½æ˜¯å‡çš„;未刪除" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] 正在刪除檔案「%sã€" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** 正在刪除檔案「%sã€" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# è¦åŸ·è¡Œçš„æ–¹æ¡ˆ" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (內建):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (從「%sã€ï¼Œè¡Œ %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# 目錄\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s:無法å°å…¶é€²è¡Œ stat 動作。\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: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:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (è£ç½® %ld,i-節點 %ld):無法打開。\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (é—œéµå­— %s,修改時間 %I64u):" + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (è£ç½® %d,i-節點 [%d,%d,%d]):" + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (è£ç½® %ld,i-節點 %ld):" + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "ç„¡" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " 檔案, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "ç„¡" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " ä¸å¯èƒ½" + +#: src/dir.c:1180 +msgid " so far." +msgstr " 迄今為止。" + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " ä¸å¯èƒ½åœ¨ %lu 目錄中。\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "未終止的變數引用" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "關於檔案「%sã€çš„æŒ‡ä»¤æ–¹æ¡ˆåœ¨ %s:%lu 處指定," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "關於檔案「%sã€çš„æŒ‡ä»¤æ–¹æ¡ˆé€éŽéš±å«è¦å‰‡æœå°‹è€Œæ‰¾åˆ°ï¼Œ" + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "但「%sã€ç¾åœ¨è¢«çœ‹åšã€Œ%sã€çš„åŒä¸€å€‹æª”案。" + +#: 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:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "無法將單冒號「%sã€é‡æ–°å‘½å為雙冒號「%sã€" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "無法將雙冒號「%sã€é‡æ–°å‘½å為單冒號「%sã€" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** 正在刪除中間檔案「%sã€" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "正在刪除中間檔案...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s:時間標記超出範åœï¼›æ­£åœ¨å–代 %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# 䏿˜¯ä¸€å€‹ç›®æ¨™ï¼š" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# é‡è¦æª”案 (.PRECIOUS çš„å‰æ)。" + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# å‡ç›®æ¨™ (.PHONY çš„å‰æ)。" + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# 指令列目標。" + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# é è¨­çš„ã€MAKEFILES 指定的ã€-include/sinclude 包å«çš„ makefile。" + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# 內建è¦å‰‡" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# å°éš±å«è¦å‰‡çš„æœå°‹å·²å®Œæˆã€‚" + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# å°éš±å«è¦å‰‡çš„æœå°‹å°šæœªå®Œæˆã€‚" + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# éš±å«/éœæ…‹æ¨¡å¼ä¸»å¹¹ï¼šã€Œ%sã€\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# æª”æ¡ˆæ˜¯ä¸€å€‹ä¸­é–“å‰æã€‚" + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# å¾žä¸æª¢æŸ¥ä¿®æ”¹æ™‚間。" + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# 檔案ä¸å­˜åœ¨ã€‚" + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# 檔案éžå¸¸é™³èˆŠã€‚" + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# 最近更新 %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# 檔案已經被更新。" + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# 檔案尚未被更新。" + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# 正在執行的方案 (這是 BUG)。" + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# 正在執行的ä¾è³´æ€§æ–¹æ¡ˆ (這是 BUG)。" + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# æ›´æ–°æˆåŠŸã€‚" + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# éœ€è¦æ›´æ–° (用 -q 設定)。" + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# 更新失敗。" + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# 「command_stateã€æˆå“¡ä¸­å­˜åœ¨ç„¡æ•ˆçš„值ï¼" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# 檔案" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# 檔案雜湊表狀態:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s:欄ä½ã€Œ%sã€æœªè¢«å¿«å–:%s" + +#: 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:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "「wordã€å‡½æ•¸çš„ç¬¬ä¸€å€‹åƒæ•¸å¿…須大於 0" + +#: src/function.c:821 +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:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) 失敗 (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) 失敗 (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() 失敗 (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() 失敗\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "正在清除暫時批次檔 %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file:缺少檔案å" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close:%s:%s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "fileï¼šå¤ªå¤šåƒæ•¸" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read:%s:%s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file:無效檔案(file)動作:%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:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "在本平å°ä¸Šæœªå¯¦ç¾ï¼šå‡½æ•¸ã€Œ%sã€" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "å°å‡½æ•¸ã€Œ%sã€çš„æœªçµ‚止的呼å«ï¼šéºæ¼ã€Œ%cã€" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "空函數å" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "無效的函數å稱:%s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "函數å稱太長:%s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "函數「%2$sã€çš„æœ€å°‘åƒæ•¸æ•¸é‡ (%1$u) 無效" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "函數「%2$sã€çš„æœ€å¤šåƒæ•¸æ•¸é‡ (%1$u) 無效" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s:é¸é …「%sã€å«ç¾©ä¸æ¸…\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s:é¸é …「--%sã€ä¸å…è¨±åƒæ•¸\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s:é¸é …「%c%sã€ä¸å…è¨±åƒæ•¸\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s:é¸é …「%sã€éœ€è¦ä¸€å€‹åƒæ•¸\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s:無法識別的é¸é …「--%sã€\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s:無法識別的é¸é …「%c%sã€\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s:é¸é …無效 ─ %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s:無效é¸é … -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s:é¸é …需è¦ä¸€å€‹åƒæ•¸ -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s:é¸é …「-W %sã€å«ç¾©ä¸æ¸…\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s:é¸é …「-W %sã€ä¸å…è¨±çµ¦å‡ºåƒæ•¸\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: 正展開 '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: 正求值 '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "ç„¡æ³•ç‚ºé›œæ¹Šè¡¨åˆ†é… %lu ä½å…ƒçµ„: 記憶體耗盡" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "負載=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "釿–°é›œæ¹Š=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "碰撞=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "正在為「%sã€å°‹æ‰¾éš±å«è¦å‰‡ã€‚\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "正在為「%sã€å°‹æ‰¾å°å­˜æˆå“¡éš±å«è¦å‰‡ã€‚\n" + +#: 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 "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:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "主幹太長:「%s%.*sã€ã€‚\n" + +#: 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:788 +#, c-format +msgid "Trying implicit prerequisite '%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: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/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 "找到「%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:557 +msgid " (ignored)" +msgstr " (已忽略)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<內建>" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] 錯誤 %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** 正在等待未完æˆçš„作業...." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (é ç«¯)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "正在中止ç²å‹çš„å­ç¨‹åº %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "正在中止失敗的å­ç¨‹åº %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "正在清除暫時批次檔 %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "æ¸…ç†æš«æ™‚批次檔 %s 失敗 (%d)\n" + +#: 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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "為å­ç¨‹åº %p (%s) 釋放憑證 (token)。\n" + +#: 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:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"失敗執行中共有 %d å€‹åƒæ•¸ã€‚\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "å–得至處ç†ç¨‹åº %p (%s) 的標記。\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s:更新「%sã€ï¼Œå› ç‚ºï¼š%s" + +#: 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:2106 +msgid "cannot enforce load limit: " +msgstr "無法實施負載é™åˆ¶ï¼š" + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "檔案控制代碼已用盡:無法複製 stdin" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "檔案控制代碼已用盡:無法複製 stdout" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "檔案控制代碼已用盡:無法複製 stderr" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "無法還原 stdin" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "無法還原 stdout" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "無法還原 stderr" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: 環境變數空間å¯èƒ½æœƒè€—盡" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL 已改變 (原為「%sã€ï¼Œç¾ç‚ºã€Œ%sã€)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "正在建立暫時批檔案 %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"批次檔內容:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"批次檔內容:%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 (行 %d) 錯誤的 shell 上下文 (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "打開全域符號表失敗:%s" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "從 %2$s 載入符號 %1$s 失敗:%3$s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "è¦è¼‰å…¥çš„符號å為空:%s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "正從 %2$s 載入符號 %1$s\n" + +#: 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†æ“作" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "é¸é …:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m 為相容性而忽略。\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make ç„¡æ¢ä»¶è£½ä½œ (make) 所有目標。\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr " -C 目錄, --directory=目錄 在執行å‰å…ˆåˆ‡æ›åˆ° <目錄>。\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d 輸出大é‡é™¤éŒ¯è¨Šæ¯ã€‚\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr " --debug[=旗標] 輸出å„種除錯訊æ¯ã€‚\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" 環境變數覆蓋 makefile 中的變數。\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr " -E 字串, --eval=字串 å°‡ <字串> 作為 makefile 語å¥ä¼°å€¼ã€‚\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f 檔案, --file=檔案, --makefile=檔案\n" +" 從 <檔案> 中讀入 makefile。\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help 輸出該訊æ¯ä¸¦é›¢é–‹ã€‚\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors 忽略來自指令方案的錯誤。\n" + +#: 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: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: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: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" +" 在系統負載高於 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 使用符號連çµåŠç¬¦è™Ÿé€£çµç›®æ¨™ä¸­ä¿®æ”¹æ™‚間較晚的一" +"個。\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" +" åªè¼¸å‡ºæŒ‡ä»¤æ–¹æ¡ˆï¼Œä¸å¯¦éš›åŸ·è¡Œã€‚\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 檔案, --old-file=檔案, --assume-old=檔案\n" +" å°‡ <檔案> ç•¶åšå¾ˆèˆŠï¼Œä¸å¿…釿–°è£½ä½œã€‚\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[類型], --output-sync[=類型]\n" +" 使用 <類型> æ–¹å¼åŒæ­¥ä¸¦è¡Œä½œæ¥­è¼¸å‡ºã€‚\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question ä¸åŸ·è¡Œä»»ä½•方案;離開狀態說明是å¦å·²å…¨éƒ¨æ›´æ–°ã€‚\n" + +#: 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:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr " -R, --no-builtin-variables åœç”¨å…§å»ºè®Šæ•¸è¨­å®šã€‚\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" +" 釿–°æŽ’åˆ—ã€Œå‰æã€å’Œã€Œç›®æ¨™ã€ã€‚\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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr " --no-silent å°æ–¹æ¡ˆé€²è¡Œå›žé¡¯ï¼ˆåœç”¨ --silent 模å¼ï¼‰ã€‚\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" 關閉 -k。\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch touch ç›®æ¨™ï¼ˆæ›´æ–°ä¿®æ”¹æ™‚é–“ï¼‰è€Œä¸æ˜¯é‡æ–°è£½ä½œå®ƒ" +"們。\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace 輸出跟蹤訊æ¯ã€‚\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version 輸出 make 的版本號並離開。\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory 輸出目å‰ç›®éŒ„。\n" + +#: 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:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W 檔案, --what-if=檔案, --new-file=檔案, --assume-new=檔案\n" +" å°‡ <檔案> ç•¶åšæœ€æ–°ã€‚\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr " --warn-undefined-variables 當引用未定義變數的時候發出警告。\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "未知的除錯級別定義「%sã€" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "䏿˜Žè¼¸å‡ºåŒæ­¥é¡žåž‹ã€Œ%sã€" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "用法:%s [é¸é …] [目標] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"該程å¼ç‚º %s 編譯\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"該程å¼ç‚º %s (%s) 編譯\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "報告錯誤到 \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s:æ•ç²ä¸­æ–·/異常 (程å¼ç¢¼ = 0x%lx, ä½å€ = 0x%p)\n" + +#: src/main.c: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" +"å¾žç¨‹å¼ %s 產生的未處ç†çš„ç•°å¸¸éŽæ¿¾å™¨\n" +"異常碼 = %lx\n" +"異常標誌 = %lx\n" +"異常ä½å€ = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "å­˜å–è¡çªï¼šä½å€ 0x%p 處的寫入動作\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "å­˜å–è¡çªï¼šä½å€ 0x%p 處的讀å–動作\n" + +#: 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: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: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:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "警告: å­ make 中強制 -j%d: é‡è¨­ jobserver 模å¼ã€‚" + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "指定了兩次æºè‡ªæ¨™æº–輸入的 Makefile" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite:暫存檔 %s:%s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "警告: å­ make 中強制 -j%d: é‡è¨­ jobserver 模å¼ã€‚" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "本平å°ä¸æ”¯æ´ä¸¦è¡Œä½œæ¥­ (-j)。" + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "é‡è¨­ç‚ºå–®ä½œæ¥­æ¨¡å¼ (-j1)。" + +#: 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: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:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefile「%sã€å¯èƒ½å¾ªç’°ï¼›ä¸æœƒé‡æ–°åŸ·è¡Œå®ƒã€‚\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: 載入失敗" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "釿–°åŸ·è¡Œ makefile「%sã€å¤±æ•—。" + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "找ä¸åˆ°è¢«å¼•入的 makefile「%sã€ã€‚" + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "找ä¸åˆ° makefile「%sã€" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "無法切回原始目錄" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "釿–°åŸ·è¡Œ[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL 包å«å¤šé¤˜ä¸€å€‹ç›®æ¨™" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "無目標" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "沒有指明目標並且找ä¸åˆ° makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "更新目標....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "警告:檢測到時é˜éŒ¯èª¤ã€‚您的構建版本å¯èƒ½æ˜¯ä¸å®Œæ•´çš„。" + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "「%s%sã€é¸é …需è¦éžç©ºå­—ä¸²åƒæ•¸" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "「-%cã€é¸é …éœ€è¦æ­£æ•´æ•¸åƒæ•¸" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%s為 %s 編譯\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%s為 %s (%s) 編譯\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sGPLv3+ æŽˆæ¬Šæ¢æ¬¾ï¼šGNU é€šç”¨å…¬å…±æŽˆæ¬Šæ¢æ¬¾ç¬¬ 3 版或更新版本 。\n" +"%s本軟體是自由軟體:您å¯ä»¥è‡ªç”±å°å…¶ä¿®æ”¹å’Œé‡æ–°ç™¼å¸ƒã€‚\n" +"%s在法律å…許的範åœå…§æ²’有其他ä¿è­‰ã€‚\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# make 資料基礎,輸出在 %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# 在 %s ä¸Šå®Œæˆ make 資料基礎\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: 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 "fwrite:暫存檔 %s:%s" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "刪除 (暫存檔):" + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen:暫存檔 %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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: 離開一個未知的目錄\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: 進入目錄「%sã€\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: 離開目錄「%sã€\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: 進入一個未知的目錄\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: 離開一個未知的目錄\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: 進入目錄「%sã€\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: 離開目錄「%sã€\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "警告:無法索å–輸出鎖,åœç”¨è¼¸å‡ºåŒæ­¥ã€‚" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr "。 åœæ­¢ã€‚\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 "無法開啟 %s jobserver:%s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "jobserver èªè­‰é¢¨æ ¼ “%s†未知" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "正在建立作業管é“" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "正在複製作業管é“" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "創始化作業伺æœå™¨ç®¡é“" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "--jobserver-auth 字串「%sã€ç„¡æ•ˆ" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "寫入作業伺æœå™¨" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "作業伺æœå™¨é—œé–‰" + +# , fuzzy +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect 作業管é“" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "讀å–作業管é“" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "正在讀入 makefile「%sã€" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (沒有é è¨­ç›®æ¨™)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (æœå°‹è·¯å¾‘)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (ä¸ç”¨ç†)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (沒有 ~ 展開)" + +#: 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:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "è·³éŽ Makefile ç·©è¡å€ä¸­çš„ UTF-8 BOM\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "æ¢ä»¶ä¸­å«æœ‰ç„¡æ•ˆèªžæ³•" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "方案在第一個目標å‰é–‹å§‹" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "方案之å‰éºæ¼äº†è¦å‰‡" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "缺少分隔符 (你大概想用 TABï¼Œè€Œä¸æ˜¯å…«å€‹ç©ºæ ¼)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "缺少分隔符" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "無目標符åˆ" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "多個目標符åˆ" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "目標模å¼ä¸å«æœ‰ã€Œ%%ã€" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "éºæ¼ã€Œendifã€" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "空變數å" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "「endefã€æŒ‡ä»¤å¾Œå«æœ‰ä¸è©²å‡ºç¾çš„æ–‡å­—" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "éºæ¼ã€Œendefã€ï¼Œæœªçµ‚止的「defineã€" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "「endefã€æŒ‡ä»¤å¾Œå«æœ‰ä¸è©²å‡ºç¾çš„æ–‡å­—" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "在「%sã€æŒ‡ä»¤ä¹‹å¾Œå«æœ‰ä¸è©²å‡ºç¾çš„æ–‡å­—" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "ä¸è©²å‡ºç¾çš„「%sã€" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "æ¯å€‹æ¢ä»¶åªèƒ½æœ‰ä¸€å€‹ã€Œelseã€" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "é‡å°ç›®æ¨™çš„ç´”é‡å®šç¾©æ ¼å¼éŒ¯èª¤" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "æˆçµ„的目標必須æä¾›ä¸€å€‹æ–¹æ¡ˆ" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "æ··åˆçš„éš±å«å’Œéœæ…‹æ¨¡å¼è¦å‰‡" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "æ··åˆçš„éš±å«å’Œæ™®é€šè¦å‰‡" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "目標「%sã€ä¸ç¬¦åˆç›®æ¨™æ¨¡å¼" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "目標檔案「%sã€å«æœ‰ : å’Œ :: 兩種æ¢ç›®" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "目標「%sã€åœ¨åŒä¸€å€‹è¦å‰‡ä¸­çµ¦å‡ºäº†å¤šæ¬¡" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "警告:覆蓋關於目標「%sã€çš„æ–¹æ¡ˆ" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "警告:忽略關於目標「%sã€çš„舊方案" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** éš±å«å’Œæ™®é€šè¦å‰‡æ··åˆï¼šå·²æ£„用的語法" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "警告:覆蓋關於目標「%sã€çš„組æˆå“¡" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "警告:é‡åˆ°äº† NUL 字元;忽略行的剩餘部分" + +#: 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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "「%sã€å·²æ˜¯æœ€æ–°ã€‚" + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "正刪除檔案「%sã€ã€‚\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%s沒有è¦å‰‡å¯è£½ä½œç›®æ¨™ã€Œ%sã€%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "正在考慮目標檔案「%sã€ã€‚\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "æœ€è¿‘å·²å˜—è©¦éŽæ›´æ–°æª”案「%sã€ä¸¦å¤±æ•—。\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "å·²è€ƒæ…®éŽæª”案「%sã€ã€‚\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "ä»ç„¶åœ¨æ›´æ–°æª”案「%sã€ã€‚\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "更新檔案「%sã€å®Œæˆã€‚\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "檔案「%sã€ä¸å­˜åœ¨ã€‚\n" + +#: 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:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "「%2$sã€æª”案的目的å°ç«¯ç¾¤çµ„「%1$sã€ä¸å­˜åœ¨ã€‚\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "使用「%sã€çš„é è¨­æ–¹æ¡ˆã€‚\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "放棄循環ä¾è³´ %s <- %s 。" + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "目標檔案「%sã€çš„å‰æå·²å®Œæˆã€‚\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "正在製作「%sã€çš„å‰æã€‚\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "放棄目標檔案「%sã€ã€‚\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "由於錯誤目標「%sã€ä¸¦æœªé‡æ–°è£½ä½œã€‚" + +#: 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:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "目標「%2$sã€çš„å‰æã€Œ%1$sã€ä¸å­˜åœ¨ã€‚\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "å‰æã€Œ%sã€æ¯”目標「%sã€æ–°ã€‚\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "å‰æã€Œ%sã€æ¯”目標「%sã€èˆŠã€‚\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "目標「%sã€æ˜¯é›™å†’è™Ÿç›®æ¨™ä¸¦ä¸”æ²’æœ‰å‰æã€‚\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "沒有關於「%sã€çš„æ–¹æ¡ˆï¼Œä¸¦ä¸”æ²’æœ‰å¯¦éš›æ”¹è®Šçš„å‰æã€‚\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "由於 always-make 標誌所以製作「%sã€ã€‚\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "ä¸éœ€è¦é‡æ–°è£½ä½œç›®æ¨™ã€Œ%sã€" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr ";使用 VPATH å稱「%sã€" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "å¿…é ˆé‡æ–°è£½ä½œç›®æ¨™ã€Œ%sã€ã€‚\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " 忽略 VPATH å稱「%sã€ã€‚\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "「%sã€çš„æŒ‡ä»¤æ–¹æ¡ˆæ­£åœ¨è¢«åŸ·è¡Œã€‚\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "釿–°è£½ä½œç›®æ¨™æª”案「%sã€å¤±æ•—。\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "釿–°è£½ä½œç›®æ¨™æª”案「%sã€æˆåŠŸã€‚\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "目標檔案「%sã€éœ€è¦ä»¥ -q é¸é …釿–°è£½ä½œã€‚\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "使用關於「%sã€çš„é è¨­æŒ‡ä»¤ã€‚\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "警告:檔案「%sã€çš„修改時間在未來 %s 秒後" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS 的元素「%sã€ä¸æ˜¯ä¸€å€‹æ¨¡å¼" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "使用者ä¸å¸Œæœ›åŒ¯å‡ºï¼š%s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "警告:忽略後綴è¦å‰‡å®šç¾©çš„剿" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# éš±å«è¦å‰‡" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# 沒有隱å«è¦å‰‡ã€‚" + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u æ¢éš±å«è¦å‰‡ï¼Œ%u (%.1f%%) 為末端。" + +#: 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 "未知的訊號" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "掛斷" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "中止" + +#: src/signame.c:98 +msgid "Quit" +msgstr "çµæŸ" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "無效指令" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "追蹤 / 斷點陷阱" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "å–æ¶ˆ" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT 陷阱" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT 陷阱" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "期望浮點數" + +#: src/signame.c:121 +msgid "Killed" +msgstr "å¼·åˆ¶çµæŸ" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "åŒ¯æµæŽ’éŒ¯èª¤" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "分割錯誤" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "無效系統呼å«" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "管線æå£ž" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "鬧é˜" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "終止" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "使用者定義信號 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "使用者定義信號 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "å­ç¨‹åºé€€å‡º" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "é›»æºéŒ¯èª¤" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "åœæ­¢" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "åœæ­¢ï¼ˆtty 輸入)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "åœæ­¢ï¼ˆtty 輸出)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "åœæ­¢ï¼ˆä¿¡è™Ÿï¼‰" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "åˆ°é” CPU 時間上é™" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "åˆ°é”æª”案大å°ä¸Šé™" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "è™›æ“¬è¨ˆæ™‚å™¨éŽæœŸ" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "分æžè¨ˆæ™‚å™¨éŽæœŸ" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "已變更視窗" + +#: src/signame.c:189 +msgid "Continued" +msgstr "繼續" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "緊急 I/O æ¢ä»¶" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "å¯èƒ½ I/O" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "資æºéºå¤±" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "å±éšªè¨Šè™Ÿ" + +#: src/signame.c:217 +msgid "Information request" +msgstr "資訊請求" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "浮點數å”處ç†å™¨ä¸å¯ç”¨" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s 沒有 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 strcache ç·©è¡: %lu (%lu) / 字串 = %lu / 空間 = %lu B / å¹³å‡ = %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 ç›®å‰ç·©è¡: 尺寸 = %hu B / 已用 = %hu B / æ•¸é‡ = %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 其他已用: 總共 = %lu B / æ•¸é‡ = %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 其他空餘: 總共 = %lu B / 最大 = %lu B / æœ€å° = %lu B / å¹³å‡ = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache 性能:尋找 = %lu / 命中率 = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# 雜湊表統計資料:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "自動" + +#: src/variable.c:1789 +msgid "default" +msgstr "é è¨­" + +#: src/variable.c:1792 +msgid "environment" +msgstr "環境" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "-e 指定的環境變數" + +#: src/variable.c:1801 +msgid "command line" +msgstr "指令列" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "「overrideã€æŒ‡ä»¤" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (從「%sã€ï¼Œè¡Œ %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# 變數的雜湊表狀態:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# 變數\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Pattern-specific 變數值" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# 沒有 pattern-specific 變數的值。" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u 個 pattern-specific 變數的值" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "警告:未定義的變數「%.*sã€" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() 失敗並返回 %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-警告, ä½ å¯èƒ½å¿…須從 DCL 釿–°å•Ÿç”¨ CTRL-Y 處ç†ã€‚\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN 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 "將輸出追加到 %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "追加 %.*s 並清ç†\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "執行 %s 作為替代\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH æœå°‹è·¯å¾‘\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# 沒有「vpathã€æœå°‹è·¯å¾‘。" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u「vpathã€æœå°‹è·¯å¾‘。\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# 沒有通用æœå°‹è·¯å¾‘(「VPATHã€è®Šæ•¸)。" + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# 通用æœå°‹è·¯å¾‘ (「VPATHã€è®Šæ•¸):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Jobserver æ§½ä½æ•¸é™åˆ¶ç‚º %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "正建立 jobserver 訊號é‡ï¼šï¼ˆéŒ¯èª¤ %ld:%s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Jobserver å®¢æˆ¶ç«¯ï¼ˆè¨Šè™Ÿé‡ %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "釋放 jobserver 訊號é‡ï¼šï¼ˆéŒ¯èª¤ %ld:%s)" + +#: 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/local/recipes/dev/gnu-make/source/src/amiga.c b/local/recipes/dev/gnu-make/source/src/amiga.c new file mode 100644 index 0000000000..2304716e84 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/amiga.c @@ -0,0 +1,113 @@ +/* Running commands on Amiga +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include "variable.h" +#include "amiga.h" +#include +#include +#include +#include +#include + +static const char Amiga_version[] = "$VER: Make 3.74.3 (12.05.96) \n" + "Amiga Port by A. Digulla (digulla@home.lake.de)"; + +int +MyExecute (char **argv) +{ + char * buffer, * ptr; + char ** aptr; + int len = 0; + int status; + + for (aptr=argv; *aptr; aptr++) + { + len += strlen (*aptr) + 4; + } + + buffer = AllocMem (len, MEMF_ANY); + + if (!buffer) + O (fatal, NILF, "MyExecute: Cannot allocate space for calling a command"); + + ptr = buffer; + + for (aptr=argv; *aptr; aptr++) + { + if (((*aptr)[0] == ';' && !(*aptr)[1])) + { + *ptr ++ = '"'; + ptr = stpcpy (ptr, *aptr); + *(ptr++) = '"'; + } + else if ((*aptr)[0] == '@' && (*aptr)[1] == '@' && !(*aptr)[2]) + { + *ptr ++ = '\n'; + continue; + } + else + ptr = stpcpy (ptr, *aptr); + *ptr ++ = ' '; + *ptr = 0; + } + + ptr[-1] = '\n'; + + status = SystemTags (buffer, + SYS_UserShell, TRUE, + TAG_END); + + FreeMem (buffer, len); + + if (SetSignal (0L,0L) & SIGBREAKF_CTRL_C) + status = 20; + + /* Warnings don't count */ + if (status == 5) + status = 0; + + return status; +} + +char * +wildcard_expansion (char *wc, char *o) +{ +# define PATH_SIZE 1024 + struct AnchorPath * apath; + + if ( (apath = AllocMem (sizeof (struct AnchorPath) + PATH_SIZE, + MEMF_CLEAR)) + ) + { + apath->ap_Strlen = PATH_SIZE; + + if (MatchFirst (wc, apath) == 0) + { + do + { + o = variable_buffer_output (o, apath->ap_Buf, + strlen (apath->ap_Buf)); + o = variable_buffer_output (o, " ",1); + } while (MatchNext (apath) == 0); + } + + MatchEnd (apath); + FreeMem (apath, sizeof (struct AnchorPath) + PATH_SIZE); + } + + return o; +} diff --git a/local/recipes/dev/gnu-make/source/src/amiga.h b/local/recipes/dev/gnu-make/source/src/amiga.h new file mode 100644 index 0000000000..bef5087ffd --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/amiga.h @@ -0,0 +1,18 @@ +/* Definitions for amiga specific things +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 +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 . */ + +int MyExecute (char ** argv); +char * wildcard_expansion (char * wc, char * o); diff --git a/local/recipes/dev/gnu-make/source/src/ar.c b/local/recipes/dev/gnu-make/source/src/ar.c new file mode 100644 index 0000000000..7b607dcdf5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/ar.c @@ -0,0 +1,332 @@ +/* Interface to 'ar' archives for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#ifndef NO_ARCHIVES + +#include "filedef.h" +#include "dep.h" +#include +#include + +/* Return nonzero if NAME is an archive-member reference, zero if not. An + archive-member reference is a name like 'lib(member)' where member is a + non-empty string. + If a name like 'lib((entry))' is used, a fatal error is signaled at + the attempt to use this unsupported feature. */ + +int +ar_name (const char *name) +{ + const char *p = strchr (name, '('); + const char *end; + + if (p == NULL || p == name) + return 0; + + end = p + strlen (p) - 1; + if (*end != ')' || end == p + 1) + return 0; + + if (p[1] == '(' && end[-1] == ')') + OS (fatal, NILF, _("attempt to use unsupported feature: '%s'"), name); + + return 1; +} + + +/* Parse the archive-member reference NAME into the archive and member names. + Creates one allocated string containing both names, pointed to by ARNAME_P. + MEMNAME_P points to the member. */ + +void +ar_parse_name (const char *name, char **arname_p, char **memname_p) +{ + char *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; +} + + +/* This function is called by 'ar_scan' to find which member to look at. */ + +/* ARGSUSED */ +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, intmax_t date, + int uid UNUSED, int gid UNUSED, unsigned int mode UNUSED, + const void *name) +{ + return ar_name_equal (name, mem, truncated) ? date : 0; +} + +/* Return the modtime of NAME. */ + +time_t +ar_member_date (const char *name) +{ + char *arname; + char *memname; + intmax_t val; + + ar_parse_name (name, &arname, &memname); + + /* Make sure we know the modtime of the archive itself because we are + likely to be called just before commands to remake a member are run, + and they will change the archive itself. + + But we must be careful not to enter_file the archive itself if it does + not exist, because pattern_search assumes that files found in the data + base exist or can be made. */ + { + struct file *arfile; + arfile = lookup_file (arname); + if (arfile == 0 && file_exists_p (arname)) + arfile = enter_file (strcache_add (arname)); + + if (arfile != 0) + (void) f_mtime (arfile, 0); + } + + val = ar_scan (arname, ar_member_date_1, memname); + + free (arname); + + return 0 < val && val <= TYPE_MAXIMUM (time_t) ? val : -1; +} + +/* Set the archive-member NAME's modtime to now. */ + +#ifdef VMS +int +ar_touch (const char *name) +{ + O (error, NILF, _("touch archive member is not available on VMS")); + return -1; +} +#else +int +ar_touch (const char *name) +{ + char *arname, *memname; + int val; + + ar_parse_name (name, &arname, &memname); + + /* Make sure we know the modtime of the archive itself before we + touch the member, since this will change the archive modtime. */ + { + struct file *arfile; + arfile = enter_file (strcache_add (arname)); + f_mtime (arfile, 0); + } + + val = 1; + switch (ar_member_touch (arname, memname)) + { + case -1: + OS (error, NILF, _("touch: Archive '%s' does not exist"), arname); + break; + case -2: + OS (error, NILF, _("touch: '%s' is not a valid archive"), arname); + break; + case -3: + perror_with_name ("touch: ", arname); + break; + case 1: + OSS (error, NILF, + _("touch: Member '%s' does not exist in '%s'"), memname, arname); + break; + case 0: + val = 0; + break; + default: + OS (error, NILF, + _("touch: Bad return code from ar_member_touch on '%s'"), name); + } + + free (arname); + + return val; +} +#endif /* !VMS */ + +/* State of an 'ar_glob' run, passed to 'ar_glob_match'. */ + +/* On VMS, (object) modules in libraries do not have suffixes. That is, to + find a match for a pattern, the pattern must not have any suffix. So the + suffix of the pattern is saved and the pattern is stripped (ar_glob). + If there is a match and the match, which is a module name, is added to + the chain, the saved suffix is added back to construct a source filename + (ar_glob_match). */ + +struct ar_glob_state + { + const char *arname; + const char *pattern; +#ifdef VMS + char *suffix; +#endif + size_t size; + struct nameseq *chain; + unsigned int n; + }; + +/* This function is called by 'ar_scan' to match one archive + element against the pattern in STATE. */ + +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, 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; + + if (fnmatch (state->pattern, mem, FNM_PATHNAME|FNM_PERIOD) == 0) + { + /* We have a match. Add it to the chain. */ + struct nameseq *new = xcalloc (state->size); +#ifdef VMS + if (state->suffix) + new->name = strcache_add( + concat(5, state->arname, "(", mem, state->suffix, ")")); + else +#endif + new->name = strcache_add(concat(4, state->arname, "(", mem, ")")); + new->next = state->chain; + state->chain = new; + ++state->n; + } + + return 0; +} + +/* Return nonzero if PATTERN contains any metacharacters. + Metacharacters can be quoted with backslashes if QUOTE is nonzero. */ +static int +ar_glob_pattern_p (const char *pattern, int quote) +{ + const char *p; + int opened = 0; + + for (p = pattern; *p != '\0'; ++p) + switch (*p) + { + case '?': + case '*': + return 1; + + case '\\': + if (quote) + ++p; + break; + + case '[': + opened = 1; + break; + + case ']': + if (opened) + return 1; + break; + } + + return 0; +} + +/* Glob for MEMBER_PATTERN in archive ARNAME. + Return a malloc'd chain of matching elements (or nil if none). */ + +struct nameseq * +ar_glob (const char *arname, const char *member_pattern, size_t size) +{ + struct ar_glob_state state; + struct nameseq *n; + const char **names; + unsigned int i; +#ifdef VMS + char *vms_member_pattern; +#endif + if (! ar_glob_pattern_p (member_pattern, 1)) + return 0; + + /* Scan the archive for matches. + ar_glob_match will accumulate them in STATE.chain. */ + state.arname = arname; + state.pattern = member_pattern; +#ifdef VMS + { + /* In a copy of the pattern, find the suffix, save it and remove it from + the pattern */ + char *lastdot; + vms_member_pattern = xstrdup(member_pattern); + lastdot = strrchr(vms_member_pattern, '.'); + state.suffix = lastdot; + if (lastdot) + { + state.suffix = xstrdup(lastdot); + *lastdot = 0; + } + state.pattern = vms_member_pattern; + } +#endif + state.size = size; + state.chain = 0; + state.n = 0; + ar_scan (arname, ar_glob_match, &state); + +#ifdef VMS + /* Deallocate any duplicated string */ + free(vms_member_pattern); + if (state.suffix) + { + free(state.suffix); + } +#endif + + if (state.chain == 0) + return 0; + + /* Now put the names into a vector for sorting. */ + names = alloca (state.n * sizeof (const char *)); + i = 0; + for (n = state.chain; n != 0; n = n->next) + names[i++] = n->name; + + /* Sort them alphabetically. */ + /* MSVC erroneously warns without a cast here. */ + qsort ((void *)names, i, sizeof (*names), alpha_compare); + + /* Put them back into the chain in the sorted order. */ + i = 0; + for (n = state.chain; n != 0; n = n->next) + n->name = names[i++]; + + return state.chain; +} + +#endif /* Not NO_ARCHIVES. */ diff --git a/local/recipes/dev/gnu-make/source/src/arscan.c b/local/recipes/dev/gnu-make/source/src/arscan.c new file mode 100644 index 0000000000..208bf84c9f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/arscan.c @@ -0,0 +1,1013 @@ +/* Library function for scanning an archive file. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#ifdef TEST +/* Hack, the real error() routine eventually pulls in die from main.c */ +#define error(a, b, c, d) +#endif + +#ifdef HAVE_FCNTL_H +#include +#else +#include +#endif + +#ifndef NO_ARCHIVES + +#ifdef VMS +#include +#include +#include +#include +#include +#include +#include +#include + +/* This symbol should be present in lbrdef.h. */ +#if !defined LBR$_HDRTRUNC +#pragma extern_model save +#pragma extern_model globalvalue +extern unsigned int LBR$_HDRTRUNC; +#pragma extern_model restore +#endif + +#include +#include + +const char * +vmsify (const char *name, int type); + +/* Time conversion from VMS to Unix + Conversion from local time (stored in library) to GMT (needed for gmake) + Note: The tm_gmtoff element is a VMS extension to the ANSI standard. */ +static time_t +vms_time_to_unix(void *vms_time) +{ + struct tm *tmp; + time_t unix_time; + + unix_time = decc$fix_time(vms_time); + tmp = localtime(&unix_time); + unix_time -= tmp->tm_gmtoff; + + return unix_time; +} + + +/* VMS library routines need static variables for callback */ +static void *VMS_lib_idx; + +static const void *VMS_saved_arg; + +static intmax_t (*VMS_function) (); + +static intmax_t VMS_function_ret; + + +/* This is a callback procedure for lib$get_index */ +static int +VMS_get_member_info(struct dsc$descriptor_s *module, unsigned long *rfa) +{ + int status, i; + const int truncated = 0; /* Member name may be truncated */ + time_t member_date; /* Member date */ + char *filename; + unsigned int buffer_length; /* Actual buffer length */ + + /* Unused constants - Make does not actually use most of these */ + const int file_desc = -1; /* archive file descriptor for reading the data */ + const int header_position = 0; /* Header position */ + const int data_position = 0; /* Data position in file */ + const int data_size = 0; /* Data size */ + const int uid = 0; /* member gid */ + const int gid = 0; /* member gid */ + const int mode = 0; /* member protection mode */ + /* End of unused constants */ + + static struct dsc$descriptor_s bufdesc = + { 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, NULL }; + + /* Only need the module definition */ + struct mhddef *mhd; + + /* If a previous callback is non-zero, just return that status */ + if (VMS_function_ret) + { + return SS$_NORMAL; + } + + /* lbr_set_module returns more than just the module header. So allocate + a buffer which is big enough: the maximum LBR$C_MAXHDRSIZ. That's at + least bigger than the size of struct mhddef. + If the request is too small, a buffer truncated warning is issued so + it can be reissued with a larger buffer. + We do not care if the buffer is truncated, so that is still a success. */ + mhd = xmalloc(LBR$C_MAXHDRSIZ); + bufdesc.dsc$a_pointer = (char *) mhd; + bufdesc.dsc$w_length = LBR$C_MAXHDRSIZ; + + status = lbr$set_module(&VMS_lib_idx, rfa, &bufdesc, &buffer_length, 0); + + if ((status != LBR$_HDRTRUNC) && !$VMS_STATUS_SUCCESS(status)) + { + ON(error, NILF, + _("lbr$set_module() failed to extract module info, status = %d"), + status); + + lbr$close(&VMS_lib_idx); + + return status; + } + +#ifdef TEST + /* When testing this code, it is useful to know the length returned */ + printf ("Input length = %d, actual = %u\n", + bufdesc.dsc$w_length, buffer_length); +#endif + + /* Conversion from VMS time to C time. + VMS defectlet - mhddef is sub-optimal, for the time, it has a 32 bit + longword, mhd$l_datim, and a 32 bit fill instead of two longwords, or + equivalent. */ + member_date = vms_time_to_unix(&mhd->mhd$l_datim); + free(mhd); + + /* Here we have a problem. The module name on VMS does not have + a file type, but the filename pattern in the "VMS_saved_arg" + may have one. + But only the method being called knows how to interpret the + filename pattern. + There are currently two different formats being used. + This means that we need a VMS specific code in those methods + to handle it. */ + filename = xmalloc(module->dsc$w_length + 1); + + /* TODO: We may need an option to preserve the case of the module + For now force the module name to lower case */ + for (i = 0; i < module->dsc$w_length; i++) + filename[i] = _tolower((unsigned char )module->dsc$a_pointer[i]); + + filename[i] = '\0'; + + VMS_function_ret = (*VMS_function)(file_desc, filename, truncated, + header_position, data_position, data_size, member_date, uid, gid, mode, + VMS_saved_arg); + + free(filename); + return SS$_NORMAL; +} + + +/* Takes three arguments ARCHIVE, FUNCTION and ARG. + + Open the archive named ARCHIVE, find its members one by one, + and for each one call FUNCTION with the following arguments: + archive file descriptor for reading the data, + member name, + member name might be truncated flag, + member header position in file, + member data position in file, + member data size, + member date, + member uid, + member gid, + member protection mode, + ARG. + + NOTE: on VMS systems, only name, date, and arg are meaningful! + + The descriptor is poised to read the data of the member + when FUNCTION is called. It does not matter how much + data FUNCTION reads. + + If FUNCTION returns nonzero, we immediately return + what FUNCTION returned. + + Returns -1 if archive does not exist, + Returns -2 if archive has invalid format. + Returns 0 if have scanned successfully. */ + +intmax_t +ar_scan (const char *archive, ar_member_func_t function, const void *varg) +{ + char *vms_archive; + + static struct dsc$descriptor_s libdesc = + { 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, NULL }; + + const unsigned long func = LBR$C_READ; + const unsigned long type = LBR$C_TYP_UNK; + const unsigned long index = 1; + unsigned long lib_idx; + int status; + + VMS_saved_arg = varg; + + /* Null archive string can show up in test and cause an access violation */ + if (archive == NULL) + { + /* Null filenames do not exist */ + return -1; + } + + /* archive path name must be in VMS format */ + vms_archive = (char *) vmsify(archive, 0); + + status = lbr$ini_control(&VMS_lib_idx, &func, &type, 0); + + if (!$VMS_STATUS_SUCCESS(status)) + { + ON(error, NILF, _("lbr$ini_control() failed with status = %d"), status); + return -2; + } + + libdesc.dsc$a_pointer = vms_archive; + libdesc.dsc$w_length = strlen(vms_archive); + + status = lbr$open(&VMS_lib_idx, &libdesc, 0, NULL, 0, NULL, 0); + + if (!$VMS_STATUS_SUCCESS(status)) + { + + /* TODO: A library format failure could mean that this is a file + generated by the GNU AR utility and in that case, we need to + take the UNIX codepath. This will also take a change to the + GNV AR wrapper program. */ + + switch (status) + { + case RMS$_FNF: + /* Archive does not exist */ + return -1; + default: +#ifndef TEST + OSN(error, NILF, + _("unable to open library '%s' to lookup member status %d"), + archive, status); +#endif + /* For library format errors, specification says to return -2 */ + return -2; + } + } + + VMS_function = function; + + /* Clear the return status, as we are supposed to stop calling the + callback function if it becomes non-zero, and this is a static + variable. */ + VMS_function_ret = 0; + + status = lbr$get_index(&VMS_lib_idx, &index, VMS_get_member_info, NULL, 0); + + lbr$close(&VMS_lib_idx); + + /* Unless a failure occurred in the lbr$ routines, return the + the status from the 'function' routine. */ + if ($VMS_STATUS_SUCCESS(status)) + { + return VMS_function_ret; + } + + /* This must be something wrong with the library and an error + message should already have been printed. */ + return -2; +} + +#else /* !VMS */ + +/* SCO Unix's compiler defines both of these. */ +#ifdef M_UNIX +#undef M_XENIX +#endif + +/* On the sun386i and in System V rel 3, ar.h defines two different archive + formats depending upon whether you have defined PORTAR (normal) or PORT5AR + (System V Release 1). There is no default, one or the other must be defined + to have a nonzero value. */ + +#if (!defined (PORTAR) || PORTAR == 0) && (!defined (PORT5AR) || PORT5AR == 0) +#undef PORTAR +#ifdef M_XENIX +/* According to Jim Sievert , for SCO XENIX defining + PORTAR to 1 gets the wrong archive format, and defining it to 0 gets the + right one. */ +#define PORTAR 0 +#else +#define PORTAR 1 +#endif +#endif + +/* On AIX, define these symbols to be sure to get both archive formats. + AIX 4.3 introduced the "big" archive format to support 64-bit object + files, so on AIX 4.3 systems we need to support both the "normal" and + "big" archive formats. An archive's format is indicated in the + "fl_magic" field of the "FL_HDR" structure. For a normal archive, + this field will be the string defined by the AIAMAG symbol. For a + "big" archive, it will be the string defined by the AIAMAGBIG symbol + (at least on AIX it works this way). + + Note: we'll define these symbols regardless of which AIX version + we're compiling on, but this is okay since we'll use the new symbols + only if they're present. */ +#ifdef _AIX +# define __AR_SMALL__ +# define __AR_BIG__ +#endif + +#ifndef WINDOWS32 +# if 0 +# include +# else + /* These platforms don't have but have archives in the same format + * as many other Unices. This was taken from GNU binutils for BeOS. + */ +# define ARMAG "!\n" /* String that begins an archive file. */ +# define SARMAG 8 /* Size of that string. */ +# define ARFMAG "`\n" /* String in ar_fmag at end of each header. */ +struct ar_hdr + { + char ar_name[16]; /* Member file name, sometimes / terminated. */ + char ar_date[12]; /* File date, decimal seconds since Epoch. */ + char ar_uid[6], ar_gid[6]; /* User and group IDs, in ASCII decimal. */ + char ar_mode[8]; /* File mode, in ASCII octal. */ + char ar_size[10]; /* File size, in ASCII decimal. */ + char ar_fmag[2]; /* Always contains ARFMAG. */ + }; +# endif +# define TOCHAR(_m) (_m) +#else +/* These should allow us to read Windows (VC++) libraries (according to Frank + * Libbrecht ) + */ +# include +# include +# include +# define ARMAG IMAGE_ARCHIVE_START +# define SARMAG IMAGE_ARCHIVE_START_SIZE +# define ar_hdr _IMAGE_ARCHIVE_MEMBER_HEADER +# define ar_name Name +# define ar_mode Mode +# define ar_size Size +# define ar_date Date +# define ar_uid UserID +# define ar_gid GroupID +/* In Windows the member names have type BYTE so we must cast them. */ +# define TOCHAR(_m) ((char *)(_m)) +#endif + +/* Cray's apparently defines this. */ +#ifndef AR_HDR_SIZE +# 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, + and for each one call FUNCTION with the following arguments: + archive file descriptor for reading the data, + member name, + member name might be truncated flag, + member header position in file, + member data position in file, + member data size, + member date, + member uid, + member gid, + member protection mode, + ARG. + + The descriptor is poised to read the data of the member + when FUNCTION is called. It does not matter how much + data FUNCTION reads. + + If FUNCTION returns nonzero, we immediately return + what FUNCTION returned. + + Returns -1 if archive does not exist, + Returns -2 if archive has invalid format. + Returns 0 if have scanned successfully. */ + +intmax_t +ar_scan (const char *archive, ar_member_func_t function, const void *arg) +{ +#ifdef AIAMAG + FL_HDR fl_header; +# ifdef AIAMAGBIG + int big_archive = 0; + FL_HDR_BIG fl_header_big; +# endif +#endif + char *namemap = 0; + unsigned int namemap_size = 0; + int desc = open (archive, O_RDONLY, 0); + if (desc < 0) + return -1; + +#ifdef SARMAG + { + char buf[SARMAG]; + int nread; + nread = readbuf (desc, buf, SARMAG); + if (nread != SARMAG || memcmp (buf, ARMAG, SARMAG)) + goto invalid; + } +#else +#ifdef AIAMAG + { + int nread; + nread = readbuf (desc, &fl_header, FL_HSZ); + if (nread != FL_HSZ) + goto invalid; + +#ifdef AIAMAGBIG + /* If this is a "big" archive, then set the flag and + re-read the header into the "big" structure. */ + if (!memcmp (fl_header.fl_magic, AIAMAGBIG, SAIAMAG)) + { + off_t o; + + big_archive = 1; + + /* seek back to beginning of archive */ + EINTRLOOP (o, lseek (desc, 0, 0)); + if (o < 0) + goto invalid; + + /* re-read the header into the "big" structure */ + nread = readbuf (desc, &fl_header_big, FL_HSZ_BIG); + if (nread != FL_HSZ_BIG) + goto invalid; + } + else +#endif + /* Check to make sure this is a "normal" archive. */ + if (memcmp (fl_header.fl_magic, AIAMAG, SAIAMAG)) + goto invalid; + } +#else + { +#ifndef M_XENIX + int buf; +#else + unsigned short int buf; +#endif + int nread; + nread = readbuf (desc, &buf, sizeof (buf)); + if (nread != sizeof (buf) || buf != ARMAG) + goto invalid; + } +#endif +#endif + + /* Now find the members one by one. */ + { +#ifdef SARMAG + long int member_offset = SARMAG; +#else +#ifdef AIAMAG + long int member_offset; + long int last_member_offset; + +#ifdef AIAMAGBIG + if ( big_archive ) + { + sscanf (fl_header_big.fl_fstmoff, "%20ld", &member_offset); + sscanf (fl_header_big.fl_lstmoff, "%20ld", &last_member_offset); + } + else +#endif + { + sscanf (fl_header.fl_fstmoff, "%12ld", &member_offset); + sscanf (fl_header.fl_lstmoff, "%12ld", &last_member_offset); + } + + if (member_offset == 0) + { + /* Empty archive. */ + close (desc); + return 0; + } +#else +#ifndef M_XENIX + long int member_offset = sizeof (int); +#else /* Xenix. */ + long int member_offset = sizeof (unsigned short int); +#endif /* Not Xenix. */ +#endif +#endif + + while (1) + { + ssize_t nread; + struct ar_hdr member_header; +#ifdef AIAMAGBIG + struct ar_hdr_big member_header_big; +#endif +#ifdef AIAMAG +# define ARNAME_MAX 255 + char name[ARNAME_MAX + 1]; + int name_len; + intmax_t dateval; + int uidval, gidval; + long int data_offset; +#else +# define ARNAME_MAX (int)sizeof(member_header.ar_name) + char namebuf[ARNAME_MAX + 1]; + char *name; + int is_namemap; /* Nonzero if this entry maps long names. */ + int long_name = 0; +#endif + long int eltsize; + unsigned int eltmode; + 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; + +#ifdef AIAMAG +#define AR_MEMHDR_SZ(x) (sizeof(x) - sizeof (x._ar_name)) + +#ifdef AIAMAGBIG + if (big_archive) + { + nread = readbuf (desc, &member_header_big, + AR_MEMHDR_SZ(member_header_big)); + + if (nread != AR_MEMHDR_SZ(member_header_big)) + goto invalid; + + sscanf (member_header_big.ar_namlen, "%4d", &name_len); + if (name_len < 1 || name_len > ARNAME_MAX) + goto invalid; + + nread = readbuf (desc, name, name_len); + if (nread != name_len) + goto invalid; + + name[name_len] = '\0'; + + 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); + sscanf (member_header_big.ar_size, "%20ld", &eltsize); + + data_offset = (member_offset + AR_MEMHDR_SZ(member_header_big) + + name_len + 2); + } + else +#endif + { + nread = readbuf (desc, &member_header, + AR_MEMHDR_SZ(member_header)); + + if (nread != AR_MEMHDR_SZ(member_header)) + goto invalid; + + sscanf (member_header.ar_namlen, "%4d", &name_len); + if (name_len < 1 || name_len > ARNAME_MAX) + goto invalid; + + nread = readbuf (desc, name, name_len); + if (nread != name_len) + goto invalid; + + name[name_len] = '\0'; + + 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); + sscanf (member_header.ar_size, "%12ld", &eltsize); + + data_offset = (member_offset + AR_MEMHDR_SZ(member_header) + + name_len + 2); + } + data_offset += data_offset % 2; + + fnval = + (*function) (desc, name, 0, + member_offset, data_offset, eltsize, + dateval, uidval, gidval, + eltmode, arg); + +#else /* Not AIAMAG. */ + nread = readbuf (desc, &member_header, AR_HDR_SIZE); + if (nread == 0) + /* No data left means end of file; that is OK. */ + break; + + if (nread != AR_HDR_SIZE +#if defined(ARFMAG) || defined(ARFZMAG) + || ( +# ifdef ARFMAG + memcmp (member_header.ar_fmag, ARFMAG, 2) +# else + 1 +# endif + && +# ifdef ARFZMAG + memcmp (member_header.ar_fmag, ARFZMAG, 2) +# else + 1 +# endif + ) +#endif + ) + goto invalid; + + name = namebuf; + memcpy (name, member_header.ar_name, sizeof member_header.ar_name); + { + char *p = name + sizeof member_header.ar_name; + do + *p = '\0'; + while (p > name && *--p == ' '); + +#ifndef AIAMAG + /* If the member name is "//" or "ARFILENAMES/" this may be + a list of file name mappings. The maximum file name + length supported by the standard archive format is 14 + characters. This member will actually always be the + first or second entry in the archive, but we don't check + that. */ + is_namemap = (!strcmp (name, "//") + || !strcmp (name, "ARFILENAMES/")); +#endif /* Not AIAMAG. */ + + /* On some systems, there is a slash after each member name. */ + if (*p == '/') + *p = '\0'; + +#ifndef AIAMAG + /* If the member name starts with a space or a slash, this + is an index into the file name mappings (used by GNU ar). + Otherwise if the member name looks like #1/NUMBER the + real member name appears in the element data (used by + 4.4BSD). */ + if (! is_namemap + && (name[0] == ' ' || name[0] == '/') + && namemap != 0) + { + const char* err; + unsigned int name_off = make_toui (name + 1, &err); + size_t name_len; + + if (err|| name_off >= namemap_size) + goto invalid; + + name = namemap + name_off; + name_len = strlen (name); + if (name_len < 1) + goto invalid; + long_name = 1; + } + else if (name[0] == '#' + && name[1] == '1' + && name[2] == '/') + { + const char* err; + unsigned int name_len = make_toui (name + 3, &err); + + 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 < 0 || (unsigned int) nread != name_len) + goto invalid; + + name[name_len] = '\0'; + + long_name = 1; + } +#endif /* Not AIAMAG. */ + } + +#ifndef M_XENIX +#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; +#endif /* Not Xenix. */ + + fnval = + (*function) (desc, name, ! long_name, member_offset, + member_offset + AR_HDR_SIZE, eltsize, +#ifndef M_XENIX + eltdate, eltuid, eltgid, +#else /* Xenix. */ + member_header.ar_date, + member_header.ar_uid, + member_header.ar_gid, +#endif /* Not Xenix. */ + eltmode, arg); + +#endif /* AIAMAG. */ + + if (fnval) + { + (void) close (desc); + return fnval; + } + +#ifdef AIAMAG + if (member_offset == last_member_offset) + /* End of the chain. */ + break; + +#ifdef AIAMAGBIG + if (big_archive) + sscanf (member_header_big.ar_nxtmem, "%20ld", &member_offset); + else +#endif + sscanf (member_header.ar_nxtmem, "%12ld", &member_offset); + + if (lseek (desc, member_offset, 0) != member_offset) + goto invalid; +#else + + /* If this member maps archive names, we must read it in. The + name map will always precede any members whose names must + be mapped. */ + if (is_namemap) + { + char *clear; + char *limit; + + if (eltsize > INT_MAX) + goto invalid; + namemap = alloca (eltsize + 1); + nread = readbuf (desc, namemap, eltsize); + if (nread != eltsize) + goto invalid; + namemap_size = eltsize; + + /* The names are separated by newlines. Some formats have + a trailing slash. Null terminate the strings for + convenience. */ + limit = namemap + eltsize; + for (clear = namemap; clear < limit; clear++) + { + if (*clear == '\n') + { + *clear = '\0'; + if (clear[-1] == '/') + clear[-1] = '\0'; + } + } + *limit = '\0'; + + is_namemap = 0; + } + + member_offset += AR_HDR_SIZE + eltsize; + if (member_offset % 2 != 0) + member_offset++; +#endif + } + } + + close (desc); + return 0; + + invalid: + close (desc); + return -2; +} +#endif /* !VMS */ + +/* Return nonzero iff NAME matches MEM. + If TRUNCATED is nonzero, MEM may be truncated to + sizeof (struct ar_hdr.ar_name) - 1. */ + +int +ar_name_equal (const char *name, const char *mem, int truncated) +{ + const char *p; + + p = strrchr (name, '/'); + if (p != 0) + name = p + 1; + +#ifndef VMS + if (truncated) + { +#ifdef AIAMAG + /* TRUNCATED should never be set on this system. */ + abort (); +#else + struct ar_hdr hdr; +#if !defined (__hpux) && !defined (cray) + return strneq (name, mem, sizeof (hdr.ar_name) - 1); +#else + return strneq (name, mem, sizeof (hdr.ar_name) - 2); +#endif /* !__hpux && !cray */ +#endif /* !AIAMAG */ + } + + return !strcmp (name, mem); +#else + /* VMS members do not have suffixes, but the filenames usually + have. + Do we need to strip VMS disk/directory format paths? + + Most VMS compilers etc. by default are case insensitive + but produce uppercase external names, incl. module names. + However the VMS librarian (ar) and the linker by default + are case sensitive: they take what they get, usually + uppercase names. So for the non-default settings of the + compilers etc. there is a need to have a case sensitive + mode. */ + { + int len; + len = strlen(mem); + int match; + char *dot; + if ((dot=strrchr(name,'.'))) + match = (len == dot - name) && !strncasecmp(name, mem, len); + else + match = !strcasecmp (name, mem); + return match; + } +#endif /* !VMS */ +} + +#ifndef VMS +/* ARGSUSED */ +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, + intmax_t date UNUSED, int uid UNUSED, int gid UNUSED, + unsigned int mode UNUSED, const void *name) +{ + if (!ar_name_equal (name, mem, truncated)) + return 0; + return hdrpos; +} + +/* Set date of member MEMNAME in archive ARNAME to current time. + Returns 0 if successful, + -1 if file ARNAME does not exist, + -2 if not a valid archive, + -3 if other random system call error (including file read-only), + 1 if valid but member MEMNAME does not exist. */ + +int +ar_member_touch (const char *arname, const char *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; + int datelen; + struct stat statbuf; + + if (pos < 0) + return (int) pos; + 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, opos, 0)); + if (o < 0) + goto lose; + r = readbuf (fd, &ar_hdr, AR_HDR_SIZE); + if (r != AR_HDR_SIZE) + goto lose; + /* The file's mtime is the time we we want. */ + EINTRLOOP (r, fstat (fd, &statbuf)); + if (r < 0) + goto lose; + /* Advance member's time to that time */ +#if defined(ARFMAG) || defined(ARFZMAG) || defined(AIAMAG) || defined(WINDOWS32) + 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, opos, 0)); + if (o < 0) + goto lose; + r = writebuf (fd, &ar_hdr, AR_HDR_SIZE); + if (r != AR_HDR_SIZE) + goto lose; + close (fd); + return 0; + + lose: + r = errno; + close (fd); + errno = r; + return -3; +} +#endif + +#ifdef TEST + +intmax_t +describe_member (int desc, const char *name, int truncated, + long int hdrpos, long int datapos, long int size, + 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); + ds = ctime (&d); + printf (_(" Date %s"), ds ? ds : "?"); + printf (_(" uid = %d, gid = %d, mode = 0%o.\n"), uid, gid, mode); + + return 0; +} + +int +main (int argc, char **argv) +{ + ar_scan (argv[1], describe_member, NULL); + return 0; +} + +#endif /* TEST. */ +#endif /* NO_ARCHIVES. */ diff --git a/local/recipes/dev/gnu-make/source/src/commands.c b/local/recipes/dev/gnu-make/source/src/commands.c new file mode 100644 index 0000000000..9bb4eb6e8b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/commands.c @@ -0,0 +1,712 @@ +/* Command processing for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include "filedef.h" +#include "os.h" +#include "dep.h" +#include "variable.h" +#include "job.h" +#include "commands.h" +#ifdef WINDOWS32 +#include +#include "w32err.h" +#endif + +#if VMS +# define FILE_LIST_SEPARATOR (vms_comma_separator ? ',' : ' ') +#else +# define FILE_LIST_SEPARATOR ' ' +#endif + + +static unsigned long +dep_hash_1 (const void *key) +{ + const struct dep *d = key; + return_STRING_HASH_1 (dep_name (d)); +} + +static unsigned long +dep_hash_2 (const void *key) +{ + const struct dep *d = key; + return_STRING_HASH_2 (dep_name (d)); +} + +static int +dep_hash_cmp (const void *x, const void *y) +{ + const struct dep *dx = x; + const struct dep *dy = y; + return strcmp (dep_name (dx), dep_name (dy)); +} + +/* 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, const char *stem) +{ + struct dep *d; + const char *at, *percent, *star, *less; + +#ifndef NO_ARCHIVES + /* If the target is an archive member 'lib(member)', + then $@ is 'lib' and $% is 'member'. */ + + if (ar_name (file->name)) + { + size_t len; + const char *cp; + char *p; + + cp = strchr (file->name, '('); + p = alloca (cp - file->name + 1); + memcpy (p, file->name, cp - file->name); + p[cp - file->name] = '\0'; + at = p; + len = strlen (cp + 1); + p = alloca (len); + memcpy (p, cp + 1, len - 1); + p[len - 1] = '\0'; + percent = p; + } + else +#endif /* NO_ARCHIVES. */ + { + at = file->name; + percent = ""; + } + + /* $* is the stem from an implicit or static pattern rule. */ + if (stem == 0) + { + /* In Unix make, $* is set to the target name with + any suffix in the .SUFFIXES list stripped off for + explicit rules. We store this in the 'stem' member. */ + const char *name; + size_t len; + +#ifndef NO_ARCHIVES + if (ar_name (file->name)) + { + name = strchr (file->name, '(') + 1; + len = strlen (name) - 1; + } + else +#endif + { + name = file->name; + len = strlen (name); + } + + for (d = enter_file (strcache_add (".SUFFIXES"))->deps; d ; d = d->next) + { + const char *dn = dep_name (d); + size_t slen = strlen (dn); + if (len > slen && memcmp (dn, name + (len - slen), slen) == 0) + { + file->stem = stem = strcache_add_len (name, len - slen); + break; + } + } + if (d == 0) + file->stem = 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 && !d->need_2nd_expansion) + { + less = dep_name (d); + break; + } + + if (file->cmds != 0 && file->cmds == default_file->cmds) + /* This file got its commands from .DEFAULT. + In this case $< is the same as $@. */ + less = at; + +#define DEFINE_VARIABLE(name, len, value) \ + (void) define_variable_for_file (name,len,value,o_automatic,0,file) + + /* Define the variables. */ + + DEFINE_VARIABLE ("<", 1, less); + DEFINE_VARIABLE ("*", 1, star); + DEFINE_VARIABLE ("@", 1, at); + DEFINE_VARIABLE ("%", 1, percent); + + /* Compute the values for $^, $+, $?, and $|. */ + + { + static char *plus_value=0, *bar_value=0, *qmark_value=0; + static size_t plus_max=0, bar_max=0, qmark_max=0; + + size_t qmark_len, plus_len, bar_len; + char *cp; + char *caret_value; + char *qp; + char *bp; + size_t len; + + struct hash_table dep_hash; + void **slot; + + /* Compute first the value for $+, which is supposed to contain + duplicate dependencies as they were listed in the makefile. */ + + plus_len = 0; + bar_len = 0; + for (d = file->deps; d != 0; d = d->next) + { + if (!d->need_2nd_expansion && !d->ignore_automatic_vars) + { + if (d->ignore_mtime) + bar_len += strlen (dep_name (d)) + 1; + else + plus_len += strlen (dep_name (d)) + 1; + } + } + + if (bar_len == 0) + bar_len++; + + if (plus_len == 0) + plus_len++; + + if (plus_len > plus_max) + plus_value = xrealloc (plus_value, plus_max = plus_len); + + cp = plus_value; + + qmark_len = plus_len + 1; /* Will be this or less. */ + for (d = file->deps; d != 0; d = d->next) + if (! d->ignore_mtime && ! d->need_2nd_expansion && ! d->ignore_automatic_vars) + { + const char *c = dep_name (d); + +#ifndef NO_ARCHIVES + if (ar_name (c)) + { + c = strchr (c, '(') + 1; + len = strlen (c) - 1; + } + else +#endif + len = strlen (c); + + 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. */ + } + + /* Kill the last space and define the variable. */ + + cp[cp > plus_value ? -1 : 0] = '\0'; + DEFINE_VARIABLE ("+", 1, plus_value); + + /* Compute the values for $^, $?, and $|. */ + + cp = caret_value = plus_value; /* Reuse the buffer; it's big enough. */ + + if (qmark_len > qmark_max) + qmark_value = xrealloc (qmark_value, qmark_max = qmark_len); + qp = qmark_value; + + if (bar_len > bar_max) + bar_value = xrealloc (bar_value, bar_max = bar_len); + bp = bar_value; + + /* Make sure that no dependencies are repeated in $^, $?, and $|. It + would be natural to combine the next two loops but we can't do it + because of a situation where we have two dep entries, the first + is order-only and the second is normal (see below). */ + + hash_init (&dep_hash, 500, dep_hash_1, dep_hash_2, dep_hash_cmp); + + for (d = file->deps; d != 0; d = d->next) + { + if (d->need_2nd_expansion || d->ignore_automatic_vars) + continue; + + slot = hash_find_slot (&dep_hash, d); + if (HASH_VACANT (*slot)) + hash_insert_at (&dep_hash, d, slot); + else + { + /* Check if the two prerequisites have different ignore_mtime. + If so then we need to "upgrade" one that is order-only. */ + + struct dep* hd = (struct dep*) *slot; + + if (d->ignore_mtime != hd->ignore_mtime) + d->ignore_mtime = hd->ignore_mtime = 0; + } + } + + for (d = file->deps; d != 0; d = d->next) + { + const char *c; + + if (d->need_2nd_expansion || d->ignore_automatic_vars || hash_find_item (&dep_hash, d) != d) + continue; + + c = dep_name (d); +#ifndef NO_ARCHIVES + if (ar_name (c)) + { + c = strchr (c, '(') + 1; + len = strlen (c) - 1; + } + else +#endif + len = strlen (c); + + if (d->ignore_mtime) + { + bp = mempcpy (bp, c, len); + *bp++ = FILE_LIST_SEPARATOR; + } + else + { + cp = mempcpy (cp, c, len); + *cp++ = FILE_LIST_SEPARATOR; + if (d->changed || always_make_flag) + { + qp = mempcpy (qp, c, len); + *qp++ = FILE_LIST_SEPARATOR; + } + } + } + + hash_free (&dep_hash, 0); + + /* Kill the last spaces and define the variables. */ + + cp[cp > caret_value ? -1 : 0] = '\0'; + DEFINE_VARIABLE ("^", 1, caret_value); + + qp[qp > qmark_value ? -1 : 0] = '\0'; + DEFINE_VARIABLE ("?", 1, qmark_value); + + bp[bp > bar_value ? -1 : 0] = '\0'; + DEFINE_VARIABLE ("|", 1, bar_value); + } + +#undef DEFINE_VARIABLE +} + +/* Chop CMDS up into individual command lines if necessary. + Also set the 'lines_flags' and 'any_recurse' members. */ + +void +chop_commands (struct commands *cmds) +{ + 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 != NULL) + return; + + /* Chop CMDS->commands up into lines in CMDS->command_lines. */ + + if (one_shell) + { + size_t l = strlen (cmds->commands); + + nlines = 1; + lines = xmalloc (nlines * sizeof (char *)); + lines[0] = xstrdup (cmds->commands); + + /* Strip the trailing newline. */ + if (l > 0 && lines[0][l-1] == '\n') + lines[0][l-1] = '\0'; + } + else + { + const char *p = cmds->commands; + size_t max = 5; + + nlines = 0; + lines = xmalloc (max * sizeof (char *)); + while (*p != '\0') + { + const char *end = p; + find_end:; + end = strchr (end, '\n'); + if (end == NULL) + end = p + strlen (p); + else if (end > p && end[-1] == '\\') + { + int backslash = 1; + if (end > p + 1) + { + const char *b; + for (b = end - 2; b >= p && *b == '\\'; --b) + backslash = !backslash; + } + if (backslash) + { + ++end; + goto find_end; + } + } + + if (nlines == USHRT_MAX) + ON (fatal, &cmds->fileinfo, + _("Recipe has too many lines (limit %hu)"), nlines); + + if (nlines == max) + { + max += 2; + lines = xrealloc (lines, max * sizeof (char *)); + } + + lines[nlines++] = xstrndup (p, (size_t) (end - p)); + p = end; + if (*p != '\0') + ++p; + } + } + + /* Finally, set the corresponding CMDS->lines_flags elements and the + CMDS->any_recurse flag. */ + + cmds->ncommand_lines = nlines; + cmds->command_lines = lines; + + cmds->any_recurse = 0; + cmds->lines_flags = xmalloc (nlines); + + for (i = 0; i < nlines; ++i) + { + unsigned char flags = 0; + const char *p = lines[i]; + + while (ISBLANK (*p) || *p == '-' || *p == '@' || *p == '+') + switch (*(p++)) + { + case '+': + flags |= COMMANDS_RECURSE; + break; + case '@': + flags |= COMMANDS_SILENT; + break; + case '-': + flags |= COMMANDS_NOERROR; + break; + } + + /* If no explicit '+' was given, look for MAKE variable references. */ + if (! ANY_SET (flags, COMMANDS_RECURSE) + && (strstr (p, "$(MAKE)") != 0 || strstr (p, "${MAKE}") != 0)) + flags |= COMMANDS_RECURSE; + + cmds->lines_flags[i] = flags; + cmds->any_recurse |= ANY_SET (flags, COMMANDS_RECURSE) ? 1 : 0; + } +} + +/* Execute the commands to remake FILE. If they are currently executing, + return or have already finished executing, just return. Otherwise, + fork off a child process to run the first command line in the sequence. */ + +void +execute_file_commands (struct file *file) +{ + const char *p; + + /* Don't go through all the preparations if + the commands are nothing but whitespace. */ + + for (p = file->cmds->commands; *p != '\0'; ++p) + if (!ISSPACE (*p) && *p != '-' && *p != '@' && *p != '+') + break; + if (*p == '\0') + { + /* If there are no commands, assume everything worked. */ + set_command_state (file, cs_running); + file->update_status = us_success; + notice_finished_file (file); + return; + } + + /* First set the automatic variables according to this file. */ + + initialize_file_variables (file, 0); + + set_file_variables (file, file->stem); + + /* 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); +} + +/* This is set while we are inside fatal_error_signal, + so things can avoid nonreentrant operations. */ + +volatile sig_atomic_t handling_fatal_signal = 0; + +/* Handle fatal signals. */ + +void +fatal_error_signal (int sig) +{ +#ifdef __MSDOS__ + extern int dos_status, dos_command_running; + + if (dos_command_running) + { + /* That was the child who got the signal, not us. */ + dos_status |= (sig << 8); + return; + } + remove_intermediates (1); + exit (EXIT_FAILURE); +#else /* not __MSDOS__ */ +#ifdef _AMIGA + remove_intermediates (1); + if (sig == SIGINT) + fputs (_("*** Break.\n"), stderr); + + exit (10); +#else /* not Amiga */ +#ifdef WINDOWS32 + extern HANDLE main_thread; + + /* 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) + { + DWORD susp_count = SuspendThread (main_thread); + + if (susp_count != 0) + fprintf (stderr, "SuspendThread: suspend count = %lu\n", susp_count); + else if (susp_count == (DWORD)-1) + { + DWORD ierr = GetLastError (); + + fprintf (stderr, "SuspendThread: error %lu: %s\n", + ierr, map_windows32_error_to_string (ierr)); + } + } +#endif + handling_fatal_signal = 1; + + /* Set the handling for this signal to the default. + 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. */ + + if (sig == SIGTERM) + { + struct child *c; + for (c = children; c != 0; c = c->next) + if (!c->remote && c->pid > 0) + (void) kill (c->pid, SIGTERM); + } + + /* If we got a signal that means the user + wanted to kill make, remove pending targets. */ + + if (sig == SIGTERM || sig == SIGINT +#ifdef SIGHUP + || sig == SIGHUP +#endif +#ifdef SIGQUIT + || sig == SIGQUIT +#endif + ) + { + struct child *c; + + /* Remote children won't automatically get signals sent + to the process group, so we must send them. */ + for (c = children; c != 0; c = c->next) + if (c->remote && c->pid > 0) + (void) remote_kill (c->pid, sig); + + for (c = children; c != 0; c = c->next) + delete_child_targets (c); + + /* Clean up the children. We don't just use the call below because + we don't want to print the "Waiting for children" message. */ + while (job_slots_used > 0) + reap_children (1, 0); + } + else + /* Wait for our children to die. */ + while (job_slots_used > 0) + reap_children (1, 1); + + /* Delete any non-precious intermediate files that were made. */ + + remove_intermediates (1); + +#ifdef SIGQUIT + if (sig == SIGQUIT) + /* We don't want to send ourselves SIGQUIT, because it will + cause a core dump. Just exit instead. */ + exit (MAKE_TROUBLE); +#endif + +#ifdef WINDOWS32 + if (main_thread) + CloseHandle (main_thread); + /* Cannot call W32_kill with a pid (it needs a handle). The exit + status of 130 emulates what happens in Bash. */ + exit (130); +#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 (make_pid (), sig) < 0) + pfatal_with_name ("kill"); +#endif /* not WINDOWS32 */ +#endif /* not Amiga */ +#endif /* not __MSDOS__ */ +} + +/* Delete FILE unless it's precious or not actually a file (phony), + and it has changed on disk since we last stat'd it. */ + +static void +delete_target (struct file *file, const char *on_behalf_of) +{ + struct stat st; + int e; + + if (file->precious || file->phony) + return; + +#ifndef NO_ARCHIVES + if (ar_name (file->name)) + { + time_t file_date = (file->last_mtime == NONEXISTENT_MTIME + ? (time_t) -1 + : (time_t) FILE_TIMESTAMP_S (file->last_mtime)); + if (ar_member_date (file->name) != file_date) + { + if (on_behalf_of) + OSS (error, NILF, + _("*** [%s] Archive member '%s' may be bogus; not deleted"), + on_behalf_of, file->name); + else + OS (error, NILF, + _("*** Archive member '%s' may be bogus; not deleted"), + file->name); + } + return; + } +#endif + + EINTRLOOP (e, stat (file->name, &st)); + if (e == 0 + && S_ISREG (st.st_mode) + && FILE_TIMESTAMP_STAT_MODTIME (file->name, st) != file->last_mtime) + { + if (on_behalf_of) + OSS (error, NILF, + _("*** [%s] Deleting file '%s'"), on_behalf_of, file->name); + else + OS (error, NILF, _("*** Deleting file '%s'"), file->name); + if (unlink (file->name) < 0 + && errno != ENOENT) /* It disappeared; so what. */ + perror_with_name ("unlink: ", file->name); + } +} + + +/* Delete all non-precious targets of CHILD unless they were already deleted. + Set the flag in CHILD to say they've been deleted. */ + +void +delete_child_targets (struct child *child) +{ + struct dep *d; + + if (child->deleted || child->pid < 0) + return; + + /* Delete the target file if it changed. */ + delete_target (child->file, NULL); + + /* Also remove any non-precious targets listed in the 'also_make' member. */ + for (d = child->file->also_make; d != 0; d = d->next) + delete_target (d->file, child->file->name); + + child->deleted = 1; +} + +/* Print out the commands in CMDS. */ + +void +print_commands (const struct commands *cmds) +{ + const char *s; + + fputs (_("# recipe to execute"), stdout); + + if (cmds->fileinfo.filenm == 0) + puts (_(" (built-in):")); + else + printf (_(" (from '%s', line %lu):\n"), + cmds->fileinfo.filenm, cmds->fileinfo.lineno); + + s = cmds->commands; + while (*s != '\0') + { + const char *end; + int bs; + + /* Print one full logical recipe line: find a non-escaped newline. */ + for (end = s, bs = 0; *end != '\0'; ++end) + { + if (*end == '\n' && !bs) + break; + + bs = *end == '\\' ? !bs : 0; + } + + printf ("%c%.*s\n", cmd_prefix, (int) (end - s), s); + + s = end + (end[0] == '\n'); + } +} diff --git a/local/recipes/dev/gnu-make/source/src/commands.h b/local/recipes/dev/gnu-make/source/src/commands.h new file mode 100644 index 0000000000..1a717516e9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/commands.h @@ -0,0 +1,45 @@ +/* Definition of data structures describing shell commands for GNU Make. +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 +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 . */ + +/* Structure that gives the commands to make a file + and information about where these commands came from. */ + +struct commands + { + floc fileinfo; /* Where commands were defined. */ + char *commands; /* Commands text. */ + char **command_lines; /* Commands chopped up into lines. */ + unsigned char *lines_flags; /* One set of flag bits for each line. */ + unsigned short ncommand_lines;/* Number of command lines. */ + char recipe_prefix; /* Recipe prefix for this command set. */ + unsigned int any_recurse:1; /* Nonzero if any 'lines_flags' elt has */ + /* the COMMANDS_RECURSE bit set. */ + }; + +/* Bits in 'lines_flags'. */ +#define COMMANDS_RECURSE 1 /* Recurses: + or $(MAKE). */ +#define COMMANDS_SILENT 2 /* Silent: @. */ +#define COMMANDS_NOERROR 4 /* No errors: -. */ + +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, const char *stem); diff --git a/local/recipes/dev/gnu-make/source/src/config.ami b/local/recipes/dev/gnu-make/source/src/config.ami new file mode 100644 index 0000000000..775a4d71fe --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/config.ami @@ -0,0 +1,331 @@ +/* config.h -- hand-massaged for Amiga -*-C-*- +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "mkconfig.h" + +#define MK_AMIGAOS 1 + +/* Define if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +/* #undef _ALL_SOURCE */ +#endif + +/* Define if using alloca.c. */ +#define C_ALLOCA + +/* Define if the closedir function returns void instead of int. */ +/* #undef CLOSEDIR_VOID */ + +/* Define to empty if the keyword does not work. */ +/* #undef const */ + +/* 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 for DGUX with . */ +/* #undef DGUX */ + +/* Define to the widest signed integer type if and do + not define. */ +#define intmax_t long + +/* Define to 'unsigned long' or 'unsigned long long' + if doesn't define. */ +#define uintmax_t unsigned long + +/* Define to 'int' if doesn't define. */ +#define gid_t int + +/* Define if you have alloca, as a function or macro. */ +/* #undef HAVE_ALLOCA */ + +/* Define if you have and it should be used (not on Ultrix). */ +/* #undef HAVE_ALLOCA_H */ + +/* Define to 1 if you have the declaration of 'getloadavg'. */ +/* #undef HAVE_DECL_GETLOADAVG */ + +/* Define if your system has a working fnmatch function. */ +/* #undef HAVE_FNMATCH */ + +/* Define if you have the getmntent function. */ +/* #undef HAVE_GETMNTENT */ + +/* Embed GNU Guile support */ +/* #undef HAVE_GUILE */ + +/* Define if the 'long double' type works. */ +/* #undef HAVE_LONG_DOUBLE */ + +/* Define if you support file names longer than 14 characters. */ +#define HAVE_LONG_FILE_NAMES 1 + +/* Define if you have a working 'mmap' system call. */ +/* #undef HAVE_MMAP */ + +/* Define if system calls automatically restart after interruption + by a signal. */ +/* #undef HAVE_RESTARTABLE_SYSCALLS */ + +/* Define if your struct stat has st_blksize. */ +/* #undef HAVE_ST_BLKSIZE */ + +/* Define if your struct stat has st_blocks. */ +/* #undef HAVE_ST_BLOCKS */ + +/* Define if you have the strcoll function and it is properly defined. */ +#define HAVE_STRCOLL 1 + +/* Define if your struct stat has st_rdev. */ +#define HAVE_ST_RDEV 1 + +/* Define if you have the strftime function. */ +#define HAVE_STRFTIME 1 + +/* Define if you have that is POSIX.1 compatible. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define if your struct tm has tm_zone. */ +/* #undef HAVE_TM_ZONE */ + +/* Define if you don't have tm_zone but do have the external array + tzname. */ +#define HAVE_TZNAME 1 + +/* Define if you have . */ +#define HAVE_UNISTD_H 1 + +/* Define if utime(file, NULL) sets file's timestamp to the present. */ +/* #undef HAVE_UTIME_NULL */ + +/* Define if you have the wait3 system call. */ +/* #undef HAVE_WAIT3 */ + +/* Define if on MINIX. */ +/* #undef _MINIX */ + +/* Define if your struct nlist has an n_un member. */ +/* #undef NLIST_NAME_UNION */ + +/* Define if you have . */ +/* #undef NLIST_STRUCT */ + +/* Define if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Define to 'int' if doesn't define. */ +#define pid_t int + +/* Define if the system does not provide POSIX.1 features except + with this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define if you need to in order for stat and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* 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. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown + */ +#define STACK_DIRECTION -1 + +/* Define if the 'S_IS*' macros in do not work properly. */ +/* #undef STAT_MACROS_BROKEN */ + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS + +/* Define on System V Release 4. */ +/* #undef SVR4 */ + +/* Define if 'sys_siglist' is declared by . */ +/* #undef SYS_SIGLIST_DECLARED */ + +/* Define to 'int' if doesn't define. */ +#define uid_t int + +/* Define for Encore UMAX. */ +/* #undef UMAX */ + +/* Define for Encore UMAX 4.3 that has + instead of . */ +/* #undef UMAX4_3 */ + +/* Define to the name of the SCCS 'get' command. */ +#define SCCS_GET "get" + +/* Define this if the SCCS 'get' command understands the '-G' option. */ +/* #undef SCCS_GET_MINUS_G */ + +/* Define this to enable job server support in GNU make. */ +/* #undef MAKE_JOBSERVER */ + +/* Define to be the nanoseconds member of struct stat's st_mtim, + if it exists. */ +/* #undef ST_MTIM_NSEC */ + +/* Define this if the C library defines the variable 'sys_siglist'. */ +/* #undef HAVE_SYS_SIGLIST */ + +/* Define this if the C library defines the variable '_sys_siglist'. */ +/* #undef HAVE__SYS_SIGLIST */ + +/* Define this if you have the 'union wait' type in . */ +/* #undef HAVE_UNION_WAIT */ + +/* Define if you have the dup2 function. */ +/* #undef HAVE_DUP2 */ + +/* Define if you have the getcwd function. */ +#define HAVE_GETCWD 1 + +/* Define if you have the getgroups function. */ +/* #undef HAVE_GETGROUPS */ + +/* Define if you have the gethostbyname function. */ +/* #undef HAVE_GETHOSTBYNAME */ + +/* Define if you have the gethostname function. */ +/* #undef HAVE_GETHOSTNAME */ + +/* Define if you have the memmove function. */ +#define HAVE_MEMMOVE 1 + +/* Define if you have the mktemp function. */ +#define HAVE_MKTEMP 1 + +/* Define if you have the psignal function. */ +/* #undef HAVE_PSIGNAL */ + +/* Define if you have the pstat_getdynamic function. */ +/* #undef HAVE_PSTAT_GETDYNAMIC */ + +/* Define if you have the setegid function. */ +/* #undef HAVE_SETEGID */ + +/* Define if you have the seteuid function. */ +/* #undef HAVE_SETEUID */ + +/* Define if you have the setlinebuf function. */ +/* #undef HAVE_SETLINEBUF */ + +/* Define if you have the setregid function. */ +/* #undef HAVE_SETREGID */ + +/* Define if you have the setreuid function. */ +/* #undef HAVE_SETREUID */ + +/* Define if you have the sigsetmask function. */ +/* #undef HAVE_SIGSETMASK */ + +/* Define if you have the socket function. */ +/* #undef HAVE_SOCKET */ + +/* Define to 1 if you have the strcasecmp function. */ +/* #undef HAVE_STRCASECMP */ + +/* Define to 1 if you have the strcmpi function. */ +/* #undef HAVE_STRCMPI */ + +/* Define to 1 if you have the stricmp function. */ +/* #undef HAVE_STRICMP */ + +/* 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 */ + +/* Define if you have the waitpid function. */ +/* #undef HAVE_WAITPID */ + +/* Define if you have the header file. */ +#define HAVE_DIRENT_H 1 + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_MACH_MACH_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_MEMORY_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_NDIR_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_STDLIB_H */ + +/* Define if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_DIR_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_NDIR_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_PARAM_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_TIMEB_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define if you have the dgc library (-ldgc). */ +/* #undef HAVE_LIBDGC */ + +/* Define if you have the kstat library (-lkstat). */ +/* #undef HAVE_LIBKSTAT */ + +/* Define to 1 if you have the `isatty' function. */ +/* #undef HAVE_ISATTY */ + +/* Define to 1 if you have the `ttyname' function. */ +/* #undef HAVE_TTYNAME */ + +/* Define if you have the sun library (-lsun). */ +/* #undef HAVE_LIBSUN */ + +/* Output sync support */ +#define NO_OUTPUT_SYNC + +/* Define for Case Insensitive behavior */ +#define HAVE_CASE_INSENSITIVE_FS + +/* Build host information. */ +#define MAKE_HOST "Amiga" + +/* Define to `int' if does not define. */ +#define ssize_t int diff --git a/local/recipes/dev/gnu-make/source/src/config.h-vms b/local/recipes/dev/gnu-make/source/src/config.h-vms new file mode 100644 index 0000000000..53e6b90ac0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/config.h-vms @@ -0,0 +1,430 @@ +/* config.h-vms. Generated by hand by Klaus Kämpf -*-C-*- + +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "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. */ +#ifdef __DECC +# include +#endif + +/* Define to 1 if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +/* #undef _ALL_SOURCE */ +#endif + +/* Define to 1 if NLS is requested. */ +/* #undef ENABLE_NLS */ + +/* Define as 1 if you have dcgettext. */ +/* #undef HAVE_DCGETTEXT */ + +/* Define as 1 if you have gettext and don't want to use GNU gettext. */ +/* #undef HAVE_GETTEXT */ + +/* Embed GNU Guile support */ +/* #undef HAVE_GUILE */ + +/* Define to 1 if your locale.h file contains LC_MESSAGES. */ +/* #undef HAVE_LC_MESSAGES */ + +/* Define to the installation directory for locales. */ +#define LOCALEDIR "" + +/* Define as 1 if you have the stpcpy function. */ +/* #undef HAVE_STPCPY */ + +/* Define to 1 if the closedir function returns void instead of int. */ +/* #undef CLOSEDIR_VOID */ + +/* Define to empty if the keyword does not work. */ +/* #undef const */ + +/* 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 for DGUX with . */ +/* #undef DGUX */ + +/* Define to the widest signed integer type if and do + not define. */ +#define intmax_t unsigned long + +/* Define to 'unsigned long' or 'unsigned long long' + if doesn't define. */ +#define uintmax_t unsigned long + +/* Define to 'int' if doesn't define. */ +/* #undef gid_t */ + +/* Define to 1 if you have alloca, as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). */ +/* #undef HAVE_ALLOCA_H */ + +/* Define to 1 if you have the declaration of 'getloadavg'. */ +/* #undef HAVE_DECL_GETLOADAVG */ + +/* Define to 1 if you have the fdopen function. */ +#define HAVE_FDOPEN 1 + +/* Define to 1 if your system has a working fnmatch function. */ +/* #undef HAVE_FNMATCH */ + +/* Define to 1 if you have the getmntent function. */ +/* #undef HAVE_GETMNTENT */ + +/* Define to 1 if the 'long double' type works. */ +/* #undef HAVE_LONG_DOUBLE */ + +/* Define to 1 if you support file names longer than 14 characters. */ +#define HAVE_LONG_FILE_NAMES 1 + +/* Define to 1 if you have a working 'mmap' system call. */ +/* #undef HAVE_MMAP */ + +/* Define to 1 if system calls automatically restart after interruption + by a signal. */ +/* #undef HAVE_RESTARTABLE_SYSCALLS */ + +/* Define to 1 if your struct stat has st_blksize. */ +/* #undef HAVE_ST_BLKSIZE */ + +/* Define to 1 if your struct stat has st_blocks. */ +/* #undef HAVE_ST_BLOCKS */ + +/* Define to 1 if you have the strcoll function and it is properly defined. */ +/* #undef HAVE_STRCOLL */ + +/* Define to 1 if you have the strncasecmp' function. */ +#if __CRTL_VER >= 70000000 +#define HAVE_STRNCASECMP 1 +#endif + +/* Define to 1 if your struct stat has st_rdev. */ +/* #undef HAVE_ST_RDEV */ + +/* Define to 1 if you have the strftime function. */ +/* #undef HAVE_STRFTIME */ + +/* Define to 1 if you have that is POSIX.1 compatible. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define to 1 if your struct tm has tm_zone. */ +/* #undef HAVE_TM_ZONE */ + +/* Define to 1 if you don't have tm_zone but do have the external array + tzname. */ +/* #undef HAVE_TZNAME */ + +/* Define to 1 if you have . */ +#ifdef __DECC +#define HAVE_UNISTD_H 1 +#endif + +/* Define to 1 if utime(file, NULL) sets file's timestamp to the present. */ +/* #undef HAVE_UTIME_NULL */ + +/* Define to 1 if you have the wait3 system call. */ +/* #undef HAVE_WAIT3 */ + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 1 if your struct nlist has an n_un member. */ +/* #undef NLIST_NAME_UNION */ + +/* Define to 1 if you have . */ +/* #undef NLIST_STRUCT */ + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Define to 'int' if doesn't define. */ +/* I assume types.h is available for all 5.0 cc/cxx compilers */ +#if __DECC_VER < 50090000 +#define pid_t int +#endif + +/* Define to 1 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 */ + +/* 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. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown + */ +/* #undef STACK_DIRECTION */ + +/* Define to 1 if the 'S_IS*' macros in do not work properly. */ +/* #undef STAT_MACROS_BROKEN */ + +/* Define to 1 if you have the ANSI C header files. */ +/* #undef STDC_HEADERS */ + +/* Define on System V Release 4. */ +/* #undef SVR4 */ + +/* Define to 1 if 'sys_siglist' is declared by . */ +/* #undef SYS_SIGLIST_DECLARED */ + +/* Define to 'int' if doesn't define. */ +#if __DECC_VER < 50090000 +#define uid_t int +#endif + +/* Define for Encore UMAX. */ +/* #undef UMAX */ + +/* Define for Encore UMAX 4.3 that has + instead of . */ +/* #undef UMAX4_3 */ + +/* Define to the name of the SCCS 'get' command. */ +/* #undef SCCS_GET */ + +/* Define this if the SCCS 'get' command understands the '-G' option. */ +/* #undef SCCS_GET_MINUS_G */ + +/* Define this to enable job server support in GNU make. */ +/* #undef MAKE_JOBSERVER */ + +/* Define to be the nanoseconds member of struct stat's st_mtim, + if it exists. */ +/* #undef ST_MTIM_NSEC */ + +/* Define to 1 if the C library defines the variable 'sys_siglist'. */ +/* #undefine HAVE_SYS_SIGLIST */ + +/* Define to 1 if the C library defines the variable '_sys_siglist'. */ +/* #undef HAVE__SYS_SIGLIST */ + +/* Define to 1 if you have the 'union wait' type in . */ +/* #undef HAVE_UNION_WAIT */ + +/* Define to 1 if you have the dup2 function. */ +#define HAVE_DUP2 1 + +/* Define to 1 if you have the getcwd function. */ +#define HAVE_GETCWD 1 + +/* Define to 1 if you have the getgroups function. */ +/* #undef HAVE_GETGROUPS */ + +/* Define to 1 if you have the gethostbyname function. */ +/* #undef HAVE_GETHOSTBYNAME */ + +/* Define to 1 if you have the gethostname function. */ +/* #undef HAVE_GETHOSTNAME */ + +/* 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 + +/* Define to 1 if you have the psignal function. */ +/* #undef HAVE_PSIGNAL */ + +/* Define to 1 if you have the pstat_getdynamic function. */ +/* #undef HAVE_PSTAT_GETDYNAMIC */ + +/* Define to 1 if you have the setegid function. */ +/* #undef HAVE_SETEGID */ + +/* Define to 1 if you have the seteuid function. */ +/* #undef HAVE_SETEUID */ + +/* Define to 1 if you have the setlinebuf function. */ +/* #undef HAVE_SETLINEBUF */ + +/* Define to 1 if you have the setregid function. */ +/* #undefine HAVE_SETREGID */ + +/* Define to 1 if you have the setreuid function. */ +/* #define HAVE_SETREUID */ + +/* Define to 1 if you have the sigsetmask function. */ +#define HAVE_SIGSETMASK 1 + +/* Define to 1 if you have the socket function. */ +/* #undef HAVE_SOCKET */ + +/* Define to 1 if you have the strcasecmp function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the strcmpi function. */ +/* #undef HAVE_STRCMPI */ + +/* Define to 1 if you have the stricmp function. */ +/* #undef HAVE_STRICMP */ + +/* 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 */ + +/* Define to 1 if you have the waitpid function. */ +/* #undef HAVE_WAITPID */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DIRENT_H 1 + +/* Define to 1 if you have the header file. */ +#ifdef __DECC +#define HAVE_FCNTL_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACH_MACH_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MEMORY_H */ + +/* Define to 1 if you have the `mempcpy' function. */ +/* #undef HAVE_MEMPCPY */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NDIR_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_DIR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_NDIR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PARAM_H */ + +/* Define to 1 if you have the header file. */ +#ifndef __GNUC__ +#define HAVE_SYS_TIMEB_H 1 +#endif + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* 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 sun library (-lsun). */ +/* #undef HAVE_LIBSUN */ + +/* Define to 1 if you have the `isatty' function. */ +/* #undef HAVE_ISATTY */ + +/* Define to 1 if you have the `ttyname' function. */ +/* #undef HAVE_TTYNAME */ + +/* Use high resolution file timestamps if nonzero. */ +#define FILE_TIMESTAMP_HI_RES 0 + +/* Define for case insensitve filenames */ +#define HAVE_CASE_INSENSITIVE_FS 1 + +/* VMS specific, define it if you want to use case sensitive targets */ +/* #undef WANT_CASE_SENSITIVE_TARGETS */ + +/* VMS specific, V7.0 has opendir() and friends, so it's undefined */ +/* If you want to use non-VMS code for opendir() etc. on V7.0 and greater + define the first or both macros AND change the compile command to get the + non-VMS versions linked: (prefix=(all,except=(opendir,... */ +/* #undef HAVE_VMSDIR_H */ +/* #undef _DIRENT_HAVE_D_NAMLEN */ + +/* On older systems without 7.0 backport of CRTL use non-VMS code for opendir() etc. */ +#if __CRTL_VER < 70000000 +# define HAVE_VMSDIR_H 1 +#endif + +#if defined(HAVE_VMSDIR_H) && defined(HAVE_DIRENT_H) +#undef HAVE_DIRENT_H +#endif + +#define HAVE_STDLIB_H 1 +#define INCLUDEDIR "sys$sysroot:[syslib]" +#define LIBDIR "sys$sysroot:[syslib]" + +/* Don't use RTL functions of OpenVMS */ +#ifdef __DECC +#include +#include +#define getopt gnu_getopt +#define optarg gnu_optarg +#define optopt gnu_optopt +#define optind gnu_optind +#define opterr gnu_opterr +#define globfree gnu_globfree +#define glob gnu_glob +#endif + +/* Define if using alloca.c. */ +/* #undef C_ALLOCA */ +/* maybe this should be placed into makeint.h */ +#if defined(__VAX) && defined(__DECC) +#define alloca(n) __ALLOCA(n) +#endif + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +/* # undef WORDS_BIGENDIAN */ + +/* Output sync sypport */ +#define NO_OUTPUT_SYNC + +/* Define to 1 to write even short single-line actions into a VMS/DCL command + file; this also enables exporting make environment variables into the + (sub-)process, which executes the action. + The usual make rules apply whether a shell variable - here a DCL symbol or + VMS logical [see CRTL getenv()] - is added to the make environment and + is exported. */ +#define USE_DCL_COM_FILE 1 + +/* Build host information. */ +#define MAKE_HOST "VMS" diff --git a/local/recipes/dev/gnu-make/source/src/config.h.W32 b/local/recipes/dev/gnu-make/source/src/config.h.W32 new file mode 100644 index 0000000000..1a03a0413b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/config.h.W32 @@ -0,0 +1,623 @@ +/* config.h.W32 -- hand-massaged config.h file for Windows builds -*-C-*- + +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "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: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 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 1 if using 'alloca.c'. */ +/* #undef C_ALLOCA */ + +/* Define to 1 for DGUX with . */ +/* #undef DGUX */ + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +/* #undef ENABLE_NLS */ + +/* Use high resolution file timestamps if nonzero. */ +#define FILE_TIMESTAMP_HI_RES 0 + +/* Define to 1 if you have 'alloca' after including , a header that + may be supplied by this distribution. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if works. */ +/* #undef HAVE_ALLOCA_H */ + +/* Define to 1 if you have the 'atexit' function. */ +#define HAVE_ATEXIT 1 + +/* Use case insensitive file names */ +/* #undef HAVE_CASE_INSENSITIVE_FS */ + +/* Define to 1 if you have the clock_gettime function. */ +/* #undef HAVE_CLOCK_GETTIME */ + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +/* #undef HAVE_DCGETTEXT */ + +/* Define to 1 if you have the declaration of 'bsd_signal', and to 0 if you + 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 + +/* Define to 1 if you have the declaration of '_sys_siglist', and to 0 if you + don't. */ +#define HAVE_DECL__SYS_SIGLIST 0 + +/* Define to 1 if you have the declaration of '__sys_siglist', and to 0 if you + don't. */ +#define HAVE_DECL___SYS_SIGLIST 0 + +/* Define to 1 if you have the header file, and it defines 'DIR'. + */ +#define HAVE_DIRENT_H 1 + +/* Define to 1 if you have the header file, and it defines getcwd() + and chdir(). + */ +#if (defined(_MSC_VER) || defined(__BORLANDC__) || defined(__TINYC__)) && !defined(__INTERIX) +# define HAVE_DIRECT_H 1 +#endif + +/* 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 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the 'fdopen' function. */ +#ifdef __MINGW32__ +#define HAVE_FDOPEN 1 +#endif + +/* 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 + +/* Define to 1 if you have the 'getgroups' function. */ +/* #undef HAVE_GETGROUPS */ + +/* Define to 1 if you have the 'gethostbyname' function. */ +/* #undef HAVE_GETHOSTBYNAME */ + +/* Define to 1 if you have the 'gethostname' function. */ +/* #undef HAVE_GETHOSTNAME */ + +/* Define to 1 if you have the 'getrlimit' function. */ +/* #undef HAVE_GETRLIMIT */ + +/* Define if the GNU gettext() function is already present or preinstalled. */ +/* #undef HAVE_GETTEXT */ + +/* Define to 1 if you have a standard gettimeofday function */ +#ifdef __MINGW32__ +#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 */ + +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_INTTYPES_H 1 +#endif + +/* Define to 1 if you have the `isatty' function. */ +#define HAVE_ISATTY 1 + +/* Define to 1 if you have the 'dgc' library (-ldgc). */ +/* #undef HAVE_LIBDGC */ + +/* Define to 1 if you have the 'kstat' library (-lkstat). */ +/* #undef HAVE_LIBKSTAT */ + +/* Define to 1 if you have the `perfstat' library (-lperfstat). */ +/* #undef HAVE_LIBPERFSTAT */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +/* #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 */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACH_MACH_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `mempcpy' function. */ +/* #undef HAVE_MEMPCPY */ + +/* Define to 1 if you have the `memrchr' function. */ +/* #undef HAVE_MEMRCHR */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MINIX_CONFIG_H */ + +/* Define to 1 if you have the 'mkfifo' function. */ +/* #undef HAVE_MKFIFO */ + +/* Define to 1 if you have the 'mkstemp' function. */ +/* #undef HAVE_MKSTEMP */ + +/* Define to 1 if you have the `mkstemp' function. */ +/* #undef HAVE_MKSTEMP */ + +/* Define to 1 if you have the 'mktemp' function. */ +#define HAVE_MKTEMP 1 + +/* Define to 1 if you have the header file, and it defines 'DIR'. */ +/* #undef HAVE_NDIR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NLIST_H */ + +/* 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 */ + +/* Define to 1 if you have the 'readlink' function. */ +/* #undef HAVE_READLINK */ + +/* Define to 1 if you have the 'realpath' function. */ +/* #undef HAVE_REALPATH */ + +/* Define to 1 if defines the SA_RESTART constant. */ +/* #undef HAVE_SA_RESTART */ + +/* Define to 1 if you have the 'setegid' function. */ +/* #undef HAVE_SETEGID */ + +/* Define to 1 if you have the 'seteuid' function. */ +/* #undef HAVE_SETEUID */ + +/* Define to 1 if you have the 'setlinebuf' function. */ +/* #undef HAVE_SETLINEBUF */ + +/* Define to 1 if you have the 'setregid' function. */ +/* #undef HAVE_SETREGID */ + +/* Define to 1 if you have the 'setreuid' function. */ +/* #undef HAVE_SETREUID */ + +/* Define to 1 if you have the 'setrlimit' function. */ +/* #undef HAVE_SETRLIMIT */ + +/* Define to 1 if you have the 'setvbuf' function. */ +#define HAVE_SETVBUF 1 + +/* Define to 1 if you have the 'sigaction' function. */ +/* #undef HAVE_SIGACTION */ + +/* Define to 1 if you have the 'sigsetmask' function. */ +/* #undef HAVE_SIGSETMASK */ + +/* Define to 1 if you have the 'socket' function. */ +/* #undef HAVE_SOCKET */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SPAWN_H */ + +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_STDINT_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `stpcpy' function. */ +/* #undef HAVE_STPCPY */ + +/* Define to 1 if you have the 'strcasecmp' function. */ +#if defined(__MINGW32__) || defined(__TINYC__) +#define HAVE_STRCASECMP 1 +#endif + +/* Define to 1 if you have the 'strcmpi' function. */ +#define HAVE_STRCMPI 1 + +/* Define to 1 if you have the 'strcoll' function and it is properly defined. + */ +#define HAVE_STRCOLL 1 + +/* 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 + +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_STRINGS_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the 'strncasecmp' function. */ +#if defined(__MINGW32__) || defined(__TINYC__) +#define HAVE_STRNCASECMP 1 +#endif + +/* Define to 1 if you have the 'strncmpi' function. */ +/* #undef HAVE_STRNCMPI */ + +/* Define to 1 if you have the 'strndup' function. */ +/* #undef HAVE_STRNDUP */ + +/* Define to 1 if you have the 'strnicmp' function. */ +#ifdef __MINGW32__ +#define HAVE_STRNICMP 1 +#endif + +/* 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 '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 header file, and it defines 'DIR'. + */ +/* #undef HAVE_SYS_DIR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FILE_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_LOADAVG_H */ + +/* Define to 1 if you have the header file, and it defines 'DIR'. + */ +/* #undef HAVE_SYS_NDIR_H */ + +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_SYS_PARAM_H 1 +#endif + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_RESOURCE_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SELECT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMEB_H 1 + +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_SYS_TIME_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define to 1 if you have the `ttyname' function. */ +#define HAVE_TTYNAME 1 +char *ttyname (int); + +/* Define to 1 if the system has the type `intmax_t'. */ +#define HAVE_INTMAX_T 1 + +/* Define to 1 if the system has the type `uintmax_t'. */ +#define HAVE_UINTMAX_T 1 + +/* Define to 1 if you have the `umask' function. */ +#if defined(__MINGW32__) || defined(__TINYC__) +# define HAVE_UMASK 1 +#endif + +/* Define to 1 if you have the \'union wait' type in . */ +/* #undef HAVE_UNION_WAIT */ + +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_UNISTD_H 1 +#endif + +/* Define to 1 if the system has the type 'unsigned long long int'. */ +#define HAVE_UNSIGNED_LONG_LONG_INT 1 + +/* Define to 1 if you have the `vfork' function. */ +/* #undef HAVE_VFORK */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_VFORK_H */ + +/* Define to 1 if you have the 'wait3' function. */ +/* #undef HAVE_WAIT3 */ + +/* Define to 1 if you have the 'waitpid' function. */ +/* #undef HAVE_WAITPID */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_WCHAR_H */ + +/* Define to 1 if `fork' works. */ +/* #undef HAVE_WORKING_FORK */ + +/* Define to 1 if `vfork' works. */ +/* #undef HAVE_WORKING_VFORK */ + +/* Define to 1 if the system has the type `_Bool'. */ +/* #undef HAVE__BOOL */ + +/* Build host information. */ +#define MAKE_HOST "Windows32" + +/* Define to 1 to enable job server support in GNU make. */ +#define MAKE_JOBSERVER 1 + +/* Define to 1 to enable 'load' support in GNU make. */ +#define MAKE_LOAD 1 + +/* Define to 1 to enable symbolic link timestamp checking. */ +/* #undef MAKE_SYMLINKS */ + +/* Define to 1 if your 'struct nlist' has an 'n_un' member. Obsolete, depend + on 'HAVE_STRUCT_NLIST_N_UN_N_NAME */ +/* #undef NLIST_NAME_UNION */ + +/* Define to 1 if struct nlist.n_name is a pointer rather than an array. */ +/* #undef NLIST_STRUCT */ + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Define to the character that separates directories in PATH. */ +#define PATH_SEPARATOR_CHAR ';' + +/* Define to the name of the SCCS 'get' command. */ +#define SCCS_GET "echo no sccs get" + +/* Define this if the SCCS 'get' command understands the '-G' option. */ +/* #undef SCCS_GET_MINUS_G */ + +/* 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. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define to 1 if the 'S_IS*' macros in do not work properly. */ +/* #undef STAT_MACROS_BROKEN */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* 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 for Encore UMAX. */ +/* #undef UMAX */ + +/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +/* #undef UMAX4_3 */ + +/* Define if using the dmalloc debugging malloc package */ +/* #undef WITH_DMALLOC */ + +/* Define to 1 if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +/* # undef _ALL_SOURCE */ +#endif + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +/* # undef WORDS_BIGENDIAN */ + +/* 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 */ + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* 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 */ + +/* Define to empty if 'const' does not conform to ANSI C. */ +/* #undef const */ + +#ifdef __MINGW32__ +# undef __USE_MINGW_ANSI_STDIO +# define __USE_MINGW_ANSI_STDIO 1 +#endif + +/* Number of bits in a timestamp, on hosts where this is settable. */ +/* #undef _TIME_BITS */ + +/* For 64-bit time_t on 32-bit mingw. */ +#ifdef __MINGW32__ +# define __MINGW_USE_VC2005_COMPAT 1 +#endif + +#include + +/* Define to 'int' if doesn't define. */ +#define gid_t int + +/* Define to 'int' if does not define. */ +/* GCC 4.x reportedly defines pid_t. */ +#ifndef _PID_T_ +#ifdef _WIN64 +#define pid_t __int64 +#else +#define pid_t int +#endif +#endif + +/* Define to `int' if does not define. */ +#define ssize_t int + +/* Define to 'int' if doesn't define. */ +#define uid_t int + +/* Define {u,}intmax_t if not defined in or . */ +#if !HAVE_STDINT_H && !HAVE_INTTYPES_H +#define intmax_t long long +#define uintmax_t unsigned long long +#endif + +/* Define if you have that is POSIX.1 compatible. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define to the installation directory for locales. */ +#define LOCALEDIR "" + +/* + * Refer to README.W32 for info on the following settings + */ + + +/* + * If you have a shell that does not grok 'sh -c quoted-command-line' + * 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. + * Do NOT define BATCH_MODE_ONLY_SHELL if you define HAVE_CYGWIN_SHELL + */ +/*#define HAVE_CYGWIN_SHELL 1 */ + +/* + * Define if you have the MKS tool set or shell. Do NOT define + * BATCH_MODE_ONLY_SHELL if you define HAVE_MKS_SHELL + */ +/*#define HAVE_MKS_SHELL 1 */ + +/* + * Enforce the mutual exclusivity restriction. + */ +#ifdef HAVE_MKS_SHELL +#undef BATCH_MODE_ONLY_SHELL +#endif + +#ifdef HAVE_CYGWIN_SHELL +#undef BATCH_MODE_ONLY_SHELL +#endif diff --git a/local/recipes/dev/gnu-make/source/src/config.h.in b/local/recipes/dev/gnu-make/source/src/config.h.in new file mode 100644 index 0000000000..f975627027 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/config.h.in @@ -0,0 +1,1218 @@ +/* src/config.h.in. Generated from configure.ac by autoheader. */ + +/* CPU and C ABI indicator */ +#ifndef __i386__ +#undef __i386__ +#endif +#ifndef __x86_64_x32__ +#undef __x86_64_x32__ +#endif +#ifndef __x86_64__ +#undef __x86_64__ +#endif +#ifndef __alpha__ +#undef __alpha__ +#endif +#ifndef __arm__ +#undef __arm__ +#endif +#ifndef __armhf__ +#undef __armhf__ +#endif +#ifndef __arm64_ilp32__ +#undef __arm64_ilp32__ +#endif +#ifndef __arm64__ +#undef __arm64__ +#endif +#ifndef __hppa__ +#undef __hppa__ +#endif +#ifndef __hppa64__ +#undef __hppa64__ +#endif +#ifndef __ia64_ilp32__ +#undef __ia64_ilp32__ +#endif +#ifndef __ia64__ +#undef __ia64__ +#endif +#ifndef __loongarch64__ +#undef __loongarch64__ +#endif +#ifndef __m68k__ +#undef __m68k__ +#endif +#ifndef __mips__ +#undef __mips__ +#endif +#ifndef __mipsn32__ +#undef __mipsn32__ +#endif +#ifndef __mips64__ +#undef __mips64__ +#endif +#ifndef __powerpc__ +#undef __powerpc__ +#endif +#ifndef __powerpc64__ +#undef __powerpc64__ +#endif +#ifndef __powerpc64_elfv2__ +#undef __powerpc64_elfv2__ +#endif +#ifndef __riscv32__ +#undef __riscv32__ +#endif +#ifndef __riscv64__ +#undef __riscv64__ +#endif +#ifndef __riscv32_ilp32__ +#undef __riscv32_ilp32__ +#endif +#ifndef __riscv32_ilp32f__ +#undef __riscv32_ilp32f__ +#endif +#ifndef __riscv32_ilp32d__ +#undef __riscv32_ilp32d__ +#endif +#ifndef __riscv64_ilp32__ +#undef __riscv64_ilp32__ +#endif +#ifndef __riscv64_ilp32f__ +#undef __riscv64_ilp32f__ +#endif +#ifndef __riscv64_ilp32d__ +#undef __riscv64_ilp32d__ +#endif +#ifndef __riscv64_lp64__ +#undef __riscv64_lp64__ +#endif +#ifndef __riscv64_lp64f__ +#undef __riscv64_lp64f__ +#endif +#ifndef __riscv64_lp64d__ +#undef __riscv64_lp64d__ +#endif +#ifndef __s390__ +#undef __s390__ +#endif +#ifndef __s390x__ +#undef __s390x__ +#endif +#ifndef __sh__ +#undef __sh__ +#endif +#ifndef __sparc__ +#undef __sparc__ +#endif +#ifndef __sparc64__ +#undef __sparc64__ +#endif + + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* Define to 1 if the 'closedir' function returns void instead of int. */ +#undef CLOSEDIR_VOID + +/* Define to 1 if using 'alloca.c'. */ +#undef C_ALLOCA + +/* Define to 1 for DGUX with . */ +#undef DGUX + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Use high resolution file timestamps if nonzero. */ +#undef FILE_TIMESTAMP_HI_RES + +/* Define to 1 when the gnulib module getloadavg should be tested. */ +#undef GNULIB_TEST_GETLOADAVG + +/* Define to 1 if you have 'alloca' after including , a header that + may be supplied by this distribution. */ +#undef HAVE_ALLOCA + +/* Define to 1 if works. */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the 'atexit' function. */ +#undef HAVE_ATEXIT + +/* Use case insensitive file names */ +#undef HAVE_CASE_INSENSITIVE_FS + +/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define to 1 if you have the clock_gettime function. */ +#undef HAVE_CLOCK_GETTIME + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the declaration of 'bsd_signal', and to 0 if you + don't. */ +#undef HAVE_DECL_BSD_SIGNAL + +/* Define to 1 if you have the declaration of 'dlerror', and to 0 if you + don't. */ +#undef HAVE_DECL_DLERROR + +/* Define to 1 if you have the declaration of 'dlopen', and to 0 if you don't. + */ +#undef HAVE_DECL_DLOPEN + +/* Define to 1 if you have the declaration of 'dlsym', and to 0 if you don't. + */ +#undef HAVE_DECL_DLSYM + +/* 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. */ +#undef HAVE_DECL_SYS_SIGLIST + +/* Define to 1 if you have the declaration of '_sys_siglist', and to 0 if you + don't. */ +#undef HAVE_DECL__SYS_SIGLIST + +/* Define to 1 if you have the declaration of '__sys_siglist', and to 0 if you + don't. */ +#undef HAVE_DECL___SYS_SIGLIST + +/* Define to 1 if you have the header file, and it defines 'DIR'. + */ +#undef HAVE_DIRENT_H + +/* Support DOS-style pathnames. */ +#undef HAVE_DOS_PATHS + +/* Define to 1 if you have the 'dup' function. */ +#undef HAVE_DUP + +/* Define to 1 if you have the 'dup2' function. */ +#undef HAVE_DUP2 + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the 'fdopen' function. */ +#undef HAVE_FDOPEN + +/* Define to 1 if you have the 'fork' function. */ +#undef HAVE_FORK + +/* Define to 1 if you have the 'getcwd' function. */ +#undef HAVE_GETCWD + +/* Define to 1 if you have the 'getgroups' function. */ +#undef HAVE_GETGROUPS + +/* Define to 1 if you have the 'gethostbyname' function. */ +#undef HAVE_GETHOSTBYNAME + +/* Define to 1 if you have the 'gethostname' function. */ +#undef HAVE_GETHOSTNAME + +/* Define to 1 if you have the 'getrlimit' function. */ +#undef HAVE_GETRLIMIT + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have a standard gettimeofday function */ +#undef HAVE_GETTIMEOFDAY + +/* Embed GNU Guile support */ +#undef HAVE_GUILE + +/* Define if you have the iconv() function and it works. */ +#undef HAVE_ICONV + +/* Define to 1 if the system has the type 'intmax_t'. */ +#undef HAVE_INTMAX_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the 'isatty' function. */ +#undef HAVE_ISATTY + +/* Define to 1 if you have the 'dgc' library (-ldgc). */ +#undef HAVE_LIBDGC + +/* Define to 1 if you have the 'kstat' library (-lkstat). */ +#undef HAVE_LIBKSTAT + +/* Define to 1 if you have the 'perfstat' library (-lperfstat). */ +#undef HAVE_LIBPERFSTAT + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if the system has the type 'long long int'. */ +#undef HAVE_LONG_LONG_INT + +/* Define to 1 if you have the 'lstat' function. */ +#undef HAVE_LSTAT + +/* Define to 1 if you have the header file. */ +#undef HAVE_MACH_MACH_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the 'mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define to 1 if you have the 'memrchr' function. */ +#undef HAVE_MEMRCHR + +/* Define to 1 if you have the header file. */ +#undef HAVE_MINIX_CONFIG_H + +/* Define to 1 if you have the 'mkfifo' function. */ +#undef HAVE_MKFIFO + +/* Define to 1 if you have the 'mkstemp' function. */ +#undef HAVE_MKSTEMP + +/* Define to 1 if you have the 'mktemp' function. */ +#undef HAVE_MKTEMP + +/* Define to 1 if you have the header file, and it defines 'DIR'. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NLIST_H + +/* 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 + +/* Define to 1 if you have the 'readlink' function. */ +#undef HAVE_READLINK + +/* Define to 1 if you have the 'realpath' function. */ +#undef HAVE_REALPATH + +/* Define to 1 if defines the SA_RESTART constant. */ +#undef HAVE_SA_RESTART + +/* Define to 1 if you have the 'setegid' function. */ +#undef HAVE_SETEGID + +/* Define to 1 if you have the 'seteuid' function. */ +#undef HAVE_SETEUID + +/* Define to 1 if you have the 'setlinebuf' function. */ +#undef HAVE_SETLINEBUF + +/* Define to 1 if you have the 'setregid' function. */ +#undef HAVE_SETREGID + +/* Define to 1 if you have the 'setreuid' function. */ +#undef HAVE_SETREUID + +/* Define to 1 if you have the 'setrlimit' function. */ +#undef HAVE_SETRLIMIT + +/* Define to 1 if you have the 'setvbuf' function. */ +#undef HAVE_SETVBUF + +/* Define to 1 if you have the 'sigaction' function. */ +#undef HAVE_SIGACTION + +/* Define to 1 if you have the 'sigsetmask' function. */ +#undef HAVE_SIGSETMASK + +/* Define to 1 if the system has the type 'sig_atomic_t'. */ +#undef HAVE_SIG_ATOMIC_T + +/* Define to 1 if you have the 'socket' function. */ +#undef HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#undef HAVE_SPAWN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the 'stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define to 1 if you have the 'strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the 'strcmpi' function. */ +#undef HAVE_STRCMPI + +/* Define to 1 if you have the 'strcoll' function and it is properly defined. + */ +#undef HAVE_STRCOLL + +/* Define to 1 if you have the 'strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the 'strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the 'stricmp' function. */ +#undef HAVE_STRICMP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the 'strncasecmp' function. */ +#undef HAVE_STRNCASECMP + +/* Define to 1 if you have the 'strncmpi' function. */ +#undef HAVE_STRNCMPI + +/* Define to 1 if you have the 'strndup' function. */ +#undef HAVE_STRNDUP + +/* Define to 1 if you have the 'strnicmp' function. */ +#undef HAVE_STRNICMP + +/* 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 header file, and it defines 'DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_FILE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_LOADAVG_H + +/* Define to 1 if you have the header file, and it defines 'DIR'. + */ +#undef HAVE_SYS_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_RESOURCE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIMEB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_WAIT_H + +/* Define to 1 if you have the 'ttyname' function. */ +#undef HAVE_TTYNAME + +/* Define to 1 if the system has the type 'uintmax_t'. */ +#undef HAVE_UINTMAX_T + +/* Define to 1 if you have the 'umask' function. */ +#undef HAVE_UMASK + +/* Define to 1 if you have the 'union wait' type in . */ +#undef HAVE_UNION_WAIT + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if the system has the type 'unsigned long long int'. */ +#undef HAVE_UNSIGNED_LONG_LONG_INT + +/* Define to 1 if you have the 'vfork' function. */ +#undef HAVE_VFORK + +/* Define to 1 if you have the header file. */ +#undef HAVE_VFORK_H + +/* Define to 1 if you have the 'wait3' function. */ +#undef HAVE_WAIT3 + +/* Define to 1 if you have the 'waitpid' function. */ +#undef HAVE_WAITPID + +/* Define to 1 if you have the header file. */ +#undef HAVE_WCHAR_H + +/* Define to 1 if 'fork' works. */ +#undef HAVE_WORKING_FORK + +/* Define to 1 if 'vfork' works. */ +#undef HAVE_WORKING_VFORK + +/* Define to 1 if the system has the type '_Bool'. */ +#undef HAVE__BOOL + +/* Build host information. */ +#undef MAKE_HOST + +/* Define to 1 to enable job server support in GNU make. */ +#undef MAKE_JOBSERVER + +/* Define to 1 to enable 'load' support in GNU make. */ +#undef MAKE_LOAD + +/* Define to 1 to enable symbolic link timestamp checking. */ +#undef MAKE_SYMLINKS + +/* 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 + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to the character that separates directories in PATH. */ +#undef PATH_SEPARATOR_CHAR + +/* Define to the name of the SCCS 'get' command. */ +#undef SCCS_GET + +/* Define to 1 if the SCCS 'get' command understands the '-G' option. */ +#undef SCCS_GET_MINUS_G + +/* 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. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if the 'S_IS*' macros in do not work properly. */ +#undef STAT_MACROS_BROKEN + +/* Define to 1 if all of the C89 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 if struct stat contains a nanoseconds field */ +#undef ST_MTIM_NSEC + +/* Define to 1 on System V Release 4. */ +#undef SVR4 + +/* Define to 1 for Encore UMAX. */ +#undef UMAX + +/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +#undef UMAX4_3 + +/* Define to 1 to use posix_spawn(). */ +#undef USE_POSIX_SPAWN + +/* Enable extensions on AIX, Interix, z/OS. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable extensions on Cosmopolitan Libc. */ +#ifndef _COSMO_SOURCE +# undef _COSMO_SOURCE +#endif +/* Enable general extensions on macOS. */ +#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 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 compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* 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 +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE +#endif + + +/* Version number of package */ +#undef VERSION + +/* Build for the WINDOWS32 API. */ +#undef WINDOWS32 + +/* Define if using the dmalloc debugging malloc package */ +#undef WITH_DMALLOC + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* 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 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 +# 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) \ + || (!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 _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) +# else +# define _Noreturn +# endif +#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. */ +#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 + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked 'volatile'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable 'signal_occurred' is not declared 'volatile'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE + + +/* 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 + + +/* _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_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_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via 'free'; it can be used only after declaring 'free'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib's or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with '-fwhole-program'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following 'case' or + 'default' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a 'switch' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with '__'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC's syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type '[[un]signed] char'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don't use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + + +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' + syntax. But clang does. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif + + +/* Define to empty if 'const' does not conform to ANSI C. */ +#undef const + +/* Define as 'access' if you don't have the eaccess() function. */ +#undef eaccess + +/* Define as 'int' if doesn't define. */ +#undef gid_t + +/* Define to the widest signed integer type if and do + not define. */ +#undef intmax_t + +/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports + the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of + earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif + +/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where + n1 and n2 are expressions without side effects, that evaluate to real + numbers (excluding NaN). + It returns + 1 if n1 > n2 + 0 if n1 == n2 + -1 if n1 < n2 + The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional + jump with nearly all GCC versions up to GCC 10. + This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many + GCC versions up to GCC 9. + The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 + avoids conditional jumps in all GCC versions >= 3.4. */ +#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) + + +/* Define to 'long int' if does not define. */ +#undef off_t + +/* Define as a signed integer type capable of holding a process identifier. */ +#undef pid_t + +/* 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 as 'unsigned int' if doesn't define. */ +#undef size_t + +/* Define as 'int' if doesn't define. */ +#undef ssize_t + +/* Define as 'int' if doesn't define. */ +#undef uid_t + +/* Define to the widest unsigned integer type if and + do not define. */ +#undef uintmax_t + +/* Define as 'fork' if 'vfork' does not work. */ +#undef vfork diff --git a/local/recipes/dev/gnu-make/source/src/config.h.in~ b/local/recipes/dev/gnu-make/source/src/config.h.in~ new file mode 100644 index 0000000000..7085a40a2e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/config.h.in~ @@ -0,0 +1,1210 @@ +/* src/config.h.in. Generated from configure.ac by autoheader. */ + +/* CPU and C ABI indicator */ +#ifndef __i386__ +#undef __i386__ +#endif +#ifndef __x86_64_x32__ +#undef __x86_64_x32__ +#endif +#ifndef __x86_64__ +#undef __x86_64__ +#endif +#ifndef __alpha__ +#undef __alpha__ +#endif +#ifndef __arm__ +#undef __arm__ +#endif +#ifndef __armhf__ +#undef __armhf__ +#endif +#ifndef __arm64_ilp32__ +#undef __arm64_ilp32__ +#endif +#ifndef __arm64__ +#undef __arm64__ +#endif +#ifndef __hppa__ +#undef __hppa__ +#endif +#ifndef __hppa64__ +#undef __hppa64__ +#endif +#ifndef __ia64_ilp32__ +#undef __ia64_ilp32__ +#endif +#ifndef __ia64__ +#undef __ia64__ +#endif +#ifndef __loongarch64__ +#undef __loongarch64__ +#endif +#ifndef __m68k__ +#undef __m68k__ +#endif +#ifndef __mips__ +#undef __mips__ +#endif +#ifndef __mipsn32__ +#undef __mipsn32__ +#endif +#ifndef __mips64__ +#undef __mips64__ +#endif +#ifndef __powerpc__ +#undef __powerpc__ +#endif +#ifndef __powerpc64__ +#undef __powerpc64__ +#endif +#ifndef __powerpc64_elfv2__ +#undef __powerpc64_elfv2__ +#endif +#ifndef __riscv32__ +#undef __riscv32__ +#endif +#ifndef __riscv64__ +#undef __riscv64__ +#endif +#ifndef __riscv32_ilp32__ +#undef __riscv32_ilp32__ +#endif +#ifndef __riscv32_ilp32f__ +#undef __riscv32_ilp32f__ +#endif +#ifndef __riscv32_ilp32d__ +#undef __riscv32_ilp32d__ +#endif +#ifndef __riscv64_ilp32__ +#undef __riscv64_ilp32__ +#endif +#ifndef __riscv64_ilp32f__ +#undef __riscv64_ilp32f__ +#endif +#ifndef __riscv64_ilp32d__ +#undef __riscv64_ilp32d__ +#endif +#ifndef __riscv64_lp64__ +#undef __riscv64_lp64__ +#endif +#ifndef __riscv64_lp64f__ +#undef __riscv64_lp64f__ +#endif +#ifndef __riscv64_lp64d__ +#undef __riscv64_lp64d__ +#endif +#ifndef __s390__ +#undef __s390__ +#endif +#ifndef __s390x__ +#undef __s390x__ +#endif +#ifndef __sh__ +#undef __sh__ +#endif +#ifndef __sparc__ +#undef __sparc__ +#endif +#ifndef __sparc64__ +#undef __sparc64__ +#endif + + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* Define to 1 if the `closedir' function returns void instead of int. */ +#undef CLOSEDIR_VOID + +/* Define to 1 if using 'alloca.c'. */ +#undef C_ALLOCA + +/* Define to 1 for DGUX with . */ +#undef DGUX + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Use high resolution file timestamps if nonzero. */ +#undef FILE_TIMESTAMP_HI_RES + +/* Define to 1 when the gnulib module getloadavg should be tested. */ +#undef GNULIB_TEST_GETLOADAVG + +/* Define to 1 if you have 'alloca' after including , a header that + may be supplied by this distribution. */ +#undef HAVE_ALLOCA + +/* Define to 1 if works. */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the `atexit' function. */ +#undef HAVE_ATEXIT + +/* Use case insensitive file names */ +#undef HAVE_CASE_INSENSITIVE_FS + +/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define to 1 if you have the clock_gettime function. */ +#undef HAVE_CLOCK_GETTIME + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the declaration of `bsd_signal', and to 0 if you + don't. */ +#undef HAVE_DECL_BSD_SIGNAL + +/* Define to 1 if you have the declaration of `dlerror', and to 0 if you + don't. */ +#undef HAVE_DECL_DLERROR + +/* Define to 1 if you have the declaration of `dlopen', and to 0 if you don't. + */ +#undef HAVE_DECL_DLOPEN + +/* Define to 1 if you have the declaration of `dlsym', and to 0 if you don't. + */ +#undef HAVE_DECL_DLSYM + +/* 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. */ +#undef HAVE_DECL_SYS_SIGLIST + +/* Define to 1 if you have the declaration of `_sys_siglist', and to 0 if you + don't. */ +#undef HAVE_DECL__SYS_SIGLIST + +/* Define to 1 if you have the declaration of `__sys_siglist', and to 0 if you + don't. */ +#undef HAVE_DECL___SYS_SIGLIST + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_DIRENT_H + +/* Support DOS-style pathnames. */ +#undef HAVE_DOS_PATHS + +/* Define to 1 if you have the `dup' function. */ +#undef HAVE_DUP + +/* Define to 1 if you have the `dup2' function. */ +#undef HAVE_DUP2 + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `fdopen' function. */ +#undef HAVE_FDOPEN + +/* Define to 1 if you have the `fork' function. */ +#undef HAVE_FORK + +/* Define to 1 if you have the `getcwd' function. */ +#undef HAVE_GETCWD + +/* Define to 1 if you have the `getgroups' function. */ +#undef HAVE_GETGROUPS + +/* Define to 1 if you have the `gethostbyname' function. */ +#undef HAVE_GETHOSTBYNAME + +/* Define to 1 if you have the `gethostname' function. */ +#undef HAVE_GETHOSTNAME + +/* Define to 1 if you have the `getrlimit' function. */ +#undef HAVE_GETRLIMIT + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have a standard gettimeofday function */ +#undef HAVE_GETTIMEOFDAY + +/* Embed GNU Guile support */ +#undef HAVE_GUILE + +/* Define if you have the iconv() function and it works. */ +#undef HAVE_ICONV + +/* Define to 1 if the system has the type `intmax_t'. */ +#undef HAVE_INTMAX_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `isatty' function. */ +#undef HAVE_ISATTY + +/* Define to 1 if you have the `dgc' library (-ldgc). */ +#undef HAVE_LIBDGC + +/* Define to 1 if you have the `kstat' library (-lkstat). */ +#undef HAVE_LIBKSTAT + +/* Define to 1 if you have the `perfstat' library (-lperfstat). */ +#undef HAVE_LIBPERFSTAT + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if the system has the type 'long long int'. */ +#undef HAVE_LONG_LONG_INT + +/* Define to 1 if you have the `lstat' function. */ +#undef HAVE_LSTAT + +/* Define to 1 if you have the header file. */ +#undef HAVE_MACH_MACH_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define to 1 if you have the `memrchr' function. */ +#undef HAVE_MEMRCHR + +/* Define to 1 if you have the header file. */ +#undef HAVE_MINIX_CONFIG_H + +/* Define to 1 if you have the `mkfifo' function. */ +#undef HAVE_MKFIFO + +/* Define to 1 if you have the `mkstemp' function. */ +#undef HAVE_MKSTEMP + +/* Define to 1 if you have the `mktemp' function. */ +#undef HAVE_MKTEMP + +/* Define to 1 if you have the header file, and it defines `DIR'. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NLIST_H + +/* 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 + +/* Define to 1 if you have the `readlink' function. */ +#undef HAVE_READLINK + +/* Define to 1 if you have the `realpath' function. */ +#undef HAVE_REALPATH + +/* Define to 1 if defines the SA_RESTART constant. */ +#undef HAVE_SA_RESTART + +/* Define to 1 if you have the `setegid' function. */ +#undef HAVE_SETEGID + +/* Define to 1 if you have the `seteuid' function. */ +#undef HAVE_SETEUID + +/* Define to 1 if you have the `setlinebuf' function. */ +#undef HAVE_SETLINEBUF + +/* Define to 1 if you have the `setregid' function. */ +#undef HAVE_SETREGID + +/* Define to 1 if you have the `setreuid' function. */ +#undef HAVE_SETREUID + +/* Define to 1 if you have the `setrlimit' function. */ +#undef HAVE_SETRLIMIT + +/* Define to 1 if you have the `setvbuf' function. */ +#undef HAVE_SETVBUF + +/* Define to 1 if you have the `sigaction' function. */ +#undef HAVE_SIGACTION + +/* Define to 1 if you have the `sigsetmask' function. */ +#undef HAVE_SIGSETMASK + +/* Define to 1 if the system has the type `sig_atomic_t'. */ +#undef HAVE_SIG_ATOMIC_T + +/* Define to 1 if you have the `socket' function. */ +#undef HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#undef HAVE_SPAWN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strcmpi' function. */ +#undef HAVE_STRCMPI + +/* Define to 1 if you have the `strcoll' function and it is properly defined. + */ +#undef HAVE_STRCOLL + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the `strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the `stricmp' function. */ +#undef HAVE_STRICMP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strncasecmp' function. */ +#undef HAVE_STRNCASECMP + +/* Define to 1 if you have the `strncmpi' function. */ +#undef HAVE_STRNCMPI + +/* Define to 1 if you have the `strndup' function. */ +#undef HAVE_STRNDUP + +/* Define to 1 if you have the `strnicmp' function. */ +#undef HAVE_STRNICMP + +/* 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 header file, and it defines `DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_FILE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_LOADAVG_H + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_SYS_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_RESOURCE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIMEB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_WAIT_H + +/* Define to 1 if you have the `ttyname' function. */ +#undef HAVE_TTYNAME + +/* Define to 1 if the system has the type `uintmax_t'. */ +#undef HAVE_UINTMAX_T + +/* Define to 1 if you have the `umask' function. */ +#undef HAVE_UMASK + +/* Define to 1 if you have the 'union wait' type in . */ +#undef HAVE_UNION_WAIT + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if the system has the type 'unsigned long long int'. */ +#undef HAVE_UNSIGNED_LONG_LONG_INT + +/* Define to 1 if you have the `vfork' function. */ +#undef HAVE_VFORK + +/* Define to 1 if you have the header file. */ +#undef HAVE_VFORK_H + +/* Define to 1 if you have the `wait3' function. */ +#undef HAVE_WAIT3 + +/* Define to 1 if you have the `waitpid' function. */ +#undef HAVE_WAITPID + +/* Define to 1 if you have the header file. */ +#undef HAVE_WCHAR_H + +/* Define to 1 if `fork' works. */ +#undef HAVE_WORKING_FORK + +/* Define to 1 if `vfork' works. */ +#undef HAVE_WORKING_VFORK + +/* Define to 1 if the system has the type `_Bool'. */ +#undef HAVE__BOOL + +/* Build host information. */ +#undef MAKE_HOST + +/* Define to 1 to enable job server support in GNU make. */ +#undef MAKE_JOBSERVER + +/* Define to 1 to enable 'load' support in GNU make. */ +#undef MAKE_LOAD + +/* Define to 1 to enable symbolic link timestamp checking. */ +#undef MAKE_SYMLINKS + +/* 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 + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to the character that separates directories in PATH. */ +#undef PATH_SEPARATOR_CHAR + +/* Define to the name of the SCCS 'get' command. */ +#undef SCCS_GET + +/* Define to 1 if the SCCS 'get' command understands the '-G' option. */ +#undef SCCS_GET_MINUS_G + +/* 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. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if the `S_IS*' macros in do not work properly. */ +#undef STAT_MACROS_BROKEN + +/* 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 if struct stat contains a nanoseconds field */ +#undef ST_MTIM_NSEC + +/* Define to 1 on System V Release 4. */ +#undef SVR4 + +/* Define to 1 for Encore UMAX. */ +#undef UMAX + +/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +#undef UMAX4_3 + +/* Define to 1 to use posix_spawn(). */ +#undef USE_POSIX_SPAWN + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable general extensions on macOS. */ +#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 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 compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* 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 +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE +#endif + + +/* Version number of package */ +#undef VERSION + +/* Build for the WINDOWS32 API. */ +#undef WINDOWS32 + +/* Define if using the dmalloc debugging malloc package */ +#undef WITH_DMALLOC + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* 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 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 +# 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) \ + || (!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 _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) +# else +# define _Noreturn +# endif +#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. */ +#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 + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked 'volatile'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable 'signal_occurred' is not declared 'volatile'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE + + +/* 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 + + +/* _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_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_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via 'free'; it can be used only after declaring 'free'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib's or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with '-fwhole-program'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following 'case' or + 'default' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a 'switch' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with '__'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC's syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type '[[un]signed] char'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don't use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + + +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' + syntax. But clang does. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif + + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define as 'access' if you don't have the eaccess() function. */ +#undef eaccess + +/* Define to `int' if doesn't define. */ +#undef gid_t + +/* Define to the widest signed integer type if and do + not define. */ +#undef intmax_t + +/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports + the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of + earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif + +/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where + n1 and n2 are expressions without side effects, that evaluate to real + numbers (excluding NaN). + It returns + 1 if n1 > n2 + 0 if n1 == n2 + -1 if n1 < n2 + The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional + jump with nearly all GCC versions up to GCC 10. + This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many + GCC versions up to GCC 9. + The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 + avoids conditional jumps in all GCC versions >= 3.4. */ +#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) + + +/* Define to `long int' if does not define. */ +#undef off_t + +/* Define as a signed integer type capable of holding a process identifier. */ +#undef pid_t + +/* Define as an integer type suitable for memory locations that can be + accessed atomically even in the presence of asynchronous signals. */ +#undef sig_atomic_t + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define to `int' if does not define. */ +#undef ssize_t + +/* Define to `int' if doesn't define. */ +#undef uid_t + +/* Define to the widest unsigned integer type if and + do not define. */ +#undef uintmax_t + +/* Define as `fork' if `vfork' does not work. */ +#undef vfork diff --git a/local/recipes/dev/gnu-make/source/src/configh.dos b/local/recipes/dev/gnu-make/source/src/configh.dos new file mode 100644 index 0000000000..5e20616eda --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/configh.dos @@ -0,0 +1,111 @@ +/* configh.dos -- hand-massaged config.h file for MS-DOS builds -*-C-*- + +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "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. */ +#include + +/* Many things are defined already by a system header. */ +#include + +#if __DJGPP__ > 2 || __DJGPP_MINOR__ > 1 + +/* Define to 1 if 'sys_siglist' is declared by or . */ +# define SYS_SIGLIST_DECLARED 1 + +/* Define to 1 if the C library defines the variable '_sys_siglist'. */ +# define HAVE_DECL_SYS_SIGLIST 1 + +#else + +/* Define NSIG. */ +# define NSIG SIGMAX + +#endif + +/* Use high resolution file timestamps if nonzero. */ +#define FILE_TIMESTAMP_HI_RES 0 + +/* Define to 1 if you have 'alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have the fdopen function. */ +#define HAVE_FDOPEN 1 + +/* Define to 1 if you have the 'getgroups' function. */ +#define HAVE_GETGROUPS 1 + +/* Define to 1 if the system has the type 'long long int'. */ +#define HAVE_LONG_LONG_INT 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the mkstemp function. */ +#define HAVE_MKSTEMP 1 + +/* Define to 1 if you have the 'mktemp' function. */ +#define HAVE_MKTEMP 1 + +/* Define to 1 if you have the 'setlinebuf' function. */ +#define HAVE_SETLINEBUF 1 + +/* Define to 1 if you have the 'setvbuf' function. */ +#define HAVE_SETVBUF 1 + +#define SCCS_GET "get" + +/* Define to 1 if you have the select function. */ +#define HAVE_SELECT 1 + +/* Define to 1 if you have the stricmp function. */ +#define HAVE_STRICMP 1 + +/* Define to 1 if you have the 'strncasecmp' function. */ +#define HAVE_STRNCASECMP 1 + +/* Define to 1 if you have the `strtoll' function. */ +#define HAVE_STRTOLL 1 + +/* 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 1 + +/* Define the type of the first arg to select(). */ +#define fd_set_size_t int + +/* Define to the widest signed integer type if and do + not define. */ +#define intmax_t long long + +/* Define to `int' if does not define. */ +#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 5 +#define ssize_t int +#endif + +/* Define to 'unsigned long' or 'unsigned long long' + if doesn't define. */ +#define uintmax_t unsigned long long diff --git a/local/recipes/dev/gnu-make/source/src/debug.h b/local/recipes/dev/gnu-make/source/src/debug.h new file mode 100644 index 0000000000..63cc4b5dc9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/debug.h @@ -0,0 +1,41 @@ +/* Debugging macros and interface. +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 +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 . */ + +#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) + +extern int db_level; + +#define ISDB(_l) ((_l)&db_level) + +/* When adding macros to this list be sure to update the value of + XGETTEXT_OPTIONS in the po/Makevars file. */ +#define DBS(_l,_x) do{ if(ISDB(_l)) {print_spaces (depth); \ + printf _x; fflush (stdout);} }while(0) + +#define DBF(_l,_x) do{ if(ISDB(_l)) {print_spaces (depth); \ + printf (_x, file->name); \ + fflush (stdout);} }while(0) + +#define DB(_l,_x) do{ if(ISDB(_l)) {printf _x; fflush (stdout);} }while(0) diff --git a/local/recipes/dev/gnu-make/source/src/default.c b/local/recipes/dev/gnu-make/source/src/default.c new file mode 100644 index 0000000000..b4cfdf7154 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/default.c @@ -0,0 +1,762 @@ +/* Data base of default implicit rules for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include + +#include "filedef.h" +#include "variable.h" +#include "rule.h" +#include "dep.h" +#include "job.h" +#include "commands.h" + +/* Define GCC_IS_NATIVE if gcc is the native development environment on + your system (gcc/bison/flex vs cc/yacc/lex). */ +#if defined(__MSDOS__) || defined(__EMX__) +# define GCC_IS_NATIVE +#endif + + +/* This is the default list of suffixes for suffix rules. + '.s' must come last, so that a '.o' file will be made from + a '.c' or '.p' or ... file rather than from a .s file. */ + +static char default_suffixes[] +#ifdef VMS + /* VMS should include all UNIX/POSIX + some VMS extensions */ + = ".out .exe .a .olb .hlb .tlb .mlb .ln .o .obj .c .cxx .cc .cpp .pas .p \ +.for .f .r .y .l .ym .yl .mar .s .ss .i .ii .mod .sym .def .h .info .dvi \ +.tex .texinfo .texi .txinfo .mem .hlp .brn .rnh .rno .rnt .rnx .w .ch .cweb \ +.web .com .sh .elc .el"; +#elif defined(__EMX__) + = ".out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S \ +.mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \ +.w .ch .web .sh .elc .el .obj .exe .dll .lib"; +#else + = ".out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S \ +.mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \ +.w .ch .web .sh .elc .el"; +#endif + +static struct pspec default_pattern_rules[] = + { +#ifdef VMS + { "(%)", "%", + "@if f$$search(\"$@\") .eqs. \"\" then $(LIBRARY)/CREATE/" + "$(or " + "$(patsubst %,TEXT,$(filter %.tlb %.TLB,$@))," + "$(patsubst %,HELP,$(filter %.hlb %.HLB,$@))," + "$(patsubst %,MACRO,$(filter %.mlb %.MLB,$@))," + "$(and " + "$(patsubst %,SHARE,$(filter %.olb %.OLB,$@))," + "$(patsubst %,SHARE,$(filter %.exe %.EXE,$<)))," + "OBJECT)" + " $@\n" + "$(AR) $(ARFLAGS) $@ $<" }, + +#else + { "(%)", "%", + "$(AR) $(ARFLAGS) $@ $<" }, +#endif + /* The X.out rules are only in BSD's default set because + BSD Make has no null-suffix rules, so 'foo.out' and + 'foo' are the same thing. */ +#ifdef VMS + { "%.exe", "%", + "$(CP) $< $@" }, + +#endif + { "%.out", "%", + "@rm -f $@ \n cp $< $@" }, + + /* Syntax is "ctangle foo.w foo.ch foo.c". */ + { "%.c", "%.w %.ch", + "$(CTANGLE) $^ $@" }, + { "%.tex", "%.w %.ch", + "$(CWEAVE) $^ $@" }, + + { 0, 0, 0 } + }; + +static struct pspec default_terminal_rules[] = + { +#ifdef VMS + + /* RCS. */ + { "%", "%$$5lv", /* Multinet style */ + "if f$$search(\"$@\") .nes. \"\" then +$(CHECKOUT,v)" }, + { "%", "[.$$rcs]%$$5lv", /* Multinet style */ + "if f$$search(\"$@\") .nes. \"\" then +$(CHECKOUT,v)" }, + { "%", "%_v", /* Normal style */ + "if f$$search(\"$@\") .nes. \"\" then +$(CHECKOUT,v)" }, + { "%", "[.rcs]%_v", /* Normal style */ + "if f$$search(\"$@\") .nes. \"\" then +$(CHECKOUT,v)" }, + + /* SCCS. */ + /* ain't no SCCS on vms */ + +#else + /* RCS. */ + { "%", "%,v", + "$(CHECKOUT,v)" }, + { "%", "RCS/%,v", + "$(CHECKOUT,v)" }, + { "%", "RCS/%", + "$(CHECKOUT,v)" }, + + /* SCCS. */ + { "%", "s.%", + "$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<" }, + { "%", "SCCS/s.%", + "$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<" }, +#endif /* !VMS */ + { 0, 0, 0 } + }; + +static const char *default_suffix_rules[] = + { +#ifdef VMS + ".o", + "$(LINK.obj) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".obj", + "$(LINK.obj) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".s", + "$(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".S", + "$(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".c", + "$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".cc", + "$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".C", + "$(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".cpp", + "$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".f", + "$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".m", + "$(LINK.m) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".p", + "$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".F", + "$(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".r", + "$(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".mod", + "$(COMPILE.mod) -o $@ -e $@ $^", + + ".def.sym", + "$(COMPILE.def) -o $@ $<", + + ".sh", + "copy $< >$@", + + ".obj.exe", + "$(LINK.obj) $^ $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@", + ".mar.exe", + "$(COMPILE.mar) $^ \n $(LINK.obj) $(subst .mar,.obj,$^) $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@", + ".s.o", + "$(COMPILE.s) -o $@ $<", + ".s.exe", + "$(COMPILE.s) $^ \n $(LINK.obj) $(subst .s,.obj,$^) $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@", + ".c.exe", + "$(COMPILE.c) $^ \n $(LINK.obj) $(subst .c,.obj,$^) $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@", + ".cc.exe", +#ifdef GCC_IS_NATIVE + "$(COMPILE.cc) $^ \n $(LINK.obj) $(CXXSTARTUP),sys$$disk:[]$(subst .cc,.obj,$^) $(LOADLIBES) $(LXLIBS) $(LDLIBS) $(CXXRT0) /exe=$@", +#else + "$(COMPILE.cc) $^ \n $(CXXLINK.obj) $(subst .cc,.obj,$^) $(LOADLIBES) $(LXLIBS) $(LDLIBS) $(CXXRT0) /exe=$@", + ".cxx.exe", + "$(COMPILE.cxx) $^ \n $(CXXLINK.obj) $(subst .cxx,.obj,$^) $(LOADLIBES) $(LXLIBS) $(LDLIBS) $(CXXRT0) /exe=$@", +#endif + ".for.exe", + "$(COMPILE.for) $^ \n $(LINK.obj) $(subst .for,.obj,$^) $(LOADLIBES) $(LDLIBS) /exe=$@", + ".pas.exe", + "$(COMPILE.pas) $^ \n $(LINK.obj) $(subst .pas,.obj,$^) $(LOADLIBES) $(LDLIBS) /exe=$@", + + ".com", + "copy $< >$@", + + ".mar.obj", + "$(COMPILE.mar) /obj=$@ $<", + ".s.obj", + "$(COMPILE.s) /obj=$@ $<", + ".ss.obj", + "$(COMPILE.s) /obj=$@ $<", + ".c.i", + "$(COMPILE.c)/prep /list=$@ $<", + ".c.s", + "$(COMPILE.c)/noobj/machine /list=$@ $<", + ".i.s", + "$(COMPILE.c)/noprep/noobj/machine /list=$@ $<", + ".c.obj", + "$(COMPILE.c) /obj=$@ $<", + ".c.o", + "$(COMPILE.c) /obj=$@ $<", + ".cc.ii", + "$(COMPILE.cc)/prep /list=$@ $<", + ".cc.ss", + "$(COMPILE.cc)/noobj/machine /list=$@ $<", + ".ii.ss", + "$(COMPILE.cc)/noprep/noobj/machine /list=$@ $<", + ".cc.obj", + "$(COMPILE.cc) /obj=$@ $<", + ".cc.o", + "$(COMPILE.cc) /obj=$@ $<", + ".cxx.obj", + "$(COMPILE.cxx) /obj=$@ $<", + ".cxx.o", + "$(COMPILE.cxx) /obj=$@ $<", + ".for.obj", + "$(COMPILE.for) /obj=$@ $<", + ".for.o", + "$(COMPILE.for) /obj=$@ $<", + ".pas.obj", + "$(COMPILE.pas) /obj=$@ $<", + ".pas.o", + "$(COMPILE.pas) /obj=$@ $<", + + ".y.c", + "$(YACC.y) $< \n rename y_tab.c $@", + ".l.c", + "$(LEX.l) $< \n rename lexyy.c $@", + + ".texinfo.info", + "$(MAKEINFO) $<", + + ".tex.dvi", + "$(TEX) $<", + + ".cpp.o", + "$(COMPILE.cpp) $(OUTPUT_OPTION) $<", + ".f.o", + "$(COMPILE.f) $(OUTPUT_OPTION) $<", + ".m.o", + "$(COMPILE.m) $(OUTPUT_OPTION) $<", + ".p.o", + "$(COMPILE.p) $(OUTPUT_OPTION) $<", + ".r.o", + "$(COMPILE.r) $(OUTPUT_OPTION) $<", + ".mod.o", + "$(COMPILE.mod) -o $@ $<", + + ".c.ln", + "$(LINT.c) -C$* $<", + ".y.ln", + "$(YACC.y) $< \n rename y_tab.c $@", + + ".l.ln", + "@$(RM) $*.c\n $(LEX.l) $< > $*.c\n$(LINT.c) -i $*.c -o $@\n $(RM) $*.c", + +#else /* ! VMS */ + + ".o", + "$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".s", + "$(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".S", + "$(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".c", + "$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".cc", + "$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".C", + "$(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".cpp", + "$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".f", + "$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".m", + "$(LINK.m) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".p", + "$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".F", + "$(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".r", + "$(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".mod", + "$(COMPILE.mod) -o $@ -e $@ $^", + + ".def.sym", + "$(COMPILE.def) -o $@ $<", + + ".sh", + "cat $< >$@ \n chmod a+x $@", + + ".s.o", + "$(COMPILE.s) -o $@ $<", + ".S.o", + "$(COMPILE.S) -o $@ $<", + ".c.o", + "$(COMPILE.c) $(OUTPUT_OPTION) $<", + ".cc.o", + "$(COMPILE.cc) $(OUTPUT_OPTION) $<", + ".C.o", + "$(COMPILE.C) $(OUTPUT_OPTION) $<", + ".cpp.o", + "$(COMPILE.cpp) $(OUTPUT_OPTION) $<", + ".f.o", + "$(COMPILE.f) $(OUTPUT_OPTION) $<", + ".m.o", + "$(COMPILE.m) $(OUTPUT_OPTION) $<", + ".p.o", + "$(COMPILE.p) $(OUTPUT_OPTION) $<", + ".F.o", + "$(COMPILE.F) $(OUTPUT_OPTION) $<", + ".r.o", + "$(COMPILE.r) $(OUTPUT_OPTION) $<", + ".mod.o", + "$(COMPILE.mod) -o $@ $<", + + ".c.ln", + "$(LINT.c) -C$* $<", + ".y.ln", +#ifndef __MSDOS__ + "$(YACC.y) $< \n $(LINT.c) -C$* y.tab.c \n $(RM) y.tab.c", +#else + "$(YACC.y) $< \n $(LINT.c) -C$* y_tab.c \n $(RM) y_tab.c", +#endif + ".l.ln", + "@$(RM) $*.c\n $(LEX.l) $< > $*.c\n$(LINT.c) -i $*.c -o $@\n $(RM) $*.c", + + ".y.c", +#ifndef __MSDOS__ + "$(YACC.y) $< \n mv -f y.tab.c $@", +#else + "$(YACC.y) $< \n mv -f y_tab.c $@", +#endif + ".l.c", + "@$(RM) $@ \n $(LEX.l) $< > $@", + ".ym.m", + "$(YACC.m) $< \n mv -f y.tab.c $@", + ".lm.m", + "@$(RM) $@ \n $(LEX.m) $< > $@", + + ".F.f", + "$(PREPROCESS.F) $(OUTPUT_OPTION) $<", + ".r.f", + "$(PREPROCESS.r) $(OUTPUT_OPTION) $<", + + /* This might actually make lex.yy.c if there's no %R% directive in $*.l, + but in that case why were you trying to make $*.r anyway? */ + ".l.r", + "$(LEX.l) $< > $@ \n mv -f lex.yy.r $@", + + ".S.s", + "$(PREPROCESS.S) $< > $@", + + ".texinfo.info", + "$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@", + + ".texi.info", + "$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@", + + ".txinfo.info", + "$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@", + + ".tex.dvi", + "$(TEX) $<", + + ".texinfo.dvi", + "$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<", + + ".texi.dvi", + "$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<", + + ".txinfo.dvi", + "$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<", + + ".w.c", + "$(CTANGLE) $< - $@", /* The '-' says there is no '.ch' file. */ + + ".web.p", + "$(TANGLE) $<", + + ".w.tex", + "$(CWEAVE) $< - $@", /* The '-' says there is no '.ch' file. */ + + ".web.tex", + "$(WEAVE) $<", + +#endif /* !VMS */ + + 0, 0, + }; + +static const char *default_variables[] = + { +#ifdef VMS +#ifdef __ALPHA + "ARCH", "ALPHA", +#endif +#ifdef __ia64 + "ARCH", "IA64", +#endif +#ifdef __VAX + "ARCH", "VAX", +#endif + "AR", "library", + "LIBRARY", "library", + "ARFLAGS", "/replace", + "AS", "macro", + "MACRO", "macro", +#ifdef GCC_IS_NATIVE + "CC", "gcc", +#else + "CC", "cc", +#endif + "CD", "builtin_cd", + "ECHO", "builtin_echo", +#ifdef GCC_IS_NATIVE + "C++", "gcc/plus", + "CXX", "gcc/plus", +#else + "C++", "cxx", + "CXX", "cxx", +#ifndef __ia64 + "CXXLD", "cxxlink", + "CXXLINK", "cxxlink", +#else + /* CXXLINK is not used on VMS/IA64 */ + "CXXLD", "link", + "CXXLINK", "link", +#endif +#endif + "CO", "co", + "CPP", "$(CC) /preprocess_only", + "FC", "fortran", + /* System V uses these, so explicit rules using them should work. + However, there is no way to make implicit rules use them and FC. */ + "F77", "$(FC)", + "F77FLAGS", "$(FFLAGS)", + "LD", "link", + "LEX", "lex", + "PC", "pascal", + "YACC", "bison/yacc", + "YFLAGS", "/Define/Verbose", + "BISON", "bison", + "MAKEINFO", "makeinfo", + "TEX", "tex", + "TEXINDEX", "texindex", + + "RM", "delete/nolog", + + "CSTARTUP", "", +#ifdef GCC_IS_NATIVE + "CRT0", ",sys$$library:vaxcrtl.olb/lib,gnu_cc_library:crt0.obj", + "CXXSTARTUP", "gnu_cc_library:crtbegin.obj", + "CXXRT0", ",sys$$library:vaxcrtl.olb/lib,gnu_cc_library:crtend.obj,gnu_cc_library:gxx_main.obj", + "LXLIBS", ",gnu_cc_library:libstdcxx.olb/lib,gnu_cc_library:libgccplus.olb/lib", + "LDLIBS", ",gnu_cc_library:libgcc.olb/lib", +#else + "CRT0", "", + "CXXSTARTUP", "", + "CXXRT0", "", + "LXLIBS", "", + "LDLIBS", "", +#endif + + "LINK.o", "$(LD) $(LDFLAGS)", + "LINK.obj", "$(LD) $(LDFLAGS)", +#ifndef GCC_IS_NATIVE + "CXXLINK.obj", "$(CXXLD) $(LDFLAGS)", + "COMPILE.cxx", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", +#endif + "COMPILE.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", + "LINK.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", + "COMPILE.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", + "COMPILE.C", "$(COMPILE.cc)", + "COMPILE.cpp", "$(COMPILE.cc)", + "LINK.C", "$(LINK.cc)", + "LINK.cpp", "$(LINK.cc)", + "YACC.y", "$(YACC) $(YFLAGS)", + "LEX.l", "$(LEX) $(LFLAGS)", + "YACC.m", "$(YACC) $(YFLAGS)", + "LEX.m", "$(LEX) $(LFLAGS) -t", + "COMPILE.for", "$(FC) $(FFLAGS) $(TARGET_ARCH)", + "COMPILE.f", "$(FC) $(FFLAGS) $(TARGET_ARCH) -c", + "LINK.f", "$(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.r", "$(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -c", + "LINK.r", "$(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.pas", "$(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", + "COMPILE.def", "$(M2C) $(M2FLAGS) $(DEFFLAGS) $(TARGET_ARCH)", + "COMPILE.mod", "$(M2C) $(M2FLAGS) $(MODFLAGS) $(TARGET_ARCH)", + "COMPILE.p", "$(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.p", "$(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.mar", "$(MACRO) $(MACROFLAGS)", + "COMPILE.s", "$(AS) $(ASFLAGS) $(TARGET_MACH)", + "LINK.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)", + "COMPILE.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c", + "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)", + + "MV", "rename/new_version", + "CP", "copy", + ".LIBPATTERNS", "%.olb lib%.a", + +#else /* !VMS */ + + "AR", "ar", +#ifdef _AIX + /* AIX requires object file format specification: choose -Xany. */ + "ARFLAGS", "-Xany -rv", +#else + "ARFLAGS", "-rv", +#endif + "AS", "as", +#ifdef GCC_IS_NATIVE + "CC", "gcc", +# ifdef __MSDOS__ + "CXX", "gpp", /* g++ is an invalid name on MSDOS */ +# else + "CXX", "gcc", +# endif /* __MSDOS__ */ + "OBJC", "gcc", +#else + "CC", "cc", + "CXX", "g++", + "OBJC", "cc", +#endif + + /* This expands to $(CO) $(COFLAGS) $< $@ if $@ does not exist, + and to the empty string if $@ does exist. */ + "CHECKOUT,v", "+$(if $(wildcard $@),,$(CO) $(COFLAGS) $< $@)", + "CO", "co", + "COFLAGS", "", + + "CPP", "$(CC) -E", +#ifdef CRAY + "CF77PPFLAGS", "-P", + "CF77PP", "/lib/cpp", + "CFT", "cft77", + "CF", "cf77", + "FC", "$(CF)", +#else /* Not CRAY. */ +#ifdef _IBMR2 + "FC", "xlf", +#else +#ifdef __convex__ + "FC", "fc", +#else + "FC", "f77", +#endif /* __convex__ */ +#endif /* _IBMR2 */ + /* System V uses these, so explicit rules using them should work. + However, there is no way to make implicit rules use them and FC. */ + "F77", "$(FC)", + "F77FLAGS", "$(FFLAGS)", +#endif /* Cray. */ + "GET", SCCS_GET, + "LD", "ld", +#ifdef GCC_IS_NATIVE + "LEX", "flex", +#else + "LEX", "lex", +#endif + "LINT", "lint", + "M2C", "m2c", +#ifdef pyr + "PC", "pascal", +#else +#ifdef CRAY + "PC", "PASCAL", + "SEGLDR", "segldr", +#else + "PC", "pc", +#endif /* CRAY. */ +#endif /* pyr. */ +#ifdef GCC_IS_NATIVE + "YACC", "bison -y", +#else + "YACC", "yacc", /* Or "bison -y" */ +#endif + "MAKEINFO", "makeinfo", + "TEX", "tex", + "TEXI2DVI", "texi2dvi", + "WEAVE", "weave", + "CWEAVE", "cweave", + "TANGLE", "tangle", + "CTANGLE", "ctangle", + + "RM", "rm -f", + + "LINK.o", "$(CC) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", +#ifndef HAVE_CASE_INSENSITIVE_FS + /* On case-insensitive filesystems, treat *.C files as *.c files, + to avoid erroneously compiling C sources as C++, which will + probably fail. */ + "COMPILE.C", "$(COMPILE.cc)", +#else + "COMPILE.C", "$(COMPILE.c)", +#endif + "COMPILE.cpp", "$(COMPILE.cc)", + "LINK.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", +#ifndef HAVE_CASE_INSENSITIVE_FS + "LINK.C", "$(LINK.cc)", +#else + "LINK.C", "$(LINK.c)", +#endif + "LINK.cpp", "$(LINK.cc)", + "YACC.y", "$(YACC) $(YFLAGS)", + "LEX.l", "$(LEX) $(LFLAGS) -t", + "YACC.m", "$(YACC) $(YFLAGS)", + "LEX.m", "$(LEX) $(LFLAGS) -t", + "COMPILE.f", "$(FC) $(FFLAGS) $(TARGET_ARCH) -c", + "LINK.f", "$(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.r", "$(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -c", + "LINK.r", "$(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.def", "$(M2C) $(M2FLAGS) $(DEFFLAGS) $(TARGET_ARCH)", + "COMPILE.mod", "$(M2C) $(M2FLAGS) $(MODFLAGS) $(TARGET_ARCH)", + "COMPILE.p", "$(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.p", "$(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "LINK.s", "$(CC) $(ASFLAGS) $(LDFLAGS) $(TARGET_MACH)", + "COMPILE.s", "$(AS) $(ASFLAGS) $(TARGET_MACH)", + "LINK.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)", + "COMPILE.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c", + "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)", + +#ifndef NO_MINUS_C_MINUS_O + "OUTPUT_OPTION", "-o $@", +#endif + +#ifdef SCCS_GET_MINUS_G + "SCCS_OUTPUT_OPTION", "-G$@", +#endif + +#if defined(_AMIGA) + ".LIBPATTERNS", "%.lib", +#elif defined(__MSDOS__) + ".LIBPATTERNS", "lib%.a $(DJDIR)/lib/lib%.a", +#elif defined(__APPLE__) + ".LIBPATTERNS", "lib%.dylib lib%.a", +#elif defined(__CYGWIN__) || defined(WINDOWS32) + ".LIBPATTERNS", "lib%.dll.a %.dll.a lib%.a %.lib lib%.dll %.dll", +#else + ".LIBPATTERNS", "lib%.so lib%.a", +#endif + +#endif /* !VMS */ + /* Make this assignment to avoid undefined variable warnings. */ + GNUMAKEFLAGS_NAME, "", + 0, 0 + }; + +/* Set up the default .SUFFIXES list. */ + +void +set_default_suffixes (void) +{ + suffix_file = enter_file (strcache_add (".SUFFIXES")); + suffix_file->builtin = 1; + + if (no_builtin_rules_flag) + define_variable_cname ("SUFFIXES", "", o_default, 0); + else + { + struct dep *d; + const char *p = default_suffixes; + suffix_file->deps = enter_prereqs (PARSE_SIMPLE_SEQ ((char **)&p, struct dep), + NULL); + for (d = suffix_file->deps; d; d = d->next) + d->file->builtin = 1; + + define_variable_cname ("SUFFIXES", default_suffixes, o_default, 0); + } +} + +/* Enter the default suffix rules as file rules. This used to be done in + install_default_implicit_rules, but that loses because we want the + suffix rules installed before reading makefiles, and the pattern rules + installed after. */ + +void +install_default_suffix_rules (void) +{ + const char **s; + + if (no_builtin_rules_flag) + return; + + for (s = default_suffix_rules; *s != 0; s += 2) + { + struct file *f = enter_file (strcache_add (s[0])); + /* This function should run before any makefile is parsed. */ + assert (f->cmds == 0); + f->cmds = xmalloc (sizeof (struct commands)); + f->cmds->fileinfo.filenm = 0; + f->cmds->commands = xstrdup (s[1]); + f->cmds->command_lines = 0; + f->cmds->recipe_prefix = RECIPEPREFIX_DEFAULT; + f->builtin = 1; + } +} + + +/* Install the default pattern rules. */ + +void +install_default_implicit_rules (void) +{ + struct pspec *p; + + if (no_builtin_rules_flag) + return; + + for (p = default_pattern_rules; p->target != 0; ++p) + install_pattern_rule (p, 0); + + for (p = default_terminal_rules; p->target != 0; ++p) + install_pattern_rule (p, 1); +} + +void +define_default_variables (void) +{ + const char **s; + + if (no_builtin_variables_flag) + return; + + for (s = default_variables; *s != 0; s += 2) + define_variable (s[0], strlen (s[0]), s[1], o_default, 1); +} + +void +undefine_default_variables (void) +{ + const char **s; + + for (s = default_variables; *s != 0; s += 2) + undefine_variable_global (s[0], strlen (s[0]), o_default); +} diff --git a/local/recipes/dev/gnu-make/source/src/dep.h b/local/recipes/dev/gnu-make/source/src/dep.h new file mode 100644 index 0000000000..89c8639e8a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/dep.h @@ -0,0 +1,139 @@ +/* Definitions of dependency data structures for GNU Make. +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 +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 . */ + + +/* Structure used in chains of names, for parsing and globbing. */ + +#define NAMESEQ(_t) \ + _t *next; \ + const char *name + +struct nameseq + { + NAMESEQ (struct nameseq); + }; + +/* Flag bits for the second argument to 'read_makefile'. + 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. */ + +/* 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. + 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 is_explicit : 1; \ + unsigned int wait_here : 1 + +struct dep + { + DEP (struct dep); + }; + +/* Structure representing one goal. + The goals to be built constitute a chain of these, chained through 'next'. + 'stem' is not used, but it's simpler to include and ignore it. */ + +struct goaldep + { + DEP (struct goaldep); + int error; + floc floc; + }; + +/* Options for parsing lists of filenames. */ + +#define PARSEFS_NONE 0x0000 +#define PARSEFS_NOSTRIP 0x0001 +#define PARSEFS_NOAR 0x0002 +#define PARSEFS_NOGLOB 0x0004 +#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)) +#define PARSE_SIMPLE_SEQ(_s,_t) \ + (_t *)parse_file_seq ((_s),sizeof (_t),MAP_NUL,NULL,PARSEFS_NONE) + +#ifdef VMS +void *parse_file_seq (); +#else +void *parse_file_seq (char **stringp, size_t size, + int stopmap, const char *prefix, int flags); +#endif + +char *tilde_expand (const char *name); + +#ifndef NO_ARCHIVES +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 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 (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) +# define alloc_goaldep() alloc_seq_elt (struct goaldep) + +# define free_ns(_n) free (_n) +# define free_dep(_d) free_ns (_d) +# define free_goaldep(_g) free_dep (_g) + +# define free_dep_chain(_d) free_ns_chain ((struct nameseq *)(_d)) +# define free_goal_chain(_g) free_ns_chain ((struct nameseq *)(_g)) +#endif + +struct dep *copy_dep_chain (const struct dep *d); + +struct goaldep *read_all_makefiles (const char **makefiles); +void eval_buffer (char *buffer, const floc *floc); +enum update_status update_goal_chain (struct goaldep *goals); diff --git a/local/recipes/dev/gnu-make/source/src/dir.c b/local/recipes/dev/gnu-make/source/src/dir.c new file mode 100644 index 0000000000..b47e94fed3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/dir.c @@ -0,0 +1,1376 @@ +/* Directory hashing for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include "hash.h" +#include "filedef.h" +#include "dep.h" +#include "debug.h" + +#ifdef HAVE_DIRENT_H +# include +# define NAMLEN(dirent) strlen((dirent)->d_name) +# ifdef VMS +/* its prototype is in vmsdir.h, which is not needed for HAVE_DIRENT_H */ +const char *vmsify (const char *name, int type); +# endif +#else +# define dirent direct +# define NAMLEN(dirent) (dirent)->d_namlen +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +# ifdef HAVE_VMSDIR_H +# include "vmsdir.h" +# endif /* HAVE_VMSDIR_H */ +#endif + +/* In GNU systems, defines this macro for us. */ +#ifdef _D_NAMLEN +# undef NAMLEN +# define NAMLEN(d) _D_NAMLEN(d) +#endif + +#if (defined (POSIX) || defined (VMS) || defined (WINDOWS32)) && !defined (__GNU_LIBRARY__) +/* Posix does not require that the d_ino field be present, and some + systems do not provide it. */ +# define REAL_DIR_ENTRY(dp) 1 +# define FAKE_DIR_ENTRY(dp) +#else +# define REAL_DIR_ENTRY(dp) (dp->d_ino != 0) +# define FAKE_DIR_ENTRY(dp) (dp->d_ino = 1) +#endif /* POSIX */ + +#ifdef __MSDOS__ +#include +#include + +/* If it's MSDOS that doesn't have _USE_LFN, disable LFN support. */ +#ifndef _USE_LFN +#define _USE_LFN 0 +#endif + +static const char * +dosify (const char *filename) +{ + static char dos_filename[14]; + char *df; + int i; + + if (filename == 0 || _USE_LFN) + return filename; + + /* FIXME: what about filenames which violate + 8+3 constraints, like "config.h.in", or ".emacs"? */ + if (strpbrk (filename, "\"*+,;<=>?[\\]|") != 0) + return filename; + + df = dos_filename; + + /* First, transform the name part. */ + for (i = 0; i < 8 && ! STOP_SET (*filename, MAP_DOT|MAP_NUL); ++i) + *df++ = tolower ((unsigned char)*filename++); + + /* Now skip to the next dot. */ + while (! STOP_SET (*filename, MAP_DOT|MAP_NUL)) + ++filename; + if (*filename != '\0') + { + *df++ = *filename++; + for (i = 0; i < 3 && ! STOP_SET (*filename, MAP_DOT|MAP_NUL); ++i) + *df++ = tolower ((unsigned char)*filename++); + } + + /* Look for more dots. */ + while (! STOP_SET (*filename, MAP_DOT|MAP_NUL)) + ++filename; + if (*filename == '.') + return filename; + *df = 0; + return dos_filename; +} +#endif /* __MSDOS__ */ + +#ifdef WINDOWS32 +#include "pathstuff.h" +#endif + +#ifdef _AMIGA +#include +#endif + +#ifdef HAVE_CASE_INSENSITIVE_FS +static const char * +downcase (const char *filename) +{ + static PATH_VAR (new_filename); + char *df; + + if (filename == 0) + return 0; + + df = new_filename; + while (*filename != '\0') + { + *df++ = tolower ((unsigned char)*filename); + ++filename; + } + + *df = 0; + + return new_filename; +} +#endif /* HAVE_CASE_INSENSITIVE_FS */ + +#ifdef VMS + +static char * +downcase_inplace(char *filename) +{ + char *name; + name = filename; + while (*name != '\0') + { + *name = tolower ((unsigned char)*name); + ++name; + } + return filename; +} + +#ifndef _USE_STD_STAT +/* VMS 8.2 fixed the VMS stat output to have unique st_dev and st_ino + when _USE_STD_STAT is used on the compile line. + + Prior to _USE_STD_STAT support, the st_dev is a pointer to thread + static memory containing the device of the last filename looked up. + + Todo: find out if the ino_t still needs to be faked on a directory. + */ + +/* Define this if the older VMS_INO_T is needed */ +#define VMS_INO_T 1 + +static int +vms_hash (const char *name) +{ + int h = 0; + + while (*name) + { + unsigned char uc = (unsigned char) *name; + int g; +#ifdef HAVE_CASE_INSENSITIVE_FS + h = (h << 4) + (isupper (uc) ? tolower (uc) : uc); +#else + h = (h << 4) + uc; +#endif + name++; + g = h & 0xf0000000; + if (g) + { + h = h ^ (g >> 24); + h = h ^ g; + } + } + return h; +} + +/* fake stat entry for a directory */ +static int +vmsstat_dir (const char *name, struct stat *st) +{ + char *s; + int h; + DIR *dir; + + dir = opendir (name); + if (dir == 0) + return -1; + closedir (dir); + s = strchr (name, ':'); /* find device */ + if (s) + { + /* to keep the compiler happy we said "const char *name", now we cheat */ + *s++ = 0; + st->st_dev = (char *)vms_hash (name); + h = vms_hash (s); + *(s-1) = ':'; + } + else + { + st->st_dev = 0; + h = vms_hash (name); + } + + st->st_ino[0] = h & 0xff; + st->st_ino[1] = h & 0xff00; + st->st_ino[2] = h >> 16; + + return 0; +} + +# define stat(__path, __sbuf) vmsstat_dir (__path, __sbuf) + +#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 +#define DIRECTORY_BUCKETS 199 +#endif + +struct directory_contents + { + dev_t dev; /* Device and inode numbers of this dir. */ +#ifdef WINDOWS32 + /* Inode means nothing on WINDOWS32. Even file key information is + * unreliable because it is random per file open and undefined for remote + * filesystems. The most unique attribute I can come up with is the fully + * qualified name of the directory. Beware though, this is also + * unreliable. I'm open to suggestion on a better way to emulate inode. */ + char *path_key; + time_t ctime; + time_t mtime; /* controls check for stale directory cache */ + int fs_flags; /* FS_FAT, FS_NTFS, ... */ +# define FS_FAT 0x1 +# define FS_NTFS 0x2 +# define FS_UNKNOWN 0x4 +#else +# ifdef VMS_INO_T + ino_t ino[3]; +# else + ino_t ino; +# 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) +{ + const struct directory_contents *key = key_0; + unsigned long hash; + +#ifdef WINDOWS32 + hash = 0; + ISTRING_HASH_1 (key->path_key, hash); + hash ^= ((unsigned int) key->dev << 4) ^ (unsigned int) key->ctime; +#else +# ifdef VMS_INO_T + hash = (((unsigned int) key->dev << 4) + ^ ((unsigned int) key->ino[0] + + (unsigned int) key->ino[1] + + (unsigned int) key->ino[2])); +# else + hash = ((unsigned int) key->dev << 4) ^ (unsigned int) key->ino; +# endif +#endif /* WINDOWS32 */ + return hash; +} + +static unsigned long +directory_contents_hash_2 (const void *key_0) +{ + const struct directory_contents *key = key_0; + unsigned long hash; + +#ifdef WINDOWS32 + hash = 0; + ISTRING_HASH_2 (key->path_key, hash); + hash ^= ((unsigned int) key->dev << 4) ^ (unsigned int) ~key->ctime; +#else +# ifdef VMS_INO_T + hash = (((unsigned int) key->dev << 4) + ^ ~((unsigned int) key->ino[0] + + (unsigned int) key->ino[1] + + (unsigned int) key->ino[2])); +# else + hash = ((unsigned int) key->dev << 4) ^ (unsigned int) ~key->ino; +# endif +#endif /* WINDOWS32 */ + + return hash; +} + +/* Sometimes it's OK to use subtraction to get this value: + result = X - Y; + But, if we're not sure of the type of X and Y they may be too large for an + int (on a 64-bit system for example). So, use ?: instead. + See Savannah bug #15534. + + NOTE! This macro has side-effects! +*/ + +#define MAKECMP(_x,_y) ((_x)<(_y)?-1:((_x)==(_y)?0:1)) + +static int +directory_contents_hash_cmp (const void *xv, const void *yv) +{ + const struct directory_contents *x = xv; + const struct directory_contents *y = yv; + int result; + +#ifdef WINDOWS32 + ISTRING_COMPARE (x->path_key, y->path_key, result); + if (result) + return result; + result = MAKECMP(x->ctime, y->ctime); + if (result) + return result; +#else +# ifdef VMS_INO_T + result = MAKECMP(x->ino[0], y->ino[0]); + if (result) + return result; + result = MAKECMP(x->ino[1], y->ino[1]); + if (result) + return result; + result = MAKECMP(x->ino[2], y->ino[2]); + if (result) + return result; +# else + result = MAKECMP(x->ino, y->ino); + if (result) + return result; +# endif +#endif /* WINDOWS32 */ + + return MAKECMP(x->dev, y->dev); +} + +/* Table of directory contents hashed by device and inode number. */ +static struct hash_table directory_contents; + +struct 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 + (identified uniquely by 'dev' and 'ino') under different names. */ + struct directory_contents *contents; + }; + +static unsigned long +directory_hash_1 (const void *key) +{ + return_ISTRING_HASH_1 (((const struct directory *) key)->name); +} + +static unsigned long +directory_hash_2 (const void *key) +{ + return_ISTRING_HASH_2 (((const struct directory *) key)->name); +} + +static int +directory_hash_cmp (const void *x, const void *y) +{ + return_ISTRING_COMPARE (((const struct directory *) x)->name, + ((const struct directory *) y)->name); +} + +/* Table of directories hashed by name. */ +static struct hash_table directories; + + +/* Hash table of files in each directory. */ + +struct dirfile + { + const char *name; /* Name of the file. */ + size_t length; + short impossible; /* This file is impossible. */ + unsigned char type; + }; + +static unsigned long +dirfile_hash_1 (const void *key) +{ + return_ISTRING_HASH_1 (((struct dirfile const *) key)->name); +} + +static unsigned long +dirfile_hash_2 (const void *key) +{ + return_ISTRING_HASH_2 (((struct dirfile const *) key)->name); +} + +static int +dirfile_hash_cmp (const void *xv, const void *yv) +{ + const struct dirfile *x = xv; + const struct dirfile *y = yv; + int result = (int) (x->length - y->length); + if (result) + return result; + return_ISTRING_COMPARE (x->name, y->name); +} + +#ifndef DIRFILE_BUCKETS +#define DIRFILE_BUCKETS 107 +#endif + +static int dir_contents_file_exists_p (struct directory_contents *dir, + const char *filename); +static struct directory *find_directory (const char *name); + +/* Find the directory named NAME and return its 'struct directory'. */ + +static struct directory * +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)) + { + 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. */ + 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, len); + free (lname); + } +#else + dir->name = strcache_add_len (name, len); +#endif + hash_insert_at (&directories, dir, dir_slot); + } + + dir->contents = NULL; + dir->counter = command_count; + + /* See if the directory exists. */ +#if defined(WINDOWS32) + { + 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)); +#endif + + if (r < 0) + /* Couldn't stat the directory; nothing else to do. */ + return dir; + + /* Search the contents hash table; device and inode are the key. */ + + 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; +#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]; +# else + dc_key.ino = st.st_ino; +# endif +#endif + 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. */ +#ifdef WINDOWS32 + char fs_label[BUFSIZ]; + char fs_type[BUFSIZ]; + unsigned long fs_serno; + unsigned long fs_flags; + unsigned long fs_len; +#endif + /* Enter it in the contents hash table. */ + dc = xcalloc (sizeof (struct directory_contents)); + *dc = dc_key; + +#ifdef WINDOWS32 + 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); + } + + /* 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); + } + } + + return dir; +} + +/* Return 1 if the name FILENAME is entered in DIR's hash table. + FILENAME must contain no slashes. */ + +static int +dir_contents_file_exists_p (struct directory_contents *dir, + const char *filename) +{ + struct dirfile *df; + struct dirent *d; +#ifdef WINDOWS32 + struct stat st; + int rehash = 0; +#endif + + if (dir == 0 || dir->dirfiles.ht_vec == 0) + /* The directory could not be stat'd or opened. */ + return 0; + +#ifdef __MSDOS__ + filename = dosify (filename); +#endif + +#ifdef HAVE_CASE_INSENSITIVE_FS + filename = downcase (filename); +#endif + +#ifdef __EMX__ + if (filename != 0) + _fnlwr (filename); /* lower case for FAT drives */ +#endif + if (filename != 0) + { + struct dirfile dirfile_key; + + if (*filename == '\0') + { + /* Checking if the directory exists. */ + return 1; + } + dirfile_key.name = filename; + dirfile_key.length = strlen (filename); + df = hash_find_item (&dir->dirfiles, &dirfile_key); + if (df) + return !df->impossible; + } + + /* The file was not found in the hashed list. + Try to read the directory further. */ + + if (dir->dirstream == 0) + { +#ifdef WINDOWS32 + /* + * Check to see if directory has changed since last read. FAT + * filesystems force a rehash always as mtime does not change + * on directories (ugh!). + */ + if (dir->path_key) + { + if ((dir->fs_flags & FS_FAT) != 0) + { + dir->mtime = time ((time_t *) 0); + rehash = 1; + } + else if (stat (dir->path_key, &st) == 0 && st.st_mtime > dir->mtime) + { + /* reset date stamp to show most recent re-process. */ + dir->mtime = st.st_mtime; + rehash = 1; + } + + /* If it has been already read in, all done. */ + if (!rehash) + return 0; + + /* make sure directory can still be opened; if not return. */ + dir->dirstream = opendir (dir->path_key); + if (!dir->dirstream) + return 0; + } + else +#endif + /* The directory has been all read in. */ + return 0; + } + + while (1) + { + /* Enter the file in the hash table. */ + size_t len; + struct dirfile dirfile_key; + struct dirfile **dirfile_slot; + + ENULLLOOP (d, readdir (dir->dirstream)); + if (d == 0) + { + if (errno) + pfatal_with_name ("INTERNAL: readdir"); + break; + } + +#if defined(VMS) && defined(HAVE_DIRENT_H) + /* In VMS we get file versions too, which have to be stripped off. + Some versions of VMS return versions on Unix files even when + the feature option to strip them is set. */ + { + char *p = strrchr (d->d_name, ';'); + if (p) + *p = '\0'; + } +#endif + if (!REAL_DIR_ENTRY (d)) + continue; + + len = NAMLEN (d); + dirfile_key.name = d->d_name; + dirfile_key.length = len; + dirfile_slot = (struct dirfile **) hash_find_slot (&dir->dirfiles, &dirfile_key); +#ifdef WINDOWS32 + /* + * If re-reading a directory, don't cache files that have + * already been discovered. + */ + if (! rehash || HASH_VACANT (*dirfile_slot)) +#endif + { + df = xmalloc (sizeof (struct dirfile)); +#if defined(HAVE_CASE_INSENSITIVE_FS) && defined(VMS) + /* TODO: Why is this only needed on VMS? */ + df->name = strcache_add_len (downcase_inplace (d->d_name), len); +#else + df->name = strcache_add_len (d->d_name, len); +#endif +#ifdef HAVE_STRUCT_DIRENT_D_TYPE + df->type = d->d_type; +#endif + df->length = len; + df->impossible = 0; + hash_insert_at (&dir->dirfiles, df, dirfile_slot); + } + /* Check if the name matches the one we're searching for. */ + if (filename != 0 && patheq (d->d_name, filename)) + return 1; + } + + /* If the directory has been completely read in, + close the stream and reset the pointer to nil. */ + if (d == 0) + { + --open_directories; + closedir (dir->dirstream); + dir->dirstream = 0; + } + return 0; +} + +/* Return 1 if the name FILENAME in directory DIRNAME + is entered in the dir hash table. + FILENAME must contain no slashes. */ + +int +dir_file_exists_p (const char *dirname, const char *filename) +{ +#ifdef VMS + if ((filename != NULL) && (dirname != NULL)) + { + int want_vmsify; + want_vmsify = (strpbrk (dirname, ":<[") != NULL); + if (want_vmsify) + filename = vmsify (filename, 0); + } +#endif + return dir_contents_file_exists_p (find_directory (dirname)->contents, + filename); +} + +/* Return 1 if the file named NAME exists. */ + +int +file_exists_p (const char *name) +{ + const char *dirend; + const char *dirname; + const char *slash; + +#ifndef NO_ARCHIVES + if (ar_name (name)) + return ar_member_date (name) != (time_t) -1; +#endif + + dirend = strrchr (name, '/'); +#ifdef VMS + if (dirend == 0) + { + dirend = strrchr (name, ']'); + dirend == NULL ? dirend : dirend++; + } + if (dirend == 0) + { + dirend = strrchr (name, '>'); + dirend == NULL ? dirend : dirend++; + } + if (dirend == 0) + { + dirend = strrchr (name, ':'); + dirend == NULL ? dirend : dirend++; + } +#endif /* VMS */ +#ifdef HAVE_DOS_PATHS + /* Forward and backslashes might be mixed. We need the rightmost one. */ + { + const char *bslash = strrchr (name, '\\'); + if (!dirend || bslash > dirend) + dirend = bslash; + /* The case of "d:file". */ + if (!dirend && name[0] && name[1] == ':') + dirend = name + 1; + } +#endif /* HAVE_DOS_PATHS */ + if (dirend == 0) +#ifndef _AMIGA + return dir_file_exists_p (".", name); +#else /* !AMIGA */ + return dir_file_exists_p ("", name); +#endif /* AMIGA */ + + slash = dirend; + if (dirend == name) + dirname = "/"; + else + { + char *p; +#ifdef HAVE_DOS_PATHS + /* d:/ and d: are *very* different... */ + if (dirend < name + 3 && name[1] == ':' && + (ISDIRSEP (*dirend) || *dirend == ':')) + dirend++; +#endif + p = alloca (dirend - name + 1); + memcpy (p, name, dirend - name); + p[dirend - name] = '\0'; + dirname = p; + } +#ifdef VMS + if (*slash == '/') + slash++; +#else + slash++; +#endif + return dir_file_exists_p (dirname, slash); +} + +/* Mark FILENAME as 'impossible' for 'file_impossible_p'. + This means an attempt has been made to search for FILENAME + as an intermediate file, and it has failed. */ + +void +file_impossible (const char *filename) +{ + const char *dirend; + const char *p = filename; + struct directory *dir; + struct dirfile *new; + + dirend = strrchr (p, '/'); +#ifdef VMS + if (dirend == NULL) + { + dirend = strrchr (p, ']'); + dirend == NULL ? dirend : dirend++; + } + if (dirend == NULL) + { + dirend = strrchr (p, '>'); + dirend == NULL ? dirend : dirend++; + } + if (dirend == NULL) + { + dirend = strrchr (p, ':'); + dirend == NULL ? dirend : dirend++; + } +#endif +#ifdef HAVE_DOS_PATHS + /* Forward and backslashes might be mixed. We need the rightmost one. */ + { + const char *bslash = strrchr (p, '\\'); + if (!dirend || bslash > dirend) + dirend = bslash; + /* The case of "d:file". */ + if (!dirend && p[0] && p[1] == ':') + dirend = p + 1; + } +#endif /* HAVE_DOS_PATHS */ + if (dirend == 0) +#ifdef _AMIGA + dir = find_directory (""); +#else /* !AMIGA */ + dir = find_directory ("."); +#endif /* AMIGA */ + else + { + const char *dirname; + const char *slash = dirend; + if (dirend == p) + dirname = "/"; + else + { + char *cp; +#ifdef HAVE_DOS_PATHS + /* d:/ and d: are *very* different... */ + if (dirend < p + 3 && p[1] == ':' && + (ISDIRSEP (*dirend) || *dirend == ':')) + dirend++; +#endif + cp = alloca (dirend - p + 1); + memcpy (cp, p, dirend - p); + cp[dirend - p] = '\0'; + dirname = cp; + } + dir = find_directory (dirname); +#ifdef VMS + if (*slash == '/') + filename = p = slash + 1; + else + filename = p = slash; +#else + filename = p = slash + 1; +#endif + } + + if (dir->contents == 0) + /* The directory could not be stat'd. We allocate a contents + structure for it, but leave it out of the contents hash table. */ + dir->contents = xcalloc (sizeof (struct directory_contents)); + + if (dir->contents->dirfiles.ht_vec == 0) + { + hash_init (&dir->contents->dirfiles, DIRFILE_BUCKETS, + dirfile_hash_1, dirfile_hash_2, dirfile_hash_cmp); + } + + /* Make a new entry and put it in the table. */ + + new = xmalloc (sizeof (struct dirfile)); + new->length = strlen (filename); +#if defined(HAVE_CASE_INSENSITIVE_FS) && defined(VMS) + /* todo: Why is this only needed on VMS? */ + new->name = strcache_add_len (downcase (filename), new->length); +#else + new->name = strcache_add_len (filename, new->length); +#endif + new->impossible = 1; + hash_insert (&dir->contents->dirfiles, new); +} + +/* Return nonzero if FILENAME has been marked impossible. */ + +int +file_impossible_p (const char *filename) +{ + const char *dirend; + struct directory_contents *dir; + struct dirfile *dirfile; + struct dirfile dirfile_key; +#ifdef VMS + int want_vmsify = 0; +#endif + + dirend = strrchr (filename, '/'); +#ifdef VMS + if (dirend == NULL) + { + want_vmsify = (strpbrk (filename, "]>:^") != NULL); + dirend = strrchr (filename, ']'); + } + if (dirend == NULL && want_vmsify) + dirend = strrchr (filename, '>'); + if (dirend == NULL && want_vmsify) + dirend = strrchr (filename, ':'); +#endif +#ifdef HAVE_DOS_PATHS + /* Forward and backslashes might be mixed. We need the rightmost one. */ + { + const char *bslash = strrchr (filename, '\\'); + if (!dirend || bslash > dirend) + dirend = bslash; + /* The case of "d:file". */ + if (!dirend && filename[0] && filename[1] == ':') + dirend = filename + 1; + } +#endif /* HAVE_DOS_PATHS */ + if (dirend == 0) +#ifdef _AMIGA + dir = find_directory ("")->contents; +#else /* !AMIGA */ + dir = find_directory (".")->contents; +#endif /* AMIGA */ + else + { + const char *dirname; + const char *slash = dirend; + if (dirend == filename) + dirname = "/"; + else + { + char *cp; +#ifdef HAVE_DOS_PATHS + /* d:/ and d: are *very* different... */ + if (dirend < filename + 3 && filename[1] == ':' && + (ISDIRSEP (*dirend) || *dirend == ':')) + dirend++; +#endif + cp = alloca (dirend - filename + 1); + memcpy (cp, filename, dirend - filename); + cp[dirend - filename] = '\0'; + dirname = cp; + } + dir = find_directory (dirname)->contents; +#ifdef VMS + if (*slash == '/') + filename = slash + 1; + else + filename = slash; +#else + filename = slash + 1; +#endif + } + + if (dir == 0 || dir->dirfiles.ht_vec == 0) + /* There are no files entered for this directory. */ + return 0; + +#ifdef __MSDOS__ + filename = dosify (filename); +#endif +#ifdef HAVE_CASE_INSENSITIVE_FS + filename = downcase (filename); +#endif +#ifdef VMS + if (want_vmsify) + filename = vmsify (filename, 1); +#endif + + dirfile_key.name = filename; + dirfile_key.length = strlen (filename); + dirfile = hash_find_item (&dir->dirfiles, &dirfile_key); + if (dirfile) + return dirfile->impossible; + + return 0; +} + +/* Return the already allocated name in the + directory hash table that matches DIR. */ + +const char * +dir_name (const char *dir) +{ + return find_directory (dir)->name; +} + +/* Print the data base of directories. */ + +void +print_dir_data_base (void) +{ + unsigned int files; + unsigned int impossible; + struct directory **dir_slot; + struct directory **dir_end; +#ifdef WINDOWS32 + char buf[INTSTR_LENGTH + 1]; +#endif + + puts (_("\n# Directories\n")); + + files = impossible = 0; + + dir_slot = (struct directory **) directories.ht_vec; + dir_end = dir_slot + directories.ht_size; + for ( ; dir_slot < dir_end; dir_slot++) + { + struct directory *dir = *dir_slot; + if (! HASH_VACANT (dir)) + { + 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 %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) dir->contents->dev, (long) dir->contents->ino); +#endif + else + { + unsigned int f = 0; + unsigned int im = 0; + struct dirfile **files_slot; + struct dirfile **files_end; + + files_slot = (struct dirfile **) dir->contents->dirfiles.ht_vec; + files_end = files_slot + dir->contents->dirfiles.ht_size; + for ( ; files_slot < files_end; files_slot++) + { + struct dirfile *df = *files_slot; + if (! HASH_VACANT (df)) + { + if (df->impossible) + ++im; + else + ++f; + } + } +#ifdef WINDOWS32 + printf (_("# %s (key %s, mtime %s): "), + 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]): "), + 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, + (long)dir->contents->dev, (long)dir->contents->ino); +#endif + if (f == 0) + fputs (_("No"), stdout); + else + printf ("%u", f); + fputs (_(" files, "), stdout); + if (im == 0) + fputs (_("no"), stdout); + else + printf ("%u", im); + fputs (_(" impossibilities"), stdout); + if (dir->contents->dirstream == 0) + puts ("."); + else + puts (_(" so far.")); + files += f; + impossible += im; + } + } + } + + fputs ("\n# ", stdout); + if (files == 0) + fputs (_("No"), stdout); + else + printf ("%u", files); + fputs (_(" files, "), stdout); + if (impossible == 0) + fputs (_("no"), stdout); + else + printf ("%u", impossible); + printf (_(" impossibilities in %lu directories.\n"), directories.ht_fill); +} + +/* Hooks for globbing. */ + +/* Structure describing state of iterating through a directory hash table. */ + +struct dirstream + { + struct directory_contents *contents; /* The directory being read. */ + struct dirfile **dirfile_slot; /* Current slot in table. */ + }; + +/* Forward declarations. */ +static __ptr_t open_dirstream (const char *); +static struct dirent *read_dirstream (__ptr_t); + +static __ptr_t +open_dirstream (const char *directory) +{ + struct dirstream *new; + struct directory *dir = find_directory (directory); + + if (dir->contents == 0 || dir->contents->dirfiles.ht_vec == 0) + /* DIR->contents is nil if the directory could not be stat'd. + DIR->contents->dirfiles is nil if it could not be opened. */ + return 0; + + /* Read all the contents of the directory now. There is no benefit + in being lazy, since glob will want to see every file anyway. */ + + dir_contents_file_exists_p (dir->contents, 0); + + new = xmalloc (sizeof (struct dirstream)); + new->contents = dir->contents; + new->dirfile_slot = (struct dirfile **) new->contents->dirfiles.ht_vec; + + return (__ptr_t) new; +} + +static struct dirent * +read_dirstream (__ptr_t stream) +{ + static char *buf; + static size_t bufsz; + + struct dirstream *const ds = (struct dirstream *) stream; + struct directory_contents *dc = ds->contents; + struct dirfile **dirfile_end = (struct dirfile **) dc->dirfiles.ht_vec + dc->dirfiles.ht_size; + + while (ds->dirfile_slot < dirfile_end) + { + struct dirfile *df = *ds->dirfile_slot++; + if (! HASH_VACANT (df) && !df->impossible) + { + /* The glob interface wants a 'struct dirent', so mock one up. */ + struct dirent *d; + size_t len = df->length + 1; + size_t sz = sizeof (*d) - sizeof (d->d_name) + len; + if (sz > bufsz) + { + bufsz *= 2; + if (sz > bufsz) + bufsz = sz; + buf = xrealloc (buf, bufsz); + } + d = (struct dirent *) buf; +#ifdef __MINGW32__ +# if __MINGW32_MAJOR_VERSION < 3 || (__MINGW32_MAJOR_VERSION == 3 && \ + __MINGW32_MINOR_VERSION == 0) + d->d_name = xmalloc (len); +# endif +#endif + FAKE_DIR_ENTRY (d); +#ifdef _DIRENT_HAVE_D_NAMLEN + d->d_namlen = len - 1; +#endif +#ifdef HAVE_STRUCT_DIRENT_D_TYPE + d->d_type = df->type; +#endif + memcpy (d->d_name, df->name, len); + return d; + } + } + + return 0; +} + +/* On 64 bit ReliantUNIX (5.44 and above) in LFS mode, stat() is actually a + * macro for stat64(). If stat is a macro, make a local wrapper function to + * invoke it. + * + * On MS-Windows, stat() "succeeds" for foo/bar/. where foo/bar is a + * regular file; fix that here. + */ +#if !defined(stat) && !defined(WINDOWS32) || defined(VMS) +# ifndef VMS +# ifndef HAVE_SYS_STAT_H +int stat (const char *path, struct stat *sbuf); +# endif +# else + /* We are done with the fake stat. Go back to the real stat */ +# ifdef stat +# undef stat +# endif +# endif +# define local_stat stat +#else +static int +local_stat (const char *path, struct stat *buf) +{ + int e; +#ifdef WINDOWS32 + size_t plen = strlen (path); + + /* 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 > 2 && path[plen - 1] == '.' && ISDIRSEP (path[plen - 2])) + { + char parent[MAX_PATH+1]; + + strncpy (parent, path, MAX_PATH); + parent[MIN(plen - 2, MAX_PATH)] = '\0'; + if (stat (parent, buf) < 0 || !_S_ISDIR (buf->st_mode)) + return -1; + } +#endif + + EINTRLOOP (e, stat (path, buf)); + return e; +} +#endif + +/* Similarly for lstat. */ +#if !defined(lstat) && !defined(WINDOWS32) || defined(VMS) +# ifndef VMS +# ifndef HAVE_SYS_STAT_H +int lstat (const char *path, struct stat *sbuf); +# endif +# else + /* We are done with the fake lstat. Go back to the real lstat */ +# ifdef lstat +# undef lstat +# endif +# endif +# define local_lstat lstat +#elif defined(WINDOWS32) +/* Windows doesn't support lstat(). */ +# define local_lstat local_stat +#else +static int +local_lstat (const char *path, struct stat *buf) +{ + int e; + EINTRLOOP (e, lstat (path, buf)); + return e; +} +#endif + +void +dir_setup_glob (glob_t *gl) +{ + gl->gl_offs = 0; + gl->gl_opendir = open_dirstream; + gl->gl_readdir = read_dirstream; + gl->gl_closedir = free; + gl->gl_lstat = local_lstat; + gl->gl_stat = local_stat; +} + +void +hash_init_directories (void) +{ + hash_init (&directories, DIRECTORY_BUCKETS, + directory_hash_1, directory_hash_2, directory_hash_cmp); + hash_init (&directory_contents, DIRECTORY_BUCKETS, + directory_contents_hash_1, directory_contents_hash_2, + directory_contents_hash_cmp); +} diff --git a/local/recipes/dev/gnu-make/source/src/expand.c b/local/recipes/dev/gnu-make/source/src/expand.c new file mode 100644 index 0000000000..2509009e6f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/expand.c @@ -0,0 +1,621 @@ +/* Variable expansion functions for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include + +#include "commands.h" +#include "debug.h" +#include "filedef.h" +#include "job.h" +#include "variable.h" +#include "rule.h" + +/* Initially, any errors reported when expanding strings will be reported + against the file where the error appears. */ +const floc **expanding_var = &reading_file; + +/* The next two describe the variable output buffer. + This buffer is used to hold the variable-expansion of a line of the + makefile. It is made bigger with realloc whenever it is too small. + variable_buffer_length is the size currently allocated. + variable_buffer is the address of the buffer. + + For efficiency, it's guaranteed that the buffer will always have + VARIABLE_BUFFER_ZONE extra bytes allocated. This allows you to add a few + extra chars without having to call a function. Note you should never use + these bytes unless you're _sure_ you have room (you know when the buffer + length was last checked. */ + +#define VARIABLE_BUFFER_ZONE 5 + +static size_t variable_buffer_length; +char *variable_buffer; + +/* Subroutine of variable_expand and friends: + The text to add is LENGTH chars starting at STRING to the variable_buffer. + The text is added to the buffer at PTR, and the updated pointer into + the buffer is returned as the value. Thus, the value returned by + each call to variable_buffer_output should be the first argument to + the following call. */ + +char * +variable_buffer_output (char *ptr, const char *string, size_t length) +{ + size_t newlen = length + (ptr - variable_buffer); + + if ((newlen + VARIABLE_BUFFER_ZONE) > variable_buffer_length) + { + size_t offset = ptr - variable_buffer; + variable_buffer_length = (newlen + 100 > 2 * variable_buffer_length + ? newlen + 100 + : 2 * variable_buffer_length); + variable_buffer = xrealloc (variable_buffer, variable_buffer_length); + ptr = variable_buffer + offset; + } + + return mempcpy (ptr, string, length); +} + +/* Return a pointer to the beginning of the variable buffer. + This is called from main() and it should never be null afterward. */ + +char * +initialize_variable_output () +{ + /* If we don't have a variable output buffer yet, get one. */ + + if (variable_buffer == 0) + { + variable_buffer_length = 200; + variable_buffer = xmalloc (variable_buffer_length); + variable_buffer[0] = '\0'; + } + + return variable_buffer; +} + +/* Recursively expand V. The returned string is malloc'd. */ + +static char *allocated_variable_append (const struct variable *v); + +char * +recursively_expand_for_file (struct variable *v, struct file *file) +{ + char *value; + const floc *this_var; + const floc **saved_varp; + 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; + if (v->fileinfo.filenm) + { + this_var = &v->fileinfo; + expanding_var = &this_var; + } + + /* If we have no other file-reading context, use the variable's context. */ + if (!reading_file) + { + set_reading = 1; + reading_file = &v->fileinfo; + } + + if (v->expanding) + { + if (!v->exp_count) + /* Expanding V causes infinite recursion. Lose. */ + OS (fatal, *expanding_var, + _("Recursive variable '%s' references itself (eventually)"), + v->name); + --v->exp_count; + } + + if (file) + { + save = current_variable_set_list; + current_variable_set_list = file->variables; + } + + v->expanding = 1; + if (v->append) + value = allocated_variable_append (v); + else + value = allocated_variable_expand (v->value); + v->expanding = 0; + + if (set_reading) + reading_file = 0; + + if (file) + current_variable_set_list = save; + + expanding_var = saved_varp; + + return value; +} + +/* Expand a simple reference to variable NAME, which is LENGTH chars long. */ + +#ifdef __GNUC__ +__inline +#endif +static char * +reference_variable (char *o, const char *name, size_t length) +{ + struct variable *v; + char *value; + + v = lookup_variable (name, length); + + if (v == 0) + warn_undefined (name, length); + + /* If there's no variable by that name or it has no value, stop now. */ + if (v == 0 || (*v->value == '\0' && !v->append)) + return o; + + value = (v->recursive ? recursively_expand (v) : v->value); + + o = variable_buffer_output (o, value, strlen (value)); + + if (v->recursive) + free (value); + + return o; +} + +/* Scan STRING for variable references and expansion-function calls. Only + LENGTH bytes of STRING are actually scanned. If LENGTH is -1, scan until + a null byte is found. + + Write the results to LINE, which must point into 'variable_buffer'. If + LINE is NULL, start at the beginning of the buffer. + Return a pointer to LINE, or to the beginning of the buffer if LINE is + NULL. + */ +char * +variable_expand_string (char *line, const char *string, size_t length) +{ + struct variable *v; + const char *p, *p1; + char *save; + char *o; + size_t line_offset; + + if (!line) + line = initialize_variable_output (); + o = line; + line_offset = line - variable_buffer; + + if (length == 0) + { + variable_buffer_output (o, "", 1); + return variable_buffer; + } + + /* We need a copy of STRING: due to eval, it's possible that it will get + freed as we process it (it might be the value of a variable that's reset + for example). Also having a nil-terminated string is handy. */ + save = length == SIZE_MAX ? xstrdup (string) : xstrndup (string, length); + p = save; + + while (1) + { + /* Copy all following uninteresting chars all at once to the + variable output buffer, and skip them. Uninteresting chars end + at the next $ or the end of the input. */ + + p1 = strchr (p, '$'); + + o = variable_buffer_output (o, p, p1 != 0 ? (size_t) (p1 - p) : strlen (p) + 1); + + if (p1 == 0) + break; + p = p1 + 1; + + /* Dispatch on the char that follows the $. */ + + switch (*p) + { + case '$': + case '\0': + /* $$ or $ at the end of the string means output one $ to the + variable output buffer. */ + o = variable_buffer_output (o, p1, 1); + break; + + case '(': + case '{': + /* $(...) or ${...} is the general case of substitution. */ + { + char openparen = *p; + char closeparen = (openparen == '(') ? ')' : '}'; + const char *begp; + const char *beg = p + 1; + char *op; + char *abeg = NULL; + const char *end, *colon; + + op = o; + begp = p; + if (handle_function (&op, &begp)) + { + o = op; + p = begp; + break; + } + + /* Is there a variable reference inside the parens or braces? + If so, expand it before expanding the entire reference. */ + + end = strchr (beg, closeparen); + if (end == 0) + /* Unterminated variable reference. */ + O (fatal, *expanding_var, _("unterminated variable reference")); + p1 = lindex (beg, end, '$'); + if (p1 != 0) + { + /* BEG now points past the opening paren or brace. + Count parens or braces until it is matched. */ + int count = 0; + for (p = beg; *p != '\0'; ++p) + { + if (*p == openparen) + ++count; + else if (*p == closeparen && --count < 0) + break; + } + /* If COUNT is >= 0, there were unmatched opening parens + or braces, so we go to the simple case of a variable name + such as '$($(a)'. */ + if (count < 0) + { + abeg = expand_argument (beg, p); /* Expand the name. */ + beg = abeg; + end = strchr (beg, '\0'); + } + } + else + /* Advance P to the end of this reference. After we are + finished expanding this one, P will be incremented to + continue the scan. */ + p = end; + + /* This is not a reference to a built-in function and + any variable references inside are now expanded. + Is the resultant text a substitution reference? */ + + colon = lindex (beg, end, ':'); + if (colon) + { + /* This looks like a substitution reference: $(FOO:A=B). */ + const char *subst_beg = colon + 1; + const char *subst_end = lindex (subst_beg, end, '='); + if (subst_end == 0) + /* There is no = in sight. Punt on the substitution + reference and treat this as a variable name containing + a colon, in the code below. */ + colon = 0; + else + { + const char *replace_beg = subst_end + 1; + const char *replace_end = end; + + /* Extract the variable name before the colon + and look up that variable. */ + v = lookup_variable (beg, colon - beg); + if (v == 0) + warn_undefined (beg, colon - beg); + + /* If the variable is not empty, perform the + substitution. */ + if (v != 0 && *v->value != '\0') + { + char *pattern, *replace, *ppercent, *rpercent; + char *value = (v->recursive + ? recursively_expand (v) + : v->value); + + /* Copy the pattern and the replacement. Add in an + extra % at the beginning to use in case there + isn't one in the pattern. */ + pattern = alloca (subst_end - subst_beg + 2); + *(pattern++) = '%'; + memcpy (pattern, subst_beg, subst_end - subst_beg); + pattern[subst_end - subst_beg] = '\0'; + + replace = alloca (replace_end - replace_beg + 2); + *(replace++) = '%'; + memcpy (replace, replace_beg, + replace_end - replace_beg); + replace[replace_end - replace_beg] = '\0'; + + /* Look for %. Set the percent pointers properly + based on whether we find one or not. */ + ppercent = find_percent (pattern); + if (ppercent) + { + ++ppercent; + rpercent = find_percent (replace); + if (rpercent) + ++rpercent; + } + else + { + ppercent = pattern; + rpercent = replace; + --pattern; + --replace; + } + + o = patsubst_expand_pat (o, value, pattern, replace, + ppercent, rpercent); + + if (v->recursive) + free (value); + } + } + } + + if (colon == 0) + /* This is an ordinary variable reference. + Look up the value of the variable. */ + o = reference_variable (o, beg, end - beg); + + free (abeg); + } + break; + + default: + if (ISSPACE (p[-1])) + break; + + /* A $ followed by a random char is a variable reference: + $a is equivalent to $(a). */ + o = reference_variable (o, p, 1); + + break; + } + + if (*p == '\0') + break; + + ++p; + } + + free (save); + + variable_buffer_output (o, "", 1); + return (variable_buffer + line_offset); +} + +/* Scan LINE for variable references and expansion-function calls. + Build in 'variable_buffer' the result of expanding the references and calls. + Return the address of the resulting string, which is null-terminated + and is valid only until the next time this function is called. */ + +char * +variable_expand (const char *line) +{ + return variable_expand_string (NULL, line, SIZE_MAX); +} + +/* Expand an argument for an expansion function. + The text starting at STR and ending at END is variable-expanded + into a null-terminated string that is returned as the value. + This is done without clobbering 'variable_buffer' or the current + variable-expansion that is in progress. */ + +char * +expand_argument (const char *str, const char *end) +{ + char *tmp, *alloc = NULL; + char *r; + + if (str == end) + return xstrdup (""); + + if (!end || *end == '\0') + return allocated_variable_expand (str); + + if (end - str + 1 > 1000) + tmp = alloc = xmalloc (end - str + 1); + else + tmp = alloca (end - str + 1); + + memcpy (tmp, str, end - str); + tmp[end - str] = '\0'; + + r = allocated_variable_expand (tmp); + + free (alloc); + + return r; +} + +/* Expand LINE for FILE. Error messages refer to the file and line where + FILE's commands were found. Expansion uses FILE's variable set list. */ + +char * +variable_expand_for_file (const char *line, struct file *file) +{ + char *result; + struct variable_set_list *savev; + const floc *savef; + + if (file == 0) + return variable_expand (line); + + savev = current_variable_set_list; + current_variable_set_list = file->variables; + + savef = reading_file; + if (file->cmds && file->cmds->fileinfo.filenm) + reading_file = &file->cmds->fileinfo; + else + reading_file = 0; + + result = variable_expand (line); + + current_variable_set_list = savev; + reading_file = savef; + + return result; +} + +/* Like allocated_variable_expand, but for += target-specific variables. + First recursively construct the variable value from its appended parts in + any upper variable sets. Then expand the resulting value. */ + +static char * +variable_append (const char *name, size_t length, + const struct variable_set_list *set, int local) +{ + const struct variable *v; + char *buf = 0; + int nextlocal; + + /* If there's nothing left to check, return the empty buffer. */ + if (!set) + return initialize_variable_output (); + + /* If this set is local and the next is not a parent, then next is local. */ + nextlocal = local && set->next_is_parent == 0; + + /* Try to find the variable in this variable set. */ + v = lookup_variable_in_set (name, length, set->set); + + /* If there isn't one, or this one is private, try the set above us. */ + if (!v || (!local && v->private_var)) + return variable_append (name, length, set->next, nextlocal); + + /* If this variable type is append, first get any upper values. + If not, initialize the buffer. */ + if (v->append) + buf = variable_append (name, length, set->next, nextlocal); + else + buf = initialize_variable_output (); + + /* Append this value to the buffer, and return it. + If we already have a value, first add a space. */ + if (buf > variable_buffer) + buf = variable_buffer_output (buf, " ", 1); + + /* Either expand it or copy it, depending. */ + if (! v->recursive) + return variable_buffer_output (buf, v->value, strlen (v->value)); + + buf = variable_expand_string (buf, v->value, strlen (v->value)); + return (buf + strlen (buf)); +} + + +static char * +allocated_variable_append (const struct variable *v) +{ + char *val; + + /* Construct the appended variable value. */ + + char *obuf = variable_buffer; + size_t olen = variable_buffer_length; + + variable_buffer = 0; + + val = variable_append (v->name, strlen (v->name), + current_variable_set_list, 1); + variable_buffer_output (val, "", 1); + val = variable_buffer; + + variable_buffer = obuf; + variable_buffer_length = olen; + + return val; +} + +/* Like variable_expand_for_file, but the returned string is malloc'd. + This function is called a lot. It wants to be efficient. */ + +char * +allocated_variable_expand_for_file (const char *line, struct file *file) +{ + char *value; + + char *obuf = variable_buffer; + size_t olen = variable_buffer_length; + + variable_buffer = 0; + + value = variable_expand_for_file (line, file); + + variable_buffer = obuf; + variable_buffer_length = olen; + + return value; +} + +/* Install a new variable_buffer context, returning the current one for + safe-keeping. */ + +void +install_variable_buffer (char **bufp, size_t *lenp) +{ + *bufp = variable_buffer; + *lenp = variable_buffer_length; + + variable_buffer = 0; + initialize_variable_output (); +} + +/* Restore a previously-saved variable_buffer setting (free the current one). + */ + +void +restore_variable_buffer (char *buf, size_t len) +{ + free (variable_buffer); + + variable_buffer = buf; + variable_buffer_length = len; +} diff --git a/local/recipes/dev/gnu-make/source/src/file.c b/local/recipes/dev/gnu-make/source/src/file.c new file mode 100644 index 0000000000..226af61f44 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/file.c @@ -0,0 +1,1278 @@ +/* Target file management for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include + +#include "filedef.h" +#include "dep.h" +#include "job.h" +#include "commands.h" +#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 + don't add new rules (via $(eval ...)) afterwards. In the future it would + be nice to support this, but it means we'd need to re-run snap_deps() or + at least its functionality... it might mean changing snap_deps() to be run + per-file, so we can invoke it after the eval... or remembering which files + in the hash have been snapped (a new boolean flag?) and having snap_deps() + only work on files which have not yet been snapped. */ +int snapped_deps = 0; + +/* Hash table of files the makefile knows how to make. */ + +static unsigned long +file_hash_1 (const void *key) +{ + return_ISTRING_HASH_1 (((struct file const *) key)->hname); +} + +static unsigned long +file_hash_2 (const void *key) +{ + return_ISTRING_HASH_2 (((struct file const *) key)->hname); +} + +static int +file_hash_cmp (const void *x, const void *y) +{ + return_ISTRING_COMPARE (((struct file const *) x)->hname, + ((struct file const *) y)->hname); +} + +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. +*/ + +struct file * +lookup_file (const char *name) +{ + struct file *f; + struct file file_key; +#ifdef VMS + int want_vmsify; +#ifndef WANT_CASE_SENSITIVE_TARGETS + char *lname; +#endif +#endif + + assert (*name != '\0'); + + /* This is also done in parse_file_seq, so this is redundant + for names read from makefiles. It is here for names passed + on the command line. */ +#ifdef VMS + want_vmsify = (strpbrk (name, "]>:^") != NULL); +# ifndef WANT_CASE_SENSITIVE_TARGETS + if (*name != '.') + { + const char *n; + char *ln; + lname = xstrdup (name); + for (n = name, ln = lname; *n != '\0'; ++n, ++ln) + *ln = isupper ((unsigned char)*n) ? tolower ((unsigned char)*n) : *n; + *ln = '\0'; + name = lname; + } +# endif + + while (name[0] == '[' && name[1] == ']' && name[2] != '\0') + name += 2; + while (name[0] == '<' && name[1] == '>' && name[2] != '\0') + name += 2; +#endif + while (name[0] == '.' && ISDIRSEP (name[1]) && name[2] != '\0') + { + name += 2; + while (ISDIRSEP (*name)) + /* Skip following slashes: ".//foo" is "foo", not "/foo". */ + ++name; + } + + if (*name == '\0') + { + /* It was all slashes after a dot. */ +#if defined(_AMIGA) + name = ""; +#else + name = "./"; +#endif +#if defined(VMS) + /* TODO - This section is probably not needed. */ + if (want_vmsify) + name = "[]"; +#endif + } + file_key.hname = name; + f = hash_find_item (&files, &file_key); +#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS) + if (*name != '.') + free (lname); +#endif + + return f; +} + +/* Look up a file record for file NAME and return it. + Create a new record if one doesn't exist. NAME will be stored in the + new record so it should be constant or in the strcache etc. + */ + +struct file * +enter_file (const char *name) +{ + struct file *f; + struct file *new; + struct file **file_slot; + struct file file_key; + + assert (*name != '\0'); + assert (! verify_flag || strcache_iscached (name)); + +#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS) + if (*name != '.') + { + const char *n; + char *lname, *ln; + lname = xstrdup (name); + for (n = name, ln = lname; *n != '\0'; ++n, ++ln) + if (isupper ((unsigned char)*n)) + *ln = tolower ((unsigned char)*n); + else + *ln = *n; + + *ln = '\0'; + name = strcache_add (lname); + free (lname); + } +#endif + + file_key.hname = name; + file_slot = (struct file **) hash_find_slot (&files, &file_key); + f = *file_slot; + if (! HASH_VACANT (f) && !f->double_colon) + { + f->builtin = 0; + return f; + } + + new = xcalloc (sizeof (struct file)); + new->name = new->hname = name; + new->update_status = us_none; + + if (HASH_VACANT (f)) + { + new->last = new; + hash_insert_at (&files, new, file_slot); + } + else + { + /* There is already a double-colon entry for this file. */ + new->double_colon = f; + f->last->prev = new; + f->last = new; + } + + return new; +} + +/* Rehash FILE to NAME. This is not as simple as resetting + the 'hname' member, since it must be put in a new hash bucket, + and possibly merged with an existing file called NAME. */ + +void +rehash_file (struct file *from_file, const char *to_hname) +{ + struct file file_key; + struct file **file_slot; + struct file *to_file; + struct file *deleted_file; + struct file *f; + + /* If it's already that name, we're done. */ + from_file->builtin = 0; + file_key.hname = to_hname; + if (! file_hash_cmp (from_file, &file_key)) + return; + + /* Find the end of the renamed list for the "from" file. */ + file_key.hname = from_file->hname; + while (from_file->renamed != 0) + from_file = from_file->renamed; + if (file_hash_cmp (from_file, &file_key)) + /* hname changed unexpectedly!! */ + abort (); + + /* Remove the "from" file from the hash. */ + deleted_file = hash_delete (&files, from_file); + if (deleted_file != from_file) + /* from_file isn't the one stored in files */ + abort (); + + /* Find where the newly renamed file will go in the hash. */ + file_key.hname = to_hname; + file_slot = (struct file **) hash_find_slot (&files, &file_key); + to_file = *file_slot; + + /* Change the hash name for this file. */ + from_file->hname = to_hname; + for (f = from_file->double_colon; f != 0; f = f->prev) + f->hname = to_hname; + + /* If the new name doesn't exist yet just set it to the renamed file. */ + if (HASH_VACANT (to_file)) + { + hash_insert_at (&files, from_file, file_slot); + return; + } + + /* TO_FILE already exists under TO_HNAME. + We must retain TO_FILE and merge FROM_FILE into it. */ + + if (from_file->cmds != 0) + { + if (to_file->cmds == 0) + to_file->cmds = from_file->cmds; + else if (from_file->cmds != to_file->cmds) + { + size_t l = strlen (from_file->name); + /* We have two sets of commands. We will go with the + 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, 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,"), + from_file->name); + l += strlen (to_hname); + error (&from_file->cmds->fileinfo, l, + _("but '%s' is now considered the same file as '%s'."), + from_file->name, to_hname); + error (&from_file->cmds->fileinfo, l, + _("Recipe for '%s' will be ignored in favor of the one for '%s'."), + from_file->name, to_hname); + } + } + + /* Merge the dependencies of the two files. */ + + if (to_file->deps == 0) + to_file->deps = from_file->deps; + else + { + struct dep *deps = to_file->deps; + while (deps->next != 0) + deps = deps->next; + deps->next = from_file->deps; + } + + merge_variable_set_lists (&to_file->variables, from_file->variables); + + if (to_file->double_colon && from_file->is_target && !from_file->double_colon) + OSS (fatal, NILF, _("can't rename single-colon '%s' to double-colon '%s'"), + from_file->name, to_hname); + if (!to_file->double_colon && from_file->double_colon) + { + if (to_file->is_target) + OSS (fatal, NILF, + _("can't rename double-colon '%s' to single-colon '%s'"), + from_file->name, to_hname); + else + to_file->double_colon = from_file->double_colon; + } + + if (from_file->last_mtime > to_file->last_mtime) + /* %%% Kludge so -W wins on a file that gets vpathized. */ + to_file->last_mtime = from_file->last_mtime; + + to_file->mtime_before_update = from_file->mtime_before_update; + +#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); + /* 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; + from_file->renamed = to_file; +} + +/* Rename FILE to NAME. This is not as simple as resetting + the 'name' member, since it must be put in a new hash bucket, + and possibly merged with an existing file called NAME. */ + +void +rename_file (struct file *from_file, const char *to_hname) +{ + rehash_file (from_file, to_hname); + while (from_file) + { + from_file->name = from_file->hname; + from_file = from_file->prev; + } +} + +/* Remove all nonprecious intermediate files. + If SIG is nonzero, this was caused by a fatal signal, + meaning that a different message will be printed, and + the message will go to stderr rather than stdout. */ + +void +remove_intermediates (int sig) +{ + struct file **file_slot; + struct file **file_end; + int doneany = 0; + + /* If there's no way we will ever remove anything anyway, punt early. */ + if (question_flag || touch_flag || all_secondary) + return; + + if (sig && just_print_flag) + return; + + file_slot = (struct file **) files.ht_vec; + file_end = file_slot + files.ht_size; + for ( ; file_slot < file_end; file_slot++) + if (! HASH_VACANT (*file_slot)) + { + struct file *f = *file_slot; + /* Is this file eligible for automatic deletion? + Yes, IFF: it's marked intermediate, it's not secondary, it wasn't + 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->notintermediate && !f->cmd_target) + { + int status; + if (f->update_status == us_none) + /* If nothing would have created this file yet, + don't print an "rm" command for it. */ + continue; + if (just_print_flag) + status = 0; + else + { + status = unlink (f->name); + if (status < 0 && errno == ENOENT) + continue; + } + if (!f->dontcare) + { + if (sig) + OS (error, NILF, + _("*** Deleting intermediate file '%s'"), f->name); + else + { + if (! doneany) + DB (DB_BASIC, (_("Removing intermediate files...\n"))); + if (!run_silent) + { + if (! doneany) + { + fputs ("rm ", stdout); + doneany = 1; + } + else + putchar (' '); + fputs (f->name, stdout); + fflush (stdout); + } + } + if (status < 0) + { + perror_with_name ("\nunlink: ", f->name); + /* Start printing over. */ + doneany = 0; + } + } + } + } + + if (doneany && !sig) + { + putchar ('\n'); + fflush (stdout); + } +} + +/* Given a string containing prerequisites (fully expanded), break it up into + a struct dep list. Enter each of these prereqs into the file database. + */ +struct dep * +split_prereqs (char *p) +{ + struct dep *new = PARSE_FILE_SEQ (&p, struct dep, MAP_PIPE, NULL, PARSEFS_WAIT); + + if (*p) + { + /* Files that follow '|' are "order-only" prerequisites that satisfy the + dependency by existing: their modification times are irrelevant. */ + struct dep *ood; + + ++p; + ood = PARSE_FILE_SEQ (&p, struct dep, MAP_NUL, NULL, PARSEFS_WAIT); + + if (! new) + new = ood; + else + { + struct dep *dp; + for (dp = new; dp->next != NULL; dp = dp->next) + ; + dp->next = ood; + } + + for (; ood != NULL; ood = ood->next) + ood->ignore_mtime = 1; + } + + return new; +} + +/* Given a list of prerequisites, enter them into the file database. + If STEM is set then first expand patterns using STEM. */ +struct dep * +enter_prereqs (struct dep *deps, const char *stem) +{ + struct dep *d1; + + if (deps == 0) + return 0; + + /* If we have a stem, expand the %'s. We use patsubst_expand to translate + the prerequisites' patterns into plain prerequisite names. */ + if (stem) + { + const char *pattern = "%"; + struct dep *dp = deps, *dl = 0; + + while (dp != 0) + { + char *percent; + size_t nl = strlen (dp->name) + 1; + char *nm = alloca (nl); + memcpy (nm, dp->name, nl); + percent = find_percent (nm); + if (percent) + { + char *o; + + /* We have to handle empty stems specially, because that + would be equivalent to $(patsubst %,dp->name,) which + will always be empty. */ + if (stem[0] == '\0') + { + memmove (percent, percent+1, strlen (percent)); + o = variable_buffer_output (variable_buffer, nm, + strlen (nm) + 1); + } + else + o = patsubst_expand_pat (variable_buffer, stem, pattern, nm, + pattern+1, percent+1); + + /* If the name expanded to the empty string, ignore it. */ + if (variable_buffer[0] == '\0') + { + struct dep *df = dp; + if (dp == deps) + dp = deps = deps->next; + else + dp = dl->next = dp->next; + free_dep (df); + continue; + } + + /* Save the name. */ + dp->name = strcache_add_len (variable_buffer, + o - variable_buffer); + } + dp->stem = stem; + dp->staticpattern = 1; + dl = dp; + dp = dp->next; + } + } + + /* Enter them as files, unless they need a 2nd expansion. */ + for (d1 = deps; d1 != 0; d1 = d1->next) + { + if (d1->need_2nd_expansion) + continue; + + d1->file = lookup_file (d1->name); + if (d1->file == 0) + 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. + 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 *fstem; + int initialized = 0; + int changed_dep = 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. */ + dp = &f->deps; + d = f->deps; + while (d != 0) + { + char *p; + struct dep *new, *next; + + if (! d->name || ! d->need_2nd_expansion) + { + /* This one is all set already. */ + dp = &d->next; + d = d->next; + continue; + } + + /* If it's from a static pattern rule, convert the initial pattern in + each word to "$*" so they'll expand properly. */ + if (d->staticpattern) + { + 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 + the file. Since the stem for static pattern rules comes from + individual dep lines, we will temporarily set f->stem to d->stem. */ + if (!initialized) + { + initialize_file_variables (f, 0); + initialized = 1; + } + + set_file_variables (f, d->stem ? d->stem : f->stem); + + /* Perform second expansion. */ + p = variable_expand_for_file (d->name, f); + + /* Free the un-expanded name. */ + free ((char*)d->name); + + /* Parse the prerequisites and enter them into the file database. */ + 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, 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. */ + +struct dep * +expand_extra_prereqs (const struct variable *extra) +{ + struct dep *d; + struct dep *prereqs = extra ? split_prereqs (variable_expand (extra->value)) : NULL; + + for (d = prereqs; d; d = d->next) + { + d->file = lookup_file (d->name); + if (!d->file) + d->file = enter_file (d->name); + d->name = NULL; + d->ignore_automatic_vars = 1; + } + + return prereqs; +} + +/* Perform per-file snap operations. */ + +static void +snap_file (const void *item, void *arg) +{ + struct file *f = (struct file*)item; + struct dep *prereqs = NULL; + + /* If we're not doing second expansion then reset updating. */ + if (!second_expansion) + f->updating = 0; + + /* 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)); + + else if (f->is_target) + prereqs = copy_dep_chain (arg); + + if (prereqs) + { + struct dep *d; + for (d = prereqs; d; d = d->next) + if (streq (f->name, dep_name (d))) + /* Skip circular dependencies. */ + break; + + if (d) + /* We broke early: must have found a circular dependency. */ + free_dep_chain (prereqs); + else if (!f->deps) + f->deps = prereqs; + else + { + d = f->deps; + while (d->next) + d = d->next; + d->next = prereqs; + } + } +} + +/* Mark the files depended on by .PRECIOUS, .PHONY, .SILENT, + and various other special targets. */ + +void +snap_deps (void) +{ + struct file *f; + struct file *f2; + struct dep *d; + + /* Remember that we've done this. Once we start snapping deps we can no + longer define new targets. */ + snapped_deps = 1; + + /* Now manage all the special targets. */ + + for (f = lookup_file (".PRECIOUS"); f != 0; f = f->prev) + for (d = f->deps; d != 0; d = d->next) + for (f2 = d->file; f2 != 0; f2 = f2->prev) + f2->precious = 1; + + for (f = lookup_file (".LOW_RESOLUTION_TIME"); f != 0; f = f->prev) + for (d = f->deps; d != 0; d = d->next) + for (f2 = d->file; f2 != 0; f2 = f2->prev) + f2->low_resolution_time = 1; + + for (f = lookup_file (".PHONY"); f != 0; f = f->prev) + for (d = f->deps; d != 0; d = d->next) + for (f2 = d->file; f2 != 0; f2 = f2->prev) + { + /* Mark this file as phony nonexistent target. */ + f2->phony = 1; + f2->is_target = 1; + f2->last_mtime = NONEXISTENT_MTIME; + 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) + 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. */ + + for (f = lookup_file (".SECONDARY"); f != 0; f = f->prev) + /* Mark .SECONDARY deps as both intermediate and secondary. */ + 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; + + f = lookup_file (".IGNORE"); + if (f != 0 && f->is_target) + { + if (f->deps == 0) + ignore_errors_flag = 1; + else + for (d = f->deps; d != 0; d = d->next) + for (f2 = d->file; f2 != 0; f2 = f2->prev) + f2->command_flags |= COMMANDS_NOERROR; + } + + f = lookup_file (".SILENT"); + if (f != 0 && f->is_target) + { + if (f->deps == 0) + run_silent = 1; + else + for (d = f->deps; d != 0; d = d->next) + for (f2 = d->file; f2 != 0; f2 = f2->prev) + f2->command_flags |= COMMANDS_SILENT; + } + + f = lookup_file (".NOTPARALLEL"); + if (f != 0 && f->is_target) + { + 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"))); + + /* Perform per-file snap operations. */ + hash_map_arg(&files, snap_file, prereqs); + + free_dep_chain (prereqs); + } + +#ifndef NO_MINUS_C_MINUS_O + /* If .POSIX was defined, remove OUTPUT_OPTION to comply. */ + /* This needs more work: what if the user sets this in the makefile? + if (posix_pedantic) + define_variable_cname ("OUTPUT_OPTION", "", o_default, 1); + */ +#endif +} + +/* Set the 'command_state' member of FILE and all its 'also_make's. + Don't decrease the state of also_make's (e.g., don't downgrade a 'running' + also_make to a 'deps_running' also_make). */ + +void +set_command_state (struct file *file, enum cmd_state state) +{ + struct dep *d; + + file->command_state = state; + + for (d = file->also_make; d != 0; d = d->next) + if (state > d->file->command_state) + d->file->command_state = state; +} + +/* Convert an external file timestamp to internal form. */ + +FILE_TIMESTAMP +file_timestamp_cons (const char *fname, time_t stamp, long int ns) +{ + int offset = ORDINARY_MTIME_MIN + (FILE_TIMESTAMP_HI_RES ? ns : 0); + FILE_TIMESTAMP s = stamp; + FILE_TIMESTAMP product = (FILE_TIMESTAMP) s << FILE_TIMESTAMP_LO_BITS; + FILE_TIMESTAMP ts = product + offset; + + if (! (s <= FILE_TIMESTAMP_S (ORDINARY_MTIME_MAX) + && product <= ts && ts <= ORDINARY_MTIME_MAX)) + { + char buf[FILE_TIMESTAMP_PRINT_LEN_BOUND + 1]; + const char *f = fname ? fname : _("Current time"); + ts = s <= OLD_MTIME ? ORDINARY_MTIME_MIN : ORDINARY_MTIME_MAX; + file_timestamp_sprintf (buf, ts); + OSS (error, NILF, + _("%s: Timestamp out of range; substituting %s"), f, buf); + } + + return ts; +} + +/* Return the current time as a file timestamp, setting *RESOLUTION to + its resolution. */ +FILE_TIMESTAMP +file_timestamp_now (int *resolution) +{ + int r; + time_t s; + int ns; + + /* Don't bother with high-resolution clocks if file timestamps have + only one-second resolution. The code below should work, but it's + not worth the hassle of debugging it on hosts where it fails. */ +#if FILE_TIMESTAMP_HI_RES +# if HAVE_CLOCK_GETTIME && defined CLOCK_REALTIME + { + struct timespec timespec; + if (clock_gettime (CLOCK_REALTIME, ×pec) == 0) + { + r = 1; + s = timespec.tv_sec; + ns = timespec.tv_nsec; + goto got_time; + } + } +# endif +# if HAVE_GETTIMEOFDAY + { + struct timeval timeval; + if (gettimeofday (&timeval, 0) == 0) + { + r = 1000; + s = timeval.tv_sec; + ns = timeval.tv_usec * 1000; + goto got_time; + } + } +# endif +#endif + + r = 1000000000; + s = time ((time_t *) 0); + ns = 0; + +#if FILE_TIMESTAMP_HI_RES + got_time: +#endif + *resolution = r; + return file_timestamp_cons (0, s, ns); +} + +/* Place into the buffer P a printable representation of the file + timestamp TS. */ +void +file_timestamp_sprintf (char *p, FILE_TIMESTAMP ts) +{ + time_t t = FILE_TIMESTAMP_S (ts); + struct tm *tm = localtime (&t); + + if (tm) + { + 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, "%" PRIdMAX, (intmax_t) t); + else + sprintf (p, "%" PRIuMAX, (uintmax_t) t); + p += strlen (p); + + /* Append nanoseconds as a fraction, but remove trailing zeros. We don't + know the actual timestamp resolution, since clock_getres applies only to + local times, whereas this timestamp might come from a remote filesystem. + So removing trailing zeros is the best guess that we can do. */ + sprintf (p, ".%09d", FILE_TIMESTAMP_NS (ts)); + p += strlen (p) - 1; + while (*p == '0') + p--; + p += *p != '.'; + + *p = '\0'; +} + +/* Print the data base of files. */ + +void +print_prereqs (const struct dep *deps) +{ + const struct dep *ood = 0; + + /* Print all normal dependencies; note any order-only deps. */ + for (; deps != 0; deps = deps->next) + if (! deps->ignore_mtime) + 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%s", ood->wait_here ? ".WAIT " : "", dep_name (ood)); + for (ood = ood->next; ood != 0; ood = ood->next) + if (ood->ignore_mtime) + printf (" %s%s", ood->wait_here ? ".WAIT " : "", dep_name (ood)); + } + + putchar ('\n'); +} + +static void +print_file (const void *item) +{ + const struct file *f = item; + + /* If we're not using builtin targets, don't show them. + + Ideally we'd be able to delete them altogether but currently there's no + facility to ever delete a file once it's been added. */ + if (no_builtin_rules_flag && f->builtin) + return; + + putchar ('\n'); + + if (f->cmds && f->cmds->recipe_prefix != cmd_prefix) + { + fputs (".RECIPEPREFIX = ", stdout); + cmd_prefix = f->cmds->recipe_prefix; + if (cmd_prefix != RECIPEPREFIX_DEFAULT) + putchar (cmd_prefix); + putchar ('\n'); + } + + if (f->variables != 0) + print_target_variables (f); + + if (!f->is_target) + puts (_("# Not a target:")); + printf ("%s:%s", f->name, f->double_colon ? ":" : ""); + print_prereqs (f->deps); + + if (f->precious) + puts (_("# Precious file (prerequisite of .PRECIOUS).")); + if (f->phony) + puts (_("# Phony target (prerequisite of .PHONY).")); + if (f->cmd_target) + puts (_("# Command line target.")); + if (f->dontcare) + puts (_("# A default, MAKEFILES, or -include/sinclude makefile.")); + if (f->builtin) + puts (_("# Builtin rule")); + puts (f->tried_implicit + ? _("# Implicit rule search has been done.") + : _("# Implicit rule search has not been done.")); + if (f->stem != 0) + 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; + fputs (_("# Also makes:"), stdout); + for (d = f->also_make; d != 0; d = d->next) + printf (" %s", dep_name (d)); + putchar ('\n'); + } + if (f->last_mtime == UNKNOWN_MTIME) + puts (_("# Modification time never checked.")); + else if (f->last_mtime == NONEXISTENT_MTIME) + puts (_("# File does not exist.")); + else if (f->last_mtime == OLD_MTIME) + puts (_("# File is very old.")); + else + { + char buf[FILE_TIMESTAMP_PRINT_LEN_BOUND + 1]; + file_timestamp_sprintf (buf, f->last_mtime); + printf (_("# Last modified %s\n"), buf); + } + puts (f->updated + ? _("# File has been updated.") : _("# File has not been updated.")); + switch (f->command_state) + { + case cs_running: + puts (_("# Recipe currently running (THIS IS A BUG).")); + break; + case cs_deps_running: + puts (_("# Dependencies recipe running (THIS IS A BUG).")); + break; + case cs_not_started: + case cs_finished: + switch (f->update_status) + { + case us_none: + break; + case us_success: + puts (_("# Successfully updated.")); + break; + case us_question: + assert (question_flag); + puts (_("# Needs to be updated (-q is set).")); + break; + case us_failed: + puts (_("# Failed to be updated.")); + break; + } + break; + default: + puts (_("# Invalid value in 'command_state' member!")); + fflush (stdout); + fflush (stderr); + abort (); + } + + if (f->variables != 0) + print_file_variables (f); + + if (f->cmds != 0) + print_commands (f->cmds); + + if (f->prev) + print_file ((const void *) f->prev); +} + +void +print_file_data_base (void) +{ + puts (_("\n# Files")); + + hash_map (&files, print_file); + + fputs (_("\n# files hash-table stats:\n# "), stdout); + hash_print_stats (&files, stdout); +} + +/* Verify the integrity of the data base of files. */ + +#define VERIFY_CACHED(_p,_n) \ + do{ \ + if (_p->_n && _p->_n[0] && !strcache_iscached (_p->_n)) \ + error (NULL, strlen (_p->name) + CSTRLEN (# _n) + strlen (_p->_n), \ + _("%s: Field '%s' not cached: %s"), _p->name, # _n, _p->_n); \ + }while(0) + +static void +verify_file (const void *item) +{ + const struct file *f = item; + const struct dep *d; + + VERIFY_CACHED (f, name); + VERIFY_CACHED (f, hname); + VERIFY_CACHED (f, vpath); + VERIFY_CACHED (f, stem); + + /* Check the deps. */ + for (d = f->deps; d != 0; d = d->next) + { + if (! d->need_2nd_expansion) + VERIFY_CACHED (d, name); + VERIFY_CACHED (d, stem); + } +} + +void +verify_file_data_base (void) +{ + hash_map (&files, verify_file); +} + +#define EXPANSION_INCREMENT(_l) ((((_l) / 500) + 1) * 500) + +char * +build_target_list (char *value) +{ + static unsigned long last_targ_count = 0; + + if (files.ht_fill != last_targ_count) + { + size_t max = EXPANSION_INCREMENT (strlen (value)); + size_t len; + char *p; + struct file **fp = (struct file **) files.ht_vec; + struct file **end = &fp[files.ht_size]; + + /* Make sure we have at least MAX bytes in the allocated buffer. */ + value = xrealloc (value, max); + + p = value; + len = 0; + for (; fp < end; ++fp) + if (!HASH_VACANT (*fp) && (*fp)->is_target) + { + struct file *f = *fp; + size_t l = strlen (f->name); + + len += l + 1; + if (len > max) + { + size_t off = p - value; + + max += EXPANSION_INCREMENT (l + 1); + value = xrealloc (value, max); + p = &value[off]; + } + + p = mempcpy (p, f->name, l); + *(p++) = ' '; + } + *(p-1) = '\0'; + + last_targ_count = files.ht_fill; + } + + return value; +} + +void +init_hash_files (void) +{ + hash_init (&files, 1000, file_hash_1, file_hash_2, file_hash_cmp); +} + +/* EOF */ diff --git a/local/recipes/dev/gnu-make/source/src/filedef.h b/local/recipes/dev/gnu-make/source/src/filedef.h new file mode 100644 index 0000000000..ae2f26ddad --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/filedef.h @@ -0,0 +1,229 @@ +/* Definition of target file data structures for GNU Make. +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 +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 . */ + + +/* Structure that represents the info on one file + that the makefile says how to make. + All of these are chained together through 'next'. */ + +#include "hash.h" + +struct commands; +struct dep; +struct variable; +struct variable_set_list; + +struct file + { + const char *name; + const char *hname; /* Hashed filename */ + const char *vpath; /* VPATH/vpath pathname */ + struct dep *deps; /* all dependencies, including duplicates */ + struct commands *cmds; /* Commands to execute for this target. */ + const char *stem; /* Implicit stem, if an implicit + rule has been used */ + struct dep *also_make; /* Targets that are made by making this. */ + struct file *prev; /* Previous entry for same file name; + used when there are multiple double-colon + entries for the same file. */ + struct file *last; /* Last entry for the same file name. */ + + /* File that this file was renamed to. After any time that a + file could be renamed, call 'check_renamed' (below). */ + struct file *renamed; + + /* List of variable sets used for this file. */ + struct variable_set_list *variables; + + /* Pattern-specific variable reference for this target, or null if there + isn't one. Also see the pat_searched flag, below. */ + struct variable_set_list *pat_variables; + + /* Immediate dependent that caused this target to be remade, + or nil if there isn't one. */ + struct file *parent; + + /* For a double-colon entry, this is the first double-colon entry for + the same file. Otherwise this is null. */ + struct file *double_colon; + + FILE_TIMESTAMP last_mtime; /* File's modtime, if already known. */ + FILE_TIMESTAMP mtime_before_update; /* File's modtime before any updating + has been performed. */ + unsigned int considered; /* equal to 'considered' if file has been + considered on current scan of goal chain */ + int command_flags; /* Flags OR'd in for cmds; see commands.h. */ + enum update_status /* Status of the last attempt to update. */ + { + us_success = 0, /* Successfully updated. Must be 0! */ + us_none, /* No attempt to update has been made. */ + us_question, /* Needs to be updated (-q is is set). */ + us_failed /* Update failed. */ + } update_status ENUM_BITFIELD (2); + enum cmd_state /* State of commands. ORDER IS IMPORTANT! */ + { + cs_not_started = 0, /* Not yet started. Must be 0! */ + cs_deps_running, /* Dep commands running. */ + cs_running, /* Commands running. */ + cs_finished /* Commands finished. */ + } command_state ENUM_BITFIELD (2); + + 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 + for implicit rule for making + this file; don't search again. */ + unsigned int updating:1; /* Nonzero while updating deps of this file */ + unsigned int updated:1; /* Nonzero if this file has been remade. */ + unsigned int is_target:1; /* Nonzero if file is described as target. */ + unsigned int cmd_target:1; /* Nonzero if file was given on cmd line. */ + 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. */ + unsigned int pat_searched:1;/* Nonzero if we already searched for + 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. */ + }; + + +extern struct file *default_file; + + +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); +void rename_file (struct file *file, const char *name); +void rehash_file (struct file *file, const char *name); +void set_command_state (struct file *file, enum cmd_state state); +void notice_finished_file (struct file *file); +void init_hash_files (void); +void verify_file_data_base (void); +char *build_target_list (char *old_list); +void print_prereqs (const struct dep *deps); +void print_file_data_base (void); +int try_implicit_rule (struct file *file, unsigned int depth); +int stemlen_compare (const void *v1, const void *v2); + +#if FILE_TIMESTAMP_HI_RES +# define FILE_TIMESTAMP_STAT_MODTIME(fname, st) \ + file_timestamp_cons (fname, (st).st_mtime, (st).ST_MTIM_NSEC) +#else +# define FILE_TIMESTAMP_STAT_MODTIME(fname, st) \ + file_timestamp_cons (fname, (st).st_mtime, 0) +#endif + +/* If FILE_TIMESTAMP is 64 bits (or more), use nanosecond resolution. + (Multiply by 2**30 instead of by 10**9 to save time at the cost of + slightly decreasing the number of available timestamps.) With + 64-bit FILE_TIMESTAMP, this stops working on 2514-05-30 01:53:04 + UTC, but by then uintmax_t should be larger than 64 bits. */ +#define FILE_TIMESTAMPS_PER_S (FILE_TIMESTAMP_HI_RES ? 1000000000 : 1) +#define FILE_TIMESTAMP_LO_BITS (FILE_TIMESTAMP_HI_RES ? 30 : 0) + +#define FILE_TIMESTAMP_S(ts) (((ts) - ORDINARY_MTIME_MIN) \ + >> FILE_TIMESTAMP_LO_BITS) +#define FILE_TIMESTAMP_NS(ts) ((int) (((ts) - ORDINARY_MTIME_MIN) \ + & ((1 << FILE_TIMESTAMP_LO_BITS) - 1))) + +/* Upper bound on length of string "YYYY-MM-DD HH:MM:SS.NNNNNNNNN" + representing a file timestamp. The upper bound is not necessarily 29, + since the year might be less than -999 or greater than 9999. + + Subtract one for the sign bit if in case file timestamps can be negative; + subtract FLOOR_LOG2_SECONDS_PER_YEAR to yield an upper bound on how many + file timestamp bits might affect the year; + 302 / 1000 is log10 (2) rounded up; + add one for integer division truncation; + add one more for a minus sign if file timestamps can be negative; + add 4 to allow for any 4-digit epoch year (e.g. 1970); + add 25 to allow for "-MM-DD HH:MM:SS.NNNNNNNNN". */ +#define FLOOR_LOG2_SECONDS_PER_YEAR 24 +#define FILE_TIMESTAMP_PRINT_LEN_BOUND \ + (((sizeof (FILE_TIMESTAMP) * CHAR_BIT - 1 - FLOOR_LOG2_SECONDS_PER_YEAR) \ + * 302 / 1000) \ + + 1 + 1 + 4 + 25) + +FILE_TIMESTAMP file_timestamp_cons (char const *, time_t, long int); +FILE_TIMESTAMP file_timestamp_now (int *); +void file_timestamp_sprintf (char *p, FILE_TIMESTAMP ts); + +/* Return the mtime of file F (a struct file *), caching it. + The value is NONEXISTENT_MTIME if the file does not exist. */ +#define file_mtime(f) file_mtime_1 ((f), 1) +/* Return the mtime of file F (a struct file *), caching it. + Don't search using vpath for the file--if it doesn't actually exist, + we don't find it. + The value is NONEXISTENT_MTIME if the file does not exist. */ +#define file_mtime_no_search(f) file_mtime_1 ((f), 0) +FILE_TIMESTAMP f_mtime (struct file *file, int search); +#define file_mtime_1(f, v) \ + ((f)->last_mtime == UNKNOWN_MTIME ? f_mtime ((f), v) : (f)->last_mtime) + +/* Special timestamp values. */ + +/* The file's timestamp is not yet known. */ +#define UNKNOWN_MTIME 0 + +/* The file does not exist. */ +#define NONEXISTENT_MTIME 1 + +/* The file does not exist, and we assume that it is older than any + actual file. */ +#define OLD_MTIME 2 + +/* The smallest and largest ordinary timestamps. */ +#define ORDINARY_MTIME_MIN (OLD_MTIME + 1) +#define ORDINARY_MTIME_MAX ((FILE_TIMESTAMP_S (NEW_MTIME) \ + << 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 + different ideas about what time it is; and can also lose for 'force' + targets, which need to be considered newer than anything that depends on + them, even if said dependents' modtimes are in the future. */ +#define NEW_MTIME INTEGER_TYPE_MAXIMUM (FILE_TIMESTAMP) + +#define check_renamed(file) \ + while ((file)->renamed != 0) (file) = (file)->renamed /* No ; here. */ + +/* Have we snapped deps yet? */ +extern int snapped_deps; diff --git a/local/recipes/dev/gnu-make/source/src/function.c b/local/recipes/dev/gnu-make/source/src/function.c new file mode 100644 index 0000000000..f0ef34348d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/function.c @@ -0,0 +1,2826 @@ +/* Builtin function expansion for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include "filedef.h" +#include "variable.h" +#include "dep.h" +#include "job.h" +#include "os.h" +#include "commands.h" +#include "debug.h" + +#ifdef _AMIGA +#include "amiga.h" +#endif + + +struct function_table_entry + { + union { + char *(*func_ptr) (char *output, char **argv, const char *fname); + gmk_func_ptr alloc_func_ptr; + } fptr; + const char *name; + unsigned char len; + unsigned char minimum_args; + unsigned char maximum_args; + unsigned int expand_args:1; + unsigned int alloc_fn:1; + unsigned int adds_command:1; + }; + +static unsigned long +function_table_entry_hash_1 (const void *keyv) +{ + const struct function_table_entry *key = keyv; + return_STRING_N_HASH_1 (key->name, key->len); +} + +static unsigned long +function_table_entry_hash_2 (const void *keyv) +{ + const struct function_table_entry *key = keyv; + return_STRING_N_HASH_2 (key->name, key->len); +} + +static int +function_table_entry_hash_cmp (const void *xv, const void *yv) +{ + const struct function_table_entry *x = xv; + const struct function_table_entry *y = yv; + int result = x->len - y->len; + if (result) + return result; + return_STRING_N_COMPARE (x->name, y->name, x->len); +} + +static struct hash_table function_table; + + +/* Store into VARIABLE_BUFFER at O the result of scanning TEXT and replacing + each occurrence of SUBST with REPLACE. TEXT is null-terminated. SLEN is + the length of SUBST and RLEN is the length of REPLACE. If BY_WORD is + nonzero, substitutions are done only on matches which are complete + whitespace-delimited words. */ + +char * +subst_expand (char *o, const char *text, const char *subst, const char *replace, + size_t slen, size_t rlen, int by_word) +{ + const char *t = text; + const char *p; + + if (slen == 0 && !by_word) + { + /* The first occurrence of "" in any string is its end. */ + o = variable_buffer_output (o, t, strlen (t)); + if (rlen > 0) + o = variable_buffer_output (o, replace, rlen); + return o; + } + + do + { + if (by_word && slen == 0) + /* When matching by words, the empty string should match + the end of each word, rather than the end of the whole text. */ + p = end_of_token (next_token (t)); + else + { + p = strstr (t, subst); + if (p == 0) + { + /* No more matches. Output everything left on the end. */ + o = variable_buffer_output (o, t, strlen (t)); + return o; + } + } + + /* Output everything before this occurrence of the string to replace. */ + if (p > t) + o = variable_buffer_output (o, t, p - t); + + /* If we're substituting only by fully matched words, + or only at the ends of words, check that this case qualifies. */ + if (by_word + && ((p > text && !ISSPACE (p[-1])) + || ! STOP_SET (p[slen], MAP_SPACE|MAP_NUL))) + /* Struck out. Output the rest of the string that is + no longer to be replaced. */ + o = variable_buffer_output (o, subst, slen); + else if (rlen > 0) + /* Output the replacement string. */ + o = variable_buffer_output (o, replace, rlen); + + /* Advance T past the string to be replaced. */ + t = p + slen; + } while (*t != '\0'); + + return o; +} + + +/* Store into VARIABLE_BUFFER at O the result of scanning TEXT + and replacing strings matching PATTERN with REPLACE. + If PATTERN_PERCENT is not nil, PATTERN has already been + run through find_percent, and PATTERN_PERCENT is the result. + If REPLACE_PERCENT is not nil, REPLACE has already been + run through find_percent, and REPLACE_PERCENT is the result. + Note that we expect PATTERN_PERCENT and REPLACE_PERCENT to point to the + character _AFTER_ the %, not to the % itself. +*/ + +char * +patsubst_expand_pat (char *o, const char *text, + const char *pattern, const char *replace, + const char *pattern_percent, const char *replace_percent) +{ + size_t pattern_prepercent_len, pattern_postpercent_len; + size_t replace_prepercent_len, replace_postpercent_len; + const char *t; + size_t len; + int doneany = 0; + + /* Record the length of REPLACE before and after the % so we don't have to + compute these lengths more than once. */ + if (replace_percent) + { + replace_prepercent_len = replace_percent - replace - 1; + replace_postpercent_len = strlen (replace_percent); + } + else + { + replace_prepercent_len = strlen (replace); + replace_postpercent_len = 0; + } + + if (!pattern_percent) + /* With no % in the pattern, this is just a simple substitution. */ + return subst_expand (o, text, pattern, replace, + strlen (pattern), strlen (replace), 1); + + /* Record the length of PATTERN before and after the % + so we don't have to compute it more than once. */ + pattern_prepercent_len = pattern_percent - pattern - 1; + pattern_postpercent_len = strlen (pattern_percent); + + while ((t = find_next_token (&text, &len)) != 0) + { + int fail = 0; + + /* Is it big enough to match? */ + if (len < pattern_prepercent_len + pattern_postpercent_len) + fail = 1; + + /* Does the prefix match? */ + if (!fail && pattern_prepercent_len > 0 + && (*t != *pattern + || t[pattern_prepercent_len - 1] != pattern_percent[-2] + || !strneq (t + 1, pattern + 1, pattern_prepercent_len - 1))) + fail = 1; + + /* Does the suffix match? */ + if (!fail && pattern_postpercent_len > 0 + && (t[len - 1] != pattern_percent[pattern_postpercent_len - 1] + || t[len - pattern_postpercent_len] != *pattern_percent + || !strneq (&t[len - pattern_postpercent_len], + pattern_percent, pattern_postpercent_len - 1))) + fail = 1; + + if (fail) + /* It didn't match. Output the string. */ + o = variable_buffer_output (o, t, len); + else + { + /* It matched. Output the replacement. */ + + /* Output the part of the replacement before the %. */ + o = variable_buffer_output (o, replace, replace_prepercent_len); + + if (replace_percent != 0) + { + /* Output the part of the matched string that + matched the % in the pattern. */ + o = variable_buffer_output (o, t + pattern_prepercent_len, + len - (pattern_prepercent_len + + pattern_postpercent_len)); + /* Output the part of the replacement after the %. */ + o = variable_buffer_output (o, replace_percent, + replace_postpercent_len); + } + } + + /* Output a space, but not if the replacement is "". */ + if (fail || replace_prepercent_len > 0 + || (replace_percent != 0 && len + replace_postpercent_len > 0)) + { + o = variable_buffer_output (o, " ", 1); + doneany = 1; + } + } + if (doneany) + /* Kill the last space. */ + --o; + + return o; +} + +/* Store into VARIABLE_BUFFER at O the result of scanning TEXT + and replacing strings matching PATTERN with REPLACE. + If PATTERN_PERCENT is not nil, PATTERN has already been + run through find_percent, and PATTERN_PERCENT is the result. + If REPLACE_PERCENT is not nil, REPLACE has already been + run through find_percent, and REPLACE_PERCENT is the result. + Note that we expect PATTERN_PERCENT and REPLACE_PERCENT to point to the + character _AFTER_ the %, not to the % itself. +*/ + +char * +patsubst_expand (char *o, const char *text, char *pattern, char *replace) +{ + const char *pattern_percent = find_percent (pattern); + const char *replace_percent = find_percent (replace); + + /* If there's a percent in the pattern or replacement skip it. */ + if (replace_percent) + ++replace_percent; + if (pattern_percent) + ++pattern_percent; + + return patsubst_expand_pat (o, text, pattern, replace, + pattern_percent, replace_percent); +} + + +/* Look up a function by name. */ + +static const struct function_table_entry * +lookup_function (const char *s) +{ + struct function_table_entry function_table_entry_key; + const char *e = s; + + while (STOP_SET (*e, MAP_USERFUNC)) + e++; + + if (e == s || !STOP_SET(*e, MAP_NUL|MAP_SPACE)) + return NULL; + + function_table_entry_key.name = s; + function_table_entry_key.len = (unsigned char) (e - s); + + return hash_find_item (&function_table, &function_table_entry_key); +} + + +/* Return 1 if PATTERN matches STR, 0 if not. */ + +int +pattern_matches (const char *pattern, const char *percent, const char *str) +{ + size_t sfxlen, strlength; + + if (percent == 0) + { + size_t len = strlen (pattern) + 1; + char *new_chars = alloca (len); + memcpy (new_chars, pattern, len); + percent = find_percent (new_chars); + if (percent == 0) + return streq (new_chars, str); + pattern = new_chars; + } + + sfxlen = strlen (percent + 1); + strlength = strlen (str); + + if (strlength < (percent - pattern) + sfxlen + || !strneq (pattern, str, percent - pattern)) + return 0; + + return !strcmp (percent + 1, str + (strlength - sfxlen)); +} + + +/* Find the next comma or ENDPAREN (counting nested STARTPAREN and + ENDPARENtheses), starting at PTR before END. Return a pointer to + next character. + + If no next argument is found, return NULL. +*/ + +static char * +find_next_argument (char startparen, char endparen, + const char *ptr, const char *end) +{ + int count = 0; + + for (; ptr < end; ++ptr) + if (!STOP_SET (*ptr, MAP_VARSEP|MAP_COMMA)) + continue; + + else if (*ptr == startparen) + ++count; + + else if (*ptr == endparen) + { + --count; + if (count < 0) + return NULL; + } + + else if (*ptr == ',' && !count) + return (char *)ptr; + + /* We didn't find anything. */ + return NULL; +} + + +/* Glob-expand LINE. The returned pointer is + only good until the next call to string_glob. */ + +static char * +string_glob (char *line) +{ + static char *result = 0; + static size_t length; + struct nameseq *chain; + size_t idx; + + chain = PARSE_FILE_SEQ (&line, struct nameseq, MAP_NUL, NULL, + /* We do not want parse_file_seq to strip './'s. + That would break examples like: + $(patsubst ./%.c,obj/%.o,$(wildcard ./?*.c)). */ + PARSEFS_NOSTRIP|PARSEFS_NOCACHE|PARSEFS_EXISTS); + + if (result == 0) + { + length = 100; + result = xmalloc (100); + } + + idx = 0; + while (chain != 0) + { + struct nameseq *next = chain->next; + size_t len = strlen (chain->name); + + if (idx + len + 1 > length) + { + length += (len + 1) * 2; + result = xrealloc (result, length); + } + memcpy (&result[idx], chain->name, len); + idx += len; + result[idx++] = ' '; + + /* Because we used PARSEFS_NOCACHE above, we have to free() NAME. */ + free ((char *)chain->name); + free (chain); + chain = next; + } + + /* Kill the last space and terminate the string. */ + if (idx == 0) + result[0] = '\0'; + else + result[idx - 1] = '\0'; + + return result; +} + +/* + Builtin functions + */ + +static char * +func_patsubst (char *o, char **argv, const char *funcname UNUSED) +{ + o = patsubst_expand (o, argv[2], argv[0], argv[1]); + return o; +} + + +static char * +func_join (char *o, char **argv, const char *funcname UNUSED) +{ + int doneany = 0; + + /* Write each word of the first argument directly followed + by the corresponding word of the second argument. + If the two arguments have a different number of words, + the excess words are just output separated by blanks. */ + const char *tp; + const char *pp; + const char *list1_iterator = argv[0]; + const char *list2_iterator = argv[1]; + do + { + size_t len1, len2; + + tp = find_next_token (&list1_iterator, &len1); + if (tp != 0) + o = variable_buffer_output (o, tp, len1); + + pp = find_next_token (&list2_iterator, &len2); + if (pp != 0) + o = variable_buffer_output (o, pp, len2); + + if (tp != 0 || pp != 0) + { + o = variable_buffer_output (o, " ", 1); + doneany = 1; + } + } + while (tp != 0 || pp != 0); + if (doneany) + /* Kill the last blank. */ + --o; + + return o; +} + + +static char * +func_origin (char *o, char **argv, const char *funcname UNUSED) +{ + /* Expand the argument. */ + struct variable *v = lookup_variable (argv[0], strlen (argv[0])); + if (v == 0) + o = variable_buffer_output (o, "undefined", 9); + else + switch (v->origin) + { + case o_invalid: + abort (); + break; + case o_default: + o = variable_buffer_output (o, "default", 7); + break; + case o_env: + o = variable_buffer_output (o, "environment", 11); + break; + case o_file: + o = variable_buffer_output (o, "file", 4); + break; + case o_env_override: + o = variable_buffer_output (o, "environment override", 20); + break; + case o_command: + o = variable_buffer_output (o, "command line", 12); + break; + case o_override: + o = variable_buffer_output (o, "override", 8); + break; + case o_automatic: + o = variable_buffer_output (o, "automatic", 9); + break; + } + + return o; +} + +static char * +func_flavor (char *o, char **argv, const char *funcname UNUSED) +{ + struct variable *v = lookup_variable (argv[0], strlen (argv[0])); + + if (v == 0) + o = variable_buffer_output (o, "undefined", 9); + else + if (v->recursive) + o = variable_buffer_output (o, "recursive", 9); + else + o = variable_buffer_output (o, "simple", 6); + + return o; +} + + +static char * +func_notdir_suffix (char *o, char **argv, const char *funcname) +{ + /* Expand the argument. */ + const char *list_iterator = argv[0]; + const char *p2; + int doneany =0; + size_t len=0; + + int is_suffix = funcname[0] == 's'; + int is_notdir = !is_suffix; + int stop = MAP_DIRSEP | (is_suffix ? MAP_DOT : 0); +#ifdef VMS + /* For VMS list_iterator points to a comma separated list. To use the common + [find_]next_token, create a local copy and replace the commas with + spaces. Obviously, there is a problem if there is a ',' in the VMS filename + (can only happen on ODS5), the same problem as with spaces in filenames, + which seems to be present in make on all platforms. */ + char *vms_list_iterator = alloca(strlen(list_iterator) + 1); + int i; + for (i = 0; list_iterator[i]; i++) + if (list_iterator[i] == ',') + vms_list_iterator[i] = ' '; + else + vms_list_iterator[i] = list_iterator[i]; + vms_list_iterator[i] = list_iterator[i]; + while ((p2 = find_next_token((const char**) &vms_list_iterator, &len)) != 0) +#else + while ((p2 = find_next_token (&list_iterator, &len)) != 0) +#endif + { + const char *p = p2 + len - 1; + + while (p >= p2 && ! STOP_SET (*p, stop)) + --p; + + if (p >= p2) + { + if (is_notdir) + ++p; + else if (*p != '.') + continue; + o = variable_buffer_output (o, p, len - (p - p2)); + } +#ifdef HAVE_DOS_PATHS + /* Handle the case of "d:foo/bar". */ + else if (is_notdir && p2[0] && p2[1] == ':') + { + p = p2 + 2; + o = variable_buffer_output (o, p, len - (p - p2)); + } +#endif + else if (is_notdir) + o = variable_buffer_output (o, p2, len); + + if (is_notdir || p >= p2) + { +#ifdef VMS + if (vms_comma_separator) + o = variable_buffer_output (o, ",", 1); + else +#endif + o = variable_buffer_output (o, " ", 1); + + doneany = 1; + } + } + + if (doneany) + /* Kill last space. */ + --o; + + return o; +} + + +static char * +func_basename_dir (char *o, char **argv, const char *funcname) +{ + /* Expand the argument. */ + const char *p3 = argv[0]; + const char *p2; + int doneany = 0; + size_t len = 0; + + int is_basename = funcname[0] == 'b'; + int is_dir = !is_basename; + int stop = MAP_DIRSEP | (is_basename ? MAP_DOT : 0) | MAP_NUL; +#ifdef VMS + /* As in func_notdir_suffix ... */ + char *vms_p3 = alloca (strlen(p3) + 1); + int i; + for (i = 0; p3[i]; i++) + if (p3[i] == ',') + vms_p3[i] = ' '; + else + vms_p3[i] = p3[i]; + vms_p3[i] = p3[i]; + while ((p2 = find_next_token((const char**) &vms_p3, &len)) != 0) +#else + while ((p2 = find_next_token (&p3, &len)) != 0) +#endif + { + const char *p = p2 + len - 1; + while (p >= p2 && ! STOP_SET (*p, stop)) + --p; + + if (p >= p2 && (is_dir)) + o = variable_buffer_output (o, p2, ++p - p2); + else if (p >= p2 && (*p == '.')) + o = variable_buffer_output (o, p2, p - p2); +#ifdef HAVE_DOS_PATHS + /* Handle the "d:foobar" case */ + else if (p2[0] && p2[1] == ':' && is_dir) + o = variable_buffer_output (o, p2, 2); +#endif + else if (is_dir) +#ifdef VMS + { + extern int vms_report_unix_paths; + if (vms_report_unix_paths) + o = variable_buffer_output (o, "./", 2); + else + o = variable_buffer_output (o, "[]", 2); + } +#else +#ifndef _AMIGA + o = variable_buffer_output (o, "./", 2); +#else + ; /* Just a nop... */ +#endif /* AMIGA */ +#endif /* !VMS */ + else + /* The entire name is the basename. */ + o = variable_buffer_output (o, p2, len); + +#ifdef VMS + if (vms_comma_separator) + o = variable_buffer_output (o, ",", 1); + else +#endif + o = variable_buffer_output (o, " ", 1); + + doneany = 1; + } + + if (doneany) + /* Kill last space. */ + --o; + + return o; +} + +static char * +func_addsuffix_addprefix (char *o, char **argv, const char *funcname) +{ + size_t fixlen = strlen (argv[0]); + const char *list_iterator = argv[1]; + int is_addprefix = funcname[3] == 'p'; + int is_addsuffix = !is_addprefix; + + int doneany = 0; + const char *p; + size_t len; + + while ((p = find_next_token (&list_iterator, &len)) != 0) + { + if (is_addprefix) + o = variable_buffer_output (o, argv[0], fixlen); + o = variable_buffer_output (o, p, len); + if (is_addsuffix) + o = variable_buffer_output (o, argv[0], fixlen); + o = variable_buffer_output (o, " ", 1); + doneany = 1; + } + + if (doneany) + /* Kill last space. */ + --o; + + return o; +} + +static char * +func_subst (char *o, char **argv, const char *funcname UNUSED) +{ + o = subst_expand (o, argv[2], argv[0], argv[1], strlen (argv[0]), + strlen (argv[1]), 0); + + return o; +} + + +static char * +func_firstword (char *o, char **argv, const char *funcname UNUSED) +{ + size_t i; + const char *words = argv[0]; /* Use a temp variable for find_next_token */ + const char *p = find_next_token (&words, &i); + + if (p != 0) + o = variable_buffer_output (o, p, i); + + return o; +} + +static char * +func_lastword (char *o, char **argv, const char *funcname UNUSED) +{ + size_t i; + const char *words = argv[0]; /* Use a temp variable for find_next_token */ + const char *p = NULL; + const char *t; + + while ((t = find_next_token (&words, &i)) != NULL) + p = t; + + if (p != 0) + o = variable_buffer_output (o, p, i); + + return o; +} + +static char * +func_words (char *o, char **argv, const char *funcname UNUSED) +{ + unsigned int i = 0; + const char *word_iterator = argv[0]; + char buf[INTSTR_LENGTH]; + + while (find_next_token (&word_iterator, NULL) != 0) + ++i; + + sprintf (buf, "%u", i); + o = variable_buffer_output (o, buf, strlen (buf)); + + return o; +} + +/* Set begpp to point to the first non-whitespace character of the string, + * and endpp to point to the last non-whitespace character of the string. + * If the string is empty or contains nothing but whitespace, endpp will be + * begpp-1. + */ +char * +strip_whitespace (const char **begpp, const char **endpp) +{ + while (*begpp <= *endpp && ISSPACE (**begpp)) + (*begpp) ++; + while (*endpp >= *begpp && ISSPACE (**endpp)) + (*endpp) --; + return (char *)*begpp; +} + +static long long +parse_numeric (const char *s, const char *msg) +{ + const char *beg = s; + const char *end = s + strlen (s) - 1; + char *endp; + long long num; + strip_whitespace (&beg, &end); + + if (beg > end) + OS (fatal, *expanding_var, _("%s: empty value"), msg); + + 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; + long long i; + + 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")); + + end_p = argv[1]; + while ((p = find_next_token (&end_p, 0)) != 0) + if (--i == 0) + break; + + if (i == 0) + o = variable_buffer_output (o, p, end_p - p); + + return o; +} + +static char * +func_wordlist (char *o, char **argv, const char *funcname UNUSED) +{ + 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"); + + start = parse_numeric (argv[0], badfirst); + if (start < 1) + 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 = stop - start + 1; + + if (count > 0) + { + const char *p; + const char *end_p = argv[2]; + + /* Find the beginning of the "start"th word. */ + while (((p = find_next_token (&end_p, 0)) != 0) && --start) + ; + + if (p) + { + /* Find the end of the "count"th word from start. */ + while (--count && (find_next_token (&end_p, 0) != 0)) + ; + + /* Return the stuff in the middle. */ + o = variable_buffer_output (o, p, end_p - p); + } + } + + return o; +} + +static char * +func_findstring (char *o, char **argv, const char *funcname UNUSED) +{ + /* Find the first occurrence of the first string in the second. */ + if (strstr (argv[1], argv[0]) != 0) + o = variable_buffer_output (o, argv[0], strlen (argv[0])); + + return o; +} + +static char * +func_foreach (char *o, char **argv, const char *funcname UNUSED) +{ + /* expand only the first two. */ + char *varname = expand_argument (argv[0], NULL); + char *list = expand_argument (argv[1], NULL); + const char *body = argv[2]; + + int doneany = 0; + const char *list_iterator = list; + const char *p; + size_t len; + struct variable *var; + + /* Clean up the variable name by removing whitespace. */ + char *vp = next_token (varname); + end_of_token (vp)[0] = '\0'; + + push_new_variable_scope (); + var = define_variable (vp, strlen (vp), "", o_automatic, 0); + + /* loop through LIST, put the value in VAR and expand BODY */ + while ((p = find_next_token (&list_iterator, &len)) != 0) + { + char *result = 0; + + free (var->value); + var->value = xstrndup (p, len); + + result = allocated_variable_expand (body); + + o = variable_buffer_output (o, result, strlen (result)); + o = variable_buffer_output (o, " ", 1); + doneany = 1; + free (result); + } + + if (doneany) + /* Kill the last space. */ + --o; + + pop_variable_scope (); + free (varname); + free (list); + + 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 *chain; + char *str; + size_t length; + int matched; +}; + +static unsigned long +a_word_hash_1 (const void *key) +{ + return_STRING_HASH_1 (((struct a_word const *) key)->str); +} + +static unsigned long +a_word_hash_2 (const void *key) +{ + return_STRING_HASH_2 (((struct a_word const *) key)->str); +} + +static int +a_word_hash_cmp (const void *x, const void *y) +{ + 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 +{ + char *str; + char *percent; + size_t length; +}; + +static char * +func_filter_filterout (char *o, char **argv, const char *funcname) +{ + struct a_word *words; + struct a_word *word_end; + struct a_word *wp; + 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 *cp; + int literals = 0; + int hashing = 0; + char *p; + size_t len; + int doneany = 0; + + /* Find the number of words and get memory for them. */ + cp = argv[1]; + while ((p = find_next_token (&cp, NULL)) != 0) + ++word_count; + + if (!word_count) + return o; + + words = xcalloc (word_count * sizeof (struct a_word)); + word_end = words + word_count; + + /* Find the number of patterns and get memory for them. */ + cp = argv[0]; + while ((p = find_next_token (&cp, NULL)) != 0) + ++pat_count; + + 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; + + p[len] = '\0'; + pp->str = p; + pp->percent = find_percent (p); + if (pp->percent == 0) + literals++; + /* find_percent() might shorten the string so LEN is wrong. */ + pp->length = strlen (pp->str); + + ++pp; + } + + /* Chop ARGV[1] up into words to match against the patterns. */ + + cp = argv[1]; + wp = words; + while ((p = find_next_token (&cp, &len)) != 0) + { + if (*cp != '\0') + ++cp; + + p[len] = '\0'; + wp->str = p; + wp->length = len; + ++wp; + } + + /* Only use a hash table if arg list lengths justifies the cost. */ + hashing = (literals > 1 && (literals * word_count) >= 10); + if (hashing) + { + hash_init (&a_word_table, word_count, a_word_hash_1, a_word_hash_2, + a_word_hash_cmp); + for (wp = words; wp < word_end; ++wp) + { + struct a_word *owp = hash_insert (&a_word_table, wp); + if (owp) + wp->chain = owp; + } + } + + /* Run each pattern through the words, killing words. */ + for (pp = patterns; pp < pat_end; ++pp) + { + if (pp->percent) + for (wp = words; wp < word_end; ++wp) + 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) + { + wp->matched |= 1; + wp = wp->chain; + } + } + 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 = 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 (hashing) + hash_free (&a_word_table, 0); + + free (patterns); + free (words); + + return o; +} + + +static char * +func_strip (char *o, char **argv, const char *funcname UNUSED) +{ + const char *p = argv[0]; + int doneany = 0; + + while (*p != '\0') + { + int i=0; + const char *word_start; + + NEXT_TOKEN (p); + word_start = p; + for (i=0; *p != '\0' && !ISSPACE (*p); ++p, ++i) + {} + if (!i) + break; + o = variable_buffer_output (o, word_start, i); + o = variable_buffer_output (o, " ", 1); + doneany = 1; + } + + if (doneany) + /* Kill the last space. */ + --o; + + return o; +} + +/* + Print a warning or fatal message. +*/ +static char * +func_error (char *o, char **argv, const char *funcname) +{ + switch (*funcname) + { + case 'e': + OS (fatal, reading_file, "%s", argv[0]); + + case 'w': + OS (error, reading_file, "%s", argv[0]); + break; + + case 'i': + { + 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); + } + + /* The warning function expands to the empty string. */ + return o; +} + + +/* + chop argv[0] into words, and sort them. + */ +static char * +func_sort (char *o, char **argv, const char *funcname UNUSED) +{ + const char *t; + char **words; + int wordi; + char *p; + size_t len; + + /* Find the maximum number of words we'll have. */ + t = argv[0]; + wordi = 0; + while ((p = find_next_token (&t, NULL)) != 0) + { + ++t; + ++wordi; + } + + words = xmalloc ((wordi == 0 ? 1 : wordi) * sizeof (char *)); + + /* Now assign pointers to each string in the array. */ + t = argv[0]; + wordi = 0; + while ((p = find_next_token (&t, &len)) != 0) + { + ++t; + p[len] = '\0'; + words[wordi++] = p; + } + + if (wordi) + { + int i; + + /* Now sort the list of words. */ + qsort (words, wordi, sizeof (char *), alpha_compare); + + /* Now write the sorted list, uniquified. */ + for (i = 0; i < wordi; ++i) + { + len = strlen (words[i]); + if (i == wordi - 1 || strlen (words[i + 1]) != len + || memcmp (words[i], words[i + 1], len)) + { + o = variable_buffer_output (o, words[i], len); + o = variable_buffer_output (o, " ", 1); + } + } + + /* Kill the last space. */ + --o; + } + + free (words); + + return o; +} + +/* + Traverse NUMBER consisting of optional leading white space, optional + sign, digits, and optional trailing white space. + If number is not of the proper form, diagnose with MSG. Otherwise, + return the address of of the first character after NUMBER, store + into *SIGN an integer consistent with the number's sign (-1, 0, or 1) + and store into *NUMSTART the address of NUMBER's first nonzero digit + (if NUMBER contains only zero digits, store the address of the first + character after NUMBER). +*/ +static const char * +parse_textint (const char *number, const char *msg, + int *sign, const char **numstart) +{ + const char *after_sign, *after_number; + const char *p = next_token (number); + int negative = *p == '-'; + int nonzero; + + if (*p == '\0') + OS (fatal, *expanding_var, _("%s: empty value"), msg); + + p += negative || *p == '+'; + after_sign = p; + + while (*p == '0') + p++; + *numstart = p; + + while (ISDIGIT (*p)) + ++p; + after_number = p; + nonzero = *numstart != after_number; + *sign = negative ? -nonzero : nonzero; + + /* Check for extra non-whitespace stuff after the value. */ + if (after_number == after_sign || *next_token (p) != '\0') + OSS (fatal, *expanding_var, "%s: '%s'", msg, number); + + return after_number; +} + + +/* + $(intcmp lhs,rhs[,lt-part[,eq-part[,gt-part]]]) + + LHS and RHS must be integer values (leading/trailing whitespace is ignored). + If none of LT-PART, EQ-PART, or GT-PART are given then the function expands + to empty if LHS and RHS are not equal, or the numeric value if they are equal. + LT-PART is evaluated when LHS is strictly less than RHS, EQ-PART is evaluated + when LHS is equal to RHS, and GT-part is evaluated when LHS is strictly + greater than RHS. + If GT-PART is not provided, it defaults to EQ-PART. When neither EQ-PART + nor GT-PART are provided, the function expands to empty if LHS is not + strictly less than RHS. +*/ + +static char * +func_intcmp (char *o, char **argv, const char *funcname UNUSED) +{ + int lsign, rsign; + const char *lnum, *rnum; + char *lhs_str = expand_argument (argv[0], NULL); + char *rhs_str = expand_argument (argv[1], NULL); + const char *llim = parse_textint (lhs_str, _("non-numeric first argument to 'intcmp' function"), &lsign, &lnum); + const char *rlim = parse_textint (rhs_str, _("non-numeric second argument to 'intcmp' function"), &rsign, &rnum); + ptrdiff_t llen = llim - lnum; + ptrdiff_t rlen = rlim - rnum; + int cmp = lsign - rsign; + + if (cmp == 0) + { + cmp = (llen > rlen) - (llen < rlen); + if (cmp == 0) + cmp = memcmp (lnum, rnum, llen); + } + + argv += 2; + + /* Handle the special case where there are only two arguments. */ + if (!*argv && cmp == 0) + { + if (lsign < 0) + o = variable_buffer_output (o, "-", 1); + o = variable_buffer_output(o, lnum - !lsign, llen + !lsign); + } + + free (lhs_str); + free (rhs_str); + + if (*argv && cmp >= 0) + { + ++argv; + if (cmp > 0 && *argv && *(argv + 1)) + ++argv; + } + + if (*argv) + { + char *expansion = expand_argument (*argv, NULL); + + o = variable_buffer_output (o, expansion, strlen (expansion)); + + free (expansion); + } + + return o; +} + +/* + $(if condition,true-part[,false-part]) + + CONDITION is false iff it evaluates to an empty string. White + space before and after condition are stripped before evaluation. + + If CONDITION is true, then TRUE-PART is evaluated, otherwise FALSE-PART is + evaluated (if it exists). Because only one of the two PARTs is evaluated, + you can use $(if ...) to create side-effects (with $(shell ...), for + example). +*/ + +static char * +func_if (char *o, char **argv, const char *funcname UNUSED) +{ + const char *begp = argv[0]; + const char *endp = begp + strlen (argv[0]) - 1; + int result = 0; + + /* Find the result of the condition: if we have a value, and it's not + empty, the condition is true. If we don't have a value, or it's the + empty string, then it's false. */ + + strip_whitespace (&begp, &endp); + + if (begp <= endp) + { + char *expansion = expand_argument (begp, endp+1); + + result = expansion[0] != '\0'; + free (expansion); + } + + /* If the result is true (1) we want to eval the first argument, and if + it's false (0) we want to eval the second. If the argument doesn't + exist we do nothing, otherwise expand it and add to the buffer. */ + + argv += 1 + !result; + + if (*argv) + { + char *expansion = expand_argument (*argv, NULL); + + o = variable_buffer_output (o, expansion, strlen (expansion)); + + free (expansion); + } + + return o; +} + +/* + $(or condition1[,condition2[,condition3[...]]]) + + A CONDITION is false iff it evaluates to an empty string. White + space before and after CONDITION are stripped before evaluation. + + CONDITION1 is evaluated. If it's true, then this is the result of + expansion. If it's false, CONDITION2 is evaluated, and so on. If none of + the conditions are true, the expansion is the empty string. + + Once a CONDITION is true no further conditions are evaluated + (short-circuiting). +*/ + +static char * +func_or (char *o, char **argv, const char *funcname UNUSED) +{ + for ( ; *argv ; ++argv) + { + const char *begp = *argv; + const char *endp = begp + strlen (*argv) - 1; + char *expansion; + size_t result = 0; + + /* Find the result of the condition: if it's false keep going. */ + + strip_whitespace (&begp, &endp); + + if (begp > endp) + continue; + + expansion = expand_argument (begp, endp+1); + result = strlen (expansion); + + /* If the result is false keep going. */ + if (!result) + { + free (expansion); + continue; + } + + /* It's true! Keep this result and return. */ + o = variable_buffer_output (o, expansion, result); + free (expansion); + break; + } + + return o; +} + +/* + $(and condition1[,condition2[,condition3[...]]]) + + A CONDITION is false iff it evaluates to an empty string. White + space before and after CONDITION are stripped before evaluation. + + CONDITION1 is evaluated. If it's false, then this is the result of + expansion. If it's true, CONDITION2 is evaluated, and so on. If all of + the conditions are true, the expansion is the result of the last condition. + + Once a CONDITION is false no further conditions are evaluated + (short-circuiting). +*/ + +static char * +func_and (char *o, char **argv, const char *funcname UNUSED) +{ + char *expansion; + + while (1) + { + const char *begp = *argv; + const char *endp = begp + strlen (*argv) - 1; + size_t result; + + /* An empty condition is always false. */ + strip_whitespace (&begp, &endp); + if (begp > endp) + return o; + + expansion = expand_argument (begp, endp+1); + result = strlen (expansion); + + /* If the result is false, stop here: we're done. */ + if (!result) + break; + + /* Otherwise the result is true. If this is the last one, keep this + result and quit. Otherwise go on to the next one! */ + + if (*(++argv)) + free (expansion); + else + { + o = variable_buffer_output (o, expansion, result); + break; + } + } + + free (expansion); + + return o; +} + +static char * +func_wildcard (char *o, char **argv, const char *funcname UNUSED) +{ +#ifdef _AMIGA + o = wildcard_expansion (argv[0], o); +#else + char *p = string_glob (argv[0]); + o = variable_buffer_output (o, p, strlen (p)); +#endif + return o; +} + +/* + $(eval ) + + Always resolves to the empty string. + + Treat the arguments as a segment of makefile, and parse them. +*/ + +static char * +func_eval (char *o, char **argv, const char *funcname UNUSED) +{ + char *buf; + size_t len; + + /* Eval the buffer. Pop the current variable buffer setting so that the + eval'd code can use its own without conflicting. */ + + install_variable_buffer (&buf, &len); + + eval_buffer (argv[0], NULL); + + restore_variable_buffer (buf, len); + + return o; +} + + +static char * +func_value (char *o, char **argv, const char *funcname UNUSED) +{ + /* Look up the variable. */ + struct variable *v = lookup_variable (argv[0], strlen (argv[0])); + + /* Copy its value into the output buffer without expanding it. */ + if (v) + o = variable_buffer_output (o, v->value, strlen (v->value)); + + return o; +} + +/* + \r is replaced on UNIX as well. Is this desirable? + */ +static void +fold_newlines (char *buffer, size_t *length, int trim_newlines) +{ + char *dst = buffer; + char *src = buffer; + char *last_nonnl = buffer - 1; + src[*length] = 0; + for (; *src != '\0'; ++src) + { + if (src[0] == '\r' && src[1] == '\n') + continue; + if (*src == '\n') + { + *dst++ = ' '; + } + else + { + last_nonnl = dst; + *dst++ = *src; + } + } + + if (!trim_newlines && (last_nonnl < (dst - 2))) + last_nonnl = dst - 2; + + *(++last_nonnl) = '\0'; + *length = last_nonnl - buffer; +} + +pid_t shell_function_pid = 0; +static int shell_function_completed; + +void +shell_completed (int exit_code, int exit_sig) +{ + char buf[INTSTR_LENGTH]; + + shell_function_pid = 0; + if (exit_sig == 0 && exit_code == 127) + shell_function_completed = -1; + else + shell_function_completed = 1; + + if (exit_code == 0 && exit_sig > 0) + exit_code = 128 + exit_sig; + + sprintf (buf, "%d", exit_code); + define_variable_cname (".SHELLSTATUS", buf, o_override, 0); +} + +#ifdef WINDOWS32 +/*untested*/ + +#include +#include +#include "sub_proc.h" + + +int +windows32_openpipe (int *pipedes, int errfd, pid_t *pid_p, char **command_argv, char **envp) +{ + SECURITY_ATTRIBUTES saAttr; + HANDLE hIn = INVALID_HANDLE_VALUE; + HANDLE hErr = INVALID_HANDLE_VALUE; + HANDLE hChildOutRd; + HANDLE hChildOutWr; + HANDLE hProcess, tmpIn, tmpErr; + DWORD e; + + /* Set status for return. */ + pipedes[0] = pipedes[1] = -1; + *pid_p = (pid_t)-1; + + saAttr.nLength = sizeof (SECURITY_ATTRIBUTES); + saAttr.bInheritHandle = TRUE; + saAttr.lpSecurityDescriptor = NULL; + + /* Standard handles returned by GetStdHandle can be NULL or + INVALID_HANDLE_VALUE if the parent process closed them. If that + happens, we open the null device and pass its handle to + process_begin below as the corresponding handle to inherit. */ + tmpIn = GetStdHandle (STD_INPUT_HANDLE); + if (DuplicateHandle (GetCurrentProcess (), tmpIn, + GetCurrentProcess (), &hIn, + 0, TRUE, DUPLICATE_SAME_ACCESS) == FALSE) + { + e = GetLastError (); + if (e == ERROR_INVALID_HANDLE) + { + tmpIn = CreateFile ("NUL", GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (tmpIn != INVALID_HANDLE_VALUE + && DuplicateHandle (GetCurrentProcess (), tmpIn, + GetCurrentProcess (), &hIn, + 0, TRUE, DUPLICATE_SAME_ACCESS) == FALSE) + CloseHandle (tmpIn); + } + if (hIn == INVALID_HANDLE_VALUE) + { + ON (error, NILF, + _("windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n"), e); + return -1; + } + } + tmpErr = (HANDLE)_get_osfhandle (errfd); + if (DuplicateHandle (GetCurrentProcess (), tmpErr, + GetCurrentProcess (), &hErr, + 0, TRUE, DUPLICATE_SAME_ACCESS) == FALSE) + { + e = GetLastError (); + if (e == ERROR_INVALID_HANDLE) + { + tmpErr = CreateFile ("NUL", GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (tmpErr != INVALID_HANDLE_VALUE + && DuplicateHandle (GetCurrentProcess (), tmpErr, + GetCurrentProcess (), &hErr, + 0, TRUE, DUPLICATE_SAME_ACCESS) == FALSE) + CloseHandle (tmpErr); + } + if (hErr == INVALID_HANDLE_VALUE) + { + ON (error, NILF, + _("windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n"), e); + return -1; + } + } + + if (! CreatePipe (&hChildOutRd, &hChildOutWr, &saAttr, 0)) + { + ON (error, NILF, _("CreatePipe() failed (e=%lu)\n"), GetLastError()); + return -1; + } + + hProcess = process_init_fd (hIn, hChildOutWr, hErr); + + if (!hProcess) + { + O (error, NILF, _("windows32_openpipe(): process_init_fd() failed\n")); + return -1; + } + + if (! process_begin (hProcess, command_argv, envp, command_argv[0], NULL)) + { + /* register process for wait */ + process_register (hProcess); + + /* set the pid for returning to caller */ + *pid_p = (pid_t) hProcess; + + /* set up to read data from child */ + pipedes[0] = _open_osfhandle ((intptr_t) hChildOutRd, O_RDONLY); + + /* this will be closed almost right away */ + pipedes[1] = _open_osfhandle ((intptr_t) hChildOutWr, O_APPEND); + return 0; + } + else + { + /* reap/cleanup the failed process */ + process_cleanup (hProcess); + + /* close handles which were duplicated, they weren't used */ + if (hIn != INVALID_HANDLE_VALUE) + CloseHandle (hIn); + if (hErr != INVALID_HANDLE_VALUE) + CloseHandle (hErr); + + /* close pipe handles, they won't be used */ + CloseHandle (hChildOutRd); + CloseHandle (hChildOutWr); + + return -1; + } +} +#endif + + +#ifdef __MSDOS__ +FILE * +msdos_openpipe (int* pipedes, int *pidp, char *text) +{ + FILE *fpipe=0; + /* MSDOS can't fork, but it has 'popen'. */ + struct variable *sh = lookup_variable ("SHELL", 5); + int e; + extern int dos_command_running, dos_status; + + /* Make sure not to bother processing an empty line. */ + NEXT_TOKEN (text); + if (*text == '\0') + return 0; + + if (sh) + { + char buf[PATH_MAX + 7]; + /* This makes sure $SHELL value is used by $(shell), even + though the target environment is not passed to it. */ + sprintf (buf, "SHELL=%s", sh->value); + putenv (buf); + } + + e = errno; + errno = 0; + dos_command_running = 1; + dos_status = 0; + /* If dos_status becomes non-zero, it means the child process + was interrupted by a signal, like SIGINT or SIGQUIT. See + fatal_error_signal in commands.c. */ + fpipe = popen (text, "rt"); + dos_command_running = 0; + if (!fpipe || dos_status) + { + pipedes[0] = -1; + *pidp = -1; + if (dos_status) + errno = EINTR; + else if (errno == 0) + errno = ENOMEM; + if (fpipe) + pclose (fpipe); + shell_completed (127, 0); + } + else + { + pipedes[0] = fileno (fpipe); + *pidp = 42; /* Yes, the Meaning of Life, the Universe, and Everything! */ + errno = e; + } + return fpipe; +} +#endif + +/* + Do shell spawning, with the naughty bits for different OSes. + */ + +#ifdef VMS + +/* VMS can't do $(shell ...) */ + +char * +func_shell_base (char *o, char **argv, int trim_newlines) +{ + fprintf (stderr, "This platform does not support shell\n"); + die (MAKE_TROUBLE); + return NULL; +} + +#define func_shell 0 + +#else +#ifndef _AMIGA +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; + int pipedes[2]; + pid_t pid; + +#ifndef __MSDOS__ +#ifdef WINDOWS32 + /* Reset just_print_flag. This is needed on Windows when batch files + are used to run the commands, because we normally refrain from + creating batch files under -n. */ + int j_p_f = just_print_flag; + just_print_flag = 0; +#endif + + /* Construct the argument list. */ + command_argv = construct_command_argv (argv[0], NULL, NULL, 0, + &batch_filename); + if (command_argv == 0) + { +#ifdef WINDOWS32 + just_print_flag = j_p_f; +#endif + return o; + } +#endif /* !__MSDOS__ */ + + /* 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) + { + OS (error, reading_file, "pipe: %s", strerror (errno)); + pid = -1; + goto done; + } + +#elif defined(WINDOWS32) + windows32_openpipe (pipedes, errfd, &pid, command_argv, child.environment); + /* Restore the value of just_print_flag. */ + just_print_flag = j_p_f; + + if (pipedes[0] < 0) + { + /* Open of the pipe failed, mark as failed execution. */ + shell_completed (127, 0); + OS (error, reading_file, "pipe: %s", strerror (errno)); + pid = -1; + goto done; + } + +#else + if (pipe (pipedes) < 0) + { + OS (error, reading_file, "pipe: %s", strerror (errno)); + pid = -1; + goto done; + } + + /* Close handles that are unnecessary for the child process. */ + fd_noinherit (pipedes[1]); + fd_noinherit (pipedes[0]); + + child.output.syncout = 1; + child.output.out = pipedes[1]; + child.output.err = errfd; + + pid = child_execute_job (&child, 1, command_argv); + + if (pid < 0) + { + shell_completed (127, 0); + goto done; + } +#endif + + { + char *buffer; + size_t maxlen, i; + int cc; + + /* Record the PID for reap_children. */ + shell_function_pid = pid; +#ifndef __MSDOS__ + shell_function_completed = 0; + + /* Close the write side of the pipe. We test for -1, since + pipedes[1] is -1 on MS-Windows, and some versions of MS + libraries barf when 'close' is called with -1. */ + if (pipedes[1] >= 0) + close (pipedes[1]); +#endif + + /* Set up and read from the pipe. */ + + maxlen = 200; + buffer = xmalloc (maxlen + 1); + + /* Read from the pipe until it gets EOF. */ + for (i = 0; ; i += cc) + { + if (i == maxlen) + { + maxlen += 512; + buffer = xrealloc (buffer, maxlen + 1); + } + + EINTRLOOP (cc, read (pipedes[0], &buffer[i], maxlen - i)); + if (cc <= 0) + break; + } + buffer[i] = '\0'; + + /* Close the read side of the pipe. */ +#ifdef __MSDOS__ + if (fpipe) + { + int st = pclose (fpipe); + shell_completed (st, 0); + } +#else + (void) close (pipedes[0]); +#endif + + /* Loop until child_handler or reap_children() sets + shell_function_completed to the status of our child shell. */ + while (shell_function_completed == 0) + reap_children (1, 0); + + if (batch_filename) + { + DB (DB_VERBOSE, (_("Cleaning up temporary batch file %s\n"), + batch_filename)); + remove (batch_filename); + free (batch_filename); + } + shell_function_pid = 0; + + /* 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); + } + + done: + if (command_argv) + { + /* Free the storage only the child needed. */ + free (command_argv[0]); + free (command_argv); + } + + free_childbase (&child); + + return o; +} + +#else /* _AMIGA */ + +/* Do the Amiga version of func_shell. */ + +char * +func_shell_base (char *o, char **argv, int trim_newlines) +{ + /* Amiga can't fork nor spawn, but I can start a program with + redirection of my choice. However, this means that we + don't have an opportunity to reopen stdout to trap it. Thus, + we save our own stdout onto a new descriptor and dup a temp + file's descriptor onto our stdout temporarily. After we + spawn the shell program, we dup our own stdout back to the + stdout descriptor. The buffer reading is the same as above, + except that we're now reading from a file. */ + +#include +#include + + BPTR child_stdout; + char tmp_output[FILENAME_MAX]; + size_t maxlen = 200, i; + int cc; + char * buffer, * ptr; + char ** aptr; + size_t len = 0; + char* batch_filename = NULL; + + /* Construct the argument list. */ + command_argv = construct_command_argv (argv[0], NULL, NULL, 0, + &batch_filename); + if (command_argv == 0) + return o; + + /* Note the mktemp() is a security hole, but this only runs on Amiga. + Ideally we would use get_tmpfile(), but this uses a special Open(), not + fopen(), and I'm not familiar enough with the code to mess with it. */ + strcpy (tmp_output, "t:MakeshXXXXXXXX"); + mktemp (tmp_output); + child_stdout = Open (tmp_output, MODE_NEWFILE); + + for (aptr=command_argv; *aptr; aptr++) + len += strlen (*aptr) + 1; + + buffer = xmalloc (len + 1); + ptr = buffer; + + for (aptr=command_argv; *aptr; aptr++) + { + strcpy (ptr, *aptr); + ptr += strlen (ptr) + 1; + *(ptr++) = ' '; + *ptr = '\0'; + } + + ptr[-1] = '\n'; + + Execute (buffer, NULL, child_stdout); + free (buffer); + + Close (child_stdout); + + child_stdout = Open (tmp_output, MODE_OLDFILE); + + buffer = xmalloc (maxlen); + i = 0; + do + { + if (i == maxlen) + { + maxlen += 512; + buffer = xrealloc (buffer, maxlen + 1); + } + + cc = Read (child_stdout, &buffer[i], maxlen - i); + if (cc > 0) + i += cc; + } while (cc > 0); + + Close (child_stdout); + + fold_newlines (buffer, &i, trim_newlines); + o = variable_buffer_output (o, buffer, i); + free (buffer); + return o; +} +#endif /* _AMIGA */ + +static char * +func_shell (char *o, char **argv, const char *funcname UNUSED) +{ + return func_shell_base (o, argv, 1); +} +#endif /* !VMS */ + +#ifdef EXPERIMENTAL + +/* + equality. Return is string-boolean, i.e., the empty string is false. + */ +static char * +func_eq (char *o, char **argv, char *funcname UNUSED) +{ + int result = ! strcmp (argv[0], argv[1]); + o = variable_buffer_output (o, result ? "1" : "", result); + return o; +} + + +/* + string-boolean not operator. + */ +static char * +func_not (char *o, char **argv, char *funcname UNUSED) +{ + const char *s = argv[0]; + int result = 0; + NEXT_TOKEN (s); + result = ! (*s); + o = variable_buffer_output (o, result ? "1" : "", result); + return o; +} +#endif + + +#ifdef HAVE_DOS_PATHS +# ifdef __CYGWIN__ +# define IS_ABSOLUTE(n) ((n[0] && n[1] == ':') || ISDIRSEP (n[0])) +# else +# define IS_ABSOLUTE(n) (n[0] && n[1] == ':') +# endif +# define ROOT_LEN 3 +#else +# define IS_ABSOLUTE(n) (n[0] == '/') +# define ROOT_LEN 1 +#endif + +/* Return the absolute name of file NAME which does not contain any '.', + '..' components nor any repeated path separators ('/'). */ + +static char * +abspath (const char *name, char *apath) +{ + char *dest; + const char *start, *end, *apath_limit; + unsigned long root_len = ROOT_LEN; + + if (name[0] == '\0') + return NULL; + + apath_limit = apath + GET_PATH_MAX; + + if (!IS_ABSOLUTE(name)) + { + /* It is unlikely we would make it until here but just to make sure. */ + if (!starting_directory) + return NULL; + + strcpy (apath, starting_directory); + +#ifdef HAVE_DOS_PATHS + if (ISDIRSEP (name[0])) + { + if (ISDIRSEP (name[1])) + { + /* A UNC. Don't prepend a drive letter. */ + apath[0] = name[0]; + apath[1] = name[1]; + root_len = 2; + } + /* We have /foo, an absolute file name except for the drive + letter. Assume the missing drive letter is the current + drive, which we can get if we remove from starting_directory + everything past the root directory. */ + apath[root_len] = '\0'; + } +#endif + + dest = strchr (apath, '\0'); + } + else + { +#if defined(__CYGWIN__) && defined(HAVE_DOS_PATHS) + if (ISDIRSEP (name[0])) + root_len = 1; +#endif + memcpy (apath, name, root_len); + apath[root_len] = '\0'; + dest = apath + root_len; + /* Get past the root, since we already copied it. */ + name += root_len; +#ifdef HAVE_DOS_PATHS + if (! ISDIRSEP (apath[root_len - 1])) + { + /* Convert d:foo into d:./foo and increase root_len. */ + apath[2] = '.'; + apath[3] = '/'; + dest++; + root_len++; + /* strncpy above copied one character too many. */ + name--; + } + else + apath[root_len - 1] = '/'; /* make sure it's a forward slash */ +#endif + } + + for (start = end = name; *start != '\0'; start = end) + { + size_t len; + + /* Skip sequence of multiple path-separators. */ + while (ISDIRSEP (*start)) + ++start; + + /* Find end of path component. */ + for (end = start; ! STOP_SET (*end, MAP_DIRSEP|MAP_NUL); ++end) + ; + + len = end - start; + + if (len == 0) + break; + else if (len == 1 && start[0] == '.') + /* nothing */; + else if (len == 2 && start[0] == '.' && start[1] == '.') + { + /* Back up to previous component, ignore if at root already. */ + if (dest > apath + root_len) + for (--dest; ! ISDIRSEP (dest[-1]); --dest) + ; + } + else + { + if (! ISDIRSEP (dest[-1])) + *dest++ = '/'; + + if (dest + len >= apath_limit) + return NULL; + + dest = mempcpy (dest, start, len); + *dest = '\0'; + } + } + + /* Unless it is root strip trailing separator. */ + if (dest > apath + root_len && ISDIRSEP (dest[-1])) + --dest; + + *dest = '\0'; + + return apath; +} + + +static char * +func_realpath (char *o, char **argv, const char *funcname UNUSED) +{ + /* Expand the argument. */ + const char *p = argv[0]; + const char *path = 0; + int doneany = 0; + size_t len = 0; + + while ((path = find_next_token (&p, &len)) != 0) + { + if (len < GET_PATH_MAX) + { + char *rp; + struct stat st; + PATH_VAR (in); + PATH_VAR (out); + + strncpy (in, path, len); + in[len] = '\0'; + +#ifdef HAVE_REALPATH + ENULLLOOP (rp, realpath (in, out)); +# if defined _AIX + /* AIX realpath() doesn't remove trailing slashes correctly. */ + if (rp) + { + char *ep = rp + strlen (rp) - 1; + while (ep > rp && ep[0] == '/') + *(ep--) = '\0'; + } +# endif +#else + rp = abspath (in, out); +#endif + + if (rp) + { + int r; + EINTRLOOP (r, stat (out, &st)); + if (r == 0) + { + o = variable_buffer_output (o, out, strlen (out)); + o = variable_buffer_output (o, " ", 1); + doneany = 1; + } + } + } + } + + /* Kill last space. */ + if (doneany) + --o; + + return o; +} + +static char * +func_file (char *o, char **argv, const char *funcname UNUSED) +{ + char *fn = argv[0]; + + if (fn[0] == '>') + { + FILE *fp; + const char *mode = "w"; + + /* We are writing a file. */ + ++fn; + if (fn[0] == '>') + { + mode = "a"; + ++fn; + } + NEXT_TOKEN (fn); + + if (fn[0] == '\0') + O (fatal, *expanding_var, _("file: missing filename")); + + ENULLLOOP (fp, fopen (fn, mode)); + 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]); + int nl = l == 0 || argv[1][l-1] != '\n'; + + if (fputs (argv[1], fp) == EOF || (nl && fputc ('\n', fp) == EOF)) + OSS (fatal, reading_file, _("write: %s: %s"), fn, strerror (errno)); + } + if (fclose (fp)) + OSS (fatal, reading_file, _("close: %s: %s"), fn, strerror (errno)); + } + else if (fn[0] == '<') + { + size_t n = 0; + FILE *fp; + + ++fn; + NEXT_TOKEN (fn); + if (fn[0] == '\0') + O (fatal, *expanding_var, _("file: missing filename")); + + if (argv[1]) + O (fatal, *expanding_var, _("file: too many arguments")); + + ENULLLOOP (fp, fopen (fn, "r")); + if (fp == NULL) + { + if (errno == ENOENT) + return o; + OSS (fatal, reading_file, _("open: %s: %s"), fn, strerror (errno)); + } + + while (1) + { + char buf[1024]; + size_t l = fread (buf, 1, sizeof (buf), fp); + if (l > 0) + { + 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)); + if (feof (fp)) + break; + } + if (fclose (fp)) + OSS (fatal, reading_file, _("close: %s: %s"), fn, strerror (errno)); + + /* Remove trailing newline. */ + if (n && o[-1] == '\n') + o -= 1 + (n > 1 && o[-2] == '\r'); + } + else + OS (fatal, *expanding_var, _("file: invalid file operation: %s"), fn); + + return o; +} + +static char * +func_abspath (char *o, char **argv, const char *funcname UNUSED) +{ + /* Expand the argument. */ + const char *p = argv[0]; + const char *path = 0; + int doneany = 0; + size_t len = 0; + + while ((path = find_next_token (&p, &len)) != 0) + { + if (len < GET_PATH_MAX) + { + PATH_VAR (in); + PATH_VAR (out); + + strncpy (in, path, len); + in[len] = '\0'; + + if (abspath (in, out)) + { + o = variable_buffer_output (o, out, strlen (out)); + o = variable_buffer_output (o, " ", 1); + doneany = 1; + } + } + } + + /* Kill last space. */ + if (doneany) + --o; + + return o; +} + +/* Lookup table for builtin functions. + + This doesn't have to be sorted; we use a straight lookup. We might gain + some efficiency by moving most often used functions to the start of the + table. + + If MAXIMUM_ARGS is 0, that means there is no maximum and all + comma-separated values are treated as arguments. + + EXPAND_ARGS means that all arguments should be expanded before invocation. + 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, 0 } + +static struct function_table_entry function_table_init[] = +{ + /* Name MIN MAX EXP? Function */ + FT_ENTRY ("abspath", 0, 1, 1, func_abspath), + FT_ENTRY ("addprefix", 2, 2, 1, func_addsuffix_addprefix), + FT_ENTRY ("addsuffix", 2, 2, 1, func_addsuffix_addprefix), + FT_ENTRY ("basename", 0, 1, 1, func_basename_dir), + FT_ENTRY ("dir", 0, 1, 1, func_basename_dir), + FT_ENTRY ("notdir", 0, 1, 1, func_notdir_suffix), + FT_ENTRY ("subst", 3, 3, 1, func_subst), + FT_ENTRY ("suffix", 0, 1, 1, func_notdir_suffix), + FT_ENTRY ("filter", 2, 2, 1, func_filter_filterout), + FT_ENTRY ("filter-out", 2, 2, 1, func_filter_filterout), + FT_ENTRY ("findstring", 2, 2, 1, func_findstring), + FT_ENTRY ("firstword", 0, 1, 1, func_firstword), + FT_ENTRY ("flavor", 0, 1, 1, func_flavor), + FT_ENTRY ("join", 2, 2, 1, func_join), + FT_ENTRY ("lastword", 0, 1, 1, func_lastword), + FT_ENTRY ("patsubst", 3, 3, 1, func_patsubst), + FT_ENTRY ("realpath", 0, 1, 1, func_realpath), + FT_ENTRY ("shell", 0, 1, 1, func_shell), + FT_ENTRY ("sort", 0, 1, 1, func_sort), + FT_ENTRY ("strip", 0, 1, 1, func_strip), + FT_ENTRY ("wildcard", 0, 1, 1, func_wildcard), + FT_ENTRY ("word", 2, 2, 1, func_word), + FT_ENTRY ("wordlist", 3, 3, 1, func_wordlist), + 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), + FT_ENTRY ("value", 0, 1, 1, func_value), + FT_ENTRY ("eval", 0, 1, 1, func_eval), + FT_ENTRY ("file", 1, 2, 1, func_file), +#ifdef EXPERIMENTAL + FT_ENTRY ("eq", 2, 2, 1, func_eq), + FT_ENTRY ("not", 0, 1, 1, func_not), +#endif +}; + +#define FUNCTION_TABLE_ENTRIES (sizeof (function_table_init) / sizeof (struct function_table_entry)) + + +/* These must come after the definition of function_table. */ + +static char * +expand_builtin_function (char *o, unsigned int argc, char **argv, + const struct function_table_entry *entry_p) +{ + char *p; + + if (argc < entry_p->minimum_args) + fatal (*expanding_var, strlen (entry_p->name), + _("insufficient number of arguments (%u) to function '%s'"), + argc, entry_p->name); + + /* I suppose technically some function could do something with no arguments, + but so far no internal ones do, so just test it for all functions here + rather than in each one. We can change it later if necessary. */ + + if (!argc && !entry_p->alloc_fn) + return o; + + if (!entry_p->fptr.func_ptr) + 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); + + /* This function allocates memory and returns it to us. + Write it to the variable buffer, then free it. */ + + p = entry_p->fptr.alloc_func_ptr (entry_p->name, argc, argv); + if (p) + { + o = variable_buffer_output (o, p, strlen (p)); + free (p); + } + + return o; +} + +/* Check for a function invocation in *STRINGP. *STRINGP points at the + opening ( or { and is not null-terminated. If a function invocation + is found, expand it into the buffer at *OP, updating *OP, incrementing + *STRINGP past the reference and returning nonzero. If not, return zero. */ + +int +handle_function (char **op, const char **stringp) +{ + const struct function_table_entry *entry_p; + char openparen = (*stringp)[0]; + char closeparen = openparen == '(' ? ')' : '}'; + const char *beg; + const char *end; + int count = 0; + char *abeg = NULL; + char **argv, **argvp; + unsigned int nargs; + + beg = *stringp + 1; + + entry_p = lookup_function (beg); + + if (!entry_p) + return 0; + + /* We found a builtin function. Find the beginning of its arguments (skip + whitespace after the name). */ + + beg += entry_p->len; + NEXT_TOKEN (beg); + + /* Find the end of the function invocation, counting nested use of + whichever kind of parens we use. Since we're looking, count commas + to get a rough estimate of how many arguments we might have. The + count might be high, but it'll never be low. */ + + for (nargs=1, end=beg; *end != '\0'; ++end) + if (!STOP_SET (*end, MAP_VARSEP|MAP_COMMA)) + continue; + else if (*end == ',') + ++nargs; + else if (*end == openparen) + ++count; + else if (*end == closeparen && --count < 0) + break; + + if (count >= 0) + fatal (*expanding_var, strlen (entry_p->name), + _("unterminated call to function '%s': missing '%c'"), + entry_p->name, closeparen); + + *stringp = end; + + /* Get some memory to store the arg pointers. */ + argvp = argv = alloca (sizeof (char *) * (nargs + 2)); + + /* Chop the string into arguments, then a nul. As soon as we hit + MAXIMUM_ARGS (if it's >0) assume the rest of the string is part of the + last argument. + + If we're expanding, store pointers to the expansion of each one. If + not, make a duplicate of the string and point into that, nul-terminating + each argument. */ + + if (entry_p->expand_args) + { + const char *p; + for (p=beg, nargs=0; p <= end; ++argvp) + { + const char *next; + + ++nargs; + + if (nargs == entry_p->maximum_args + || ((next = find_next_argument (openparen, closeparen, p, end)) == NULL)) + next = end; + + *argvp = expand_argument (p, next); + p = next + 1; + } + } + else + { + size_t len = end - beg; + char *p, *aend; + + abeg = xmalloc (len+1); + aend = mempcpy (abeg, beg, len); + *aend = '\0'; + + for (p=abeg, nargs=0; p <= aend; ++argvp) + { + char *next; + + ++nargs; + + if (nargs == entry_p->maximum_args + || ((next = find_next_argument (openparen, closeparen, p, aend)) == NULL)) + next = aend; + + *argvp = p; + *next = '\0'; + p = next + 1; + } + } + *argvp = NULL; + + /* Finally! Run the function... */ + *op = expand_builtin_function (*op, nargs, argv, entry_p); + + /* Free memory. */ + if (entry_p->expand_args) + for (argvp=argv; *argvp != 0; ++argvp) + free (*argvp); + else + free (abeg); + + return 1; +} + + +/* User-defined functions. Expand the first argument as either a builtin + function or a make variable, in the context of the rest of the arguments + assigned to $1, $2, ... $N. $0 is the name of the function. */ + +static char * +func_call (char *o, char **argv, const char *funcname UNUSED) +{ + static unsigned int max_args = 0; + char *fname; + char *body; + size_t flen; + unsigned int i; + int saved_args; + const struct function_table_entry *entry_p; + struct variable *v; + + /* Clean up the name of the variable to be invoked. */ + fname = next_token (argv[0]); + end_of_token (fname)[0] = '\0'; + + /* Calling nothing is a no-op */ + if (*fname == '\0') + return o; + + /* Are we invoking a builtin function? */ + + entry_p = lookup_function (fname); + if (entry_p) + { + /* How many arguments do we have? */ + for (i=0; argv[i+1]; ++i) + ; + return expand_builtin_function (o, i, argv+1, entry_p); + } + + /* Not a builtin, so the first argument is the name of a variable to be + expanded and interpreted as a function. Find it. */ + flen = strlen (fname); + + v = lookup_variable (fname, flen); + + if (v == 0) + warn_undefined (fname, flen); + + if (v == 0 || *v->value == '\0') + return o; + + body = alloca (flen + 4); + body[0] = '$'; + body[1] = '('; + memcpy (body + 2, fname, flen); + body[flen+2] = ')'; + body[flen+3] = '\0'; + + /* Set up arguments $(1) .. $(N). $(0) is the function name. */ + + push_new_variable_scope (); + + for (i=0; *argv; ++i, ++argv) + { + char num[INTSTR_LENGTH]; + + sprintf (num, "%u", i); + define_variable (num, strlen (num), *argv, o_automatic, 0); + } + + /* If the number of arguments we have is < max_args, it means we're inside + a recursive invocation of $(call ...). Fill in the remaining arguments + in the new scope with the empty value, to hide them from this + invocation. */ + + for (; i < max_args; ++i) + { + char num[INTSTR_LENGTH]; + + sprintf (num, "%u", i); + define_variable (num, strlen (num), "", o_automatic, 0); + } + + /* Expand the body in the context of the arguments, adding the result to + the variable buffer. */ + + v->exp_count = EXP_COUNT_MAX; + + saved_args = max_args; + max_args = i; + o = variable_expand_string (o, body, flen+3); + max_args = saved_args; + + v->exp_count = 0; + + pop_variable_scope (); + + return o + strlen (o); +} + +void +define_new_function (const floc *flocp, const char *name, + unsigned int min, unsigned int max, unsigned int flags, + gmk_func_ptr func) +{ + const char *e = name; + struct function_table_entry *ent; + size_t len; + + while (STOP_SET (*e, MAP_USERFUNC)) + e++; + len = e - name; + + if (len == 0) + O (fatal, flocp, _("Empty function name")); + if (*name == '.' || *e != '\0') + OS (fatal, flocp, _("Invalid function name: %s"), name); + if (len > 255) + OS (fatal, flocp, _("Function name too long: %s"), name); + if (min > 255) + ONS (fatal, flocp, + _("Invalid minimum argument count (%u) for function %s"), min, name); + if (max > 255 || (max && max < min)) + ONS (fatal, flocp, + _("Invalid maximum argument count (%u) for function %s"), max, name); + + ent = xmalloc (sizeof (struct function_table_entry)); + ent->name = name; + ent->len = (unsigned char) len; + ent->minimum_args = (unsigned char) min; + ent->maximum_args = (unsigned char) max; + ent->expand_args = ANY_SET(flags, GMK_FUNC_NOEXPAND) ? 0 : 1; + ent->alloc_fn = 1; + /* We don't know what this function will do. */ + ent->adds_command = 1; + ent->fptr.alloc_func_ptr = func; + + ent = hash_insert (&function_table, ent); + free (ent); +} + +void +hash_init_function_table (void) +{ + hash_init (&function_table, FUNCTION_TABLE_ENTRIES * 2, + function_table_entry_hash_1, function_table_entry_hash_2, + function_table_entry_hash_cmp); + hash_load (&function_table, function_table_init, + FUNCTION_TABLE_ENTRIES, sizeof (struct function_table_entry)); +} diff --git a/local/recipes/dev/gnu-make/source/src/getopt.c b/local/recipes/dev/gnu-make/source/src/getopt.c new file mode 100644 index 0000000000..fbf9313814 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/getopt.c @@ -0,0 +1,1030 @@ +/* Getopt for GNU. +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-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. + +GNU Make is free software; you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +/* This tells Alpha OSF/1 not to define a getopt prototype in . + Ditto for AIX 3.2 and . */ +#ifndef _NO_PROTO +# define _NO_PROTO +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if !defined __STDC__ || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +# ifndef const +# define const +# endif +#endif + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 +# include +# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +# define ELIDE_CODE +# endif +#endif + +#ifdef __redox__ +#define ELIDE_CODE +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +/* Don't include stdlib.h for non-GNU C libraries because some of them + contain conflicting prototypes for getopt. */ +# include +# include +#endif /* GNU C library. */ + +#ifdef VMS +# include +# if HAVE_STRING_H - 0 +# include +# endif +#endif + +/* This is for other GNU distributions with internationalized messages. + When compiling libc, the _ macro is predefined. */ +#include "gettext.h" +#define _(msgid) gettext (msgid) + + +/* This version of `getopt' appears to the caller like standard Unix 'getopt' + but it behaves differently for the user, since it allows the user + to intersperse the options with the other arguments. + + As `getopt' works, it permutes the elements of ARGV so that, + when it is done, all the options precede everything else. Thus + all application programs are extended to handle flexible argument order. + + Setting the environment variable POSIXLY_CORRECT disables permutation. + Then the behavior is completely standard. + + GNU application programs can use a third alternative mode in which + they can distinguish the relative order of options and other arguments. */ + +#include "getopt.h" + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +char *optarg = NULL; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +/* 1003.2 says this must be 1 before any call. */ +int optind = 1; + +/* Formerly, initialization of getopt depended on optind==0, which + causes problems with re-calling getopt as programs generally don't + know that. */ + +int __getopt_initialized = 0; + +/* The next char to be scanned in the option-element + in which the last option character we returned was found. + This allows us to pick up the scan where we left off. + + If this is zero, or a null string, it means resume the scan + by advancing to the next ARGV-element. */ + +static char *nextchar; + +/* Callers store zero here to inhibit the error message + for unrecognized options. */ + +int opterr = 1; + +/* Set to an option character which was unrecognized. + This must be initialized on some systems to avoid linking in the + system's own getopt implementation. */ + +int optopt = '?'; + +/* Describe how to deal with options that follow non-option ARGV-elements. + + If the caller did not specify anything, + the default is REQUIRE_ORDER if the environment variable + POSIXLY_CORRECT is defined, PERMUTE otherwise. + + REQUIRE_ORDER means don't recognize them as options; + stop option processing when the first non-option is seen. + This is what Unix does. + This mode of operation is selected by either setting the environment + variable POSIXLY_CORRECT, or using `+' as the first character + of the list of option characters. + + PERMUTE is the default. We permute the contents of ARGV as we scan, + so that eventually all the non-options are at the end. This allows options + to be given in any order, even with programs that were not written to + expect this. + + RETURN_IN_ORDER is an option available to programs that were written + to expect options and other ARGV-elements in any order and that care about + the ordering of the two. We describe each non-option ARGV-element + as if it were the argument of an option with character code 1. + Using `-' as the first character of the list of option characters + selects this mode of operation. + + The special argument `--' forces an end of option-scanning regardless + of the value of `ordering'. In the case of RETURN_IN_ORDER, only + `--' can cause `getopt' to return -1 with `optind' != ARGC. */ + +static enum +{ + REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER +} ordering; + +/* Value of POSIXLY_CORRECT environment variable. */ +static char *posixly_correct; + +#ifdef __GNU_LIBRARY__ +/* We want to avoid inclusion of string.h with non-GNU libraries + because there are many ways it can cause trouble. + On some systems, it contains special magic macros that don't work + in GCC. */ +# include +# define my_index strchr +#else + +# if HAVE_STRING_H +# include +# else +# include +# endif + +/* Avoid depending on library functions or files + whose names are inconsistent. */ + +#ifndef getenv +extern char *getenv (); +#endif + +static char * +my_index (const char *str, int chr) +{ + while (*str) + { + if (*str == chr) + return (char *) str; + str++; + } + return 0; +} + +/* If using GCC, we can safely declare strlen this way. + If not using GCC, it is ok not to declare it. */ +#ifdef __GNUC__ +/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. + That was relevant to code that was here before. */ +# if (!defined __STDC__ || !__STDC__) && !defined strlen +/* gcc with -traditional declares the built-in strlen to return int, + and has done so at least since version 2.4.5. -- rms. */ +extern int strlen (const char *); +# endif /* not __STDC__ */ +#endif /* __GNUC__ */ + +#endif /* not __GNU_LIBRARY__ */ + +/* Handle permutation of arguments. */ + +/* Describe the part of ARGV that contains non-options that have + been skipped. `first_nonopt' is the index in ARGV of the first of them; + `last_nonopt' is the index after the last of them. */ + +static int first_nonopt; +static int last_nonopt; + +#ifdef _LIBC +/* Bash 2.0 gives us an environment variable containing flags + indicating ARGV elements that should not be considered arguments. */ + +/* Defined in getopt_init.c */ +extern char *__getopt_nonoption_flags; + +static int nonoption_flags_max_len; +static int nonoption_flags_len; + +static int original_argc; +static char *const *original_argv; + +/* Make sure the environment variable bash 2.0 puts in the environment + is valid for the getopt call we must make sure that the ARGV passed + to getopt is that one passed to the process. */ +static void __attribute__ ((unused)) +store_args_and_env (int argc, char *const *argv) +{ + /* XXX This is no good solution. We should rather copy the args so + that we can compare them later. But we must not use malloc(3). */ + original_argc = argc; + original_argv = argv; +} +# ifdef text_set_element +text_set_element (__libc_subinit, store_args_and_env); +# endif /* text_set_element */ + +# define SWAP_FLAGS(ch1, ch2) \ + if (nonoption_flags_len > 0) \ + { \ + char __tmp = __getopt_nonoption_flags[ch1]; \ + __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ + __getopt_nonoption_flags[ch2] = __tmp; \ + } +#else /* !_LIBC */ +# define SWAP_FLAGS(ch1, ch2) +#endif /* _LIBC */ + +/* Exchange two adjacent subsequences of ARGV. + One subsequence is elements [first_nonopt,last_nonopt) + which contains all the non-options that have been skipped so far. + The other is elements [last_nonopt,optind), which contains all + the options processed since those non-options were skipped. + + `first_nonopt' and `last_nonopt' are relocated so that they describe + the new indices of the non-options in ARGV after they are moved. */ + +#if defined __STDC__ && __STDC__ +static void exchange (char **); +#endif + +static void +exchange (char **argv) +{ + int bottom = first_nonopt; + int middle = last_nonopt; + int top = optind; + char *tem; + + /* Exchange the shorter segment with the far end of the longer segment. + That puts the shorter segment into the right place. + It leaves the longer segment in the right place overall, + but it consists of two parts that need to be swapped next. */ + +#ifdef _LIBC + /* First make sure the handling of the `__getopt_nonoption_flags' + string can work normally. Our top argument must be in the range + of the string. */ + if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) + { + /* We must extend the array. The user plays games with us and + presents new arguments. */ + char *new_str = malloc (top + 1); + if (new_str == NULL) + nonoption_flags_len = nonoption_flags_max_len = 0; + else + { + memset (__mempcpy (new_str, __getopt_nonoption_flags, + nonoption_flags_max_len), + '\0', top + 1 - nonoption_flags_max_len); + nonoption_flags_max_len = top + 1; + __getopt_nonoption_flags = new_str; + } + } +#endif + + while (top > middle && middle > bottom) + { + if (top - middle > middle - bottom) + { + /* Bottom segment is the short one. */ + int len = middle - bottom; + register int i; + + /* Swap it with the top part of the top segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[top - (middle - bottom) + i]; + argv[top - (middle - bottom) + i] = tem; + SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); + } + /* Exclude the moved bottom segment from further swapping. */ + top -= len; + } + else + { + /* Top segment is the short one. */ + int len = top - middle; + register int i; + + /* Swap it with the bottom part of the bottom segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[middle + i]; + argv[middle + i] = tem; + SWAP_FLAGS (bottom + i, middle + i); + } + /* Exclude the moved top segment from further swapping. */ + bottom += len; + } + } + + /* Update records for the slots the non-options now occupy. */ + + first_nonopt += (optind - last_nonopt); + last_nonopt = optind; +} + +/* Initialize the internal data when the first call is made. */ + +#if defined __STDC__ && __STDC__ +static const char *_getopt_initialize (int, char *const *, const char *); +#endif +static const char * +_getopt_initialize (int argc, char *const *argv, const char *optstring) +{ + /* Start processing options with ARGV-element 1 (since ARGV-element 0 + is the program name); the sequence of previously skipped + non-option ARGV-elements is empty. */ + + first_nonopt = last_nonopt = optind; + + nextchar = NULL; + + posixly_correct = getenv ("POSIXLY_CORRECT"); + + /* Determine how to handle the ordering of options and nonoptions. */ + + if (optstring[0] == '-') + { + ordering = RETURN_IN_ORDER; + ++optstring; + } + else if (optstring[0] == '+') + { + ordering = REQUIRE_ORDER; + ++optstring; + } + else if (posixly_correct != NULL) + ordering = REQUIRE_ORDER; + else + ordering = PERMUTE; + +#ifdef _LIBC + if (posixly_correct == NULL + && argc == original_argc && argv == original_argv) + { + if (nonoption_flags_max_len == 0) + { + if (__getopt_nonoption_flags == NULL + || __getopt_nonoption_flags[0] == '\0') + nonoption_flags_max_len = -1; + else + { + const char *orig_str = __getopt_nonoption_flags; + int len = nonoption_flags_max_len = strlen (orig_str); + if (nonoption_flags_max_len < argc) + nonoption_flags_max_len = argc; + __getopt_nonoption_flags = + (char *) malloc (nonoption_flags_max_len); + if (__getopt_nonoption_flags == NULL) + nonoption_flags_max_len = -1; + else + memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), + '\0', nonoption_flags_max_len - len); + } + } + nonoption_flags_len = nonoption_flags_max_len; + } + else + nonoption_flags_len = 0; +#endif + + return optstring; +} + +/* Scan elements of ARGV (whose length is ARGC) for option characters + given in OPTSTRING. + + If an element of ARGV starts with '-', and is not exactly "-" or "--", + then it is an option element. The characters of this element + (aside from the initial '-') are option characters. If `getopt' + is called repeatedly, it returns successively each of the option characters + from each of the option elements. + + If `getopt' finds another option character, it returns that character, + updating `optind' and `nextchar' so that the next call to `getopt' can + resume the scan with the following option character or ARGV-element. + + If there are no more option characters, `getopt' returns -1. + Then `optind' is the index in ARGV of the first ARGV-element + that is not an option. (The ARGV-elements have been permuted + so that those that are not options now come last.) + + OPTSTRING is a string containing the legitimate option characters. + If an option character is seen that is not listed in OPTSTRING, + return '?' after printing an error message. If you set `opterr' to + zero, the error message is suppressed but we still return '?'. + + If a char in OPTSTRING is followed by a colon, that means it wants an arg, + so the following text in the same ARGV-element, or the text of the following + ARGV-element, is returned in `optarg'. Two colons mean an option that + wants an optional arg; if there is text in the current ARGV-element, + it is returned in `optarg', otherwise `optarg' is set to zero. + + If OPTSTRING starts with `-' or `+', it requests different methods of + handling the non-option ARGV-elements. + See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. + + Long-named options begin with `--' instead of `-'. + Their names may be abbreviated as long as the abbreviation is unique + or is an exact match for some defined option. If they have an + argument, it follows the option name in the same ARGV-element, separated + from the option name by a `=', or else the in next ARGV-element. + When `getopt' finds a long-named option, it returns 0 if that option's + `flag' field is nonzero, the value of the option's `val' field + if the `flag' field is zero. + + The elements of ARGV aren't really const, because we permute them. + But we pretend they're const in the prototype to be compatible + with other systems. + + LONGOPTS is a vector of `struct option' terminated by an + element containing a name which is zero. + + LONGIND returns the index in LONGOPT of the long-named option found. + It is only valid when a long-named option has been found by the most + recent call. + + If LONG_ONLY is nonzero, '-' as well as '--' can introduce + long-named options. */ + +int +_getopt_internal (int argc, char *const *argv, const char *optstring, + const struct option *longopts, int *longind, int long_only) +{ + optarg = NULL; + + if (optind == 0 || !__getopt_initialized) + { + if (optind == 0) + optind = 1; /* Don't scan ARGV[0], the program name. */ + optstring = _getopt_initialize (argc, argv, optstring); + __getopt_initialized = 1; + } + + /* Test whether ARGV[optind] points to a non-option argument. + Either it does not have option syntax, or there is an environment flag + from the shell indicating it is not an option. The later information + is only used when the used in the GNU libc. */ +#ifdef _LIBC +# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ + || (optind < nonoption_flags_len \ + && __getopt_nonoption_flags[optind] == '1')) +#else +# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') +#endif + + if (nextchar == NULL || *nextchar == '\0') + { + /* Advance to the next ARGV-element. */ + + /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been + moved back by the user (who may also have changed the arguments). */ + if (last_nonopt > optind) + last_nonopt = optind; + if (first_nonopt > optind) + first_nonopt = optind; + + if (ordering == PERMUTE) + { + /* If we have just processed some options following some non-options, + exchange them so that the options come first. */ + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (last_nonopt != optind) + first_nonopt = optind; + + /* Skip any additional non-options + and extend the range of non-options previously skipped. */ + + while (optind < argc && NONOPTION_P) + optind++; + last_nonopt = optind; + } + + /* The special ARGV-element `--' means premature end of options. + Skip it like a null option, + then exchange with previous non-options as if it were an option, + then skip everything else like a non-option. */ + + if (optind != argc && !strcmp (argv[optind], "--")) + { + optind++; + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (first_nonopt == last_nonopt) + first_nonopt = optind; + last_nonopt = argc; + + optind = argc; + } + + /* If we have done all the ARGV-elements, stop the scan + and back over any non-options that we skipped and permuted. */ + + if (optind == argc) + { + /* Set the next-arg-index to point at the non-options + that we previously skipped, so the caller will digest them. */ + if (first_nonopt != last_nonopt) + optind = first_nonopt; + return -1; + } + + /* If we have come to a non-option and did not permute it, + either stop the scan or describe it to the caller and pass it by. */ + + if (NONOPTION_P) + { + if (ordering == REQUIRE_ORDER) + return -1; + optarg = argv[optind++]; + return 1; + } + + /* We have found another option-ARGV-element. + Skip the initial punctuation. */ + + nextchar = (argv[optind] + 1 + + (longopts != NULL && argv[optind][1] == '-')); + } + + /* Decode the current option-ARGV-element. */ + + /* Check whether the ARGV-element is a long option. + + If long_only and the ARGV-element has the form "-f", where f is + a valid short option, don't consider it an abbreviated form of + a long option that starts with f. Otherwise there would be no + way to give the -f short option. + + On the other hand, if there's a long option "fubar" and + the ARGV-element is "-fu", do consider that an abbreviation of + the long option, just like "--fu", and not "-f" with arg "u". + + This distinction seems to be the most useful approach. */ + + if (longopts != NULL + && (argv[optind][1] == '-' + || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = -1; + int option_index; + + for (nameend = nextchar; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp (p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) + == (unsigned int) strlen (p->name)) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else + /* Second or later nonexact match found. */ + ambig = 1; + } + + if (ambig && !exact) + { + if (opterr) + fprintf (stderr, _("%s: option '%s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen (nextchar); + optind++; + optopt = 0; + return '?'; + } + + if (pfound != NULL) + { + option_index = indfound; + optind++; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + if (argv[optind - 1][1] == '-') + /* --option */ + fprintf (stderr, + _("%s: option '--%s' doesn't allow an argument\n"), + argv[0], pfound->name); + else + /* +option or -option */ + fprintf (stderr, + _("%s: option '%c%s' doesn't allow an argument\n"), + argv[0], argv[optind - 1][0], pfound->name); + + nextchar += strlen (nextchar); + + optopt = pfound->val; + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf (stderr, + _("%s: option '%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen (nextchar); + optopt = pfound->val; + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen (nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + + /* Can't find it as a long option. If this is not getopt_long_only, + or the option starts with '--' or is not a valid short + option, then it's an error. + Otherwise interpret it as a short option. */ + if (!long_only || argv[optind][1] == '-' + || my_index (optstring, *nextchar) == NULL) + { + if (opterr) + { + if (argv[optind][1] == '-') + /* --option */ + fprintf (stderr, _("%s: unrecognized option '--%s'\n"), + argv[0], nextchar); + else + /* +option or -option */ + fprintf (stderr, _("%s: unrecognized option '%c%s'\n"), + argv[0], argv[optind][0], nextchar); + } + nextchar = (char *) ""; + optind++; + optopt = 0; + return '?'; + } + } + + /* Look at and handle the next short option-character. */ + + { + char c = *nextchar++; + char *temp = my_index (optstring, c); + + /* Increment `optind' when we start to process its last character. */ + if (*nextchar == '\0') + ++optind; + + if (temp == NULL || c == ':') + { + if (opterr) + { + if (posixly_correct) + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, _("%s: illegal option -- %c\n"), + argv[0], c); + else + fprintf (stderr, _("%s: invalid option -- %c\n"), + argv[0], c); + } + optopt = c; + return '?'; + } + /* Convenience. Treat POSIX -W foo same as long option --foo */ + if (temp[0] == 'W' && temp[1] == ';') + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = 0; + int option_index; + + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + optind++; + } + else if (optind == argc) + { + if (opterr) + { + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + return c; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + optarg = argv[optind++]; + + /* optarg is now the argument, see if it's in the + table of longopts. */ + + for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp (p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) == strlen (p->name)) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else + /* Second or later nonexact match found. */ + ambig = 1; + } + if (ambig && !exact) + { + if (opterr) + fprintf (stderr, _("%s: option '-W %s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen (nextchar); + optind++; + return '?'; + } + if (pfound != NULL) + { + option_index = indfound; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + fprintf (stderr, _("\ +%s: option '-W %s' doesn't allow an argument\n"), + argv[0], pfound->name); + + nextchar += strlen (nextchar); + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf (stderr, + _("%s: option '%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen (nextchar); + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen (nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + nextchar = NULL; + return 'W'; /* Let the application handle it. */ + } + if (temp[1] == ':') + { + if (temp[2] == ':') + { + /* This is an option that accepts an argument optionally. */ + if (*nextchar != '\0') + { + optarg = nextchar; + optind++; + } + else + optarg = NULL; + nextchar = NULL; + } + else + { + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + optind++; + } + else if (optind == argc) + { + if (opterr) + { + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, + _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + optarg = argv[optind++]; + nextchar = NULL; + } + } + return c; + } +} + +int +getopt (int argc, char *const *argv, const char *optstring) +{ + return _getopt_internal (argc, argv, optstring, + (const struct option *) 0, + (int *) 0, + 0); +} + +#endif /* Not ELIDE_CODE. */ + +#ifdef TEST + +/* Compile with -DTEST to make an executable for use in testing + the above definition of `getopt'. */ + +int +main (int argc, char **argv) +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + + c = getopt (argc, argv, "abc:d:0123456789"); + if (c == -1) + break; + + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value '%s'\n", optarg); + break; + + case '?': + break; + + default: + printf ("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) + { + printf ("non-option ARGV-elements: "); + while (optind < argc) + printf ("%s ", argv[optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ diff --git a/local/recipes/dev/gnu-make/source/src/getopt.h b/local/recipes/dev/gnu-make/source/src/getopt.h new file mode 100644 index 0000000000..f96172d0c5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/getopt.h @@ -0,0 +1,130 @@ +/* Declarations for getopt. +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. + +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 . */ + +#ifndef _GETOPT_H +#define _GETOPT_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +extern char *optarg; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +extern int optind; + +/* Callers store zero here to inhibit the error message `getopt' prints + for unrecognized options. */ + +extern int opterr; + +/* Set to an option character which was unrecognized. */ + +extern int optopt; + +/* Describe the long-named options requested by the application. + The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector + of `struct option' terminated by an element containing a name which is + zero. + + The field `has_arg' is: + no_argument (or 0) if the option does not take an argument, + required_argument (or 1) if the option requires an argument, + optional_argument (or 2) if the option takes an optional argument. + + If the field `flag' is not NULL, it points to a variable that is set + to the value given in the field `val' when the option is found, but + left unchanged if the option is not found. + + To have a long-named option do something other than set an `int' to + a compiled-in constant, such as set a value from `optarg', set the + option's `flag' field to zero and its `val' field to a nonzero + value (the equivalent single-letter option character, if there is + one). For long options that have a zero `flag' field, `getopt' + returns the contents of the `val' field. */ + +struct option +{ +#if defined (__STDC__) && __STDC__ + const char *name; +#else + char *name; +#endif + /* has_arg can't be an enum because some compilers complain about + type mismatches in all the code that assumes it is an int. */ + int has_arg; + int *flag; + int val; +}; + +/* Names for the values of the `has_arg' field of `struct option'. */ + +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +#if defined (__STDC__) && __STDC__ +#ifdef __GNU_LIBRARY__ +/* Many other libraries have conflicting prototypes for getopt, with + differences in the consts, in stdlib.h. To avoid compilation + errors, only prototype getopt for the GNU C library. */ +extern int getopt (int argc, char *const *argv, const char *shortopts); +#else /* not __GNU_LIBRARY__ */ +extern int getopt (); +#endif /* __GNU_LIBRARY__ */ +extern int getopt_long (int argc, char *const *argv, const char *shortopts, + const struct option *longopts, int *longind); +extern int getopt_long_only (int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind); + +/* Internal only. Users should not call this directly. */ +extern int _getopt_internal (int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind, + int long_only); +#else /* not __STDC__ */ +extern int getopt (); +extern int getopt_long (); +extern int getopt_long_only (); + +extern int _getopt_internal (); +#endif /* __STDC__ */ + +#ifdef __cplusplus +} +#endif + +#endif /* getopt.h */ diff --git a/local/recipes/dev/gnu-make/source/src/getopt1.c b/local/recipes/dev/gnu-make/source/src/getopt1.c new file mode 100644 index 0000000000..85eefe00d2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/getopt1.c @@ -0,0 +1,180 @@ +/* getopt_long and getopt_long_only entry points for GNU getopt. +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. + +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 . */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "getopt.h" + +#if !defined __STDC__ || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +#ifndef const +#define const +#endif +#endif + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 +#include +#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +#define ELIDE_CODE +#endif +#endif + +#ifdef __redox__ +#define ELIDE_CODE +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +#include +#endif + +#ifndef NULL +#define NULL 0 +#endif + +int +getopt_long (int argc, char *const *argv, const char *options, + const struct option *long_options, int *opt_index) +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 0); +} + +/* Like getopt_long, but '-' as well as '--' can indicate a long option. + If an option that starts with '-' (not '--') doesn't match a long option, + but does match a short option, it is parsed as a short option + instead. */ + +int +getopt_long_only (int argc, char *const *argv, const char *options, + const struct option *long_options, int *opt_index) +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 1); +} + + +#endif /* Not ELIDE_CODE. */ + +#ifdef TEST + +#include + +int +main (int argc, char **argv) +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + int option_index = 0; + static struct option long_options[] = + { + {"add", 1, 0, 0}, + {"append", 0, 0, 0}, + {"delete", 1, 0, 0}, + {"verbose", 0, 0, 0}, + {"create", 0, 0, 0}, + {"file", 1, 0, 0}, + {0, 0, 0, 0} + }; + + c = getopt_long (argc, argv, "abc:d:0123456789", + long_options, &option_index); + if (c == -1) + break; + + switch (c) + { + case 0: + printf ("option %s", long_options[option_index].name); + if (optarg) + printf (" with arg %s", optarg); + printf ("\n"); + break; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value '%s'\n", optarg); + break; + + case 'd': + printf ("option d with value '%s'\n", optarg); + break; + + case '?': + break; + + default: + printf ("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) + { + printf ("non-option ARGV-elements: "); + while (optind < argc) + printf ("%s ", argv[optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ diff --git a/local/recipes/dev/gnu-make/source/src/gettext.h b/local/recipes/dev/gnu-make/source/src/gettext.h new file mode 100644 index 0000000000..9498fadaf0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/gettext.h @@ -0,0 +1,57 @@ +/* Convenience header for conditional use of GNU . +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 +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 . */ + +#ifndef _LIBGETTEXT_H +#define _LIBGETTEXT_H 1 + +/* NLS can be disabled through the configure --disable-nls option. */ +#if ENABLE_NLS + +/* Get declarations of GNU message catalog functions. */ +# include + +#else + +/* 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". */ +# define gettext(Msgid) ((const char *) (Msgid)) +# define dgettext(Domainname, Msgid) ((const char *) (Msgid)) +# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid)) +# define ngettext(Msgid1, Msgid2, N) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define dngettext(Domainname, Msgid1, Msgid2, N) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define textdomain(Domainname) ((const char *) (Domainname)) +# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) +# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset)) + +#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 + +#endif /* _LIBGETTEXT_H */ diff --git a/local/recipes/dev/gnu-make/source/src/gmk-default.h b/local/recipes/dev/gnu-make/source/src/gmk-default.h new file mode 100644 index 0000000000..9fa09a6e7c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/gmk-default.h @@ -0,0 +1,28 @@ +static const char *const GUILE_module_defn = " \ +(define (to-string-maybe x) \ + (cond \ + ((or (not x) \ + (unspecified? x) \ + (variable? x) \ + (null? x) \ + (and (string? x) (string-null? x))) \ + #f) \ + ((eq? x #t) \"#t\") \ + ((or (symbol? x) (number? x)) \ + (object->string x)) \ + ((char? x) \ + (string x)) \ + ((and (string? x) (string-every char-set:printing x)) \ + x) \ + (else (error \"Unknown object:\" x)))) \ +(define (obj-to-str x) \ + (let ((acc '())) \ + (define (walk x) \ + (cond ((pair? x) (walk (car x)) (walk (cdr x))) \ + ((to-string-maybe x) => (lambda (s) (set! acc (cons s acc)))))) \ + (walk x) \ + (string-join (reverse! acc)))) \ +(define (gmk-var v) \ + (gmk-expand (format #f \"$(~a)\" (obj-to-str v)))) \ +(export gmk-expand gmk-eval gmk-var) \ +"; diff --git a/local/recipes/dev/gnu-make/source/src/gmk-default.scm b/local/recipes/dev/gnu-make/source/src/gmk-default.scm new file mode 100644 index 0000000000..033a32e6ce --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/gmk-default.scm @@ -0,0 +1,53 @@ +;; Contents of the (gnu make) Guile module +;; 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 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 . + +(define (to-string-maybe x) + (cond + ;; In GNU make, "false" is the empty string + ((or (not x) + (unspecified? x) + (variable? x) + (null? x) + (and (string? x) (string-null? x))) + #f) + ;; We want something not false... not sure about this + ((eq? x #t) "#t") + ;; Basics + ((or (symbol? x) (number? x)) + (object->string x)) + ((char? x) + (string x)) + ;; Printable string (no special characters) + ((and (string? x) (string-every char-set:printing x)) + x) + ;; No idea: fail + (else (error "Unknown object:" x)))) + +(define (obj-to-str x) + (let ((acc '())) + (define (walk x) + (cond ((pair? x) (walk (car x)) (walk (cdr x))) + ((to-string-maybe x) => (lambda (s) (set! acc (cons s acc)))))) + (walk x) + (string-join (reverse! acc)))) + +;; Return the value of the GNU make variable V +(define (gmk-var v) + (gmk-expand (format #f "$(~a)" (obj-to-str v)))) + +;; Export the public interfaces +(export gmk-expand gmk-eval gmk-var) diff --git a/local/recipes/dev/gnu-make/source/src/gnumake.h b/local/recipes/dev/gnu-make/source/src/gnumake.h new file mode 100644 index 0000000000..4e796e58da --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/gnumake.h @@ -0,0 +1,79 @@ +/* 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-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 . */ + +#ifndef _GNUMAKE_H_ +#define _GNUMAKE_H_ + +/* Specify the location of elements read from makefiles. */ +typedef struct + { + const char *filenm; + unsigned long lineno; + } gmk_floc; + +typedef char *(*gmk_func_ptr)(const char *nm, unsigned int argc, char **argv); + +#ifdef _WIN32 +# ifdef GMK_BUILDING_MAKE +# define GMK_EXPORT __declspec(dllexport) +# else +# define GMK_EXPORT __declspec(dllimport) +# endif +#else +# define GMK_EXPORT +#endif + +/* Free memory returned by the gmk_expand() function. */ +GMK_EXPORT void gmk_free (char *str); + +/* Allocate memory in GNU make's context. */ +GMK_EXPORT char *gmk_alloc (unsigned int len); + +/* Run $(eval ...) on the provided string BUFFER. */ +GMK_EXPORT void gmk_eval (const char *buffer, const gmk_floc *floc); + +/* Run GNU make expansion on the provided string STR. + Returns an allocated buffer that the caller must free with gmk_free(). */ +GMK_EXPORT char *gmk_expand (const char *str); + +/* Register a new GNU make function NAME (maximum of 255 chars long). + When the function is expanded in the makefile, FUNC will be invoked with + the appropriate arguments. + + The return value of FUNC must be either NULL, in which case it expands to + the empty string, or a pointer to the result of the expansion in a string + created by gmk_alloc(). GNU make will free the memory when it's done. + + MIN_ARGS is the minimum number of arguments the function requires. + MAX_ARGS is the maximum number of arguments (or 0 if there's no maximum). + MIN_ARGS and MAX_ARGS may not exceed 255. + + The FLAGS value may be GMK_FUNC_DEFAULT, or one or more of the following + flags OR'd together: + + GMK_FUNC_NOEXPAND: the arguments to the function will be not be expanded + before FUNC is called. +*/ +GMK_EXPORT void gmk_add_function (const char *name, gmk_func_ptr func, + unsigned int min_args, unsigned int max_args, + unsigned int flags); + +#define GMK_FUNC_DEFAULT 0x00 +#define GMK_FUNC_NOEXPAND 0x01 + +#endif /* _GNUMAKE_H_ */ diff --git a/local/recipes/dev/gnu-make/source/src/guile.c b/local/recipes/dev/gnu-make/source/src/guile.c new file mode 100644 index 0000000000..32f6317642 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/guile.c @@ -0,0 +1,159 @@ +/* GNU Guile interface for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#ifdef HAVE_GUILE + +#include "gnumake.h" + +#include "debug.h" +#include "filedef.h" +#include "dep.h" +#include "variable.h" + +#include + +/* Pre-2.0 versions of Guile don't have a typedef for gsubr function types. */ +#if SCM_MAJOR_VERSION < 2 +# define GSUBR_TYPE SCM (*) () +/* Guile 1.x doesn't really support i18n. */ +# define EVAL_STRING(_s) scm_c_eval_string (_s) +#else +# define GSUBR_TYPE scm_t_subr +# define EVAL_STRING(_s) scm_eval_string (scm_from_utf8_string (_s)) +#endif + +static SCM make_mod = SCM_EOL; +static SCM obj_to_str = SCM_EOL; + +/* Convert an SCM object into a string. */ +static char * +cvt_scm_to_str (SCM obj) +{ + return scm_to_locale_string (scm_call_1 (obj_to_str, obj)); +} + +/* Perform the GNU make expansion function. */ +static SCM +guile_expand_wrapper (SCM obj) +{ + char *str = cvt_scm_to_str (obj); + SCM ret; + char *res; + + DB (DB_BASIC, (_("guile: Expanding '%s'\n"), str)); + res = gmk_expand (str); + ret = scm_from_locale_string (res); + + free (str); + free (res); + + return ret; +} + +/* Perform the GNU make eval function. */ +static SCM +guile_eval_wrapper (SCM obj) +{ + char *str = cvt_scm_to_str (obj); + + DB (DB_BASIC, (_("guile: Evaluating '%s'\n"), str)); + gmk_eval (str, 0); + + return SCM_BOOL_F; +} + +/* Invoked by scm_c_define_module(), in the context of the GNU make module. */ +static void +guile_define_module (void *data UNUSED) +{ +/* Ingest the predefined Guile module for GNU make. */ +#include "gmk-default.h" + + /* Register a subr for GNU make's eval capability. */ + scm_c_define_gsubr ("gmk-expand", 1, 0, 0, (GSUBR_TYPE) guile_expand_wrapper); + + /* Register a subr for GNU make's eval capability. */ + scm_c_define_gsubr ("gmk-eval", 1, 0, 0, (GSUBR_TYPE) guile_eval_wrapper); + + /* Define the rest of the module. */ + scm_c_eval_string (GUILE_module_defn); +} + +/* Initialize the GNU make Guile module. */ +static void * +guile_init (void *arg UNUSED) +{ + /* Define the module. */ + make_mod = scm_c_define_module ("gnu make", guile_define_module, NULL); + + /* Get a reference to the object-to-string translator, for later. */ + obj_to_str = scm_variable_ref (scm_c_module_lookup (make_mod, "obj-to-str")); + + /* Import the GNU make module exports into the generic space. */ + scm_c_eval_string ("(use-modules (gnu make))"); + + return NULL; +} + +static void * +internal_guile_eval (void *arg) +{ + return cvt_scm_to_str (EVAL_STRING (arg)); +} + +/* This is the function registered with make */ +static char * +func_guile (const char *funcname UNUSED, unsigned int argc UNUSED, char **argv) +{ + static int init = 0; + + if (! init) + { + /* Initialize the Guile interpreter. */ + scm_with_guile (guile_init, NULL); + init = 1; + } + + if (argv[0] && argv[0][0] != '\0') + return scm_with_guile (internal_guile_eval, argv[0]); + + return NULL; +} + +/* ----- Public interface ----- */ + +/* We could send the flocp to define_new_function(), but since guile is + "kind of" built-in, that didn't seem so useful. */ +int +guile_gmake_setup (const floc *flocp UNUSED) +{ + /* Create a make function "guile". */ + gmk_add_function ("guile", func_guile, 0, 1, GMK_FUNC_DEFAULT); + + return 1; +} + +#else + +int +guile_gmake_setup (const floc *flocp UNUSED) +{ + return 1; +} + +#endif diff --git a/local/recipes/dev/gnu-make/source/src/hash.c b/local/recipes/dev/gnu-make/source/src/hash.c new file mode 100644 index 0000000000..5d7ea81b28 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/hash.c @@ -0,0 +1,495 @@ +/* hash.c -- hash table maintenance +Copyright (C) 1995, 1999, 2002, 2010 Free Software Foundation, Inc. +Written by Greg McGary + +GNU Make is free software; you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include "hash.h" +#include + +#define CALLOC(t, n) ((t *) xcalloc (sizeof (t) * (n))) +#define MALLOC(t, n) ((t *) xmalloc (sizeof (t) * (n))) +#define REALLOC(o, t, n) ((t *) xrealloc ((o), sizeof (t) * (n))) +#define CLONE(o, t, n) ((t *) memcpy (MALLOC (t, (n)), (o), sizeof (t) * (n))) + +static void hash_rehash __P((struct hash_table* ht)); +static unsigned long round_up_2 __P((unsigned long rough)); + +/* Implement double hashing with open addressing. The table size is + always a power of two. The secondary ('increment') hash function + is forced to return an odd-value, in order to be relatively prime + to the table size. This guarantees that the increment can + potentially hit every slot in the table during collision + resolution. */ + +void *hash_deleted_item = &hash_deleted_item; + +/* Force the table size to be a power of two, possibly rounding up the + given size. */ + +void +hash_init (struct hash_table *ht, unsigned long size, + hash_func_t hash_1, hash_func_t hash_2, hash_cmp_func_t hash_cmp) +{ + ht->ht_size = round_up_2 (size); + ht->ht_empty_slots = 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 (void *)); + exit (MAKE_TROUBLE); + } + + ht->ht_capacity = ht->ht_size - (ht->ht_size / 16); /* 93.75% loading factor */ + ht->ht_fill = 0; + ht->ht_collisions = 0; + ht->ht_lookups = 0; + ht->ht_rehashes = 0; + ht->ht_hash_1 = hash_1; + ht->ht_hash_2 = hash_2; + ht->ht_compare = hash_cmp; +} + +/* Load an array of items into 'ht'. */ + +void +hash_load (struct hash_table *ht, void *item_table, + unsigned long cardinality, unsigned long size) +{ + char *items = (char *) item_table; + while (cardinality--) + { + hash_insert (ht, items); + items += size; + } +} + +/* Returns the address of the table slot matching 'key'. If 'key' is + not found, return the address of an empty slot suitable for + inserting 'key'. The caller is responsible for incrementing + ht_fill on insertion. */ + +void ** +hash_find_slot (struct hash_table *ht, const void *key) +{ + void **slot; + void **deleted_slot = 0; + unsigned int hash_2 = 0; + unsigned int hash_1 = (*ht->ht_hash_1) (key); + + ht->ht_lookups++; + for (;;) + { + hash_1 &= (ht->ht_size - 1); + slot = &ht->ht_vec[hash_1]; + + if (*slot == 0) + return (deleted_slot ? deleted_slot : slot); + if (*slot == hash_deleted_item) + { + if (deleted_slot == 0) + deleted_slot = slot; + } + else + { + if (key == *slot) + return slot; + if ((*ht->ht_compare) (key, *slot) == 0) + return slot; + ht->ht_collisions++; + } + if (!hash_2) + hash_2 = (*ht->ht_hash_2) (key) | 1; + hash_1 += hash_2; + } +} + +void * +hash_find_item (struct hash_table *ht, const void *key) +{ + void **slot = hash_find_slot (ht, key); + return ((HASH_VACANT (*slot)) ? 0 : *slot); +} + +void * +hash_insert (struct hash_table *ht, const void *item) +{ + void **slot = hash_find_slot (ht, item); + const void *old_item = *slot; + hash_insert_at (ht, item, slot); + return (void *)((HASH_VACANT (old_item)) ? 0 : old_item); +} + +void * +hash_insert_at (struct hash_table *ht, const void *item, const void *slot) +{ + const void *old_item = *(void **) slot; + if (HASH_VACANT (old_item)) + { + ht->ht_fill++; + if (old_item == 0) + ht->ht_empty_slots--; + old_item = item; + } + *(void const **) slot = item; + if (ht->ht_empty_slots < ht->ht_size - ht->ht_capacity) + { + hash_rehash (ht); + return (void *) hash_find_slot (ht, item); + } + else + return (void *) slot; +} + +void * +hash_delete (struct hash_table *ht, const void *item) +{ + void **slot = hash_find_slot (ht, item); + return hash_delete_at (ht, slot); +} + +void * +hash_delete_at (struct hash_table *ht, const void *slot) +{ + void *item = *(void **) slot; + if (!HASH_VACANT (item)) + { + *(void const **) slot = hash_deleted_item; + ht->ht_fill--; + return item; + } + else + return 0; +} + +void +hash_free_items (struct hash_table *ht) +{ + void **vec = ht->ht_vec; + void **end = &vec[ht->ht_size]; + for (; vec < end; vec++) + { + void *item = *vec; + if (!HASH_VACANT (item)) + free (item); + *vec = 0; + } + ht->ht_fill = 0; + ht->ht_empty_slots = ht->ht_size; +} + +void +hash_delete_items (struct hash_table *ht) +{ + void **vec = ht->ht_vec; + void **end = &vec[ht->ht_size]; + for (; vec < end; vec++) + *vec = 0; + ht->ht_fill = 0; + ht->ht_collisions = 0; + ht->ht_lookups = 0; + ht->ht_rehashes = 0; + ht->ht_empty_slots = ht->ht_size; +} + +void +hash_free (struct hash_table *ht, int free_items) +{ + if (free_items) + hash_free_items (ht); + else + { + ht->ht_fill = 0; + ht->ht_empty_slots = ht->ht_size; + } + free (ht->ht_vec); + ht->ht_vec = 0; + ht->ht_capacity = 0; +} + +void +hash_map (struct hash_table *ht, hash_map_func_t map) +{ + void **slot; + void **end = &ht->ht_vec[ht->ht_size]; + + for (slot = ht->ht_vec; slot < end; slot++) + { + if (!HASH_VACANT (*slot)) + (*map) (*slot); + } +} + +void +hash_map_arg (struct hash_table *ht, hash_map_arg_func_t map, void *arg) +{ + void **slot; + void **end = &ht->ht_vec[ht->ht_size]; + + for (slot = ht->ht_vec; slot < end; slot++) + { + if (!HASH_VACANT (*slot)) + (*map) (*slot, arg); + } +} + +/* Double the size of the hash table in the event of overflow... */ + +static void +hash_rehash (struct hash_table *ht) +{ + unsigned long old_ht_size = ht->ht_size; + void **old_vec = ht->ht_vec; + void **ovp; + + if (ht->ht_fill >= ht->ht_capacity) + { + ht->ht_size *= 2; + ht->ht_capacity = ht->ht_size - (ht->ht_size >> 4); + } + ht->ht_rehashes++; + ht->ht_vec = CALLOC (void *, ht->ht_size); + + for (ovp = old_vec; ovp < &old_vec[old_ht_size]; ovp++) + { + if (! HASH_VACANT (*ovp)) + { + void **slot = hash_find_slot (ht, *ovp); + *slot = *ovp; + } + } + ht->ht_empty_slots = ht->ht_size - ht->ht_fill; + free (old_vec); +} + +void +hash_print_stats (struct hash_table *ht, FILE *out_FILE) +{ + fprintf (out_FILE, _("Load=%lu/%lu=%.0f%%, "), ht->ht_fill, ht->ht_size, + 100.0 * (double) ht->ht_fill / (double) ht->ht_size); + fprintf (out_FILE, _("Rehash=%u, "), ht->ht_rehashes); + fprintf (out_FILE, _("Collisions=%lu/%lu=%.0f%%"), ht->ht_collisions, ht->ht_lookups, + (ht->ht_lookups + ? (100.0 * (double) ht->ht_collisions / (double) ht->ht_lookups) + : 0)); +} + +/* Dump all items into a NULL-terminated vector. Use the + user-supplied vector, or malloc one. */ + +void ** +hash_dump (struct hash_table *ht, void **vector_0, qsort_cmp_t compare) +{ + void **vector; + void **slot; + void **end = &ht->ht_vec[ht->ht_size]; + + if (vector_0 == 0) + vector_0 = MALLOC (void *, ht->ht_fill + 1); + vector = vector_0; + + for (slot = ht->ht_vec; slot < end; slot++) + if (!HASH_VACANT (*slot)) + *vector++ = *slot; + *vector = 0; + + if (compare) + qsort (vector_0, ht->ht_fill, sizeof (void *), compare); + return vector_0; +} + +/* Round a given number up to the nearest power of 2. */ + +static unsigned long +round_up_2 (unsigned long n) +{ + n |= (n >> 1); + n |= (n >> 2); + n |= (n >> 4); + n |= (n >> 8); + n |= (n >> 16); + +#if !defined(HAVE_LIMITS_H) || ULONG_MAX > 4294967295 + /* We only need this on systems where unsigned long is >32 bits. */ + n |= (n >> 32); +#endif + + return n + 1; +} + +#define rol32(v, n) \ + ((v) << (n) | ((v) >> (32 - (n)))) + +/* jhash_mix -- mix 3 32-bit values reversibly. */ +#define jhash_mix(a, b, c) \ +{ \ + a -= c; a ^= rol32(c, 4); c += b; \ + b -= a; b ^= rol32(a, 6); a += c; \ + c -= b; c ^= rol32(b, 8); b += a; \ + a -= c; a ^= rol32(c, 16); c += b; \ + b -= a; b ^= rol32(a, 19); a += c; \ + c -= b; c ^= rol32(b, 4); b += a; \ +} + +/* jhash_final - final mixing of 3 32-bit values (a,b,c) into c */ +#define jhash_final(a, b, c) \ +{ \ + c ^= b; c -= rol32(b, 14); \ + a ^= c; a -= rol32(c, 11); \ + b ^= a; b -= rol32(a, 25); \ + c ^= b; c -= rol32(b, 16); \ + a ^= c; a -= rol32(c, 4); \ + b ^= a; b -= rol32(a, 14); \ + c ^= b; c -= rol32(b, 24); \ +} + +/* An arbitrary initial parameter */ +#define JHASH_INITVAL 0xdeadbeef + +#define sum_get_unaligned_32(r, p) \ + do { \ + unsigned int val; \ + memcpy(&val, (p), 4); \ + r += val; \ + } while(0); + +unsigned int +jhash(unsigned const char *k, int length) +{ + unsigned int a, b, c; + + /* Set up the internal state */ + a = b = c = JHASH_INITVAL + length; + + /* All but the last block: affect some 32 bits of (a,b,c) */ + while (length > 12) { + sum_get_unaligned_32(a, k); + sum_get_unaligned_32(b, k + 4); + sum_get_unaligned_32(c, k + 8); + jhash_mix(a, b, c); + length -= 12; + k += 12; + } + + if (!length) + return c; + + if (length > 8) + { + sum_get_unaligned_32(a, k); + length -= 4; + k += 4; + } + if (length > 4) + { + sum_get_unaligned_32(b, k); + length -= 4; + k += 4; + } + + if (length == 4) + c += (unsigned)k[3]<<24; + if (length >= 3) + c += (unsigned)k[2]<<16; + if (length >= 2) + c += (unsigned)k[1]<<8; + c += k[0]; + jhash_final(a, b, c); + return c; +} + +#define UINTSZ sizeof (unsigned int) + +#ifdef WORDS_BIGENDIAN +/* The ifs are ordered from the first byte in memory to the last. */ +#define sum_up_to_nul(r, p, plen, flag) \ + do { \ + unsigned int val = 0; \ + size_t pn = (plen); \ + size_t n = pn < UINTSZ ? pn : UINTSZ; \ + memcpy (&val, (p), n); \ + if ((val & 0xFF000000) == 0) \ + flag = 1; \ + else if ((val & 0xFF0000) == 0) \ + r += val & ~0xFFFF, flag = 1; \ + else if ((val & 0xFF00) == 0) \ + r += val & ~0xFF, flag = 1; \ + else \ + r += val, flag = (val & 0xFF) == 0; \ + } while (0) +#else +/* First detect the presence of zeroes. If there is none, we can + sum the 4 bytes directly. Otherwise, the ifs are ordered as in the + big endian case, from the first byte in memory to the last. */ +#define sum_up_to_nul(r, p, plen, flag) \ + do { \ + unsigned int val = 0; \ + size_t pn = (plen); \ + size_t n = pn < UINTSZ ? pn : UINTSZ; \ + memcpy (&val, (p), n); \ + flag = ((val - 0x01010101) & ~val) & 0x80808080; \ + if (!flag) \ + r += val; \ + else if (val & 0xFF) \ + { \ + if ((val & 0xFF00) == 0) \ + r += val & 0xFF; \ + else if ((val & 0xFF0000) == 0) \ + r += val & 0xFFFF; \ + else \ + r += val; \ + } \ + } while (0) +#endif + +unsigned int +jhash_string(unsigned const char *k) +{ + unsigned int a, b, c; + unsigned int have_nul = 0; + unsigned const char *start = k; + size_t klen = strlen ((const char*)k); + + /* Set up the internal state */ + a = b = c = JHASH_INITVAL; + + /* All but the last block: affect some 32 bits of (a,b,c) */ + for (;;) { + sum_up_to_nul(a, k, klen, have_nul); + if (have_nul) + break; + k += UINTSZ; + assert (klen >= UINTSZ); + klen -= UINTSZ; + + sum_up_to_nul(b, k, klen, have_nul); + if (have_nul) + break; + k += UINTSZ; + assert (klen >= UINTSZ); + klen -= UINTSZ; + + sum_up_to_nul(c, k, klen, have_nul); + if (have_nul) + break; + k += UINTSZ; + assert (klen >= UINTSZ); + klen -= UINTSZ; + jhash_mix(a, b, c); + } + + jhash_final(a, b, c); + return c + (unsigned) (k - start); +} diff --git a/local/recipes/dev/gnu-make/source/src/hash.h b/local/recipes/dev/gnu-make/source/src/hash.h new file mode 100644 index 0000000000..deaceab6b6 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/hash.h @@ -0,0 +1,234 @@ +/* hash.h -- decls for hash table +Copyright (C) 1995, 1999, 2002, 2010 Free Software Foundation, Inc. +Written by Greg McGary + +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 . */ + +#ifndef _hash_h_ +#define _hash_h_ + +#include +#include + +#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32 +# if !defined __GLIBC__ || !defined __P +# undef __P +# define __P(protos) protos +# endif +#else /* Not C++ or ANSI C. */ +# undef __P +# define __P(protos) () +/* We can get away without defining 'const' here only because in this file + it is used only inside the prototype for 'fnmatch', which is elided in + non-ANSI C where 'const' is problematical. */ +#endif /* C++ or ANSI C. */ + +typedef unsigned long (*hash_func_t) __P((void const *key)); +typedef int (*hash_cmp_func_t) __P((void const *x, void const *y)); +typedef void (*hash_map_func_t) __P((void const *item)); +typedef void (*hash_map_arg_func_t) __P((void const *item, void *arg)); + +struct hash_table +{ + void **ht_vec; + hash_func_t ht_hash_1; /* primary hash function */ + hash_func_t ht_hash_2; /* secondary hash function */ + hash_cmp_func_t ht_compare; /* comparison function */ + unsigned long ht_size; /* total number of slots (power of 2) */ + unsigned long ht_capacity; /* usable slots, limited by loading-factor */ + unsigned long ht_fill; /* items in table */ + unsigned long ht_empty_slots; /* empty slots not including deleted slots */ + unsigned long ht_collisions; /* # of failed calls to comparison function */ + unsigned long ht_lookups; /* # of queries */ + unsigned int ht_rehashes; /* # of times we've expanded 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)); +void hash_load __P((struct hash_table *ht, void *item_table, + 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)); +void *hash_insert_at __P((struct hash_table *ht, const void *item, void const *slot)); +void *hash_delete __P((struct hash_table *ht, void const *item)); +void *hash_delete_at __P((struct hash_table *ht, void const *slot)); +void hash_delete_items __P((struct hash_table *ht)); +void hash_free_items __P((struct hash_table *ht)); +void hash_free __P((struct hash_table *ht, int free_items)); +void hash_map __P((struct hash_table *ht, hash_map_func_t map)); +void hash_map_arg __P((struct hash_table *ht, hash_map_arg_func_t map, void *arg)); +void hash_print_stats __P((struct hash_table *ht, FILE *out_FILE)); +void **hash_dump __P((struct hash_table *ht, void **vector_0, qsort_cmp_t compare)); + +extern unsigned jhash(unsigned char const *key, int n); +extern unsigned jhash_string(unsigned char const *key); + +extern void *hash_deleted_item; +#define HASH_VACANT(item) ((item) == 0 || (void *) (item) == hash_deleted_item) + + +/* hash and comparison macros for case-sensitive string keys. */ + +/* Due to the strcache, it's not uncommon for the string pointers to + be identical. Take advantage of that to short-circuit string compares. */ + +#define STRING_HASH_1(KEY, RESULT) do { \ + unsigned char const *_key_ = (unsigned char const *) (KEY); \ + (RESULT) += jhash_string(_key_); \ +} while (0) +#define return_STRING_HASH_1(KEY) do { \ + unsigned long _result_ = 0; \ + STRING_HASH_1 ((KEY), _result_); \ + return _result_; \ +} while (0) + +/* No need for a second hash because jhash already provides + pretty good results. However, do evaluate the arguments + to avoid warnings. */ +#define STRING_HASH_2(KEY, RESULT) do { \ + (void)(KEY); \ +} while (0) +#define return_STRING_HASH_2(KEY) do { \ + unsigned long _result_ = 0; \ + STRING_HASH_2 ((KEY), _result_); \ + return _result_; \ +} while (0) + +#define STRING_COMPARE(X, Y, RESULT) do { \ + RESULT = (X) == (Y) ? 0 : strcmp ((X), (Y)); \ +} while (0) +#define return_STRING_COMPARE(X, Y) do { \ + return (X) == (Y) ? 0 : strcmp ((X), (Y)); \ +} while (0) + + +#define STRING_N_HASH_1(KEY, N, RESULT) do { \ + unsigned char const *_key_ = (unsigned char const *) (KEY); \ + (RESULT) += jhash(_key_, N); \ +} while (0) + +#define return_STRING_N_HASH_1(KEY, N) do { \ + unsigned long _result_ = 0; \ + STRING_N_HASH_1 ((KEY), (N), _result_); \ + return _result_; \ +} while (0) + +/* No need for a second hash because jhash already provides + pretty good results. However, do evaluate the arguments + to avoid warnings. */ +#define STRING_N_HASH_2(KEY, N, RESULT) do { \ + (void)(KEY); \ + (void)(N); \ +} while (0) + +#define return_STRING_N_HASH_2(KEY, N) do { \ + unsigned long _result_ = 0; \ + STRING_N_HASH_2 ((KEY), (N), _result_); \ + return _result_; \ +} while (0) + +#define STRING_N_COMPARE(X, Y, N, RESULT) do { \ + RESULT = (X) == (Y) ? 0 : memcmp ((X), (Y), (N)); \ +} while (0) +#define return_STRING_N_COMPARE(X, Y, N) do { \ + return (X) == (Y) ? 0 : memcmp ((X), (Y), (N)); \ +} while (0) + +#ifdef HAVE_CASE_INSENSITIVE_FS + +/* hash and comparison macros for case-insensitive string _key_s. */ + +#define ISTRING_HASH_1(KEY, RESULT) do { \ + unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \ + while (*++_key_) \ + (RESULT) += (tolower (*_key_) << (_key_[1] & 0xf)); \ +} while (0) +#define return_ISTRING_HASH_1(KEY) do { \ + unsigned long _result_ = 0; \ + ISTRING_HASH_1 ((KEY), _result_); \ + return _result_; \ +} while (0) + +#define ISTRING_HASH_2(KEY, RESULT) do { \ + unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \ + while (*++_key_) \ + (RESULT) += (tolower (*_key_) << (_key_[1] & 0x7)); \ +} while (0) +#define return_ISTRING_HASH_2(KEY) do { \ + unsigned long _result_ = 0; \ + ISTRING_HASH_2 ((KEY), _result_); \ + return _result_; \ +} while (0) + +#define ISTRING_COMPARE(X, Y, RESULT) do { \ + RESULT = (X) == (Y) ? 0 : strcasecmp ((X), (Y)); \ +} while (0) +#define return_ISTRING_COMPARE(X, Y) do { \ + return (X) == (Y) ? 0 : strcasecmp ((X), (Y)); \ +} while (0) + +#else + +#define ISTRING_HASH_1(KEY, RESULT) STRING_HASH_1 ((KEY), (RESULT)) +#define return_ISTRING_HASH_1(KEY) return_STRING_HASH_1 (KEY) + +#define ISTRING_HASH_2(KEY, RESULT) STRING_HASH_2 ((KEY), (RESULT)) +#define return_ISTRING_HASH_2(KEY) return_STRING_HASH_2 (KEY) + +#define ISTRING_COMPARE(X, Y, RESULT) STRING_COMPARE ((X), (Y), (RESULT)) +#define return_ISTRING_COMPARE(X, Y) return_STRING_COMPARE ((X), (Y)) + +#endif + +/* hash and comparison macros for integer _key_s. */ + +#define INTEGER_HASH_1(KEY, RESULT) do { \ + (RESULT) += ((unsigned long)(KEY)); \ +} while (0) +#define return_INTEGER_HASH_1(KEY) do { \ + unsigned long _result_ = 0; \ + INTEGER_HASH_1 ((KEY), _result_); \ + return _result_; \ +} while (0) + +#define INTEGER_HASH_2(KEY, RESULT) do { \ + (RESULT) += ~((unsigned long)(KEY)); \ +} while (0) +#define return_INTEGER_HASH_2(KEY) do { \ + unsigned long _result_ = 0; \ + INTEGER_HASH_2 ((KEY), _result_); \ + return _result_; \ +} while (0) + +#define INTEGER_COMPARE(X, Y, RESULT) do { \ + (RESULT) = X - Y; \ +} while (0) +#define return_INTEGER_COMPARE(X, Y) do { \ + int _result_; \ + INTEGER_COMPARE (X, Y, _result_); \ + return _result_; \ +} while (0) + +/* hash and comparison macros for address keys. */ + +#define ADDRESS_HASH_1(KEY, RESULT) INTEGER_HASH_1 (((unsigned long)(KEY)) >> 3, (RESULT)) +#define ADDRESS_HASH_2(KEY, RESULT) INTEGER_HASH_2 (((unsigned long)(KEY)) >> 3, (RESULT)) +#define ADDRESS_COMPARE(X, Y, RESULT) INTEGER_COMPARE ((X), (Y), (RESULT)) +#define return_ADDRESS_HASH_1(KEY) return_INTEGER_HASH_1 (((unsigned long)(KEY)) >> 3) +#define return_ADDRESS_HASH_2(KEY) return_INTEGER_HASH_2 (((unsigned long)(KEY)) >> 3) +#define return_ADDRESS_COMPARE(X, Y) return_INTEGER_COMPARE ((X), (Y)) + +#endif /* not _hash_h_ */ diff --git a/local/recipes/dev/gnu-make/source/src/implicit.c b/local/recipes/dev/gnu-make/source/src/implicit.c new file mode 100644 index 0000000000..a3bd318c07 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/implicit.c @@ -0,0 +1,1159 @@ +/* Implicit rule searching for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include "filedef.h" +#include "rule.h" +#include "dep.h" +#include "debug.h" +#include "variable.h" +#include "job.h" /* struct child, used inside commands.h */ +#include "commands.h" /* set_file_variables */ +#include "shuffle.h" +#include + +static int pattern_search (struct file *file, int archive, + unsigned int depth, unsigned int recursions, + int allow_compat_rules); + +/* For a FILE which has no commands specified, try to figure out some + from the implicit pattern rules. + Returns 1 if a suitable implicit rule was found, + after modifying FILE to contain the appropriate commands and deps, + or returns 0 if no implicit rule was found. */ + +int +try_implicit_rule (struct file *file, unsigned int depth) +{ + DBF (DB_IMPLICIT, _("Looking for an implicit rule for '%s'.\n")); + + /* The order of these searches was previously reversed. My logic now is + that since the non-archive search uses more information in the target + (the archive search omits the archive name), it is more specific and + should come first. */ + + if (pattern_search (file, 0, depth, 0, 0)) + return 1; + +#ifndef NO_ARCHIVES + /* If this is an archive member reference, use just the + archive member name to search for implicit rules. */ + if (ar_name (file->name)) + { + DBF (DB_IMPLICIT, + _("Looking for archive-member implicit rule for '%s'.\n")); + 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 + + return 0; +} + + +/* Scans the BUFFER for the next word with whitespace as a separator. + Returns the pointer to the beginning of the word. LENGTH hold the + length of the word. */ + +static const char * +get_next_word (const char *buffer, size_t *length) +{ + const char *p = buffer, *beg; + char c; + + /* Skip any leading whitespace. */ + NEXT_TOKEN (p); + + beg = p; + c = *(p++); + + if (c == '\0') + return 0; + + + /* We already found the first value of "c", above. */ + while (1) + { + char closeparen; + int count; + + switch (c) + { + case '\0': + case ' ': + case '\t': + goto done_word; + + case '$': + c = *(p++); + if (c == '$') + break; + + /* This is a variable reference, so read it to the matching + close paren. */ + + if (c == '(') + closeparen = ')'; + else if (c == '{') + closeparen = '}'; + else + /* This is a single-letter variable reference. */ + break; + + for (count = 0; *p != '\0'; ++p) + { + if (*p == c) + ++count; + else if (*p == closeparen && --count < 0) + { + ++p; + break; + } + } + break; + + case '|': + goto done; + + default: + break; + } + + c = *(p++); + } + done_word: + --p; + + done: + if (length) + *length = p - beg; + + return beg; +} + +/* This structure stores information about the expanded prerequisites for a + pattern rule. NAME is always set to the strcache'd name of the prereq. + FILE and PATTERN will be set for intermediate files only. IGNORE_MTIME is + copied from the prerequisite we expanded. + */ +struct patdeps + { + const char *name; + const char *pattern; + 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 + to try. +*/ +struct tryrule + { + struct rule *rule; + + /* Stem length for this match. */ + size_t stemlen; + + /* Index of the target in this rule that matched the file. */ + unsigned int matches; + + /* Definition order of this rule. Used to implement stable sort.*/ + unsigned int order; + + /* Nonzero if the LASTSLASH logic was used in matching this rule. */ + char checked_lastslash; + }; + +int +stemlen_compare (const void *v1, const void *v2) +{ + const struct tryrule *r1 = v1; + const struct tryrule *r2 = v2; + int r = (int) (r1->stemlen - r2->stemlen); + return r != 0 ? r : (int) (r1->order - r2->order); +} + +/* Search the pattern rules for a rule with an existing dependency to make + FILE. If a rule is found, the appropriate commands and deps are put in FILE + and 1 is returned. If not, 0 is returned. + + If ARCHIVE is nonzero, FILE->name is of the form "LIB(MEMBER)". A rule for + "(MEMBER)" will be searched for, and "(MEMBER)" will not be chopped up into + directory and filename parts. + + If an intermediate file is found by pattern search, the intermediate file + is set up as a target by the recursive call and is also made a dependency + of FILE. + + DEPTH is used for debugging messages. */ + +static int +pattern_search (struct file *file, int archive, + 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; + + /* Length of FILENAME. */ + size_t namelen = strlen (filename); + + /* The last slash in FILENAME (or nil if there is none). */ + const char *lastslash; + + /* This is a file-object used as an argument in + recursive calls. It never contains any data + except during a recursive call. */ + struct file *int_file = 0; + + /* List of dependencies found recursively. */ + unsigned int max_deps = max_pattern_deps; + struct patdeps *deplist = xmalloc (max_deps * sizeof (struct patdeps)); + struct patdeps *pat = deplist; + + /* Names of possible dependencies are constructed in this buffer. + We may replace % by $(*F) for second expansion, increasing the length. */ + 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; + size_t stemlen = 0; + size_t fullstemlen = 0; + + /* Buffer in which we store all the rules that are possibly applicable. */ + struct tryrule *tryrules = xmalloc (num_pattern_rules * max_pattern_targets + * sizeof (struct tryrule)); + + /* Number of valid elements in TRYRULES. */ + unsigned int nrules; + + /* The index in TRYRULES of the rule we found. */ + unsigned int foundrule; + + /* Nonzero if should consider intermediate files as dependencies. */ + int intermed_ok; + + /* Nonzero if we have initialized file variables for this target. */ + int file_vars_initialized = 0; + + /* Nonzero if we have matched a pattern-rule target + that is not just '%'. */ + int specific_rule_matched = 0; + + unsigned int ri; /* uninit checks OK */ + int found_compat_rule = 0; + struct rule *rule; + + char *pathdir = NULL; + size_t pathlen; + + PATH_VAR (stem_str); /* @@ Need to get rid of stem, stemlen, etc. */ + +#ifndef NO_ARCHIVES + if (archive || ar_name (filename)) + lastslash = 0; + else +#endif + { + /* Set LASTSLASH to point at the last slash in FILENAME + but not counting any slash at the end. (foo/bar/ counts as + bar/ in directory foo/, not empty in directory foo/bar/.) */ + lastslash = memrchr (filename, '/', namelen - 1); +#ifdef VMS + if (lastslash == NULL) + lastslash = strrchr (filename, ']'); + if (lastslash == NULL) + lastslash = strrchr (filename, '>'); + if (lastslash == NULL) + lastslash = strrchr (filename, ':'); +#endif +#ifdef HAVE_DOS_PATHS + /* Handle backslashes (possibly mixed with forward slashes) + and the case of "d:file". */ + { + char *bslash = memrchr (filename, '\\', namelen - 1); + if (lastslash == 0 || bslash > lastslash) + lastslash = bslash; + if (lastslash == 0 && filename[0] && filename[1] == ':') + lastslash = filename + 1; + } +#endif + } + + pathlen = lastslash ? lastslash - filename + 1 : 0; + + /* First see which pattern rules match this target and may be considered. + Put them in TRYRULES. */ + + nrules = 0; + for (rule = pattern_rules; rule != 0; rule = rule->next) + { + unsigned int ti; + + /* If the pattern rule has deps but no commands, ignore it. + Users cancel built-in rules by redefining them without commands. */ + if (rule->deps != 0 && rule->cmds == 0) + continue; + + /* If this rule is in use by a parent pattern_search, + don't use it here. */ + if (rule->in_use) + { + DBS (DB_IMPLICIT, + (_("Avoiding implicit rule recursion for rule '%s'.\n"), + get_rule_defn (rule))); + continue; + } + + for (ti = 0; ti < rule->num; ++ti) + { + const char *target = rule->targets[ti]; + const char *suffix = rule->suffixes[ti]; + char check_lastslash; + + /* Rules that can match any filename and are not terminal + are ignored if we're recursing, so that they cannot be + intermediate files. */ + if (recursions > 0 && target[1] == '\0' && !rule->terminal) + continue; + + if (rule->lens[ti] > namelen) + /* It can't possibly match. */ + continue; + + /* From the lengths of the filename and the pattern parts, + find the stem: the part of the filename that matches the %. */ + stem = filename + (suffix - target - 1); + stemlen = namelen - rule->lens[ti] + 1; + + /* Set CHECK_LASTSLASH if FILENAME contains a directory + prefix and the target pattern does not contain a slash. */ + + check_lastslash = 0; + if (lastslash) + { +#ifdef VMS + check_lastslash = strpbrk (target, "/]>:") == NULL; +#else + check_lastslash = strchr (target, '/') == 0; +#endif +#ifdef HAVE_DOS_PATHS + /* Didn't find it yet: check for DOS-type directories. */ + if (check_lastslash) + { + char *b = strchr (target, '\\'); + check_lastslash = !(b || (target[0] && target[1] == ':')); + } +#endif + } + if (check_lastslash) + { + /* If so, don't include the directory prefix in STEM here. */ + if (pathlen > stemlen) + continue; + stemlen -= pathlen; + stem += pathlen; + } + + /* Check that the rule pattern matches the text before the stem. */ + if (check_lastslash) + { + if (stem > (lastslash + 1) + && !strneq (target, lastslash + 1, stem - lastslash - 1)) + continue; + } + else if (stem > filename + && !strneq (target, filename, stem - filename)) + continue; + + /* Check that the rule pattern matches the text after the stem. + We could test simply use streq, but this way we compare the + first two characters immediately. This saves time in the very + common case where the first character matches because it is a + period. */ + if (*suffix != stem[stemlen] + || (*suffix != '\0' && !streq (&suffix[1], &stem[stemlen + 1]))) + continue; + + /* Record if we match a rule that not all filenames will match. */ + if (target[1] != '\0') + specific_rule_matched = 1; + + /* A rule with no dependencies and no commands exists solely to set + specific_rule_matched when it matches. Don't try to use it. */ + if (rule->deps == 0 && rule->cmds == 0) + continue; + + /* Record this rule in TRYRULES and the index of the matching + target in MATCHES. If several targets of the same rule match, + that rule will be in TRYRULES more than once. */ + tryrules[nrules].rule = rule; + tryrules[nrules].matches = ti; + tryrules[nrules].stemlen = stemlen + (check_lastslash ? pathlen : 0); + tryrules[nrules].order = nrules; + tryrules[nrules].checked_lastslash = check_lastslash; + ++nrules; + } + } + + /* Bail out early if we haven't found any rules. */ + if (nrules == 0) + goto done; + + /* Sort the rules to place matches with the shortest stem first. This + way the most specific rules will be tried first. */ + if (nrules > 1) + qsort (tryrules, nrules, sizeof (struct tryrule), stemlen_compare); + + /* If we have found a matching rule that won't match all filenames, + retroactively reject any non-"terminal" rules that do always match. */ + if (specific_rule_matched) + for (ri = 0; ri < nrules; ++ri) + if (!tryrules[ri].rule->terminal) + { + unsigned int j; + for (j = 0; j < tryrules[ri].rule->num; ++j) + if (tryrules[ri].rule->targets[j][1] == '\0') + { + tryrules[ri].rule = 0; + break; + } + } + + /* Try each rule once without intermediate files, then once with them. */ + 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. */ + for (ri = 0; ri < nrules; ri++) + { + struct dep *dep; + char check_lastslash; + unsigned int failed = 0; + int file_variables_set = 0; + unsigned int deps_found = 0; + /* NPTR points to the part of the prereq we haven't processed. */ + const char *nptr = 0; + int order_only = 0; + unsigned int matches; + + rule = tryrules[ri].rule; + + /* RULE is nil when we discover that a rule, already placed in + TRYRULES, should not be applied. */ + if (rule == 0) + continue; + + /* Reject any terminal rules if we're looking to make intermediate + files. */ + if (intermed_ok && rule->terminal) + continue; + + /* From the lengths of the filename and the matching pattern parts, + find the stem: the part of the filename that matches the %. */ + matches = tryrules[ri].matches; + stem = filename + (rule->suffixes[matches] + - rule->targets[matches]) - 1; + stemlen = (namelen - rule->lens[matches]) + 1; + check_lastslash = tryrules[ri].checked_lastslash; + if (check_lastslash) + { + stem += pathlen; + stemlen -= pathlen; + + /* We need to add the directory prefix, so set it up. */ + if (! pathdir) + { + pathdir = alloca (pathlen + 1); + memcpy (pathdir, filename, pathlen); + pathdir[pathlen] = '\0'; + } + } + + 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"), + check_lastslash ? pathdir : "", + (int) stemlen, stem)); + continue; + } + + if (!check_lastslash) + { + memcpy (stem_str, stem, stemlen); + stem_str[stemlen] = '\0'; + } + else + { + /* We want to prepend the directory from + the original FILENAME onto the stem. */ + memcpy (stem_str, filename, pathlen); + memcpy (stem_str + pathlen, stem, stemlen); + stem_str[pathlen + stemlen] = '\0'; + } + + /* If there are no prerequisites, then this rule matches. */ + if (rule->deps == 0) + break; + + /* Mark this rule as in use so a recursive pattern_search won't try + to use it. */ + rule->in_use = 1; + + /* Try each prerequisite; see if it exists or can be created. We'll + build a list of prereq info in DEPLIST. Due to 2nd expansion we + may have to process multiple prereqs for a single dep entry. */ + + pat = deplist; + dep = rule->deps; + nptr = dep_name (dep); + while (1) + { + struct dep *dl, *d; + + /* If we're out of name to parse, start the next prereq. */ + if (! nptr) + { + dep = dep->next; + if (dep == 0) + break; + nptr = dep_name (dep); + } + + /* If we don't need a second expansion, just replace the %. */ + if (! dep->need_2nd_expansion) + { + char *p; + int is_explicit = 1; + const char *cp = strchr (nptr, '%'); + if (cp == 0) + strcpy (depname, nptr); + else + { + char *o = depname; + if (check_lastslash) + 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|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. */ + nptr = 0; + } + + /* We have to perform second expansion on this prereq. In an + ideal world we would take the dependency line, substitute the + stem, re-expand the whole line and chop it into individual + prerequisites. Unfortunately this won't work because of the + "check_lastslash" twist. Instead, we will have to go word by + word, taking $()'s into account. For each word we will + substitute the stem, re-expand, chop it up, and, if + check_lastslash != 0, add the directory part to each + resulting prerequisite. */ + else + { + 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 if this is a transition to order-only prereqs. */ + if (! order_only && len == 1 && nptr[0] == '|') + { + order_only = 1; + nptr = end; + continue; + } + + /* If the dependency name has %, substitute the stem. If we + just replace % with the stem value then later, when we do + the 2nd expansion, we will re-expand this stem value + again. This is not good if you have certain characters + in your stem (like $). + + Instead, we will replace % with $* or $(*F) and allow the + second expansion to take care of it for us. This way + (since $* and $(*F) are simple variables) there won't be + additional re-expansion of the stem. */ + + cp = lindex (nptr, end, '%'); + if (cp == 0) + { + memcpy (depname, nptr, len); + depname[len] = '\0'; + is_explicit = 1; + } + else + { + /* 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; + + is_explicit = 0; + for (;;) + { + 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; + } + len = end - nptr; + memcpy (o, nptr, len); + o[len] = '\0'; + } + + /* Set up for the next word. */ + 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, stem_str); + file_vars_initialized = 1; + } + /* Update the stem value in $* for this rule. */ + else if (!file_variables_set) + { + define_variable_for_file ( + "*", 1, stem_str, o_automatic, 0, file); + file_variables_set = 1; + } + + /* Perform the 2nd expansion. */ + p = variable_expand_for_file (depname, file); + dptr = &dl; + + /* Parse the results into a deps list. */ + do + { + /* Parse the expanded string. */ + struct dep *dp = PARSE_FILE_SEQ (&p, struct dep, + order_only ? MAP_NUL : MAP_PIPE, + add_dir ? pathdir : NULL, + PARSEFS_WAIT); + *dptr = dp; + + for (d = dp; d != NULL; d = d->next) + { + ++deps_found; + if (order_only) + d->ignore_mtime = 1; + d->is_explicit = is_explicit; + dptr = &d->next; + } + + /* If we stopped due to an order-only token, note it. */ + if (*p == '|') + { + order_only = 1; + ++p; + } + } + while (*p != '\0'); + } + + /* If there are more than max_pattern_deps prerequisites (due to + 2nd expansion), reset it and realloc the arrays. */ + + if (deps_found > max_deps) + { + size_t l = pat - deplist; + /* This might have changed due to recursion. */ + max_pattern_deps = MAX(max_pattern_deps, deps_found); + max_deps = max_pattern_deps; + deplist = xrealloc (deplist, + max_deps * sizeof (struct patdeps)); + pat = deplist + l; + } + + /* Go through the nameseq and handle each as a prereq name. */ + for (d = dl; d != 0; d = d->next) + { + struct file *df; + int is_rule = d->name == dep_name (dep); + int explicit = 0; + struct dep *dp = 0; + + if (file_impossible_p (d->name)) + { + /* If this prereq has already been ruled "impossible", + then the rule fails. Don't bother trying it on the + second pass either since we know that will fail. */ + DBS (DB_IMPLICIT, + (is_rule + ? _("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; + break; + } + + 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)); + + 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; + + /* 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; + } + + 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". */ + { + const char *vname = vpath_search (d->name, 0, NULL, NULL); + if (vname) + { + DBS (DB_IMPLICIT, + (_("Found prerequisite '%s' as VPATH '%s'.\n"), + d->name, vname)); + (pat++)->name = d->name; + continue; + } + } + + /* We could not find the file in any place we should look. + Look for an implicit rule to make this dependency, but + only on the second pass. */ + + if (intermed_ok) + { + DBS (DB_IMPLICIT, + (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) + int_file = alloca (sizeof (struct file)); + memset (int_file, '\0', sizeof (struct file)); + int_file->name = d->name; + + if (pattern_search (int_file, + 0, + depth + 1, + recursions + 1, + allow_compat_rules)) + { + pat->pattern = int_file->name; + int_file->name = d->name; + pat->file = int_file; + int_file = 0; + (pat++)->name = d->name; + continue; + } + + /* If we have tried to find P as an intermediate file + and failed, mark that name as impossible so we won't + go through the search again later. */ + if (int_file->variables) + free_variable_set (int_file->variables); + if (int_file->pat_variables) + free_variable_set (int_file->pat_variables); + + /* 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; + } + + /* Free the ns chain. */ + free_dep_chain (dl); + + if (failed) + break; + } + + /* This rule is no longer 'in use' for recursive searches. */ + rule->in_use = 0; + + if (! failed) + /* This pattern rule does apply. Stop looking for one. */ + break; + + /* This pattern rule does not apply. Keep looking. */ + } + + /* If we found an applicable rule without intermediate files, don't try + with them. */ + if (ri < nrules) + break; + + rule = 0; + } + + /* RULE is nil if the loop went through the list but everything failed. */ + if (rule == 0) + goto done; + + foundrule = ri; + + /* If we are recursing, store the pattern that matched FILENAME in + FILE->name for use in upper levels. */ + + if (recursions > 0) + /* Kludge-o-matic */ + file->name = rule->targets[tryrules[foundrule].matches]; + + /* DEPLIST lists the prerequisites for the rule we found. This includes the + intermediate files, if any. Convert them into entries on the deps-chain + of FILE. */ + + while (pat-- > deplist) + { + struct dep *dep; + const char *s; + + if (pat->file != 0) + { + /* If we need to use an intermediate file, make sure it is entered + as a target, with the info that was found for it in the recursive + pattern_search call. We know that the intermediate file did not + already exist as a target; therefore we can assume that the deps + and cmds of F below are null before we change them. */ + + struct file *imf = pat->file; + struct file *f = lookup_file (imf->name); + + if (!f) + f = enter_file (imf->name); + + f->deps = imf->deps; + f->cmds = imf->cmds; + f->stem = imf->stem; + /* 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->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); + if (imf != 0 && imf->precious) + f->precious = 1; + + for (dep = f->deps; dep != 0; dep = dep->next) + { + dep->file = enter_file (dep->name); + dep->name = 0; + dep->file->tried_implicit |= dep->changed; + } + } + + 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; + else + { + dep->file = lookup_file (s); + if (dep->file == 0) + dep->file = enter_file (s); + } + + if (pat->file == 0 && tryrules[foundrule].rule->terminal) + { + /* If the file actually existed (was not an intermediate file), and + the rule that found it was a terminal one, then we want to mark + the found file so that it will not have implicit rule search done + for it. If we are not entering a 'struct file' for it now, we + indicate this with the 'changed' flag. */ + if (dep->file == 0) + dep->changed = 1; + else + dep->file->tried_implicit = 1; + } + + 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 + intermediate file. */ + file->stem = strcache_add_len (stem, stemlen); + fullstemlen = stemlen; + } + else + { + /* We want to prepend the directory from + the original FILENAME onto the stem. */ + fullstemlen = pathlen + stemlen; + memcpy (stem_str, filename, pathlen); + memcpy (stem_str + pathlen, stem, stemlen); + stem_str[fullstemlen] = '\0'; + file->stem = strcache_add (stem_str); + } + + file->cmds = rule->cmds; + file->is_target = 1; + + /* Set precious and notintermediate flags. */ + { + struct file *f = lookup_file (rule->targets[tryrules[foundrule].matches]); + 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 + 'also_make' member. */ + + if (rule->num > 1) + for (ri = 0; ri < rule->num; ++ri) + if (ri != tryrules[foundrule].matches) + { + char *nm = alloca (rule->lens[ri] + fullstemlen + 1); + char *p = nm; + struct file *f; + struct dep *new = alloc_dep (); + + /* GKM FIMXE: handle '|' here too */ + 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); + new->file = enter_file (new->name); + new->next = file->also_make; + + /* Set precious flag. */ + f = lookup_file (rule->targets[ri]); + 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 + file_exists_p cannot pick it up yet. */ + new->file->is_target = 1; + + file->also_make = new; + } + + done: + free (tryrules); + free (deplist); + + 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/local/recipes/dev/gnu-make/source/src/job.c b/local/recipes/dev/gnu-make/source/src/job.c new file mode 100644 index 0000000000..b78f279c5a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/job.c @@ -0,0 +1,3762 @@ +/* Job execution and handling for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include +#include + +#include "job.h" +#include "debug.h" +#include "filedef.h" +#include "commands.h" +#include "variable.h" +#include "os.h" +#include "dep.h" +#include "shuffle.h" + +/* Default shell to use. */ +#ifdef WINDOWS32 +# ifdef HAVE_STRINGS_H +# include /* for strcasecmp, strncasecmp */ +# endif +# include + +const char *default_shell = "sh.exe"; +int no_default_sh_exe = 1; +int batch_mode_shell = 1; +HANDLE main_thread; + +#elif defined (_AMIGA) + +const char *default_shell = ""; +extern int MyExecute (char **); +int batch_mode_shell = 0; + +#elif defined (__MSDOS__) + +/* The default shell is a pointer so we can change it if Makefile + says so. It is without an explicit path so we get a chance + to search the $PATH for it (since MSDOS doesn't have standard + directories we could trust). */ +const char *default_shell = "command.com"; +int batch_mode_shell = 0; + +#elif defined (__EMX__) + +const char *default_shell = "/bin/sh"; +int batch_mode_shell = 0; + +#elif defined (VMS) + +# include +# include +const char *default_shell = ""; +int batch_mode_shell = 0; + +#define strsignal vms_strsignal +char * vms_strsignal (int status); + +#ifndef C_FACILITY_NO +# define C_FACILITY_NO 0x350000 +#endif +#ifndef VMS_POSIX_EXIT_MASK +# define VMS_POSIX_EXIT_MASK (C_FACILITY_NO | 0xA000) +#endif + +#else + +const char *default_shell = "/bin/sh"; +int batch_mode_shell = 0; + +#endif + +#ifdef __MSDOS__ +# include +static int execute_by_shell; +static int dos_pid = 123; +int dos_status; +int dos_command_running; +#endif /* __MSDOS__ */ + +#ifdef _AMIGA +# include +static int amiga_pid = 123; +static int amiga_status; +static char amiga_bname[32]; +static int amiga_batch_file; +#endif /* Amiga. */ + +#ifdef VMS +# ifndef __GNUC__ +# include +# endif +# include +# include +static void vmsWaitForChildren (int *); +#endif + +#ifdef WINDOWS32 +# include +# include +# include +# include "sub_proc.h" +# include "w32err.h" +# include "pathstuff.h" +# define WAIT_NOHANG 1 +#endif /* WINDOWS32 */ + +#ifdef __EMX__ +# include +#endif + +#if defined (HAVE_FCNTL_H) +# include +#endif + +#if defined (HAVE_SYS_WAIT_H) || defined (HAVE_UNION_WAIT) +# include +#endif + +#ifdef HAVE_WAITPID +# define WAIT_NOHANG(status) waitpid (-1, (status), WNOHANG) +#else /* Don't have waitpid. */ +# ifdef HAVE_WAIT3 +# ifndef wait3 +extern int wait3 (); +# endif +# define WAIT_NOHANG(status) wait3 ((status), WNOHANG, (struct rusage *) 0) +# endif /* Have wait3. */ +#endif /* Have waitpid. */ + +#ifdef USE_POSIX_SPAWN +# include +# include "findprog.h" +#endif + +#if !defined (wait) && !defined (POSIX) +int wait (); +#endif + +#ifndef HAVE_UNION_WAIT + +# define WAIT_T int + +# ifndef WTERMSIG +# define WTERMSIG(x) ((x) & 0x7f) +# endif +# ifndef WCOREDUMP +# define WCOREDUMP(x) ((x) & 0x80) +# endif +# ifndef WEXITSTATUS +# define WEXITSTATUS(x) (((x) >> 8) & 0xff) +# endif +# ifndef WIFSIGNALED +# define WIFSIGNALED(x) (WTERMSIG (x) != 0) +# endif +# ifndef WIFEXITED +# define WIFEXITED(x) (WTERMSIG (x) == 0) +# endif + +#else /* Have 'union wait'. */ + +# define WAIT_T union wait +# ifndef WTERMSIG +# define WTERMSIG(x) ((x).w_termsig) +# endif +# ifndef WCOREDUMP +# define WCOREDUMP(x) ((x).w_coredump) +# endif +# ifndef WEXITSTATUS +# define WEXITSTATUS(x) ((x).w_retcode) +# endif +# ifndef WIFSIGNALED +# define WIFSIGNALED(x) (WTERMSIG(x) != 0) +# endif +# ifndef WIFEXITED +# define WIFEXITED(x) (WTERMSIG(x) == 0) +# endif + +#endif /* Don't have 'union wait'. */ + +#if !defined(HAVE_UNISTD_H) && !defined(WINDOWS32) +int dup2 (); +int execve (); +void _exit (); +# ifndef VMS +int geteuid (); +int getegid (); +int setgid (); +int getgid (); +# endif +#endif + +#if HAVE_SYS_LOADAVG_H +# include +#endif + +#if HAVE_DECL_GETLOADAVG == 0 +int getloadavg (double loadavg[], int nelem); +#endif + +/* Different systems have different requirements for pid_t. + Plus we have to support gettext string translation... Argh. */ +static const char * +pid2str (pid_t pid) +{ + static char pidstring[100]; +#if defined(WINDOWS32) && (__GNUC__ > 3 || _MSC_VER > 1300) + /* %Id is only needed for 64-builds, which were not supported by + older versions of Windows compilers. */ + sprintf (pidstring, "%Id", pid); +#else + sprintf (pidstring, "%lu", (unsigned long) pid); +#endif + return pidstring; +} + +static void free_child (struct child *); +static void start_job_command (struct child *child); +static int load_too_high (void); +static int job_next_command (struct child *); +static int start_waiting_job (struct child *); + +/* Chain of all live (or recently deceased) children. */ + +struct child *children = 0; + +/* Number of children currently running. */ + +unsigned int job_slots_used = 0; + +/* Nonzero if the 'good' standard input is in use. */ + +static int good_stdin_used = 0; + +/* Chain of children waiting to run until the load average goes down. */ + +static struct child *waiting_jobs = 0; + +/* Non-zero if we use a *real* shell (always so on Unix). */ + +int unixy_shell = 1; + +/* Number of jobs started in the current second. */ + +unsigned long job_counter = 0; + +/* Number of jobserver tokens this instance is currently using. */ + +unsigned int jobserver_tokens = 0; + + +#ifdef WINDOWS32 +/* + * The macro which references this function is defined in makeint.h. + */ +int +w32_kill (pid_t pid, int sig) +{ + return ((process_kill ((HANDLE)pid, sig) == TRUE) ? 0 : -1); +} + +/* This function creates a temporary file name with an extension specified + * by the unixy arg. + * Return an xmalloc'ed string of a newly created temp file and its + * file descriptor, or die. */ +static char * +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[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 + 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 size_t sizemax = strlen (base) + strlen (ext) + 10; + + 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)) + { + unsigned size = sprintf (temp_path + path_size, + "%s%s-%x.%s", + temp_path[path_size - 1] == '\\' ? "" : "\\", + base, uniq, ext); + HANDLE h = CreateFile (temp_path, /* file name */ + GENERIC_READ | GENERIC_WRITE, /* desired access */ + 0, /* no share mode */ + NULL, /* default security attributes */ + CREATE_NEW, /* creation disposition */ + FILE_ATTRIBUTE_NORMAL | /* flags and attributes */ + FILE_ATTRIBUTE_TEMPORARY, /* we'll delete it */ + 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 */ + else if (path_is_dot == 0) + { + path_size = GetCurrentDirectory (sizeof temp_path, temp_path); + path_is_dot = 1; + } + + else + { + error_string = map_windows32_error_to_string (er); + break; + } + } + else + { + const unsigned final_size = path_size + size + 1; + char *const path = xmalloc (final_size); + memcpy (path, temp_path, final_size); + *fd = _open_osfhandle ((intptr_t)h, 0); + if (unixy) + { + char *p; + int ch; + for (p = path; (ch = *p) != 0; ++p) + if (ch == '\\') + *p = '/'; + } + return path; /* good return */ + } + } + + *fd = -1; + if (error_string == NULL) + error_string = _("Cannot create a temporary file"); + O (fatal, NILF, error_string); + + /* not reached */ + return NULL; +} +#endif /* WINDOWS32 */ + +#ifdef __EMX__ +/* returns whether path is assumed to be a unix like shell. */ +int +_is_unixy_shell (const char *path) +{ + /* list of non unix shells */ + const char *known_os2shells[] = { + "cmd.exe", + "cmd", + "4os2.exe", + "4os2", + "4dos.exe", + "4dos", + "command.com", + "command", + NULL + }; + + /* find the rightmost '/' or '\\' */ + const char *name = strrchr (path, '/'); + const char *p = strrchr (path, '\\'); + unsigned i; + + if (name && p) /* take the max */ + name = (name > p) ? name : p; + else if (p) /* name must be 0 */ + name = p; + else if (!name) /* name and p must be 0 */ + name = path; + + if (ISDIRSEP (*name)) + name++; + + i = 0; + while (known_os2shells[i] != NULL) + { + if (strcasecmp (name, known_os2shells[i]) == 0) + return 0; /* not a unix shell */ + i++; + } + + /* in doubt assume a unix like shell */ + return 1; +} +#endif /* __EMX__ */ + +/* determines whether path looks to be a Bourne-like shell. */ +int +is_bourne_compatible_shell (const char *path) +{ + /* List of known POSIX (or POSIX-ish) shells. */ + static const char *unix_shells[] = { + "sh", + "bash", + "dash", + "ksh", + "rksh", + "zsh", + "ash", + NULL + }; + const char **s; + + /* find the last directory separator, or the beginning of the string. */ + const char *cp = path + strlen (path); + + 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 (cp) >= len && STOP_SET (cp[len], MAP_DOT|MAP_NUL)) + && strncasecmp (cp, *s, len) == 0) +#else + if (strcmp (cp, *s) == 0) +#endif + return 1; /* a known unix-style shell */ + } + + /* if not on the list, assume it's not a Bourne-like shell */ + return 0; +} + +#ifdef POSIX +extern sigset_t fatal_signal_set; + +static void +block_sigs () +{ + sigprocmask (SIG_BLOCK, &fatal_signal_set, (sigset_t *) 0); +} + +static void +unblock_sigs () +{ + sigprocmask (SIG_UNBLOCK, &fatal_signal_set, (sigset_t *) 0); +} + +void +unblock_all_sigs () +{ + sigset_t empty; + sigemptyset (&empty); + sigprocmask (SIG_SETMASK, &empty, (sigset_t *) 0); +} + +#elif defined(HAVE_SIGSETMASK) + +extern int fatal_signal_mask; + +static void +block_sigs () +{ + sigblock (fatal_signal_mask); +} + +static void +unblock_sigs () +{ + sigsetmask (siggetmask () & ~fatal_signal_mask); +} + +void +unblock_all_sigs () +{ + sigsetmask (0); +} + +#else + +#define block_sigs() +#define unblock_sigs() + +void +unblock_all_sigs () +{ +} + +#endif + +/* Write an error message describing the exit status given in + EXIT_CODE, EXIT_SIG, and COREDUMP, for the target TARGET_NAME. + Append "(ignored)" if IGNORED is nonzero. */ + +static void +child_error (struct child *child, + int exit_code, int exit_sig, int coredump, int ignored) +{ + const char *pre = "*** "; + const char *post = ""; + const char *dump = ""; + 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) + return; + + if (exit_sig && coredump) + dump = _(" (core dumped)"); + + if (ignored) + { + pre = ""; + post = _(" (ignored)"); + } + + if (! flocp->filenm) + nm = _(""); + else + { + char *a = alloca (strlen (flocp->filenm) + 6 + INTSTR_LENGTH + 1); + sprintf (a, "%s:%lu", flocp->filenm, flocp->lineno + flocp->offset); + nm = a; + } + + 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%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%s", + pre, nm, f->name, s, dump, post, smode ? smode : ""); + } + + OUTPUT_UNSET (); +} + + +/* Handle a dead child. This handler may or may not ever be installed. + + If we're using the jobserver feature without pselect(), we need it. + First, installing it ensures the read will interrupt on SIGCHLD. Second, + we close the dup'd read FD to ensure we don't enter another blocking read + without reaping all the dead children. In this case we don't need the + dead_children count. + + If we don't have either waitpid or wait3, then make is unreliable, but we + use the dead_children count to reap children as best we can. */ + +static unsigned int dead_children = 0; + +void +child_handler (int sig UNUSED) +{ + ++dead_children; + + jobserver_signal (); + +#ifdef __EMX__ + /* The signal handler must called only once! */ + signal (SIGCHLD, SIG_DFL); +#endif +} + +extern pid_t shell_function_pid; + +/* Reap all dead children, storing the returned status and the new command + state ('cs_finished') in the 'file' member of the 'struct child' for the + dead child, and removing the child from the chain. In addition, if BLOCK + nonzero, we block in this function until we've reaped at least one + complete child, waiting for it to die if necessary. If ERR is nonzero, + print an error message first. */ + +void +reap_children (int block, int err) +{ +#ifndef WINDOWS32 + WAIT_T status; +#endif + /* Initially, assume we have some. */ + int reap_more = 1; + +#ifdef WAIT_NOHANG +# define REAP_MORE reap_more +#else +# define REAP_MORE dead_children +#endif + + /* As long as: + + We have at least one child outstanding OR a shell function in progress, + AND + We're blocking for a complete child OR there are more children to reap + + we'll keep reaping children. */ + + while ((children != 0 || shell_function_pid != 0) + && (block || REAP_MORE)) + { + unsigned int remote = 0; + pid_t pid; + int exit_code, exit_sig, coredump; + struct child *lastc, *c; + int child_failed; + int any_remote, any_local; + int dontcare; + + if (err && block) + { + static int printed = 0; + + /* We might block for a while, so let the user know why. + Only print this message once no matter how many jobs are left. */ + fflush (stdout); + if (!printed) + O (error, NILF, _("*** Waiting for unfinished jobs....")); + printed = 1; + } + + /* We have one less dead child to reap. As noted in + child_handler() above, this count is completely unimportant for + all modern, POSIX-y systems that support wait3() or waitpid(). + The rest of this comment below applies only to early, broken + pre-POSIX systems. We keep the count only because... it's there... + + The test and decrement are not atomic; if it is compiled into: + register = dead_children - 1; + dead_children = register; + a SIGCHLD could come between the two instructions. + child_handler increments dead_children. + The second instruction here would lose that increment. But the + only effect of dead_children being wrong is that we might wait + longer than necessary to reap a child, and lose some parallelism; + and we might print the "Waiting for unfinished jobs" message above + when not necessary. */ + + if (dead_children > 0) + --dead_children; + + any_remote = 0; + any_local = shell_function_pid != 0; + lastc = 0; + for (c = children; c != 0; lastc = c, c = c->next) + { + any_remote |= c->remote; + any_local |= ! c->remote; + + /* If pid < 0, this child never even started. Handle it. */ + if (c->pid < 0) + { + exit_sig = 0; + coredump = 0; + /* According to POSIX, 127 is used for command not found. */ + exit_code = 127; + goto process_child; + } + + DB (DB_JOBS, (_("Live child %p (%s) PID %s %s\n"), + c, c->file->name, pid2str (c->pid), + c->remote ? _(" (remote)") : "")); +#ifdef VMS + break; +#endif + } + + /* First, check for remote children. */ + if (any_remote) + pid = remote_status (&exit_code, &exit_sig, &coredump, 0); + else + pid = 0; + + if (pid > 0) + /* We got a remote child. */ + remote = 1; + else if (pid < 0) + { + /* A remote status command failed miserably. Punt. */ + pfatal_with_name ("remote_status"); + } + else + { + /* No remote children. Check for local children. */ +#if !defined(__MSDOS__) && !defined(_AMIGA) && !defined(WINDOWS32) + if (any_local) + { +#ifdef VMS + /* Todo: This needs more untangling multi-process support */ + /* Just do single child process support now */ + vmsWaitForChildren (&status); + pid = c->pid; + + /* VMS failure status can not be fully translated */ + status = $VMS_STATUS_SUCCESS (c->cstatus) ? 0 : (1 << 8); + + /* A Posix failure can be exactly translated */ + if ((c->cstatus & VMS_POSIX_EXIT_MASK) == VMS_POSIX_EXIT_MASK) + status = (c->cstatus >> 3 & 255) << 8; +#else +#ifdef WAIT_NOHANG + if (!block) + pid = WAIT_NOHANG (&status); + else +#endif + EINTRLOOP (pid, wait (&status)); +#endif /* !VMS */ + } + else + pid = 0; + + if (pid < 0) + { + /* The wait*() failed miserably. Punt. */ + pfatal_with_name ("wait"); + } + else if (pid > 0) + { + /* We got a child exit; chop the status word up. */ + exit_code = WEXITSTATUS (status); + exit_sig = WIFSIGNALED (status) ? WTERMSIG (status) : 0; + coredump = WCOREDUMP (status); + } + else + { + /* No local children are dead. */ + reap_more = 0; + + if (!block || !any_remote) + break; + + /* Now try a blocking wait for a remote child. */ + pid = remote_status (&exit_code, &exit_sig, &coredump, 1); + if (pid < 0) + pfatal_with_name ("remote_status"); + + if (pid == 0) + /* No remote children either. Finally give up. */ + break; + + /* We got a remote child. */ + remote = 1; + } +#endif /* !__MSDOS__, !Amiga, !WINDOWS32. */ + +#ifdef __MSDOS__ + /* Life is very different on MSDOS. */ + pid = dos_pid - 1; + status = dos_status; + exit_code = WEXITSTATUS (status); + if (exit_code == 0xff) + exit_code = -1; + exit_sig = WIFSIGNALED (status) ? WTERMSIG (status) : 0; + coredump = 0; +#endif /* __MSDOS__ */ +#ifdef _AMIGA + /* Same on Amiga */ + pid = amiga_pid - 1; + status = amiga_status; + exit_code = amiga_status; + exit_sig = 0; + coredump = 0; +#endif /* _AMIGA */ +#ifdef WINDOWS32 + { + HANDLE hPID; + HANDLE hcTID, hcPID; + DWORD dwWaitStatus = 0; + exit_code = 0; + exit_sig = 0; + coredump = 0; + + /* Record the thread ID of the main process, so that we + could suspend it in the signal handler. */ + if (!main_thread) + { + hcTID = GetCurrentThread (); + hcPID = GetCurrentProcess (); + if (!DuplicateHandle (hcPID, hcTID, hcPID, &main_thread, 0, + FALSE, DUPLICATE_SAME_ACCESS)) + { + DWORD e = GetLastError (); + fprintf (stderr, + "Determine main thread ID (Error %ld: %s)\n", + e, map_windows32_error_to_string (e)); + } + else + DB (DB_VERBOSE, ("Main thread handle = %p\n", main_thread)); + } + + /* wait for anything to finish */ + hPID = process_wait_for_any (block, &dwWaitStatus); + if (hPID) + { + /* was an error found on this process? */ + int werr = process_last_err (hPID); + + /* get exit data */ + exit_code = process_exit_code (hPID); + + /* the extra tests of exit_code are here to prevent + map_windows32_error_to_string from calling 'fatal', + which will then call reap_children again */ + if (werr && exit_code > 0 && exit_code < WSABASEERR) + fprintf (stderr, "make (e=%d): %s", exit_code, + map_windows32_error_to_string (exit_code)); + + /* signal */ + exit_sig = process_signal (hPID); + + /* cleanup process */ + process_cleanup (hPID); + + coredump = 0; + } + else if (dwWaitStatus == WAIT_FAILED) + { + /* The WaitForMultipleObjects() failed miserably. Punt. */ + pfatal_with_name ("WaitForMultipleObjects"); + } + else if (dwWaitStatus == WAIT_TIMEOUT) + { + /* No child processes are finished. Give up waiting. */ + reap_more = 0; + break; + } + + pid = (pid_t) hPID; + } +#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) + { + shell_completed (exit_code, exit_sig); + break; + } + + /* Search for a child matching the deceased one. */ + lastc = 0; + for (c = children; c != 0; lastc = c, c = c->next) + if (c->pid == pid && c->remote == remote) + break; + + if (c == 0) + /* An unknown child died. + Ignore it; it was inherited from our invoker. */ + continue; + + DB (DB_JOBS, (exit_sig == 0 && exit_code == 0 + ? _("Reaping winning child %p PID %s %s\n") + : _("Reaping losing child %p PID %s %s\n"), + c, pid2str (c->pid), c->remote ? _(" (remote)") : "")); + + /* If we have started jobs in this second, remove one. */ + if (job_counter) + --job_counter; + + process_child: + +#if defined(USE_POSIX_SPAWN) + /* Some versions of posix_spawn() do not detect errors such as command + not found until after they fork. In that case they will exit with a + code of 127. Try to detect that and provide a useful error message. + Otherwise we'll just show the error below, as normal. */ + if (exit_sig == 0 && exit_code == 127 && c->cmd_name) + { + const char *e = NULL; + struct stat st; + int r; + + /* There are various ways that this will show a different error than + fork/exec. To really get the right error we'd have to fall back + 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)); + if (r < 0) + e = strerror (errno); + else if (S_ISDIR(st.st_mode) || !(st.st_mode & S_IXUSR)) + e = strerror (EACCES); + else if (st.st_size == 0) + e = strerror (ENOEXEC); + + if (e) + OSS(error, NILF, "%s: %s", c->cmd_name, e); + } +#endif + + /* Determine the failure status: 0 for success, 1 for updating target in + question mode, 2 for anything else. */ + if (exit_sig == 0 && exit_code == 0) + child_failed = MAKE_SUCCESS; + else if (exit_sig == 0 && exit_code == 1 && question_flag && c->recursive) + child_failed = MAKE_TROUBLE; + else + child_failed = MAKE_FAILURE; + + if (c->sh_batch_file) + { + int rm_status; + + DB (DB_JOBS, (_("Cleaning up temp batch file %s\n"), + c->sh_batch_file)); + + errno = 0; + rm_status = remove (c->sh_batch_file); + if (rm_status) + DB (DB_JOBS, (_("Cleaning up temp batch file %s failed (%d)\n"), + c->sh_batch_file, errno)); + + /* all done with memory */ + free (c->sh_batch_file); + c->sh_batch_file = NULL; + } + + /* If this child had the good stdin, say it is now free. */ + if (c->good_stdin) + good_stdin_used = 0; + + dontcare = c->dontcare; + + if (child_failed && !c->noerror && !ignore_errors_flag) + { + /* The commands failed. Write an error message, + delete non-precious targets, and abort. */ + static int delete_on_error = -1; + + if (!dontcare && child_failed == MAKE_FAILURE) + child_error (c, exit_code, exit_sig, coredump, 0); + + c->file->update_status = child_failed == MAKE_FAILURE ? us_failed : us_question; + if (delete_on_error == -1) + { + struct file *f = lookup_file (".DELETE_ON_ERROR"); + delete_on_error = f != 0 && f->is_target; + } + if (exit_sig != 0 || delete_on_error) + delete_child_targets (c); + } + else + { + if (child_failed) + { + /* The commands failed, but we don't care. */ + child_error (c, exit_code, exit_sig, coredump, 1); + child_failed = 0; + } + + /* If there are more commands to run, try to start them. */ + if (job_next_command (c)) + { + if (handling_fatal_signal) + { + /* Never start new commands while we are dying. + Since there are more commands that wanted to be run, + the target was not completely remade. So we treat + this as if a command had failed. */ + c->file->update_status = us_failed; + } + else + { + /* 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); + /* Check again whether to start remotely. + Whether or not we want to changes over time. + Also, start_remote_job may need state set up + by start_remote_job_p. */ + c->remote = start_remote_job_p (0); + start_job_command (c); + /* Fatal signals are left blocked in case we were + about to put that child on the chain. But it is + already there, so it is safe for a fatal signal to + arrive now; it will clean up this child's targets. */ + unblock_sigs (); + if (c->file->command_state == cs_running) + /* We successfully started the new command. + Loop to reap more children. */ + continue; + } + + if (c->file->update_status != us_success) + /* We failed to start the commands. */ + delete_child_targets (c); + } + else + /* There are no more commands. We got through them all + without an unignored error. Now the target has been + successfully updated. */ + c->file->update_status = us_success; + } + + /* When we get here, all the commands for c->file are finished. */ + + /* Synchronize any remaining parallel output. */ + output_dump (&c->output); + + /* At this point c->file->update_status is success or failed. But + c->file->command_state is still cs_running if all the commands + ran; notice_finished_file looks for cs_running to tell it that + it's interesting to check the file's modtime again now. */ + + if (! handling_fatal_signal) + /* Notice if the target of the commands has been changed. + This also propagates its values for command_state and + update_status to its also_make files. */ + notice_finished_file (c->file); + + /* Block fatal signals while frobnicating the list, so that + children and job_slots_used are always consistent. Otherwise + a fatal signal arriving after the child is off the chain and + before job_slots_used is decremented would believe a child was + live and call reap_children again. */ + block_sigs (); + + if (c->pid > 0) + { + DB (DB_JOBS, (_("Removing child %p PID %s%s from chain.\n"), + c, pid2str (c->pid), c->remote ? _(" (remote)") : "")); + } + + /* There is now another slot open. */ + if (job_slots_used > 0) + job_slots_used -= c->jobslot; + + /* Remove the child from the chain and free it. */ + if (lastc == 0) + children = c->next; + else + lastc->next = c->next; + + free_child (c); + + unblock_sigs (); + + /* If the job failed, and the -k flag was not given, die, + unless we are already in the process of dying. */ + if (!err && child_failed && !dontcare && !keep_going_flag && + /* fatal_error_signal will die with the right signal. */ + !handling_fatal_signal) + die (child_failed); + + /* Only block for one child. */ + block = 0; + } + + return; +} + +/* 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", + child, child->file->name); + + /* If we're using the jobserver and this child is not the only outstanding + job, put a token back into the pipe for it. */ + + if (jobserver_enabled () && jobserver_tokens > 1) + { + jobserver_release (1); + DB (DB_JOBS, (_("Released token for child %p (%s).\n"), + child, child->file->name)); + } + + --jobserver_tokens; + + if (handling_fatal_signal) /* Don't bother free'ing if about to die. */ + return; + + if (child->command_lines != 0) + { + unsigned int i; + for (i = 0; i < child->file->cmds->ncommand_lines; ++i) + free (child->command_lines[i]); + free (child->command_lines); + } + + free_childbase ((struct childbase*)child); + + free (child); +} + + +/* Start a job to run the commands specified in CHILD. + CHILD is updated to reflect the commands and ID of the child process. + + NOTE: On return fatal signals are blocked! The caller is responsible + for calling 'unblock_sigs', once the new child is safely on the chain so + it can be cleaned up in the event of a fatal signal. */ + +static void +start_job_command (struct child *child) +{ + int flags; + char *p; +#ifdef VMS +# define FREE_ARGV(_a) + char *argv; +#else +# define FREE_ARGV(_a) do{ if (_a) { free ((_a)[0]); free (_a); } }while(0) + char **argv; +#endif + + /* If we have a completely empty commandset, stop now. */ + if (!child->command_ptr) + goto next_command; + + /* Combine the flags parsed for the line itself with + the flags specified globally for this target. */ + flags = (child->file->command_flags + | child->file->cmds->lines_flags[child->command_line - 1]); + + p = child->command_ptr; + child->noerror = ((flags & COMMANDS_NOERROR) != 0); + + while (*p != '\0') + { + if (*p == '@') + flags |= COMMANDS_SILENT; + else if (*p == '+') + flags |= COMMANDS_RECURSE; + else if (*p == '-') + child->noerror = 1; + /* Don't skip newlines. */ + else if (!ISBLANK (*p)) + break; + ++p; + } + + child->recursive = ((flags & COMMANDS_RECURSE) != 0); + + /* Update the file's command flags with any new ones we found. We only + keep the COMMANDS_RECURSE setting. Even this isn't 100% correct; we are + now marking more commands recursive than should be in the case of + multiline define/endef scripts where only one line is marked "+". In + order to really fix this, we'll have to keep a lines_flags for every + actual line, after expansion. */ + child->file->cmds->lines_flags[child->command_line - 1] |= flags & COMMANDS_RECURSE; + + /* POSIX requires that a recipe prefix after a backslash-newline should + be ignored. Remove it now so the output is correct. */ + { + char prefix = child->file->cmds->recipe_prefix; + char *p1, *p2; + p1 = p2 = p; + while (*p1 != '\0') + { + *(p2++) = *p1; + if (p1[0] == '\n' && p1[1] == prefix) + ++p1; + ++p1; + } + *p2 = *p1; + } + + /* Figure out an argument list from this command line. */ + { + char *end = 0; +#ifdef VMS + /* Skip any leading whitespace */ + while (*p) + { + if (!ISSPACE (*p)) + { + if (*p != '\\') + break; + if ((p[1] != '\n') && (p[1] != 'n') && (p[1] != 't')) + break; + } + p++; + } + + argv = p; + /* Please note, for VMS argv is a string (not an array of strings) which + contains the complete command line, which for multi-line variables + still includes the newlines. So detect newlines and set 'end' (which + is used for child->command_ptr) instead of (re-)writing + construct_command_argv */ + if (!one_shell) + { + char *s = p; + int instring = 0; + while (*s) + { + if (*s == '"') + instring = !instring; + else if (*s == '\\' && !instring && *(s+1) != 0) + s++; + else if (*s == '\n' && !instring) + { + end = s; + break; + } + ++s; + } + } +#else + argv = construct_command_argv (p, &end, child->file, + child->file->cmds->lines_flags[child->command_line - 1], + &child->sh_batch_file); +#endif + if (end == NULL) + child->command_ptr = NULL; + else + { + *end++ = '\0'; + child->command_ptr = end; + } + } + + /* If -q was given, say that updating 'failed' if there was any text on the + command line, or 'succeeded' otherwise. The exit status of 1 tells the + user that -q is saying 'something to do'; the exit status for a random + error is 2. */ + if (argv != 0 && question_flag && !(flags & COMMANDS_RECURSE)) + { + FREE_ARGV (argv); +#ifdef VMS + /* On VMS, argv[0] can be a null string here */ + if (argv[0] != 0) + { +#endif + child->file->update_status = us_question; + notice_finished_file (child->file); + return; +#ifdef VMS + } +#endif + } + + if (touch_flag && !(flags & COMMANDS_RECURSE)) + { + /* Go on to the next command. It might be the recursive one. + We construct ARGV only to find the end of the command line. */ + FREE_ARGV (argv); + argv = 0; + } + + if (argv == 0) + { + next_command: +#ifdef __MSDOS__ + execute_by_shell = 0; /* in case construct_command_argv sets it */ +#endif + /* This line has no commands. Go to the next. */ + if (job_next_command (child)) + start_job_command (child); + else + { + /* No more commands. Make sure we're "running"; we might not be if + (e.g.) all commands were skipped due to -n. */ + set_command_state (child->file, cs_running); + child->file->update_status = us_success; + notice_finished_file (child->file); + } + + OUTPUT_UNSET(); + return; + } + + /* Are we going to synchronize this command's output? Do so if either we're + in SYNC_RECURSE mode or this command is not recursive. We'll also check + output_sync separately below in case it changes due to error. */ + child->output.syncout = output_sync && (output_sync == OUTPUT_SYNC_RECURSE + || !(flags & COMMANDS_RECURSE)); + + OUTPUT_SET (&child->output); + + 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); + + /* Print the command if appropriate. */ + if (just_print_flag || ISDB (DB_PRINT) + || (!(flags & COMMANDS_SILENT) && !run_silent)) + OS (message, 0, "%s", p); + + /* Tell update_goal_chain that a command has been started on behalf of + this target. It is important that this happens here and not in + reap_children (where we used to do it), because reap_children might be + reaping children from a different target. We want this increment to + guaranteedly indicate that a command was started for the dependency + chain (i.e., update_file recursion chain) we are processing. */ + + ++commands_started; + + /* Optimize an empty command. People use this for timestamp rules, + so avoid forking a useless shell. Do this after we increment + commands_started so make still treats this special case as if it + performed some action (makes a difference as to what messages are + printed, etc. */ + +#if !defined(VMS) && !defined(_AMIGA) + if ( +#if defined __MSDOS__ || defined (__EMX__) + unixy_shell /* the test is complicated and we already did it */ +#else + (argv[0] && is_bourne_compatible_shell (argv[0])) +#endif + && (argv[1] && argv[1][0] == '-' + && + ((argv[1][1] == 'c' && argv[1][2] == '\0') + || + (argv[1][1] == 'e' && argv[1][2] == 'c' && argv[1][3] == '\0'))) + && (argv[2] && argv[2][0] == ':' && argv[2][1] == '\0') + && argv[3] == NULL) + { + FREE_ARGV (argv); + goto next_command; + } +#endif /* !VMS && !_AMIGA */ + + /* If -n was given, recurse to get the next line in the sequence. */ + + if (just_print_flag && !(flags & COMMANDS_RECURSE)) + { + FREE_ARGV (argv); + goto next_command; + } + + /* We're sure we're going to invoke a command: set up the output. */ + output_start (); + + /* Flush the output streams so they won't have things written twice. */ + + fflush (stdout); + fflush (stderr); + + /* Decide whether to give this child the 'good' standard input + (one that points to the terminal or whatever), or the 'bad' one + that points to the read side of a broken pipe. */ + + child->good_stdin = !good_stdin_used; + if (child->good_stdin) + good_stdin_used = 1; + + child->deleted = 0; + +#ifndef _AMIGA + /* Set up the environment for the child. */ + if (child->environment == 0) + child->environment = target_environment (child->file, child->recursive); +#endif + +#if !defined(__MSDOS__) && !defined(_AMIGA) && !defined(WINDOWS32) + +#ifndef VMS + /* start_waiting_job has set CHILD->remote if we can start a remote job. */ + if (child->remote) + { + int is_remote, used_stdin; + pid_t id; + if (start_remote_job (argv, child->environment, + child->good_stdin ? 0 : get_bad_stdin (), + &is_remote, &id, &used_stdin)) + /* Don't give up; remote execution may fail for various reasons. If + so, simply run the job locally. */ + goto run_local; + else + { + if (child->good_stdin && !used_stdin) + { + child->good_stdin = 0; + good_stdin_used = 0; + } + child->remote = is_remote; + child->pid = id; + } + } + else +#endif /* !VMS */ + { + /* Fork the child process. */ + run_local: + block_sigs (); + + child->remote = 0; + +#ifdef VMS + child->pid = child_execute_job ((struct childbase *)child, 1, argv); + +#else + + jobserver_pre_child (flags & COMMANDS_RECURSE); + + child->pid = child_execute_job ((struct childbase *)child, + child->good_stdin, argv); + + jobserver_post_child (flags & COMMANDS_RECURSE); + +#endif /* !VMS */ + } + +#else /* __MSDOS__ or Amiga or WINDOWS32 */ +#ifdef __MSDOS__ + { + int proc_return; + + block_sigs (); + dos_status = 0; + + /* We call 'system' to do the job of the SHELL, since stock DOS + shell is too dumb. Our 'system' knows how to handle long + command lines even if pipes/redirection is needed; it will only + call COMMAND.COM when its internal commands are used. */ + if (execute_by_shell) + { + 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_env = environ; + + environ = child->environment; + + /* If we have a *real* shell, tell 'system' to call + it to do everything for us. */ + if (unixy_shell) + { + /* A *real* shell on MSDOS may not support long + command lines the DJGPP way, so we must use 'system'. */ + cmdline = argv[2]; /* get past "shell -c" */ + } + + dos_command_running = 1; + proc_return = system (cmdline); + environ = parent_env; + execute_by_shell = 0; /* for the next time */ + } + else + { + dos_command_running = 1; + proc_return = spawnvpe (P_WAIT, argv[0], argv, child->environment); + } + + /* Need to unblock signals before turning off + dos_command_running, so that child's signals + will be treated as such (see fatal_error_signal). */ + unblock_sigs (); + dos_command_running = 0; + + /* If the child got a signal, dos_status has its + high 8 bits set, so be careful not to alter them. */ + if (proc_return == -1) + dos_status |= 0xff; + else + dos_status |= (proc_return & 0xff); + ++dead_children; + child->pid = dos_pid++; + } +#endif /* __MSDOS__ */ +#ifdef _AMIGA + amiga_status = MyExecute (argv); + + ++dead_children; + child->pid = amiga_pid++; + if (amiga_batch_file) + { + amiga_batch_file = 0; + DeleteFile (amiga_bname); /* Ignore errors. */ + } +#endif /* Amiga */ +#ifdef WINDOWS32 + { + HANDLE hPID; + char* arg0; + int outfd = -1; + int errfd = -1; + + /* make UNC paths safe for CreateProcess -- backslash format */ + arg0 = argv[0]; + if (arg0 && arg0[0] == '/' && arg0[1] == '/') + for ( ; arg0 && *arg0; arg0++) + if (*arg0 == '/') + *arg0 = '\\'; + + /* make sure CreateProcess() has Path it needs */ + sync_Path_environment (); + + /* Divert child output if output_sync in use. */ + if (child->output.syncout) + { + if (child->output.out >= 0) + outfd = child->output.out; + if (child->output.err >= 0) + errfd = child->output.err; + } + + hPID = process_easy (argv, child->environment, outfd, errfd); + + if (hPID != INVALID_HANDLE_VALUE) + child->pid = (pid_t) hPID; + else + { + int i; + unblock_sigs (); + fprintf (stderr, + _("process_easy() failed to launch process (e=%ld)\n"), + process_last_err (hPID)); + for (i = 0; argv[i]; i++) + fprintf (stderr, "%s ", argv[i]); + fprintf (stderr, _("\nCounted %d args in failed launch\n"), i); + child->pid = -1; + } + } +#endif /* WINDOWS32 */ +#endif /* __MSDOS__ or Amiga or WINDOWS32 */ + + /* Bump the number of jobs started in this second. */ + if (child->pid >= 0) + ++job_counter; + + /* Set the state to running. */ + set_command_state (child->file, cs_running); + + /* Free the storage used by the child's argument list. */ + FREE_ARGV (argv); + + OUTPUT_UNSET(); + +#undef FREE_ARGV +} + +/* Try to start a child running. + Returns nonzero if the child was started (and maybe finished), or zero if + the load was too high and the child was put on the 'waiting_jobs' chain. */ + +static int +start_waiting_job (struct child *c) +{ + struct file *f = c->file; + + /* If we can start a job remotely, we always want to, and don't care about + the local load average. We record that the job should be started + remotely in C->remote for start_job_command to test. */ + + c->remote = start_remote_job_p (1); + + /* If we are running at least one job already and the load average + is too high, make this one wait. */ + if (!c->remote + && ((job_slots_used > 0 && load_too_high ()) +#ifdef WINDOWS32 + || process_table_full () +#endif + )) + { + /* Put this child on the chain of children waiting for the load average + to go down. */ + set_command_state (f, cs_running); + c->next = waiting_jobs; + waiting_jobs = c; + return 0; + } + + /* Start the first command; reap_children will run later command lines. */ + start_job_command (c); + + switch (f->command_state) + { + case cs_running: + c->next = children; + if (c->pid > 0) + { + DB (DB_JOBS, (_("Putting child %p (%s) PID %s%s on the chain.\n"), + c, c->file->name, pid2str (c->pid), + c->remote ? _(" (remote)") : "")); + /* One more job slot is in use. */ + ++job_slots_used; + assert (c->jobslot == 0); + c->jobslot = 1; + } + children = c; + unblock_sigs (); + break; + + case cs_not_started: + /* All the command lines turned out to be empty. */ + f->update_status = us_success; + /* FALLTHROUGH */ + + case cs_finished: + notice_finished_file (f); + free_child (c); + break; + + default: + assert (f->command_state == cs_finished); + break; + } + + return 1; +} + +/* Create a 'struct child' for FILE and start its commands running. */ + +void +new_job (struct file *file) +{ + struct commands *cmds = file->cmds; + struct child *c; + char **lines; + unsigned int i; + + /* Let any previously decided-upon jobs that are waiting + for the load to go down start before this new one. */ + start_waiting_jobs (); + + /* Reap any children that might have finished recently. */ + reap_children (0, 0); + + /* Chop the commands up into lines if they aren't already. */ + chop_commands (cmds); + + /* Start the command sequence, record it in a new + 'struct child', and add that to the chain. */ + + c = xcalloc (sizeof (struct child)); + output_init (&c->output); + + c->file = file; + c->sh_batch_file = NULL; + + /* Cache dontcare flag because file->dontcare can be changed once we + return. Check dontcare inheritance mechanism for details. */ + c->dontcare = file->dontcare; + + /* Start saving output in case the expansion uses $(info ...) etc. */ + OUTPUT_SET (&c->output); + + /* Expand the command lines and store the results in LINES. */ + lines = xmalloc (cmds->ncommand_lines * sizeof (char *)); + for (i = 0; i < cmds->ncommand_lines; ++i) + { + /* Collapse backslash-newline combinations that are inside variable + or function references. These are left alone by the parser so + that they will appear in the echoing of commands (where they look + nice); and collapsed by construct_command_argv when it tokenizes. + But letting them survive inside function invocations loses because + we don't want the functions to see them as part of the text. */ + + char *in, *out, *ref; + + /* IN points to where in the line we are scanning. + OUT points to where in the line we are writing. + When we collapse a backslash-newline combination, + IN gets ahead of OUT. */ + + in = out = cmds->command_lines[i]; + while ((ref = strchr (in, '$')) != 0) + { + ++ref; /* Move past the $. */ + + if (out != in) + /* Copy the text between the end of the last chunk + we processed (where IN points) and the new chunk + we are about to process (where REF points). */ + memmove (out, in, ref - in); + + /* Move both pointers past the boring stuff. */ + out += ref - in; + in = ref; + + if (*ref == '(' || *ref == '{') + { + char openparen = *ref; + char closeparen = openparen == '(' ? ')' : '}'; + char *outref; + int count; + char *p; + + *out++ = *in++; /* Copy OPENPAREN. */ + outref = out; + /* IN now points past the opening paren or brace. + Count parens or braces until it is matched. */ + count = 0; + while (*in != '\0') + { + if (*in == closeparen && --count < 0) + break; + else if (*in == '\\' && in[1] == '\n') + { + /* We have found a backslash-newline inside a + variable or function reference. Eat it and + any following whitespace. */ + + int quoted = 0; + for (p = in - 1; p > ref && *p == '\\'; --p) + quoted = !quoted; + + if (quoted) + /* There were two or more backslashes, so this is + not really a continuation line. We don't collapse + the quoting backslashes here as is done in + collapse_continuations, because the line will + be collapsed again after expansion. */ + *out++ = *in++; + else + { + /* Skip the backslash, newline, and whitespace. */ + in += 2; + NEXT_TOKEN (in); + + /* Discard any preceding whitespace that has + already been written to the output. */ + while (out > outref && ISBLANK (out[-1])) + --out; + + /* Replace it all with a single space. */ + *out++ = ' '; + } + } + else + { + if (*in == openparen) + ++count; + + *out++ = *in++; + } + } + } + } + + /* There are no more references in this line to worry about. + Copy the remaining uninteresting text to the output. */ + if (out != in) + memmove (out, in, strlen (in) + 1); + + /* Finally, expand the line. */ + cmds->fileinfo.offset = i; + lines[i] = allocated_variable_expand_for_file (cmds->command_lines[i], + file); + } + + cmds->fileinfo.offset = 0; + c->command_lines = lines; + + /* Fetch the first command line to be run. */ + job_next_command (c); + + /* Wait for a job slot to be freed up. If we allow an infinite number + don't bother; also job_slots will == 0 if we're using the jobserver. */ + + if (job_slots != 0) + while (job_slots_used == job_slots) + reap_children (1, 0); + +#ifdef MAKE_JOBSERVER + /* If we are controlling multiple jobs make sure we have a token before + starting the child. */ + + /* This can be inefficient. There's a decent chance that this job won't + actually have to run any subprocesses: the command script may be empty + or otherwise optimized away. It would be nice if we could defer + obtaining a token until just before we need it, in start_job_command. + To do that we'd need to keep track of whether we'd already obtained a + token (since start_job_command is called for each line of the job, not + just once). Also more thought needs to go into the entire algorithm; + this is where the old parallel job code waits, so... */ + + else if (jobserver_enabled ()) + while (1) + { + int got_token; + + DB (DB_JOBS, ("Need a job token; we %shave children\n", + children ? "" : "don't ")); + + /* If we don't already have a job started, use our "free" token. */ + if (!jobserver_tokens) + break; + + /* Prepare for jobserver token acquisition. */ + jobserver_pre_acquire (); + + /* Reap anything that's currently waiting. */ + reap_children (0, 0); + + /* Kick off any jobs we have waiting for an opportunity that + can run now (i.e., waiting for load). */ + start_waiting_jobs (); + + /* If our "free" slot is available, use it; we don't need a token. */ + if (!jobserver_tokens) + break; + + /* 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"); + + /* Get a token. */ + got_token = jobserver_acquire (waiting_jobs != NULL); + + /* If we got one, we're done here. */ + if (got_token == 1) + { + DB (DB_JOBS, (_("Obtained token for child %p (%s).\n"), + c, c->file->name)); + break; + } + } +#endif + + ++jobserver_tokens; + + /* Trace the build. + Use message here so that changes to working directories are logged. */ + if (ISDB (DB_WHY)) + { + char *newer = allocated_variable_expand_for_file ("$?", c->file); + const char *nm; + + if (! cmds->fileinfo.filenm) + nm = _(""); + else + { + char *n = alloca (strlen (cmds->fileinfo.filenm) + 1 + 11 + 1); + sprintf (n, "%s:%lu", cmds->fileinfo.filenm, cmds->fileinfo.lineno); + nm = n; + } + + OSSS (message, 0, + _("%s: update target '%s' due to: %s"), nm, c->file->name, + newer[0] == '\0' ? _("target does not exist") : newer); + + free (newer); + } + + /* The job is now primed. Start it running. + (This will notice if there is in fact no recipe.) */ + start_waiting_job (c); + + if (job_slots == 1 || not_parallel) + /* Since there is only one job slot, make things run linearly. + Wait for the child to die, setting the state to 'cs_finished'. */ + while (file->command_state == cs_running) + reap_children (1, 0); + + OUTPUT_UNSET (); + return; +} + +/* Move CHILD's pointers to the next command for it to execute. + Returns nonzero if there is another command. */ + +static int +job_next_command (struct child *child) +{ + while (child->command_ptr == 0 || *child->command_ptr == '\0') + { + /* There are no more lines in the expansion of this line. */ + if (child->command_line == child->file->cmds->ncommand_lines) + { + /* There are no more lines to be expanded. */ + child->command_ptr = 0; + child->file->cmds->fileinfo.offset = 0; + return 0; + } + else + /* Get the next line to run. */ + child->command_ptr = child->command_lines[child->command_line++]; + } + + child->file->cmds->fileinfo.offset = child->command_line - 1; + return 1; +} + +/* Determine if the load average on the system is too high to start a new job. + + On systems which provide /proc/loadavg (e.g., Linux), we use an idea + provided by Sven C. Dack : retrieve the current number + 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. + + 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 + jobs in a second, which brings the system to its knees for a while until + that first batch of jobs clears out. + + To avoid this we use a weighted algorithm to try to account for jobs which + have been started since the last second, and guess what the load average + would be now if it were computed. + + This algorithm was provided by Thomas Riedl , + based on load average being recomputed once per second, which is + (apparently) how Solaris operates. Linux recomputes only once every 5 + seconds, but Linux is handled by the /proc/loadavg algorithm above. + + Thomas writes: + +! calculate something load-oid and add to the observed sys.load, +! so that latter can catch up: +! - every job started increases jobctr; +! - every dying job decreases a positive jobctr; +! - the jobctr value gets zeroed every change of seconds, +! after its value*weight_b is stored into the 'backlog' value last_sec +! - weight_a times the sum of jobctr and last_sec gets +! added to the observed sys.load. +! +! The two weights have been tried out on 24 and 48 proc. Sun Solaris-9 +! machines, using a several-thousand-jobs-mix of cpp, cc, cxx and smallish +! sub-shelled commands (rm, echo, sed...) for tests. +! lowering the 'direct influence' factor weight_a (e.g. to 0.1) +! resulted in significant excession of the load limit, raising it +! (e.g. to 0.5) took bad to small, fast-executing jobs and didn't +! reach the limit in most test cases. +! +! lowering the 'history influence' weight_b (e.g. to 0.1) resulted in +! exceeding the limit for longer-running stuff (compile jobs in +! the .5 to 1.5 sec. range),raising it (e.g. to 0.5) overrepresented +! small jobs' effects. + + */ + +#define LOAD_WEIGHT_A 0.25 +#define LOAD_WEIGHT_B 0.25 + +static int +load_too_high (void) +{ +#if defined(__MSDOS__) || defined(VMS) || defined(_AMIGA) || defined(__riscos__) + return 1; +#else + static double last_sec; + static time_t last_now; + static int proc_fd = -2; + + double load, guess; + time_t now; + +#ifdef WINDOWS32 + /* sub_proc.c is limited in the number of objects it can wait for. */ + if (process_table_full ()) + return 1; +#endif + + if (max_load_average < 0) + return 0; + + /* If we haven't tried to open /proc/loadavg, try now. */ +#define LOADAVG "/proc/loadavg" + if (proc_fd == -2) + { + EINTRLOOP (proc_fd, open (LOADAVG, O_RDONLY)); + if (proc_fd < 0) + DB (DB_JOBS, ("Using system load detection method.\n")); + else + { + DB (DB_JOBS, ("Using " LOADAVG " load detection method.\n")); + fd_noinherit (proc_fd); + } + } + + /* Try to read /proc/loadavg if we managed to open it. */ + if (proc_fd >= 0) + { + int r; + + EINTRLOOP (r, lseek (proc_fd, 0, SEEK_SET)); + if (r >= 0) + { +#define PROC_LOADAVG_SIZE 64 + char avg[PROC_LOADAVG_SIZE+1]; + + EINTRLOOP (r, read (proc_fd, avg, PROC_LOADAVG_SIZE)); + if (r >= 0) + { + const char *p; + + /* The syntax of /proc/loadavg is: + <1m> <5m> <15m> / + The load is considered too high if there are more jobs + running than the requested average. */ + + avg[r] = '\0'; + p = strchr (avg, ' '); + if (p) + p = strchr (p+1, ' '); + if (p) + p = strchr (p+1, ' '); + + if (p && ISDIGIT(p[1])) + { + 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; + } + + DB (DB_JOBS, ("Failed to parse " LOADAVG ": %s\n", avg)); + } + } + + /* If we got here, something went wrong. Give up on this method. */ + if (r < 0) + DB (DB_JOBS, ("Failed to read " LOADAVG ": %s\n", strerror (errno))); + + close (proc_fd); + proc_fd = -1; + } + + /* Find the real system load average. */ + errno = 0; + if (getloadavg (&load, 1) != 1) + { + static int lossage = -1; + /* Complain only once for the same error. */ + if (lossage == -1 || errno != lossage) + { + if (errno == 0) + /* An errno value of zero means getloadavg is just unsupported. */ + O (error, NILF, + _("cannot enforce load limits on this operating system")); + else + perror_with_name (_("cannot enforce load limit: "), "getloadavg"); + } + lossage = errno; + load = 0; + } + + /* 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. */ + now = time (NULL); + if (last_now < now) + { + if (last_now == now - 1) + last_sec = LOAD_WEIGHT_B * job_counter; + else + last_sec = 0.0; + + job_counter = 0; + last_now = now; + } + + /* Try to guess what the load would be right now. */ + guess = load + (LOAD_WEIGHT_A * (job_counter + last_sec)); + + DB (DB_JOBS, ("Estimated system load = %f (actual = %f) (max requested = %f)\n", + guess, load, max_load_average)); + + return guess >= max_load_average; +#endif +} + +/* Start jobs that are waiting for the load to be lower. */ + +void +start_waiting_jobs (void) +{ + struct child *job; + + if (waiting_jobs == 0) + return; + + do + { + /* Check for recently deceased descendants. */ + reap_children (0, 0); + + /* Take a job off the waiting list. */ + job = waiting_jobs; + waiting_jobs = job->next; + + /* Try to start that job. We break out of the loop as soon + as start_waiting_job puts one back on the waiting list. */ + } + while (start_waiting_job (job) && waiting_jobs != 0); + + return; +} + +#ifndef WINDOWS32 + +/* EMX: Start a child process. This function returns the new pid. */ +# if defined __EMX__ +pid_t +child_execute_job (struct childbase *child, int good_stdin, char **argv) +{ + pid_t pid; + int fdin = good_stdin ? FD_STDIN : get_bad_stdin (); + int fdout = FD_STDOUT; + int fderr = FD_STDERR; + int save_fdin = -1; + int save_fdout = -1; + int save_fderr = -1; + + /* Divert child output if we want to capture output. */ + if (child->output.syncout) + { + if (child->output.out >= 0) + fdout = child->output.out; + if (child->output.err >= 0) + fderr = child->output.err; + } + + /* For each FD which needs to be redirected first make a dup of the standard + FD to save and mark it close on exec so our child won't see it. Then + dup2() the standard FD to the redirect FD, and also mark the redirect FD + as close on exec. */ + if (fdin != FD_STDIN) + { + save_fdin = dup (FD_STDIN); + if (save_fdin < 0) + O (fatal, NILF, _("no more file handles: could not duplicate stdin")); + fd_noinherit (save_fdin); + + dup2 (fdin, FD_STDIN); + fd_noinherit (fdin); + } + + if (fdout != FD_STDOUT) + { + save_fdout = dup (FD_STDOUT); + if (save_fdout < 0) + O (fatal, NILF, + _("no more file handles: could not duplicate stdout")); + fd_noinherit (save_fdout); + + dup2 (fdout, FD_STDOUT); + fd_noinherit (fdout); + } + + if (fderr != FD_STDERR) + { + if (fderr != fdout) + { + save_fderr = dup (FD_STDERR); + if (save_fderr < 0) + O (fatal, NILF, + _("no more file handles: could not duplicate stderr")); + fd_noinherit (save_fderr); + } + + dup2 (fderr, FD_STDERR); + fd_noinherit (fderr); + } + + /* Run the command. */ + pid = exec_command (argv, child->environment); + + /* Restore stdout/stdin/stderr of the parent and close temporary FDs. */ + if (save_fdin >= 0) + { + if (dup2 (save_fdin, FD_STDIN) != FD_STDIN) + O (fatal, NILF, _("Could not restore stdin")); + else + close (save_fdin); + } + + if (save_fdout >= 0) + { + if (dup2 (save_fdout, FD_STDOUT) != FD_STDOUT) + O (fatal, NILF, _("Could not restore stdout")); + else + close (save_fdout); + } + + if (save_fderr >= 0) + { + if (dup2 (save_fderr, FD_STDERR) != FD_STDERR) + O (fatal, NILF, _("Could not restore stderr")); + else + close (save_fderr); + } + + if (pid < 0) + OSS (error, NILF, "%s: %s", argv[0], strerror (errno)); + + return pid; +} + +#elif !defined (_AMIGA) && !defined (__MSDOS__) && !defined (VMS) + +/* POSIX: + Create a child process executing the command in ARGV. + Returns the PID or -1. */ +pid_t +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 = -1; + int r; +#if defined(USE_POSIX_SPAWN) + char *cmd; + posix_spawnattr_t attr; + posix_spawn_file_actions_t fa; + short flags = 0; +#endif + + /* Divert child output if we want to capture it. */ + if (child->output.syncout) + { + if (child->output.out >= 0) + fdout = child->output.out; + if (child->output.err >= 0) + fderr = child->output.err; + } + +#if !defined(USE_POSIX_SPAWN) + + { + /* 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 (); + +#ifdef SET_STACK_SIZE + /* Reset limits, if necessary. */ + if (stack_limit.rlim_cur) + setrlimit (RLIMIT_STACK, &stack_limit); +#endif + + /* For any redirected FD, dup2() it to the standard FD. + They are all marked close-on-exec already. */ + if (fdin >= 0 && fdin != FD_STDIN) + EINTRLOOP (r, dup2 (fdin, FD_STDIN)); + if (fdout != FD_STDOUT) + EINTRLOOP (r, dup2 (fdout, FD_STDOUT)); + if (fderr != FD_STDERR) + EINTRLOOP (r, dup2 (fderr, FD_STDERR)); + + /* Run the command. */ + exec_command (argv, child->environment); + _exit (127); + +#else /* USE_POSIX_SPAWN */ + + if ((r = posix_spawnattr_init (&attr)) != 0) + goto done; + + if ((r = posix_spawn_file_actions_init (&fa)) != 0) + { + posix_spawnattr_destroy (&attr); + goto done; + } + + /* Unblock all signals. */ +#ifdef HAVE_POSIX_SPAWNATTR_SETSIGMASK + { + sigset_t mask; + sigemptyset (&mask); + r = posix_spawnattr_setsigmask (&attr, &mask); + if (r != 0) + goto cleanup; + flags |= POSIX_SPAWN_SETSIGMASK; + } +#endif /* have posix_spawnattr_setsigmask() */ + + /* USEVFORK can give significant speedup on systems where it's available. */ +#ifdef POSIX_SPAWN_USEVFORK + flags |= POSIX_SPAWN_USEVFORK; +#endif + + /* For any redirected FD, dup2() it to the standard FD. + They are all marked close-on-exec already. */ + if (fdin >= 0 && fdin != FD_STDIN) + if ((r = posix_spawn_file_actions_adddup2 (&fa, fdin, FD_STDIN)) != 0) + goto cleanup; + if (fdout != FD_STDOUT) + if ((r = posix_spawn_file_actions_adddup2 (&fa, fdout, FD_STDOUT)) != 0) + goto cleanup; + if (fderr != FD_STDERR) + if ((r = posix_spawn_file_actions_adddup2 (&fa, fderr, FD_STDERR)) != 0) + goto cleanup; + + /* 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) + goto cleanup; + + /* Look up the program on the child's PATH, if needed. */ + { + const char *p = NULL; + char **pp; + + for (pp = child->environment; *pp != NULL; ++pp) + if ((*pp)[0] == 'P' && (*pp)[1] == 'A' && (*pp)[2] == 'T' + && (*pp)[3] == 'H' &&(*pp)[4] == '=') + { + p = (*pp) + 5; + break; + } + + /* 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) + { + r = errno; + goto cleanup; + } + + /* Start the program. */ + while ((r = posix_spawn (&pid, cmd, &fa, &attr, argv, + child->environment)) == EINTR) + ; + + /* posix_spawn() doesn't provide sh fallback like exec() does; implement + it here. POSIX doesn't specify the path to sh so use the default. */ + + if (r == ENOEXEC) + { + char **nargv; + char **pp; + size_t l = 0; + + for (pp = argv; *pp != NULL; ++pp) + ++l; + + nargv = xmalloc (sizeof (char *) * (l + 3)); + nargv[0] = (char *)default_shell; + nargv[1] = cmd; + memcpy (&nargv[2], &argv[1], sizeof (char *) * l); + + while ((r = posix_spawn (&pid, nargv[0], &fa, &attr, nargv, + child->environment)) == EINTR) + ; + + free (nargv); + } + + if (r == 0) + { + /* Spawn succeeded but may fail later: remember the command. */ + free (child->cmd_name); + if (cmd != argv[0]) + child->cmd_name = cmd; + else + child->cmd_name = xstrdup(cmd); + } + + cleanup: + posix_spawn_file_actions_destroy (&fa); + posix_spawnattr_destroy (&attr); + + done: + if (r != 0) + pid = -1; + +#endif /* USE_POSIX_SPAWN */ + + if (pid < 0) + OSS (error, NILF, "%s: %s", argv[0], strerror (r)); + + return pid; +} +#endif /* !AMIGA && !__MSDOS__ && !VMS */ +#endif /* !WINDOWS32 */ + +#ifndef _AMIGA +/* Replace the current process with one running the command in ARGV, + with environment ENVP. This function does not return. */ + +pid_t +exec_command (char **argv, char **envp) +{ +#ifdef VMS + /* to work around a problem with signals and execve: ignore them */ +#ifdef SIGCHLD + signal (SIGCHLD,SIG_IGN); +#endif + /* Run the program. */ + execve (argv[0], argv, envp); + OSS (error, NILF, "%s: %s", argv[0], strerror (errno)); + _exit (EXIT_FAILURE); +#else +#ifdef WINDOWS32 + HANDLE hPID; + HANDLE hWaitPID; + int exit_code = EXIT_FAILURE; + + /* make sure CreateProcess() has Path it needs */ + sync_Path_environment (); + + /* launch command */ + hPID = process_easy (argv, envp, -1, -1); + + /* make sure launch ok */ + if (hPID == INVALID_HANDLE_VALUE) + { + int i; + fprintf (stderr, _("process_easy() failed to launch process (e=%ld)\n"), + process_last_err (hPID)); + for (i = 0; argv[i]; i++) + fprintf (stderr, "%s ", argv[i]); + fprintf (stderr, _("\nCounted %d args in failed launch\n"), i); + exit (EXIT_FAILURE); + } + + /* wait and reap last child */ + hWaitPID = process_wait_for_any (1, 0); + while (hWaitPID) + { + /* was an error found on this process? */ + int err = process_last_err (hWaitPID); + + /* get exit data */ + exit_code = process_exit_code (hWaitPID); + + if (err) + fprintf (stderr, "make (e=%d, rc=%d): %s", + err, exit_code, map_windows32_error_to_string (err)); + + /* cleanup process */ + process_cleanup (hWaitPID); + + /* expect to find only last pid, warn about other pids reaped */ + if (hWaitPID == hPID) + break; + else + { + char *pidstr = xstrdup (pid2str ((pid_t)hWaitPID)); + + fprintf (stderr, + _("make reaped child pid %s, still waiting for pid %s\n"), + pidstr, pid2str ((pid_t)hPID)); + free (pidstr); + } + } + + /* Use the child's exit code as our exit code */ + exit (exit_code); + +#else /* !WINDOWS32 */ + + pid_t pid = -1; + +# ifdef __EMX__ + /* Run the program. */ + pid = spawnvpe (P_NOWAIT, argv[0], argv, envp); + if (pid >= 0) + return pid; + + /* the file might have a strange shell extension */ + if (errno == ENOENT) + errno = ENOEXEC; + +# else + + /* 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); + +# endif /* !__EMX__ */ + + switch (errno) + { + case ENOENT: + OSS (error, NILF, "%s: %s", argv[0], strerror (errno)); + break; + case ENOEXEC: + { + /* The file was not a program. Try it as a shell script. */ + const char *shell; + char **new_argv; + int argc; + int i=1; + +# ifdef __EMX__ + /* Do not use $SHELL from the environment */ + struct variable *p = lookup_variable ("SHELL", 5); + if (p) + shell = p->value; + else + shell = 0; +# else + shell = getenv ("SHELL"); +# endif + if (shell == 0) + shell = default_shell; + + argc = 1; + while (argv[argc] != 0) + ++argc; + +# ifdef __EMX__ + if (!unixy_shell) + ++argc; +# endif + + new_argv = alloca ((1 + argc + 1) * sizeof (char *)); + new_argv[0] = (char *)shell; + +# ifdef __EMX__ + if (!unixy_shell) + { + new_argv[1] = "/c"; + ++i; + --argc; + } +# endif + + new_argv[i] = argv[0]; + while (argc > 0) + { + new_argv[i + argc] = argv[argc]; + --argc; + } + +# ifdef __EMX__ + pid = spawnvpe (P_NOWAIT, shell, new_argv, envp); + if (pid >= 0) + break; +# else + execvp (shell, new_argv); +# endif + OSS (error, NILF, "%s: %s", new_argv[0], strerror (errno)); + break; + } + +# ifdef __EMX__ + case EINVAL: + /* this nasty error was driving me nuts :-( */ + O (error, NILF, _("spawnvpe: environment space might be exhausted")); + /* FALLTHROUGH */ +# endif + + default: + OSS (error, NILF, "%s: %s", argv[0], strerror (errno)); + break; + } + + return pid; +#endif /* !WINDOWS32 */ +#endif /* !VMS */ +} +#else /* On Amiga */ +void +exec_command (char **argv) +{ + MyExecute (argv); +} + +void clean_tmp (void) +{ + DeleteFile (amiga_bname); +} + +#endif /* On Amiga */ + +#ifndef VMS +/* Figure out the argument list necessary to run LINE as a command. Try to + 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. + + If RESTP is not NULL, *RESTP is set to point to the first newline in LINE. + If *RESTP is NULL, newlines will be ignored. + + 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. + + 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, + const char *shellflags, const char *ifs, + int flags, char **batch_filename UNUSED) +{ +#ifdef __MSDOS__ + /* MSDOS supports both the stock DOS shell and ports of Unixy shells. + We call 'system' for anything that requires ''slow'' processing, + because DOS shells are too dumb. When $SHELL points to a real + (unix-style) shell, 'system' just calls it to do everything. When + $SHELL points to a DOS shell, 'system' does most of the work + internally, calling the shell only for its internal commands. + However, it looks on the $PATH first, so you can e.g. have an + external command named 'mkdir'. + + Since we call 'system', certain characters and commands below are + actually not specific to COMMAND.COM, but to the DJGPP implementation + of 'system'. In particular: + + The shell wildcard characters are in DOS_CHARS because they will + not be expanded if we call the child via 'spawnXX'. + + The ';' is in DOS_CHARS, because our 'system' knows how to run + multiple commands on a single line. + + DOS_CHARS also include characters special to 4DOS/NDOS, so we + won't have to tell one from another and have one more set of + commands and special characters. */ + static const char *sh_chars_dos = "*?[];|<>%^&()"; + static const char *sh_cmds_dos[] = + { "break", "call", "cd", "chcp", "chdir", "cls", "copy", "ctty", "date", + "del", "dir", "echo", "erase", "exit", "for", "goto", "if", "md", + "mkdir", "path", "pause", "prompt", "rd", "rmdir", "rem", "ren", + "rename", "set", "shift", "time", "type", "ver", "verify", "vol", ":", + 0 }; + + static const char *sh_chars_sh = "#;\"*?[]&|<>(){}$`^"; + static const char *sh_cmds_sh[] = + { "cd", "echo", "eval", "exec", "exit", "login", "logout", "set", "umask", + "wait", "while", "for", "case", "if", ":", ".", "break", "continue", + "export", "read", "readonly", "shift", "times", "trap", "switch", + "unset", "ulimit", "command", 0 }; + + const char *sh_chars; + const char **sh_cmds; + +#elif defined (__EMX__) + static const char *sh_chars_dos = "*?[];|<>%^&()"; + static const char *sh_cmds_dos[] = + { "break", "call", "cd", "chcp", "chdir", "cls", "copy", "ctty", "date", + "del", "dir", "echo", "erase", "exit", "for", "goto", "if", "md", + "mkdir", "path", "pause", "prompt", "rd", "rmdir", "rem", "ren", + "rename", "set", "shift", "time", "type", "ver", "verify", "vol", ":", + 0 }; + + static const char *sh_chars_os2 = "*?[];|<>%^()\"'&"; + static const char *sh_cmds_os2[] = + { "call", "cd", "chcp", "chdir", "cls", "copy", "date", "del", "detach", + "dir", "echo", "endlocal", "erase", "exit", "for", "goto", "if", "keys", + "md", "mkdir", "move", "path", "pause", "prompt", "rd", "rem", "ren", + "rename", "rmdir", "set", "setlocal", "shift", "start", "time", "type", + "ver", "verify", "vol", ":", 0 }; + + static const char *sh_chars_sh = "#;\"*?[]&|<>(){}$`^~'"; + static const char *sh_cmds_sh[] = + { "echo", "cd", "eval", "exec", "exit", "login", "logout", "set", "umask", + "wait", "while", "for", "case", "if", ":", ".", "break", "continue", + "export", "read", "readonly", "shift", "times", "trap", "switch", + "unset", "command", 0 }; + + const char *sh_chars; + const char **sh_cmds; + +#elif defined (_AMIGA) + static const char *sh_chars = "#;\"|<>()?*$`"; + static const char *sh_cmds[] = + { "cd", "eval", "if", "delete", "echo", "copy", "rename", "set", "setenv", + "date", "makedir", "skip", "else", "endif", "path", "prompt", "unset", + "unsetenv", "version", "command", 0 }; + +#elif defined (WINDOWS32) + /* 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 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. */ + static const char *sh_chars_dos = "|&<>"; + static const char *sh_cmds_dos[] = + { "assoc", "break", "call", "cd", "chcp", "chdir", "cls", "color", "copy", + "ctty", "date", "del", "dir", "echo", "echo.", "endlocal", "erase", + "exit", "for", "ftype", "goto", "if", "if", "md", "mkdir", "move", + "path", "pause", "prompt", "rd", "rem", "ren", "rename", "rmdir", + "set", "setlocal", "shift", "time", "title", "type", "ver", "verify", + "vol", ":", 0 }; + + static const char *sh_chars_sh = "#;\"*?[]&|<>(){}$`^"; + static const char *sh_cmds_sh[] = + { "cd", "eval", "exec", "exit", "login", "logout", "set", "umask", "wait", + "while", "for", "case", "if", ":", ".", "break", "continue", "export", + "read", "readonly", "shift", "times", "trap", "switch", "test", "command", +#ifdef BATCH_MODE_ONLY_SHELL + "echo", +#endif + 0 }; + + const char *sh_chars; + const char **sh_cmds; +#elif defined(__riscos__) + static const char *sh_chars = ""; + static const char *sh_cmds[] = { 0 }; +#else /* must be UNIX-ish */ + static const char *sh_chars = "#;\"*?[]&|<>(){}$`^~!"; + static const char *sh_cmds[] = + { ".", ":", "alias", "bg", "break", "case", "cd", "command", "continue", + "eval", "exec", "exit", "export", "fc", "fg", "for", "getopts", "hash", + "if", "jobs", "login", "logout", "read", "readonly", "return", "set", + "shift", "test", "times", "trap", "type", "ulimit", "umask", "unalias", + "unset", "wait", "while", 0 }; + +# ifdef HAVE_DOS_PATHS + /* This is required if the MSYS/Cygwin ports (which do not define + WINDOWS32) are compiled with HAVE_DOS_PATHS defined, which uses + sh_chars_sh directly (see below). The value must be identical + to that of sh_chars immediately above. */ + static const char *sh_chars_sh = "#;\"*?[]&|<>(){}$`^~!"; +# endif /* HAVE_DOS_PATHS */ +#endif + size_t i; + char *p; +#ifndef NDEBUG + char *end; +#endif + char *ap; + const char *cap; + const char *cp; + int instring, word_has_equals, seen_nonequals, last_argument_was_empty; + char **new_argv = 0; + char *argstr = 0; +#ifdef WINDOWS32 + int slow_flag = 0; + + if (!unixy_shell) + { + sh_cmds = sh_cmds_dos; + sh_chars = sh_chars_dos; + } + else + { + sh_cmds = sh_cmds_sh; + sh_chars = sh_chars_sh; + } +#endif /* WINDOWS32 */ + + if (restp != NULL) + *restp = NULL; + + /* Make sure not to bother processing an empty line but stop at newline. */ + while (ISBLANK (*line)) + ++line; + if (*line == '\0') + return 0; + + if (shellflags == 0) + shellflags = posix_pedantic ? "-ec" : "-c"; + + /* See if it is safe to parse commands internally. */ + if (shell == 0) + shell = default_shell; +#ifdef WINDOWS32 + else if (strcmp (shell, default_shell)) + { + char *s1 = _fullpath (NULL, shell, 0); + char *s2 = _fullpath (NULL, default_shell, 0); + + slow_flag = strcmp ((s1 ? s1 : ""), (s2 ? s2 : "")); + + free (s1); + free (s2); + } + if (slow_flag) + goto slow; +#else /* not WINDOWS32 */ +#if defined (__MSDOS__) || defined (__EMX__) + else if (strcasecmp (shell, default_shell)) + { + extern int _is_unixy_shell (const char *_path); + + DB (DB_BASIC, (_("$SHELL changed (was '%s', now '%s')\n"), + default_shell, shell)); + unixy_shell = _is_unixy_shell (shell); + /* we must allocate a copy of shell: construct_command_argv() will free + * shell after this function returns. */ + default_shell = xstrdup (shell); + } + if (unixy_shell) + { + sh_chars = sh_chars_sh; + sh_cmds = sh_cmds_sh; + } + else + { + sh_chars = sh_chars_dos; + sh_cmds = sh_cmds_dos; +# ifdef __EMX__ + if (_osmode == OS2_MODE) + { + sh_chars = sh_chars_os2; + sh_cmds = sh_cmds_os2; + } +# endif + } +#else /* !__MSDOS__ */ + else if (strcmp (shell, default_shell)) + goto slow; +#endif /* !__MSDOS__ && !__EMX__ */ +#endif /* not WINDOWS32 */ + + if (ifs) + for (cap = ifs; *cap != '\0'; ++cap) + if (*cap != ' ' && *cap != '\t' && *cap != '\n') + goto slow; + + if (shellflags) + if (shellflags[0] != '-' + || ((shellflags[1] != 'c' || shellflags[2] != '\0') + && (shellflags[1] != 'e' || shellflags[2] != 'c' || shellflags[3] != '\0'))) + goto slow; + + i = strlen (line) + 1; + + /* More than 1 arg per character is impossible. */ + new_argv = xmalloc (i * sizeof (char *)); + + /* All the args can fit in a buffer as big as LINE is. */ + ap = new_argv[0] = argstr = xmalloc (i); +#ifndef NDEBUG + end = ap + i; +#endif + + /* I is how many complete arguments have been found. */ + i = 0; + instring = word_has_equals = seen_nonequals = last_argument_was_empty = 0; + for (p = line; *p != '\0'; ++p) + { + assert (ap <= end); + + if (instring) + { + /* Inside a string, just copy any char except a closing quote + or a backslash-newline combination. */ + if (*p == instring) + { + instring = 0; + if (ap == new_argv[0] || *(ap-1) == '\0') + last_argument_was_empty = 1; + } + else if (*p == '\\' && p[1] == '\n') + { + /* Backslash-newline is handled differently depending on what + kind of string we're in: inside single-quoted strings you + keep them; in double-quoted strings they disappear. For + DOS/Windows/OS2, if we don't have a POSIX shell, we keep the + pre-POSIX behavior of removing the backslash-newline. */ + if (instring == '"' +#if defined (__MSDOS__) || defined (__EMX__) || defined (WINDOWS32) + || !unixy_shell +#endif + ) + ++p; + else + { + *(ap++) = *(p++); + *(ap++) = *p; + } + } + else if (*p == '\n' && restp != NULL) + { + /* End of the command line. */ + *restp = p; + goto end_of_line; + } + /* Backslash, $, and ` are special inside double quotes. + If we see any of those, punt. + But on MSDOS, if we use COMMAND.COM, double and single + quotes have the same effect. */ + else if (instring == '"' && strchr ("\\$`", *p) != 0 && unixy_shell) + goto slow; +#ifdef WINDOWS32 + /* Quoted wildcard characters must be passed quoted to the + command, so give up the fast route. */ + else if (instring == '"' && strchr ("*?", *p) != 0 && !unixy_shell) + goto slow; + else if (instring == '"' && strncmp (p, "\\\"", 2) == 0) + *ap++ = *++p; +#endif + else + *ap++ = *p; + } + else if (strchr (sh_chars, *p) != 0) + /* Not inside a string, but it's a special char. */ + goto slow; + else if (one_shell && *p == '\n') + /* In .ONESHELL mode \n is a separator like ; or && */ + goto slow; +#ifdef __MSDOS__ + else if (*p == '.' && p[1] == '.' && p[2] == '.' && p[3] != '.') + /* '...' is a wildcard in DJGPP. */ + goto slow; +#endif + else + /* Not a special char. */ + switch (*p) + { + case '=': + /* Equals is a special character in leading words before the + first word with no equals sign in it. This is not the case + with sh -k, but we never get here when using nonstandard + shell flags. */ + if (! seen_nonequals && unixy_shell) + goto slow; + word_has_equals = 1; + *ap++ = '='; + break; + + case '\\': + /* Backslash-newline has special case handling, ref POSIX. + We're in the fastpath, so emulate what the shell would do. */ + if (p[1] == '\n') + { + /* Throw out the backslash and newline. */ + ++p; + + /* At the beginning of the argument, skip any whitespace other + than newline before the start of the next word. */ + if (ap == new_argv[i]) + while (ISBLANK (p[1])) + ++p; + } +#ifdef WINDOWS32 + /* Backslash before whitespace is not special if our shell + is not Unixy. */ + else if (ISSPACE (p[1]) && !unixy_shell) + { + *ap++ = *p; + break; + } +#endif + else if (p[1] != '\0') + { +#ifdef HAVE_DOS_PATHS + /* Only remove backslashes before characters special to Unixy + shells. All other backslashes are copied verbatim, since + they are probably DOS-style directory separators. This + still leaves a small window for problems, but at least it + should work for the vast majority of naive users. */ + +#ifdef __MSDOS__ + /* A dot is only special as part of the "..." + wildcard. */ + if (strneq (p + 1, ".\\.\\.", 5)) + { + *ap++ = '.'; + *ap++ = '.'; + p += 4; + } + else +#endif + if (p[1] != '\\' && p[1] != '\'' && !ISSPACE (p[1]) + && strchr (sh_chars_sh, p[1]) == 0) + /* back up one notch, to copy the backslash */ + --p; +#endif /* HAVE_DOS_PATHS */ + + /* Copy and skip the following char. */ + *ap++ = *++p; + } + break; + + case '\'': + case '"': + instring = *p; + break; + + case '\n': + if (restp != NULL) + { + /* End of the command line. */ + *restp = p; + goto end_of_line; + } + else + /* Newlines are not special. */ + *ap++ = '\n'; + break; + + case ' ': + case '\t': + /* We have the end of an argument. + Terminate the text of the argument. */ + *ap++ = '\0'; + new_argv[++i] = ap; + last_argument_was_empty = 0; + + /* Update SEEN_NONEQUALS, which tells us if every word + heretofore has contained an '='. */ + seen_nonequals |= ! word_has_equals; + if (word_has_equals && ! seen_nonequals) + /* An '=' in a word before the first + word without one is magical. */ + goto slow; + word_has_equals = 0; /* Prepare for the next word. */ + + /* If this argument is the command name, + see if it is a built-in shell command. + If so, have the shell handle it. */ + if (i == 1) + { + int j; + for (j = 0; sh_cmds[j] != 0; ++j) + { + if (streq (sh_cmds[j], new_argv[0])) + goto slow; +#if defined(__EMX__) || defined(WINDOWS32) + /* Non-Unix shells are case insensitive. */ + if (!unixy_shell + && strcasecmp (sh_cmds[j], new_argv[0]) == 0) + goto slow; +#endif + } + } + + /* Skip whitespace chars, but not newlines. */ + while (ISBLANK (p[1])) + ++p; + break; + + default: + *ap++ = *p; + break; + } + } + end_of_line: + + if (instring) + /* Let the shell deal with an unterminated quote. */ + goto slow; + + /* Terminate the last argument and the argument list. */ + + *ap = '\0'; + if (new_argv[i][0] != '\0' || last_argument_was_empty) + ++i; + new_argv[i] = 0; + + if (i == 1) + { + int j; + for (j = 0; sh_cmds[j] != 0; ++j) + if (streq (sh_cmds[j], new_argv[0])) + goto slow; + } + + if (new_argv[0] == 0) + { + /* Line was empty. */ + free (argstr); + free (new_argv); + return 0; + } + + return new_argv; + + slow:; + /* We must use the shell. */ + + if (new_argv != 0) + { + /* Free the old argument list we were working on. */ + free (argstr); + free (new_argv); + } + +#ifdef __MSDOS__ + execute_by_shell = 1; /* actually, call 'system' if shell isn't unixy */ +#endif + +#ifdef _AMIGA + { + char *ptr; + char *buffer; + char *dptr; + + buffer = xmalloc (strlen (line)+1); + + ptr = line; + for (dptr=buffer; *ptr; ) + { + if (*ptr == '\\' && ptr[1] == '\n') + ptr += 2; + else if (*ptr == '@') /* Kludge: multiline commands */ + { + ptr += 2; + *dptr++ = '\n'; + } + else + *dptr++ = *ptr++; + } + *dptr = 0; + + new_argv = xmalloc (2 * sizeof (char *)); + new_argv[0] = buffer; + new_argv[1] = 0; + } +#else /* Not Amiga */ +#ifdef WINDOWS32 + /* + * Not eating this whitespace caused things like + * + * sh -c "\n" + * + * which gave the shell fits. I think we have to eat + * whitespace here, but this code should be considered + * suspicious if things start failing.... + */ + + /* Make sure not to bother processing an empty line. */ + NEXT_TOKEN (line); + if (*line == '\0') + return 0; +#endif /* WINDOWS32 */ + + { + /* SHELL may be a multi-word command. Construct a command line + "$(SHELL) $(.SHELLFLAGS) LINE", with all special chars in LINE escaped. + Then recurse, expanding this command line to get the final + argument list. */ + + char *new_line; + size_t shell_len = strlen (shell); + size_t line_len = strlen (line); + size_t sflags_len = shellflags ? strlen (shellflags) : 0; +#ifdef WINDOWS32 + char *command_ptr = NULL; /* used for batch_mode_shell mode */ +#endif + +# ifdef __EMX__ /* is this necessary? */ + if (!unixy_shell && shellflags) + shellflags[0] = '/'; /* "/c" */ +# endif + + /* In .ONESHELL mode we are allowed to throw the entire current + recipe string at a single shell and trust that the user + has configured the shell and shell flags, and formatted + the string, appropriately. */ + if (one_shell) + { + /* If the shell is Bourne compatible, we must remove and ignore + interior special chars [@+-] because they're meaningless to + the shell itself. If, however, we're in .ONESHELL mode and + have changed SHELL to something non-standard, we should + leave those alone because they could be part of the + script. In this case we must also leave in place + any leading [@+-] for the same reason. */ + + /* Remove and ignore interior prefix chars [@+-] because they're + meaningless given a single shell. */ +#if defined __MSDOS__ || defined (__EMX__) + if (unixy_shell) /* the test is complicated and we already did it */ +#else + if (is_bourne_compatible_shell (shell) +#ifdef WINDOWS32 + /* If we didn't find any sh.exe, don't behave is if we did! */ + && !no_default_sh_exe +#endif + ) +#endif + { + const char *f = line; + char *t = line; + + /* Copy the recipe, removing and ignoring interior prefix chars + [@+-]: they're meaningless in .ONESHELL mode. */ + while (f[0] != '\0') + { + int esc = 0; + + /* This is the start of a new recipe line. Skip whitespace + and prefix characters but not newlines. */ + while (ISBLANK (*f) || *f == '-' || *f == '@' || *f == '+') + ++f; + + /* Copy until we get to the next logical recipe line. */ + while (*f != '\0') + { + *(t++) = *(f++); + if (f[-1] == '\\') + esc = !esc; + else + { + /* On unescaped newline, we're done with this line. */ + if (f[-1] == '\n' && ! esc) + break; + + /* Something else: reset the escape sequence. */ + esc = 0; + } + } + } + *t = '\0'; + } +#ifdef WINDOWS32 + else /* non-Posix shell (cmd.exe etc.) */ + { + const char *f = line; + char *t = line; + char *tstart = t; + int temp_fd; + FILE* batch = NULL; + int id = GetCurrentProcessId (); + PATH_VAR(fbuf); + + /* Generate a file name for the temporary batch file. */ + sprintf (fbuf, "make%d", id); + *batch_filename = create_batch_file (fbuf, 0, &temp_fd); + DB (DB_JOBS, (_("Creating temporary batch file %s\n"), + *batch_filename)); + + /* Create a FILE object for the batch file, and write to it the + commands to be executed. Put the batch file in TEXT mode. */ + _setmode (temp_fd, _O_TEXT); + batch = _fdopen (temp_fd, "wt"); + fputs ("@echo off\n", batch); + DB (DB_JOBS, (_("Batch file contents:\n\t@echo off\n"))); + + /* Copy the recipe, removing and ignoring interior prefix chars + [@+-]: they're meaningless in .ONESHELL mode. */ + while (*f != '\0') + { + /* This is the start of a new recipe line. Skip whitespace + and prefix characters but not newlines. */ + while (ISBLANK (*f) || *f == '-' || *f == '@' || *f == '+') + ++f; + + /* Copy until we get to the next logical recipe line. */ + while (*f != '\0') + { + /* Remove the escaped newlines in the command, and the + blanks that follow them. Windows shells cannot handle + escaped newlines. */ + if (*f == '\\' && f[1] == '\n') + { + f += 2; + while (ISBLANK (*f)) + ++f; + } + *(t++) = *(f++); + /* On an unescaped newline, we're done with this + line. */ + if (f[-1] == '\n') + break; + } + /* Write another line into the batch file. */ + if (t > tstart) + { + char c = *t; + *t = '\0'; + fputs (tstart, batch); + DB (DB_JOBS, ("\t%s", tstart)); + tstart = t; + *t = c; + } + } + DB (DB_JOBS, ("\n")); + fclose (batch); + + /* Create an argv list for the shell command line that + will run the batch file. */ + new_argv = xmalloc (2 * sizeof (char *)); + new_argv[0] = xstrdup (*batch_filename); + new_argv[1] = NULL; + return new_argv; + } +#endif /* WINDOWS32 */ + /* Create an argv list for the shell command line. */ + { + int n = 1; + char *nextp; + + new_argv = xmalloc ((4 + sflags_len/2) * sizeof (char *)); + + 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++] = nextp; + *(nextp++) = '\0'; + } + else + { + /* 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++] = nextp; + memcpy(nextp, line, line_len + 1); + new_argv[n++] = NULL; + } + return new_argv; + } + + new_line = xmalloc ((shell_len*2) + 1 + sflags_len + 1 + + (line_len*2) + 1); + ap = new_line; + /* Copy SHELL, escaping any characters special to the shell. If + we don't escape them, construct_command_argv_internal will + recursively call itself ad nauseam, or until stack overflow, + whichever happens first. */ + for (cp = shell; *cp != '\0'; ++cp) + { + if (strchr (sh_chars, *cp) != 0) + *(ap++) = '\\'; + *(ap++) = *cp; + } + *(ap++) = ' '; + if (shellflags) + { + ap = mempcpy (ap, shellflags, sflags_len); + *(ap++) = ' '; + } +#ifdef WINDOWS32 + command_ptr = ap; +#endif + for (p = line; *p != '\0'; ++p) + { + if (restp != NULL && *p == '\n') + { + *restp = p; + break; + } + else if (*p == '\\' && p[1] == '\n') + { + /* POSIX says we keep the backslash-newline. If we don't have a + POSIX shell on DOS/Windows/OS2, mimic the pre-POSIX behavior + and remove the backslash/newline. */ +#if defined (__MSDOS__) || defined (__EMX__) || defined (WINDOWS32) +# define PRESERVE_BSNL unixy_shell +#else +# define PRESERVE_BSNL 1 +#endif + if (PRESERVE_BSNL) + { + *(ap++) = '\\'; + /* Only non-batch execution needs another backslash, + because it will be passed through a recursive + invocation of this function. */ + if (!batch_mode_shell) + *(ap++) = '\\'; + *(ap++) = '\n'; + } + ++p; + continue; + } + + /* DOS shells don't know about backslash-escaping. */ + if (unixy_shell && !batch_mode_shell && + (*p == '\\' || *p == '\'' || *p == '"' + || ISSPACE (*p) + || strchr (sh_chars, *p) != 0)) + *ap++ = '\\'; +#ifdef __MSDOS__ + else if (unixy_shell && strneq (p, "...", 3)) + { + /* The case of '...' wildcard again. */ + ap = stpcpy (ap, "\\.\\.\\"); + p += 2; + } +#endif + *ap++ = *p; + } + if (ap == new_line + shell_len + sflags_len + 2) + { + /* Line was empty. */ + free (new_line); + return 0; + } + *ap = '\0'; + +#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 W32 systems). In these + cases, run commands via a script file. */ + if (just_print_flag && !(flags & COMMANDS_RECURSE)) + { + /* Need to allocate new_argv, although it's unused, because + start_job_command will want to free it and its 0'th element. */ + new_argv = xmalloc (2 * sizeof (char *)); + new_argv[0] = xstrdup (""); + new_argv[1] = NULL; + } + else if ((no_default_sh_exe || batch_mode_shell) && batch_filename) + { + int temp_fd; + FILE* batch = NULL; + int id = GetCurrentProcessId (); + PATH_VAR (fbuf); + + /* create a file name */ + sprintf (fbuf, "make%d", id); + *batch_filename = create_batch_file (fbuf, unixy_shell, &temp_fd); + + DB (DB_JOBS, (_("Creating temporary batch file %s\n"), + *batch_filename)); + + /* Create a FILE object for the batch file, and write to it the + commands to be executed. Put the batch file in TEXT mode. */ + _setmode (temp_fd, _O_TEXT); + batch = _fdopen (temp_fd, "wt"); + if (!unixy_shell) + fputs ("@echo off\n", batch); + fputs (command_ptr, batch); + fputc ('\n', batch); + fclose (batch); + DB (DB_JOBS, (_("Batch file contents:%s\n\t%s\n"), + !unixy_shell ? "\n\t@echo off" : "", command_ptr)); + + /* create argv */ + new_argv = xmalloc (3 * sizeof (char *)); + if (unixy_shell) + { + new_argv[0] = xstrdup (shell); + new_argv[1] = *batch_filename; /* only argv[0] gets freed later */ + } + else + { + new_argv[0] = xstrdup (*batch_filename); + new_argv[1] = NULL; + } + new_argv[2] = NULL; + } + else +#endif /* WINDOWS32 */ + + if (unixy_shell) + new_argv = construct_command_argv_internal (new_line, 0, 0, 0, 0, + flags, 0); + +#ifdef __EMX__ + else if (!unixy_shell) + { + /* new_line is local, must not be freed therefore + We use line here instead of new_line because we run the shell + manually. */ + size_t line_len = strlen (line); + char *p = new_line; + char *q = new_line; + memcpy (new_line, line, line_len + 1); + /* Replace all backslash-newline combination and also following tabs. + Important: stop at the first '\n' because that's what the loop above + did. The next line starting at restp[0] will be executed during the + next call of this function. */ + while (*q != '\0' && *q != '\n') + { + if (q[0] == '\\' && q[1] == '\n') + q += 2; /* remove '\\' and '\n' */ + else + *p++ = *q++; + } + *p = '\0'; + +# ifndef NO_CMD_DEFAULT + if (strnicmp (new_line, "echo", 4) == 0 + && (new_line[4] == ' ' || new_line[4] == '\t')) + { + /* the builtin echo command: handle it separately */ + size_t echo_len = line_len - 5; + char *echo_line = new_line + 5; + + /* special case: echo 'x="y"' + cmd works this way: a string is printed as is, i.e., no quotes + are removed. But autoconf uses a command like echo 'x="y"' to + determine whether make works. autoconf expects the output x="y" + so we will do exactly that. + Note: if we do not allow cmd to be the default shell + we do not need this kind of voodoo */ + if (echo_line[0] == '\'' + && echo_line[echo_len - 1] == '\'' + && strncmp (echo_line + 1, "ac_maketemp=", + strlen ("ac_maketemp=")) == 0) + { + /* remove the enclosing quotes */ + memmove (echo_line, echo_line + 1, echo_len - 2); + echo_line[echo_len - 2] = '\0'; + } + } +# endif + + { + /* Let the shell decide what to do. Put the command line into the + 2nd command line argument and hope for the best ;-) */ + size_t sh_len = strlen (shell); + + /* exactly 3 arguments + NULL */ + new_argv = xmalloc (4 * sizeof (char *)); + /* Exactly strlen(shell) + strlen("/c") + strlen(line) + 3 times + the trailing '\0' */ + new_argv[0] = xmalloc (sh_len + line_len + 5); + memcpy (new_argv[0], shell, sh_len + 1); + new_argv[1] = new_argv[0] + sh_len + 1; + memcpy (new_argv[1], "/c", 3); + new_argv[2] = new_argv[1] + 3; + memcpy (new_argv[2], new_line, line_len + 1); + new_argv[3] = NULL; + } + } +#elif defined(__MSDOS__) + else + { + /* With MSDOS shells, we must construct the command line here + instead of recursively calling ourselves, because we + cannot backslash-escape the special characters (see above). */ + new_argv = xmalloc (sizeof (char *)); + line_len = strlen (new_line) - shell_len - sflags_len - 2; + new_argv[0] = xmalloc (line_len + 1); + strncpy (new_argv[0], + new_line + shell_len + sflags_len + 2, line_len); + new_argv[0][line_len] = '\0'; + } +#else + else + fatal (NILF, CSTRLEN (__FILE__) + INTSTR_LENGTH, + _("%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"), + __FILE__, __LINE__); +#endif + + free (new_line); + } +#endif /* ! AMIGA */ + + return new_argv; +} +#endif /* !VMS */ + +/* Figure out the argument list necessary to run LINE as a command. Try to + 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. + + If RESTP is not NULL, *RESTP is set to point to the first newline in LINE. + If *RESTP is NULL, newlines will be ignored. + + FILE is the target whose commands these are. It is used for + variable expansion for $(SHELL) and $(IFS). */ + +char ** +construct_command_argv (char *line, char **restp, struct file *file, + int cmd_flags, char **batch_filename) +{ + char *shell, *ifs, *shellflags; + char **argv; + + { + /* Turn off --warn-undefined-variables while we expand SHELL and IFS. */ + int save = warn_undefined_variables_flag; + warn_undefined_variables_flag = 0; + + shell = allocated_variable_expand_for_file ("$(SHELL)", file); +#ifdef WINDOWS32 + /* + * Convert to forward slashes so that construct_command_argv_internal() + * is not confused. + */ + if (shell) + { + char *p = w32ify (shell, 0); + strcpy (shell, p); + } +#endif +#ifdef __EMX__ + { + static const char *unixroot = NULL; + static const char *last_shell = ""; + static int init = 0; + if (init == 0) + { + unixroot = getenv ("UNIXROOT"); + /* unixroot must be NULL or not empty */ + if (unixroot && unixroot[0] == '\0') unixroot = NULL; + init = 1; + } + + /* if we have an unixroot drive and if shell is not default_shell + (which means it's either cmd.exe or the test has already been + 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 && ISDIRSEP (shell[0]) && !streq (shell, last_shell)) + { + /* trying a new shell, check whether it exists */ + size_t size = strlen (shell); + char *buf = xmalloc (size + 7); + memcpy (buf, shell, size); + memcpy (buf + size, ".exe", 5); /* including the trailing '\0' */ + if (access (shell, F_OK) != 0 && access (buf, F_OK) != 0) + { + /* try the same for the unixroot drive */ + memmove (buf + 2, buf, size + 5); + buf[0] = unixroot[0]; + buf[1] = unixroot[1]; + if (access (buf, F_OK) == 0) + /* we have found a shell! */ + /* free(shell); */ + shell = buf; + else + free (buf); + } + else + free (buf); + } + } +#endif /* __EMX__ */ + + shellflags = allocated_variable_expand_for_file ("$(.SHELLFLAGS)", file); + ifs = allocated_variable_expand_for_file ("$(IFS)", file); + + warn_undefined_variables_flag = save; + } + + argv = construct_command_argv_internal (line, restp, shell, shellflags, ifs, + cmd_flags, batch_filename); + + free (shell); + free (shellflags); + free (ifs); + + return argv; +} + +#if !defined(HAVE_DUP2) && !defined(_AMIGA) +int +dup2 (int old, int new) +{ + int fd; + + (void) close (new); + EINTRLOOP (fd, dup (old)); + if (fd != new) + { + (void) close (fd); + errno = EMFILE; + return -1; + } + + return fd; +} +#endif /* !HAVE_DUP2 && !_AMIGA */ + +/* On VMS systems, include special VMS functions. */ + +#ifdef VMS +#include "vmsjobs.c" +#endif diff --git a/local/recipes/dev/gnu-make/source/src/job.h b/local/recipes/dev/gnu-make/source/src/job.h new file mode 100644 index 0000000000..14a9984d68 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/job.h @@ -0,0 +1,92 @@ +/* Definitions for managing subprocesses in GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "output.h" + +/* Structure describing a running or dead child process. */ + +#ifdef VMS +#define VMSCHILD \ + char *comname; /* Temporary command file name */ \ + int efn; /* Completion event flag number */ \ + int cstatus; /* Completion status */ \ + int vms_launch_status; /* non-zero if lib$spawn, etc failed */ +#else +#define VMSCHILD +#endif + +#define CHILDBASE \ + char *cmd_name; /* Allocated copy of command run. */ \ + char **environment; /* Environment for commands. */ \ + VMSCHILD \ + struct output output /* Output for this child. */ + + +struct childbase + { + CHILDBASE; + }; + +struct child + { + CHILDBASE; + + struct child *next; /* Link in the chain. */ + + struct file *file; /* File being remade. */ + + char *sh_batch_file; /* Script file for shell commands */ + char **command_lines; /* Array of variable-expanded cmd lines. */ + char *command_ptr; /* Ptr into command_lines[command_line]. */ + + unsigned int command_line; /* Index into command_lines. */ + + pid_t pid; /* Child process's ID number. */ + + unsigned int remote:1; /* Nonzero if executing remotely. */ + unsigned int noerror:1; /* Nonzero if commands contained a '-'. */ + unsigned int good_stdin:1; /* Nonzero if this child has a good stdin. */ + unsigned int deleted:1; /* Nonzero if targets have been deleted. */ + unsigned int recursive:1; /* Nonzero for recursive command ('+' etc.) */ + unsigned int jobslot:1; /* Nonzero if it's reserved a job slot. */ + unsigned int dontcare:1; /* Saved dontcare flag. */ + }; + +extern struct child *children; + +/* A signal handler for SIGCHLD, if needed. */ +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); + +pid_t child_execute_job (struct childbase *child, int good_stdin, char **argv); + +#ifdef _AMIGA +void exec_command (char **argv) NORETURN; +#else +pid_t exec_command (char **argv, char **envp); +#endif + +void unblock_all_sigs (void); + +extern unsigned int job_slots_used; +extern unsigned int jobserver_tokens; diff --git a/local/recipes/dev/gnu-make/source/src/load.c b/local/recipes/dev/gnu-make/source/src/load.c new file mode 100644 index 0000000000..e343a2eeed --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/load.c @@ -0,0 +1,262 @@ +/* Loading dynamic objects for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#if MAKE_LOAD + +#include +#include +#include +#include +#include + +#define SYMBOL_EXTENSION "_gmk_setup" + +#include "debug.h" +#include "filedef.h" +#include "variable.h" + +/* Tru64 V4.0 does not have this flag */ +#ifndef RTLD_GLOBAL +# define RTLD_GLOBAL 0 +#endif + +struct load_list + { + struct load_list *next; + const char *name; + void *dlp; + }; + +static struct load_list *loaded_syms = NULL; + +static load_func_t +load_object (const floc *flocp, int noerror, const char *ldname, + const char *symname) +{ + static void *global_dl = NULL; + load_func_t symp; + + if (! global_dl) + { + global_dl = dlopen (NULL, RTLD_NOW|RTLD_GLOBAL); + if (! global_dl) + { + const char *err = dlerror (); + OS (fatal, flocp, _("Failed to open global symbol table: %s"), err); + } + } + + symp = (load_func_t) dlsym (global_dl, symname); + if (! symp) + { + struct load_list *new; + void *dlp = NULL; + + /* If the path has no "/", try the current directory first. */ + if (! strchr (ldname, '/') +#ifdef HAVE_DOS_PATHS + && ! strchr (ldname, '\\') +#endif + ) + dlp = dlopen (concat (2, "./", ldname), RTLD_LAZY|RTLD_GLOBAL); + + /* If we haven't opened it yet, try the default search path. */ + if (! dlp) + dlp = dlopen (ldname, RTLD_LAZY|RTLD_GLOBAL); + + /* Still no? Then fail. */ + if (! dlp) + { + const char *err = dlerror (); + if (noerror) + 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) + OS (fatal, flocp, + _("Loaded object %s is not declared to be GPL compatible"), + ldname); + + symp = (load_func_t) dlsym (dlp, symname); + if (! symp) + { + const char *err = dlerror (); + OSSS (fatal, flocp, _("Failed to load symbol %s from %s: %s"), + symname, ldname, err); + } + + /* Add this symbol to a trivial lookup table. This is not efficient but + it's highly unlikely we'll be loading lots of objects, and we only + need it to look them up on unload, if we rebuild them. */ + new = xmalloc (sizeof (struct load_list)); + new->name = xstrdup (ldname); + new->dlp = dlp; + new->next = loaded_syms; + loaded_syms = new; + } + + return symp; +} + +int +load_file (const floc *flocp, struct file *file, int noerror) +{ + const char *ldname = file->name; + size_t nmlen = strlen (ldname); + char *new = alloca (nmlen + CSTRLEN (SYMBOL_EXTENSION) + 1); + char *symname = NULL; + 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, '('); + if (fp) + { + const char *ep; + + /* There's an open paren, so see if there's a close paren: if so use + that as the symbol name. We can't have whitespace: it would have + been chopped up before this function is called. */ + ep = strchr (fp+1, ')'); + if (ep && ep[1] == '\0') + { + size_t l = fp - ldname; + + ++fp; + if (fp == ep) + OS (fatal, flocp, _("Empty symbol name for load: %s"), ldname); + + /* Make a copy of the ldname part. */ + memcpy (new, ldname, l); + new[l] = '\0'; + ldname = new; + nmlen = l; + + /* Make a copy of the symbol name part. */ + symname = new + l + 1; + memcpy (symname, fp, ep - fp); + symname[ep - fp] = '\0'; + } + } + + /* Make sure this name is in the string cache. */ + ldname = file->name = strcache_add (ldname); + + /* 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, '/'); +#ifdef HAVE_DOS_PATHS + if (fp) + { + const char *fp2 = strchr (fp, '\\'); + + if (fp2 > fp) + fp = fp2; + } + else + fp = strrchr (ldname, '\\'); + /* The (improbable) case of d:foo. */ + if (fp && *fp && fp[1] == ':') + fp++; +#endif + if (!fp) + fp = ldname; + else + ++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)); + + /* Load it! */ + symp = load_object (flocp, noerror, ldname, symname); + if (! symp) + return 0; + + /* Invoke the symbol. */ + r = (*symp) (flocp); + + /* 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); + + return r; +} + +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) + { + DB (DB_VERBOSE, (_("Unloading shared object %s\n"), name)); + rc = dlclose (d->dlp); + if (rc) + perror_with_name ("dlclose: ", d->name); + else + d->dlp = NULL; + break; + } + + return rc; +} + +#else + +int +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")); + + return 0; +} + +int +unload_file (const char *name UNUSED) +{ + O (fatal, NILF, "INTERNAL: Cannot unload when load is not supported"); +} + +#endif /* MAKE_LOAD */ diff --git a/local/recipes/dev/gnu-make/source/src/loadapi.c b/local/recipes/dev/gnu-make/source/src/loadapi.c new file mode 100644 index 0000000000..3c1fdb0a92 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/loadapi.c @@ -0,0 +1,82 @@ +/* API for GNU Make dynamic objects. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include "filedef.h" +#include "variable.h" +#include "dep.h" + +/* Allocate a buffer in our context, so we can free it. */ +char * +gmk_alloc (unsigned int len) +{ + return xmalloc (len); +} + +/* Free a buffer returned by gmk_expand(). */ +void +gmk_free (char *s) +{ + free (s); +} + +/* Evaluate a buffer as make syntax. + Ideally eval_buffer() will take const char *, but not yet. */ +void +gmk_eval (const char *buffer, const gmk_floc *gfloc) +{ + /* Preserve existing variable buffer context. */ + char *pbuf; + size_t plen; + char *s; + floc fl; + floc *flp; + + if (gfloc) + { + fl.filenm = gfloc->filenm; + fl.lineno = gfloc->lineno; + fl.offset = 0; + flp = &fl; + } + else + flp = NULL; + + install_variable_buffer (&pbuf, &plen); + + s = xstrdup (buffer); + eval_buffer (s, flp); + free (s); + + restore_variable_buffer (pbuf, plen); +} + +/* Expand a string and return an allocated buffer. + Caller must call gmk_free() with this buffer. */ +char * +gmk_expand (const char *ref) +{ + return allocated_variable_expand (ref); +} + +/* Register a function to be called from makefiles. */ +void +gmk_add_function (const char *name, gmk_func_ptr func, + unsigned int min, unsigned int max, unsigned int flags) +{ + define_new_function (reading_file, name, min, max, flags, func); +} diff --git a/local/recipes/dev/gnu-make/source/src/main.c b/local/recipes/dev/gnu-make/source/src/main.c new file mode 100644 index 0000000000..eec9365639 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/main.c @@ -0,0 +1,3800 @@ +/* Argument parsing and main program of GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include "os.h" +#include "filedef.h" +#include "dep.h" +#include "variable.h" +#include "job.h" +#include "commands.h" +#include "rule.h" +#include "debug.h" +#include "getopt.h" +#include "shuffle.h" + +#include +#ifdef _AMIGA +# include +# include +#endif +#ifdef WINDOWS32 +# include +# include +#ifdef HAVE_STRINGS_H +# include /* for strcasecmp */ +#endif +# include "pathstuff.h" +# include "sub_proc.h" +# include "w32err.h" +#endif +#ifdef __EMX__ +# include +# include +#endif +#ifdef HAVE_FCNTL_H +# include +#endif + +#ifdef _AMIGA +int __stack = 20000; /* Make sure we have 20K of stack space */ +#endif +#ifdef VMS +int vms_use_mcr_command = 0; +int vms_always_use_cmd_file = 0; +int vms_gnv_shell = 0; +int vms_legacy_behavior = 0; +int vms_comma_separator = 0; +int vms_unix_simulation = 0; +int vms_report_unix_paths = 0; + +/* Evaluates if a VMS environment option is set, only look at first character */ +static int +get_vms_env_flag (const char *name, int default_value) +{ +char * value; +char x; + + value = getenv (name); + if (value == NULL) + return default_value; + + x = toupper (value[0]); + switch (x) + { + case '1': + case 'T': + case 'E': + return 1; + break; + case '0': + case 'F': + case 'D': + return 0; + } +} +#endif + +#if defined HAVE_WAITPID || defined HAVE_WAIT3 +# define HAVE_WAIT_NOHANG +#endif + +#ifndef HAVE_UNISTD_H +int chdir (); +#endif +#ifndef STDC_HEADERS +# ifndef sun /* Sun has an incorrect decl in a header. */ +void exit (int) NORETURN; +# endif +double atof (); +#endif + +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 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); + + +/* True if C is a switch value that corresponds to a short option. */ + +#define short_option(c) ((c) <= CHAR_MAX) + +/* The structure used to hold the list of strings given + in command switches of a type that takes strlist arguments. */ + +struct stringlist + { + const char **list; /* Nil-terminated list of strings. */ + unsigned int idx; /* Index into above. */ + unsigned int max; /* Number of pointers allocated. */ + }; + + +/* The recognized command switches. */ + +/* Nonzero means do extra verification (that may slow things down). */ + +int verify_flag; + +/* Nonzero means do not print commands to be executed (-s). */ + +static int silent_flag; +static const int default_silent_flag = 0; + +/* Nonzero means either -s was given, or .SILENT-with-no-deps was seen. */ + +int run_silent = 0; + +/* Nonzero means just touch the files + that would appear to need remaking (-t) */ + +int touch_flag; + +/* Nonzero means just print what commands would need to be executed, + don't actually execute them (-n). */ + +int just_print_flag; + +/* Print debugging info (--debug). */ + +static struct stringlist *db_flags = 0; +static int debug_flag = 0; + +int db_level = 0; + +/* Synchronize output (--output-sync). */ + +char *output_sync_option = 0; + +/* Environment variables override makefile definitions. */ + +int env_overrides = 0; + +/* Nonzero means ignore status codes returned by commands + executed to remake files. Just treat them all as successful (-i). */ + +int ignore_errors_flag = 0; + +/* Nonzero means don't remake anything, just print the data base + that results from reading the makefile (-p). */ + +int print_data_base_flag = 0; + +/* Nonzero means don't remake anything; just return a nonzero status + if the specified targets are not up to date (-q). */ + +int question_flag = 0; + +/* Nonzero means do not use any of the builtin rules (-r) / variables (-R). */ + +int no_builtin_rules_flag = 0; +int no_builtin_variables_flag = 0; + +/* Nonzero means keep going even if remaking some file fails (-k). */ + +int keep_going_flag; +static const int default_keep_going_flag = 0; + +/* Nonzero means check symlink mtimes. */ + +int check_symlink_flag = 0; + +/* Nonzero means print directory before starting and when done (-w). */ + +int print_directory; +static int print_directory_flag = -1; +static const int default_print_directory_flag = -1; + +/* Nonzero means print version information. */ + +int print_version_flag = 0; + +/* List of makefiles given with -f switches. */ + +static struct stringlist *makefiles = 0; + +/* Size of the stack when we started. */ + +#ifdef SET_STACK_SIZE +struct rlimit stack_limit; +#endif + + +/* Number of job slots for parallelism. */ + +unsigned int job_slots; + +#define INVALID_JOB_SLOTS (-1) +static unsigned int master_job_slots = 0; +static int arg_job_slots = INVALID_JOB_SLOTS; + +static const int default_job_slots = INVALID_JOB_SLOTS; + +/* Value of job_slots that means no limit. */ + +static const int inf_jobs = 0; + +/* Authorization for the jobserver. */ + +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 to synchronize output of our children under -O. */ + +static char *sync_mutex = NULL; + +/* Maximum load average at which multiple jobs will be run. + Negative values mean unlimited, while zero means limit to + zero load (which could be useful to start infinite jobs remotely + but one at a time locally). */ +double max_load_average = -1.0; +double default_load_average = -1.0; + +/* List of directories given with -C switches. */ + +static struct stringlist *directories = 0; + +/* List of include directories given with -I switches. */ + +static struct stringlist *include_dirs = 0; + +/* List of files given with -o switches. */ + +static struct stringlist *old_files = 0; + +/* List of files given with -W switches. */ + +static struct stringlist *new_files = 0; + +/* List of strings to be eval'd. */ +static struct stringlist *eval_strings = 0; + +/* If nonzero, we should just print usage and exit. */ + +static int print_usage_flag = 0; + +/* If nonzero, we should print a warning message + for each reference to an undefined variable. */ + +int warn_undefined_variables_flag; + +/* If nonzero, always build all targets, regardless of whether + they appear out of date or not. */ + +static int always_make_set = 0; +int always_make_flag = 0; + +/* If nonzero, we're in the "try to rebuild makefiles" phase. */ + +int rebuilding_makefiles = 0; + +/* Remember the original value of the SHELL variable, from the environment. */ + +struct variable shell_var; + +/* This character introduces a command: it's the first char on the line. */ + +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 + languages like Hebrew. */ + +static const char *const usage[] = + { + N_("Options:\n"), + N_("\ + -b, -m Ignored for compatibility.\n"), + N_("\ + -B, --always-make Unconditionally make all targets.\n"), + N_("\ + -C DIRECTORY, --directory=DIRECTORY\n\ + Change to DIRECTORY before doing anything.\n"), + N_("\ + -d Print lots of debugging information.\n"), + N_("\ + --debug[=FLAGS] Print various types of debugging information.\n"), + N_("\ + -e, --environment-overrides\n\ + Environment variables override makefiles.\n"), + N_("\ + -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"), + N_("\ + -f FILE, --file=FILE, --makefile=FILE\n\ + Read FILE as a makefile.\n"), + N_("\ + -h, --help Print this message and exit.\n"), + N_("\ + -i, --ignore-errors Ignore errors from recipes.\n"), + N_("\ + -I DIRECTORY, --include-dir=DIRECTORY\n\ + Search DIRECTORY for included makefiles.\n"), + 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\ + Don't start multiple jobs unless load is below N.\n"), + N_("\ + -L, --check-symlink-times Use the latest mtime between symlinks and target.\n"), + N_("\ + -n, --just-print, --dry-run, --recon\n\ + Don't actually run any recipe; just print them.\n"), + N_("\ + -o FILE, --old-file=FILE, --assume-old=FILE\n\ + Consider FILE to be very old and don't remake it.\n"), + N_("\ + -O[TYPE], --output-sync[=TYPE]\n\ + Synchronize output of parallel jobs by TYPE.\n"), + N_("\ + -p, --print-data-base Print make's internal database.\n"), + N_("\ + -q, --question Run no recipe; exit status says if up to date.\n"), + N_("\ + -r, --no-builtin-rules Disable the built-in implicit rules.\n"), + 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"), + N_("\ + -S, --no-keep-going, --stop\n\ + Turns off -k.\n"), + N_("\ + -t, --touch Touch targets instead of remaking them.\n"), + N_("\ + --trace Print tracing information.\n"), + N_("\ + -v, --version Print the version number of make and exit.\n"), + N_("\ + -w, --print-directory Print the current directory.\n"), + N_("\ + --no-print-directory Turn off -w, even if it was turned on implicitly.\n"), + N_("\ + -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n\ + Consider FILE to be infinitely new.\n"), + N_("\ + --warn-undefined-variables Warn when an undefined variable is referenced.\n"), + 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 }, + { 'B', flag, &always_make_set, 1, 1, 0, 0, 0, "always-make" }, + { 'd', flag, &debug_flag, 1, 1, 0, 0, 0, 0 }, + { 'e', flag, &env_overrides, 1, 1, 0, 0, 0, "environment-overrides", }, + { 'E', strlist, &eval_strings, 1, 0, 0, 0, 0, "eval" }, + { 'h', flag, &print_usage_flag, 0, 0, 0, 0, 0, "help" }, + { 'i', flag, &ignore_errors_flag, 1, 1, 0, 0, 0, "ignore-errors" }, + { 'k', flag, &keep_going_flag, 1, 1, 0, 0, &default_keep_going_flag, + "keep-going" }, + { 'L', flag, &check_symlink_flag, 1, 1, 0, 0, 0, "check-symlink-times" }, + { 'm', ignore, 0, 0, 0, 0, 0, 0, 0 }, + { 'n', flag, &just_print_flag, 1, 1, 1, 0, 0, "just-print" }, + { 'p', flag, &print_data_base_flag, 1, 1, 0, 0, 0, "print-data-base" }, + { 'q', flag, &question_flag, 1, 1, 1, 0, 0, "question" }, + { 'r', flag, &no_builtin_rules_flag, 1, 1, 0, 0, 0, "no-builtin-rules" }, + { 'R', flag, &no_builtin_variables_flag, 1, 1, 0, 0, 0, + "no-builtin-variables" }, + { 's', flag, &silent_flag, 1, 1, 0, 0, &default_silent_flag, "silent" }, + { 'S', flag_off, &keep_going_flag, 1, 1, 0, 0, &default_keep_going_flag, + "no-keep-going" }, + { 't', flag, &touch_flag, 1, 1, 1, 0, 0, "touch" }, + { 'v', flag, &print_version_flag, 1, 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_dirs, 1, 1, 0, 0, 0, + "include-dir" }, + { 'j', positive_int, &arg_job_slots, 1, 1, 0, &inf_jobs, &default_job_slots, + "jobs" }, + { 'l', floating, &max_load_average, 1, 1, 0, &default_load_average, + &default_load_average, "load-average" }, + { 'o', filename, &old_files, 0, 0, 0, 0, 0, "old-file" }, + { 'O', string, &output_sync_option, 1, 1, 0, "target", 0, "output-sync" }, + { 'W', filename, &new_files, 0, 0, 0, 0, 0, "what-if" }, + + /* 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_OPT }, + { CHAR_MAX+3, flag, &trace_flag, 1, 1, 0, 0, 0, "trace" }, + { 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+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 } + }; + +/* Secondary long names for options. */ + +static struct option long_option_aliases[] = + { + { "quiet", no_argument, 0, 's' }, + { "stop", no_argument, 0, 'S' }, + { "new-file", required_argument, 0, 'W' }, + { "assume-new", required_argument, 0, 'W' }, + { "assume-old", required_argument, 0, 'o' }, + { "max-load", optional_argument, 0, 'l' }, + { "dry-run", no_argument, 0, 'n' }, + { "recon", no_argument, 0, 'n' }, + { "makefile", required_argument, 0, 'f' }, + }; + +/* List of goal targets. */ + +static struct goaldep *goals, *lastgoal; + +/* List of variables which were defined on the command line + (or, equivalently, in MAKEFLAGS). */ + +struct command_variable + { + struct command_variable *next; + struct variable *variable; + }; +static struct command_variable *command_variables; + +/* The name we were invoked with. */ + +const char *program; + +/* Our current directory before processing any -C options. */ + +char *directory_before_chdir; + +/* Our current directory after processing all -C options. */ + +char *starting_directory; + +/* Value of the MAKELEVEL variable at startup (or 0). */ + +unsigned int makelevel; + +/* Pointer to the value of the .DEFAULT_GOAL special variable. + The value will be the name of the goal to remake if the command line + does not override it. It can be set by the makefile, or else it's + the first target defined in the makefile whose name does not start + with '.'. */ + +struct variable * default_goal_var; + +/* Pointer to structure for the file .DEFAULT + whose commands are used for any file that has none of its own. + This is zero if the makefiles do not define .DEFAULT. */ + +struct file *default_file; + +/* Nonzero if we have seen the magic '.POSIX' target. + This turns on pedantic compliance with POSIX.2. */ + +int posix_pedantic; + +/* Nonzero if we have seen the '.SECONDEXPANSION' target. + This turns on secondary expansion of prerequisites. */ + +int second_expansion; + +/* Nonzero if we have seen the '.ONESHELL' target. + This causes the entire recipe to be handed to SHELL + as a single string, potentially containing newlines. */ + +int one_shell; + +/* One of OUTPUT_SYNC_* if the "--output-sync" option was given. This + attempts to synchronize the output of parallel jobs such that the results + of each job stay together. */ + +int output_sync = OUTPUT_SYNC_NONE; + +/* Nonzero if we have seen the '.NOTPARALLEL' target. + This turns off parallel builds for this invocation of make. */ + +int not_parallel; + +/* Nonzero if some rule detected clock skew; we keep track so (a) we only + print one warning about it during the run, and (b) we can print a final + warning at the end of the run. */ + +int clock_skew_detected; + +/* Map of possible stop characters for searching strings. */ +#ifndef UCHAR_MAX +# define UCHAR_MAX 255 +#endif +unsigned short stopchar_map[UCHAR_MAX + 1] = {0}; + +/* If output-sync is enabled we'll collect all the output generated due to + options, while reading makefiles, etc. */ + +struct output make_sync; + + +/* Mask of signals that are being caught with fatal_error_signal. */ + +#if defined(POSIX) +sigset_t fatal_signal_set; +#elif defined(HAVE_SIGSETMASK) +int fatal_signal_mask; +#endif + +#if !HAVE_DECL_BSD_SIGNAL && !defined bsd_signal +# if !defined HAVE_SIGACTION +# define bsd_signal signal +# else +typedef void (*bsd_signal_ret_t) (int); + +static bsd_signal_ret_t +bsd_signal (int sig, bsd_signal_ret_t func) +{ + struct sigaction act, oact; + act.sa_handler = func; + act.sa_flags = SA_RESTART; + sigemptyset (&act.sa_mask); + sigaddset (&act.sa_mask, sig); + if (sigaction (sig, &act, &oact) != 0) + return SIG_ERR; + return oact.sa_handler; +} +# endif +#endif + +static void +initialize_global_hash_tables (void) +{ + init_hash_global_variable_set (); + strcache_init (); + init_hash_files (); + hash_init_directories (); + hash_init_function_table (); +} + +/* This character map locate stop chars when parsing GNU makefiles. + Each element is true if we should stop parsing on that character. */ + +static void +initialize_stopchar_map (void) +{ + int i; + + stopchar_map[(int)'\0'] = MAP_NUL; + stopchar_map[(int)'#'] = MAP_COMMENT; + stopchar_map[(int)';'] = MAP_SEMI; + stopchar_map[(int)'='] = MAP_EQUALS; + stopchar_map[(int)':'] = MAP_COLON; + stopchar_map[(int)'|'] = MAP_PIPE; + stopchar_map[(int)'.'] = MAP_DOT | MAP_USERFUNC; + stopchar_map[(int)','] = MAP_COMMA; + stopchar_map[(int)'('] = MAP_VARSEP; + stopchar_map[(int)'{'] = MAP_VARSEP; + stopchar_map[(int)'}'] = MAP_VARSEP; + stopchar_map[(int)')'] = MAP_VARSEP; + stopchar_map[(int)'$'] = MAP_VARIABLE; + + stopchar_map[(int)'-'] = MAP_USERFUNC; + stopchar_map[(int)'_'] = MAP_USERFUNC; + + stopchar_map[(int)' '] = MAP_BLANK; + stopchar_map[(int)'\t'] = MAP_BLANK; + + stopchar_map[(int)'/'] = MAP_DIRSEP; +#if defined(VMS) + stopchar_map[(int)':'] |= MAP_DIRSEP; + stopchar_map[(int)']'] |= MAP_DIRSEP; + stopchar_map[(int)'>'] |= MAP_DIRSEP; +#elif defined(HAVE_DOS_PATHS) + stopchar_map[(int)'\\'] |= MAP_DIRSEP; +#endif + + for (i = 1; i <= UCHAR_MAX; ++i) + { + if (isspace (i) && NONE_SET (stopchar_map[i], MAP_BLANK)) + /* Don't mark blank characters as newline characters. */ + stopchar_map[i] |= MAP_NEWLINE; + else if (isalnum (i)) + stopchar_map[i] |= MAP_USERFUNC; + } +} + +/* 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) +{ + const char *cp; + char *expanded = 0; + + if (name[0] == '\0') + O (fatal, NILF, _("empty string invalid as file name")); + + if (name[0] == '~') + { + expanded = tilde_expand (name); + if (expanded && expanded[0] != '\0') + name = expanded; + } + + /* This is also done in parse_file_seq, so this is redundant + for names read from makefiles. It is here for names passed + on the command line. */ + while (name[0] == '.' && name[1] == '/') + { + name += 2; + while (name[0] == '/') + /* Skip following slashes: ".//foo" is "foo", not "/foo". */ + ++name; + } + + if (name[0] == '\0') + { + /* Nothing else but one or more "./", maybe plus slashes! */ + name = "./"; + } + + cp = strcache_add (name); + + free (expanded); + + return cp; +} + +/* Toggle -d on receipt of SIGUSR1. */ + +#ifdef SIGUSR1 +static void +debug_signal_handler (int sig UNUSED) +{ + db_level = db_level ? DB_NONE : DB_BASIC; +} +#endif + +static void +decode_debug_flags (void) +{ + const char **pp; + + 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) + { + const char *p = *pp; + + while (1) + { + switch (tolower (p[0])) + { + case 'a': + db_level |= DB_ALL; + break; + case 'b': + db_level |= DB_BASIC; + break; + case 'i': + db_level |= DB_BASIC | DB_IMPLICIT; + break; + case 'j': + db_level |= DB_JOBS; + break; + case 'm': + db_level |= DB_BASIC | DB_MAKEFILES; + break; + 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); + } + + while (*(++p) != '\0') + if (*p == ',' || *p == ' ') + { + ++p; + break; + } + + if (*p == '\0') + break; + } + } + + if (db_level) + verify_flag = 1; + + if (! db_level) + debug_flag = 0; +} + +static void +decode_output_sync_flags (void) +{ +#ifdef NO_OUTPUT_SYNC + output_sync = OUTPUT_SYNC_NONE; +#else + if (output_sync_option) + { + if (streq (output_sync_option, "none")) + output_sync = OUTPUT_SYNC_NONE; + else if (streq (output_sync_option, "line")) + output_sync = OUTPUT_SYNC_LINE; + else if (streq (output_sync_option, "target")) + output_sync = OUTPUT_SYNC_TARGET; + else if (streq (output_sync_option, "recurse")) + output_sync = OUTPUT_SYNC_RECURSE; + else + OS (fatal, NILF, + _("unknown output-sync type '%s'"), output_sync_option); + } + + if (sync_mutex) + osync_parse_mutex (sync_mutex); +#endif +} + +/* Print a nice usage method and exit. */ + +static void NORETURN +print_usage (int bad) +{ + const char *const *cpp; + FILE *usageto; + + if (print_version_flag) + { + print_version (); + fputs ("\n", stdout); + } + + usageto = bad ? stderr : stdout; + + fprintf (usageto, _("Usage: %s [options] [target] ...\n"), program); + + for (cpp = usage; *cpp; ++cpp) + fputs (_(*cpp), usageto); + + if (!remote_description || *remote_description == '\0') + fprintf (usageto, _("\nThis program built for %s\n"), make_host); + else + fprintf (usageto, _("\nThis program built for %s (%s)\n"), + make_host, remote_description); + + fprintf (usageto, _("Report bugs to \n")); + + die (bad ? MAKE_FAILURE : MAKE_SUCCESS); +} + +#ifdef WINDOWS32 + +/* + * HANDLE runtime exceptions by avoiding a requestor on the GUI. Capture + * exception and print it to stderr instead. + * + * If ! DB_VERBOSE, just print a simple message and exit. + * If DB_VERBOSE, print a more verbose message. + * If compiled for DEBUG, let exception pass through to GUI so that + * debuggers can attach. + */ +LONG WINAPI +handle_runtime_exceptions (struct _EXCEPTION_POINTERS *exinfo) +{ + PEXCEPTION_RECORD exrec = exinfo->ExceptionRecord; + LPSTR cmdline = GetCommandLine (); + LPSTR prg = strtok (cmdline, " "); + CHAR errmsg[1024]; +#ifdef USE_EVENT_LOG + HANDLE hEventSource; + LPTSTR lpszStrings[1]; +#endif + + if (! ISDB (DB_VERBOSE)) + { + sprintf (errmsg, + _("%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"), + prg, exrec->ExceptionCode, exrec->ExceptionAddress); + fprintf (stderr, errmsg); + exit (255); + } + + sprintf (errmsg, + _("\nUnhandled exception filter called from program %s\nExceptionCode = %lx\nExceptionFlags = %lx\nExceptionAddress = 0x%p\n"), + prg, exrec->ExceptionCode, exrec->ExceptionFlags, + exrec->ExceptionAddress); + + if (exrec->ExceptionCode == EXCEPTION_ACCESS_VIOLATION + && exrec->NumberParameters >= 2) + sprintf (&errmsg[strlen(errmsg)], + (exrec->ExceptionInformation[0] + ? _("Access violation: write operation at address 0x%p\n") + : _("Access violation: read operation at address 0x%p\n")), + (PVOID)exrec->ExceptionInformation[1]); + + /* turn this on if we want to put stuff in the event log too */ +#ifdef USE_EVENT_LOG + hEventSource = RegisterEventSource (NULL, "GNU Make"); + lpszStrings[0] = errmsg; + + if (hEventSource != NULL) + { + ReportEvent (hEventSource, /* handle of event source */ + EVENTLOG_ERROR_TYPE, /* event type */ + 0, /* event category */ + 0, /* event ID */ + NULL, /* current user's SID */ + 1, /* strings in lpszStrings */ + 0, /* no bytes of raw data */ + lpszStrings, /* array of error strings */ + NULL); /* no raw data */ + + (VOID) DeregisterEventSource (hEventSource); + } +#endif + + /* Write the error to stderr too */ + fprintf (stderr, errmsg); + +#ifdef DEBUG + return EXCEPTION_CONTINUE_SEARCH; +#else + exit (255); + return (255); /* not reached */ +#endif +} + +/* + * 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 + * a value for default shell here (if the default path does not exist). + */ + +int +find_and_set_default_shell (const char *token) +{ + int sh_found = 0; + char *atoken = 0; + const char *search_token; + const char *tokend; + extern const char *default_shell; + + if (!token) + search_token = default_shell; + else + search_token = atoken = xstrdup (token); + + /* If the user explicitly requests the DOS cmd shell, obey that request. + However, make sure that's what they really want by requiring the value + of SHELL either equal, or have a final path element of, "cmd" or + "cmd.exe" case-insensitive. */ + tokend = search_token + strlen (search_token) - 3; + if (((tokend == search_token + || (tokend > search_token && ISDIRSEP (tokend[-1]))) + && !strcasecmp (tokend, "cmd")) + || ((tokend - 4 == search_token + || (tokend - 4 > search_token && ISDIRSEP (tokend[-5]))) + && !strcasecmp (tokend - 4, "cmd.exe"))) + { + batch_mode_shell = 1; + unixy_shell = 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; + } + else if (!no_default_sh_exe + && (token == NULL || !strcmp (search_token, default_shell))) + { + /* no new information, path already set or known */ + sh_found = 1; + } + else if (_access (search_token, 0) == 0) + { + /* search token path was found */ + default_shell = xstrdup (w32ify (search_token, 0)); + DB (DB_VERBOSE, (_("find_and_set_shell() setting default_shell = %s\n"), + default_shell)); + sh_found = 1; + } + else + { + char *p; + struct variable *v = lookup_variable (STRING_SIZE_TUPLE ("PATH")); + + /* Search Path for shell */ + if (v && v->value) + { + char *ep; + + p = v->value; + ep = strchr (p, PATH_SEPARATOR_CHAR); + + while (ep && *ep) + { + PATH_VAR (sh_path); + + *ep = '\0'; + + snprintf (sh_path, GET_PATH_MAX, "%s/%s", p, search_token); + if (_access (sh_path, 0) == 0) + { + default_shell = xstrdup (w32ify (sh_path, 0)); + sh_found = 1; + *ep = PATH_SEPARATOR_CHAR; + + /* terminate loop */ + p += strlen (p); + } + else + { + *ep = PATH_SEPARATOR_CHAR; + p = ++ep; + } + + ep = strchr (p, PATH_SEPARATOR_CHAR); + } + + /* be sure to check last element of Path */ + if (p && *p) + { + 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)); + sh_found = 1; + } + } + + if (sh_found) + DB (DB_VERBOSE, + (_("find_and_set_shell() path search set default_shell = %s\n"), + default_shell)); + } + } + + /* naive test */ + if (!unixy_shell && sh_found + && (strstr (default_shell, "sh") || strstr (default_shell, "SH"))) + { + unixy_shell = 1; + batch_mode_shell = 0; + } + +#ifdef BATCH_MODE_ONLY_SHELL + batch_mode_shell = 1; +#endif + + free (atoken); + + return (sh_found); +} +#endif /* WINDOWS32 */ + +#ifdef __MSDOS__ +static void +msdos_return_to_initial_directory (void) +{ + if (directory_before_chdir) + chdir (directory_before_chdir); +} +#endif /* __MSDOS__ */ + +static void +reset_jobserver (void) +{ + jobserver_clear (); + free (jobserver_auth); + 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) +#else +int +main (int argc, char **argv, char **envp) +#endif +{ + int makefile_status = MAKE_SUCCESS; + struct goaldep *read_files; + PATH_VAR (current_directory); + unsigned int restarts = 0; + unsigned int syncing = 0; + int argv_slots; /* The jobslot info we got from our parent process. */ +#ifdef WINDOWS32 + const char *unix_path = NULL; + const char *windows32_path = NULL; + + SetUnhandledExceptionFilter (handle_runtime_exceptions); + + /* start off assuming we have no shell */ + unixy_shell = 0; + 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(); + +#ifdef SET_STACK_SIZE + /* Get rid of any avoidable limit on stack size. */ + { + struct rlimit rlim; + + /* Set the stack limit huge so that alloca does not fail. */ + if (getrlimit (RLIMIT_STACK, &rlim) == 0 + && rlim.rlim_cur > 0 && rlim.rlim_cur < rlim.rlim_max) + { + stack_limit = rlim; + rlim.rlim_cur = rlim.rlim_max; + setrlimit (RLIMIT_STACK, &rlim); + } + else + stack_limit.rlim_cur = 0; + } +#endif + + /* Needed for OS/2 */ + initialize_main (&argc, &argv); + +#ifdef MAKE_MAINTAINER_MODE + /* In maintainer mode we always enable verification. */ + verify_flag = 1; +#endif + +#if defined (__MSDOS__) && !defined (_POSIX_SOURCE) + /* Request the most powerful version of 'system', to + make up for the dumb default shell. */ + __system_flags = (__system_redirect + | __system_use_shell + | __system_allow_multiple_cmds + | __system_allow_long_cmds + | __system_handle_null_commands + | __system_emulate_chdir); + +#endif + + /* Set up gettext/internationalization support. */ + setlocale (LC_ALL, ""); + /* The cast to void shuts up compiler warnings on systems that + disable NLS. */ + (void)bindtextdomain (PACKAGE, LOCALEDIR); + (void)textdomain (PACKAGE); + +#ifdef POSIX + sigemptyset (&fatal_signal_set); +#define ADD_SIG(sig) sigaddset (&fatal_signal_set, sig) +#else +#ifdef HAVE_SIGSETMASK + fatal_signal_mask = 0; +#define ADD_SIG(sig) fatal_signal_mask |= sigmask (sig) +#else +#define ADD_SIG(sig) (void)sig +#endif +#endif + +#define FATAL_SIG(sig) \ + if (bsd_signal (sig, fatal_error_signal) == SIG_IGN) \ + bsd_signal (sig, SIG_IGN); \ + else \ + ADD_SIG (sig); + +#ifdef SIGHUP + FATAL_SIG (SIGHUP); +#endif +#ifdef SIGQUIT + FATAL_SIG (SIGQUIT); +#endif + FATAL_SIG (SIGINT); + FATAL_SIG (SIGTERM); + +#ifdef __MSDOS__ + /* Windows 9X delivers FP exceptions in child programs to their + parent! We don't want Make to die when a child divides by zero, + so we work around that lossage by catching SIGFPE. */ + FATAL_SIG (SIGFPE); +#endif + +#ifdef SIGDANGER + FATAL_SIG (SIGDANGER); +#endif +#ifdef SIGXCPU + FATAL_SIG (SIGXCPU); +#endif +#ifdef SIGXFSZ + FATAL_SIG (SIGXFSZ); +#endif + +#undef FATAL_SIG + + /* Do not ignore the child-death signal. This must be done before + any children could possibly be created; otherwise, the wait + functions won't work on systems with the SVR4 ECHILD brain + damage, if our invoker is ignoring this signal. */ + +#ifdef HAVE_WAIT_NOHANG +# if defined SIGCHLD + (void) bsd_signal (SIGCHLD, SIG_DFL); +# endif +# if defined SIGCLD && SIGCLD != SIGCHLD + (void) bsd_signal (SIGCLD, SIG_DFL); +# endif +#endif + + output_init (NULL); + + /* Figure out where this program lives. */ + + if (argv[0] == 0) + argv[0] = (char *)""; + if (argv[0][0] == '\0') + program = "make"; + else + { +#if defined(HAVE_DOS_PATHS) + const char* start = argv[0]; + + /* Skip an initial drive specifier if present. */ + if (isalpha ((unsigned char)start[0]) && start[1] == ':') + start += 2; + + if (start[0] == '\0') + program = "make"; + else + { + program = start + strlen (start); + while (program > start && ! ISDIRSEP (program[-1])) + --program; + + /* Remove the .exe extension if present. */ + { + size_t len = strlen (program); + if (len > 4 && streq (&program[len - 4], ".exe")) + program = xstrndup (program, len - 4); + } + } +#elif defined(VMS) + set_program_name (argv[0]); + program = program_name; + { + const char *shell; + char pwdbuf[256]; + char *pwd; + shell = getenv ("SHELL"); + if (shell != NULL) + vms_gnv_shell = 1; + + /* Need to know if CRTL set to report UNIX paths. Use getcwd as + it works on all versions of VMS. */ + pwd = getcwd(pwdbuf, 256); + if (pwd[0] == '/') + vms_report_unix_paths = 1; + + vms_use_mcr_command = get_vms_env_flag ("GNV$MAKE_USE_MCR", 0); + + vms_always_use_cmd_file = get_vms_env_flag ("GNV$MAKE_USE_CMD_FILE", 0); + + /* Legacy behavior is on VMS is older behavior that needed to be + changed to be compatible with standard make behavior. + For now only completely disable when running under a Bash shell. + TODO: Update VMS built in recipes and macros to not need this + behavior, at which time the default may change. */ + vms_legacy_behavior = get_vms_env_flag ("GNV$MAKE_OLD_VMS", + !vms_gnv_shell); + + /* VMS was changed to use a comma separator in the past, but that is + incompatible with built in functions that expect space separated + lists. Allow this to be selectively turned off. */ + vms_comma_separator = get_vms_env_flag ("GNV$MAKE_COMMA", + vms_legacy_behavior); + + /* Some Posix shell syntax options are incompatible with VMS syntax. + VMS requires double quotes for strings and escapes quotes + differently. When this option is active, VMS will try + to simulate Posix shell simulations instead of using + VMS DCL behavior. */ + vms_unix_simulation = get_vms_env_flag ("GNV$MAKE_SHELL_SIM", + !vms_legacy_behavior); + + } + if (need_vms_symbol () && !vms_use_mcr_command) + create_foreign_command (program_name, argv[0]); +#else + program = strrchr (argv[0], '/'); + if (program == 0) + program = argv[0]; + else + ++program; +#endif + } + + 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 + 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 + current_directory[0] = '\0'; + directory_before_chdir = 0; + } + else + directory_before_chdir = xstrdup (current_directory); + +#ifdef __MSDOS__ + /* Make sure we will return to the initial directory, come what may. */ + atexit (msdos_return_to_initial_directory); +#endif + + /* Initialize the special variables. */ + define_variable_cname (".VARIABLES", "", o_default, 0)->special = 1; + /* define_variable_cname (".TARGETS", "", o_default, 0)->special = 1; */ + define_variable_cname (".RECIPEPREFIX", "", o_default, 0)->special = 1; + define_variable_cname (".SHELLFLAGS", "-c", o_default, 0); + define_variable_cname (".LOADED", "", o_default, 0); + + /* Set up .FEATURES + Use a separate variable because define_variable_cname() is a macro and + some compilers (MSVC) don't like conditionals in macros. */ + { + const char *features = "target-specific order-only second-expansion" + " else-if shortest-stem undefine oneshell nocomment" + " 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" +#endif +#ifdef MAKE_SYMLINKS + " check-symlink" +#endif +#ifdef HAVE_GUILE + " guile" +#endif +#ifdef MAKE_LOAD + " load" +#endif +#ifdef MAKE_MAINTAINER_MODE + " maintainer" +#endif + ; + + define_variable_cname (".FEATURES", features, o_default, 0); + } + + /* Configure GNU Guile support */ + guile_gmake_setup (NILF); + + /* Read in variables from the environment. It is important that this be + done before $(MAKE) is figured out so its definitions will not be + from the environment. */ + +#ifndef _AMIGA + { + unsigned int i; + + for (i = 0; envp[i] != 0; ++i) + { + struct variable *v; + const char *ep = envp[i]; + /* By default, export all variables culled from the environment. */ + enum variable_export export = v_export; + size_t len; + + while (! STOP_SET (*ep, MAP_EQUALS|MAP_NUL)) + ++ep; + + /* If there's no equals sign it's a malformed environment. Ignore. */ + if (*ep == '\0') + continue; + +#ifdef WINDOWS32 + if (!unix_path && strneq (envp[i], "PATH=", 5)) + unix_path = ep+1; + else if (!strnicmp (envp[i], "Path=", 5)) + { + if (!windows32_path) + windows32_path = ep+1; + /* PATH gets defined after the loop exits. */ + continue; + } +#endif + + /* Length of the variable name, and skip the '='. */ + len = ep++ - envp[i]; + + /* If this is MAKE_RESTARTS, check to see if the "already printed + the enter statement" flag is set. */ + if (len == 13 && memcmp (envp[i], STRING_SIZE_TUPLE ("MAKE_RESTARTS")) == 0) + { + if (*ep == '-') + { + OUTPUT_TRACED (); + ++ep; + } + restarts = make_toui (ep, NULL); + export = v_noexport; + } + + v = define_variable (envp[i], len, ep, o_env, 1); + + /* POSIX says the value of SHELL set in the makefile won't change the + value of SHELL given to subprocesses. */ + if (streq (v->name, "SHELL")) + { +#ifndef __MSDOS__ + export = v_noexport; +#endif + shell_var.name = xstrdup ("SHELL"); + shell_var.length = 5; + shell_var.value = xstrdup (ep); + } + + v->export = export; + } + } +#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; +#endif +#else /* For Amiga, read the ENV: device, ignoring all dirs */ + { + 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); + + while (ExNext (env, &fib)) + { + 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; + } + } + UnLock (env); + UnLock (CurrentDir (old)); + } + } +#endif + + /* Decode the switches. */ + 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_NAME, "", o_env, 0); + } + + decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME)); + +#if 0 + /* People write things like: + MFLAGS="CC=gcc -pipe" "CFLAGS=-g" + and we set the -p, -i and -e switches. Doesn't seem quite right. */ + decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS")); +#endif + + /* In output sync mode we need to sync any output generated by reading the + makefiles, such as in $(info ...) or stderr from $(shell ...) etc. */ + + syncing = make_sync.syncout = (output_sync == OUTPUT_SYNC_LINE + || output_sync == OUTPUT_SYNC_TARGET); + OUTPUT_SET (&make_sync); + + /* Parse the command line options. Remember the job slots set this way. */ + { + int env_slots = arg_job_slots; + arg_job_slots = INVALID_JOB_SLOTS; + + decode_switches (argc, (const char **)argv, 0); + argv_slots = arg_job_slots; + + if (arg_job_slots == INVALID_JOB_SLOTS) + arg_job_slots = env_slots; + } + + if (print_usage_flag) + print_usage (0); + + /* Print version information, and exit. */ + if (print_version_flag) + { + print_version (); + die (MAKE_SUCCESS); + } + + /* Now that we know we'll be running, force stdout to be line-buffered. */ +#ifdef HAVE_SETVBUF + setvbuf (stdout, 0, _IOLBF, BUFSIZ); +#elif HAVE_SETLINEBUF + setlinebuf (stdout); +#endif + + /* Handle shuffle mode argument. */ + if (shuffle_mode) + { + const char *effective_mode; + shuffle_set_mode (shuffle_mode); + + /* Write fixed seed back to argument list to propagate mode and + fixed seed to child $(MAKE) runs. */ + free (shuffle_mode); + effective_mode = shuffle_get_mode (); + if (effective_mode) + shuffle_mode = xstrdup (effective_mode); + else + shuffle_mode = NULL; + } + + /* Set a variable specifying whether stdout/stdin is hooked to a TTY. */ +#ifdef HAVE_ISATTY + if (isatty (fileno (stdout))) + if (! lookup_variable (STRING_SIZE_TUPLE ("MAKE_TERMOUT"))) + { + const char *tty = TTYNAME (fileno (stdout)); + define_variable_cname ("MAKE_TERMOUT", tty ? tty : DEFAULT_TTYNAME, + o_default, 0)->export = v_export; + } + if (isatty (fileno (stderr))) + if (! lookup_variable (STRING_SIZE_TUPLE ("MAKE_TERMERR"))) + { + const char *tty = TTYNAME (fileno (stderr)); + define_variable_cname ("MAKE_TERMERR", tty ? tty : DEFAULT_TTYNAME, + o_default, 0)->export = v_export; + } +#endif + + /* Reset in case the switches changed our minds. */ + syncing = (output_sync == OUTPUT_SYNC_LINE + || output_sync == OUTPUT_SYNC_TARGET); + + if (make_sync.syncout && ! syncing) + output_close (&make_sync); + + make_sync.syncout = syncing; + OUTPUT_SET (&make_sync); + + /* Figure out the level of recursion. */ + { + struct variable *v = lookup_variable (STRING_SIZE_TUPLE (MAKELEVEL_NAME)); + if (v && v->value[0] != '\0' && v->value[0] != '-') + makelevel = make_toui (v->value, NULL); + else + makelevel = 0; + } + + /* Set always_make_flag if -B was given and we've not restarted already. */ + always_make_flag = always_make_set && (restarts == 0); + + /* 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 (); + + /* 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. + (If it is a relative pathname with a slash, prepend our directory name + so the result will run the same program regardless of the current dir. + If it is a name with no slash, we can only hope that PATH did not + find it in the current directory.) */ +#ifdef WINDOWS32 + /* + * Convert from backslashes to forward slashes for + * programs like sh which don't like them. Shouldn't + * matter if the path is one way or the other for + * CreateProcess(). + */ + if (strpbrk (argv[0], "/:\\") || strstr (argv[0], "..") + || strneq (argv[0], "//", 2)) + argv[0] = xstrdup (w32ify (argv[0], 1)); +#else /* WINDOWS32 */ +#if defined (__MSDOS__) || defined (__EMX__) + if (strchr (argv[0], '\\')) + { + char *p; + + argv[0] = xstrdup (argv[0]); + for (p = argv[0]; *p; p++) + if (*p == '\\') + *p = '/'; + } + /* If argv[0] is not in absolute form, prepend the current + directory. This can happen when Make is invoked by another DJGPP + program that uses a non-absolute name. */ + if (current_directory[0] != '\0' + && argv[0] != 0 + && (argv[0][0] != '/' && (argv[0][0] == '\0' || argv[0][1] != ':')) +# ifdef __EMX__ + /* do not prepend cwd if argv[0] contains no '/', e.g. "make" */ + && (strchr (argv[0], '/') != 0 || strchr (argv[0], '\\') != 0) +# endif + ) + argv[0] = xstrdup (concat (3, current_directory, "/", argv[0])); +#else /* !__MSDOS__ */ + if (current_directory[0] != '\0' + && argv[0] != 0 && argv[0][0] != '/' && strchr (argv[0], '/') != 0 +#ifdef HAVE_DOS_PATHS + && (argv[0][0] != '\\' && (!argv[0][0] || argv[0][1] != ':')) + && strchr (argv[0], '\\') != 0 +#endif + ) + argv[0] = xstrdup (concat (3, current_directory, "/", argv[0])); +#endif /* !__MSDOS__ */ +#endif /* WINDOWS32 */ +#endif + + /* 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 + the MAKEFLAGS env setting, if there is one. */ + + if (jobserver_auth) + { + /* We're a child in an existing jobserver group. */ + if (argv_slots == INVALID_JOB_SLOTS) + { + /* 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; + + /* Oops: we have jobserver-auth but it's invalid :(. */ + O (error, NILF, _("warning: jobserver unavailable: using -j1. Add '+' to parent make rule.")); + arg_job_slots = 1; + } + + /* The user provided a -j setting on the command line so use it: we're + the master make of a new jobserver group. */ + else if (!restarts) + ON (error, NILF, + _("warning: -j%d forced in submake: resetting jobserver mode."), + argv_slots); + + /* We can't use our parent's jobserver, so reset. */ + reset_jobserver (); + } + + job_setup_complete: + + /* The extra indirection through $(MAKE_COMMAND) is done + for hysterical raisins. */ + +#ifdef VMS + if (vms_use_mcr_command) + define_variable_cname ("MAKE_COMMAND", vms_command (argv[0]), o_default, 0); + else + define_variable_cname ("MAKE_COMMAND", program, o_default, 0); +#else + define_variable_cname ("MAKE_COMMAND", argv[0], o_default, 0); +#endif + define_variable_cname ("MAKE", "$(MAKE_COMMAND)", o_default, 1); + + if (command_variables != 0) + { + struct command_variable *cv; + struct variable *v; + size_t len = 0; + char *value, *p; + + /* Figure out how much space will be taken up by the command-line + variable definitions. */ + for (cv = command_variables; cv != 0; cv = cv->next) + { + v = cv->variable; + len += 2 * strlen (v->name); + if (! v->recursive) + ++len; + ++len; + len += 2 * strlen (v->value); + ++len; + } + + /* Now allocate a buffer big enough and fill it. */ + p = value = alloca (len); + for (cv = command_variables; cv != 0; cv = cv->next) + { + v = cv->variable; + p = quote_for_env (p, v->name); + if (! v->recursive) + *p++ = ':'; + *p++ = '='; + p = quote_for_env (p, v->value); + *p++ = ' '; + } + p[-1] = '\0'; /* Kill the final space and terminate. */ + + /* Define an unchangeable variable with a name that no POSIX.2 + makefile could validly use for its own variable. */ + define_variable_cname ("-*-command-variables-*-", value, o_automatic, 0); + + /* Define the variable; this will not override any user definition. + Normally a reference to this variable is written into the value of + MAKEFLAGS, allowing the user to override this value to affect the + exported value of MAKEFLAGS. In POSIX-pedantic mode, we cannot + allow the user's setting of MAKEOVERRIDES to affect MAKEFLAGS, so + a reference to this hidden variable is written instead. */ + define_variable_cname ("MAKEOVERRIDES", "${-*-command-variables-*-}", + o_env, 1); +#ifdef VMS + vms_export_dcl_symbol ("MAKEOVERRIDES", "${-*-command-variables-*-}"); +#endif + } + + /* Read any stdin makefiles into temporary files. */ + + if (makefiles != 0) + { + unsigned int i; + for (i = 0; i < makefiles->idx; ++i) + if (makefiles->list[i][0] == '-' && makefiles->list[i][1] == '\0') + { + /* This makefile is standard input. Since we may re-exec + and thus re-read the makefiles, we read standard input + into a temporary file and read from that. */ + FILE *outfile; + char *newnm; + + if (stdin_offset >= 0) + O (fatal, NILF, + _("Makefile from standard input specified twice")); + + outfile = get_tmpfile (&newnm); + + while (!feof (stdin) && ! ferror (stdin)) + { + char buf[2048]; + size_t n = fread (buf, 1, sizeof (buf), stdin); + if (n > 0 && fwrite (buf, 1, n, outfile) != n) + OSS (fatal, NILF, + _("fwrite: temporary file %s: %s"), newnm, strerror (errno)); + } + fclose (outfile); + + /* 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; + + 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 + reading in the makefiles so that 'shell' function calls will work. + + If we don't have a hanging wait we have to fall back to old, broken + functionality here and rely on the signal handler and counting + children. + + If we're using the jobs pipe we need a signal handler so that SIGCHLD is + not ignored; we need it to interrupt the read(2) of the jobserver pipe if + we're waiting for a token. + + If none of these are true, we don't need a signal handler at all. */ + { +# if defined SIGCHLD + bsd_signal (SIGCHLD, child_handler); +# endif +# if defined SIGCLD && SIGCLD != SIGCHLD + bsd_signal (SIGCLD, child_handler); +# endif + } + +#ifdef HAVE_PSELECT + /* If we have pselect() then we need to block SIGCHLD so it's deferred. */ + { + sigset_t block; + sigemptyset (&block); + sigaddset (&block, SIGCHLD); + if (sigprocmask (SIG_SETMASK, &block, NULL) < 0) + pfatal_with_name ("sigprocmask(SIG_SETMASK, SIGCHLD)"); + } +#endif + +#endif +#endif + + /* Let the user send us SIGUSR1 to toggle the -d flag during the run. */ +#ifdef SIGUSR1 + bsd_signal (SIGUSR1, debug_signal_handler); +#endif + + /* Define the initial list of suffixes for old-style rules. */ + set_default_suffixes (); + + /* Define the file rules for the built-in suffix rules. These will later + be converted into pattern rules. We used to do this in + install_default_implicit_rules, but since that happens after reading + makefiles, it results in the built-in pattern rules taking precedence + over makefile-specified suffix rules, which is wrong. */ + install_default_suffix_rules (); + + /* Define some internal and special variables. */ + define_automatic_variables (); + + /* Set up the MAKEFLAGS and MFLAGS variables for makefiles to see. + Initialize it to be exported but allow the makefile to reset it. */ + define_makeflags (0, 0)->export = v_export; + + /* Define the default variables. */ + define_default_variables (); + + default_file = enter_file (strcache_add (".DEFAULT")); + + default_goal_var = define_variable_cname (".DEFAULT_GOAL", "", o_file, 0); + + /* Evaluate all strings provided with --eval. + Also set up the $(-*-eval-flags-*-) variable. */ + + if (eval_strings) + { + char *p, *endp, *value; + unsigned int i; + size_t len = (CSTRLEN ("--eval=") + 1) * eval_strings->idx; + + for (i = 0; i < eval_strings->idx; ++i) + { + p = xstrdup (eval_strings->list[i]); + len += 2 * strlen (p); + eval_buffer (p, NULL); + free (p); + } + + p = endp = value = alloca (len); + for (i = 0; i < eval_strings->idx; ++i) + { + p = stpcpy (p, "--eval="); + p = quote_for_env (p, eval_strings->list[i]); + endp = p++; + *endp = ' '; + } + *endp = '\0'; + + define_variable_cname ("-*-eval-flags-*-", value, o_automatic, 0); + } + + { + 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_NAME)); + + /* Clear GNUMAKEFLAGS to avoid duplication. */ + define_variable_cname (GNUMAKEFLAGS_NAME, "", o_override, 0); + + decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME)); +#if 0 + decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS")); +#endif + + /* If -j is not set in the makefile, or it was set on the command line, + reset to use the previous value. */ + if (arg_job_slots == INVALID_JOB_SLOTS || argv_slots != INVALID_JOB_SLOTS) + arg_job_slots = old_arg_job_slots; + + 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. */ + if (!restarts) + ON (error, NILF, + _("warning: -j%d forced in makefile: resetting jobserver mode."), + arg_job_slots); + + /* We can't use our parent's jobserver, so reset. */ + reset_jobserver (); + } + + /* Reset in case the switches changed our mind. */ + syncing = (output_sync == OUTPUT_SYNC_LINE + || output_sync == OUTPUT_SYNC_TARGET); + + if (make_sync.syncout && ! syncing) + output_close (&make_sync); + + 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) + { + if (suffix_file->builtin) + { + free_dep_chain (suffix_file->deps); + suffix_file->deps = 0; + } + define_variable_cname ("SUFFIXES", "", o_default, 0); + } + + /* If we've disabled builtin variables, get rid of them. */ + if (no_builtin_variables_flag && ! old_builtin_variables_flag) + 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 + group, that's already been verified OK above. If we don't have + jobserver_auth and jobserver is enabled, then start a new jobserver. + + arg_job_slots = INVALID_JOB_SLOTS if we don't want -j in MAKEFLAGS + + arg_job_slots = # of jobs of parallelism + + job_slots = 0 for no limits on jobs, or when limiting via jobserver. + + job_slots = 1 for standard non-parallel mode. + + job_slots >1 for old-style parallelism without jobservers. */ + + if (jobserver_auth) + job_slots = 0; + else if (arg_job_slots == INVALID_JOB_SLOTS) + job_slots = 1; + else + job_slots = arg_job_slots; + +#if defined (__MSDOS__) || defined (__EMX__) || defined (VMS) + if (job_slots != 1 +# ifdef __EMX__ + && _osmode != OS2_MODE /* turn off -j if we are in DOS mode */ +# endif + ) + { + O (error, NILF, + _("Parallel jobs (-j) are not supported on this platform.")); + O (error, NILF, _("Resetting to single job (-j1) mode.")); + arg_job_slots = INVALID_JOB_SLOTS; + job_slots = 1; + } +#endif + + /* If we have >1 slot at this point, then we're a top-level make. + Set up the jobserver. + + Every make assumes that it always has one job it can run. For the + 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, jobserver_style)) + { + /* Fill in the jobserver_auth for our children. */ + jobserver_auth = jobserver_get_auth (); + + if (jobserver_auth) + { + /* We're using the jobserver so set job_slots to 0. */ + master_job_slots = job_slots; + job_slots = 0; + } + } + + /* If we're not using parallel jobs, then we don't need output sync. + This is so people can enable output sync in GNUMAKEFLAGS or similar, but + not have it take effect unless parallel builds are enabled. */ + if (syncing && job_slots == 1) + { + OUTPUT_UNSET (); + output_close (&make_sync); + syncing = 0; + 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) + { + O (error, NILF, _("Symbolic links not supported: disabling -L.")); + check_symlink_flag = 0; + } +#endif + + /* Set up MAKEFLAGS and MFLAGS again, so they will be right. */ + + define_makeflags (1, 0); + + /* Make each 'struct goaldep' point at the 'struct file' for the file + depended on. Also do magic for special targets. */ + + snap_deps (); + + /* Convert old-style suffix rules to pattern rules. It is important to + do this before installing the built-in pattern rules below, so that + makefile-specified suffix rules take precedence over built-in pattern + rules. */ + + convert_to_pattern (); + + /* Install the default implicit pattern rules. + This used to be done before reading the makefiles. + But in that case, built-in pattern rules were in the chain + before user-defined ones, so they matched first. */ + + install_default_implicit_rules (); + + /* Compute implicit rule limits and do magic for pattern rules. */ + + snap_implicit_rules (); + + /* Construct the listings of directories in VPATH lists. */ + + build_vpath_lists (); + + /* Mark files given with -o flags as very old and as having been updated + already, and files given with -W flags as brand new (time-stamp as far + as possible into the future). If restarts is set we'll do -W later. */ + + if (old_files != 0) + { + const char **p; + for (p = old_files->list; *p != 0; ++p) + { + struct file *f = enter_file (*p); + f->last_mtime = f->mtime_before_update = OLD_MTIME; + f->updated = 1; + f->update_status = us_success; + f->command_state = cs_finished; + } + } + + if (!restarts && new_files != 0) + { + const char **p; + for (p = new_files->list; *p != 0; ++p) + { + struct file *f = enter_file (*p); + f->last_mtime = f->mtime_before_update = NEW_MTIME; + } + } + + /* Initialize the remote job module. */ + remote_setup (); + + /* Dump any output we've collected. */ + + 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; + 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. */ + { + unsigned int num_mkfiles = 0; + 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)); + } + + /* Remove any makefiles we don't want to try to update. Record the + current modtimes of the others so we can compare them later. */ + { + struct goaldep *d = read_files; + struct goaldep *last = NULL; + unsigned int mm_idx = 0; + + while (d != 0) + { + 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 (!skip) + { + makefile_mtimes[mm_idx++] = file_mtime_no_search (d->file); + last = d; + d = d->next; + } + else + { + DB (DB_VERBOSE, + (_("Makefile '%s' might loop; not remaking it.\n"), + f->name)); + + if (last) + last->next = d->next; + else + read_files = d->next; + + 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; + } + } + } + + /* Set up 'MAKEFLAGS' specially while remaking makefiles. */ + define_makeflags (1, 1); + + { + int orig_db_level = db_level; + + if (! ISDB (DB_MAKEFILES)) + db_level = DB_NONE; + + rebuilding_makefiles = 1; + status = update_goal_chain (read_files); + rebuilding_makefiles = 0; + + 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: + /* The only way this can happen is if the user specified -q and asked + 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: + { + /* 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: + /* Failed to update. Figure out if we care. */ + { + /* Nonzero if any makefile was successfully remade. */ + int any_remade = 0; + unsigned int i; + struct goaldep *d; + + for (i = 0, d = read_files; d != 0; ++i, d = d->next) + { + if (d->file->updated) + { + /* 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]); + 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, &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; + } + } + } + + if (any_remade) + goto re_exec; + + break; + } + + case us_success: + re_exec: + /* Updated successfully. Re-exec ourselves. */ + + remove_intermediates (0); + + if (print_data_base_flag) + print_data_base (); + + clean_jobserver (0); + + if (makefiles != 0) + { + /* Makefile names might have changed due to expansion. + It's possible we'll need one extra argument: + make -Rf- + will expand to: + make -R --temp-stdin= + so allocate more space. + */ + int mfidx = 0; + char** av = argv; + const char** nv; + + nv = nargv = alloca (sizeof (char*) * (argc + 1 + 1)); + *(nv++) = *(av++); + + for (; *av; ++av, ++nv) + { + char *f; + char *a = *av; + const char *mf = makefiles->list[mfidx]; + + assert (strlen (a) > 0); + + *nv = a; + + /* Not an option: we handled option args earlier. */ + if (a[0] != '-') + continue; + + /* See if this option specifies a filename. If so we need + to replace it with the value from makefiles->list. + + To simplify, we'll replace all possible versions of this + flag with a simple "-f". */ + + /* Handle long options. */ + if (a[1] == '-') + { + if (strcmp (a, "--file") == 0 || strcmp (a, "--makefile") == 0) + /* Skip the next arg as we'll combine them. */ + ++av; + else if (!strneq (a, "--file=", 7) + && !strneq (a, "--makefile=", 11)) + continue; + + if (mfidx == stdin_offset) + { + char *na = alloca (CSTRLEN ("--temp-stdin=") + + strlen (mf) + 1); + sprintf (na, "--temp-stdin=%s", mf); + *nv = na; + } + else + { + char *na = alloca (strlen (mf) + 3); + sprintf (na, "-f%s", mf); + *nv = na; + } + + ++mfidx; + continue; + } + + /* Handle short options. If 'f' is the last option, it may + be followed by . */ + f = strchr (a, 'f'); + if (!f) + continue; + + /* If there's an extra argument option skip it. */ + if (f[1] == '\0') + ++av; + + if (mfidx == stdin_offset) + { + const size_t al = f - a; + char *na; + + if (al > 1) + { + /* Preserve the prior options. */ + na = alloca (al + 1); + memcpy (na, a, al); + na[al] = '\0'; + *(nv++) = na; + } + + /* Remove the "f" and any subsequent content. */ + na = alloca (CSTRLEN ("--temp-stdin=") + strlen (mf) + 1); + sprintf (na, "--temp-stdin=%s", mf); + *nv = na; + } + else if (f[1] == '\0') + /* -f or -xyzf . Replace the name. */ + *(++nv) = mf; + else + { + /* -f or -xyzf. */ + const size_t al = f - a + 1; + const size_t ml = strlen (mf) + 1; + char *na = alloca (al + ml); + memcpy (na, a, al); + memcpy (na + al, mf, ml); + *nv = na; + } + + ++mfidx; + } + + *nv = NULL; + } + + if (directories != 0 && directories->idx > 0) + { + int bad = 1; + if (directory_before_chdir != 0) + { + if (chdir (directory_before_chdir) < 0) + perror_with_name ("chdir", ""); + else + bad = 0; + } + if (bad) + O (fatal, NILF, + _("Couldn't change back to original directory")); + } + + ++restarts; + + if (ISDB (DB_BASIC)) + { + const char **p; + printf (_("Re-executing[%u]:"), restarts); + for (p = nargv; *p != 0; ++p) + printf (" %s", *p); + putchar ('\n'); + fflush (stdout); + } + +#ifndef _AMIGA + { + char **p; + for (p = environ; *p != 0; ++p) + { + if (strneq (*p, MAKELEVEL_NAME "=", MAKELEVEL_LENGTH+1)) + { + *p = alloca (40); + sprintf (*p, "%s=%u", MAKELEVEL_NAME, makelevel); +#ifdef VMS + vms_putenv_symbol (*p); +#endif + } + else if (strneq (*p, "MAKE_RESTARTS=", CSTRLEN ("MAKE_RESTARTS="))) + { + *p = alloca (40); + sprintf (*p, "MAKE_RESTARTS=%s%u", + OUTPUT_IS_TRACED () ? "-" : "", restarts); + restarts = 0; + } + } + } +#else /* AMIGA */ + { + char buffer[256]; + + sprintf (buffer, "%u", makelevel); + SetVar (MAKELEVEL_NAME, buffer, -1, GVF_GLOBAL_ONLY); + + sprintf (buffer, "%s%u", OUTPUT_IS_TRACED () ? "-" : "", restarts); + SetVar ("MAKE_RESTARTS", buffer, -1, GVF_GLOBAL_ONLY); + restarts = 0; + } +#endif + + /* If we didn't set the restarts variable yet, add it. */ + if (restarts) + { + char *b = alloca (40); + sprintf (b, "MAKE_RESTARTS=%s%u", + OUTPUT_IS_TRACED () ? "-" : "", restarts); + putenv (b); + } + + fflush (stdout); + fflush (stderr); + + osync_clear(); + + /* The exec'd "child" will be another make, of course. */ + jobserver_pre_child(1); + +#ifdef _AMIGA + exec_command (nargv); + exit (0); +#elif defined (__EMX__) + { + /* It is not possible to use execve() here because this + would cause the parent process to be terminated with + exit code 0 before the child process has been terminated. + Therefore it may be the best solution simply to spawn the + child process including all file handles and to wait for its + termination. */ + pid_t pid; + int r; + struct childbase child; + child.cmd_name = NULL; + child.output.syncout = 0; + child.environment = environ; + + pid = child_execute_job (&child, 1, nargv); + + /* is this loop really necessary? */ + do { + pid = wait (&r); + } while (pid <= 0); + /* use the exit code of the child process */ + exit (WIFEXITED(r) ? WEXITSTATUS(r) : EXIT_FAILURE); + } +#else +#ifdef SET_STACK_SIZE + /* Reset limits, if necessary. */ + if (stack_limit.rlim_cur) + setrlimit (RLIMIT_STACK, &stack_limit); +#endif + exec_command ((char **)nargv, environ); +#endif + jobserver_post_child(1); + + temp_stdin_unlink (); + + _exit (127); + } + + if (any_failed) + die (MAKE_FAILURE); + } + + /* Set up 'MAKEFLAGS' again for the normal targets. */ + define_makeflags (1, 0); + + /* Set always_make_flag if -B was given. */ + always_make_flag = always_make_set; + + /* If restarts is set we haven't set up -W files yet, so do that now. */ + if (restarts && new_files != 0) + { + const char **p; + for (p = new_files->list; *p != 0; ++p) + { + struct file *f = enter_file (*p); + f->last_mtime = f->mtime_before_update = NEW_MTIME; + } + } + + temp_stdin_unlink (); + + /* If there were no command-line goals, use the default. */ + if (goals == 0) + { + char *p; + + if (default_goal_var->recursive) + p = variable_expand (default_goal_var->value); + else + { + p = variable_buffer_output (variable_buffer, default_goal_var->value, + strlen (default_goal_var->value)); + *p = '\0'; + p = variable_buffer; + } + + if (*p != '\0') + { + struct file *f = lookup_file (p); + + /* If .DEFAULT_GOAL is a non-existent target, enter it into the + table and let the standard logic sort it out. */ + if (f == 0) + { + struct nameseq *ns; + + ns = PARSE_SIMPLE_SEQ (&p, struct nameseq); + if (ns) + { + /* .DEFAULT_GOAL should contain one target. */ + if (ns->next != 0) + O (fatal, NILF, + _(".DEFAULT_GOAL contains more than one target")); + + f = enter_file (strcache_add (ns->name)); + + ns->name = 0; /* It was reused by enter_file(). */ + free_ns_chain (ns); + } + } + + if (f) + { + goals = alloc_goaldep (); + goals->file = f; + } + } + } + else + lastgoal->next = 0; + + + if (!goals) + { + struct variable *v = lookup_variable (STRING_SIZE_TUPLE ("MAKEFILE_LIST")); + if (v && v->value && v->value[0] != '\0') + O (fatal, NILF, _("No targets")); + + 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"))); + + { + switch (update_goal_chain (goals)) + { + case us_none: + /* Nothing happened. */ + /* FALLTHROUGH */ + case us_success: + /* Keep the previous result. */ + break; + case us_question: + /* We are under -q and would run some commands. */ + makefile_status = MAKE_TROUBLE; + break; + case us_failed: + /* Updating failed. POSIX.2 specifies exit status >1 for this; */ + makefile_status = MAKE_FAILURE; + break; + } + + /* If we detected some clock skew, generate one last warning */ + if (clock_skew_detected) + O (error, NILF, + _("warning: Clock skew detected. Your build may be incomplete.")); + + /* Exit. */ + die (makefile_status); + } + + /* NOTREACHED */ + exit (MAKE_SUCCESS); +} + +/* Parsing of arguments, decoding of switches. */ + +static char options[1 + sizeof (switches) / sizeof (switches[0]) * 3]; +static struct option long_options[(sizeof (switches) / sizeof (switches[0])) + + (sizeof (long_option_aliases) / + sizeof (long_option_aliases[0]))]; + +/* Fill in the string and vector for getopt. */ +static void +init_switches (void) +{ + char *p; + unsigned int c; + unsigned int i; + + if (options[0] != '\0') + /* Already done. */ + return; + + p = options; + + /* Return switch and non-switch args in order, regardless of + POSIXLY_CORRECT. Non-switch args are returned as option 1. */ + *p++ = '-'; + + for (i = 0; switches[i].c != '\0'; ++i) + { + long_options[i].name = (char *) (switches[i].long_name == 0 ? "" : + switches[i].long_name); + long_options[i].flag = 0; + long_options[i].val = switches[i].c; + if (short_option (switches[i].c)) + *p++ = (char) switches[i].c; + switch (switches[i].type) + { + case flag: + case flag_off: + case ignore: + long_options[i].has_arg = no_argument; + break; + + case string: + case strlist: + case filename: + case positive_int: + case floating: + if (short_option (switches[i].c)) + *p++ = ':'; + if (switches[i].noarg_value != 0) + { + if (short_option (switches[i].c)) + *p++ = ':'; + long_options[i].has_arg = optional_argument; + } + else + long_options[i].has_arg = required_argument; + break; + } + } + *p = '\0'; + for (c = 0; c < (sizeof (long_option_aliases) / + sizeof (long_option_aliases[0])); + ++c) + long_options[i++] = long_option_aliases[c]; + long_options[i].name = 0; +} + + +/* Non-option argument. It might be a variable definition. */ +static void +handle_non_switch_argument (const char *arg, int env) +{ + struct variable *v; + + if (arg[0] == '-' && arg[1] == '\0') + /* Ignore plain '-' for compatibility. */ + return; + +#ifdef VMS + { + /* VMS DCL quoting can result in foo="bar baz" showing up here. + Need to remove the double quotes from the value. */ + char * eq_ptr; + char * new_arg; + eq_ptr = strchr (arg, '='); + if ((eq_ptr != NULL) && (eq_ptr[1] == '"')) + { + int len; + int seg1; + int seg2; + len = strlen(arg); + new_arg = alloca(len); + seg1 = eq_ptr - arg + 1; + strncpy(new_arg, arg, (seg1)); + seg2 = len - seg1 - 1; + strncpy(&new_arg[seg1], &eq_ptr[2], seg2); + new_arg[seg1 + seg2] = 0; + if (new_arg[seg1 + seg2 - 1] == '"') + new_arg[seg1 + seg2 - 1] = 0; + arg = new_arg; + } + } +#endif + v = try_variable_definition (0, arg, o_command, 0); + if (v != 0) + { + /* It is indeed a variable definition. If we don't already have this + one, record a pointer to the variable for later use in + define_makeflags. */ + struct command_variable *cv; + + for (cv = command_variables; cv != 0; cv = cv->next) + if (cv->variable == v) + break; + + if (! cv) + { + cv = xmalloc (sizeof (*cv)); + cv->variable = v; + cv->next = command_variables; + command_variables = cv; + } + } + else if (! env) + { + /* Not an option or variable definition; it must be a goal + target! Enter it as a file and add it to the dep chain of + goals. */ + struct file *f = enter_file (strcache_add (expand_command_line_file (arg))); + f->cmd_target = 1; + + if (goals == 0) + { + goals = alloc_goaldep (); + lastgoal = goals; + } + else + { + lastgoal->next = alloc_goaldep (); + lastgoal = lastgoal->next; + } + + lastgoal->file = f; + + { + /* Add this target name to the MAKECMDGOALS variable. */ + struct variable *gv; + const char *value; + + gv = lookup_variable (STRING_SIZE_TUPLE ("MAKECMDGOALS")); + if (gv == 0) + value = f->name; + else + { + /* Paste the old and new values together */ + size_t oldlen, newlen; + char *vp; + + oldlen = strlen (gv->value); + newlen = strlen (f->name); + vp = alloca (oldlen + 1 + newlen + 1); + memcpy (vp, gv->value, oldlen); + vp[oldlen] = ' '; + memcpy (&vp[oldlen + 1], f->name, newlen + 1); + value = vp; + } + define_variable_cname ("MAKECMDGOALS", value, o_default, 0); + } + } +} + +/* Decode switches from ARGC and ARGV. + They came from the environment if ENV is nonzero. */ + +static void +decode_switches (int argc, const char **argv, int env) +{ + int bad = 0; + const struct command_switch *cs; + struct stringlist *sl; + int c; + + /* getopt does most of the parsing for us. + First, get its vectors set up. */ + + init_switches (); + + /* Let getopt produce error messages for the command line, + but not for options from the environment. */ + opterr = !env; + /* Reset getopt's state. */ + optind = 0; + + while (optind < argc) + { + const char *coptarg; + + /* Parse the next argument. */ + c = getopt_long (argc, (char *const *)argv, options, long_options, NULL); + coptarg = optarg; + if (c == EOF) + /* End of arguments, or "--" marker seen. */ + break; + else if (c == 1) + /* An argument not starting with a dash. */ + handle_non_switch_argument (coptarg, env); + else if (c == '?') + /* Bad option. We will print a usage message and die later. + But continue to parse the other options so the user can + see all he did wrong. */ + bad = 1; + else + for (cs = switches; cs->c != '\0'; ++cs) + if (cs->c == c) + { + /* Whether or not we will actually do anything with + this switch. We test this individually inside the + switch below rather than just once outside it, so that + options which are to be ignored still consume args. */ + int doit = !env || cs->env; + + switch (cs->type) + { + default: + abort (); + + case ignore: + break; + + case flag: + case flag_off: + if (doit) + *(int *) cs->value_ptr = cs->type == flag; + break; + + case string: + case strlist: + case filename: + if (!doit) + break; + + if (! coptarg) + coptarg = cs->noarg_value; + else if (*coptarg == '\0') + { + char opt[2] = "c"; + const char *op = opt; + + if (short_option (cs->c)) + opt[0] = (char) cs->c; + else + op = cs->long_name; + + error (NILF, strlen (op), + _("the '%s%s' option requires a non-empty string argument"), + short_option (cs->c) ? "-" : "--", op); + bad = 1; + break; + } + + if (cs->type == string) + { + char **val = (char **)cs->value_ptr; + free (*val); + *val = xstrdup (coptarg); + break; + } + + sl = *(struct stringlist **) cs->value_ptr; + if (sl == 0) + { + sl = xmalloc (sizeof (struct stringlist)); + sl->max = 5; + sl->idx = 0; + sl->list = xmalloc (5 * sizeof (char *)); + *(struct stringlist **) cs->value_ptr = sl; + } + else if (sl->idx == sl->max - 1) + { + sl->max += 5; + /* MSVC erroneously warns without a cast here. */ + sl->list = xrealloc ((void *)sl->list, + sl->max * sizeof (char *)); + } + + /* 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; + + case positive_int: + /* See if we have an option argument; if we do require that + it's all digits, not something like "10foo". */ + if (coptarg == 0 && argc > optind) + { + const char *cp; + for (cp=argv[optind]; ISDIGIT (cp[0]); ++cp) + ; + if (cp[0] == '\0') + coptarg = argv[optind++]; + } + + if (!doit) + break; + + if (coptarg) + { + const char *err; + unsigned int i = make_toui (coptarg, &err); + + if (err || i == 0) + { + error (NILF, 0, + _("the '-%c' option requires a positive integer argument"), + cs->c); + bad = 1; + } + else + *(unsigned int *) cs->value_ptr = i; + } + else + *(unsigned int *) cs->value_ptr + = *(unsigned int *) cs->noarg_value; + break; + + case floating: + if (coptarg == 0 && optind < argc + && (ISDIGIT (argv[optind][0]) || argv[optind][0] == '.')) + coptarg = argv[optind++]; + + if (doit) + *(double *) cs->value_ptr = (coptarg != 0 ? atof (coptarg) + : *(double *) cs->noarg_value); + + break; + } + + /* We've found the switch. Stop looking. */ + break; + } + } + + /* There are no more options according to getting getopt, but there may + be some arguments left. Since we have asked for non-option arguments + to be returned in order, this only happens when there is a "--" + argument to prevent later arguments from being options. */ + while (optind < argc) + handle_non_switch_argument (argv[optind++], env); + + if (bad && !env) + print_usage (bad); + + /* If there are any options that need to be decoded do it now. */ + decode_debug_flags (); + decode_output_sync_flags (); + + /* 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). + We do this by chopping the value into a vector of words, prepending a + dash to the first word if it lacks one, and passing the vector to + decode_switches. */ + +void +decode_env_switches (const char *envar, size_t len) +{ + char *varref = alloca (2 + len + 2); + char *value, *p, *buf; + int argc; + const char **argv; + + /* Get the variable's value. */ + p = varref; + *(p++) = '$'; + *(p++) = '('; + p = mempcpy (p, envar, len); + *(p++) = ')'; + *p = '\0'; + value = variable_expand (varref); + + /* Skip whitespace, and check for an empty value. */ + NEXT_TOKEN (value); + len = strlen (value); + if (len == 0) + return; + + /* Allocate a vector that is definitely big enough. */ + argv = alloca ((1 + len + 1) * sizeof (char *)); + + /* getopt will look at the arguments starting at ARGV[1]. + Prepend a spacer word. */ + argv[0] = ""; + argc = 1; + + /* We need a buffer to copy the value into while we split it into words + and unquote it. Set up in case we need to prepend a dash later. */ + buf = alloca (1 + len + 1); + buf[0] = '-'; + p = buf+1; + argv[argc] = p; + while (*value != '\0') + { + if (*value == '\\' && value[1] != '\0') + ++value; /* Skip the backslash. */ + else if (ISBLANK (*value)) + { + /* End of the word. */ + *p++ = '\0'; + argv[++argc] = p; + do + ++value; + while (ISBLANK (*value)); + continue; + } + *p++ = *value++; + } + *p = '\0'; + argv[++argc] = 0; + assert (p < buf + len + 2); + + if (argv[1][0] != '-' && strchr (argv[1], '=') == 0) + /* The first word doesn't start with a dash and isn't a variable + definition, so add a dash. */ + argv[1] = buf; + + /* Parse those words. */ + decode_switches (argc, argv, 1); +} + +/* Quote the string IN so that it will be interpreted as a single word with + no magic by decode_env_switches; also double dollar signs to avoid + variable expansion in make itself. Write the result into OUT, returning + the address of the next character to be written. + Allocating space for OUT twice the length of IN is always sufficient. */ + +static char * +quote_for_env (char *out, const char *in) +{ + while (*in != '\0') + { + if (*in == '$') + *out++ = '$'; + else if (ISBLANK (*in) || *in == '\\') + *out++ = '\\'; + *out++ = *in++; + } + + return out; +} + +/* Define the MAKEFLAGS and MFLAGS variables to reflect the settings of the + command switches. Include options with args if ALL is nonzero. + Don't include options with the 'no_makefile' flag set if MAKEFILE. */ + +static struct variable * +define_makeflags (int all, int makefile) +{ + const char ref[] = "MAKEOVERRIDES"; + const char posixref[] = "-*-command-variables-*-"; + const char evalref[] = "$(-*-eval-flags-*-)"; + const struct command_switch *cs; + struct variable *v; + char *flagstring; + char *p; + + /* We will construct a linked list of 'struct flag's describing + all the flags which need to go in MAKEFLAGS. Then, once we + know how many there are and their lengths, we can put them all + together in a string. */ + + struct flag + { + struct flag *next; + const struct command_switch *cs; + const char *arg; + }; + struct flag *flags = 0; + struct flag *last = 0; + size_t flagslen = 0; +#define ADD_FLAG(ARG, LEN) \ + do { \ + struct flag *new = alloca (sizeof (struct flag)); \ + new->cs = cs; \ + new->arg = (ARG); \ + new->next = 0; \ + if (! flags) \ + flags = new; \ + else \ + last->next = new; \ + last = new; \ + if (new->arg == 0) \ + /* Just a single flag letter: " -x" */ \ + flagslen += 3; \ + else \ + /* " -xfoo", plus space to escape "foo". */ \ + flagslen += 1 + 1 + 1 + (3 * (LEN)); \ + if (!short_option (cs->c)) \ + /* This switch has no single-letter version, so we use the long. */ \ + flagslen += 2 + strlen (cs->long_name); \ + } while (0) + + for (cs = switches; cs->c != '\0'; ++cs) + if (cs->toenv && (!makefile || !cs->no_makefile)) + switch (cs->type) + { + case ignore: + break; + + case flag: + case flag_off: + if ((!*(int *) cs->value_ptr) == (cs->type == flag_off) + && (cs->default_value == 0 + || *(int *) cs->value_ptr != *(int *) cs->default_value)) + ADD_FLAG (0, 0); + break; + + case positive_int: + 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 + { + char *buf = alloca (30); + sprintf (buf, "%u", *(unsigned int *) cs->value_ptr); + ADD_FLAG (buf, strlen (buf)); + } + break; + + case floating: + 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 + { + char *buf = alloca (100); + sprintf (buf, "%g", *(double *) cs->value_ptr); + ADD_FLAG (buf, strlen (buf)); + } + break; + + case string: + p = *((char **)cs->value_ptr); + if (p) + ADD_FLAG (p, strlen (p)); + break; + + case filename: + case strlist: + { + 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: + abort (); + } + +#undef ADD_FLAG + + /* Four more for the possible " -- ", plus variable references. */ + flagslen += 4 + CSTRLEN (posixref) + 4 + CSTRLEN (evalref) + 4; + + /* Construct the value in FLAGSTRING. + We allocate enough space for a preceding dash and trailing null. */ + flagstring = alloca (1 + flagslen + 1); + memset (flagstring, '\0', 1 + flagslen + 1); + p = flagstring; + + /* Start with a dash, for MFLAGS. */ + *p++ = '-'; + + /* Add simple options as a group. */ + while (flags != 0 && !flags->arg && short_option (flags->cs->c)) + { + *p++ = (char) flags->cs->c; + flags = flags->next; + } + + /* Now add more complex flags: ones with options and/or long names. */ + while (flags) + { + *p++ = ' '; + *p++ = '-'; + + /* Add the flag letter or name to the string. */ + if (short_option (flags->cs->c)) + *p++ = (char) flags->cs->c; + else + { + /* Long options require a double-dash. */ + *p++ = '-'; + p = stpcpy (p, flags->cs->long_name); + } + /* An omitted optional argument has an ARG of "". */ + if (flags->arg && flags->arg[0] != '\0') + { + if (!short_option (flags->cs->c)) + /* Long options require '='. */ + *p++ = '='; + p = quote_for_env (p, flags->arg); + } + flags = flags->next; + } + + /* If no flags at all, get rid of the initial dash. */ + if (p == &flagstring[1]) + { + flagstring[0] = '\0'; + p = flagstring; + } + + /* Define MFLAGS before appending variable definitions. Omit an initial + empty dash. Since MFLAGS is not parsed for flags, there is no reason to + override any makefile redefinition. */ + define_variable_cname ("MFLAGS", + flagstring + (flagstring[0] == '-' && flagstring[1] == ' ' ? 2 : 0), + o_env, 1); + + /* Write a reference to -*-eval-flags-*-, which contains all the --eval + flag options. */ + if (eval_strings) + { + *p++ = ' '; + p = mempcpy (p, evalref, CSTRLEN (evalref)); + } + + if (all) + { + /* If there are any overrides to add, write a reference to + $(MAKEOVERRIDES), which contains command-line variable definitions. + Separate the variables from the switches with a "--" arg. */ + + const char *r = posix_pedantic ? posixref : ref; + size_t l = strlen (r); + v = lookup_variable (r, l); + + if (v && v->value && v->value[0] != '\0') + { + p = stpcpy (p, " -- "); + *(p++) = '$'; + *(p++) = '('; + p = mempcpy (p, r, l); + *(p++) = ')'; + } + } + + /* If there is a leading dash, omit it. */ + if (flagstring[0] == '-') + ++flagstring; + + /* This used to use o_env, but that lost when a makefile defined MAKEFLAGS. + Makefiles set MAKEFLAGS to add switches, but we still want to redefine + its value with the full set of switches. Then we used o_file, but that + 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. */ + v = define_variable_cname (MAKEFLAGS_NAME, flagstring, + env_overrides ? o_env_override : o_file, 1); + v->special = 1; + + return v; +} + +/* Print version information. */ + +static void +print_version (void) +{ + static int printed_version = 0; + + const char *precede = print_data_base_flag ? "# " : ""; + + if (printed_version) + /* Do it only once. */ + return; + + printf ("%sGNU Make %s\n", precede, version_string); + + if (!remote_description || *remote_description == '\0') + printf (_("%sBuilt for %s\n"), precede, make_host); + else + printf (_("%sBuilt for %s (%s)\n"), + precede, make_host, remote_description); + + /* Print this untranslated. The coding standards recommend translating the + (C) to the copyright symbol, but this string is going to change every + 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-2022 Free Software Foundation, Inc.\n", + precede); + + printf (_("%sLicense GPLv3+: GNU GPL version 3 or later \n\ +%sThis is free software: you are free to change and redistribute it.\n\ +%sThere is NO WARRANTY, to the extent permitted by law.\n"), + precede, precede, precede); + + printed_version = 1; +} + +/* Print a bunch of information about this and that. */ + +static void +print_data_base (void) +{ + time_t when = time ((time_t *) 0); + + print_version (); + + printf (_("\n# Make data base, printed on %s"), ctime (&when)); + + print_variable_data_base (); + print_dir_data_base (); + print_rule_data_base (); + print_file_data_base (); + print_vpath_data_base (); + strcache_print_stats ("#"); + + when = time ((time_t *) 0); + printf (_("\n# Finished Make data base on %s\n"), ctime (&when)); +} + +static void +clean_jobserver (int status) +{ + /* Sanity: have we written all our jobserver tokens back? If our + exit status is 2 that means some kind of syntax error; we might not + have written all our tokens so do that now. If tokens are left + after any other error code, that's bad. */ + + if (jobserver_enabled() && jobserver_tokens) + { + if (status != 2) + ON (error, NILF, + "INTERNAL: Exiting with %u jobserver tokens (should be 0)!", + jobserver_tokens); + else + /* Don't write back the "free" token */ + while (--jobserver_tokens) + jobserver_release (0); + } + + + /* Sanity: If we're the master, were all the tokens written back? */ + + if (master_job_slots) + { + /* We didn't write one for ourself, so start at 1. */ + unsigned int tokens = 1 + jobserver_acquire_all (); + + if (tokens != master_job_slots) + ONN (error, NILF, + "INTERNAL: Exiting with %u jobserver tokens available; should be %u!", + tokens, master_job_slots); + + reset_jobserver (); + } +} + +/* Exit with STATUS, cleaning up as necessary. */ + +void +die (int status) +{ + static char dying = 0; + + if (!dying) + { + int err; + + dying = 1; + + 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) + reap_children (1, err); + + /* Let the remote job module clean up its state. */ + remote_cleanup (); + + /* Remove the intermediate files. */ + remove_intermediates (0); + + if (print_data_base_flag) + print_data_base (); + + if (verify_flag) + verify_file_data_base (); + + clean_jobserver (status); + + if (output_context) + { + /* die() might be called in a recipe output context due to an + $(error ...) function. */ + output_close (output_context); + + if (output_context != &make_sync) + output_close (&make_sync); + + OUTPUT_UNSET (); + } + + 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 + directory. Must wait until after remove_intermediates(), or unlinks + of relative pathnames fail. */ + if (directory_before_chdir != 0) + { + /* If it fails we don't care: shut up GCC. */ + int _x UNUSED; + _x = chdir (directory_before_chdir); + } + } + + exit (status); +} diff --git a/local/recipes/dev/gnu-make/source/src/makeint.h b/local/recipes/dev/gnu-make/source/src/makeint.h new file mode 100644 index 0000000000..c726abe08e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/makeint.h @@ -0,0 +1,881 @@ +/* Miscellaneous global declarations and portability cruft for GNU Make. +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 +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 . */ + +/* We use instead of "config.h" so that a compilation + using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h + (which it would do because makeint.h was found in $srcdir). */ +#include +#undef HAVE_CONFIG_H +#define HAVE_CONFIG_H 1 + +/* Specify we want GNU source code. This must be defined before any + system headers are included. */ + +#define _GNU_SOURCE 1 + +/* AIX requires this to be the first thing in the file. */ +#if HAVE_ALLOCA_H +# include +#else +# ifdef _AIX + #pragma alloca +# else +# if !defined(__GNUC__) && !defined(WINDOWS32) +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +#endif + +/* 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 +# define NDEBUG 1 +#endif + +/* Include the externally-visible content. + Be sure to use the local one, and not one installed on the system. + Define GMK_BUILDING_MAKE for proper selection of dllexport/dllimport + declarations for MS-Windows. */ +#ifdef WINDOWS32 +# define GMK_BUILDING_MAKE +#endif +#include "gnumake.h" + +#ifdef CRAY +/* This must happen before #include so + that the declaration therein is changed. */ +# define signal bsdsignal +#endif + +/* If we're compiling for the dmalloc debugger, turn off string inlining. */ +#if defined(HAVE_DMALLOC_H) && defined(__GNUC__) +# define __NO_STRING_INLINES +#endif + +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_SYS_TIMEB_H +/* SCO 3.2 "devsys 4.2" has a prototype for 'ftime' in that bombs + unless has been included first. */ +# include +#endif +#if HAVE_SYS_TIME_H +# include +#endif +#include + +#include + +#ifndef errno +extern int errno; +#endif + +#ifdef __VMS +/* In strict ANSI mode, VMS compilers should not be defining the + VMS macro. Define it here instead of a bulk edit for the correct code. + */ +# ifndef VMS +# define VMS +# endif +#endif + +#ifdef HAVE_UNISTD_H +# include +/* Ultrix's unistd.h always defines _POSIX_VERSION, but you only get + POSIX.1 behavior with 'cc -YPOSIX', which predefines POSIX itself! */ +# if defined (_POSIX_VERSION) && !defined (ultrix) && !defined (VMS) +# define POSIX 1 +# endif +#endif + +/* Some systems define _POSIX_VERSION but are not really POSIX.1. */ +#if (defined (butterfly) || (defined (__mips) && defined (_SYSTYPE_SVR3)) || (defined (sequent) && defined (i386))) +# undef POSIX +#endif + +#if !defined (POSIX) && defined (_AIX) && defined (_POSIX_SOURCE) +# define POSIX 1 +#endif + +#ifndef sigmask +# define sigmask(sig) (1 << ((sig) - 1)) +#endif + +#ifndef HAVE_SA_RESTART +# define SA_RESTART 0 +#endif + +#ifdef HAVE_VFORK_H +# include +#endif + +#ifdef HAVE_LIMITS_H +# include +#endif +#ifdef HAVE_SYS_PARAM_H +# include +#endif + +#ifndef PATH_MAX +# 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 + +#ifdef PATH_MAX +# define GET_PATH_MAX PATH_MAX +# define PATH_VAR(var) char var[PATH_MAX+1] +#else +# define NEED_GET_PATH_MAX 1 +# define GET_PATH_MAX (get_path_max ()) +# define PATH_VAR(var) char *var = alloca (GET_PATH_MAX+1) +unsigned int get_path_max (void); +#endif + +#ifndef CHAR_BIT +# define CHAR_BIT 8 +#endif + +#ifndef USHRT_MAX +# define USHRT_MAX 65535 +#endif + +/* Nonzero if the integer type T is signed. + Use <= to avoid GCC warnings about always-false expressions. */ +#define INTEGER_TYPE_SIGNED(t) ((t) -1 <= 0) + +/* The minimum and maximum values for the integer type T. + Use ~ (t) 0, not -1, for portability to 1's complement hosts. */ +#define INTEGER_TYPE_MINIMUM(t) \ + (! INTEGER_TYPE_SIGNED (t) ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)) +#define INTEGER_TYPE_MAXIMUM(t) (~ (t) 0 - INTEGER_TYPE_MINIMUM (t)) + +#ifndef CHAR_MAX +# define CHAR_MAX INTEGER_TYPE_MAXIMUM (char) +#endif + +#ifdef STAT_MACROS_BROKEN +# ifdef S_ISREG +# undef S_ISREG +# endif +# ifdef S_ISDIR +# undef S_ISDIR +# endif +#endif /* STAT_MACROS_BROKEN. */ + +#ifndef S_ISREG +# define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) +#endif +#ifndef S_ISDIR +# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) +#endif + +#ifdef VMS +# include +# include +# include +# include +# include +/* Needed to use alloca on VMS. */ +# include + +extern int vms_use_mcr_command; +extern int vms_always_use_cmd_file; +extern int vms_gnv_shell; +extern int vms_comma_separator; +extern int vms_legacy_behavior; +extern int vms_unix_simulation; +#endif + +#if !defined(__attribute__) && (__GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__) +/* Don't use __attribute__ if it's not supported. */ +# define ATTRIBUTE(x) +#else +# define ATTRIBUTE(x) __attribute__ (x) +#endif + +/* The __-protected variants of 'format' and 'printf' attributes + are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) +# define __format__ format +# define __printf__ printf +#endif + +#define UNUSED ATTRIBUTE ((unused)) +#define NORETURN ATTRIBUTE ((noreturn)) + +#if defined (STDC_HEADERS) || defined (__GNU_LIBRARY__) +# include +# include +# define ANSI_STRING 1 +#else /* No standard headers. */ +# ifdef HAVE_STRING_H +# include +# define ANSI_STRING 1 +# else +# include +# endif +# ifdef HAVE_MEMORY_H +# include +# endif +# ifdef HAVE_STDLIB_H +# include +# else +void *malloc (int); +void *realloc (void *, int); +void free (void *); + +void abort (void) NORETURN; +void exit (int) NORETURN; +# endif /* HAVE_STDLIB_H. */ + +#endif /* Standard headers. */ + +/* These should be in stdlib.h. Make sure we have them. */ +#ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +#endif +#ifndef EXIT_FAILURE +# define EXIT_FAILURE 1 +#endif + +#ifndef ANSI_STRING + +/* SCO Xenix has a buggy macro definition in . */ +#undef strerror +#if !defined(__DECC) +char *strerror (int errnum); +#endif + +#endif /* !ANSI_STRING. */ +#undef ANSI_STRING + +#if HAVE_INTTYPES_H +# include +#endif +#if HAVE_STDINT_H +# include +#endif + +#if defined _MSC_VER || defined __MINGW32__ +# define MK_PRI64_PREFIX "I64" +#else +# define MK_PRI64_PREFIX "ll" +#endif +#ifndef PRIdMAX +# define PRIdMAX MK_PRI64_PREFIX "d" +#endif +#ifndef PRIuMAX +# define PRIuMAX MK_PRI64_PREFIX "u" +#endif +#ifndef SCNdMAX +# define SCNdMAX PRIdMAX +#endif +#define FILE_TIMESTAMP uintmax_t + +#if !defined(HAVE_STRSIGNAL) +char *strsignal (int signum); +#endif + +#if !defined(HAVE_UMASK) +typedef int mode_t; +extern mode_t umask (mode_t); +#endif + +/* ISDIGIT offers the following features: + - Its arg may be any int or unsigned int; it need not be an unsigned char. + - It's guaranteed to evaluate its argument exactly once. + NOTE! Make relies on this behavior, don't change it! + - It's typically faster. + POSIX 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that + only '0' through '9' are digits. Prefer ISDIGIT to isdigit() unless + it's important to use the locale's definition of 'digit' even when the + host does not conform to POSIX. */ +#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9) + +/* Test if two strings are equal. Is this worthwhile? Should be profiled. */ +#define streq(a, b) \ + ((a) == (b) || \ + (*(a) == *(b) && (*(a) == '\0' || !strcmp ((a) + 1, (b) + 1)))) + +/* Test if two strings are equal, but match case-insensitively on systems + which have case-insensitive filesystems. Should only be used for + filenames! */ +#ifdef HAVE_CASE_INSENSITIVE_FS +# define patheq(a, b) \ + ((a) == (b) \ + || (tolower((unsigned char)*(a)) == tolower((unsigned char)*(b)) \ + && (*(a) == '\0' || !strcasecmp ((a) + 1, (b) + 1)))) +#else +# define patheq(a, b) streq(a, b) +#endif + +#define strneq(a, b, l) (strncmp ((a), (b), (l)) == 0) + +#if defined(ENUM_BITFIELDS) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) +# define ENUM_BITFIELD(bits) :bits +#else +# define ENUM_BITFIELD(bits) +#endif + +/* Handle gettext and locales. */ + +#if HAVE_LOCALE_H +# include +#else +# define setlocale(category, locale) +#endif + +#include + +#define _(msgid) gettext (msgid) +#define N_(msgid) gettext_noop (msgid) +#define S_(msg1,msg2,num) ngettext (msg1,msg2,num) + +/* This is needed for getcwd() and chdir(), on some W32 systems. */ +#if defined(HAVE_DIRECT_H) +# include +#endif + +#ifdef WINDOWS32 +# include +# include +# define pipe(_p) _pipe((_p), 512, O_BINARY) +# define kill(_pid,_sig) w32_kill((_pid),(_sig)) +/* MSVC and Watcom C don't have ftruncate. */ +# if defined(_MSC_VER) || defined(__WATCOMC__) +# define ftruncate(_fd,_len) _chsize(_fd,_len) +# endif +/* MinGW64 doesn't have _S_ISDIR. */ +# ifndef _S_ISDIR +# define _S_ISDIR(m) S_ISDIR(m) +# endif + +void sync_Path_environment (void); +int w32_kill (pid_t pid, int sig); +int find_and_set_default_shell (const char *token); + +/* indicates whether or not we have Bourne shell */ +extern int no_default_sh_exe; + +/* is default_shell unixy? */ +extern int unixy_shell; + +/* We don't have a preferred fixed value for LOCALEDIR. */ +# ifndef LOCALEDIR +# define LOCALEDIR NULL +# endif + +/* Include only the minimal stuff from windows.h. */ +# 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 /* space, TAB */ +#define MAP_NEWLINE 0x0004 +#define MAP_COMMENT 0x0008 +#define MAP_SEMI 0x0010 +#define MAP_EQUALS 0x0020 +#define MAP_COLON 0x0040 +#define MAP_VARSEP 0x0080 +#define MAP_PIPE 0x0100 +#define MAP_DOT 0x0200 +#define MAP_COMMA 0x0400 + +/* These are the valid characters for a user-defined function. */ +#define MAP_USERFUNC 0x2000 +/* This means not only a '$', but skip the variable reference. */ +#define MAP_VARIABLE 0x4000 +/* The set of characters which are directory separators is OS-specific. */ +#define MAP_DIRSEP 0x8000 + +#ifdef VMS +# define MAP_VMSCOMMA MAP_COMMA +#else +# define MAP_VMSCOMMA 0x0000 +#endif + +#define MAP_SPACE (MAP_BLANK|MAP_NEWLINE) + +/* Handle other OSs. + To overcome an issue parsing paths in a DOS/Windows environment when + built in a unix based environment, override the PATH_SEPARATOR_CHAR + definition unless being built for Cygwin. */ +#if defined(HAVE_DOS_PATHS) && !defined(__CYGWIN__) +# undef PATH_SEPARATOR_CHAR +# define PATH_SEPARATOR_CHAR ';' +# define MAP_PATHSEP MAP_SEMI +#elif !defined(PATH_SEPARATOR_CHAR) +# if defined (VMS) +# define PATH_SEPARATOR_CHAR (vms_comma_separator ? ',' : ':') +# define MAP_PATHSEP (vms_comma_separator ? MAP_COMMA : MAP_SEMI) +# else +# define PATH_SEPARATOR_CHAR ':' +# define MAP_PATHSEP MAP_COLON +# endif +#elif PATH_SEPARATOR_CHAR == ':' +# define MAP_PATHSEP MAP_COLON +#elif PATH_SEPARATOR_CHAR == ';' +# define MAP_PATHSEP MAP_SEMI +#elif PATH_SEPARATOR_CHAR == ',' +# define MAP_PATHSEP MAP_COMMA +#else +# error "Unknown PATH_SEPARATOR_CHAR" +#endif + +#define STOP_SET(_v,_m) ANY_SET(stopchar_map[(unsigned char)(_v)],(_m)) + +/* True if C is 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) + +/* 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) +# define SET_STACK_SIZE +#endif +#ifdef SET_STACK_SIZE +# include +extern struct rlimit stack_limit; +#endif + +#include + +#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 signed and unsigned + integers as a string. + Does NOT include space for \0 so be sure to add it if needed. + Math suggested by Edward Welbourne */ +#define INTSTR_LENGTH (53 * sizeof(uintmax_t) / 22 + 3) + +#define DEFAULT_TTYNAME "true" +#ifdef HAVE_TTYNAME +# define TTYNAME(_f) ttyname (_f) +#else +# 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 + { + const char *filenm; + unsigned long lineno; + unsigned long offset; + } floc; + +const char *concat (unsigned int, ...); +void message (int prefix, size_t length, const char *fmt, ...) + ATTRIBUTE ((__format__ (__printf__, 3, 4))); +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 (void) NORETURN; + +/* When adding macros to this list be sure to update the value of + XGETTEXT_OPTIONS in the po/Makevars file. */ +#define O(_t,_a,_f) _t((_a), 0, (_f)) +#define OS(_t,_a,_f,_s) _t((_a), strlen (_s), (_f), (_s)) +#define OSS(_t,_a,_f,_s1,_s2) _t((_a), strlen (_s1) + strlen (_s2), \ + (_f), (_s1), (_s2)) +#define OSSS(_t,_a,_f,_s1,_s2,_s3) _t((_a), strlen (_s1) + strlen (_s2) + strlen (_s3), \ + (_f), (_s1), (_s2), (_s3)) +#define ON(_t,_a,_f,_n) _t((_a), INTSTR_LENGTH, (_f), (_n)) +#define ONN(_t,_a,_f,_n1,_n2) _t((_a), INTSTR_LENGTH*2, (_f), (_n1), (_n2)) + +#define OSN(_t,_a,_f,_s,_n) _t((_a), strlen (_s) + INTSTR_LENGTH, \ + (_f), (_s), (_n)) +#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); +char *xstrdup (const char *); +char *xstrndup (const char *, size_t); +char *find_next_token (const char **, size_t *); +char *next_token (const char *); +char *end_of_token (const char *); +void collapse_continuations (char *); +char *lindex (const char *, const char *, int); +int alpha_compare (const void *, const void *); +void print_spaces (unsigned int); +char *find_percent (char *); +const char *find_percent_cached (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); + +#ifndef HAVE_MEMRCHR +void *memrchr(const void *, int, size_t); +#endif + +#ifndef NO_ARCHIVES +int ar_name (const char *); +void ar_parse_name (const char *, char **, char **); +int ar_touch (const char *); +time_t ar_member_date (const char *); + +typedef intmax_t (*ar_member_func_t) (int desc, const char *mem, int truncated, + long int hdrpos, long int datapos, + long int size, intmax_t date, int uid, + int gid, unsigned int mode, + 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); +#endif +#endif + +int dir_file_exists_p (const char *, const char *); +int file_exists_p (const char *); +int file_impossible_p (const char *); +void file_impossible (const char *); +const char *dir_name (const char *); +void print_dir_data_base (void); +void dir_setup_glob (glob_t *); +void hash_init_directories (void); + +void define_default_variables (void); +void undefine_default_variables (void); +void set_default_suffixes (void); +void install_default_suffix_rules (void); +void install_default_implicit_rules (void); + +void build_vpath_lists (void); +void construct_vpath_list (char *pattern, char *dirpath); +const char *vpath_search (const char *file, FILE_TIMESTAMP *mtime_ptr, + unsigned int* vpath_index, unsigned int* path_index); +int gpath_search (const char *file, size_t len); + +void construct_include_path (const char **arg_dirs); + +char *strip_whitespace (const char **begpp, const char **endpp); + +void show_goal_error (void); + +/* String caching */ +void strcache_init (void); +void strcache_print_stats (const char *prefix); +int strcache_iscached (const char *str); +const char *strcache_add (const char *str); +const char *strcache_add_len (const char *str, size_t len); + +/* Guile support */ +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, 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, + because such systems often declare them in header files anyway. */ + +#if !defined (__GNU_LIBRARY__) && !defined (POSIX) && !defined (_POSIX_VERSION) && !defined(WINDOWS32) + +# ifndef VMS +long int lseek (); +# endif + +# ifdef HAVE_GETCWD +# if !defined(VMS) && !defined(__DECC) +char *getcwd (void); +# endif +# else +char *getwd (void); +# define getcwd(buf, len) getwd (buf) +# endif + +#endif /* Not GNU C library or POSIX. */ + +#if !HAVE_STRCASECMP +# if HAVE_STRICMP +# define strcasecmp stricmp +# elif HAVE_STRCMPI +# define strcasecmp strcmpi +# else +/* Create our own, in misc.c */ +int strcasecmp (const char *s1, const char *s2); +# endif +#endif + +#if !HAVE_STRNCASECMP +# if HAVE_STRNICMP +# define strncasecmp strnicmp +# elif HAVE_STRNCMPI +# define strncasecmp strncmpi +# else +/* Create our own, in misc.c */ +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 +#define OUTPUT_SYNC_RECURSE 3 + +/* Non-GNU systems may not declare this in unistd.h. */ +extern char **environ; + +extern const floc *reading_file; +extern const floc **expanding_var; + +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, 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' +extern char cmd_prefix; + +#define JOBSERVER_AUTH_OPT "jobserver-auth" + +extern char *jobserver_auth; +extern unsigned int job_slots; +extern double max_load_average; + +extern const char *program; + +#ifdef VMS +const char *vms_command (const char *argv0); +const char *vms_progname (const char *argv0); + +void vms_exit (int); +# define _exit(foo) vms_exit(foo) +# define exit(foo) vms_exit(foo) + +extern char *program_name; + +void +set_program_name (const char *arv0); + +int +need_vms_symbol (void); + +int +create_foreign_command (const char *command, const char *image); + +int +vms_export_dcl_symbol (const char *name, const char *value); + +int +vms_putenv_symbol (const char *string); + +void +vms_restore_symbol (const char *string); + +#endif + +void remote_setup (void); +void remote_cleanup (void); +int start_remote_job_p (int); +int start_remote_job (char **, char **, int, int *, pid_t *, int *); +int remote_status (int *, int *, int *, int); +void block_remote_children (void); +void unblock_remote_children (void); +int remote_kill (pid_t id, int sig); +void print_variable_data_base (void); +void print_vpath_data_base (void); + +extern char *starting_directory; +extern unsigned int makelevel; +extern char *version_string, *remote_description, *make_host; + +extern unsigned int commands_started; + +extern volatile sig_atomic_t handling_fatal_signal; + +#ifndef MIN +#define MIN(_a,_b) ((_a)<(_b)?(_a):(_b)) +#endif +#ifndef MAX +#define MAX(_a,_b) ((_a)>(_b)?(_a):(_b)) +#endif + +#define MAKE_SUCCESS 0 +#define MAKE_TROUBLE 1 +#define MAKE_FAILURE 2 + +/* Set up heap debugging library dmalloc. */ + +#ifdef HAVE_DMALLOC_H +#include +#endif + +#ifndef initialize_main +# ifdef __EMX__ +# define initialize_main(pargc, pargv) \ + { _wildcard(pargc, pargv); _response(pargc, pargv); } +# else +# define initialize_main(pargc, pargv) +# endif +#endif + +#ifdef __EMX__ +# if !defined chdir +# define chdir _chdir2 +# endif +# if !defined getcwd +# define getcwd _getcwd2 +# endif + +/* NO_CHDIR2 causes make not to use _chdir2() and _getcwd2() instead of + chdir() and getcwd(). This avoids some error messages for the + make testsuite but restricts the drive letter support. */ +# ifdef NO_CHDIR2 +# warning NO_CHDIR2: usage of drive letters restricted +# undef chdir +# undef getcwd +# endif +#endif + +#ifndef initialize_main +# define initialize_main(pargc, pargv) +#endif + + +/* Some systems (like Solaris, PTX, etc.) do not support the SA_RESTART flag + properly according to POSIX. So, we try to wrap common system calls with + checks for EINTR. Note that there are still plenty of system calls that + can fail with EINTR but this, reportedly, gets the vast majority of + failure cases. If you still experience failures you'll need to either get + a system where SA_RESTART works, or you need to avoid -j. */ + +#define EINTRLOOP(_v,_c) while (((_v)=_c)==-1 && errno==EINTR) + +/* While system calls that return integers are pretty consistent about + returning -1 on failure and setting errno in that case, functions that + return pointers are not always so well behaved. Sometimes they return + NULL for expected behavior: one good example is readdir() which returns + NULL at the end of the directory--and _doesn't_ reset errno. So, we have + to do it ourselves here. */ + +#define ENULLLOOP(_v,_c) do { errno = 0; (_v) = _c; } \ + while((_v)==0 && errno==EINTR) diff --git a/local/recipes/dev/gnu-make/source/src/misc.c b/local/recipes/dev/gnu-make/source/src/misc.c new file mode 100644 index 0000000000..8264fe9f7a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/misc.c @@ -0,0 +1,976 @@ +/* Miscellaneous generic support functions for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include "filedef.h" +#include "dep.h" +#include "os.h" +#include "debug.h" + +/* GNU make no longer supports pre-ANSI89 environments. */ + +#include + +#ifdef WINDOWS32 +# include +# include +#endif + +#ifdef HAVE_FCNTL_H +# include +#else +# include +#endif + +unsigned int +make_toui (const char *str, const char **error) +{ + char *end; + unsigned long val = strtoul (str, &end, 10); + + if (error) + { + if (str[0] == '\0') + *error = "Missing value"; + else if (*end != '\0') + *error = "Invalid value"; + else + *error = NULL; + } + + return val; +} + +/* Convert val into a string, written to buf. buf must be large enough + to hold the largest possible value, plus a nul byte. Returns buf. + We can't use standard PRI* here: those are based on intNN_t types. */ + +char * +make_lltoa (long long val, char *buf) +{ + sprintf (buf, "%" MK_PRI64_PREFIX "d", val); + return buf; +} + +char * +make_ulltoa (unsigned long long val, char *buf) +{ + sprintf (buf, "%" MK_PRI64_PREFIX "u", val); + return buf; +} + +/* Simple random number generator, for use with shuffle. + This doesn't need to be truly random, just pretty random. Use our own + implementation rather than relying on the C runtime's rand() so we always + get the same results for a given seed, regardless of C runtime. */ + +static unsigned int mk_state = 0; + +void +make_seed (unsigned int seed) +{ + mk_state = seed; +} + +unsigned int +make_rand () +{ + /* mk_state must never be 0. */ + if (mk_state == 0) + mk_state = (unsigned int)(time (NULL) ^ make_pid ()) + 1; + + /* A simple xorshift RNG. */ + mk_state ^= mk_state << 13; + mk_state ^= mk_state >> 17; + mk_state ^= mk_state << 5; + + return mk_state; +} + +/* Compare strings *S1 and *S2. + Return negative if the first is less, positive if it is greater, + zero if they are equal. */ + +int +alpha_compare (const void *v1, const void *v2) +{ + const char *s1 = *((char **)v1); + const char *s2 = *((char **)v2); + + if (*s1 != *s2) + return *s1 - *s2; + return strcmp (s1, s2); +} + +/* Discard each backslash-newline combination from LINE. + Backslash-backslash-newline combinations become backslash-newlines. + This is done by copying the text at LINE into itself. */ + +void +collapse_continuations (char *line) +{ + char *out = line; + char *in = line; + char *q; + + q = strchr(in, '\n'); + if (q == 0) + return; + + do + { + char *p = q; + int i; + size_t out_line_length; + + if (q > line && q[-1] == '\\') + { + /* Search for more backslashes. */ + i = -2; + while (&p[i] >= line && p[i] == '\\') + --i; + ++i; + } + else + i = 0; + + /* The number of backslashes is now -I, keep half of them. */ + out_line_length = (p - in) + i - i/2; + if (out != in) + memmove (out, in, out_line_length); + out += out_line_length; + + /* When advancing IN, skip the newline too. */ + in = q + 1; + + if (i & 1) + { + /* Backslash/newline handling: + In traditional GNU make all trailing whitespace, consecutive + backslash/newlines, and any leading non-newline whitespace on the + next line is reduced to a single space. + In POSIX, each backslash/newline and is replaced by a space. */ + while (ISBLANK (*in)) + ++in; + if (! posix_pedantic) + while (out > line && ISBLANK (out[-1])) + --out; + *out++ = ' '; + } + else + { + /* If the newline isn't quoted, put it in the output. */ + *out++ = '\n'; + } + + q = strchr(in, '\n'); + } + while (q); + + memmove(out, in, strlen(in) + 1); +} + +/* Print N spaces (used in debug for target-depth). */ + +void +print_spaces (unsigned int n) +{ + while (n-- > 0) + putchar (' '); +} + + +/* Return a string whose contents concatenate the NUM strings provided + This string lives in static, re-used memory. */ + +const char * +concat (unsigned int num, ...) +{ + static size_t rlen = 0; + static char *result = NULL; + size_t ri = 0; + va_list args; + + va_start (args, num); + + while (num-- > 0) + { + const char *s = va_arg (args, const char *); + size_t l = xstrlen (s); + + if (l == 0) + continue; + + if (ri + l > rlen) + { + rlen = ((rlen ? rlen : 60) + l) * 2; + result = xrealloc (result, rlen); + } + + memcpy (result + ri, s, l); + ri += l; + } + + va_end (args); + + /* Get some more memory if we don't have enough space for the + terminating '\0'. */ + if (ri == rlen) + { + rlen = (rlen ? rlen : 60) * 2; + result = xrealloc (result, rlen); + } + + result[ri] = '\0'; + + 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. */ + +#ifndef HAVE_DMALLOC_H + +#undef xmalloc +#undef xcalloc +#undef xrealloc +#undef xstrdup + +void * +xmalloc (size_t size) +{ + /* Make sure we don't allocate 0, for pre-ISO implementations. */ + void *result = malloc (size ? size : 1); + if (result == 0) + out_of_memory (); + return result; +} + + +void * +xcalloc (size_t size) +{ + /* Make sure we don't allocate 0, for pre-ISO implementations. */ + void *result = calloc (size ? size : 1, 1); + if (result == 0) + out_of_memory (); + return result; +} + + +void * +xrealloc (void *ptr, size_t size) +{ + void *result; + + /* Some older implementations of realloc() don't conform to ISO. */ + if (! size) + size = 1; + result = ptr ? realloc (ptr, size) : malloc (size); + if (result == 0) + out_of_memory (); + return result; +} + + +char * +xstrdup (const char *ptr) +{ + char *result; + +#ifdef HAVE_STRDUP + result = strdup (ptr); +#else + result = malloc (strlen (ptr) + 1); +#endif + + if (result == 0) + out_of_memory (); + +#ifdef HAVE_STRDUP + return result; +#else + return strcpy (result, ptr); +#endif +} + +#endif /* HAVE_DMALLOC_H */ + +char * +xstrndup (const char *str, size_t length) +{ + char *result; + +#ifdef HAVE_STRNDUP + result = strndup (str, length); + if (result == 0) + out_of_memory (); +#else + result = xmalloc (length + 1); + if (length > 0) + strncpy (result, str, length); + result[length] = '\0'; +#endif + + return result; +} + +#ifndef HAVE_MEMRCHR +void * +memrchr(const void* str, int ch, size_t len) +{ + const char* sp = str; + const char* cp = sp; + + if (len == 0) + return NULL; + + cp += len - 1; + + while (cp[0] != ch) + { + if (cp == sp) + return NULL; + --cp; + } + + return (void*)cp; +} +#endif + + + +/* Limited INDEX: + Search through the string STRING, which ends at LIMIT, for the character C. + Returns a pointer to the first occurrence, or nil if none is found. + Like INDEX except that the string searched ends where specified + instead of at the first null. */ + +char * +lindex (const char *s, const char *limit, int c) +{ + while (s < limit) + if (*s++ == c) + return (char *)(s - 1); + + return 0; +} + +/* Return the address of the first whitespace or null in the string S. */ + +char * +end_of_token (const char *s) +{ + while (! END_OF_TOKEN (*s)) + ++s; + return (char *)s; +} + +/* Return the address of the first nonwhitespace or null in the string S. */ + +char * +next_token (const char *s) +{ + NEXT_TOKEN (s); + return (char *)s; +} + +/* Find the next token in PTR; return the address of it, and store the length + of the token into *LENGTHPTR if LENGTHPTR is not nil. Set *PTR to the end + of the token, so this function can be called repeatedly in a loop. */ + +char * +find_next_token (const char **ptr, size_t *lengthptr) +{ + const char *p = next_token (*ptr); + + if (*p == '\0') + return 0; + + *ptr = end_of_token (p); + if (lengthptr != 0) + *lengthptr = *ptr - p; + + return (char *)p; +} + +/* Write a BUFFER of size LEN to file descriptor FD. + Retry short writes from EINTR. Return LEN, or -1 on error. */ +ssize_t +writebuf (int fd, const void *buffer, size_t len) +{ + const char *msg = buffer; + size_t l = len; + while (l) + { + ssize_t r; + + EINTRLOOP (r, write (fd, msg, l)); + if (r < 0) + return r; + + l -= r; + msg += r; + } + + return (ssize_t)len; +} + +/* Read until we get LEN bytes from file descriptor FD, into BUFFER. + Retry short reads on EINTR. If we get an error, return it. + Return 0 at EOF. */ +ssize_t +readbuf (int fd, void *buffer, size_t len) +{ + char *msg = buffer; + while (len) + { + ssize_t r; + + EINTRLOOP (r, read (fd, msg, len)); + if (r < 0) + return r; + if (r == 0) + break; + + len -= r; + msg += r; + } + + return (ssize_t)(msg - (char*)buffer); +} + + +/* Copy a chain of 'struct dep'. For 2nd expansion deps, dup the name. */ + +struct dep * +copy_dep_chain (const struct dep *d) +{ + struct dep *firstnew = 0; + struct dep *lastnew = 0; + + while (d != 0) + { + struct dep *c = xmalloc (sizeof (struct dep)); + memcpy (c, d, sizeof (struct dep)); + + if (c->need_2nd_expansion) + c->name = xstrdup (c->name); + + c->next = 0; + if (firstnew == 0) + firstnew = lastnew = c; + else + lastnew = lastnew->next = c; + + d = d->next; + } + + return firstnew; +} + +/* Free a chain of struct nameseq. + For struct dep chains use free_dep_chain. */ + +void +free_ns_chain (struct nameseq *ns) +{ + while (ns != 0) + { + struct nameseq *t = ns; + ns = ns->next; + free_ns (t); + } +} + + +#ifdef MAKE_MAINTAINER_MODE + +void +spin (const char* type) +{ + char filenm[256]; + struct stat dummy; + + sprintf (filenm, ".make-spin-%s", type); + + if (stat (filenm, &dummy) == 0) + { + fprintf (stderr, "SPIN on %s\n", filenm); + do +#ifdef WINDOWS32 + Sleep (1000); +#else + sleep (1); +#endif + while (stat (filenm, &dummy) == 0); + } +} + +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 + + + +/* Provide support for temporary files. */ + +#ifndef HAVE_STDLIB_H +# ifdef HAVE_MKSTEMP +int mkstemp (char *template); +# else +char *mktemp (char *template); +# endif +#endif + +#ifndef HAVE_UMASK +mode_t +umask (mode_t mask) +{ + return 0; +} +#endif + +#ifdef VMS +# define DEFAULT_TMPFILE "sys$scratch:gnv$make_cmdXXXXXX.com" +#else +# define DEFAULT_TMPFILE "GmXXXXXX" +#endif + +const char * +get_tmpdir () +{ + static const char *tmpdir = NULL; + + if (!tmpdir) + { +#if defined (__MSDOS__) || defined (WINDOWS32) || defined (__EMX__) +# define TMP_EXTRAS "TMP", "TEMP", +#else +# define TMP_EXTRAS +#endif + 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; + +# ifdef HAVE_MKTEMP + path = get_tmptemplate (); + if (*mktemp (path) == '\0') + pfatal_with_name ("mktemp"); +# else + path = xmalloc (L_tmpnam + 1); + if (tmpnam (path) == NULL) + pfatal_with_name ("tmpnam"); +# 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; +} + + +#if !HAVE_STRCASECMP && !HAVE_STRICMP && !HAVE_STRCMPI +/* If we don't have strcasecmp() (from POSIX), or anything that can substitute + for it, define our own version. */ + +int +strcasecmp (const char *s1, const char *s2) +{ + while (1) + { + int c1 = (unsigned char) *(s1++); + int c2 = (unsigned char) *(s2++); + + if (isalpha (c1)) + c1 = tolower (c1); + if (isalpha (c2)) + c2 = tolower (c2); + + if (c1 != '\0' && c1 == c2) + continue; + + return (c1 - c2); + } +} +#endif + +#if !HAVE_STRNCASECMP && !HAVE_STRNICMP && !HAVE_STRNCMPI +/* If we don't have strncasecmp() (from POSIX), or anything that can + substitute for it, define our own version. */ + +int +strncasecmp (const char *s1, const char *s2, size_t n) +{ + while (n-- > 0) + { + int c1 = (unsigned char) *(s1++); + int c2 = (unsigned char) *(s2++); + + if (isalpha (c1)) + c1 = tolower (c1); + if (isalpha (c2)) + c2 = tolower (c2); + + if (c1 != '\0' && c1 == c2) + continue; + + return (c1 - c2); + } + + return 0; +} +#endif + + +#ifdef NEED_GET_PATH_MAX +unsigned int +get_path_max (void) +{ + static unsigned int value; + + if (value == 0) + { + long x = pathconf ("/", _PC_PATH_MAX); + if (x > 0) + value = (unsigned int) x; + else + value = PATH_MAX; + } + + return value; +} +#endif + +#if !HAVE_MEMPCPY +void * +mempcpy (void *dest, const void *src, size_t n) +{ + return (char *) memcpy (dest, src, n) + n; +} +#endif + +#if !HAVE_STPCPY +char * +stpcpy (char *dest, const char *src) +{ + char *d = dest; + const char *s = src; + + do + *d++ = *s; + while (*s++ != '\0'); + + return d - 1; +} +#endif + +#if !HAVE_STRTOLL +# undef UNSIGNED +# undef USE_NUMBER_GROUPING +# undef USE_WIDE_CHAR +# define QUAD 1 +# include +#endif + +#if !HAVE_STRERROR +char * +strerror (int errnum) +{ + static char msg[256]; + +#define SETMSG(_e, _m) case _e: strcpy(msg, _m); break + + switch (errnum) + { +#ifdef EPERM + SETMSG (EPERM , "Operation not permitted"); +#endif +#ifdef ENOENT + SETMSG (ENOENT , "No such file or directory"); +#endif +#ifdef ESRCH + SETMSG (ESRCH , "No such process"); +#endif +#ifdef EINTR + SETMSG (EINTR , "Interrupted system call"); +#endif +#ifdef EIO + SETMSG (EIO , "I/O error"); +#endif +#ifdef ENXIO + SETMSG (ENXIO , "No such device or address"); +#endif +#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 msg; +} +#endif diff --git a/local/recipes/dev/gnu-make/source/src/mkconfig.h b/local/recipes/dev/gnu-make/source/src/mkconfig.h new file mode 100644 index 0000000000..ac3a7bf472 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/mkconfig.h @@ -0,0 +1,37 @@ +/* src/mkconfig.h. Generated from mkconfig.h.in by configure. */ +/* Autoconf values for use on non-POSIX systems. +Copyright (C) 2022 Free Software Foundation, Inc. +This file is part of GNU Make. + +GNU Make is free software; you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +/* Name of package */ +#define PACKAGE "make" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "bug-make@gnu.org" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "GNU Make" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "GNU Make 4.4" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "make" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "https://www.gnu.org/software/make/" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "4.4" diff --git a/local/recipes/dev/gnu-make/source/src/os.h b/local/recipes/dev/gnu-make/source/src/os.h new file mode 100644 index 0000000000..fe0a9976c1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/os.h @@ -0,0 +1,158 @@ +/* Declarations for operating system interfaces for GNU Make. +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 +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 . */ + +#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. */ + +#ifdef MAKE_JOBSERVER + +/* Returns 1 if the jobserver is enabled, else 0. */ +unsigned int jobserver_enabled (void); + +/* 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. + 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); + +/* 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. + 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. */ +void jobserver_release (int is_fatal); + +/* Notify the jobserver that a child exited. */ +void jobserver_signal (void); + +/* Get ready to start a non-recursive child. */ +void jobserver_pre_child (int); + +/* Complete starting a non-recursive child. */ +void jobserver_post_child (int); + +/* Set up to acquire a new token. */ +void jobserver_pre_acquire (void); + +/* Wait until we can acquire a jobserver token. + TIMEOUT is 1 if we have other jobs waiting for the load to go down; + in this case we won't wait forever, so we can check the load. + Returns 1 if we got a token, or 0 if we stopped waiting due to a child + exiting or a timeout. */ +unsigned int jobserver_acquire (int timeout); + +#else + +#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 /* 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__) +# define get_bad_stdin() (-1) +#else +int get_bad_stdin (void); +#endif diff --git a/local/recipes/dev/gnu-make/source/src/output.c b/local/recipes/dev/gnu-make/source/src/output.c new file mode 100644 index 0000000000..43eb2f065f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/output.c @@ -0,0 +1,534 @@ +/* Output to stdout / stderr for GNU make +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include "os.h" +#include "output.h" + +/* GNU make no longer supports pre-ANSI89 environments. */ + +#include +#include +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#ifdef HAVE_FCNTL_H +# include +#else +# include +#endif + +#ifdef WINDOWS32 +# include +# include +# include "sub_proc.h" +#endif /* WINDOWS32 */ + +struct output *output_context = NULL; +unsigned int stdio_traced = 0; + +#define OUTPUT_NONE (-1) + +#define OUTPUT_ISSET(_out) ((_out)->out >= 0 || (_out)->err >= 0) + +/* Write a string to the current STDOUT or STDERR. */ +static void +_outputs (struct output *out, int is_err, const char *msg) +{ + FILE *f; + + if (out && out->syncout) + { + int fd = is_err ? out->err : out->out; + 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 + left (according to ENTERING) the current directory. */ + +static int +log_working_directory (int entering) +{ + static char *buf = NULL; + static size_t len = 0; + size_t need; + const char *fmt; + char *p; + + /* Get enough space for the longest possible output. */ + need = strlen (program) + INTSTR_LENGTH + 2 + 1; + if (starting_directory) + need += strlen (starting_directory); + + /* Use entire sentences to give the translators a fighting chance. */ + if (makelevel == 0) + if (starting_directory == 0) + if (entering) + fmt = _("%s: Entering an unknown directory\n"); + else + fmt = _("%s: Leaving an unknown directory\n"); + else + if (entering) + fmt = _("%s: Entering directory '%s'\n"); + else + fmt = _("%s: Leaving directory '%s'\n"); + else + if (starting_directory == 0) + if (entering) + fmt = _("%s[%u]: Entering an unknown directory\n"); + else + fmt = _("%s[%u]: Leaving an unknown directory\n"); + else + if (entering) + fmt = _("%s[%u]: Entering directory '%s'\n"); + else + fmt = _("%s[%u]: Leaving directory '%s'\n"); + + need += strlen (fmt); + + if (need > len) + { + buf = xrealloc (buf, need); + len = need; + } + + p = buf; + if (print_data_base_flag) + { + *(p++) = '#'; + *(p++) = ' '; + } + + if (makelevel == 0) + if (starting_directory == 0) + sprintf (p, fmt , program); + else + sprintf (p, fmt, program, starting_directory); + else if (starting_directory == 0) + sprintf (p, fmt, program, makelevel); + else + sprintf (p, fmt, program, makelevel, starting_directory); + + _outputs (NULL, 0, buf); + + return 1; +} + + +#ifndef NO_OUTPUT_SYNC + +/* Support routine for output_sync() */ +static void +pump_from_tmp (int from, FILE *to) +{ + static char buffer[8192]; + +#ifdef WINDOWS32 + int prev_mode; + + /* "from" is opened by open_tmpfd, which does it in binary mode, so + we need the mode of "to" to match that. */ + prev_mode = _setmode (fileno (to), _O_BINARY); +#endif + + if (lseek (from, 0, SEEK_SET) == -1) + perror ("lseek()"); + + while (1) + { + int len; + EINTRLOOP (len, read (from, buffer, sizeof (buffer))); + if (len < 0) + perror ("read()"); + if (len <= 0) + break; + if (fwrite (buffer, len, 1, to) < 1) + { + perror ("fwrite()"); + break; + } + fflush (to); + } + +#ifdef WINDOWS32 + /* Switch "to" back to its original mode, so that log messages by + Make have the same EOL format as without --output-sync. */ + _setmode (fileno (to), prev_mode); +#endif +} + +/* Returns a file descriptor to a temporary file, that will be automatically + deleted on exit. */ +int +output_tmpfd (void) +{ + int fd = get_tmpfd (NULL); + fd_set_append (fd); + return fd; +} + +/* Adds file descriptors to the child structure to support output_sync; one + for stdout and one for stderr as long as they are open. If stdout and + stderr share a device they can share a temp file too. + Will reset output_sync on error. */ +static void +setup_tmpfile (struct output *out) +{ + 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; + + io_state = check_io_state (); + + 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) + goto error; + fd_noinherit (fd); + out->out = fd; + } + + if (ANY_SET (io_state, IO_STDERR_OK)) + { + if (out->out != OUTPUT_NONE && ANY_SET (io_state, IO_COMBINED_OUTERR)) + out->err = out->out; + else + { + int fd = output_tmpfd (); + if (fd < 0) + goto error; + fd_noinherit (fd); + out->err = fd; + } + } + + 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 + each job together. This is done by holding the results in temp files, + one for stdout and potentially another for stderr, and only releasing + them to "real" stdout/stderr when a semaphore can be obtained. */ + +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); + + if (outfd_not_empty || errfd_not_empty) + { + int traced = 0; + + /* 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. */ + 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 && output_sync != OUTPUT_SYNC_RECURSE) + traced = log_working_directory (1); + + if (outfd_not_empty) + pump_from_tmp (out->out, stdout); + if (errfd_not_empty && out->err != out->out) + pump_from_tmp (out->err, stderr); + + if (traced) + log_working_directory (0); + + /* Exit the critical section. */ + osync_release (); + + /* Truncate and reset the output, in case we use it again. */ + if (out->out != OUTPUT_NONE) + { + int e; + lseek (out->out, 0, SEEK_SET); + EINTRLOOP (e, ftruncate (out->out, 0)); + } + if (out->err != OUTPUT_NONE && out->err != out->out) + { + int e; + lseek (out->err, 0, SEEK_SET); + EINTRLOOP (e, ftruncate (out->err, 0)); + } + } +} +#endif /* NO_OUTPUT_SYNC */ + + +void +output_init (struct output *out) +{ + if (out) + { + out->out = out->err = OUTPUT_NONE; + out->syncout = !!output_sync; + return; + } + + /* 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 +output_close (struct output *out) +{ + if (! out) + { + if (stdio_traced) + log_working_directory (0); + return; + } + +#ifndef NO_OUTPUT_SYNC + output_dump (out); +#endif + + if (out->out >= 0) + close (out->out); + if (out->err >= 0 && out->err != out->out) + close (out->err); + + output_init (out); +} + +/* We're about to generate output: be sure it's set up. */ +void +output_start (void) +{ +#ifndef NO_OUTPUT_SYNC + /* If we're syncing output make sure the temporary file is set up. */ + if (output_context && output_context->syncout) + if (! OUTPUT_ISSET(output_context)) + setup_tmpfile (output_context); +#endif + + /* 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) + stdio_traced = log_working_directory (1); +} + +void +outputs (int is_err, const char *msg) +{ + if (! msg || *msg == '\0') + return; + + output_start (); + + _outputs (output_context, is_err, msg); +} + + +static struct fmtstring + { + char *buffer; + size_t size; + } fmtbuf = { NULL, 0 }; + +static char * +get_buffer (size_t need) +{ + /* Make sure we have room. NEED includes space for \0. */ + if (need > fmtbuf.size) + { + fmtbuf.size += need * 2; + fmtbuf.buffer = xrealloc (fmtbuf.buffer, fmtbuf.size); + } + + fmtbuf.buffer[need-1] = '\0'; + + return fmtbuf.buffer; +} + +/* Print a message on stdout. */ + +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; + start = p = get_buffer (len); + + if (prefix) + { + if (makelevel == 0) + sprintf (p, "%s: ", program); + else + sprintf (p, "%s[%u]: ", program, makelevel); + p += strlen (p); + } + + va_start (args, fmt); + vsprintf (p, fmt, args); + va_end (args); + + strcat (p, "\n"); + + assert (start[len-1] == '\0'); + outputs (0, start); +} + +/* Print an error message. */ + +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); + start = p = get_buffer (len); + + if (flocp && flocp->filenm) + sprintf (p, "%s:%lu: ", flocp->filenm, flocp->lineno + flocp->offset); + else if (makelevel == 0) + sprintf (p, "%s: ", program); + else + sprintf (p, "%s[%u]: ", program, makelevel); + p += strlen (p); + + va_start (args, fmt); + vsprintf (p, fmt, args); + va_end (args); + + strcat (p, "\n"); + + assert (start[len-1] == '\0'); + outputs (1, start); +} + +/* Print an error message and exit. */ + +void +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); + start = p = get_buffer (len); + + if (flocp && flocp->filenm) + sprintf (p, "%s:%lu: *** ", flocp->filenm, flocp->lineno + flocp->offset); + else if (makelevel == 0) + sprintf (p, "%s: *** ", program); + else + sprintf (p, "%s[%u]: *** ", program, makelevel); + p += strlen (p); + + va_start (args, fmt); + vsprintf (p, fmt, args); + va_end (args); + + strcat (p, stop); + + assert (start[len-1] == '\0'); + outputs (1, start); + + die (MAKE_FAILURE); +} + +/* Print an error message from errno. */ + +void +perror_with_name (const char *str, const char *name) +{ + const char *err = strerror (errno); + OSSS (error, NILF, _("%s%s: %s"), str, name, err); +} + +/* Print an error message from errno and exit. */ + +void +pfatal_with_name (const char *name) +{ + const char *err = strerror (errno); + OSS (fatal, NILF, _("%s: %s"), name, err); + + /* NOTREACHED */ +} + +/* Print a message about out of memory (not using more heap) and exit. + Our goal here is to be sure we don't try to allocate more memory, which + means we don't want to use string translations or normal cleanup. */ + +void +out_of_memory () +{ + writebuf (FD_STDOUT, program, strlen (program)); + writebuf (FD_STDOUT, STRING_SIZE_TUPLE (": *** virtual memory exhausted\n")); + exit (MAKE_FAILURE); +} diff --git a/local/recipes/dev/gnu-make/source/src/output.h b/local/recipes/dev/gnu-make/source/src/output.h new file mode 100644 index 0000000000..59576059ed --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/output.h @@ -0,0 +1,58 @@ +/* Output to stdout / stderr for GNU make +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +struct output + { + int out; + int err; + unsigned int syncout:1; /* True if we want to synchronize output. */ + }; + +extern struct output *output_context; +extern unsigned int stdio_traced; + +#define FD_STDIN (fileno (stdin)) +#define FD_STDOUT (fileno (stdout)) +#define FD_STDERR (fileno (stderr)) + +#define OUTPUT_SET(_new) do{ output_context = (_new)->syncout ? (_new) : NULL; }while(0) +#define OUTPUT_UNSET() do{ output_context = NULL; }while(0) + +#define OUTPUT_TRACED() do{ stdio_traced = 1; }while(0) +#define OUTPUT_IS_TRACED() (!!stdio_traced) + +/* Write a buffer directly to the given file descriptor. + This handles errors etc. */ +int output_write (int fd, const void *buffer, size_t len); + +/* Initialize and close a child output structure: if NULL do this program's + output (this should only be done once). */ +void output_init (struct output *out); +void output_close (struct output *out); + +/* In situations where output may be about to be displayed but we're not + sure if we've set it up yet, call this. */ +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(NO_OUTPUT_SYNC) +# define output_dump(_o) (void)(0) +#else +/* Dump any child output content to stdout, and reset it. */ +void output_dump (struct output *out); +#endif diff --git a/local/recipes/dev/gnu-make/source/src/posixos.c b/local/recipes/dev/gnu-make/source/src/posixos.c new file mode 100644 index 0000000000..44aeb3464b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/posixos.c @@ -0,0 +1,881 @@ +/* POSIX-based operating system interface for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include + +#ifdef HAVE_FCNTL_H +# include +# define FD_OK(_f) (fcntl ((_f), F_GETFD) != -1) +#elif defined(HAVE_SYS_FILE_H) +# include +#endif + +#if !defined(FD_OK) +# define FD_OK(_f) 1 +#endif + +#if defined(HAVE_PSELECT) && defined(HAVE_SYS_SELECT_H) +# include +#endif + +#include "debug.h" +#include "job.h" +#include "os.h" + +#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 }; + +/* Used to signal read() that a SIGCHLD happened. Always CLOEXEC. + If we use pselect() this will never be created and always -1. + */ +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 () +{ +#ifdef HAVE_PSELECT + /* Pretend we succeeded. */ + return 0; +#else + EINTRLOOP (job_rfd, dup (job_fds[0])); + if (job_rfd >= 0) + fd_noinherit (job_rfd); + + return job_rfd; +#endif +} + +static void +set_blocking (int fd, int blocking) +{ + /* If we're not using pselect() don't change the blocking. */ +#ifdef HAVE_PSELECT + int flags; + EINTRLOOP (flags, fcntl (fd, F_GETFL)); + if (flags >= 0) + { + int r; + flags = blocking ? (flags & ~O_NONBLOCK) : (flags | O_NONBLOCK); + EINTRLOOP (r, fcntl (fd, F_SETFL, flags)); + if (r < 0) + pfatal_with_name ("fcntl(O_NONBLOCK)"); + } +#endif +} + +unsigned int +jobserver_setup (int slots, const char *style) +{ + int r; + +#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(). */ + fd_noinherit (job_fds[0]); + fd_noinherit (job_fds[1]); + + if (make_job_rfd () < 0) + pfatal_with_name (_("duping jobs pipe")); + + while (slots--) + { + EINTRLOOP (r, write (job_fds[1], &token, 1)); + if (r != 1) + pfatal_with_name (_("init jobserver pipe")); + } + + /* 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. */ + + /* 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)); + + 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; + } + + /* Create a duplicate pipe, if needed, that will be closed in the SIGCHLD + handler. If this fails with EBADF, the parent closed the pipe on us as + it didn't think we were a submake. If so, warn and default to -j1. */ + + if (make_job_rfd () < 0) + { + if (errno != EBADF) + pfatal_with_name ("jobserver readfd"); + + jobserver_clear (); + + return 0; + } + + /* 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 () +{ + 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 () +{ + return js_type != js_none; +} + +void +jobserver_clear () +{ + if (job_fds[0] >= 0) + close (job_fds[0]); + if (job_fds[1] >= 0) + close (job_fds[1]); + if (job_rfd >= 0) + 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 +jobserver_release (int is_fatal) +{ + int r; + EINTRLOOP (r, write (job_fds[1], &token, 1)); + if (r != 1) + { + if (is_fatal) + pfatal_with_name (_("write jobserver")); + perror_with_name ("write", ""); + } +} + +unsigned int +jobserver_acquire_all () +{ + int r; + unsigned int tokens = 0; + + /* Use blocking reads to wait for all outstanding jobs. */ + set_blocking (job_fds[0], 1); + + /* Close the write side, so the read() won't hang forever. */ + close (job_fds[1]); + job_fds[1] = -1; + + while (1) + { + char intake; + EINTRLOOP (r, read (job_fds[0], &intake, 1)); + if (r != 1) + 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 && js_type == js_pipe) + { + fd_inherit (job_fds[0]); + fd_inherit (job_fds[1]); + } +} + +/* Reconfigure the jobserver after starting a child process. */ +void +jobserver_post_child (int recursive) +{ + if (recursive && js_type == js_pipe) + { + fd_noinherit (job_fds[0]); + fd_noinherit (job_fds[1]); + } +} + +void +jobserver_signal () +{ + if (job_rfd >= 0) + { + close (job_rfd); + job_rfd = -1; + } +} + +void +jobserver_pre_acquire () +{ + /* Make sure we have a dup'd FD. */ + if (job_rfd < 0 && job_fds[0] >= 0 && make_job_rfd () < 0) + pfatal_with_name (_("duping jobs pipe")); +} + +#ifdef HAVE_PSELECT + +/* Use pselect() to atomically wait for both a signal and a file descriptor. + It also provides a timeout facility so we don't need to use SIGALRM. + + This method relies on the fact that SIGCHLD will be blocked everywhere, + and only unblocked (atomically) within the pselect() call, so we can + never miss a SIGCHLD. + */ +unsigned int +jobserver_acquire (int timeout) +{ + struct timespec spec; + struct timespec *specp = NULL; + sigset_t empty; + + sigemptyset (&empty); + + if (timeout) + { + /* Alarm after one second (is this too granular?) */ + spec.tv_sec = 1; + spec.tv_nsec = 0; + specp = &spec; + } + + while (1) + { + fd_set readfds; + int r; + char intake; + + FD_ZERO (&readfds); + FD_SET (job_fds[0], &readfds); + + r = pselect (job_fds[0]+1, &readfds, NULL, NULL, specp, &empty); + if (r < 0) + switch (errno) + { + case EINTR: + /* SIGCHLD will show up as an EINTR. */ + return 0; + + 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")); + + default: + pfatal_with_name (_("pselect jobs pipe")); + } + + if (r == 0) + /* Timeout. */ + return 0; + + /* The read FD is ready: read it! This is non-blocking. */ + EINTRLOOP (r, read (job_fds[0], &intake, 1)); + + if (r < 0) + { + /* Someone sniped our token! Try again. */ + if (errno == EAGAIN) + continue; + + pfatal_with_name (_("read jobs pipe")); + } + + /* read() should never return 0: only the parent make can reap all the + tokens and close the write side...?? */ + return r > 0; + } +} + +#else + +/* This method uses a "traditional" UNIX model for waiting on both a signal + and a file descriptor. However, it's complex and since we have a SIGCHLD + handler installed we need to check ALL system calls for EINTR: painful! + + Read a token. As long as there's no token available we'll block. We + enable interruptible system calls before the read(2) so that if we get a + SIGCHLD while we're waiting, we'll return with EINTR and we can process the + death(s) and return tokens to the free pool. + + Once we return from the read, we immediately reinstate restartable system + calls. This allows us to not worry about checking for EINTR on all the + other system calls in the program. + + There is one other twist: there is a span between the time reap_children() + does its last check for dead children and the time the read(2) call is + entered, below, where if a child dies we won't notice. This is extremely + serious as it could cause us to deadlock, given the right set of events. + + To avoid this, we do the following: before we reap_children(), we dup(2) + the read FD on the jobserver pipe. The read(2) call below uses that new + FD. In the signal handler, we close that FD. That way, if a child dies + during the section mentioned above, the read(2) will be invoked with an + invalid FD and will return immediately with EBADF. */ + +static void +job_noop (int sig UNUSED) +{ +} + +/* Set the child handler action flags to FLAGS. */ +static void +set_child_handler_action_flags (int set_handler, int set_alarm) +{ + struct sigaction sa; + +#ifdef __EMX__ + /* The child handler must be turned off here. */ + signal (SIGCHLD, SIG_DFL); +#endif + + memset (&sa, '\0', sizeof sa); + sa.sa_handler = child_handler; + sa.sa_flags = set_handler ? 0 : SA_RESTART; + +#if defined SIGCHLD + if (sigaction (SIGCHLD, &sa, NULL) < 0) + pfatal_with_name ("sigaction: SIGCHLD"); +#endif + +#if defined SIGCLD && SIGCLD != SIGCHLD + if (sigaction (SIGCLD, &sa, NULL) < 0) + pfatal_with_name ("sigaction: SIGCLD"); +#endif + +#if defined SIGALRM + if (set_alarm) + { + /* If we're about to enter the read(), set an alarm to wake up in a + second so we can check if the load has dropped and we can start more + work. On the way out, turn off the alarm and set SIG_DFL. */ + if (set_handler) + { + sa.sa_handler = job_noop; + sa.sa_flags = 0; + if (sigaction (SIGALRM, &sa, NULL) < 0) + pfatal_with_name ("sigaction: SIGALRM"); + alarm (1); + } + else + { + alarm (0); + sa.sa_handler = SIG_DFL; + sa.sa_flags = 0; + if (sigaction (SIGALRM, &sa, NULL) < 0) + pfatal_with_name ("sigaction: SIGALRM"); + } + } +#endif +} + +unsigned int +jobserver_acquire (int timeout) +{ + char intake; + int got_token; + int saved_errno; + + /* Set interruptible system calls, and read() for a job token. */ + set_child_handler_action_flags (1, timeout); + + EINTRLOOP (got_token, read (job_rfd, &intake, 1)); + saved_errno = errno; + + set_child_handler_action_flags (0, timeout); + + if (got_token == 1) + return 1; + + /* If the error _wasn't_ expected (EINTR or EBADF), fatal. Otherwise, + go back and reap_children(), and try again. */ + errno = saved_errno; + + if (errno != EINTR && errno != EBADF) + pfatal_with_name (_("read jobs pipe")); + + if (errno == EBADF) + DB (DB_JOBS, ("Read returned EBADF.\n")); + + return 0; +} + +#endif /* HAVE_PSELECT */ + +#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 () +{ + static int bad_stdin = -1; + + /* Set up a bad standard input that reads from a broken pipe. */ + + if (bad_stdin == -1) + { + /* Make a file descriptor that is the read end of a broken pipe. + This will be used for some children's standard inputs. */ + int pd[2]; + if (pipe (pd) == 0) + { + /* Close the write side. */ + close (pd[1]); + /* Save the read side. */ + bad_stdin = pd[0]; + + /* Set the descriptor to close on exec, so it does not litter any + child's descriptor table. When it is dup2'd onto descriptor 0, + that descriptor will not close on exec. */ + fd_noinherit (bad_stdin); + } + } + + return bad_stdin; +} + +/* Set file descriptors to be inherited / not inherited by subprocesses. */ + +#if !defined(F_SETFD) || !defined(F_GETFD) +void fd_inherit (int fd) {} +void fd_noinherit (int fd) {} + +#else + +# ifndef FD_CLOEXEC +# define FD_CLOEXEC 1 +# endif + +void +fd_inherit (int fd) +{ + int flags; + EINTRLOOP (flags, fcntl (fd, F_GETFD)); + if (flags >= 0) + { + int r; + flags &= ~FD_CLOEXEC; + EINTRLOOP (r, fcntl (fd, F_SETFD, flags)); + } +} + +void +fd_noinherit (int fd) +{ + int flags; + EINTRLOOP (flags, fcntl(fd, F_GETFD)); + if (flags >= 0) + { + int r; + flags |= FD_CLOEXEC; + 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/local/recipes/dev/gnu-make/source/src/read.c b/local/recipes/dev/gnu-make/source/src/read.c new file mode 100644 index 0000000000..0743124087 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/read.c @@ -0,0 +1,3546 @@ +/* Reading and parsing of makefiles for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include + +#include "filedef.h" +#include "dep.h" +#include "job.h" +#include "os.h" +#include "commands.h" +#include "variable.h" +#include "rule.h" +#include "debug.h" +#include "hash.h" + + +#ifdef WINDOWS32 +#include +#include "sub_proc.h" +#else /* !WINDOWS32 */ +#ifndef _AMIGA +#ifndef VMS +#include +#else +struct passwd *getpwnam (char *name); +#endif +#endif +#endif /* !WINDOWS32 */ + +/* A 'struct ebuffer' controls the origin of the makefile we are currently + eval'ing. +*/ + +struct ebuffer + { + char *buffer; /* Start of the current line in the buffer. */ + char *bufnext; /* Start of the next line in the buffer. */ + char *bufstart; /* Start of the entire buffer. */ + size_t size; /* Malloc'd size of buffer. */ + FILE *fp; /* File, or NULL if this is an internal buffer. */ + floc floc; /* Info on the file in fp (if any). */ + }; + +/* Track the modifiers we can have on variable assignments */ + +struct vmodifiers + { + unsigned int assign_v:1; + unsigned int define_v:1; + unsigned int undefine_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. */ +enum make_word_type + { + w_bogus, w_eol, w_static, w_variable, w_colon, w_dcolon, w_semicolon, + w_varassign, w_ampcolon, w_ampdcolon + }; + + +/* A 'struct conditionals' contains the information describing + all the active conditionals in a makefile. + + The global variable 'conditionals' contains the conditionals + information for the current makefile. It is initialized from + the static structure 'toplevel_conditionals' and is later changed + to new structures for included makefiles. */ + +struct conditionals + { + unsigned int if_cmds; /* Depth of conditional nesting. */ + unsigned int allocated; /* Elts allocated in following arrays. */ + char *ignoring; /* Are we ignoring or interpreting? + 0=interpreting, 1=not yet interpreted, + 2=already interpreted */ + char *seen_else; /* Have we already seen an 'else'? */ + }; + +static struct conditionals toplevel_conditionals; +static struct conditionals *conditionals = &toplevel_conditionals; + + +/* Default directories to search for include files in */ + +static const char *default_include_directories[] = + { +#if defined(WINDOWS32) && !defined(INCLUDEDIR) +/* This completely up to the user when they install MSVC or other packages. + This is defined as a placeholder. */ +# define INCLUDEDIR "." +#endif +#if defined(INCLUDEDIR) + INCLUDEDIR, +#endif +#ifndef _AMIGA + "/usr/gnu/include", + "/usr/local/include", + "/usr/include", +#endif + 0 + }; + +/* List of directories to search for include files in */ + +static const char **include_directories; + +/* Maximum length of an element of the above. */ + +static size_t max_incl_len; + +/* The filename and pointer to line number of the + makefile currently being read in. */ + +const floc *reading_file = 0; + +/* The chain of files read by read_all_makefiles. */ + +static struct goaldep *read_files = 0; + +static struct goaldep *eval_makefile (const char *filename, unsigned short flags); +static void eval (struct ebuffer *buffer, int flags); + +static long readline (struct ebuffer *ebuf); +static void do_undefine (char *name, enum variable_origin origin, + struct ebuffer *ebuf); +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, + unsigned int cmds_started, char *commands, + size_t commands_idx, int two_colon, + char prefix, const floc *flocp); +static void record_target_var (struct nameseq *filenames, char *defn, + enum variable_origin origin, + struct vmodifiers *vmod, + const floc *flocp); +static enum make_word_type get_next_mword (char *buffer, + char **startp, size_t *length); +static void remove_comments (char *line); +static char *find_map_unquote (char *string, int map); +static char *find_char_unquote (char *string, int stop); +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) && memcmp (s, p, CSTRLEN (s)) == 0) + + +/* Read in all the makefiles and return a chain of targets to rebuild. */ + +struct goaldep * +read_all_makefiles (const char **makefiles) +{ + unsigned int num_makefiles = 0; + + /* Create *_LIST variables, to hold the makefiles, targets, and variables + we will be reading. */ + + define_variable_cname ("MAKEFILE_LIST", "", o_file, 0); + + DB (DB_BASIC, (_("Reading makefiles...\n"))); + + /* If there's a non-null variable MAKEFILES, its value is a list of + files to read first thing. But don't let it prevent reading the + default makefiles and don't let the default goal come from there. */ + + { + char *value; + char *name, *p; + size_t length; + + { + /* Turn off --warn-undefined-variables while we expand MAKEFILES. */ + int save = warn_undefined_variables_flag; + warn_undefined_variables_flag = 0; + + value = allocated_variable_expand ("$(MAKEFILES)"); + + warn_undefined_variables_flag = save; + } + + /* Set NAME to the start of next token and LENGTH to its length. + MAKEFILES is updated for finding remaining tokens. */ + p = value; + + while ((name = find_next_token ((const char **)&p, &length)) != 0) + { + if (*p != '\0') + *p++ = '\0'; + eval_makefile (strcache_add (name), RM_NO_DEFAULT_GOAL|RM_INCLUDED|RM_DONTCARE); + } + + free (value); + } + + /* Read makefiles specified with -f switches. */ + + if (makefiles != 0) + while (*makefiles != 0) + { + struct goaldep *d = eval_makefile (*makefiles, 0); + + if (errno) + perror_with_name ("", *makefiles); + + /* Reuse the storage allocated for the read_file. */ + *makefiles = dep_name (d); + ++num_makefiles; + ++makefiles; + } + + /* If there were no -f switches, try the default names. */ + + if (num_makefiles == 0) + { + static const char *default_makefiles[] = +#ifdef VMS + /* all lower case since readdir() (the vms version) 'lowercasifies' */ + /* TODO: Above is not always true, this needs more work */ + { "makefile.vms", "gnumakefile", "makefile", 0 }; +#else +#ifdef _AMIGA + { "GNUmakefile", "Makefile", "SMakefile", 0 }; +#else /* !Amiga && !VMS */ +#ifdef WINDOWS32 + { "GNUmakefile", "makefile", "Makefile", "makefile.mak", 0 }; +#else /* !Amiga && !VMS && !WINDOWS32 */ + { "GNUmakefile", "makefile", "Makefile", 0 }; +#endif /* !Amiga && !VMS && !WINDOWS32 */ +#endif /* AMIGA */ +#endif /* VMS */ + const char **p = default_makefiles; + while (*p != 0 && !file_exists_p (*p)) + ++p; + + if (*p != 0) + { + eval_makefile (*p, 0); + if (errno) + perror_with_name ("", *p); + } + else + { + /* No default makefile was found. Add the default makefiles to the + 'read_files' chain so they will be updated if possible. */ + for (p = default_makefiles; *p != 0; ++p) + { + struct goaldep *d = alloc_goaldep (); + d->file = enter_file (strcache_add (*p)); + /* 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; + d->next = read_files; + read_files = d; + } + } + } + + return read_files; +} + +/* Install a new conditional and return the previous one. */ + +static struct conditionals * +install_conditionals (struct conditionals *new) +{ + struct conditionals *save = conditionals; + + memset (new, '\0', sizeof (*new)); + conditionals = new; + + return save; +} + +/* Free the current conditionals and reinstate a saved one. */ + +static void +restore_conditionals (struct conditionals *saved) +{ + /* Free any space allocated by conditional_line. */ + free (conditionals->ignoring); + free (conditionals->seen_else); + + /* Restore state. */ + conditionals = saved; +} + +static struct goaldep * +eval_makefile (const char *filename, unsigned short flags) +{ + struct goaldep *deps; + struct ebuffer ebuf; + const floc *curfile; + char *expanded = 0; + + /* Create a new goaldep entry. */ + deps = alloc_goaldep (); + deps->next = read_files; + read_files = deps; + + ebuf.floc.filenm = filename; /* Use the original file name. */ + ebuf.floc.lineno = 1; + ebuf.floc.offset = 0; + + if (ISDB (DB_VERBOSE)) + { + printf (_("Reading makefile '%s'"), filename); + if (flags & RM_NO_DEFAULT_GOAL) + printf (_(" (no default goal)")); + if (flags & RM_INCLUDED) + printf (_(" (search path)")); + if (flags & RM_DONTCARE) + printf (_(" (don't care)")); + if (flags & RM_NO_TILDE) + printf (_(" (no ~ expansion)")); + puts ("..."); + } + + /* First, get a stream to read. */ + + /* Expand ~ in FILENAME unless it came from 'include', + in which case it was already done. */ + if (!(flags & RM_NO_TILDE) && filename[0] == '~') + { + expanded = tilde_expand (filename); + if (expanded != 0) + filename = expanded; + } + + errno = 0; + ENULLLOOP (ebuf.fp, fopen (filename, "r")); + deps->error = errno; + + /* Check for unrecoverable errors: out of mem or FILE slots. */ + switch (deps->error) + { +#ifdef EMFILE + case EMFILE: +#endif +#ifdef ENFILE + case ENFILE: +#endif + case ENOMEM: + { + const char *err = strerror (deps->error); + OS (fatal, reading_file, "%s", err); + } + } + + /* 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) + { + const char **dir; + for (dir = include_directories; *dir != NULL; ++dir) + { + 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; + } + } + } + + /* Enter the final name for this makefile as a goaldep. */ + filename = strcache_add (filename); + deps->file = lookup_file (filename); + if (deps->file == 0) + deps->file = enter_file (filename); + filename = deps->file->name; + deps->flags = flags; + + free (expanded); + + if (ebuf.fp == 0) + { + /* The makefile can't be read at all, give up entirely. + If we did some searching errno has the error from the last attempt, + rather from FILENAME itself: recover the more accurate one. */ + errno = deps->error; + deps->file->last_mtime = NONEXISTENT_MTIME; + return deps; + } + + /* 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)); + + /* Add this makefile to the list. */ + do_variable_definition (&ebuf.floc, "MAKEFILE_LIST", filename, o_file, + f_append_value, 0); + + /* Evaluate the makefile */ + + ebuf.size = 200; + ebuf.buffer = ebuf.bufnext = ebuf.bufstart = xmalloc (ebuf.size); + + curfile = reading_file; + reading_file = &ebuf.floc; + + eval (&ebuf, !(flags & RM_NO_DEFAULT_GOAL)); + + reading_file = curfile; + + fclose (ebuf.fp); + + free (ebuf.bufstart); + free_alloca (); + + errno = 0; + return deps; +} + +void +eval_buffer (char *buffer, const floc *flocp) +{ + struct ebuffer ebuf; + struct conditionals *saved; + struct conditionals new; + const floc *curfile; + + /* Evaluate the buffer */ + + ebuf.size = strlen (buffer); + ebuf.buffer = ebuf.bufnext = ebuf.bufstart = buffer; + ebuf.fp = NULL; + + if (flocp) + ebuf.floc = *flocp; + else if (reading_file) + ebuf.floc = *reading_file; + else + { + ebuf.floc.filenm = NULL; + ebuf.floc.lineno = 1; + ebuf.floc.offset = 0; + } + + curfile = reading_file; + reading_file = &ebuf.floc; + + saved = install_conditionals (&new); + + eval (&ebuf, 1); + + restore_conditionals (saved); + + reading_file = curfile; + + free_alloca (); +} + +/* Check LINE to see if it's a variable assignment or undefine. + + It might use one of the modifiers "export", "override", "private", or it + might be one of the conditional tokens like "ifdef", "include", etc. + + If it's not a variable assignment or undefine, VMOD.V_ASSIGN is 0. + Returns LINE. + + Returns a pointer to the first non-modifier character, and sets VMOD + based on the modifiers found if any, plus V_ASSIGN is 1. + */ +static char * +parse_var_assignment (const char *line, int targvar, struct vmodifiers *vmod) +{ + const char *p; + memset (vmod, '\0', sizeof (*vmod)); + + /* Find the start of the next token. If there isn't one we're done. */ + NEXT_TOKEN (line); + if (*line == '\0') + return (char *) line; + + p = line; + while (1) + { + size_t wlen; + const char *p2; + struct variable v; + + p2 = parse_variable_definition (p, &v); + + /* If this is a variable assignment, we're done. */ + if (p2) + break; + + /* It's not a variable; see if it's a modifier. */ + p2 = end_of_token (p); + wlen = p2 - p; + + if (word1eq ("export")) + 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 (!targvar && word1eq ("define")) + { + /* We can't have modifiers after 'define' */ + vmod->define_v = 1; + p = next_token (p2); + break; + } + else if (!targvar && word1eq ("undefine")) + { + /* We can't have modifiers after 'undefine' */ + vmod->undefine_v = 1; + p = next_token (p2); + break; + } + else + /* Not a variable or modifier: this is not a variable assignment. */ + return (char *) line; + + /* It was a modifier. Try the next word. */ + p = next_token (p2); + if (*p == '\0') + return (char *) line; + } + + /* Found a variable assignment or undefine. */ + vmod->assign_v = 1; + return (char *)p; +} + + +/* Read file FILENAME as a makefile and add its contents to the data base. + + SET_DEFAULT is true if we are allowed to set the default goal. */ + +static void +eval (struct ebuffer *ebuf, int set_default) +{ + char *collapsed = 0; + size_t collapsed_length = 0; + size_t commands_len = 200; + char *commands; + size_t commands_idx = 0; + unsigned int cmds_started, tgts_started; + int ignoring = 0, in_ignored_define = 0; + int no_targets = 0; /* Set when reading a rule without targets. */ + int also_make_targets = 0; /* Set when reading grouped targets. */ + struct nameseq *filenames = 0; + char *depstr = 0; + long nlines = 0; + int two_colon = 0; + char prefix = cmd_prefix; + const char *pattern = 0; + const char *pattern_percent; + floc *fstart; + floc fi; + +#define record_waiting_files() \ + do \ + { \ + if (filenames != 0) \ + { \ + fi.lineno = tgts_started; \ + fi.offset = 0; \ + record_files (filenames, also_make_targets, pattern, \ + pattern_percent, depstr, \ + cmds_started, commands, commands_idx, two_colon, \ + prefix, &fi); \ + filenames = 0; \ + } \ + commands_idx = 0; \ + no_targets = 0; \ + pattern = 0; \ + also_make_targets = 0; \ + } while (0) + + pattern_percent = 0; + cmds_started = tgts_started = 1; + + fstart = &ebuf->floc; + fi.filenm = ebuf->floc.filenm; + + /* Loop over lines in the file. + The strategy is to accumulate target names in FILENAMES, dependencies + in DEPS and commands in COMMANDS. These are used to define a rule + when the start of the next rule (or eof) is encountered. + + When you see a "continue" in the loop below, that means we are moving on + to the next line. If you see record_waiting_files(), then the statement + we are parsing also finishes the previous rule. */ + + commands = xmalloc (200); + + while (1) + { + size_t linelen; + char *line; + size_t wlen; + char *p; + char *p2; + struct vmodifiers vmod; + + /* At the top of this loop, we are starting a brand new line. */ + /* Grab the next line to be evaluated */ + ebuf->floc.lineno += nlines; + nlines = readline (ebuf); + + /* If there is nothing left to eval, we're done. */ + if (nlines < 0) + break; + + line = ebuf->buffer; + + /* If this is the first line, check for a UTF-8 BOM and skip it. */ + if (ebuf->floc.lineno == 1) + { + unsigned char *ul = (unsigned char *) line; + if (ul[0] == 0xEF && ul[1] == 0xBB && ul[2] == 0xBF) + { + line += 3; + if (ISDB(DB_BASIC)) + { + if (ebuf->floc.filenm) + printf (_("Skipping UTF-8 BOM in makefile '%s'\n"), + ebuf->floc.filenm); + else + printf (_("Skipping UTF-8 BOM in makefile buffer\n")); + } + } + } + /* If this line is empty, skip it. */ + if (line[0] == '\0') + continue; + + linelen = strlen (line); + + /* Check for a shell command line first. + If it is not one, we can stop treating cmd_prefix specially. */ + if (line[0] == cmd_prefix) + { + if (no_targets) + /* Ignore the commands in a rule with no targets. */ + continue; + + /* If there is no preceding rule line, don't treat this line + as a command, even though it begins with a recipe prefix. + SunOS 4 make appears to behave this way. */ + + if (filenames != 0) + { + if (ignoring) + /* Yep, this is a shell command, and we don't care. */ + continue; + + if (commands_idx == 0) + cmds_started = ebuf->floc.lineno; + + /* Append this command line to the line being accumulated. + Skip the initial command prefix character. */ + if (linelen + commands_idx > commands_len) + { + commands_len = (linelen + commands_idx) * 2; + commands = xrealloc (commands, commands_len); + } + memcpy (&commands[commands_idx], line + 1, linelen - 1); + commands_idx += linelen - 1; + commands[commands_idx++] = '\n'; + continue; + } + } + + /* This line is not a shell command line. Don't worry about whitespace. + Get more space if we need it; we don't need to preserve the current + contents of the buffer. */ + + if (collapsed_length < linelen+1) + { + collapsed_length = linelen+1; + free (collapsed); + /* Don't need xrealloc: we don't need to preserve the content. */ + collapsed = xmalloc (collapsed_length); + } + strcpy (collapsed, line); + /* Collapse continuation lines. */ + collapse_continuations (collapsed); + remove_comments (collapsed); + + /* Get rid if starting space (including formfeed, vtab, etc.) */ + p = collapsed; + NEXT_TOKEN (p); + + /* 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, 0, &vmod); + if (vmod.assign_v) + { + struct variable *v; + enum variable_origin origin = vmod.override_v ? o_override : o_file; + + /* If we're ignoring then we're done now. */ + if (ignoring) + { + if (vmod.define_v) + in_ignored_define = 1; + continue; + } + + /* Variable assignment ends the previous rule. */ + record_waiting_files (); + + if (vmod.undefine_v) + { + do_undefine (p, origin, ebuf); + continue; + } + else if (vmod.define_v) + v = do_define (p, origin, ebuf); + else + v = try_variable_definition (fstart, p, origin, 0); + + assert (v != NULL); + + if (vmod.export_v != v_default) + v->export = vmod.export_v; + if (vmod.private_v) + v->private_var = 1; + + /* This line has been dealt with. */ + continue; + } + + /* If this line is completely empty, ignore it. */ + if (*p == '\0') + continue; + + p2 = end_of_token (p); + wlen = p2 - p; + NEXT_TOKEN (p2); + + /* If we're in an ignored define, skip this line (but maybe get out). */ + if (in_ignored_define) + { + /* See if this is an endef line (plus optional comment). */ + if (word1eq ("endef") && STOP_SET (*p2, MAP_COMMENT|MAP_NUL)) + in_ignored_define = 0; + + continue; + } + + /* Check for conditional state changes. */ + { + int i = conditional_line (p, wlen, fstart); + if (i != -2) + { + if (i == -1) + O (fatal, fstart, _("invalid syntax in conditional")); + + ignoring = i; + continue; + } + } + + /* Nothing to see here... move along. */ + if (ignoring) + continue; + + /* Manage the "export" keyword used outside of variable assignment + as well as "unexport". */ + if (word1eq ("export") || word1eq ("unexport")) + { + int exporting = *p == 'u' ? 0 : 1; + + /* Export/unexport ends the previous rule. */ + record_waiting_files (); + + /* (un)export by itself causes everything to be (un)exported. */ + if (*p2 == '\0') + export_all_variables = exporting; + else + { + size_t l; + const char *cp; + char *ap; + + /* Expand the line so we can use indirect and constructed + variable names in an (un)export command. */ + cp = ap = allocated_variable_expand (p2); + + for (p = find_next_token (&cp, &l); p != 0; + p = find_next_token (&cp, &l)) + { + struct variable *v = lookup_variable (p, l); + if (v == 0) + v = define_variable_global (p, l, "", o_file, 0, fstart); + v->export = exporting ? v_export : v_noexport; + } + + free (ap); + } + continue; + } + + /* Handle the special syntax for vpath. */ + if (word1eq ("vpath")) + { + const char *cp; + char *vpat; + size_t l; + + /* vpath ends the previous rule. */ + record_waiting_files (); + + cp = variable_expand (p2); + p = find_next_token (&cp, &l); + if (p != 0) + { + vpat = xstrndup (p, l); + p = find_next_token (&cp, &l); + /* No searchpath means remove all previous + selective VPATH's with the same pattern. */ + } + else + /* No pattern means remove all previous selective VPATH's. */ + vpat = 0; + construct_vpath_list (vpat, p); + free (vpat); + + continue; + } + + /* Handle include and variants. */ + if (word1eq ("include") || word1eq ("-include") || word1eq ("sinclude")) + { + /* We have found an 'include' line specifying a nested + makefile to be read at this point. */ + struct conditionals *save; + struct conditionals new_conditionals; + struct nameseq *files; + /* "-include" (vs "include") says no error if the file does not + exist. "sinclude" is an alias for this from SGI. */ + int noerror = (p[0] != 'i'); + + /* Include ends the previous rule. */ + record_waiting_files (); + + p = allocated_variable_expand (p2); + + /* If no filenames, it's a no-op. */ + if (*p == '\0') + { + free (p); + continue; + } + + /* Parse the list of file names. Don't expand archive references! */ + p2 = p; + files = PARSE_FILE_SEQ (&p2, struct nameseq, MAP_NUL, NULL, + PARSEFS_NOAR); + free (p); + + /* Save the state of conditionals and start + the included makefile with a clean slate. */ + save = install_conditionals (&new_conditionals); + + /* Record the rules that are waiting so they will determine + the default goal before those in the included makefile. */ + record_waiting_files (); + + /* Read each included makefile. */ + while (files != 0) + { + struct nameseq *next = files->next; + unsigned short flags = (RM_INCLUDED | RM_NO_TILDE + | (noerror ? RM_DONTCARE : 0) + | (set_default ? 0 : RM_NO_DEFAULT_GOAL)); + + struct goaldep *d = eval_makefile (files->name, flags); + d->floc = *fstart; + + free_ns (files); + files = next; + } + + /* Restore conditional state. */ + restore_conditionals (save); + + continue; + } + + /* Handle the load operations. */ + if (word1eq ("load") || word1eq ("-load")) + { + /* A 'load' line specifies a dynamic object to load. */ + struct nameseq *files; + int noerror = (p[0] == '-'); + + /* Load ends the previous rule. */ + record_waiting_files (); + + p = allocated_variable_expand (p2); + + /* If no filenames, it's a no-op. */ + if (*p == '\0') + { + free (p); + continue; + } + + /* Parse the list of file names. + Don't expand archive references or strip "./" */ + p2 = p; + files = PARSE_FILE_SEQ (&p2, struct nameseq, MAP_NUL, NULL, + PARSEFS_NOAR); + free (p); + + /* Load each file. */ + while (files != 0) + { + struct nameseq *next = files->next; + const char *name = files->name; + struct goaldep *deps; + struct file *f; + int r; + + { + 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 don't ever try to rebuild. */ + if (r == -1) + continue; + + /* 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 = f; + } + + continue; + } + + /* This line starts with a tab but was not caught above because there + was no preceding target, and the line might have been usable as a + variable definition. But now we know it is definitely lossage. */ + if (line[0] == cmd_prefix) + O (fatal, fstart, _("recipe commences before first target")); + + /* This line describes some target files. This is complicated by + the existence of target-specific variables, because we can't + expand the entire line until we know if we have one or not. So + we expand the line word by word until we find the first ':', + then check to see if it's a target-specific variable. + + In this algorithm, 'lb_next' will point to the beginning of the + unexpanded parts of the input buffer, while 'p2' points to the + parts of the expanded buffer we haven't searched yet. */ + + { + enum make_word_type wtype; + char *cmdleft, *semip = 0, *lb_next; + size_t plen = 0; + char *colonp; + const char *end, *beg; /* Helpers for whitespace stripping. */ + + /* Record the previous rule. */ + + record_waiting_files (); + tgts_started = fstart->lineno; + + /* Search the line for an unquoted ; that is not after an + unquoted #. */ + cmdleft = find_map_unquote (line, MAP_SEMI|MAP_COMMENT|MAP_VARIABLE); + if (cmdleft != 0 && *cmdleft == '#') + { + /* We found a comment before a semicolon. */ + *cmdleft = '\0'; + cmdleft = 0; + } + else if (cmdleft != 0) + { + /* Found one. Cut the line short there before expanding it. */ + semip = cmdleft++; + *semip = '\0'; + } + + collapse_continuations (line); + + /* We can't expand the entire line, since if it's a per-target + variable we don't want to expand it. So, walk from the + beginning, expanding as we go, and looking for "interesting" + chars. The first word is always expandable. */ + wtype = get_next_mword (line, &lb_next, &wlen); + switch (wtype) + { + case w_eol: + if (cmdleft != 0) + O (fatal, fstart, _("missing rule before recipe")); + /* This line contained something but turned out to be nothing + but whitespace (a comment?). */ + continue; + + case w_colon: + case w_dcolon: + case w_ampcolon: + case w_ampdcolon: + /* We accept and ignore rules without targets for + compatibility with SunOS 4 make. */ + no_targets = 1; + continue; + + default: + break; + } + + p2 = variable_expand_string (NULL, lb_next, wlen); + + while (1) + { + lb_next += wlen; + if (cmdleft == 0) + { + /* Look for a semicolon in the expanded line. */ + cmdleft = find_char_unquote (p2, ';'); + + if (cmdleft != 0) + { + size_t p2_off = p2 - variable_buffer; + size_t cmd_off = cmdleft - variable_buffer; + char *pend = p2 + strlen (p2); + + /* Append any remnants of lb, then cut the line short + at the semicolon. */ + *cmdleft = '\0'; + + /* One school of thought says that you shouldn't expand + here, but merely copy, since now you're beyond a ";" + and into a command script. However, the old parser + expanded the whole line, so we continue that for + backwards-compatibility. Also, it wouldn't be + entirely consistent, since we do an unconditional + expand below once we know we don't have a + target-specific variable. */ + variable_expand_string (pend, lb_next, SIZE_MAX); + lb_next += strlen (lb_next); + p2 = variable_buffer + p2_off; + cmdleft = variable_buffer + cmd_off + 1; + } + } + + colonp = find_char_unquote (p2, ':'); + +#ifdef HAVE_DOS_PATHS + if (colonp > p2) + /* The drive spec brain-damage strikes again... + 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 && ISDIRSEP (colonp[1]) && + isalpha ((unsigned char) colonp[-1]) && + (colonp == p2 + 1 || strchr (" \t(", colonp[-2]) != 0)) + colonp = find_char_unquote (colonp + 1, ':'); +#endif + + if (colonp) + { + /* If the previous character is '&', back up before '&:' */ + if (colonp > p2 && colonp[-1] == '&') + --colonp; + + break; + } + + wtype = get_next_mword (lb_next, &lb_next, &wlen); + if (wtype == w_eol) + break; + + p2 += strlen (p2); + *(p2++) = ' '; + p2 = variable_expand_string (p2, lb_next, wlen); + /* We don't need to worry about cmdleft here, because if it was + found in the variable_buffer the entire buffer has already + been expanded... we'll never get here. */ + } + + p2 = next_token (variable_buffer); + + /* If the word we're looking at is EOL, see if there's _anything_ + on the line. If not, a variable expanded to nothing, so ignore + it. If so, we can't parse this line so punt. */ + if (wtype == w_eol) + { + if (*p2 == '\0') + continue; + + /* There's no need to be ivory-tower about this: check for + one of the most common bugs found in makefiles... */ + if (cmd_prefix == '\t' && strneq (line, " ", 8)) + O (fatal, fstart, _("missing separator (did you mean TAB instead of 8 spaces?)")); + else + O (fatal, fstart, _("missing separator")); + } + + { + char save = *colonp; + + /* If we have &:, it specifies that the targets are understood to be + updated/created together by a single invocation of the recipe. */ + if (save == '&') + also_make_targets = 1; + + /* Make the colon the end-of-string so we know where to stop + looking for targets. Start there again once we're done. */ + *colonp = '\0'; + filenames = PARSE_SIMPLE_SEQ (&p2, struct nameseq); + *colonp = save; + p2 = colonp + (save == '&'); + } + + if (!filenames) + { + /* We accept and ignore rules without targets for + compatibility with SunOS 4 make. */ + no_targets = 1; + continue; + } + /* This should never be possible; we handled it above. */ + assert (*p2 != '\0'); + ++p2; + + /* Is this a one-colon or two-colon entry? */ + two_colon = *p2 == ':'; + if (two_colon) + p2++; + + /* Test to see if it's a target-specific variable. Copy the rest + of the buffer over, possibly temporarily (we'll expand it later + if it's not a target-specific variable). PLEN saves the length + of the unparsed section of p2, for later. */ + if (*lb_next != '\0') + { + size_t l = p2 - variable_buffer; + plen = strlen (p2); + variable_buffer_output (p2+plen, lb_next, strlen (lb_next)+1); + p2 = variable_buffer + l; + } + + p2 = parse_var_assignment (p2, 1, &vmod); + if (vmod.assign_v) + { + /* If there was a semicolon found, add it back, plus anything + after it. */ + if (semip) + { + size_t l = p2 - variable_buffer; + *semip = ';'; + collapse_continuations (semip); + variable_buffer_output (p2 + strlen (p2), + semip, strlen (semip)+1); + p2 = variable_buffer + l; + } + record_target_var (filenames, p2, + vmod.override_v ? o_override : o_file, + &vmod, fstart); + filenames = 0; + continue; + } + + /* This is a normal target, _not_ a target-specific variable. + Unquote any = in the dependency list. */ + find_char_unquote (lb_next, '='); + + /* Remember the command prefix for this target. */ + prefix = cmd_prefix; + + /* We have some targets, so don't ignore the following commands. */ + no_targets = 0; + + /* Expand the dependencies, etc. */ + if (*lb_next != '\0') + { + size_t l = p2 - variable_buffer; + variable_expand_string (p2 + plen, lb_next, SIZE_MAX); + p2 = variable_buffer + l; + + /* Look for a semicolon in the expanded line. */ + if (cmdleft == 0) + { + cmdleft = find_char_unquote (p2, ';'); + if (cmdleft != 0) + *(cmdleft++) = '\0'; + } + } + + /* Is this a static pattern rule: 'target: %targ: %dep; ...'? */ + p = strchr (p2, ':'); + while (p != 0 && p[-1] == '\\') + { + char *q = &p[-1]; + int backslash = 0; + while (*q-- == '\\') + backslash = !backslash; + if (backslash) + p = strchr (p + 1, ':'); + else + break; + } +#ifdef _AMIGA + /* Here, the situation is quite complicated. Let's have a look + at a couple of targets: + + install: dev:make + + dev:make: make + + dev:make:: xyz + + The rule is that it's only a target, if there are TWO :'s + OR a space around the :. + */ + if (p && !(ISSPACE (p[1]) || !p[1] || ISSPACE (p[-1]))) + p = 0; +#endif +#ifdef HAVE_DOS_PATHS + { + int check_again; + do { + check_again = 0; + /* For DOS-style paths, skip a "C:\..." or a "C:/..." */ + 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; + } + } while (check_again); + } +#endif + if (p != 0) + { + struct nameseq *target; + target = PARSE_FILE_SEQ (&p2, struct nameseq, MAP_COLON, NULL, + PARSEFS_NOGLOB); + ++p2; + if (target == 0) + O (fatal, fstart, _("missing target pattern")); + else if (target->next != 0) + O (fatal, fstart, _("multiple target patterns")); + pattern_percent = find_percent_cached (&target->name); + pattern = target->name; + if (pattern_percent == 0) + O (fatal, fstart, _("target pattern contains no '%%'")); + free_ns (target); + } + else + pattern = 0; + + /* Strip leading and trailing whitespaces. */ + beg = p2; + end = beg + strlen (beg) - 1; + strip_whitespace (&beg, &end); + + /* Put all the prerequisites here; they'll be parsed later. */ + if (beg <= end && *beg != '\0') + depstr = xstrndup (beg, end - beg + 1); + else + depstr = 0; + + commands_idx = 0; + if (cmdleft != 0) + { + /* Semicolon means rest of line is a command. */ + size_t l = strlen (cmdleft); + + cmds_started = fstart->lineno; + + /* Add this command line to the buffer. */ + if (l + 2 > commands_len) + { + commands_len = (l + 2) * 2; + commands = xrealloc (commands, commands_len); + } + memcpy (commands, cmdleft, l); + commands_idx += l; + commands[commands_idx++] = '\n'; + } + + check_specials (filenames, set_default); + } + } + +#undef word1eq + + if (conditionals->if_cmds) + O (fatal, fstart, _("missing 'endif'")); + + /* At eof, record the last rule. */ + record_waiting_files (); + + free (collapsed); + free (commands); +} + + +/* Remove comments from LINE. + This will also remove backslashes that escape things. + It ignores comment characters that appear inside variable references. */ + +static void +remove_comments (char *line) +{ + char *comment; + + comment = find_map_unquote (line, MAP_COMMENT|MAP_VARIABLE); + + if (comment != 0) + /* Cut off the line at the #. */ + *comment = '\0'; +} + +/* Execute a 'undefine' directive. + The undefine line has already been read, and NAME is the name of + the variable to be undefined. */ + +static void +do_undefine (char *name, enum variable_origin origin, struct ebuffer *ebuf) +{ + char *p, *var; + + /* Expand the variable name and find the beginning (NAME) and end. */ + var = allocated_variable_expand (name); + name = next_token (var); + if (*name == '\0') + O (fatal, &ebuf->floc, _("empty variable name")); + p = name + strlen (name) - 1; + while (p > name && ISBLANK (*p)) + --p; + p[1] = '\0'; + + undefine_variable_global (name, p - name + 1, origin); + free (var); +} + +/* Execute a 'define' directive. + The first line has already been read, and NAME is the name of + the variable to be defined. The following lines remain to be read. */ + +static struct variable * +do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf) +{ + struct variable *v; + struct variable var; + floc defstart; + int nlevels = 1; + size_t length = 100; + char *definition = xmalloc (length); + size_t idx = 0; + char *p, *n; + + defstart = ebuf->floc; + + p = parse_variable_definition (name, &var); + if (p == NULL) + /* No assignment token, so assume recursive. */ + var.flavor = f_recursive; + else + { + if (var.value[0] != '\0') + O (error, &defstart, _("extraneous text after 'define' directive")); + + /* Chop the string before the assignment token to get the name. */ + var.name[var.length] = '\0'; + } + + /* Expand the variable name and find the beginning (NAME) and end. */ + n = allocated_variable_expand (name); + name = next_token (n); + if (name[0] == '\0') + O (fatal, &defstart, _("empty variable name")); + p = name + strlen (name) - 1; + while (p > name && ISBLANK (*p)) + --p; + p[1] = '\0'; + + /* Now read the value of the variable. */ + while (1) + { + size_t len; + char *line; + long nlines = readline (ebuf); + + /* If there is nothing left to be eval'd, there's no 'endef'!! */ + if (nlines < 0) + O (fatal, &defstart, _("missing 'endef', unterminated 'define'")); + + ebuf->floc.lineno += nlines; + line = ebuf->buffer; + + collapse_continuations (line); + + /* If the line doesn't begin with a tab, test to see if it introduces + another define, or ends one. Stop if we find an 'endef' */ + if (line[0] != cmd_prefix) + { + p = next_token (line); + len = strlen (p); + + /* If this is another 'define', increment the level count. */ + if ((len == 6 || (len > 6 && ISBLANK (p[6]))) + && strneq (p, "define", 6)) + ++nlevels; + + /* If this is an 'endef', decrement the count. If it's now 0, + we've found the last one. */ + else if ((len == 5 || (len > 5 && ISBLANK (p[5]))) + && strneq (p, "endef", 5)) + { + p += 5; + remove_comments (p); + if (*(next_token (p)) != '\0') + O (error, &ebuf->floc, + _("extraneous text after 'endef' directive")); + + if (--nlevels == 0) + break; + } + } + + /* Add this line to the variable definition. */ + len = strlen (line); + if (idx + len + 1 > length) + { + length = (idx + len) * 2; + definition = xrealloc (definition, length + 1); + } + + memcpy (&definition[idx], line, len); + idx += len; + /* Separate lines with a newline. */ + definition[idx++] = '\n'; + } + + /* We've got what we need; define the variable. */ + if (idx == 0) + definition[0] = '\0'; + else + definition[idx - 1] = '\0'; + + v = do_variable_definition (&defstart, name, + definition, origin, var.flavor, 0); + free (definition); + free (n); + return (v); +} + +/* Interpret conditional commands "ifdef", "ifndef", "ifeq", + "ifneq", "else" and "endif". + LINE is the input line, with the command as its first word. + + FILENAME and LINENO are the filename and line number in the + current makefile. They are used for error messages. + + Value is -2 if the line is not a conditional at all, + -1 if the line is an invalid conditional, + 0 if following text should be interpreted, + 1 if following text should be ignored. */ + +static int +conditional_line (char *line, size_t len, const floc *flocp) +{ + const char *cmdname; + enum { c_ifdef, c_ifndef, c_ifeq, c_ifneq, c_else, c_endif } cmdtype; + unsigned int i; + unsigned int o; + + /* Compare a word, both length and contents. */ +#define word1eq(s) (len == CSTRLEN (s) && strneq (s, line, CSTRLEN (s))) +#define chkword(s, t) if (word1eq (s)) { cmdtype = (t); cmdname = (s); } + + /* Make sure this line is a conditional. */ + chkword ("ifdef", c_ifdef) + else chkword ("ifndef", c_ifndef) + else chkword ("ifeq", c_ifeq) + else chkword ("ifneq", c_ifneq) + else chkword ("else", c_else) + else chkword ("endif", c_endif) + else + return -2; + + /* Found one: skip past it and any whitespace after it. */ + line += len; + NEXT_TOKEN (line); + +#define EXTRATEXT() OS (error, flocp, _("extraneous text after '%s' directive"), cmdname) +#define EXTRACMD() OS (fatal, flocp, _("extraneous '%s'"), cmdname) + + /* An 'endif' cannot contain extra text, and reduces the if-depth by 1 */ + if (cmdtype == c_endif) + { + if (*line != '\0') + EXTRATEXT (); + + if (!conditionals->if_cmds) + EXTRACMD (); + + --conditionals->if_cmds; + + goto DONE; + } + + /* An 'else' statement can either be simple, or it can have another + conditional after it. */ + if (cmdtype == c_else) + { + const char *p; + + if (!conditionals->if_cmds) + EXTRACMD (); + + o = conditionals->if_cmds - 1; + + if (conditionals->seen_else[o]) + O (fatal, flocp, _("only one 'else' per conditional")); + + /* Change the state of ignorance. */ + switch (conditionals->ignoring[o]) + { + case 0: + /* We've just been interpreting. Never do it again. */ + conditionals->ignoring[o] = 2; + break; + case 1: + /* We've never interpreted yet. Maybe this time! */ + conditionals->ignoring[o] = 0; + break; + } + + /* It's a simple 'else'. */ + if (*line == '\0') + { + conditionals->seen_else[o] = 1; + goto DONE; + } + + /* The 'else' has extra text. That text must be another conditional + and cannot be an 'else' or 'endif'. */ + + /* Find the length of the next word. */ + for (p = line+1; ! STOP_SET (*p, MAP_SPACE|MAP_NUL); ++p) + ; + len = p - line; + + /* If it's 'else' or 'endif' or an illegal conditional, fail. */ + if (word1eq ("else") || word1eq ("endif") + || conditional_line (line, len, flocp) < 0) + EXTRATEXT (); + else + { + /* conditional_line() created a new level of conditional. + Raise it back to this level. */ + if (conditionals->ignoring[o] < 2) + conditionals->ignoring[o] = conditionals->ignoring[o+1]; + --conditionals->if_cmds; + } + + goto DONE; + } + + if (conditionals->allocated == 0) + { + conditionals->allocated = 5; + conditionals->ignoring = xmalloc (conditionals->allocated); + conditionals->seen_else = xmalloc (conditionals->allocated); + } + + o = conditionals->if_cmds++; + if (conditionals->if_cmds > conditionals->allocated) + { + conditionals->allocated += 5; + conditionals->ignoring = xrealloc (conditionals->ignoring, + conditionals->allocated); + conditionals->seen_else = xrealloc (conditionals->seen_else, + conditionals->allocated); + } + + /* Record that we have seen an 'if...' but no 'else' so far. */ + conditionals->seen_else[o] = 0; + + /* Search through the stack to see if we're already ignoring. */ + for (i = 0; i < o; ++i) + if (conditionals->ignoring[i]) + { + /* We are already ignoring, so just push a level to match the next + "else" or "endif", and keep ignoring. We don't want to expand + variables in the condition. */ + conditionals->ignoring[o] = 1; + return 1; + } + + if (cmdtype == c_ifdef || cmdtype == c_ifndef) + { + size_t l; + char *var; + struct variable *v; + char *p; + + /* Expand the thing we're looking up, so we can use indirect and + constructed variable names. */ + var = allocated_variable_expand (line); + + /* Make sure there's only one variable name to test. */ + p = end_of_token (var); + l = p - var; + NEXT_TOKEN (p); + if (*p != '\0') + return -1; + + var[l] = '\0'; + v = lookup_variable (var, l); + + conditionals->ignoring[o] = + ((v != 0 && *v->value != '\0') == (cmdtype == c_ifndef)); + + free (var); + } + else + { + /* "ifeq" or "ifneq". */ + char *s1, *s2; + size_t l; + char termin = *line == '(' ? ',' : *line; + + if (termin != ',' && termin != '"' && termin != '\'') + return -1; + + s1 = ++line; + /* Find the end of the first string. */ + if (termin == ',') + { + int count = 0; + for (; *line != '\0'; ++line) + if (*line == '(') + ++count; + else if (*line == ')') + --count; + else if (*line == ',' && count <= 0) + break; + } + else + while (*line != '\0' && *line != termin) + ++line; + + if (*line == '\0') + return -1; + + if (termin == ',') + { + /* Strip blanks after the first string. */ + char *p = line++; + while (ISBLANK (p[-1])) + --p; + *p = '\0'; + } + else + *line++ = '\0'; + + s2 = variable_expand (s1); + /* We must allocate a new copy of the expanded string because + variable_expand re-uses the same buffer. */ + l = strlen (s2); + s1 = alloca (l + 1); + memcpy (s1, s2, l + 1); + + if (termin != ',') + /* Find the start of the second string. */ + NEXT_TOKEN (line); + + termin = termin == ',' ? ')' : *line; + if (termin != ')' && termin != '"' && termin != '\'') + return -1; + + /* Find the end of the second string. */ + if (termin == ')') + { + int count = 0; + s2 = next_token (line); + for (line = s2; *line != '\0'; ++line) + { + if (*line == '(') + ++count; + else if (*line == ')') + { + if (count <= 0) + break; + else + --count; + } + } + } + else + { + ++line; + s2 = line; + while (*line != '\0' && *line != termin) + ++line; + } + + if (*line == '\0') + return -1; + + *(line++) = '\0'; + NEXT_TOKEN (line); + if (*line != '\0') + EXTRATEXT (); + + s2 = variable_expand (s2); + conditionals->ignoring[o] = (streq (s1, s2) == (cmdtype == c_ifneq)); + } + + DONE: + /* Search through the stack to see if we're ignoring. */ + for (i = 0; i < conditionals->if_cmds; ++i) + if (conditionals->ignoring[i]) + return 1; + return 0; +} + + +/* Record target-specific variable values for files FILENAMES. + TWO_COLON is nonzero if a double colon was used. + + The links of FILENAMES are freed, and so are any names in it + that are not incorporated into other data structures. + + If the target is a pattern, add the variable to the pattern-specific + variable value list. */ + +static void +record_target_var (struct nameseq *filenames, char *defn, + enum variable_origin origin, struct vmodifiers *vmod, + const floc *flocp) +{ + struct nameseq *nextf; + struct variable_set_list *global; + + global = current_variable_set_list; + + /* If the variable is an append version, store that but treat it as a + normal recursive variable. */ + + for (; filenames != 0; filenames = nextf) + { + struct variable *v; + const char *name = filenames->name; + const char *percent; + struct pattern_var *p; + + nextf = filenames->next; + free_ns (filenames); + + /* If it's a pattern target, then add it to the pattern-specific + variable list. */ + percent = find_percent_cached (&name); + if (percent) + { + /* Get a reference for this pattern-specific variable struct. */ + p = create_pattern_var (name, percent); + p->variable.fileinfo = *flocp; + /* I don't think this can fail since we already determined it was a + variable definition. */ + v = assign_variable_definition (&p->variable, defn); + assert (v != 0); + + v->origin = origin; + if (v->flavor == f_simple) + v->value = allocated_variable_expand (v->value); + else + v->value = xstrdup (v->value); + } + else + { + struct file *f; + + /* Get a file reference for this file, and initialize it. + We don't want to just call enter_file() because that allocates a + new entry if the file is a double-colon, which we don't want in + this situation. */ + f = lookup_file (name); + if (!f) + f = enter_file (strcache_add (name)); + else if (f->double_colon) + f = f->double_colon; + + initialize_file_variables (f, 1); + + current_variable_set_list = f->variables; + v = try_variable_definition (flocp, defn, origin, 1); + if (!v) + O (fatal, flocp, _("Malformed target-specific variable definition")); + current_variable_set_list = global; + } + + /* Set up the variable to be *-specific. */ + v->per_target = 1; + v->private_var = vmod->private_v; + 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. */ + if (v->origin != o_override) + { + struct variable *gv; + size_t len = strlen (v->name); + + gv = lookup_variable (v->name, len); + if (gv && v != gv + && (gv->origin == o_env_override || gv->origin == o_command)) + { + free (v->value); + v->value = xstrdup (gv->value); + v->origin = gv->origin; + v->recursive = gv->recursive; + v->append = 0; + } + } + } +} + + +/* 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. + TWO_COLON is nonzero if a double colon was used. + If not nil, PATTERN is the '%' pattern to make this + a static pattern rule, and PATTERN_PERCENT is a pointer + to the '%' within it. + + The links of FILENAMES are freed, and so are any names in it + that are not incorporated into other data structures. */ + +static void +record_files (struct nameseq *filenames, int are_also_makes, + const char *pattern, + const char *pattern_percent, char *depstr, + unsigned int cmds_started, char *commands, + size_t commands_idx, int two_colon, + char prefix, const floc *flocp) +{ + struct commands *cmds; + struct dep *deps; + struct dep *also_make = NULL; + const char *implicit_percent; + const char *name; + + /* If we've already snapped deps, that means we're in an eval being + resolved after the makefiles have been read in. We can't add more rules + at this time, since they won't get snapped and we'll get core dumps. + See Savannah bug # 12124. */ + if (snapped_deps) + O (fatal, flocp, _("prerequisites cannot be defined in recipes")); + + /* Determine if this is a pattern rule or not. */ + name = filenames->name; + implicit_percent = find_percent_cached (&name); + + /* If there's a recipe, set up a struct for it. */ + if (commands_idx > 0) + { + cmds = xmalloc (sizeof (struct commands)); + cmds->fileinfo.filenm = flocp->filenm; + cmds->fileinfo.lineno = cmds_started; + cmds->fileinfo.offset = 0; + cmds->commands = xstrndup (commands, commands_idx); + cmds->command_lines = 0; + cmds->recipe_prefix = prefix; + } + else if (are_also_makes) + O (fatal, flocp, _("grouped targets must provide a recipe")); + else + cmds = NULL; + + /* If there's a prereq string then parse it--unless it's eligible for 2nd + expansion: if so, snap_deps() will do it. */ + if (depstr == 0) + deps = 0; + else + { + depstr = unescape_char (depstr, ':'); + if (second_expansion && strchr (depstr, '$')) + { + deps = alloc_dep (); + deps->name = depstr; + deps->need_2nd_expansion = 1; + deps->staticpattern = pattern != 0; + } + else + { + deps = split_prereqs (depstr); + free (depstr); + + /* We'll enter static pattern prereqs later when we have the stem. + We don't want to enter pattern rules at all so that we don't + think that they ought to exist (make manual "Implicit Rule Search + Algorithm", item 5c). */ + if (! pattern && ! implicit_percent) + deps = enter_prereqs (deps, NULL); + } + } + + /* For implicit rules, _all_ the targets must have a pattern. That means we + can test the first one to see if we're working with an implicit rule; if + so we handle it specially. */ + + if (implicit_percent) + { + struct nameseq *nextf; + const char **targets, **target_pats; + unsigned short c; + + if (pattern != 0) + O (fatal, flocp, _("mixed implicit and static pattern rules")); + + /* Count the targets to create an array of target names. + We already have the first one. */ + nextf = filenames->next; + free_ns (filenames); + filenames = nextf; + + for (c = 1; nextf; ++c, nextf = nextf->next) + ; + targets = xmalloc (c * sizeof (const char *)); + target_pats = xmalloc (c * sizeof (const char *)); + + targets[0] = name; + target_pats[0] = implicit_percent; + + c = 1; + while (filenames) + { + name = filenames->name; + implicit_percent = find_percent_cached (&name); + + if (implicit_percent == 0) + O (fatal, flocp, _("mixed implicit and normal rules")); + + targets[c] = name; + target_pats[c] = implicit_percent; + ++c; + + nextf = filenames->next; + free_ns (filenames); + filenames = nextf; + } + + create_pattern_rule (targets, target_pats, c, two_colon, deps, cmds, 1); + + return; + } + + + /* Walk through each target and create it in the database. + We already set up the first target, above. */ + while (1) + { + struct nameseq *nextf = filenames->next; + struct file *f; + struct dep *this = 0; + + free_ns (filenames); + + /* If this is a static pattern rule: + 'targets: target%pattern: prereq%pattern; recipe', + make sure the pattern matches this target name. */ + if (pattern && !pattern_matches (pattern, pattern_percent, name)) + OS (error, flocp, + _("target '%s' doesn't match the target pattern"), name); + else if (deps) + /* If there are multiple targets, copy the chain DEPS for all but the + last one. It is not safe for the same deps to go in more than one + place in the database. */ + this = nextf != 0 ? copy_dep_chain (deps) : deps; + + /* Find or create an entry in the file database for this target. */ + if (!two_colon) + { + /* Single-colon. Combine this rule with the file's existing record, + if any. */ + f = enter_file (strcache_add (name)); + if (f->double_colon) + OS (fatal, flocp, + _("target file '%s' has both : and :: entries"), f->name); + + /* If CMDS == F->CMDS, this target was listed in this rule + more than once. Just give a warning since this is harmless. */ + if (cmds != 0 && cmds == f->cmds) + OS (error, flocp, + _("target '%s' given more than once in the same rule"), + f->name); + + /* Check for two single-colon entries both with commands. + Check is_target so that we don't lose on files such as .c.o + whose commands were preinitialized. */ + else if (cmds != 0 && f->cmds != 0 && f->is_target) + { + size_t l = strlen (f->name); + error (&cmds->fileinfo, l, + _("warning: overriding recipe for target '%s'"), + f->name); + error (&f->cmds->fileinfo, l, + _("warning: ignoring old recipe for target '%s'"), + f->name); + } + + /* Defining .DEFAULT with no deps or cmds clears it. */ + if (f == default_file && this == 0 && cmds == 0) + f->cmds = 0; + if (cmds != 0) + f->cmds = cmds; + + /* Defining .SUFFIXES with no dependencies clears out the list of + suffixes. */ + if (f == suffix_file && this == 0) + { + 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 + { + /* Double-colon. Make a new record even if there already is one. */ + f = lookup_file (name); + + /* Check for both : and :: rules. Check is_target so we don't lose + on default suffix rules or makefiles. */ + if (f != 0 && f->is_target && !f->double_colon) + OS (fatal, flocp, + _("target file '%s' has both : and :: entries"), f->name); + + f = enter_file (strcache_add (name)); + /* If there was an existing entry and it was a double-colon entry, + enter_file will have returned a new one, making it the prev + pointer of the old one, and setting its double_colon pointer to + the first one. */ + if (f->double_colon == 0) + /* This is the first entry for this name, so we must set its + double_colon pointer to itself. */ + f->double_colon = f; + + f->cmds = cmds; + } + + if (are_also_makes) + { + struct dep *also = alloc_dep(); + also->name = f->name; + also->file = f; + also->next = also_make; + also_make = also; + } + + f->is_target = 1; + + /* If this is a static pattern rule, set the stem to the part of its + name that matched the '%' in the pattern, so you can use $* in the + commands. If we didn't do it before, enter the prereqs now. */ + if (pattern) + { + static const char *percent = "%"; + 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) + this = enter_prereqs (this, f->stem); + else + this->stem = f->stem; + } + } + + /* Add the dependencies to this file entry. */ + if (this != 0) + { + /* Add the file's old deps and the new ones in THIS together. */ + if (f->deps == 0) + f->deps = this; + else if (cmds != 0) + { + struct dep *d = this; + + /* If this rule has commands, put these deps first. */ + while (d->next != 0) + d = d->next; + + d->next = f->deps; + f->deps = this; + } + else + { + struct dep *d = f->deps; + + /* A rule without commands: put its prereqs at the end. */ + while (d->next != 0) + d = d->next; + + d->next = this; + } + } + + name = f->name; + + check_special_file (f, flocp); + + /* All done! Set up for the next one. */ + if (nextf == 0) + break; + + filenames = nextf; + + /* Reduce escaped percents. If there are any unescaped it's an error */ + name = filenames->name; + if (find_percent_cached (&name)) + O (error, flocp, + _("*** mixed implicit and normal rules: deprecated syntax")); + } + + /* If there are also-makes, then populate a copy of the also-make list into + each one. For the last file, we take our original also_make list instead + wastefully copying it one more time and freeing it. */ + { + struct dep *i; + + for (i = also_make; i != NULL; i = i->next) + { + struct file *f = i->file; + struct dep *cpy = i->next ? copy_dep_chain (also_make) : also_make; + + if (f->also_make) + { + OS (error, &cmds->fileinfo, + _("warning: overriding group membership for target '%s'"), + f->name); + free_dep_chain (f->also_make); + } + + f->also_make = cpy; + } + } +} + +/* Search STRING for an unquoted STOPMAP. + Backslashes quote elements from STOPMAP and backslash. + Quoting backslashes are removed from STRING by compacting it into itself. + Returns a pointer to the first unquoted STOPCHAR if there is one, or nil if + there are none. + + If MAP_VARIABLE is set, then the complete contents of variable references + are skipped, even if the contain STOPMAP characters. */ + +static char * +find_map_unquote (char *string, int stopmap) +{ + size_t string_len = 0; + char *p = string; + + /* Always stop on NUL. */ + stopmap |= MAP_NUL; + + while (1) + { + while (! STOP_SET (*p, stopmap)) + ++p; + + if (*p == '\0') + break; + + /* If we stopped due to a variable reference, skip over its contents. */ + if (*p == '$') + { + char openparen = p[1]; + + /* Check if '$' is the last character in the string. */ + if (openparen == '\0') + break; + + p += 2; + + /* Skip the contents of a non-quoted, multi-char variable ref. */ + if (openparen == '(' || openparen == '{') + { + unsigned int pcount = 1; + char closeparen = (openparen == '(' ? ')' : '}'); + + while (*p) + { + if (*p == openparen) + ++pcount; + else if (*p == closeparen) + if (--pcount == 0) + { + ++p; + break; + } + ++p; + } + } + + /* Skipped the variable reference: look for STOPCHARS again. */ + continue; + } + + if (p > string && p[-1] == '\\') + { + /* Search for more backslashes. */ + int i = -2; + while (&p[i] >= string && p[i] == '\\') + --i; + ++i; + /* Only compute the length if really needed. */ + if (string_len == 0) + string_len = strlen (string); + /* The number of backslashes is now -I. + Copy P over itself to swallow half of them. */ + { + /* 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. */ + return p; + + /* The STOPCHAR was quoted by a backslash. Look for another. */ + } + else + /* No backslash in sight. */ + return p; + } + + /* Never hit a STOPCHAR or blank (with BLANK nonzero). */ + return 0; +} + +static char * +find_char_unquote (char *string, int stop) +{ + size_t string_len = 0; + char *p = string; + + while (1) + { + p = strchr(p, stop); + + if (!p) + return NULL; + + if (p > string && p[-1] == '\\') + { + /* Search for more backslashes. */ + int i = -2; + while (&p[i] >= string && p[i] == '\\') + --i; + ++i; + /* Only compute the length if really needed. */ + if (string_len == 0) + string_len = strlen (string); + /* The number of backslashes is now -I. + Copy P over itself to swallow half of them. */ + { + /* 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. */ + return p; + + /* The STOPCHAR was quoted by a backslash. Look for another. */ + } + else + /* No backslash in sight. */ + return p; + } +} + +/* Unescape a character in a string. The string is compressed onto itself. */ + +static char * +unescape_char (char *string, int c) +{ + char *p = string; + char *s = string; + + while (*s != '\0') + { + if (*s == '\\') + { + char *e = s; + size_t l; + + /* We found a backslash. See if it's escaping our character. */ + while (*e == '\\') + ++e; + l = e - s; + + if (*e != c || l%2 == 0) + { + /* It's not; just take it all without unescaping. */ + memmove (p, s, l); + p += l; + + /* If we hit the end of the string, we're done. */ + if (*e == '\0') + break; + } + else if (l > 1) + { + /* It is, and there's >1 backslash. Take half of them. */ + l /= 2; + memmove (p, s, l); + p += l; + } + + s = e; + } + + *(p++) = *(s++); + } + + *p = '\0'; + return string; +} + +/* Search PATTERN for an unquoted % and handle quoting. */ + +char * +find_percent (char *pattern) +{ + return find_char_unquote (pattern, '%'); +} + +/* 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 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 = strchr (*string, '%'); + char *new, *np; + size_t slen; + + /* If there is no % or there is but it's not escaped, reuse this string. */ + if (!p || p == *string || p[-1] != '\\') + return 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); + + do + { + /* Remember where the percent is. */ + char *pp = np; + int i = -2; + + /* 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. */ + { + /* Avoid arithmetic conversion of negative values to unsigned. */ + int hi = -(i/2); + memmove (&pp[i], &pp[i/2], (slen - (pp - new)) + hi + 1); + } + + /* Update SLEN and set NP to point after the %. */ + slen += i/2 + i%2; + np += i/2; + + /* If all backslashes quoted each other then % was unquoted. */ + if (i % 2 == 0) + break; + + np = strchr (np, '%'); + } + while (np && np[-1] == '\\'); + + /* 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 np ? *string + (np - new) : NULL; +} + +/* Find the next line of text in an eval buffer, combining continuation lines + into one line. + Return the number of actual lines read (> 1 if continuation lines). + Returns -1 if there's nothing left in the buffer. + + After this function, ebuf->buffer points to the first character of the + line we just found. + */ + +/* Read a line of text from a STRING. + Since we aren't really reading from a file, don't bother with linenumbers. + */ + +static long +readstring (struct ebuffer *ebuf) +{ + char *eol; + + /* If there is nothing left in this buffer, return 0. */ + if (ebuf->bufnext >= ebuf->bufstart + ebuf->size) + return -1; + + /* Set up a new starting point for the buffer, and find the end of the + next logical line (taking into account backslash/newline pairs). */ + + eol = ebuf->buffer = ebuf->bufnext; + + while (1) + { + int backslash = 0; + const char *bol = eol; + const char *p; + + /* Find the next newline. At EOS, stop. */ + p = eol = strchr (eol , '\n'); + if (!eol) + { + ebuf->bufnext = ebuf->bufstart + ebuf->size + 1; + return 0; + } + + /* Found a newline; if it's escaped continue; else we're done. */ + while (p > bol && *(--p) == '\\') + backslash = !backslash; + if (!backslash) + break; + ++eol; + } + + /* Overwrite the newline char. */ + *eol = '\0'; + ebuf->bufnext = eol+1; + + return 0; +} + +static long +readline (struct ebuffer *ebuf) +{ + char *p; + char *end; + char *start; + long nlines = 0; + + /* The behaviors between string and stream buffers are different enough to + warrant different functions. Do the Right Thing. */ + + if (!ebuf->fp) + return readstring (ebuf); + + /* When reading from a file, we always start over at the beginning of the + buffer for each new line. */ + + p = start = ebuf->bufstart; + end = p + ebuf->size; + *p = '\0'; + + while (fgets (p, (int) (end - p), ebuf->fp) != 0) + { + char *p2; + size_t len; + int backslash; + + len = strlen (p); + if (len == 0) + { + /* This only happens when the first thing on the line is a '\0'. + It is a pretty hopeless case, but (wonder of wonders) Athena + lossage strikes again! (xmkmf puts NULs in its makefiles.) + There is nothing really to be done; we synthesize a newline so + the following line doesn't appear to be part of this line. */ + O (error, &ebuf->floc, + _("warning: NUL character seen; rest of line ignored")); + p[0] = '\n'; + len = 1; + } + + /* Jump past the text we just read. */ + p += len; + + /* If the last char isn't a newline, the whole line didn't fit into the + buffer. Get some more buffer and try again. */ + if (p[-1] != '\n') + goto more_buffer; + + /* We got a newline, so add one to the count of lines. */ + ++nlines; + +#if !defined(WINDOWS32) && !defined(__MSDOS__) && !defined(__EMX__) + /* Check to see if the line was really ended with CRLF; if so ignore + the CR. */ + if ((p - start) > 1 && p[-2] == '\r') + { + --p; + memmove (p-1, p, strlen (p) + 1); + } +#endif + + backslash = 0; + for (p2 = p - 2; p2 >= start; --p2) + { + if (*p2 != '\\') + break; + backslash = !backslash; + } + + if (!backslash) + { + p[-1] = '\0'; + break; + } + + /* It was a backslash/newline combo. If we have more space, read + another line. */ + if (end - p >= 80) + continue; + + /* We need more space at the end of our buffer, so realloc it. + Make sure to preserve the current offset of p. */ + more_buffer: + { + size_t off = p - start; + ebuf->size *= 2; + start = ebuf->buffer = ebuf->bufstart = xrealloc (start, ebuf->size); + p = start + off; + end = start + ebuf->size; + *p = '\0'; + } + } + + if (ferror (ebuf->fp)) + pfatal_with_name (ebuf->floc.filenm); + + /* If we found some lines, return how many. + If we didn't, but we did find _something_, that indicates we read the last + line of a file with no final newline; return 1. + If we read nothing, we're at EOF; return -1. */ + + return nlines ? nlines : p == ebuf->bufstart ? -1 : 1; +} + +/* Parse the next "makefile word" from the input buffer, and return info + about it. + + A "makefile word" is one of: + + w_bogus Should never happen + w_eol End of input + w_static A static word; cannot be expanded + w_variable A word containing one or more variables/functions + w_colon A colon + w_dcolon A double-colon + w_ampcolon An ampersand-colon (&:) token + w_ampdcolon An ampersand-double-colon (&::) token + w_semicolon A semicolon + w_varassign A variable assignment operator (=, :=, ::=, +=, ?=, or !=) + + Note that this function is only used when reading certain parts of the + makefile. Don't use it where special rules hold sway (RHS of a variable, + in a command list, etc.) */ + +static enum make_word_type +get_next_mword (char *buffer, char **startp, size_t *length) +{ + enum make_word_type wtype; + char *p = buffer, *beg; + char c; + + /* Skip any leading whitespace. */ + while (ISSPACE (*p)) + ++p; + + beg = p; + c = *(p++); + + /* Look at the start of the word to see if it's simple. */ + switch (c) + { + case '\0': + wtype = w_eol; + goto done; + + case ';': + wtype = w_semicolon; + goto done; + + case '=': + wtype = w_varassign; + goto done; + + case ':': + if (*p == '=') + { + ++p; + wtype = w_varassign; /* := */ + } + else if (*p == ':') + { + ++p; + if (p[1] == '=') + { + ++p; + wtype = w_varassign; /* ::= */ + } + else + wtype = w_dcolon; + } + else + wtype = w_colon; + goto done; + + case '&': + if (*p == ':') + { + ++p; + if (*p != ':') + wtype = w_ampcolon; /* &: */ + else + { + ++p; + wtype = w_ampdcolon; /* &:: */ + } + goto done; + } + break; + + case '+': + case '?': + case '!': + if (*p == '=') + { + ++p; + wtype = w_varassign; /* += or ?= or != */ + goto done; + } + break; + + default: + break; + } + + /* This is some non-operator word. A word consists of the longest + string of characters that doesn't contain whitespace, one of [:=#], + or [?+!]=, or &:. */ + + /* We start out assuming a static word; if we see a variable we'll + adjust our assumptions then. */ + wtype = w_static; + + /* We already found the first value of "c", above. */ + while (1) + { + char closeparen; + int count; + + if (END_OF_TOKEN (c)) + goto done_word; + + switch (c) + { + case '=': + goto done_word; + + case ':': +#ifdef HAVE_DOS_PATHS + /* A word CAN include a colon in its drive spec. The drive + spec is allowed either at the beginning of a word, or as part + of the archive member name, like in "libfoo.a(d:/foo/bar.o)". */ + if ((p - beg == 2 || (p - beg > 2 && p[-3] == '(')) + && isalpha ((unsigned char)p[-2])) + break; +#endif + goto done_word; + + case '$': + c = *(p++); + if (c == '$') + break; + if (c == '\0') + goto done_word; + + /* This is a variable reference, so note that it's expandable. + Then read it to the matching close paren. */ + wtype = w_variable; + + if (c == '(') + closeparen = ')'; + else if (c == '{') + closeparen = '}'; + else + /* This is a single-letter variable reference. */ + break; + + for (count=0; *p != '\0'; ++p) + { + if (*p == c) + ++count; + else if (*p == closeparen && --count < 0) + { + ++p; + break; + } + } + break; + + case '?': + case '+': + if (*p == '=') + goto done_word; + break; + + case '\\': + switch (*p) + { + case ':': + case ';': + case '=': + case '\\': + ++p; + break; + } + break; + + case '&': + if (*p == ':') + goto done_word; + break; + + default: + break; + } + + c = *(p++); + } + done_word: + --p; + + done: + if (startp) + *startp = beg; + if (length) + *length = p - beg; + return wtype; +} + +/* Construct the list of include directories + from the arguments and the default list. */ + +void +construct_include_path (const char **arg_dirs) +{ +#ifdef VAXC /* just don't ask ... */ + stat_t stbuf; +#else + struct stat stbuf; +#endif + 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 *); + if (arg_dirs) + for (cpp = arg_dirs; *cpp != 0; ++cpp) + ++idx; + +#ifdef __MSDOS__ + /* Add one for $DJDIR. */ + ++idx; +#endif + + dirs = xmalloc (idx * sizeof (const char *)); + + idx = 0; + max_incl_len = 0; + + /* First consider any dirs specified with -I switches. + Ignore any that don't exist. Restart if we find "-". + Remember the maximum string length. */ + + if (arg_dirs) + while (*arg_dirs != 0) + { + const char *dir = *(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); + if (expanded != 0) + dir = expanded; + } + + EINTRLOOP (e, stat (dir, &stbuf)); + if (e == 0 && S_ISDIR (stbuf.st_mode)) + { + size_t len = strlen (dir); + /* If dir name is written with trailing slashes, discard them. */ + while (len > 1 && dir[len - 1] == '/') + --len; + if (len > max_incl_len) + max_incl_len = len; + dirs[idx++] = strcache_add_len (dir, len); + } + + free (expanded); + } + + /* Now add the standard default dirs at the end. */ + if (!disable) + { +#ifdef __MSDOS__ + /* The environment variable $DJDIR holds the root of the DJGPP directory + tree; add ${DJDIR}/include. */ + struct variable *djdir = lookup_variable ("DJDIR", 5); + + if (djdir) + { + size_t len = strlen (djdir->value) + 8; + char *defdir = alloca (len + 1); + + strcat (strcpy (defdir, djdir->value), "/include"); + dirs[idx++] = strcache_add (defdir); + + if (len > max_incl_len) + max_incl_len = 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); + } + } + } + + dirs[idx] = 0; + + /* 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; +} + +/* Expand ~ or ~USER at the beginning of NAME. + Return a newly malloc'd string or 0. */ + +char * +tilde_expand (const char *name) +{ +#if !defined(VMS) + if (name[1] == '/' || name[1] == '\0') + { + char *home_dir; + int is_variable; + + { + /* Turn off --warn-undefined-variables while we expand HOME. */ + int save = warn_undefined_variables_flag; + warn_undefined_variables_flag = 0; + + home_dir = allocated_variable_expand ("$(HOME)"); + + warn_undefined_variables_flag = save; + } + + is_variable = home_dir[0] != '\0'; + if (!is_variable) + { + free (home_dir); + home_dir = getenv ("HOME"); + } +# if !defined(_AMIGA) && !defined(WINDOWS32) + if (home_dir == 0 || home_dir[0] == '\0') + { + char *logname = getlogin (); + home_dir = 0; + if (logname != 0) + { + struct passwd *p = getpwnam (logname); + if (p != 0) + home_dir = p->pw_dir; + } + } +# endif /* !AMIGA && !WINDOWS32 */ + if (home_dir != 0) + { + char *new = xstrdup (concat (2, home_dir, name + 1)); + if (is_variable) + free (home_dir); + return new; + } + } +# if !defined(_AMIGA) && !defined(WINDOWS32) + else + { + struct passwd *pwent; + char *userend = strchr (name + 1, '/'); + if (userend != 0) + *userend = '\0'; + pwent = getpwnam (name + 1); + if (pwent != 0) + { + if (userend == 0) + return xstrdup (pwent->pw_dir); + + *userend = '/'; + return xstrdup (concat (3, pwent->pw_dir, "/", userend + 1)); + } + else if (userend != 0) + *userend = '/'; + } +# endif /* !AMIGA && !WINDOWS32 */ +#endif /* !VMS */ + return 0; +} + +/* Parse a string into a sequence of filenames represented as a chain of + struct nameseq's and return that chain. Optionally expand the strings via + glob(). + + The string is passed as STRINGP, the address of a string pointer. + The string pointer is updated to point at the first character + not parsed, which either is a null char or equals STOPMAP. + + SIZE is how large (in bytes) each element in the new chain should be. + This is useful if we want them actually to be other structures + that have room for additional info. + + STOPMAP is a map of characters that tell us to stop parsing. + + PREFIX, if non-null, is added to the beginning of each filename. + + FLAGS allows one or more of the following bitflags to be set: + PARSEFS_NOSTRIP - Do no strip './'s off the beginning + PARSEFS_NOAR - Do not check filenames for archive references + PARSEFS_NOGLOB - Do not expand globbing characters + 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 * +parse_file_seq (char **stringp, size_t size, int stopmap, + const char *prefix, int flags) +{ + /* tmp points to tmpbuf after the prefix, if any. + tp is the end of the buffer. */ + static char *tmpbuf = NULL; + + int cachep = NONE_SET (flags, PARSEFS_NOCACHE); + + struct nameseq *new = 0; + struct nameseq **newp = &new; +#define NEWELT(_n) do { \ + 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; + + /* Always stop on NUL. */ + stopmap |= MAP_NUL; + + if (size < sizeof (struct nameseq)) + size = sizeof (struct nameseq); + + if (NONE_SET (flags, PARSEFS_NOGLOB)) + dir_setup_glob (&gl); + + /* Get enough temporary space to construct the largest possible target. */ + { + static size_t tmpbuf_len = 0; + size_t l = strlen (*stringp) + 1; + if (l > tmpbuf_len) + { + tmpbuf = xrealloc (tmpbuf, l); + tmpbuf_len = l; + } + } + tp = tmpbuf; + + /* Parse STRING. P will always point to the end of the parsed content. */ + p = *stringp; + while (1) + { + const char *name; + const char **nlist = 0; + char *tildep = 0; + int globme = 1; +#ifndef NO_ARCHIVES + char *arname = 0; + char *memname = 0; +#endif + char *s; + size_t nlen; + int tot, i; + + /* Skip whitespace; at the end of the string or STOPCHAR we're done. */ + NEXT_TOKEN (p); + if (STOP_SET (*p, stopmap)) + break; + + /* There are names left, so find the end of the next name. + Throughout this iteration S points to the start. */ + s = p; + p = find_map_unquote (p, findmap); + +#ifdef VMS + /* convert comma separated list to space separated */ + if (p && *p == ',') + *p =' '; +#endif +#ifdef _AMIGA + /* If we stopped due to a device name, skip it. */ + if (p && p != s+1 && p[0] == ':') + p = find_map_unquote (p+1, findmap); +#endif +#ifdef HAVE_DOS_PATHS + /* If we stopped due to a drive specifier, skip it. + 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]) && 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 somewhere else */ + if (p - s > 2 && s[0] == '[' && s[1] == ']') + s += 2; + /* Skip leading '<>'s. should only be one set or bug somewhere else */ + if (p - s > 2 && s[0] == '<' && s[1] == '>') + s += 2; +#endif + /* Skip leading './'s. */ + while (p - s > 2 && s[0] == '.' && s[1] == '/') + { + /* Skip "./" and all following slashes. */ + s += 2; + while (*s == '/') + ++s; + } + + /* Extract the filename just found, and skip it. + Set NAME to the string, and NLEN to its length. */ + + if (s == p) + { + /* The name was stripped to empty ("./"). */ +#if defined(_AMIGA) + /* PDS-- This cannot be right!! */ + tp[0] = '\0'; + nlen = 0; +#else + tp[0] = '.'; + tp[1] = '/'; + tp[2] = '\0'; + nlen = 2; +#endif + } + else + { +#ifdef VMS +/* VMS filenames can have a ':' in them but they have to be '\'ed but we need + * to remove this '\' before we can use the filename. + * xstrdup called because S may be read-only string constant. + */ + char *n = tp; + while (s < p) + { + if (s[0] == '\\' && s[1] == ':') + ++s; + *(n++) = *(s++); + } + n[0] = '\0'; + nlen = strlen (tp); +#else + nlen = p - s; + memcpy (tp, s, nlen); + tp[nlen] = '\0'; +#endif + } + + /* At this point, TP points to the element and NLEN is its length. */ + +#ifndef NO_ARCHIVES + /* If this is the start of an archive group that isn't complete, set up + to add the archive prefix for future files. A file list like: + "libf.a(x.o y.o z.o)" needs to be expanded as: + "libf.a(x.o) libf.a(y.o) libf.a(z.o)" + + TP == TMP means we're not already in an archive group. Ignore + something starting with '(', as that cannot actually be an + archive-member reference (and treating it as such results in an empty + file name, which causes much lossage). Also if it ends in ")" then + it's a complete reference so we don't need to treat it specially. + + Finally, note that archive groups must end with ')' as the last + character, so ensure there's some word ending like that before + considering this an archive group. */ + if (NONE_SET (flags, PARSEFS_NOAR) + && tp == tmpbuf && tp[0] != '(' && tp[nlen-1] != ')') + { + char *n = strchr (tp, '('); + if (n) + { + /* This looks like the first element in an open archive group. + A valid group MUST have ')' as the last character. */ + const char *e = p; + do + { + const char *o = e; + NEXT_TOKEN (e); + /* Find the end of this word. We don't want to unquote and + we don't care about quoting since we're looking for the + last char in the word. */ + while (! STOP_SET (*e, findmap)) + ++e; + /* If we didn't move, we're done now. */ + if (e == o) + break; + if (e[-1] == ')') + { + /* Found the end, so this is the first element in an + open archive group. It looks like "lib(mem". + Reset TP past the open paren. */ + nlen -= (n + 1) - tp; + tp = n + 1; + + /* We can stop looking now. */ + break; + } + } + while (*e != '\0'); + + /* If we have just "lib(", part of something like "lib( a b)", + go to the next item. */ + if (! nlen) + continue; + } + } + + /* If we are inside an archive group, make sure it has an end. */ + if (tp > tmpbuf) + { + if (tp[nlen-1] == ')') + { + /* This is the natural end; reset TP. */ + tp = tmpbuf; + + /* This is just ")", something like "lib(a b )": skip it. */ + if (nlen == 1) + continue; + } + else + { + /* Not the end, so add a "fake" end. */ + tp[nlen++] = ')'; + tp[nlen] = '\0'; + } + } +#endif + + /* If we're not globbing we're done: add it to the end of the chain. + Go to the next item in the string. */ + if (ANY_SET (flags, PARSEFS_NOGLOB)) + { + NEWELT (concat (2, prefix, tmpbuf)); + continue; + } + + /* If we get here we know we're doing glob expansion. + TP is a string in tmpbuf. NLEN is no longer used. + We may need to do more work: after this NAME will be set. */ + name = tmpbuf; + + /* Expand tilde if applicable. */ + if (tmpbuf[0] == '~') + { + tildep = tilde_expand (tmpbuf); + if (tildep != 0) + name = tildep; + } + +#ifndef NO_ARCHIVES + /* If NAME is an archive member reference replace it with the archive + file name, and save the member name in MEMNAME. We will glob on the + archive name and then reattach MEMNAME later. */ + if (NONE_SET (flags, PARSEFS_NOAR) && ar_name (name)) + { + ar_parse_name (name, &arname, &memname); + name = arname; + } +#endif /* !NO_ARCHIVES */ + + /* glob() is expensive: don't call it unless we need to. */ + if (NONE_SET (flags, PARSEFS_EXISTS) && strpbrk (name, "?*[") == NULL) + { + globme = 0; + tot = 1; + nlist = &name; + } + else + switch (glob (name, GLOB_ALTDIRFUNC, NULL, &gl)) + { + case GLOB_NOSPACE: + out_of_memory (); + + case 0: + /* Success. */ + tot = gl.gl_pathc; + nlist = (const char **)gl.gl_pathv; + break; + + case GLOB_NOMATCH: + /* If we want only existing items, skip this one. */ + if (ANY_SET (flags, PARSEFS_EXISTS)) + { + tot = 0; + break; + } + /* FALLTHROUGH */ + + default: + /* By default keep this name. */ + tot = 1; + nlist = &name; + break; + } + + /* For each matched element, add it to the list. */ + for (i = 0; i < tot; ++i) +#ifndef NO_ARCHIVES + if (memname != 0) + { + /* Try to glob on MEMNAME within the archive. */ + struct nameseq *found = ar_glob (nlist[i], memname, size); + if (! found) + /* No matches. Use MEMNAME as-is. */ + NEWELT (concat (5, prefix, nlist[i], "(", memname, ")")); + else + { + /* We got a chain of items. Attach them. */ + if (*newp) + (*newp)->next = found; + else + *newp = found; + + /* Find and set the new end. Massage names if necessary. */ + while (1) + { + if (! cachep) + found->name = xstrdup (concat (2, prefix, name)); + else if (prefix) + found->name = strcache_add (concat (2, prefix, name)); + + if (found->next == 0) + break; + + found = found->next; + } + newp = &found->next; + } + } + else +#endif /* !NO_ARCHIVES */ + NEWELT (concat (2, prefix, nlist[i])); + + if (globme) + globfree (&gl); + +#ifndef NO_ARCHIVES + free (arname); +#endif + + free (tildep); + } + + *stringp = p; + return new; +} diff --git a/local/recipes/dev/gnu-make/source/src/remake.c b/local/recipes/dev/gnu-make/source/src/remake.c new file mode 100644 index 0000000000..4ce3d2a379 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/remake.c @@ -0,0 +1,1842 @@ +/* Basic dependency engine for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include "filedef.h" +#include "job.h" +#include "commands.h" +#include "dep.h" +#include "variable.h" +#include "debug.h" + +#include + +#ifdef HAVE_FCNTL_H +#include +#else +#include +#endif + +#ifdef VMS +#include +#endif +#ifdef WINDOWS32 +#include +#include +#include +#if defined(_MSC_VER) && _MSC_VER > 1200 +/* VC7 or later supprots _stat64 to access 64-bit file size. */ +#define STAT _stat64 +#else +#define STAT stat +#endif +#endif + + +/* The test for circular dependencies is based on the 'updating' bit in + 'struct file'. However, double colon targets have separate 'struct + file's; make sure we always use the base of the double colon chain. */ + +#define start_updating(_f) (((_f)->double_colon ? (_f)->double_colon : (_f))\ + ->updating = 1) +#define finish_updating(_f) (((_f)->double_colon ? (_f)->double_colon : (_f))\ + ->updating = 0) +#define is_updating(_f) (((_f)->double_colon ? (_f)->double_colon : (_f))\ + ->updating) + + +/* Incremented when a command is started (under -n, when one would be). */ +unsigned int commands_started = 0; + +/* Set to the goal dependency. Mostly needed for remaking makefiles. */ +static struct goaldep *goal_list; +static struct dep *goal_dep; + +/* Current value for pruning the scan of the goal chain. + All files start with considered == 0. */ +static unsigned int considered = 0; + +static enum update_status update_file (struct file *file, unsigned int depth); +static enum update_status update_file_1 (struct file *file, unsigned int depth); +static enum update_status check_dep (struct file *file, unsigned int depth, + FILE_TIMESTAMP this_mtime, int *must_make); +static enum update_status touch_file (struct file *file); +static void remake_file (struct file *file); +static FILE_TIMESTAMP name_mtime (const char *name); +static const char *library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr); + + +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 + targets, and we should only make one goal at a time and return as soon as + one goal whose 'changed' member is nonzero is successfully made. */ + +enum update_status +update_goal_chain (struct goaldep *goaldeps) +{ + int t = touch_flag, q = question_flag, n = just_print_flag; + enum update_status status = us_none; + + /* Duplicate the chain so we can remove things from it. */ + struct dep *goals_orig = copy_dep_chain ((struct dep *)goaldeps); + struct dep *goals = goals_orig; + + goal_list = rebuilding_makefiles ? goaldeps : NULL; + +#define MTIME(file) (rebuilding_makefiles ? file_mtime_no_search (file) \ + : file_mtime (file)) + + /* Start a fresh batch of consideration. */ + ++considered; + + /* Update all the goals until they are all finished. */ + + while (goals != 0) + { + struct dep *gu, *g, *lastgoal; + + /* Start jobs that are waiting for the load to go down. */ + + start_waiting_jobs (); + + /* Wait for a child to die. */ + + reap_children (1, 0); + + lastgoal = 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; + file != NULL; + file = file->prev) + { + unsigned int ocommands_started; + enum update_status fail; + + file->dontcare = ANY_SET (g->flags, RM_DONTCARE); + + check_renamed (file); + if (rebuilding_makefiles) + { + if (file->cmd_target) + { + touch_flag = t; + question_flag = q; + just_print_flag = n; + } + else + touch_flag = question_flag = just_print_flag = 0; + } + + /* Save the old value of 'commands_started' so we can compare + later. It will be incremented when any commands are + actually run. */ + ocommands_started = commands_started; + + fail = update_file (file, rebuilding_makefiles ? 1 : 0); + check_renamed (file); + + /* Set the goal's 'changed' flag if any commands were started + by calling update_file above. We check this flag below to + decide when to give an "up to date" diagnostic. */ + if (commands_started > ocommands_started) + g->changed = 1; + + stop = 0; + if ((fail || file->updated) && status < us_question) + { + /* We updated this goal. Update STATUS and decide whether + to stop. */ + if (file->update_status) + { + /* Updating failed, or -q triggered. The STATUS value + tells our caller which. */ + status = file->update_status; + /* If -q just triggered, stop immediately. It doesn't + matter how much more we run, since we already know + the answer to return. */ + stop = (question_flag && !keep_going_flag + && !rebuilding_makefiles); + } + else + { + FILE_TIMESTAMP mtime = MTIME (file); + check_renamed (file); + + 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 + -n or -q was given and this file was specified + as a command-line target), don't change STATUS. + If STATUS is changed, we will get re-exec'd, and + enter an infinite loop. */ + if (!rebuilding_makefiles + || (!just_print_flag && !question_flag)) + status = us_success; + if (rebuilding_makefiles && file->dontcare) + /* This is a default makefile; stop remaking. */ + stop = 1; + } + } + } + + /* Keep track if any double-colon entry is not finished. + When they are all finished, the goal is finished. */ + any_not_updated |= !file->updated; + + file->dontcare = 0; + + if (stop) + break; + } + + /* Reset FILE since it is null at the end of the loop. */ + file = g->file; + + if (stop || !any_not_updated) + { + /* If we have found nothing whatever to do for the goal, + print a message saying nothing needs doing. */ + + if (!rebuilding_makefiles + /* If the update_status is success, we updated successfully + or not at all. G->changed will have been set above if + any commands were actually started for this goal. */ + && file->update_status == us_success && !g->changed + /* Never give a message under -s or -q. */ + && !run_silent && !question_flag) + OS (message, 1, ((file->phony || file->cmds == 0) + ? _("Nothing to be done for '%s'.") + : _("'%s' is up to date.")), + file->name); + + /* This goal is finished. Remove it from the chain. */ + if (lastgoal == 0) + goals = gu->next; + else + lastgoal->next = gu->next; + + gu = lastgoal == 0 ? goals : lastgoal->next; + + if (stop) + break; + } + else + { + lastgoal = gu; + gu = gu->next; + } + } + + /* If we reached the end of the dependency graph update CONSIDERED + for the next pass. */ + if (gu == 0) + ++considered; + } + + free_dep_chain (goals_orig); + + if (rebuilding_makefiles) + { + touch_flag = t; + question_flag = q; + just_print_flag = n; + } + + return status; +} + +/* If we're rebuilding an included makefile that failed, and we care + about errors, show an error message the first time. */ + +void +show_goal_error (void) +{ + struct goaldep *goal; + + if ((goal_dep->flags & (RM_INCLUDED|RM_DONTCARE)) != RM_INCLUDED) + return; + + for (goal = goal_list; goal; goal = goal->next) + if (goal_dep->file == goal->file) + { + if (goal->error) + { + OSS (error, &goal->floc, "%s: %s", + goal->file->name, strerror (goal->error)); + goal->error = 0; + } + return; + } +} + +/* If FILE is not up to date, execute the commands for it. + Return 0 if successful, non-0 if unsuccessful; + but with some flag settings, just call 'exit' if unsuccessful. + + DEPTH is the depth in recursions of this function. + We increment it during the consideration of our dependencies, + then decrement it again after finding out whether this file + is out of date. + + If there are multiple double-colon entries for FILE, + each is considered in turn. */ + +static enum update_status +update_file (struct file *file, unsigned int depth) +{ + enum update_status status = us_success; + struct file *f; + + f = file->double_colon ? file->double_colon : file; + + /* Prune the dependency graph: if we've already been here on _this_ + pass through the dependency graph, we don't have to go any further. + We won't reap_children until we start the next pass, so no state + change is possible below here until then. */ + if (f->considered == considered) + { + /* Check for the case where a target has been tried and failed but + the diagnostics haven't been issued. If we need the diagnostics + then we will have to continue. */ + if (!(f->updated && f->update_status > us_none + && !f->dontcare && f->no_diag)) + { + DBF (DB_VERBOSE, _("Pruning file '%s'.\n")); + return f->command_state == cs_finished ? f->update_status : us_success; + } + } + + /* This loop runs until we start commands for a double colon rule, or until + the chain is exhausted. */ + for (; f != 0; f = f->prev) + { + enum update_status new; + + f->considered = considered; + + new = update_file_1 (f, depth); + check_renamed (f); + + /* Clean up any alloca() used during the update. */ + free_alloca (); + + /* If we got an error, don't bother with double_colon etc. */ + if (new && !keep_going_flag) + return new; + + if (f->command_state == cs_running + || f->command_state == cs_deps_running) + /* Don't run other :: rules for this target until + this rule is finished. */ + return us_success; + + if (new > status) + status = new; + } + + return status; +} + +/* Show a message stating the target failed to build. */ + +static void +complain (struct file *file) +{ + /* If this file has no_diag set then it means we tried to update it + before in the dontcare mode and failed. The target that actually + failed is not necessarily this file but could be one of its direct + or indirect dependencies. So traverse this file's dependencies and + find the one that actually caused the failure. */ + + struct dep *d; + + for (d = file->deps; d != 0; d = d->next) + { + if (d->file->updated && d->file->update_status > us_none && file->no_diag) + { + complain (d->file); + break; + } + } + + if (d == 0) + { + show_goal_error (); + + /* Didn't find any dependencies to complain about. */ + if (file->parent) + { + size_t l = strlen (file->name) + strlen (file->parent->name) + 4; + const char *m = _("%sNo rule to make target '%s', needed by '%s'%s"); + + if (!keep_going_flag) + fatal (NILF, l, m, "", file->name, file->parent->name, ""); + + error (NILF, l, m, "*** ", file->name, file->parent->name, "."); + } + else + { + size_t l = strlen (file->name) + 4; + const char *m = _("%sNo rule to make target '%s'%s"); + + if (!keep_going_flag) + fatal (NILF, l, m, "", file->name, ""); + + error (NILF, l, m, "*** ", file->name, "."); + } + + file->no_diag = 0; + } +} + +/* Consider a single 'struct file' and update it as appropriate. + 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) +{ + enum update_status dep_status = us_success; + FILE_TIMESTAMP this_mtime; + int noexist, must_make, deps_changed; + struct file *ofile; + struct dep *du, *d, *ad; + struct dep amake; + int running = 0; + + DBF (DB_VERBOSE, _("Considering target file '%s'.\n")); + + if (file->updated) + { + if (file->update_status > us_none) + { + DBF (DB_VERBOSE, + _("Recently tried and failed to update file '%s'.\n")); + + /* If the file we tried to make is marked no_diag then no message + was printed about it when it failed during the makefile rebuild. + If we're trying to build it again in the normal rebuild, print a + message now. */ + if (file->no_diag && !file->dontcare) + complain (file); + + return file->update_status; + } + + DBF (DB_VERBOSE, _("File '%s' was considered already.\n")); + return us_success; + } + + switch (file->command_state) + { + case cs_not_started: + case cs_deps_running: + break; + case cs_running: + DBF (DB_VERBOSE, _("Still updating file '%s'.\n")); + return us_success; + case cs_finished: + DBF (DB_VERBOSE, _("Finished updating file '%s'.\n")); + return file->update_status; + default: + abort (); + } + + /* Determine whether the diagnostics will be issued should this update + fail. */ + file->no_diag = file->dontcare; + + ++depth; + + /* Notice recursive update of the same file. */ + start_updating (file); + + /* We might change file if we find a different one via vpath; + remember this one to turn off updating. */ + ofile = file; + + /* Looking at the file's modtime beforehand allows the possibility + that its name may be changed by a VPATH search, and thus it may + not need an implicit rule. If this were not done, the file + might get implicit commands that apply to its initial name, only + to have that name replaced with another found by VPATH search. */ + + this_mtime = file_mtime (file); + check_renamed (file); + noexist = this_mtime == NONEXISTENT_MTIME; + if (noexist) + DBF (DB_BASIC, _("File '%s' does not exist.\n")); + 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); + if (ns != 0) + OS (error, NILF, + _("*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"), + file->name); + 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. This may also add more also_make files. */ + + if (!file->phony && file->cmds == 0 && !file->tried_implicit) + { + try_implicit_rule (file, depth); + file->tried_implicit = 1; + } + if (file->cmds == 0 && !file->is_target + && default_file != 0 && default_file->cmds != 0) + { + DBF (DB_IMPLICIT, _("Using default recipe for '%s'.\n")); + file->cmds = default_file->cmds; + } + + /* Update all non-intermediate files we depend on, if necessary, and see + whether any of them is more recent than this file. We need to walk our + deps, AND the deps of any also_make targets to ensure everything happens + in the correct order. */ + + amake.file = file; + amake.next = file->also_make; + ad = &amake; + while (ad) + { + 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 */ + du = ad->file->deps; + ad = ad->next; + + 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); + check_renamed (d->file); + + if (is_updating (d->file)) + { + 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 = du->next; + else + lastd->next = du->next; + + du = du->next; + continue; + } + + d->file->parent = file; + maybe_make = must_make; + + /* Inherit dontcare flag from our parent. */ + if (rebuilding_makefiles) + { + dontcare = d->file->dontcare; + d->file->dontcare = file->dontcare; + } + + new = check_dep (d->file, depth, this_mtime, &maybe_make); + if (new > dep_status) + dep_status = new; + + /* Restore original dontcare flag. */ + if (rebuilding_makefiles) + d->file->dontcare = dontcare; + + if (! d->ignore_mtime) + must_make = maybe_make; + + check_renamed (d->file); + + { + 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) + /* The prereq is considered changed if the timestamp has changed + while it was built, OR it doesn't exist. */ + d->changed = ((file_mtime (d->file) != mtime) + || (mtime == NONEXISTENT_MTIME)); + + lastd = du; + du = du->next; + } + } + + /* Now we know whether this target needs updating. + If it does, update all the intermediate files we depend on. */ + + if (must_make || always_make_flag) + { + for (du = file->deps; du != 0; du = du->next) + { + d = du->shuf ? du->shuf : du; + + if (d->wait_here && running) + break; + + if (d->file->intermediate) + { + enum update_status new; + int dontcare = 0; + + FILE_TIMESTAMP mtime = file_mtime (d->file); + check_renamed (d->file); + d->file->parent = file; + + /* Inherit dontcare flag from our parent. */ + if (rebuilding_makefiles) + { + dontcare = d->file->dontcare; + d->file->dontcare = file->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; + + new = update_file (d->file, depth); + if (new > dep_status) + dep_status = new; + + /* Restore original dontcare flag. */ + if (rebuilding_makefiles) + d->file->dontcare = dontcare; + + check_renamed (d->file); + + { + struct file *f = d->file; + if (f->double_colon) + f = f->double_colon; + do + { + running |= (f->command_state == cs_running + || f->command_state == cs_deps_running); + f = f->prev; + } + while (f != 0); + } + + if (dep_status && !keep_going_flag) + break; + + if (!running) + d->changed = ((file->phony && file->cmds != 0) + || file_mtime (d->file) != mtime); + } + } + } + + finish_updating (file); + finish_updating (ofile); + + DBF (DB_VERBOSE, _("Finished prerequisites of target file '%s'.\n")); + + if (running) + { + set_command_state (file, cs_deps_running); + --depth; + DBF (DB_VERBOSE, _("The prerequisites of '%s' are being made.\n")); + return us_success; + } + + /* If any dependency failed, give up now. */ + + if (dep_status) + { + /* I'm not sure if we can't just assign dep_status... */ + file->update_status = dep_status == us_none ? us_failed : dep_status; + notice_finished_file (file); + + --depth; + + DBF (DB_VERBOSE, _("Giving up on target file '%s'.\n")); + + if (depth == 0 && keep_going_flag + && !just_print_flag && !question_flag) + OS (error, NILF, + _("Target '%s' not remade because of errors."), file->name); + + return dep_status; + } + + if (file->command_state == cs_deps_running) + /* The commands for some deps were running on the last iteration, but + they have finished now. Reset the command_state to not_started to + simplify later bookkeeping. It is important that we do this only + when the prior state was cs_deps_running, because that prior state + was definitely propagated to FILE's also_make's by set_command_state + (called above), but in another state an also_make may have + independently changed to finished state, and we would confuse that + file's bookkeeping (updated, but not_started is bogus state). */ + set_command_state (file, cs_not_started); + + /* Now record which prerequisites are more + recent than this file, so we can define $?. */ + + deps_changed = 0; + for (d = file->deps; d != 0; d = d->next) + { + FILE_TIMESTAMP d_mtime = file_mtime (d->file); + check_renamed (d->file); + + if (! d->ignore_mtime) + { +#if 1 + /* %%% In version 4, remove this code completely to + implement not remaking deps if their deps are newer + than their parents. */ + if (d_mtime == NONEXISTENT_MTIME && !d->file->intermediate) + /* We must remake if this dep does not + exist and is not intermediate. */ + must_make = 1; +#endif + + /* Set DEPS_CHANGED if this dep actually changed. */ + deps_changed |= d->changed; + } + + /* Set D->changed if either this dep actually changed, + or its dependent, FILE, is older or does not exist. */ + d->changed |= noexist || d_mtime > this_mtime; + + if (!noexist && ISDB (DB_BASIC|DB_VERBOSE)) + { + const char *fmt = 0; + + if (d->ignore_mtime) + { + if (ISDB (DB_VERBOSE)) + fmt = _("Prerequisite '%s' is order-only for target '%s'.\n"); + } + else if (d_mtime == NONEXISTENT_MTIME) + { + if (ISDB (DB_BASIC)) + fmt = _("Prerequisite '%s' of target '%s' does not exist.\n"); + } + else if (d->changed) + { + if (ISDB (DB_BASIC)) + fmt = _("Prerequisite '%s' is newer than target '%s'.\n"); + } + else if (ISDB (DB_VERBOSE)) + fmt = _("Prerequisite '%s' is older than target '%s'.\n"); + + if (fmt) + { + print_spaces (depth); + printf (fmt, dep_name (d), file->name); + fflush (stdout); + } + } + } + + /* Here depth returns to the value it had when we were called. */ + depth--; + + if (file->double_colon && file->deps == 0) + { + must_make = 1; + DBF (DB_BASIC, + _("Target '%s' is double-colon and has no prerequisites.\n")); + } + else if (!noexist && file->is_target && !deps_changed && file->cmds == 0 + && !always_make_flag) + { + must_make = 0; + DBF (DB_VERBOSE, + _("No recipe for '%s' and no prerequisites actually changed.\n")); + } + else if (!must_make && file->cmds != 0 && always_make_flag) + { + must_make = 1; + DBF (DB_VERBOSE, _("Making '%s' due to always-make flag.\n")); + } + + if (!must_make) + { + if (ISDB (DB_VERBOSE)) + { + print_spaces (depth); + printf (_("No need to remake target '%s'"), file->name); + if (!streq (file->name, file->hname)) + printf (_("; using VPATH name '%s'"), file->hname); + puts ("."); + 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 + VPATH filename if we found one. hfile will be either the + local name if no VPATH or the VPATH name if one was found. */ + + while (file) + { + file->name = file->hname; + file = file->prev; + } + + return us_success; + } + + DBF (DB_BASIC, _("Must remake target '%s'.\n")); + + /* It needs to be remade. If it's VPATH and not reset via GPATH, toss the + VPATH. */ + if (!streq (file->name, file->hname)) + { + DB (DB_BASIC, (_(" Ignoring VPATH name '%s'.\n"), file->hname)); + file->ignore_vpath = 1; + } + + /* Now, take appropriate actions to remake the file. */ + remake_file (file); + + if (file->command_state != cs_finished) + { + DBF (DB_VERBOSE, _("Recipe of '%s' is being run.\n")); + return us_success; + } + + switch (file->update_status) + { + case us_failed: + DBF (DB_BASIC, _("Failed to remake target file '%s'.\n")); + break; + case us_success: + DBF (DB_BASIC, _("Successfully remade target file '%s'.\n")); + break; + case us_question: + DBF (DB_BASIC, _("Target file '%s' needs to be remade under -q.\n")); + break; + case us_none: + break; + } + + file->updated = 1; + return file->update_status; +} + +/* Set FILE's 'updated' flag and re-check its mtime and the mtime's of all + files listed in its 'also_make' member. Under -t, this function also + touches FILE. + + On return, FILE->update_status will no longer be us_none if it was. */ + +void +notice_finished_file (struct file *file) +{ + struct dep *d; + int ran = file->command_state == cs_running; + int touched = 0; + + file->command_state = cs_finished; + file->updated = 1; + + if (touch_flag + /* The update status will be: + us_success if 0 or more commands (+ or ${MAKE}) were run and won; + us_none if this target was not remade; + >us_none if some commands were run and lost. + We touch the target if it has commands which either were not run + or won when they ran (i.e. status is 0). */ + && file->update_status == us_success) + { + if (file->cmds != 0 && file->cmds->any_recurse) + { + /* If all the command lines were recursive, + we don't want to do the touching. */ + unsigned int i; + for (i = 0; i < file->cmds->ncommand_lines; ++i) + if (!(file->cmds->lines_flags[i] & COMMANDS_RECURSE)) + goto have_nonrecursing; + } + else + { + have_nonrecursing: + if (file->phony) + file->update_status = us_success; + /* According to POSIX, -t doesn't affect targets with no cmds. */ + else if (file->cmds != 0) + { + /* Should set file's modification date and do nothing else. */ + file->update_status = touch_file (file); + + /* Pretend we ran a real touch command, to suppress the + "'foo' is up to date" message. */ + commands_started++; + + /* Request for the timestamp to be updated (and distributed + to the double-colon entries). Simply setting ran=1 would + almost have done the trick, but messes up with the also_make + updating logic below. */ + touched = 1; + } + } + } + + if (file->mtime_before_update == UNKNOWN_MTIME) + file->mtime_before_update = file->last_mtime; + + if ((ran && !file->phony) || touched) + { + int i = 0; + + /* If -n, -t, or -q and all the commands are recursive, we ran them so + really check the target's mtime again. Otherwise, assume the target + would have been updated. */ + + if ((question_flag || just_print_flag || touch_flag) && file->cmds) + { + for (i = file->cmds->ncommand_lines; i > 0; --i) + if (! (file->cmds->lines_flags[i-1] & COMMANDS_RECURSE)) + break; + } + + /* If there were no commands at all, it's always new. */ + + else if (file->is_target && file->cmds == 0) + i = 1; + + file->last_mtime = i == 0 ? UNKNOWN_MTIME : NEW_MTIME; + } + + if (file->double_colon) + { + /* If this is a double colon rule and it is the last one to be + updated, propagate the change of modification time to all the + double-colon entries for this file. + + We do it on the last update because it is important to handle + individual entries as separate rules with separate timestamps + while they are treated as targets and then as one rule with the + unified timestamp when they are considered as a prerequisite + of some target. */ + + struct file *f; + FILE_TIMESTAMP max_mtime = file->last_mtime; + + /* Check that all rules were updated and at the same time find + the max timestamp. We assume UNKNOWN_MTIME is newer then + any other value. */ + for (f = file->double_colon; f != 0 && f->updated; f = f->prev) + if (max_mtime != UNKNOWN_MTIME + && (f->last_mtime == UNKNOWN_MTIME || f->last_mtime > max_mtime)) + max_mtime = f->last_mtime; + + if (f == 0) + for (f = file->double_colon; f != 0; f = f->prev) + f->last_mtime = max_mtime; + } + + 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); + } + + /* 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". */ + file->update_status = us_success; +} + +/* Check whether another file (whose mtime is THIS_MTIME) needs updating on + account of a dependency which is file FILE. If it does, store 1 in + *MUST_MAKE_PTR. In the process, update any non-intermediate files that + FILE depends on (including FILE itself). Return nonzero if any updating + failed. */ + +static enum update_status +check_dep (struct file *file, unsigned int depth, + FILE_TIMESTAMP this_mtime, int *must_make_ptr) +{ + struct file *ofile; + struct dep *d; + enum update_status dep_status = us_success; + + ++depth; + start_updating (file); + + /* We might change file if we find a different one via vpath; + remember this one to turn off updating. */ + ofile = file; + + if (file->phony || !file->intermediate) + { + /* If this is a non-intermediate file, update it and record whether it + is newer than THIS_MTIME. */ + FILE_TIMESTAMP mtime; + dep_status = update_file (file, depth); + check_renamed (file); + mtime = file_mtime (file); + check_renamed (file); + if (mtime == NONEXISTENT_MTIME || mtime > this_mtime) + *must_make_ptr = 1; + } + else + { + /* FILE is an intermediate file. */ + FILE_TIMESTAMP mtime; + + if (!file->phony && file->cmds == 0 && !file->tried_implicit) + { + try_implicit_rule (file, depth); + file->tried_implicit = 1; + } + if (file->cmds == 0 && !file->is_target + && default_file != 0 && default_file->cmds != 0) + { + DBF (DB_IMPLICIT, _("Using default commands for '%s'.\n")); + file->cmds = default_file->cmds; + } + + check_renamed (file); + mtime = file_mtime (file); + check_renamed (file); + if (mtime != NONEXISTENT_MTIME && mtime > this_mtime) + /* If the intermediate file actually exists and is newer, then we + should remake from it. */ + *must_make_ptr = 1; + else + { + /* Otherwise, update all non-intermediate files we depend on, if + necessary, and see whether any of them is more recent than the + file on whose behalf we are checking. */ + struct dep *ld; + int deps_running = 0; + + /* If this target is not running, set it's state so that we check it + fresh. It could be it was checked as part of an order-only + prerequisite and so wasn't rebuilt then, but should be now. */ + if (file->command_state != cs_running) + { + /* If the target was waiting for a dependency it has to be + reconsidered, as that dependency might have finished. */ + if (file->command_state == cs_deps_running) + file->considered = 0; + + set_command_state (file, cs_not_started); + } + + 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) + { + enum update_status new; + int maybe_make; + + if (is_updating (d->file)) + { + OSS (error, NILF, _("Circular %s <- %s dependency dropped."), + file->name, d->file->name); + if (ld == 0) + { + file->deps = d->next; + free_dep (d); + d = file->deps; + } + else + { + ld->next = d->next; + free_dep (d); + d = ld->next; + } + continue; + } + + d->file->parent = file; + maybe_make = *must_make_ptr; + new = check_dep (d->file, depth, this_mtime, &maybe_make); + if (new > dep_status) + dep_status = new; + + if (! d->ignore_mtime) + *must_make_ptr = maybe_make; + check_renamed (d->file); + if (dep_status && !keep_going_flag) + break; + + if (d->file->command_state == cs_running + || d->file->command_state == cs_deps_running) + deps_running = 1; + + ld = d; + d = d->next; + } + + if (deps_running) + /* Record that some of FILE's deps are still being made. + This tells the upper levels to wait on processing it until the + commands are finished. */ + set_command_state (file, cs_deps_running); + } + } + + finish_updating (file); + finish_updating (ofile); + + return dep_status; +} + +/* Touch FILE. Return us_success if successful, us_failed if not. */ + +#define TOUCH_ERROR(call) do{ perror_with_name ((call), file->name); \ + return us_failed; }while(0) + +static enum update_status +touch_file (struct file *file) +{ + if (!run_silent) + OS (message, 0, "touch %s", file->name); + + /* Print-only (-n) takes precedence over touch (-t). */ + if (just_print_flag) + return us_success; + +#ifndef NO_ARCHIVES + if (ar_name (file->name)) + return ar_touch (file->name) ? us_failed : us_success; + else +#endif + { + int fd; + + EINTRLOOP (fd, open (file->name, O_RDWR | O_CREAT, 0666)); + if (fd < 0) + TOUCH_ERROR ("touch: open: "); + else + { + struct stat statbuf; + char buf = 'x'; + int e; + + EINTRLOOP (e, fstat (fd, &statbuf)); + if (e < 0) + TOUCH_ERROR ("touch: fstat: "); + /* Rewrite character 0 same as it already is. */ + EINTRLOOP (e, read (fd, &buf, 1)); + if (e < 0) + TOUCH_ERROR ("touch: read: "); + { + off_t o; + EINTRLOOP (o, lseek (fd, 0L, 0)); + if (o < 0L) + TOUCH_ERROR ("touch: lseek: "); + } + EINTRLOOP (e, write (fd, &buf, 1)); + if (e < 0) + TOUCH_ERROR ("touch: write: "); + + /* If file length was 0, we just changed it, so change it back. */ + if (statbuf.st_size == 0) + { + (void) close (fd); + EINTRLOOP (fd, open (file->name, O_RDWR | O_TRUNC, 0666)); + if (fd < 0) + TOUCH_ERROR ("touch: open: "); + } + (void) close (fd); + } + } + + return us_success; +} + +/* Having checked and updated the dependencies of FILE, + do whatever is appropriate to remake FILE itself. + Return the status from executing FILE's commands. */ + +static void +remake_file (struct file *file) +{ + if (file->cmds == 0) + { + if (file->phony) + /* Phony target. Pretend it succeeded. */ + file->update_status = us_success; + else if (file->is_target) + /* This is a nonexistent target file we cannot make. + Pretend it was successfully remade. */ + file->update_status = us_success; + else + { + /* This is a dependency file we cannot remake. Fail. */ + if (!rebuilding_makefiles || !file->dontcare) + complain (file); + file->update_status = us_failed; + } + } + else + { + chop_commands (file->cmds); + + /* The normal case: start some commands. */ + if (!touch_flag || file->cmds->any_recurse) + { + execute_file_commands (file); + return; + } + + /* This tells notice_finished_file it is ok to touch the file. */ + file->update_status = us_success; + } + + /* This does the touching under -t. */ + notice_finished_file (file); +} + +/* Return the mtime of a file, given a 'struct file'. + Caches the time in the struct file to avoid excess stat calls. + + If the file is not found, and SEARCH is nonzero, VPATH searching and + replacement is done. If that fails, a library (-lLIBNAME) is tried and + the library's actual name (/lib/libLIBNAME.a, etc.) is substituted into + FILE. */ + +FILE_TIMESTAMP +f_mtime (struct file *file, int search) +{ + FILE_TIMESTAMP mtime; + unsigned int propagate_timestamp; + + /* File's mtime is not known; must get it from the system. */ + +#ifndef NO_ARCHIVES + if (ar_name (file->name)) + { + /* This file is an archive-member reference. */ + + char *arname, *memname; + struct file *arfile; + time_t member_date; + + /* Find the archive's name. */ + ar_parse_name (file->name, &arname, &memname); + + /* Find the modification time of the archive itself. + Also allow for its name to be changed via VPATH search. */ + arfile = lookup_file (arname); + if (arfile == 0) + arfile = enter_file (strcache_add (arname)); + mtime = f_mtime (arfile, search); + check_renamed (arfile); + if (search && strcmp (arfile->hname, arname)) + { + /* The archive's name has changed. + Change the archive-member reference accordingly. */ + + char *name; + size_t arlen, memlen; + + arlen = strlen (arfile->hname); + memlen = strlen (memname); + + name = alloca (arlen + 1 + memlen + 2); + memcpy (name, arfile->hname, arlen); + name[arlen] = '('; + memcpy (name + arlen + 1, memname, memlen); + name[arlen + 1 + memlen] = ')'; + name[arlen + 1 + memlen + 1] = '\0'; + + /* If the archive was found with GPATH, make the change permanent; + otherwise defer it until later. */ + if (arfile->name == arfile->hname) + rename_file (file, strcache_add (name)); + else + rehash_file (file, strcache_add (name)); + check_renamed (file); + } + + free (arname); + + file->low_resolution_time = 1; + + if (mtime == NONEXISTENT_MTIME) + /* The archive doesn't exist, so its members don't exist either. */ + return NONEXISTENT_MTIME; + + member_date = ar_member_date (file->hname); + mtime = (member_date == (time_t) -1 + ? NONEXISTENT_MTIME + : file_timestamp_cons (file->hname, member_date, 0)); + } + else +#endif + { + mtime = name_mtime (file->name); + + if (mtime == NONEXISTENT_MTIME && search && !file->ignore_vpath) + { + /* If name_mtime failed, search VPATH. */ + const char *name = vpath_search (file->name, &mtime, NULL, NULL); + if (name + /* Last resort, is it a library (-lxxx)? */ + || (file->name[0] == '-' && file->name[1] == 'l' + && (name = library_search (file->name, &mtime)) != 0)) + { + size_t name_len; + + if (mtime != UNKNOWN_MTIME) + /* vpath_search and library_search store UNKNOWN_MTIME + if they didn't need to do a stat call for their work. */ + file->last_mtime = mtime; + + /* If we found it in VPATH, see if it's in GPATH too; if so, + change the name right now; if not, defer until after the + dependencies are updated. */ +#ifndef VMS + name_len = strlen (name) - strlen (file->name) - 1; +#else + name_len = strlen (name) - strlen (file->name); + if (name[name_len - 1] == '/') + name_len--; +#endif + if (gpath_search (name, name_len)) + { + rename_file (file, name); + check_renamed (file); + return file_mtime (file); + } + + rehash_file (file, name); + check_renamed (file); + /* If the result of a vpath search is -o or -W, preserve it. + Otherwise, find the mtime of the resulting file. */ + if (mtime != OLD_MTIME && mtime != NEW_MTIME) + mtime = name_mtime (name); + } + } + } + + /* Files can have bogus timestamps that nothing newly made will be + "newer" than. Updating their dependents could just result in loops. + So notify the user of the anomaly with a warning. + + We only need to do this once, for now. */ + + if (!clock_skew_detected + && mtime != NONEXISTENT_MTIME && mtime != NEW_MTIME + && !file->updated) + { + static FILE_TIMESTAMP adjusted_now; + + FILE_TIMESTAMP adjusted_mtime = mtime; + +#if defined(WINDOWS32) || defined(__MSDOS__) + /* Experimentation has shown that FAT filesystems can set file times + up to 3 seconds into the future! Play it safe. */ + +#define FAT_ADJ_OFFSET (FILE_TIMESTAMP) 3 + + FILE_TIMESTAMP adjustment = FAT_ADJ_OFFSET << FILE_TIMESTAMP_LO_BITS; + if (ORDINARY_MTIME_MIN + adjustment <= adjusted_mtime) + adjusted_mtime -= adjustment; +#elif defined(__EMX__) + /* FAT filesystems round time to the nearest even second! + Allow for any file (NTFS or FAT) to perhaps suffer from this + brain damage. */ + FILE_TIMESTAMP adjustment = (((FILE_TIMESTAMP_S (adjusted_mtime) & 1) == 0 + && FILE_TIMESTAMP_NS (adjusted_mtime) == 0) + ? (FILE_TIMESTAMP) 1 << FILE_TIMESTAMP_LO_BITS + : 0); +#endif + + /* If the file's time appears to be in the future, update our + concept of the present and try once more. */ + if (adjusted_now < adjusted_mtime) + { + int resolution; + FILE_TIMESTAMP now = file_timestamp_now (&resolution); + adjusted_now = now + (resolution - 1); + if (adjusted_now < adjusted_mtime) + { + double from_now = + (FILE_TIMESTAMP_S (mtime) - FILE_TIMESTAMP_S (now) + + ((FILE_TIMESTAMP_NS (mtime) - FILE_TIMESTAMP_NS (now)) + / 1e9)); + char from_now_string[100]; + + 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); + OSS (error, NILF, + _("Warning: File '%s' has modification time %s s in the future"), + file->name, from_now_string); + clock_skew_detected = 1; + } + } + } + + /* Store the mtime into all the entries for this file for which it is safe + to do so: avoid propagating timestamps to double-colon rules that haven't + been examined so they're run or not based on the pre-update timestamp. */ + if (file->double_colon) + file = file->double_colon; + + propagate_timestamp = file->updated; + do + { + /* If this file is not implicit but it is intermediate then it was + made so by the .INTERMEDIATE target. If this file has never + been built by us but was found now, it existed before make + started. So, turn off the intermediate bit so make doesn't + delete it, since it didn't create it. */ + if (mtime != NONEXISTENT_MTIME && file->command_state == cs_not_started + && !file->tried_implicit && file->intermediate) + file->intermediate = 0; + + if (file->updated == propagate_timestamp) + file->last_mtime = mtime; + file = file->prev; + } + while (file != 0); + + return mtime; +} + + +/* Return the mtime of the file or archive-member reference NAME. */ + +/* First, we check with stat(). If the file does not exist, then we return + NONEXISTENT_MTIME. If it does, and the symlink check flag is set, then + examine each indirection of the symlink and find the newest mtime. + This causes one duplicate stat() when -L is being used, but the code is + much cleaner. */ + +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[MAX_PATH+1], *tstart, *tend; + const char *p = name + strlen (name); + + /* Remove any trailing slashes and "."/"..". MS-Windows stat + fails on valid directories if NAME ends in a slash, and we need + to emulate the Posix behavior where stat on "foo/" or "foo/." + succeeds ONLY if "foo" is a directory. */ + if (p > name) + { + memcpy (tem, name, p - name + 1); + tstart = tem; + if (tstart[1] == ':') + tstart += 2; + tend = tem + (p - name - 1); + if (*tend == '.' && tend > tstart) + tend--; + if (*tend == '.' && tend > tstart) + tend--; + for ( ; tend > tstart && ISDIRSEP (*tend); tend--) + *tend = '\0'; + } + else + { + tem[0] = '\0'; + 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; + e = -1; + } + } +#else + EINTRLOOP (e, stat (name, &st)); +#endif + if (e == 0) + mtime = FILE_TIMESTAMP_STAT_MODTIME (name, st); + else if (errno == ENOENT || errno == ENOTDIR) + mtime = NONEXISTENT_MTIME; + else + { + perror_with_name ("stat: ", name); + return NONEXISTENT_MTIME; + } + + /* If we get here we either found it, or it doesn't exist. + If it doesn't exist see if we can use a symlink mtime instead. */ + +#ifdef MAKE_SYMLINKS +#ifndef S_ISLNK +# define S_ISLNK(_m) (((_m)&S_IFMT)==S_IFLNK) +#endif + if (check_symlink_flag && strlen (name) <= GET_PATH_MAX) + { + PATH_VAR (lpath); + + /* Check each symbolic link segment (if any). Find the latest mtime + amongst all of them (and the target file of course). + Note that we have already successfully dereferenced all the links + above. So, if we run into any error trying to lstat(), or + readlink(), or whatever, something bizarre-o happened. Just give up + and use whatever mtime we've already computed at that point. */ + strcpy (lpath, name); + while (1) + { + FILE_TIMESTAMP ltime; + PATH_VAR (lbuf); + long llen; + char *p; + + EINTRLOOP (e, lstat (lpath, &st)); + if (e) + { + /* Just take what we have so far. */ + if (errno != ENOENT && errno != ENOTDIR) + perror_with_name ("lstat: ", lpath); + break; + } + + /* If this is not a symlink, we're done (we started with the real + file's mtime so we don't need to test it again). */ + if (!S_ISLNK (st.st_mode)) + break; + + /* If this mtime is newer than what we had, keep the new one. */ + ltime = FILE_TIMESTAMP_STAT_MODTIME (lpath, st); + if (ltime > mtime) + mtime = ltime; + + /* Set up to check the file pointed to by this link. */ + EINTRLOOP (llen, readlink (lpath, lbuf, GET_PATH_MAX - 1)); + if (llen < 0) + { + /* Eh? Just take what we have. */ + perror_with_name ("readlink: ", lpath); + break; + } + lbuf[llen] = '\0'; + + /* If the target is fully-qualified or the source is just a + filename, then the new path is the target. Otherwise it's the + source directory plus the target. */ + if (lbuf[0] == '/' || (p = strrchr (lpath, '/')) == NULL) + strcpy (lpath, lbuf); + else if ((p - lpath) + llen + 2 > GET_PATH_MAX) + /* Eh? Path too long! Again, just go with what we have. */ + break; + else + /* Create the next step in the symlink chain. */ + strcpy (p+1, lbuf); + } + } +#endif + + return mtime; +} + + +/* Search for a library file specified as -lLIBNAME, searching for a + suitable library file in the system library directories and the VPATH + directories. */ + +static const char * +library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr) +{ + static const char *dirs[] = + { +#ifndef _AMIGA + "/lib", + "/usr/lib", +#endif +#if defined(WINDOWS32) && !defined(LIBDIR) +/* + * This is completely up to the user at product install time. Just define + * a placeholder. + */ +#define LIBDIR "." +#endif + LIBDIR, /* Defined by configuration. */ + 0 + }; + + const char *file = 0; + char *libpatterns; + FILE_TIMESTAMP mtime; + + /* Loop variables for the libpatterns value. */ + char *p; + const char *p2; + size_t len; + size_t liblen; + + /* Information about the earliest (in the vpath sequence) match. */ + unsigned int best_vpath = 0, best_path = 0; + + const char **dp; + + libpatterns = xstrdup (variable_expand ("$(.LIBPATTERNS)")); + + /* Skip the '-l'. */ + lib += 2; + liblen = strlen (lib); + + /* Loop through all the patterns in .LIBPATTERNS, and search on each one. + To implement the linker-compatible behavior we have to search through + all entries in .LIBPATTERNS and choose the "earliest" one. */ + p2 = libpatterns; + while ((p = find_next_token (&p2, &len)) != 0) + { + static char *buf = NULL; + static size_t buflen = 0; + static size_t libdir_maxlen = 0; + static unsigned int std_dirs = 0; + char *libbuf; + + /* Expand the pattern using LIB as a replacement. */ + { + char c = p[len]; + char *p3, *p4; + + p[len] = '\0'; + p3 = find_percent (p); + if (!p3) + { + /* Give a warning if there is no pattern. */ + OS (error, NILF, + _(".LIBPATTERNS element '%s' is not a pattern"), p); + p[len] = c; + continue; + } + 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. */ + mtime = name_mtime (libbuf); + if (mtime != NONEXISTENT_MTIME) + { + if (mtime_ptr != 0) + *mtime_ptr = mtime; + file = strcache_add (libbuf); + /* This by definition will have the best index, so stop now. */ + break; + } + + /* Now try VPATH search on that. */ + + { + unsigned int vpath_index, path_index; + const char* f = vpath_search (libbuf, mtime_ptr ? &mtime : NULL, + &vpath_index, &path_index); + if (f) + { + /* If we have a better match, record it. */ + if (file == 0 || + vpath_index < best_vpath || + (vpath_index == best_vpath && path_index < best_path)) + { + file = f; + best_vpath = vpath_index; + best_path = path_index; + + if (mtime_ptr != 0) + *mtime_ptr = mtime; + } + } + } + + /* Now try the standard set of directories. */ + + if (!buflen) + { + for (dp = dirs; *dp != 0; ++dp) + { + size_t l = strlen (*dp); + if (l > libdir_maxlen) + libdir_maxlen = l; + std_dirs++; + } + buflen = strlen (libbuf); + buf = xmalloc (libdir_maxlen + buflen + 2); + } + else if (buflen < strlen (libbuf)) + { + buflen = strlen (libbuf); + buf = xrealloc (buf, libdir_maxlen + buflen + 2); + } + + { + /* Use the last std_dirs index for standard directories. This + was it will always be greater than the VPATH index. */ + unsigned int vpath_index = ~((unsigned int)0) - std_dirs; + + for (dp = dirs; *dp != 0; ++dp) + { + sprintf (buf, "%s/%s", *dp, libbuf); + mtime = name_mtime (buf); + if (mtime != NONEXISTENT_MTIME) + { + if (file == 0 || vpath_index < best_vpath) + { + file = strcache_add (buf); + best_vpath = vpath_index; + + if (mtime_ptr != 0) + *mtime_ptr = mtime; + } + } + + vpath_index++; + } + } + + } + + free (libpatterns); + return file; +} diff --git a/local/recipes/dev/gnu-make/source/src/remote-cstms.c b/local/recipes/dev/gnu-make/source/src/remote-cstms.c new file mode 100644 index 0000000000..c8543f9fd9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/remote-cstms.c @@ -0,0 +1,297 @@ +/* GNU Make remote job exportation interface to the Customs daemon. + THIS CODE IS NOT SUPPORTED BY THE GNU PROJECT. + Please do not send bug reports or questions about it to + the Make maintainers. + +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include "filedef.h" +#include "job.h" +#include "commands.h" +#include "debug.h" + +#if HAVE_SYS_TIME_H +# include +#endif +#include + +#include "customs.h" + +char *remote_description = "Customs"; + +/* File name of the Customs 'export' client command. + A full path name can be used to avoid some path-searching overhead. */ +#define EXPORT_COMMAND "/usr/local/bin/export" + +/* ExportPermit gotten by start_remote_job_p, and used by start_remote_job. */ +static ExportPermit permit; + +/* Normalized path name of the current directory. */ +static char *normalized_cwd; + +/* Call once at startup even if no commands are run. */ + +void +remote_setup (void) +{ +} + +/* Called before exit. */ + +void +remote_cleanup (void) +{ +} + +/* Return nonzero if the next job should be done remotely. */ + +int +start_remote_job_p (int first_p) +{ + static int inited = 0; + int status; + int njobs; + + if (!inited) + { + /* Allow the user to turn off job exportation (useful while he is + debugging Customs, for example). */ + if (getenv ("GNU_MAKE_NO_CUSTOMS") != 0) + { + inited = -1; + return 0; + } + + if (ISDB (DB_JOBS)) + Rpc_Debug (1); + + /* Ping the daemon once to see if it is there. */ + inited = Customs_Ping () == RPC_SUCCESS ? 1 : -1; + + if (starting_directory == 0) + /* main couldn't figure it out. */ + inited = -1; + else + { + /* Normalize the current directory path name to something + that should work on all machines exported to. */ + + normalized_cwd = xmalloc (GET_PATH_MAX); + strcpy (normalized_cwd, starting_directory); + if (Customs_NormPath (normalized_cwd, GET_PATH_MAX) < 0) + /* Path normalization failure means using Customs + won't work, but it's not really an error. */ + inited = -1; + } + } + + if (inited < 0) + return 0; + + njobs = job_slots_used; + if (!first_p) + njobs -= 1; /* correction for being called from reap_children() */ + + /* the first job should run locally, or, if the -l flag is given, we use + that as clue as to how many local jobs should be scheduled locally */ + if (max_load_average < 0 && njobs == 0 || njobs < max_load_average) + return 0; + + status = Customs_Host (EXPORT_SAME, &permit); + if (status != RPC_SUCCESS) + { + DB (DB_JOBS, (_("Customs won't export: %s\n"), + Rpc_ErrorMessage (status))); + return 0; + } + + return !CUSTOMS_FAIL (&permit.addr); +} + +/* Start a remote job running the command in ARGV, with environment from + ENVP. It gets standard input from STDIN_FD. On failure, return + nonzero. On success, return zero, and set *USED_STDIN to nonzero if it + will actually use STDIN_FD, zero if not, set *ID_PTR to a unique + identification, and set *IS_REMOTE to nonzero if the job is remote, zero + if it is local (meaning *ID_PTR is a process ID). */ + +int +start_remote_job (char **argv, char **envp, int stdin_fd, + int *is_remote, pid_t *id_ptr, int *used_stdin) +{ + char waybill[MAX_DATA_SIZE], msg[128]; + struct hostent *host; + struct timeval timeout; + struct sockaddr_in sin; + int len; + int retsock, retport, sock; + Rpc_Stat status; + pid_t pid; + + /* Create the return socket. */ + retsock = Rpc_UdpCreate (True, 0); + if (retsock < 0) + { + O (error, NILF, "exporting: Couldn't create return socket."); + return 1; + } + + /* Get the return socket's port number. */ + len = sizeof (sin); + if (getsockname (retsock, (struct sockaddr *) &sin, &len) < 0) + { + (void) close (retsock); + perror_with_name ("exporting: ", "getsockname"); + return 1; + } + retport = sin.sin_port; + + /* Create the TCP socket for talking to the remote child. */ + sock = Rpc_TcpCreate (False, 0); + + /* Create a WayBill to give to the server. */ + len = Customs_MakeWayBill (&permit, normalized_cwd, argv[0], argv, + envp, retport, waybill); + + /* Modify the waybill for the child's uid/gid. */ + { + WayBill *wb = (WayBill *) waybill; + wb->ruid = wb->euid; + wb->rgid = wb->egid; + } + + /* Send the request to the server, timing out in 20 seconds. */ + timeout.tv_usec = 0; + timeout.tv_sec = 20; + sin.sin_family = AF_INET; + sin.sin_port = htons (Customs_Port ()); + sin.sin_addr = permit.addr; + status = Rpc_Call (sock, &sin, (Rpc_Proc) CUSTOMS_IMPORT, + len, (Rpc_Opaque) waybill, + sizeof (msg), (Rpc_Opaque) msg, + 1, &timeout); + + host = gethostbyaddr ((char *)&permit.addr, sizeof(permit.addr), AF_INET); + + { + const char *hnm = host ? host->h_name : inet_ntoa (permit.addr); + size_t hlen = strlen (hnm); + + if (status != RPC_SUCCESS) + { + const char *err = Rpc_ErrorMessage (status); + (void) close (retsock); + (void) close (sock); + error (NILF, hlen + strlen (err), + "exporting to %s: %s", hnm, err); + return 1; + } + else if (msg[0] != 'O' || msg[1] != 'k' || msg[2] != '\0') + { + (void) close (retsock); + (void) close (sock); + error (NILF, hlen + strlen (msg), "exporting to %s: %s", hnm, msg); + return 1; + } + else + { + error (NILF, hlen + INTSTR_LENGTH, + "*** exported to %s (id %u)", hnm, permit.id); + } + + fflush (stdout); + fflush (stderr); + } + + pid = vfork (); + if (pid < 0) + { + /* The fork failed! */ + perror_with_name ("fork", ""); + return 1; + } + else if (pid == 0) + { + /* Child side. Run 'export' to handle the connection. */ + 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 }; + + /* Set up the arguments. */ + (void) sprintf (sock_buf, "%d", sock); + (void) sprintf (retsock_buf, "%d", retsock); + (void) sprintf (id_buf, "%x", permit.id); + + /* Get the right stdin. */ + if (stdin_fd != 0) + (void) dup2 (stdin_fd, 0); + + /* Unblock signals in the child. */ + unblock_all_sigs (); + + /* Run the command. */ + exec_command (new_argv, envp); + } + + /* Parent side. Return the 'export' process's ID. */ + (void) close (retsock); + (void) close (sock); + *is_remote = 0; + *id_ptr = pid; + *used_stdin = 1; + return 0; +} + +/* Get the status of a dead remote child. Block waiting for one to die + if BLOCK is nonzero. Set *EXIT_CODE_PTR to the exit status, *SIGNAL_PTR + to the termination signal or zero if it exited normally, and *COREDUMP_PTR + nonzero if it dumped core. Return the ID of the child that died, + 0 if we would have to block and !BLOCK, or < 0 if there were none. */ + +int +remote_status (int *exit_code_ptr, int *signal_ptr, int *coredump_ptr, + int block) +{ + return -1; +} + +/* Block asynchronous notification of remote child death. + If this notification is done by raising the child termination + signal, do not block that signal. */ +void +block_remote_children (void) +{ + return; +} + +/* Restore asynchronous notification of remote child death. + If this is done by raising the child termination signal, + do not unblock that signal. */ +void +unblock_remote_children (void) +{ + return; +} + +/* Send signal SIG to child ID. Return 0 if successful, -1 if not. */ +int +remote_kill (pid_t id, int sig) +{ + return -1; +} diff --git a/local/recipes/dev/gnu-make/source/src/remote-stub.c b/local/recipes/dev/gnu-make/source/src/remote-stub.c new file mode 100644 index 0000000000..d7cc260c5d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/remote-stub.c @@ -0,0 +1,99 @@ +/* Template for the remote job exportation interface to GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include "filedef.h" +#include "job.h" +#include "commands.h" + + +char *remote_description = 0; + +/* Call once at startup even if no commands are run. */ + +void +remote_setup (void) +{ +} + +/* Called before exit. */ + +void +remote_cleanup (void) +{ +} + +/* Return nonzero if the next job should be done remotely. */ + +int +start_remote_job_p (int first_p UNUSED) +{ + return 0; +} + +/* Start a remote job running the command in ARGV, + with environment from ENVP. It gets standard input from STDIN_FD. On + failure, return nonzero. On success, return zero, and set *USED_STDIN + to nonzero if it will actually use STDIN_FD, zero if not, set *ID_PTR to + a unique identification, and set *IS_REMOTE to zero if the job is local, + nonzero if it is remote (meaning *ID_PTR is a process ID). */ + +int +start_remote_job (char **argv UNUSED, char **envp UNUSED, int stdin_fd UNUSED, + int *is_remote UNUSED, pid_t *id_ptr UNUSED, + int *used_stdin UNUSED) +{ + return -1; +} + +/* Get the status of a dead remote child. Block waiting for one to die + if BLOCK is nonzero. Set *EXIT_CODE_PTR to the exit status, *SIGNAL_PTR + to the termination signal or zero if it exited normally, and *COREDUMP_PTR + nonzero if it dumped core. Return the ID of the child that died, + 0 if we would have to block and !BLOCK, or < 0 if there were none. */ + +int +remote_status (int *exit_code_ptr UNUSED, int *signal_ptr UNUSED, + int *coredump_ptr UNUSED, int block UNUSED) +{ + errno = ECHILD; + return -1; +} + +/* Block asynchronous notification of remote child death. + If this notification is done by raising the child termination + signal, do not block that signal. */ +void +block_remote_children (void) +{ + return; +} + +/* Restore asynchronous notification of remote child death. + If this is done by raising the child termination signal, + do not unblock that signal. */ +void +unblock_remote_children (void) +{ + return; +} + +/* Send signal SIG to child ID. Return 0 if successful, -1 if not. */ +int +remote_kill (pid_t id UNUSED, int sig UNUSED) +{ + return -1; +} diff --git a/local/recipes/dev/gnu-make/source/src/rule.c b/local/recipes/dev/gnu-make/source/src/rule.c new file mode 100644 index 0000000000..0fc64bc871 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/rule.c @@ -0,0 +1,622 @@ +/* Pattern and suffix rule internals for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include + +#include "filedef.h" +#include "dep.h" +#include "job.h" +#include "commands.h" +#include "variable.h" +#include "rule.h" + +static void freerule (struct rule *rule, struct rule *lastrule); + +/* Chain of all pattern rules. */ + +struct rule *pattern_rules; + +/* Pointer to last rule in the chain, so we can add onto the end. */ + +struct rule *last_pattern_rule; + +/* Number of rules in the chain. */ + +unsigned int num_pattern_rules; + +/* Maximum number of target patterns of any pattern rule. */ + +unsigned int max_pattern_targets; + +/* Maximum number of dependencies of any pattern rule. */ + +unsigned int max_pattern_deps; + +/* Maximum length of the name of a dependencies of any pattern rule. */ + +size_t max_pattern_dep_length; + +/* Pointer to structure for the file .SUFFIXES + whose dependencies are the suffixes to be searched. */ + +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, + possibly removing the rule completely when appropriate. + + Add any global EXTRA_PREREQS here as well. */ + +void +snap_implicit_rules (void) +{ + char *name = NULL; + size_t namelen = 0; + struct rule *rule; + struct dep *dep; + struct dep *prereqs = expand_extra_prereqs (lookup_variable (STRING_SIZE_TUPLE(".EXTRA_PREREQS"))); + unsigned int pre_deps = 0; + + max_pattern_dep_length = 0; + + for (dep = prereqs; dep; dep = dep->next) + { + 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; + } + + num_pattern_rules = max_pattern_targets = max_pattern_deps = 0; + + for (rule = pattern_rules; rule; rule = rule->next) + { + unsigned int ndeps = pre_deps; + struct dep *lastdep = NULL; + + ++num_pattern_rules; + + if (rule->num > max_pattern_targets) + max_pattern_targets = rule->num; + + for (dep = rule->deps; dep != 0; dep = dep->next) + { + const char *dname = dep_name (dep); + size_t len = strlen (dname); + +#ifdef VMS + const char *p = strrchr (dname, ']'); + const char *p2; + if (p == 0) + p = strrchr (dname, ':'); + p2 = p ? strchr (p, '%') : 0; +#else + const char *p = strrchr (dname, '/'); + const char *p2 = p ? strchr (p, '%') : 0; +#endif + ndeps++; + + if (len > max_pattern_dep_length) + max_pattern_dep_length = len; + + if (!dep->next) + lastdep = dep; + + if (p2) + { + /* There is a slash before the % in the dep name. + Extract the directory name. */ + if (p == dname) + ++p; + if ((size_t) (p - dname) > namelen) + { + namelen = p - dname; + name = xrealloc (name, namelen + 1); + } + memcpy (name, dname, p - dname); + name[p - dname] = '\0'; + + /* In the deps of an implicit rule the 'changed' flag + actually indicates that the dependency is in a + nonexistent subdirectory. */ + + dep->changed = !dir_file_exists_p (name, ""); + } + else + /* This dependency does not reside in a subdirectory. */ + dep->changed = 0; + } + + if (prereqs) + { + if (lastdep) + lastdep->next = copy_dep_chain (prereqs); + else + rule->deps = copy_dep_chain (prereqs); + } + + if (ndeps > max_pattern_deps) + max_pattern_deps = ndeps; + } + + free (name); + free_dep_chain (prereqs); +} + +/* Create a pattern rule from a suffix rule. + TARGET is the target suffix; SOURCE is the source suffix. + CMDS are the commands. + If TARGET is nil, it means the target pattern should be '(%.o)'. + If SOURCE is nil, it means there should be no deps. */ + +static void +convert_suffix_rule (const char *target, const char *source, + struct commands *cmds) +{ + const char **names, **percents; + struct dep *deps; + + names = xmalloc (sizeof (const char *)); + percents = xmalloc (sizeof (const char *)); + + if (target == 0) + { + /* Special case: TARGET being nil means we are defining a '.X.a' suffix + rule; the target pattern is always '(%.o)'. */ +#ifdef VMS + *names = strcache_add_len ("(%.obj)", 7); +#else + *names = strcache_add_len ("(%.o)", 5); +#endif + *percents = *names + 1; + } + else + { + /* Construct the target name. */ + size_t len = strlen (target); + char *p = alloca (1 + len + 1); + p[0] = '%'; + memcpy (p + 1, target, len + 1); + *names = strcache_add_len (p, len + 1); + *percents = *names; + } + + if (source == 0) + deps = 0; + else + { + /* Construct the dependency name. */ + size_t len = strlen (source); + char *p = alloca (1 + len + 1); + p[0] = '%'; + memcpy (p + 1, source, len + 1); + deps = alloc_dep (); + deps->name = strcache_add_len (p, len + 1); + } + + create_pattern_rule (names, percents, 1, 0, deps, cmds, 0); +} + +/* Convert old-style suffix rules to pattern rules. + All rules for the suffixes on the .SUFFIXES list are converted and added to + the chain of pattern rules. */ + +void +convert_to_pattern (void) +{ + struct dep *d, *d2; + char *rulename; + + /* We will compute every potential suffix rule (.x.y) from the list of + suffixes in the .SUFFIXES target's dependencies and see if it exists. + First find the longest of the suffixes. */ + + maxsuffix = 0; + for (d = suffix_file->deps; d != 0; d = d->next) + { + size_t l = strlen (dep_name (d)); + if (l > maxsuffix) + maxsuffix = l; + } + + /* Space to construct the suffix rule target name. */ + rulename = alloca ((maxsuffix * 2) + 1); + + for (d = suffix_file->deps; d != 0; d = d->next) + { + size_t slen; + + /* Make a rule that is just the suffix, with no deps or commands. + This rule exists solely to disqualify match-anything rules. */ + convert_suffix_rule (dep_name (d), 0, 0); + + if (d->file->cmds != 0) + /* Record a pattern for this suffix's null-suffix rule. */ + convert_suffix_rule ("", dep_name (d), d->file->cmds); + + /* Add every other suffix to this one and see if it exists as a + two-suffix rule. */ + slen = strlen (dep_name (d)); + memcpy (rulename, dep_name (d), slen); + + for (d2 = suffix_file->deps; d2 != 0; d2 = d2->next) + { + struct file *f; + size_t s2len; + + s2len = strlen (dep_name (d2)); + + /* Can't build something from itself. */ + if (slen == s2len && streq (dep_name (d), dep_name (d2))) + continue; + + memcpy (rulename + slen, dep_name (d2), s2len + 1); + f = lookup_file (rulename); + + /* No target, or no commands: it can't be a suffix rule. */ + if (f == 0 || f->cmds == 0) + continue; + + /* POSIX says that suffix rules can't have prerequisites. + In POSIX mode, don't make this a suffix rule. Previous versions + of GNU make did treat this as a suffix rule and ignored the + prerequisites, which is bad. In the future we'll do the same as + POSIX, but for now preserve the old behavior and warn about it. */ + if (f->deps != 0) + { + if (posix_pedantic) + continue; + error (&f->cmds->fileinfo, 0, + _("warning: ignoring prerequisites on suffix rule definition")); + } + + if (s2len == 2 && rulename[slen] == '.' && rulename[slen + 1] == 'a') + /* A suffix rule '.X.a:' generates the pattern rule '(%.o): %.X'. + It also generates a normal '%.a: %.X' rule below. */ + convert_suffix_rule (NULL, /* Indicates '(%.o)'. */ + dep_name (d), + f->cmds); + + /* The suffix rule '.X.Y:' is converted + to the pattern rule '%.Y: %.X'. */ + convert_suffix_rule (dep_name (d2), dep_name (d), f->cmds); + } + } +} + + +/* Install the pattern rule RULE (whose fields have been filled in) at the end + of the list (so that any rules previously defined will take precedence). + If this rule duplicates a previous one (identical target and dependencies), + the old one is replaced if OVERRIDE is nonzero, otherwise this new one is + thrown out. When an old rule is replaced, the new one is put at the end of + the list. Return nonzero if RULE is used; zero if not. */ + +static int +new_pattern_rule (struct rule *rule, int override) +{ + struct rule *r, *lastrule; + unsigned int i, j; + + rule->in_use = 0; + rule->terminal = 0; + + rule->next = 0; + + /* Search for an identical rule. */ + lastrule = 0; + for (r = pattern_rules; r != 0; lastrule = r, r = r->next) + for (i = 0; i < rule->num; ++i) + { + for (j = 0; j < r->num; ++j) + if (!streq (rule->targets[i], r->targets[j])) + break; + /* If all the targets matched... */ + if (j == r->num) + { + struct dep *d, *d2; + for (d = rule->deps, d2 = r->deps; + d != 0 && d2 != 0; d = d->next, d2 = d2->next) + if (!streq (dep_name (d), dep_name (d2))) + break; + if (d == 0 && d2 == 0) + { + /* All the dependencies matched. */ + if (override) + { + /* Remove the old rule. */ + freerule (r, lastrule); + /* Install the new one. */ + if (pattern_rules == 0) + pattern_rules = rule; + else + last_pattern_rule->next = rule; + last_pattern_rule = rule; + + /* We got one. Stop looking. */ + goto matched; + } + else + { + /* The old rule stays intact. Destroy the new one. */ + freerule (rule, (struct rule *) 0); + return 0; + } + } + } + } + + matched:; + + if (r == 0) + { + /* There was no rule to replace. */ + if (pattern_rules == 0) + pattern_rules = rule; + else + last_pattern_rule->next = rule; + last_pattern_rule = rule; + } + + return 1; +} + + +/* Install an implicit pattern rule based on the three text strings + in the structure P points to. These strings come from one of + the arrays of default implicit pattern rules. + TERMINAL specifies what the 'terminal' field of the rule should be. */ + +void +install_pattern_rule (struct pspec *p, int terminal) +{ + struct rule *r; + const char *ptr; + + r = xmalloc (sizeof (struct rule)); + + r->num = 1; + 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; + r->suffixes[0] = find_percent_cached (&r->targets[0]); + assert (r->suffixes[0] != NULL); + ++r->suffixes[0]; + + ptr = p->dep; + r->deps = PARSE_SIMPLE_SEQ ((char **)&ptr, struct dep); + + if (new_pattern_rule (r, 0)) + { + r->terminal = terminal ? 1 : 0; + r->cmds = xmalloc (sizeof (struct commands)); + r->cmds->fileinfo.filenm = 0; + r->cmds->fileinfo.lineno = 0; + r->cmds->fileinfo.offset = 0; + /* These will all be string literals, but we malloc space for them + anyway because somebody might want to free them later. */ + r->cmds->commands = xstrdup (p->commands); + r->cmds->command_lines = 0; + r->cmds->recipe_prefix = RECIPEPREFIX_DEFAULT; + } +} + + +/* Free all the storage used in RULE and take it out of the + pattern_rules chain. LASTRULE is the rule whose next pointer + points to RULE. */ + +static void +freerule (struct rule *rule, struct rule *lastrule) +{ + struct rule *next = rule->next; + + free_dep_chain (rule->deps); + + /* MSVC erroneously warns without a cast here. */ + 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: + * If the commands came from a suffix rule, they could also be in + the 'struct file's for other suffix rules or plain targets given + on the same makefile line. + * If two suffixes that together make a two-suffix rule were each + given twice in the .SUFFIXES list, and in the proper order, two + identical pattern rules would be created and the second one would + be discarded here, but both would contain the same 'struct commands' + pointer from the 'struct file' for the suffix rule. */ + + free (rule); + + if (pattern_rules == rule) + if (lastrule != 0) + abort (); + else + pattern_rules = next; + else if (lastrule != 0) + lastrule->next = next; + if (last_pattern_rule == rule) + last_pattern_rule = lastrule; +} + +/* Create a new pattern rule with the targets in the nil-terminated array + TARGETS. TARGET_PERCENTS is an array of pointers to the % in each element + of TARGETS. N is the number of items in the array (not counting the nil + element). The new rule has dependencies DEPS and commands from COMMANDS. + It is a terminal rule if TERMINAL is nonzero. This rule overrides + identical rules with different commands if OVERRIDE is nonzero. + + The storage for TARGETS and its elements and TARGET_PERCENTS is used and + must not be freed until the rule is destroyed. */ + +void +create_pattern_rule (const char **targets, const char **target_percents, + unsigned short n, int terminal, struct dep *deps, + struct commands *commands, int override) +{ + unsigned int i; + struct rule *r = xmalloc (sizeof (struct rule)); + + r->num = n; + r->cmds = commands; + r->deps = deps; + r->targets = targets; + r->suffixes = target_percents; + r->lens = xmalloc (n * sizeof (unsigned int)); + r->_defn = NULL; + + for (i = 0; i < n; ++i) + { + r->lens[i] = (unsigned int) strlen (targets[i]); + assert (r->suffixes[i] != NULL); + ++r->suffixes[i]; + } + + if (new_pattern_rule (r, override)) + r->terminal = terminal ? 1 : 0; +} + +/* Print the data base of rules. */ + +static void /* Useful to call from gdb. */ +print_rule (struct rule *r) +{ + fputs (get_rule_defn (r), stdout); + putchar ('\n'); + + if (r->cmds != 0) + print_commands (r->cmds); +} + +void +print_rule_data_base (void) +{ + unsigned int rules, terminal; + struct rule *r; + + puts (_("\n# Implicit Rules")); + + rules = terminal = 0; + for (r = pattern_rules; r != 0; r = r->next) + { + ++rules; + + putchar ('\n'); + print_rule (r); + + if (r->terminal) + ++terminal; + } + + if (rules == 0) + puts (_("\n# No implicit rules.")); + else + { + printf (_("\n# %u implicit rules, %u (%.1f%%) terminal."), + rules, terminal, (double) terminal / (double) rules * 100.0); + } + + if (num_pattern_rules != rules) + { + /* This can happen if a fatal error was detected while reading the + makefiles and thus count_implicit_rule_limits wasn't called yet. */ + if (num_pattern_rules != 0) + ONN (fatal, NILF, _("BUG: num_pattern_rules is wrong! %u != %u"), + num_pattern_rules, rules); + } +} diff --git a/local/recipes/dev/gnu-make/source/src/rule.h b/local/recipes/dev/gnu-make/source/src/rule.h new file mode 100644 index 0000000000..cadac3f3b1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/rule.h @@ -0,0 +1,59 @@ +/* Definitions for using pattern rules in GNU Make. +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 +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 . */ + + +/* Structure used for pattern (implicit) rules. */ + +struct rule + { + struct rule *next; + const char **targets; /* Targets of the rule. */ + unsigned int *lens; /* Lengths of each target. */ + 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. */ + }; + +/* For calling install_pattern_rule. */ +struct pspec + { + const char *target, *dep, *commands; + }; + + +extern struct rule *pattern_rules; +extern struct rule *last_pattern_rule; +extern unsigned int num_pattern_rules; + +extern unsigned int max_pattern_deps; +extern unsigned int max_pattern_targets; +extern size_t max_pattern_dep_length; + +extern struct file *suffix_file; + + +void snap_implicit_rules (void); +void convert_to_pattern (void); +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/local/recipes/dev/gnu-make/source/src/shuffle.c b/local/recipes/dev/gnu-make/source/src/shuffle.c new file mode 100644 index 0000000000..d1a52a0da2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/shuffle.c @@ -0,0 +1,237 @@ +/* Provide prerequisite shuffle support. +Copyright (C) 2022 Free Software Foundation, Inc. +This file is part of GNU Make. + +GNU Make is free software; you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include "shuffle.h" + +#include "filedef.h" +#include "dep.h" + +/* Supported shuffle modes. */ +static void random_shuffle_array (void ** a, size_t len); +static void reverse_shuffle_array (void ** a, size_t len); +static void identity_shuffle_array (void ** a, size_t len); + +/* The way goals and rules are shuffled during update. */ +enum shuffle_mode + { + /* No shuffle data is populated or used. */ + sm_none, + /* Random within dependency list. */ + sm_random, + /* Inverse order. */ + sm_reverse, + /* identity order. Differs from SM_NONE by explicitly populating + the traversal order. */ + sm_identity, + }; + +/* Shuffle configuration. */ +static struct + { + enum shuffle_mode mode; + unsigned int seed; + void (*shuffler) (void **a, size_t len); + char strval[INTSTR_LENGTH + 1]; + } config = { sm_none, 0, NULL, "" }; + +/* Return string value of --shuffle= option passed. + If none was passed or --shuffle=none was used function + returns NULL. */ +const char * +shuffle_get_mode () +{ + return config.strval[0] == '\0' ? NULL : config.strval; +} + +void +shuffle_set_mode (const char *cmdarg) +{ + /* Parse supported '--shuffle' mode. */ + if (strcasecmp (cmdarg, "reverse") == 0) + { + config.mode = sm_reverse; + config.shuffler = reverse_shuffle_array; + strcpy (config.strval, "reverse"); + } + else if (strcasecmp (cmdarg, "identity") == 0) + { + config.mode = sm_identity; + config.shuffler = identity_shuffle_array; + strcpy (config.strval, "identity"); + } + else if (strcasecmp (cmdarg, "none") == 0) + { + config.mode = sm_none; + config.shuffler = NULL; + config.strval[0] = '\0'; + } + else + { + if (strcasecmp (cmdarg, "random") == 0) + config.seed = make_rand (); + else + { + /* Assume explicit seed. */ + const char *err; + config.seed = make_toui (cmdarg, &err); + if (err) + OSS (fatal, NILF, _("invalid shuffle mode: %s: '%s'"), err, cmdarg); + } + + config.mode = sm_random; + config.shuffler = random_shuffle_array; + sprintf (config.strval, "%u", config.seed); + } +} + +/* Shuffle array elements using RAND(). */ +static void +random_shuffle_array (void **a, size_t len) +{ + size_t i; + for (i = 0; i < len; i++) + { + void *t; + + /* Pick random element and swap. */ + unsigned int j = make_rand () % len; + if (i == j) + continue; + + /* Swap. */ + t = a[i]; + a[i] = a[j]; + a[j] = t; + } +} + +/* Shuffle array elements using reverse order. */ +static void +reverse_shuffle_array (void **a, size_t len) +{ + size_t i; + for (i = 0; i < len / 2; i++) + { + void *t; + + /* Pick mirror and swap. */ + size_t j = len - 1 - i; + + /* Swap. */ + t = a[i]; + a[i] = a[j]; + a[j] = t; + } +} + +/* Shuffle array elements using identity order. */ +static void +identity_shuffle_array (void **a UNUSED, size_t len UNUSED) +{ + /* No-op! */ +} + +/* Shuffle list of dependencies by populating '->shuf' + field in each 'struct dep'. */ +static void +shuffle_deps (struct dep *deps) +{ + size_t ndeps = 0; + struct dep *dep; + void **da; + void **dp; + + for (dep = deps; dep; dep = dep->next) + { + /* Do not reshuffle prerequisites if any .WAIT is present. */ + if (dep->wait_here) + return; + + ndeps++; + } + + if (ndeps == 0) + return; + + /* Allocate array of all deps, store, shuffle, write back. */ + da = xmalloc (sizeof (struct dep *) * ndeps); + + /* Store locally. */ + for (dep = deps, dp = da; dep; dep = dep->next, dp++) + *dp = dep; + + /* Shuffle. */ + config.shuffler (da, ndeps); + + /* Write back. */ + for (dep = deps, dp = da; dep; dep = dep->next, dp++) + dep->shuf = *dp; + + free (da); +} + +/* Shuffle 'deps' of each 'file' recursively. */ +static void +shuffle_file_deps_recursive (struct file *f) +{ + struct dep *dep; + + /* Implicit rules do not always provide any depends. */ + if (!f) + return; + + /* Avoid repeated shuffles and loops. */ + if (f->was_shuffled) + return; + f->was_shuffled = 1; + + shuffle_deps (f->deps); + + /* Shuffle dependencies. */ + for (dep = f->deps; dep; dep = dep->next) + shuffle_file_deps_recursive (dep->file); +} + +/* Shuffle goal dependencies first, then shuffle dependency list + of each file reachable from goaldep recursively. Used by + --shuffle flag to introduce artificial non-determinism in build + order. .*/ + +void +shuffle_deps_recursive (struct dep *deps) +{ + struct dep *dep; + + /* Exit early if shuffling was not requested. */ + if (config.mode == sm_none) + return; + + /* Do not reshuffle prerequisites if .NOTPARALLEL was specified. */ + if (not_parallel) + return; + + /* Set specific seed at the top level of recursion. */ + if (config.mode == sm_random) + make_seed (config.seed); + + shuffle_deps (deps); + + /* Shuffle dependencies. */ + for (dep = deps; dep; dep = dep->next) + shuffle_file_deps_recursive (dep->file); +} diff --git a/local/recipes/dev/gnu-make/source/src/shuffle.h b/local/recipes/dev/gnu-make/source/src/shuffle.h new file mode 100644 index 0000000000..6c7faa4bc0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/shuffle.h @@ -0,0 +1,26 @@ +/* Declarations for target shuffling support. +Copyright (C) 2022-2022 Free Software Foundation, Inc. +This file is part of GNU Make. + +GNU Make is free software; you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +struct dep; +struct goaldep; + +void shuffle_set_mode (const char *cmdarg); +const char *shuffle_get_mode (void); +void shuffle_deps_recursive (struct dep* g); + +#define shuffle_goaldeps_recursive(_g) do{ \ + shuffle_deps_recursive ((struct dep *)_g); \ + } while(0) diff --git a/local/recipes/dev/gnu-make/source/src/signame.c b/local/recipes/dev/gnu-make/source/src/signame.c new file mode 100644 index 0000000000..d4374a301e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/signame.c @@ -0,0 +1,254 @@ +/* Convert between signal names and numbers. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +/* If the system provides strsignal, we don't need it. */ + +#if !HAVE_STRSIGNAL + +/* If the system provides sys_siglist, we'll use that. + Otherwise create our own. + */ + +#if !HAVE_DECL_SYS_SIGLIST + +/* Some systems do not define NSIG in . */ +#ifndef NSIG +#ifdef _NSIG +#define NSIG _NSIG +#else +#define NSIG 32 +#endif +#endif + +/* There is too much variation in Sys V signal numbers and names, so + we must initialize them at runtime. */ + +static const char *undoc; + +static const char *sys_siglist[NSIG]; + +/* Table of abbreviations for signals. Note: A given number can + appear more than once with different abbreviations. */ +#define SIG_TABLE_SIZE (NSIG*2) + +typedef struct + { + int number; + const char *abbrev; + } num_abbrev; + +static num_abbrev sig_table[SIG_TABLE_SIZE]; + +/* Number of elements of sig_table used. */ +static int sig_table_nelts = 0; + +/* Enter signal number NUMBER into the tables with ABBREV and NAME. */ + +static void +init_sig (int number, const char *abbrev, const char *name) +{ + /* If this value is ever greater than NSIG it seems like it'd be a bug in + the system headers, but... better safe than sorry. We know, for + example, that this isn't always true on VMS. */ + + if (number >= 0 && number < NSIG) + sys_siglist[number] = name; + + if (sig_table_nelts < SIG_TABLE_SIZE) + { + sig_table[sig_table_nelts].number = number; + sig_table[sig_table_nelts++].abbrev = abbrev; + } +} + +static int +signame_init (void) +{ + int i; + + undoc = xstrdup (_("unknown signal")); + + /* Initialize signal names. */ + for (i = 0; i < NSIG; i++) + sys_siglist[i] = undoc; + + /* Initialize signal names. */ +#if defined (SIGHUP) + init_sig (SIGHUP, "HUP", _("Hangup")); +#endif +#if defined (SIGINT) + init_sig (SIGINT, "INT", _("Interrupt")); +#endif +#if defined (SIGQUIT) + init_sig (SIGQUIT, "QUIT", _("Quit")); +#endif +#if defined (SIGILL) + init_sig (SIGILL, "ILL", _("Illegal Instruction")); +#endif +#if defined (SIGTRAP) + init_sig (SIGTRAP, "TRAP", _("Trace/breakpoint trap")); +#endif + /* If SIGIOT == SIGABRT, we want to print it as SIGABRT because + SIGABRT is in ANSI and POSIX.1 and SIGIOT isn't. */ +#if defined (SIGABRT) + init_sig (SIGABRT, "ABRT", _("Aborted")); +#endif +#if defined (SIGIOT) + init_sig (SIGIOT, "IOT", _("IOT trap")); +#endif +#if defined (SIGEMT) + init_sig (SIGEMT, "EMT", _("EMT trap")); +#endif +#if defined (SIGFPE) + init_sig (SIGFPE, "FPE", _("Floating point exception")); +#endif +#if defined (SIGKILL) + init_sig (SIGKILL, "KILL", _("Killed")); +#endif +#if defined (SIGBUS) + init_sig (SIGBUS, "BUS", _("Bus error")); +#endif +#if defined (SIGSEGV) + init_sig (SIGSEGV, "SEGV", _("Segmentation fault")); +#endif +#if defined (SIGSYS) + init_sig (SIGSYS, "SYS", _("Bad system call")); +#endif +#if defined (SIGPIPE) + init_sig (SIGPIPE, "PIPE", _("Broken pipe")); +#endif +#if defined (SIGALRM) + init_sig (SIGALRM, "ALRM", _("Alarm clock")); +#endif +#if defined (SIGTERM) + init_sig (SIGTERM, "TERM", _("Terminated")); +#endif +#if defined (SIGUSR1) + init_sig (SIGUSR1, "USR1", _("User defined signal 1")); +#endif +#if defined (SIGUSR2) + init_sig (SIGUSR2, "USR2", _("User defined signal 2")); +#endif + /* If SIGCLD == SIGCHLD, we want to print it as SIGCHLD because that + is what is in POSIX.1. */ +#if defined (SIGCHLD) + init_sig (SIGCHLD, "CHLD", _("Child exited")); +#endif +#if defined (SIGCLD) + init_sig (SIGCLD, "CLD", _("Child exited")); +#endif +#if defined (SIGPWR) + init_sig (SIGPWR, "PWR", _("Power failure")); +#endif +#if defined (SIGTSTP) + init_sig (SIGTSTP, "TSTP", _("Stopped")); +#endif +#if defined (SIGTTIN) + init_sig (SIGTTIN, "TTIN", _("Stopped (tty input)")); +#endif +#if defined (SIGTTOU) + init_sig (SIGTTOU, "TTOU", _("Stopped (tty output)")); +#endif +#if defined (SIGSTOP) + init_sig (SIGSTOP, "STOP", _("Stopped (signal)")); +#endif +#if defined (SIGXCPU) + init_sig (SIGXCPU, "XCPU", _("CPU time limit exceeded")); +#endif +#if defined (SIGXFSZ) + init_sig (SIGXFSZ, "XFSZ", _("File size limit exceeded")); +#endif +#if defined (SIGVTALRM) + init_sig (SIGVTALRM, "VTALRM", _("Virtual timer expired")); +#endif +#if defined (SIGPROF) + init_sig (SIGPROF, "PROF", _("Profiling timer expired")); +#endif +#if defined (SIGWINCH) + /* "Window size changed" might be more accurate, but even if that + is all that it means now, perhaps in the future it will be + extended to cover other kinds of window changes. */ + init_sig (SIGWINCH, "WINCH", _("Window changed")); +#endif +#if defined (SIGCONT) + init_sig (SIGCONT, "CONT", _("Continued")); +#endif +#if defined (SIGURG) + init_sig (SIGURG, "URG", _("Urgent I/O condition")); +#endif +#if defined (SIGIO) + /* "I/O pending" has also been suggested. A disadvantage is that signal + only happens when the process has asked for it, not every time I/O is + pending. Another disadvantage is the confusion from giving it a + different name than under Unix. */ + init_sig (SIGIO, "IO", _("I/O possible")); +#endif +#if defined (SIGWIND) + init_sig (SIGWIND, "WIND", _("SIGWIND")); +#endif +#if defined (SIGPHONE) + init_sig (SIGPHONE, "PHONE", _("SIGPHONE")); +#endif +#if defined (SIGPOLL) + init_sig (SIGPOLL, "POLL", _("I/O possible")); +#endif +#if defined (SIGLOST) + init_sig (SIGLOST, "LOST", _("Resource lost")); +#endif +#if defined (SIGDANGER) + init_sig (SIGDANGER, "DANGER", _("Danger signal")); +#endif +#if defined (SIGINFO) + init_sig (SIGINFO, "INFO", _("Information request")); +#endif +#if defined (SIGNOFP) + init_sig (SIGNOFP, "NOFP", _("Floating point co-processor not available")); +#endif + + return 1; +} + +#endif /* HAVE_DECL_SYS_SIGLIST */ + + +char * +strsignal (int sig) +{ + static char buf[] = "Signal 12345678901234567890"; + +#if ! HAVE_DECL_SYS_SIGLIST +# if HAVE_DECL__SYS_SIGLIST +# define sys_siglist _sys_siglist +# elif HAVE_DECL___SYS_SIGLIST +# define sys_siglist __sys_siglist +# else + static int sig_initted = 0; + + if (!sig_initted) + sig_initted = signame_init (); +# endif +#endif + + if (sig > 0 && sig < NSIG) + return (char *) sys_siglist[sig]; + + sprintf (buf, "Signal %d", sig); + return buf; +} + +#endif /* HAVE_STRSIGNAL */ diff --git a/local/recipes/dev/gnu-make/source/src/strcache.c b/local/recipes/dev/gnu-make/source/src/strcache.c new file mode 100644 index 0000000000..f081ea75dc --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/strcache.c @@ -0,0 +1,330 @@ +/* Constant string caching for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include +#include + +#include "hash.h" + +/* A string cached here will never be freed, so we don't need to worry about + reference counting. We just store the string, and then remember it in a + hash so it can be looked up again. */ + +typedef unsigned short int sc_buflen_t; + +struct strcache { + struct strcache *next; /* The next block of strings. Must be first! */ + sc_buflen_t end; /* Offset to the beginning of free space. */ + sc_buflen_t bytesfree; /* Free space left in this buffer. */ + sc_buflen_t count; /* # of strings in this buffer (for stats). */ + char buffer[1]; /* The buffer comes after this. */ +}; + +/* The size (in bytes) of each cache buffer. + Try to pick something that will map well into the heap. + This must be able to be represented by a short int (<=65535). */ +#define CACHE_BUFFER_BASE (8192) +#define CACHE_BUFFER_ALLOC(_s) ((_s) - (2 * sizeof (size_t))) +#define CACHE_BUFFER_OFFSET (offsetof (struct strcache, buffer)) +#define CACHE_BUFFER_SIZE(_s) (CACHE_BUFFER_ALLOC(_s) - CACHE_BUFFER_OFFSET) +#define BUFSIZE CACHE_BUFFER_SIZE (CACHE_BUFFER_BASE) + +static struct strcache *strcache = NULL; +static struct strcache *fullcache = NULL; + +static unsigned long total_buffers = 0; +static unsigned long total_strings = 0; +static unsigned long total_size = 0; + +/* Add a new buffer to the cache. Add it at the front to reduce search time. + This can also increase the overhead, since it's less likely that older + buffers will be filled in. However, GNU make has so many smaller strings + that this doesn't seem to be much of an issue in practice. + */ +static struct strcache * +new_cache (struct strcache **head, sc_buflen_t buflen) +{ + struct strcache *new = xmalloc (buflen + CACHE_BUFFER_OFFSET); + new->end = 0; + new->count = 0; + new->bytesfree = buflen; + + new->next = *head; + *head = new; + + ++total_buffers; + return new; +} + +static const char * +copy_string (struct strcache *sp, const char *str, sc_buflen_t len) +{ + /* Add the string to this cache. */ + char *res = &sp->buffer[sp->end]; + + memmove (res, str, len); + res[len++] = '\0'; + sp->end += len; + sp->bytesfree -= len; + ++sp->count; + + return res; +} + +static const char * +add_string (const char *str, sc_buflen_t len) +{ + const char *res; + struct strcache *sp; + struct strcache **spp = &strcache; + /* We need space for the nul char. */ + sc_buflen_t sz = len + 1; + + ++total_strings; + total_size += sz; + + /* If the string we want is too large to fit into a single buffer, then + no existing cache is large enough. Add it directly to the fullcache. */ + if (sz > BUFSIZE) + { + sp = new_cache (&fullcache, sz); + return copy_string (sp, str, len); + } + + /* Find the first cache with enough free space. */ + for (; *spp != NULL; spp = &(*spp)->next) + if ((*spp)->bytesfree > sz) + break; + sp = *spp; + + /* If nothing is big enough, make a new cache at the front. */ + if (sp == NULL) + { + sp = new_cache (&strcache, BUFSIZE); + spp = &strcache; + } + + /* Add the string to this cache. */ + res = copy_string (sp, str, len); + + /* If the amount free in this cache is less than the average string size, + consider it full and move it to the full list. */ + if (total_strings > 20 && sp->bytesfree < (total_size / total_strings) + 1) + { + *spp = sp->next; + sp->next = fullcache; + fullcache = sp; + } + + return res; +} + +/* For strings too large for the strcache, we just save them in a list. */ +struct hugestring { + struct hugestring *next; /* The next string. */ + char buffer[1]; /* The string. */ +}; + +static struct hugestring *hugestrings = NULL; + +static const char * +add_hugestring (const char *str, size_t len) +{ + struct hugestring *new = xmalloc (sizeof (struct hugestring) + len); + memcpy (new->buffer, str, len); + new->buffer[len] = '\0'; + + new->next = hugestrings; + hugestrings = new; + + return new->buffer; +} + +/* Hash table of strings in the cache. */ + +static unsigned long +str_hash_1 (const void *key) +{ + return_ISTRING_HASH_1 ((const char *) key); +} + +static unsigned long +str_hash_2 (const void *key) +{ + return_ISTRING_HASH_2 ((const char *) key); +} + +static int +str_hash_cmp (const void *x, const void *y) +{ + return_ISTRING_COMPARE ((const char *) x, (const char *) y); +} + +static struct hash_table strings; +static unsigned long total_adds = 0; + +static const char * +add_hash (const char *str, size_t len) +{ + char *const *slot; + const char *key; + + /* If it's too large for the string cache, just copy it. + We don't bother trying to match these. */ + if (len > USHRT_MAX - 1) + return add_hugestring (str, len); + + /* Look up the string in the hash. If it's there, return it. */ + slot = (char *const *) hash_find_slot (&strings, str); + key = *slot; + + /* Count the total number of add operations we performed. */ + ++total_adds; + + if (!HASH_VACANT (key)) + return key; + + /* Not there yet so add it to a buffer, then into the hash table. */ + key = add_string (str, (sc_buflen_t)len); + hash_insert_at (&strings, key, slot); + return key; +} + +/* Returns true if the string is in the cache; false if not. */ +int +strcache_iscached (const char *str) +{ + struct strcache *sp; + + for (sp = strcache; sp != 0; sp = sp->next) + if (str >= sp->buffer && str < sp->buffer + sp->end) + return 1; + for (sp = fullcache; sp != 0; sp = sp->next) + if (str >= sp->buffer && str < sp->buffer + sp->end) + return 1; + + { + struct hugestring *hp; + for (hp = hugestrings; hp != 0; hp = hp->next) + if (str == hp->buffer) + return 1; + } + + return 0; +} + +/* If the string is already in the cache, return a pointer to the cached + version. If not, add it then return a pointer to the cached version. + Note we do NOT take control of the string passed in. */ +const char * +strcache_add (const char *str) +{ + return add_hash (str, strlen (str)); +} + +const char * +strcache_add_len (const char *str, size_t len) +{ + /* If we're not given a nul-terminated string we have to create one, because + the hashing functions expect it. */ + if (str[len] != '\0') + { + char *key = alloca (len + 1); + memcpy (key, str, len); + key[len] = '\0'; + str = key; + } + + return add_hash (str, len); +} + +void +strcache_init (void) +{ + hash_init (&strings, 8000, str_hash_1, str_hash_2, str_hash_cmp); +} + + +/* Generate some stats output. */ + +void +strcache_print_stats (const char *prefix) +{ + const struct strcache *sp; + unsigned long numbuffs = 0, fullbuffs = 0; + unsigned long totfree = 0, maxfree = 0, minfree = BUFSIZE; + + if (! strcache) + { + printf (_("\n%s No strcache buffers\n"), prefix); + return; + } + + /* Count the first buffer separately since it's not full. */ + for (sp = strcache->next; sp != NULL; sp = sp->next) + { + sc_buflen_t bf = sp->bytesfree; + + totfree += bf; + maxfree = (bf > maxfree ? bf : maxfree); + minfree = (bf < minfree ? bf : minfree); + + ++numbuffs; + } + for (sp = fullcache; sp != NULL; sp = sp->next) + { + sc_buflen_t bf = sp->bytesfree; + + totfree += bf; + maxfree = (bf > maxfree ? bf : maxfree); + minfree = (bf < minfree ? bf : minfree); + + ++numbuffs; + ++fullbuffs; + } + + /* Make sure we didn't lose any buffers. */ + assert (total_buffers == numbuffs + 1); + + printf (_("\n%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu B\n"), + prefix, numbuffs + 1, fullbuffs, total_strings, total_size, + (total_size / total_strings)); + + printf (_("%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"), + prefix, (sc_buflen_t)BUFSIZE, strcache->end, strcache->count, + (unsigned int) (strcache->end / strcache->count)); + + if (numbuffs) + { + /* Show information about non-current buffers. */ + unsigned long sz = total_size - strcache->end; + unsigned long cnt = total_strings - strcache->count; + sc_buflen_t avgfree = (sc_buflen_t) (totfree / numbuffs); + + printf (_("%s other used: total = %lu B / count = %lu / avg = %lu B\n"), + prefix, sz, cnt, sz / cnt); + + printf (_("%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"), + prefix, totfree, maxfree, minfree, avgfree); + } + + printf (_("\n%s strcache performance: lookups = %lu / hit rate = %lu%%\n"), + prefix, total_adds, (long unsigned)(100.0 * (total_adds - total_strings) / total_adds)); + fputs (_("# hash-table stats:\n# "), stdout); + hash_print_stats (&strings, stdout); +} diff --git a/local/recipes/dev/gnu-make/source/src/variable.c b/local/recipes/dev/gnu-make/source/src/variable.c new file mode 100644 index 0000000000..0bd9963b38 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/variable.c @@ -0,0 +1,1957 @@ +/* Internals of variables for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include + +#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 = 0; + +/* Chain of all pattern-specific variables. */ + +static struct pattern_var *pattern_vars = NULL; + +/* Pointer to the last struct in the pack of a specific size, from 1 to 255.*/ + +static struct pattern_var *last_pattern_vars[256]; + +/* Create a new pattern-specific variable struct. The new variable is + inserted into the PATTERN_VARS list in the shortest patterns first + order to support the shortest stem matching (the variables are + matched in the reverse order so the ones with the longest pattern + will be considered first). Variables with the same pattern length + are inserted in the definition order. */ + +struct pattern_var * +create_pattern_var (const char *target, const char *suffix) +{ + size_t len = strlen (target); + struct pattern_var *p = xcalloc (sizeof (struct pattern_var)); + + if (pattern_vars != 0) + { + if (len < 256 && last_pattern_vars[len] != 0) + { + p->next = last_pattern_vars[len]->next; + last_pattern_vars[len]->next = p; + } + else + { + /* Find the position where we can insert this variable. */ + struct pattern_var **v; + + for (v = &pattern_vars; ; v = &(*v)->next) + { + /* Insert at the end of the pack so that patterns with the + same length appear in the order they were defined .*/ + + if (*v == 0 || (*v)->len > len) + { + p->next = *v; + *v = p; + break; + } + } + } + } + else + { + pattern_vars = p; + p->next = 0; + } + + p->target = target; + p->len = len; + p->suffix = suffix + 1; + + if (len < 256) + last_pattern_vars[len] = p; + + return p; +} + +/* Look up a target in the pattern-specific variable list. */ + +static struct pattern_var * +lookup_pattern_var (struct pattern_var *start, const char *target, + size_t targlen) +{ + struct pattern_var *p; + + for (p = start ? start->next : pattern_vars; p != 0; p = p->next) + { + const char *stem; + size_t stemlen; + + if (p->len > targlen) + /* It can't possibly match. */ + continue; + + /* From the lengths of the filename and the pattern parts, + find the stem: the part of the filename that matches the %. */ + stem = target + (p->suffix - p->target - 1); + stemlen = targlen - p->len + 1; + + /* Compare the text in the pattern before the stem, if any. */ + if (stem > target && !strneq (p->target, target, stem - target)) + continue; + + /* Compare the text in the pattern after the stem, if any. + We could test simply using streq, but this way we compare the + first two characters immediately. This saves time in the very + common case where the first character matches because it is a + period. */ + if (*p->suffix == stem[stemlen] + && (*p->suffix == '\0' || streq (&p->suffix[1], &stem[stemlen+1]))) + break; + } + + return p; +} + +/* Hash table of all global variable definitions. */ + +static unsigned long +variable_hash_1 (const void *keyv) +{ + struct variable const *key = (struct variable const *) keyv; + return_STRING_N_HASH_1 (key->name, key->length); +} + +static unsigned long +variable_hash_2 (const void *keyv) +{ + struct variable const *key = (struct variable const *) keyv; + return_STRING_N_HASH_2 (key->name, key->length); +} + +static int +variable_hash_cmp (const void *xv, const void *yv) +{ + struct variable const *x = (struct variable const *) xv; + struct variable const *y = (struct variable const *) yv; + int result = x->length - y->length; + if (result) + return result; + return_STRING_N_COMPARE (x->name, y->name, x->length); +} + +#ifndef VARIABLE_BUCKETS +#define VARIABLE_BUCKETS 523 +#endif +#ifndef PERFILE_VARIABLE_BUCKETS +#define PERFILE_VARIABLE_BUCKETS 23 +#endif +#ifndef SMALL_SCOPE_VARIABLE_BUCKETS +#define SMALL_SCOPE_VARIABLE_BUCKETS 13 +#endif + +static struct variable_set global_variable_set; +static struct variable_set_list global_setlist + = { 0, &global_variable_set, 0 }; +struct variable_set_list *current_variable_set_list = &global_setlist; + +/* Implement variables. */ + +void +init_hash_global_variable_set (void) +{ + hash_init (&global_variable_set.table, VARIABLE_BUCKETS, + variable_hash_1, variable_hash_2, variable_hash_cmp); +} + +/* Define variable named NAME with value VALUE in SET. VALUE is copied. + LENGTH is the length of NAME, which does not need to be null-terminated. + ORIGIN specifies the origin of the variable (makefile, command line + or environment). + If RECURSIVE is nonzero a flag is set in the variable saying + that it should be recursively re-expanded. */ + +struct variable * +define_variable_in_set (const char *name, size_t length, + const char *value, enum variable_origin origin, + int recursive, struct variable_set *set, + const floc *flocp) +{ + struct variable *v; + struct variable **var_slot; + struct variable var_key; + + if (set == NULL) + set = &global_variable_set; + + var_key.name = (char *) name; + var_key.length = (unsigned int) length; + var_slot = (struct variable **) hash_find_slot (&set->table, &var_key); + v = *var_slot; + +#ifdef VMS + /* VMS does not populate envp[] with DCL symbols and logical names which + 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 infinite + recursion */ + if (HASH_VACANT (v) && (origin != o_env)) + { + struct variable * vms_variable; + char * vname = alloca (length + 1); + char * vvalue; + + strncpy (vname, name, length); + vvalue = getenv(vname); + + /* Values starting with '$' are probably foreign commands. + We want to treat them as Shell aliases and not look them up here */ + if ((vvalue != NULL) && (vvalue[0] != '$')) + { + vms_variable = lookup_variable(name, length); + /* Refresh the slot */ + var_slot = (struct variable **) hash_find_slot (&set->table, + &var_key); + v = *var_slot; + } + } +#endif + + if (env_overrides && origin == o_env) + origin = o_env_override; + + if (! HASH_VACANT (v)) + { + if (env_overrides && v->origin == o_env) + /* V came from in the environment. Since it was defined + before the switches were parsed, it wasn't affected by -e. */ + v->origin = o_env_override; + + /* A variable of this name is already defined. + If the old definition is from a stronger source + than this one, don't redefine it. */ + if ((int) origin >= (int) v->origin) + { + free (v->value); + v->value = xstrdup (value); + if (flocp != 0) + v->fileinfo = *flocp; + else + v->fileinfo.filenm = 0; + v->origin = origin; + v->recursive = recursive; + } + return v; + } + + /* Create a new variable definition and add it to the hash table. */ + + v = xcalloc (sizeof (struct variable)); + v->name = xstrndup (name, length); + v->length = (unsigned int) length; + hash_insert_at (&set->table, v, var_slot); + if (set == &global_variable_set) + ++variable_changenum; + + v->value = xstrdup (value); + if (flocp != 0) + v->fileinfo = *flocp; + v->origin = origin; + v->recursive = recursive; + + 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; + else + { + for (++name; *name != '\0'; ++name) + if (*name != '_' && (*name < 'a' || *name > 'z') + && (*name < 'A' || *name > 'Z') && !ISDIGIT(*name)) + break; + + if (*name != '\0') + v->exportable = 0; + } + + return v; +} + + +/* Undefine variable named NAME in SET. LENGTH is the length of NAME, which + does not need to be null-terminated. ORIGIN specifies the origin of the + variable (makefile, command line or environment). */ + +static void +free_variable_name_and_value (const void *item) +{ + struct variable *v = (struct variable *) item; + free (v->name); + free (v->value); +} + +void +free_variable_set (struct variable_set_list *list) +{ + hash_map (&list->set->table, free_variable_name_and_value); + hash_free (&list->set->table, 1); + free (list->set); + free (list); +} + +void +undefine_variable_in_set (const char *name, size_t length, + enum variable_origin origin, + struct variable_set *set) +{ + struct variable *v; + struct variable **var_slot; + struct variable var_key; + + if (set == NULL) + set = &global_variable_set; + + var_key.name = (char *) name; + var_key.length = (unsigned int) length; + var_slot = (struct variable **) hash_find_slot (&set->table, &var_key); + + if (env_overrides && origin == o_env) + origin = o_env_override; + + v = *var_slot; + if (! HASH_VACANT (v)) + { + if (env_overrides && v->origin == o_env) + /* V came from in the environment. Since it was defined + before the switches were parsed, it wasn't affected by -e. */ + v->origin = o_env_override; + + /* Undefine only if this undefinition is from an equal or stronger + source than the variable definition. */ + if ((int) origin >= (int) v->origin) + { + hash_delete_at (&set->table, var_slot); + free_variable_name_and_value (v); + free (v); + if (set == &global_variable_set) + ++variable_changenum; + } + } +} + +/* If the variable passed in is "special", handle its special nature. + Currently there are two such variables, both used for introspection: + .VARIABLES expands to a list of all the variables defined in this instance + of make. + .TARGETS expands to a list of all the targets defined in this + instance of make. + Returns the variable reference passed in. */ + +#define EXPANSION_INCREMENT(_l) ((((_l) / 500) + 1) * 500) + +static struct variable * +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. 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: + + TARGS := $(.TARGETS) + + then $(TARGS) won't contain "all", because it's not until after the + variable is created that the previous target is completed. + + Changing this would be a major pain. I think a less complex way to do it + would be to pre-define the target files as soon as the first line is + parsed, then come back and do the rest of the definition as now. That + would allow $(.TARGETS) to be correct without a major change to the way + the parser works. + + if (streq (var->name, ".TARGETS")) + var->value = build_target_list (var->value); + else + */ + + if (variable_changenum != last_changenum && streq (var->name, ".VARIABLES")) + { + size_t max = EXPANSION_INCREMENT (strlen (var->value)); + size_t len; + char *p; + struct variable **vp = (struct variable **) global_variable_set.table.ht_vec; + struct variable **end = &vp[global_variable_set.table.ht_size]; + + /* Make sure we have at least MAX bytes in the allocated buffer. */ + var->value = xrealloc (var->value, max); + + /* Walk through the hash of variables, constructing a list of names. */ + p = var->value; + len = 0; + for (; vp < end; ++vp) + if (!HASH_VACANT (*vp)) + { + struct variable *v = *vp; + int l = v->length; + + len += l + 1; + if (len > max) + { + size_t off = p - var->value; + + max += EXPANSION_INCREMENT (l + 1); + var->value = xrealloc (var->value, max); + p = &var->value[off]; + } + + p = mempcpy (p, v->name, l); + *(p++) = ' '; + } + *(p-1) = '\0'; + + /* Remember the current variable change number. */ + last_changenum = variable_changenum; + } + + return var; +} + + +/* Lookup a variable whose name is a string starting at NAME + and with LENGTH chars. NAME need not be null-terminated. + Returns address of the 'struct variable' containing all info + on the variable, or nil if no such variable is defined. */ + +struct variable * +lookup_variable (const char *name, size_t length) +{ + const struct variable_set_list *setlist; + struct variable var_key; + int is_parent = 0; + + var_key.name = (char *) name; + var_key.length = (unsigned int) length; + + for (setlist = current_variable_set_list; + setlist != 0; setlist = setlist->next) + { + const struct variable_set *set = setlist->set; + struct variable *v; + + v = (struct variable *) hash_find_item ((struct hash_table *) &set->table, &var_key); + if (v && (!is_parent || !v->private_var)) + return v->special ? lookup_special_var (v) : v; + + is_parent |= setlist->next_is_parent; + } + +#ifdef VMS + /* 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; + strncpy (vname, name, length); + vname[length] = 0; + value = getenv (vname); + if (value != 0) + { + char *sptr; + int scnt; + + sptr = value; + scnt = 0; + + while ((sptr = strchr (sptr, '$'))) + { + scnt++; + sptr++; + } + + if (scnt > 0) + { + char *nvalue; + char *nptr; + + nvalue = alloca (strlen (value) + scnt + 1); + sptr = value; + nptr = nvalue; + + while (*sptr) + { + if (*sptr == '$') + { + *nptr++ = '$'; + *nptr++ = '$'; + } + else + { + *nptr++ = *sptr; + } + sptr++; + } + + *nptr = '\0'; + return define_variable (vname, length, nvalue, o_env, 1); + + } + + return define_variable (vname, length, value, o_env, 1); + } + } +#endif /* VMS */ + + return 0; +} + +/* Lookup a variable whose name is a string starting at NAME + and with LENGTH chars in set SET. NAME need not be null-terminated. + Returns address of the 'struct variable' containing all info + on the variable, or nil if no such variable is defined. */ + +struct variable * +lookup_variable_in_set (const char *name, size_t length, + const struct variable_set *set) +{ + struct variable var_key; + + var_key.name = (char *) name; + var_key.length = (unsigned int) length; + + return (struct variable *) hash_find_item ((struct hash_table *) &set->table, &var_key); +} + +/* Initialize FILE's variable set list. If FILE already has a variable set + list, the topmost variable set is left intact, but the the rest of the + chain is replaced with FILE->parent's setlist. If FILE is a double-colon + rule, then we will use the "root" double-colon target's variable set as the + parent of FILE's variable set. + + If we're READING a makefile, don't do the pattern variable search now, + since the pattern variable might not have been defined yet. */ + +void +initialize_file_variables (struct file *file, int reading) +{ + struct variable_set_list *l = file->variables; + + if (l == 0) + { + l = (struct variable_set_list *) + xmalloc (sizeof (struct variable_set_list)); + l->set = xmalloc (sizeof (struct variable_set)); + hash_init (&l->set->table, PERFILE_VARIABLE_BUCKETS, + variable_hash_1, variable_hash_2, variable_hash_cmp); + file->variables = l; + } + + /* If this is a double-colon, then our "parent" is the "root" target for + this double-colon rule. Since that rule has the same name, parent, + etc. we can just use its variables as the "next" for ours. */ + + if (file->double_colon && file->double_colon != file) + { + initialize_file_variables (file->double_colon, reading); + l->next = file->double_colon->variables; + l->next_is_parent = 0; + return; + } + + if (file->parent == 0) + l->next = &global_setlist; + else + { + initialize_file_variables (file->parent, reading); + l->next = file->parent->variables; + } + l->next_is_parent = 1; + + /* If we're not reading makefiles and we haven't looked yet, see if + we can find pattern variables for this target. */ + + if (!reading && !file->pat_searched) + { + struct pattern_var *p; + const size_t targlen = strlen (file->name); + + p = lookup_pattern_var (0, file->name, targlen); + if (p != 0) + { + struct variable_set_list *global = current_variable_set_list; + + /* We found at least one. Set up a new variable set to accumulate + all the pattern variables that match this target. */ + + file->pat_variables = create_new_variable_set (); + current_variable_set_list = file->pat_variables; + + do + { + /* We found one, so insert it into the set. */ + + struct variable *v; + + if (p->variable.flavor == f_simple) + { + v = define_variable_loc ( + p->variable.name, strlen (p->variable.name), + p->variable.value, p->variable.origin, + 0, &p->variable.fileinfo); + + v->flavor = f_simple; + } + else + { + v = do_variable_definition ( + &p->variable.fileinfo, p->variable.name, + p->variable.value, p->variable.origin, + p->variable.flavor, 1); + } + + /* Also mark it as a per-target and copy export status. */ + v->per_target = p->variable.per_target; + v->export = p->variable.export; + v->private_var = p->variable.private_var; + } + while ((p = lookup_pattern_var (p, file->name, targlen)) != 0); + + current_variable_set_list = global; + } + file->pat_searched = 1; + } + + /* If we have a pattern variable match, set it up. */ + + if (file->pat_variables != 0) + { + file->pat_variables->next = l->next; + file->pat_variables->next_is_parent = l->next_is_parent; + l->next = file->pat_variables; + l->next_is_parent = 0; + } +} + +/* Pop the top set off the current variable set list, + and free all its storage. */ + +struct variable_set_list * +create_new_variable_set (void) +{ + struct variable_set_list *setlist; + struct variable_set *set; + + set = xmalloc (sizeof (struct variable_set)); + hash_init (&set->table, SMALL_SCOPE_VARIABLE_BUCKETS, + variable_hash_1, variable_hash_2, variable_hash_cmp); + + setlist = (struct variable_set_list *) + xmalloc (sizeof (struct variable_set_list)); + setlist->set = set; + setlist->next = current_variable_set_list; + setlist->next_is_parent = 0; + + return setlist; +} + +/* Create a new variable set and push it on the current setlist. + If we're pushing a global scope (that is, the current scope is the global + scope) then we need to "push" it the other way: file variable sets point + directly to the global_setlist so we need to replace that with the new one. + */ + +struct variable_set_list * +push_new_variable_scope (void) +{ + current_variable_set_list = create_new_variable_set (); + if (current_variable_set_list->next == &global_setlist) + { + /* It was the global, so instead of new -> &global we want to replace + &global with the new one and have &global -> new, with current still + pointing to &global */ + struct variable_set *set = current_variable_set_list->set; + current_variable_set_list->set = global_setlist.set; + global_setlist.set = set; + current_variable_set_list->next = global_setlist.next; + global_setlist.next = current_variable_set_list; + current_variable_set_list = &global_setlist; + } + return (current_variable_set_list); +} + +void +pop_variable_scope (void) +{ + struct variable_set_list *setlist; + struct variable_set *set; + + /* Can't call this if there's no scope to pop! */ + assert (current_variable_set_list->next != NULL); + + if (current_variable_set_list != &global_setlist) + { + /* We're not pointing to the global setlist, so pop this one. */ + setlist = current_variable_set_list; + set = setlist->set; + current_variable_set_list = setlist->next; + } + else + { + /* This set is the one in the global_setlist, but there is another global + set beyond that. We want to copy that set to global_setlist, then + delete what used to be in global_setlist. */ + setlist = global_setlist.next; + set = global_setlist.set; + global_setlist.set = setlist->set; + global_setlist.next = setlist->next; + global_setlist.next_is_parent = setlist->next_is_parent; + } + + /* Free the one we no longer need. */ + free (setlist); + hash_map (&set->table, free_variable_name_and_value); + hash_free (&set->table, 1); + free (set); +} + +/* Merge FROM_SET into TO_SET, freeing unused storage in FROM_SET. */ + +static void +merge_variable_sets (struct variable_set *to_set, + struct variable_set *from_set) +{ + struct variable **from_var_slot = (struct variable **) from_set->table.ht_vec; + struct variable **from_var_end = from_var_slot + from_set->table.ht_size; + + int inc = to_set == &global_variable_set ? 1 : 0; + + for ( ; from_var_slot < from_var_end; from_var_slot++) + if (! HASH_VACANT (*from_var_slot)) + { + struct variable *from_var = *from_var_slot; + struct variable **to_var_slot + = (struct variable **) hash_find_slot (&to_set->table, *from_var_slot); + if (HASH_VACANT (*to_var_slot)) + { + hash_insert_at (&to_set->table, from_var, to_var_slot); + variable_changenum += inc; + } + else + { + /* GKM FIXME: delete in from_set->table */ + free (from_var->value); + free (from_var); + } + } +} + +/* Merge SETLIST1 into SETLIST0, freeing unused storage in SETLIST1. */ + +void +merge_variable_set_lists (struct variable_set_list **setlist0, + struct variable_set_list *setlist1) +{ + struct variable_set_list *to = *setlist0; + struct variable_set_list *last0 = 0; + + /* If there's nothing to merge, stop now. */ + if (!setlist1 || setlist1 == &global_setlist) + return; + + if (to) + { + /* These loops rely on the fact that all setlists terminate with the + global setlist (before NULL). If not, arguably we SHOULD die. */ + + /* Make sure that setlist1 is not already a subset of setlist0. */ + while (to != &global_setlist) + { + if (to == setlist1) + return; + to = to->next; + } + + to = *setlist0; + while (setlist1 != &global_setlist && to != &global_setlist) + { + struct variable_set_list *from = setlist1; + setlist1 = setlist1->next; + + merge_variable_sets (to->set, from->set); + + last0 = to; + to = to->next; + } + } + + if (setlist1 != &global_setlist) + { + if (last0 == 0) + *setlist0 = setlist1; + else + last0->next = setlist1; + } +} + +/* Define the automatic variables, and record the addresses + of their structures so we can change their values quickly. */ + +void +define_automatic_variables (void) +{ + struct variable *v; + char buf[200]; + + sprintf (buf, "%u", makelevel); + define_variable_cname (MAKELEVEL_NAME, buf, o_env, 0); + + sprintf (buf, "%s%s%s", + version_string, + (remote_description == 0 || remote_description[0] == '\0') + ? "" : "-", + (remote_description == 0 || remote_description[0] == '\0') + ? "" : remote_description); + define_variable_cname ("MAKE_VERSION", buf, o_default, 0); + define_variable_cname ("MAKE_HOST", make_host, o_default, 0); + +#ifdef __MSDOS__ + /* Allow to specify a special shell just for Make, + and use $COMSPEC as the default $SHELL when appropriate. */ + { + static char shell_str[] = "SHELL"; + const int shlen = sizeof (shell_str) - 1; + struct variable *mshp = lookup_variable ("MAKESHELL", 9); + struct variable *comp = lookup_variable ("COMSPEC", 7); + + /* $(MAKESHELL) overrides $(SHELL) even if -e is in effect. */ + if (mshp) + (void) define_variable (shell_str, shlen, + mshp->value, o_env_override, 0); + else if (comp) + { + /* $(COMSPEC) shouldn't override $(SHELL). */ + struct variable *shp = lookup_variable (shell_str, shlen); + + if (!shp) + (void) define_variable (shell_str, shlen, comp->value, o_env, 0); + } + } +#elif defined(__EMX__) + { + static char shell_str[] = "SHELL"; + const int shlen = sizeof (shell_str) - 1; + struct variable *shell = lookup_variable (shell_str, shlen); + struct variable *replace = lookup_variable ("MAKESHELL", 9); + + /* if $MAKESHELL is defined in the environment assume o_env_override */ + if (replace && *replace->value && replace->origin == o_env) + replace->origin = o_env_override; + + /* if $MAKESHELL is not defined use $SHELL but only if the variable + did not come from the environment */ + if (!replace || !*replace->value) + if (shell && *shell->value && (shell->origin == o_env + || shell->origin == o_env_override)) + { + /* overwrite whatever we got from the environment */ + free (shell->value); + shell->value = xstrdup (default_shell); + shell->origin = o_default; + } + + /* Some people do not like cmd to be used as the default + if $SHELL is not defined in the Makefile. + With -DNO_CMD_DEFAULT you can turn off this behaviour */ +# ifndef NO_CMD_DEFAULT + /* otherwise use $COMSPEC */ + if (!replace || !*replace->value) + replace = lookup_variable ("COMSPEC", 7); + + /* otherwise use $OS2_SHELL */ + if (!replace || !*replace->value) + replace = lookup_variable ("OS2_SHELL", 9); +# else +# warning NO_CMD_DEFAULT: GNU make will not use CMD.EXE as default shell +# endif + + if (replace && *replace->value) + /* overwrite $SHELL */ + (void) define_variable (shell_str, shlen, replace->value, + replace->origin, 0); + else + /* provide a definition if there is none */ + (void) define_variable (shell_str, shlen, default_shell, + o_default, 0); + } + +#endif + + /* This won't override any definition, but it will provide one if there + isn't one there. */ + v = define_variable_cname ("SHELL", default_shell, o_default, 0); +#ifdef __MSDOS__ + v->export = v_export; /* Export always SHELL. */ +#endif + + /* On MSDOS we do use SHELL from environment, since it isn't a standard + environment variable on MSDOS, so whoever sets it, does that on purpose. + On OS/2 we do not use SHELL from environment but we have already handled + that problem above. */ +#if !defined(__MSDOS__) && !defined(__EMX__) + /* Don't let SHELL come from the environment. */ + if (*v->value == '\0' || v->origin == o_env || v->origin == o_env_override) + { + free (v->value); + v->origin = o_file; + v->value = xstrdup (default_shell); + } +#endif + + /* Make sure MAKEFILES gets exported if it is set. */ + v = define_variable_cname ("MAKEFILES", "", o_default, 0); + v->export = v_ifset; + + /* Define the magic D and F variables in terms of + the automatic variables they are variations of. */ + +#if defined(__MSDOS__) || defined(WINDOWS32) + /* For consistency, remove the trailing backslash as well as slash. */ + define_variable_cname ("@D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $@)))", + o_automatic, 1); + define_variable_cname ("%D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $%)))", + o_automatic, 1); + define_variable_cname ("*D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $*)))", + o_automatic, 1); + define_variable_cname ("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. + If recursive is true then we're running a recursive make, else not. */ + +char ** +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; + char **result_0; + char **result; + 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. 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 **evslot; + struct variable *v = *v_slot; + + evslot = (struct variable **) hash_find_slot (&table, v); + + if (HASH_VACANT (*evslot)) + { + /* If we're not global, or we are and should export, add it. */ + if (!isglobal || should_export (v)) + hash_insert_at (&table, v, evslot); + } + else if ((*evslot)->export == v_default) + /* We already have a variable but we don't know its status. */ + (*evslot)->export = v->export; + } + } + + result = result_0 = xmalloc ((table.ht_fill + 3) * sizeof (char *)); + + v_slot = (struct variable **) table.ht_vec; + v_end = v_slot + table.ht_size; + for ( ; v_slot < v_end; v_slot++) + 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) + 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")) + { + added_SHELL = 1; + goto setit; + } + + /* 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 (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); + } + + if (!added_SHELL) + *result++ = xstrdup (concat (3, shell_var.name, "=", shell_var.value)); + + if (!found_makelevel) + { + char val[MAKELEVEL_LENGTH + 1 + INTSTR_LENGTH + 1]; + sprintf (val, "%s=%u", MAKELEVEL_NAME, makelevel + 1); + *result++ = xstrdup (val); + } + + *result = NULL; + + hash_free (&table, 0); + + if (!file) + --env_recursion; + + return result_0; +} + +static struct variable * +set_special_var (struct variable *var) +{ + if (streq (var->name, RECIPEPREFIX_NAME)) + { + /* The user is resetting the command introduction prefix. This has to + happen immediately, so that subsequent rules are interpreted + 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; +} + +/* Given a string, shell-execute it and return a malloc'ed string of the + * result. This removes only ONE newline (if any) at the end, for maximum + * compatibility with the *BSD makes. If it fails, returns NULL. */ + +static char * +shell_result (const char *p) +{ + char *buf; + size_t len; + char *args[2]; + char *result; + + install_variable_buffer (&buf, &len); + + args[0] = (char *) p; + args[1] = NULL; + variable_buffer_output (func_shell_base (variable_buffer, args, 0), "\0", 1); + result = strdup (variable_buffer); + + restore_variable_buffer (buf, len); + return result; +} + +/* Given a variable, a value, and a flavor, define the variable. + See the try_variable_definition() function for details on the parameters. */ + +struct variable * +do_variable_definition (const floc *flocp, const char *varname, + const char *value, enum variable_origin origin, + enum variable_flavor flavor, int target_var) +{ + const char *p; + char *alloc_value = NULL; + struct variable *v; + int append = 0; + int conditional = 0; + + /* Calculate the variable's new value in VALUE. */ + + switch (flavor) + { + case f_simple: + /* A simple variable definition "var := value". Expand the value. + We have to allocate memory since otherwise it'll clobber the + variable buffer, and we may still need that if we're looking at a + target-specific variable. */ + p = alloc_value = allocated_variable_expand (value); + 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 + the shell, and store the result in recursively-expanded var. */ + char *q = allocated_variable_expand (value); + p = alloc_value = shell_result (q); + free (q); + flavor = f_recursive; + break; + } + case f_conditional: + /* A conditional variable definition "var ?= value". + The value is set IFF the variable is not defined yet. */ + v = lookup_variable (varname, strlen (varname)); + if (v) + goto done; + + conditional = 1; + flavor = f_recursive; + /* FALLTHROUGH */ + case f_recursive: + /* A recursive variable definition "var = value". + The value is used verbatim. */ + p = value; + break; + case f_append: + case f_append_value: + { + /* If we have += but we're in a target variable context, we want to + append only with other variables in the context of this target. */ + if (target_var) + { + append = 1; + v = lookup_variable_in_set (varname, strlen (varname), + current_variable_set_list->set); + + /* Don't append from the global set if a previous non-appending + target-specific variable definition exists. */ + if (v && !v->append) + append = 0; + } + else + v = lookup_variable (varname, strlen (varname)); + + if (v == 0) + { + /* There was no old value. + This becomes a normal recursive definition. */ + p = value; + flavor = f_recursive; + } + else + { + /* Paste the old and new values together in VALUE. */ + + size_t oldlen, vallen; + const char *val; + char *tp = NULL; + + val = value; + if (v->recursive) + /* The previous definition of the variable was recursive. + The new value is the unexpanded old and new values. */ + flavor = f_recursive; + else if (flavor != f_append_value) + /* The previous definition of the variable was simple. + The new value comes from the old value, which was expanded + when it was set; and from the expanded new value. Allocate + memory for the expansion as we may still need the rest of the + buffer if we're looking at a target-specific variable. */ + val = tp = allocated_variable_expand (val); + + /* If the new value is empty, nothing to do. */ + vallen = strlen (val); + if (!vallen) + { + alloc_value = tp; + goto done; + } + + oldlen = strlen (v->value); + p = alloc_value = xmalloc (oldlen + 1 + vallen + 1); + + if (oldlen) + { + memcpy (alloc_value, v->value, oldlen); + alloc_value[oldlen] = ' '; + ++oldlen; + } + + memcpy (&alloc_value[oldlen], val, vallen + 1); + + free (tp); + } + } + break; + case f_bogus: + default: + /* Should not be possible. */ + abort (); + } + +#ifdef __MSDOS__ + /* Many Unix Makefiles include a line saying "SHELL=/bin/sh", but + non-Unix systems don't conform to this default configuration (in + fact, most of them don't even have '/bin'). On the other hand, + $SHELL in the environment, if set, points to the real pathname of + the shell. + Therefore, we generally won't let lines like "SHELL=/bin/sh" from + the Makefile override $SHELL from the environment. But first, we + look for the basename of the shell in the directory where SHELL= + points, and along the $PATH; if it is found in any of these places, + we define $SHELL to be the actual pathname of the shell. Thus, if + you have bash.exe installed as d:/unix/bash.exe, and d:/unix is on + your $PATH, then SHELL=/usr/local/bin/bash will have the effect of + defining SHELL to be "d:/unix/bash.exe". */ + if ((origin == o_file || origin == o_override) + && strcmp (varname, "SHELL") == 0) + { + PATH_VAR (shellpath); + extern char * __dosexec_find_on_path (const char *, char *[], char *); + + /* See if we can find "/bin/sh.exe", "/bin/sh.com", etc. */ + if (__dosexec_find_on_path (p, NULL, shellpath)) + { + char *tp; + + for (tp = shellpath; *tp; tp++) + if (*tp == '\\') + *tp = '/'; + + v = define_variable_loc (varname, strlen (varname), + shellpath, origin, flavor == f_recursive, + flocp); + } + else + { + const char *shellbase, *bslash; + struct variable *pathv = lookup_variable ("PATH", 4); + char *path_string; + char *fake_env[2]; + size_t pathlen = 0; + + shellbase = strrchr (p, '/'); + bslash = strrchr (p, '\\'); + if (!shellbase || bslash > shellbase) + shellbase = bslash; + if (!shellbase && p[1] == ':') + shellbase = p + 1; + if (shellbase) + shellbase++; + else + shellbase = p; + + /* Search for the basename of the shell (with standard + executable extensions) along the $PATH. */ + if (pathv) + pathlen = strlen (pathv->value); + path_string = xmalloc (5 + pathlen + 2 + 1); + /* On MSDOS, current directory is considered as part of $PATH. */ + sprintf (path_string, "PATH=.;%s", pathv ? pathv->value : ""); + fake_env[0] = path_string; + fake_env[1] = 0; + if (__dosexec_find_on_path (shellbase, fake_env, shellpath)) + { + char *tp; + + for (tp = shellpath; *tp; tp++) + if (*tp == '\\') + *tp = '/'; + + v = define_variable_loc (varname, strlen (varname), + shellpath, origin, + flavor == f_recursive, flocp); + } + else + v = lookup_variable (varname, strlen (varname)); + + free (path_string); + } + } + else +#endif /* __MSDOS__ */ +#ifdef WINDOWS32 + if ((origin == o_file || origin == o_override || origin == o_command) + && streq (varname, "SHELL")) + { + extern const char *default_shell; + + /* Call shell locator function. If it returns TRUE, then + set no_default_sh_exe to indicate sh was found and + set new value for SHELL variable. */ + + if (find_and_set_default_shell (p)) + { + v = define_variable_in_set (varname, strlen (varname), default_shell, + origin, flavor == f_recursive, + (target_var + ? current_variable_set_list->set + : NULL), + flocp); + no_default_sh_exe = 0; + } + else + { + char *tp = alloc_value; + + alloc_value = allocated_variable_expand (p); + + if (find_and_set_default_shell (alloc_value)) + { + v = define_variable_in_set (varname, strlen (varname), p, + origin, flavor == f_recursive, + (target_var + ? current_variable_set_list->set + : NULL), + flocp); + no_default_sh_exe = 0; + } + else + v = lookup_variable (varname, strlen (varname)); + + free (tp); + } + } + else + v = NULL; + + /* If not $SHELL, or if $SHELL points to a program we didn't find, + just process this variable "as usual". */ + if (!v) +#endif + + /* If we are defining variables inside an $(eval ...), we might have a + different variable context pushed, not the global context (maybe we're + inside a $(call ...) or something. Since this function is only ever + 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 || flavor == f_expand, + (target_var + ? current_variable_set_list->set : NULL), + flocp); + v->append = append; + v->conditional = conditional; + + done: + free (alloc_value); + return v->special ? set_special_var (v) : v; +} + +/* Parse P (a null-terminated string) as a variable definition. + + If it is not a variable definition, return NULL and the contents of *VAR + are undefined, except NAME 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: + name : name of the variable (ALWAYS SET) (NOT NUL-TERMINATED!) + length : length of the variable name + value : value of the variable (nul-terminated) + flavor : flavor of the variable + Other values in *VAR are unchanged. + */ + +char * +parse_variable_definition (const char *str, struct variable *var) +{ + 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++; + + /* If we find a comment or EOS, it's not a variable definition. */ + if (STOP_SET (c, MAP_COMMENT|MAP_NUL)) + return NULL; + + if (ISBLANK (c)) + { + /* 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; + end = p - 1; + NEXT_TOKEN (p); + continue; + } + + /* If we found = we're done! */ + if (c == '=') + { + if (!end) + end = p - 1; + var->flavor = f_recursive; + break; + } + + 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_append; + break; + case '?': + var->flavor = f_conditional; + break; + case '!': + var->flavor = f_shell; + break; + default: + goto other; + } + + if (!end) + end = p - 1; + ++p; + break; + } + + 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 == '$') + { + /* Skip any variable reference, to ensure we don't treat chars + inside the reference as assignment operators. */ + char closeparen; + unsigned int count; + + c = *p++; + switch (c) + { + case '(': + closeparen = ')'; + break; + case '{': + closeparen = '}'; + break; + case '\0': + return NULL; + default: + /* '$$' or '$X': skip it. */ + continue; + } + + /* 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; + } + } + } + + /* 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; +} + +/* Try to interpret LINE (a null-terminated string) as a variable definition. + + If LINE was recognized as a variable definition, a pointer to its 'struct + variable' is returned. If LINE is not a variable definition, NULL is + returned. */ + +struct variable * +assign_variable_definition (struct variable *v, const char *line) +{ + char *name; + + if (!parse_variable_definition (line, v)) + return NULL; + + /* Expand the name, so "$(foo)bar = baz" works. */ + name = alloca (v->length + 1); + memcpy (name, v->name, v->length); + name[v->length] = '\0'; + v->name = allocated_variable_expand (name); + + if (v->name[0] == '\0') + O (fatal, &v->fileinfo, _("empty variable name")); + + return v; +} + +/* Try to interpret LINE (a null-terminated string) as a variable definition. + + ORIGIN may be o_file, o_override, o_env, o_env_override, + or o_command specifying that the variable definition comes + from a makefile, an override directive, the environment with + or without the -e switch, or the command line. + + See the comments for assign_variable_definition(). + + If LINE was recognized as a variable definition, a pointer to its 'struct + variable' is returned. If LINE is not a variable definition, NULL is + returned. */ + +struct variable * +try_variable_definition (const floc *flocp, const char *line, + enum variable_origin origin, int target_var) +{ + struct variable v; + struct variable *vp; + + if (flocp != 0) + v.fileinfo = *flocp; + else + v.fileinfo.filenm = 0; + + if (!assign_variable_definition (&v, line)) + return 0; + + vp = do_variable_definition (flocp, v.name, v.value, + origin, v.flavor, target_var); + + free (v.name); + + return vp; +} + +/* Print information for variable V, prefixing it with PREFIX. */ + +static void +print_variable (const void *item, void *arg) +{ + const struct variable *v = item; + const char *prefix = arg; + const char *origin; + + switch (v->origin) + { + case o_automatic: + origin = _("automatic"); + break; + case o_default: + origin = _("default"); + break; + case o_env: + origin = _("environment"); + break; + case o_file: + origin = _("makefile"); + break; + case o_env_override: + origin = _("environment under -e"); + break; + case o_command: + origin = _("command line"); + break; + case o_override: + origin = _("'override' directive"); + break; + case o_invalid: + abort (); + } + fputs ("# ", stdout); + fputs (origin, stdout); + if (v->private_var) + fputs (" private", stdout); + if (v->fileinfo.filenm) + printf (_(" (from '%s', line %lu)"), + v->fileinfo.filenm, v->fileinfo.lineno + v->fileinfo.offset); + putchar ('\n'); + fputs (prefix, stdout); + + /* Is this a 'define'? */ + if (v->recursive && strchr (v->value, '\n') != 0) + printf ("define %s\n%s\nendef\n", v->name, v->value); + else + { + char *p; + + printf ("%s %s= ", v->name, v->recursive ? v->append ? "+" : "" : ":"); + + /* Check if the value is just whitespace. */ + p = next_token (v->value); + if (p != v->value && *p == '\0') + /* All whitespace. */ + printf ("$(subst ,,%s)", v->value); + else if (v->recursive) + fputs (v->value, stdout); + else + /* Double up dollar signs. */ + for (p = v->value; *p != '\0'; ++p) + { + if (*p == '$') + putchar ('$'); + putchar (*p); + } + putchar ('\n'); + } +} + + +static void +print_auto_variable (const void *item, void *arg) +{ + const struct variable *v = item; + + if (v->origin == o_automatic) + print_variable (item, arg); +} + + +static void +print_noauto_variable (const void *item, void *arg) +{ + const struct variable *v = item; + + if (v->origin != o_automatic) + print_variable (item, arg); +} + + +/* Print all the variables in SET. PREFIX is printed before + the actual variable definitions (everything else is comments). */ + +static void +print_variable_set (struct variable_set *set, const char *prefix, int pauto) +{ + hash_map_arg (&set->table, (pauto ? print_auto_variable : print_variable), + (void *)prefix); + + fputs (_("# variable set hash-table stats:\n"), stdout); + fputs ("# ", stdout); + hash_print_stats (&set->table, stdout); + putc ('\n', stdout); +} + +/* Print the data base of variables. */ + +void +print_variable_data_base (void) +{ + puts (_("\n# Variables\n")); + + print_variable_set (&global_variable_set, "", 0); + + puts (_("\n# Pattern-specific Variable Values")); + + { + struct pattern_var *p; + unsigned int rules = 0; + + for (p = pattern_vars; p != 0; p = p->next) + { + ++rules; + printf ("\n%s :\n", p->target); + print_variable (&p->variable, (void *)"# "); + } + + if (rules == 0) + puts (_("\n# No pattern-specific variable values.")); + else + printf (_("\n# %u pattern-specific variable values"), rules); + } +} + + +/* Print all the local variables of FILE. */ + +void +print_file_variables (const struct file *file) +{ + if (file->variables != 0) + print_variable_set (file->variables->set, "# ", 1); +} + +void +print_target_variables (const struct file *file) +{ + if (file->variables != 0) + { + size_t l = strlen (file->name); + char *t = alloca (l + 3); + + memcpy (t, file->name, l); + t[l] = ':'; + t[l+1] = ' '; + t[l+2] = '\0'; + + hash_map_arg (&file->variables->set->table, print_noauto_variable, t); + } +} + +#ifdef WINDOWS32 +void +sync_Path_environment () +{ + static char *environ_path = NULL; + char *oldpath = environ_path; + char *path = allocated_variable_expand ("PATH=$(PATH)"); + + if (!path) + return; + + /* Convert PATH into something WINDOWS32 world can grok. */ + convert_Path_to_windows32 (path, ';'); + + environ_path = path; + putenv (environ_path); + free (oldpath); +} +#endif diff --git a/local/recipes/dev/gnu-make/source/src/variable.h b/local/recipes/dev/gnu-make/source/src/variable.h new file mode 100644 index 0000000000..d377a47f52 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/variable.h @@ -0,0 +1,249 @@ +/* Definitions for using variables in GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "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 + { + o_default, /* Variable from the default set. */ + o_env, /* Variable from environment. */ + o_file, /* Variable given in a makefile. */ + o_env_override, /* Variable from environment, if -e. */ + o_command, /* Variable given by user. */ + o_override, /* Variable from an 'override' directive. */ + o_automatic, /* Automatic variable -- cannot be set. */ + o_invalid /* Core dump time. */ + }; + +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'. */ + +#define EXP_COUNT_BITS 15 /* This gets all the bitfields into 32 bits */ +#define EXP_COUNT_MAX ((1<1, allow this many self-referential + expansions. */ + enum variable_flavor + flavor ENUM_BITFIELD (3); /* Variable flavor. */ + enum variable_origin + origin ENUM_BITFIELD (3); /* Variable origin. */ + enum variable_export + export ENUM_BITFIELD (2); /* Export control. */ + }; + +/* Structure that represents a variable set. */ + +struct variable_set + { + struct hash_table table; /* Hash table of variables. */ + }; + +/* Structure that represents a list of variable sets. */ + +struct variable_set_list + { + struct variable_set_list *next; /* Link in the chain. */ + struct variable_set *set; /* Variable set. */ + int next_is_parent; /* True if next is a parent target. */ + }; + +/* Structure used for pattern-specific variables. */ + +struct pattern_var + { + struct pattern_var *next; + const char *suffix; + const char *target; + size_t len; + 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; +extern struct variable shell_var; + +/* expand.c */ +#ifndef SIZE_MAX +# define SIZE_MAX ((size_t)~(size_t)0) +#endif + +char *variable_buffer_output (char *ptr, const char *string, size_t length); +char *variable_expand (const char *line); +char *variable_expand_for_file (const char *line, struct file *file); +char *allocated_variable_expand_for_file (const char *line, struct file *file); +#define allocated_variable_expand(line) \ + 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); + +/* function.c */ +int handle_function (char **op, const char **stringp); +int pattern_matches (const char *pattern, const char *percent, const char *str); +char *subst_expand (char *o, const char *text, const char *subst, + const char *replace, size_t slen, size_t rlen, + int by_word); +char *patsubst_expand_pat (char *o, const char *text, const char *pattern, + const char *replace, const char *pattern_percent, + const char *replace_percent); +char *patsubst_expand (char *o, const char *text, char *pattern, char *replace); +char *func_shell_base (char *o, char **argv, int trim_newlines); +void shell_completed (int exit_code, int exit_sig); + +/* expand.c */ +char *recursively_expand_for_file (struct variable *v, struct file *file); +#define recursively_expand(v) recursively_expand_for_file (v, NULL) + +/* variable.c */ +struct variable_set_list *create_new_variable_set (void); +void free_variable_set (struct variable_set_list *); +struct variable_set_list *push_new_variable_scope (void); +void pop_variable_scope (void); +void define_automatic_variables (void); +void initialize_file_variables (struct file *file, int reading); +void print_file_variables (const struct file *file); +void print_target_variables (const struct file *file); +void merge_variable_set_lists (struct variable_set_list **to_list, + struct variable_set_list *from_list); +struct variable *do_variable_definition (const floc *flocp, + const char *name, const char *value, + enum variable_origin origin, + enum variable_flavor flavor, + int target_var); +char *parse_variable_definition (const char *line, + struct variable *v); +struct variable *assign_variable_definition (struct variable *v, const char *line); +struct variable *try_variable_definition (const floc *flocp, const char *line, + enum variable_origin origin, + int target_var); +void init_hash_global_variable_set (void); +void hash_init_function_table (void); +void define_new_function(const floc *flocp, const char *name, + unsigned int min, unsigned int max, unsigned int flags, + gmk_func_ptr func); +struct variable *lookup_variable (const char *name, size_t length); +struct variable *lookup_variable_in_set (const char *name, size_t length, + const struct variable_set *set); + +struct variable *define_variable_in_set (const char *name, size_t length, + const char *value, + enum variable_origin origin, + int recursive, + struct variable_set *set, + const floc *flocp); + +/* Define a variable in the current variable set. */ + +#define define_variable(n,l,v,o,r) \ + define_variable_in_set((n),(l),(v),(o),(r),\ + current_variable_set_list->set,NILF) + +/* Define a variable with a constant name in the current variable set. */ + +#define define_variable_cname(n,v,o,r) \ + define_variable_in_set((n),(sizeof (n) - 1),(v),(o),(r),\ + current_variable_set_list->set,NILF) + +/* Define a variable with a location in the current variable set. */ + +#define define_variable_loc(n,l,v,o,r,f) \ + define_variable_in_set((n),(l),(v),(o),(r),\ + current_variable_set_list->set,(f)) + +/* Define a variable with a location in the global variable set. */ + +#define define_variable_global(n,l,v,o,r,f) \ + define_variable_in_set((n),(l),(v),(o),(r),NULL,(f)) + +/* Define a variable in FILE's variable set. */ + +#define define_variable_for_file(n,l,v,o,r,f) \ + define_variable_in_set((n),(l),(v),(o),(r),(f)->variables->set,NILF) + +void undefine_variable_in_set (const char *name, size_t length, + enum variable_origin origin, + struct variable_set *set); + +/* Remove variable from the current variable set. */ + +#define undefine_variable_global(n,l,o) \ + undefine_variable_in_set((n),(l),(o),NULL) + +/* Warn that NAME is an undefined variable. */ + +#define warn_undefined(n,l) do{\ + if (warn_undefined_variables_flag) \ + error (reading_file, (l), \ + _("warning: undefined variable '%.*s'"), \ + (int)(l), (n)); \ + }while(0) + +char **target_environment (struct file *file, int recursive); + +struct pattern_var *create_pattern_var (const char *target, + const char *suffix); + +extern int export_all_variables; + +#define MAKELEVEL_NAME "MAKELEVEL" +#define MAKELEVEL_LENGTH (CSTRLEN (MAKELEVEL_NAME)) diff --git a/local/recipes/dev/gnu-make/source/src/version.c b/local/recipes/dev/gnu-make/source/src/version.c new file mode 100644 index 0000000000..b96e0303dc --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/version.c @@ -0,0 +1,33 @@ +/* Record version and build host architecture for GNU make. +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 +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 . */ + +/* We use instead of "config.h" so that a compilation + using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h + (which it would do because makeint.h was found in $srcdir). */ +#include + +#ifndef MAKE_HOST +# define MAKE_HOST "unknown" +#endif + +const char *version_string = PACKAGE_VERSION; +const char *make_host = MAKE_HOST; + +/* + Local variables: + version-control: never + End: + */ diff --git a/local/recipes/dev/gnu-make/source/src/vms_exit.c b/local/recipes/dev/gnu-make/source/src/vms_exit.c new file mode 100644 index 0000000000..ebcebcdeaf --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vms_exit.c @@ -0,0 +1,95 @@ +/* vms_exit.c + * + * 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-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 +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 . */ + + +/* Per copyright assignment agreement with the Free Software Foundation + this software may be available under under other license agreements + and copyrights. */ + +#include + +#include +void +decc$exit (int status); +#ifndef C_FACILITY_NO +# define C_FACILITY_NO 0x350000 +#endif + +/* Lowest legal non-success VMS exit code is 8 */ +/* GNU make only defines codes 0, 1, 2 */ +/* So assume any exit code > 8 is a VMS exit code */ + +#ifndef MAX_EXPECTED_EXIT_CODE +# define MAX_EXPECTED_EXIT_CODE 7 +#endif + +/* Build a Posix Exit with VMS severity */ +void +vms_exit (int status) +{ + int vms_status; + /* Fake the __posix_exit with severity added */ + /* Undocumented correct way to do this. */ + vms_status = 0; + + /* The default DECC definition is not compatible with doing a POSIX_EXIT */ + /* So fix it. */ + if (status == EXIT_FAILURE) + status = MAKE_FAILURE; + + /* Trivial case exit success */ + if (status == 0) + decc$exit (STS$K_SUCCESS); + + /* Is this a VMS status then just take it */ + if (status > MAX_EXPECTED_EXIT_CODE) + { + /* Make sure that the message inhibit is set since message has */ + /* already been displayed. */ + vms_status = status | STS$M_INHIB_MSG; + decc$exit (vms_status); + } + + /* Unix status codes are limited to 1 byte, so anything larger */ + /* is a probably a VMS exit code and needs to be passed through */ + /* A lower value can be set for a macro. */ + /* Status 0 is always passed through as it is converted to SS$_NORMAL */ + /* Always set the message inhibit bit */ + vms_status = C_FACILITY_NO | 0xA000 | STS$M_INHIB_MSG; + vms_status |= (status << 3); + + /* STS$K_ERROR is for status that stops makefile that a simple */ + /* Rerun of the makefile will not fix. */ + + if (status == MAKE_FAILURE) + vms_status |= STS$K_ERROR; + else if (status == MAKE_TROUBLE) + { + /* Make trouble is for when make was told to do nothing and */ + /* found that a target was not up to date. Since a second */ + /* of make will produce the same condition, this is of */ + /* Error severity */ + vms_status |= STS$K_ERROR; + } + decc$exit (vms_status); +} diff --git a/local/recipes/dev/gnu-make/source/src/vms_export_symbol.c b/local/recipes/dev/gnu-make/source/src/vms_export_symbol.c new file mode 100644 index 0000000000..a1a7c16b40 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vms_export_symbol.c @@ -0,0 +1,527 @@ +/* File: vms_export_symbol.c + * + * Some programs need special environment variables deported as DCL + * DCL symbols. + */ + +/* 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 +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 . */ + + +/* Per copyright assignment agreement with the Free Software Foundation + this software may be available under under other license agreements + and copyrights. */ + + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#pragma member_alignment save +#pragma nomember_alignment longword +struct item_list_3 +{ + unsigned short len; + unsigned short code; + void * bufadr; + unsigned short * retlen; +}; + + +#pragma member_alignment + +int +LIB$GET_SYMBOL (const struct dsc$descriptor_s * symbol, + struct dsc$descriptor_s * value, + unsigned short * value_len, + const unsigned long * table); + +int +LIB$SET_SYMBOL (const struct dsc$descriptor_s * symbol, + const struct dsc$descriptor_s * value, + const unsigned long * table); + +int +LIB$DELETE_SYMBOL (const struct dsc$descriptor_s * symbol, + const unsigned long * table); + +#define MAX_DCL_SYMBOL_LEN (255) +#if __CRTL_VER >= 70302000 && !defined(__VAX) +# define MAX_DCL_SYMBOL_VALUE (8192) +#else +# define MAX_DCL_SYMBOL_VALUE (1024) +#endif + +struct dcl_symbol +{ + struct dcl_symbol * link; + struct dsc$descriptor_s name_desc; + 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 alignment */ +}; + +static struct dcl_symbol * vms_dcl_symbol_head = NULL; + +/* Restore symbol state to original condition. */ +static unsigned long +clear_dcl_symbol (struct dcl_symbol * symbol) +{ + + const unsigned long symtbl = LIB$K_CLI_LOCAL_SYM; + int status; + + if (symbol->value_desc.dsc$w_length == (unsigned short)-1) + status = LIB$DELETE_SYMBOL (&symbol->name_desc, &symtbl); + else + status = LIB$SET_SYMBOL (&symbol->name_desc, + &symbol->value_desc, &symtbl); + return status; +} + + +/* Restore all exported symbols to their original conditions */ +static void +clear_exported_symbols (void) +{ + + struct dcl_symbol * symbol; + + symbol = vms_dcl_symbol_head; + + /* Walk the list of symbols. This is done during exit, + * so no need to free memory. + */ + while (symbol != NULL) + { + clear_dcl_symbol (symbol); + symbol = symbol->link; + } + +} + + +/* Restore the symbol back to the original value + * symbol name is either a plain name or of the form "symbol=name" where + * the name portion is ignored. + */ +void +vms_restore_symbol (const char * string) +{ + + struct dcl_symbol * symbol; + char name[MAX_DCL_SYMBOL_LEN + 1]; + int status; + char * value; + int name_len; + + symbol = vms_dcl_symbol_head; + + /* Isolate the name from the value */ + value = strchr (string, '='); + if (value != NULL) + { + /* Copy the name from the string */ + name_len = (value - string); + } + else + name_len = strlen (string); + + if (name_len > MAX_DCL_SYMBOL_LEN) + name_len = MAX_DCL_SYMBOL_LEN; + + strncpy (name, string, name_len); + name[name_len] = 0; + + /* Walk the list of symbols. The saved symbol is not freed + * symbols are likely to be overwritten multiple times, so this + * saves time in saving them each time. + */ + while (symbol != NULL) + { + int result; + result = strcmp (symbol->name, name); + if (result == 0) + { + clear_dcl_symbol (symbol); + break; + } + symbol = symbol->link; + } +} + +int +vms_export_dcl_symbol (const char * name, const char * value) +{ + + struct dcl_symbol * symbol; + struct dcl_symbol * next; + struct dcl_symbol * link; + int found; + const unsigned long symtbl = LIB$K_CLI_LOCAL_SYM; + struct dsc$descriptor_s value_desc; + int string_len; + int status; + char new_value[MAX_DCL_SYMBOL_VALUE + 1]; + char * dollarp; + + next = vms_dcl_symbol_head; + link = vms_dcl_symbol_head; + + /* Is symbol already exported? */ + found = 0; + while ((found == 0) && (link != NULL)) + { + int x; + found = !strncasecmp (link->name, name, MAX_DCL_SYMBOL_LEN); + if (found) + symbol = link; + next = link; + link = link->link; + } + + /* New symbol, set it up */ + if (found == 0) + { + symbol = malloc (sizeof (struct dcl_symbol)); + if (symbol == NULL) + return SS$_INSFMEM; + + /* Construct the symbol descriptor, used for both saving + * the old symbol and creating the new symbol. + */ + symbol->name_desc.dsc$w_length = strlen (name); + if (symbol->name_desc.dsc$w_length > MAX_DCL_SYMBOL_LEN) + symbol->name_desc.dsc$w_length = MAX_DCL_SYMBOL_LEN; + + strncpy (symbol->name, name, symbol->name_desc.dsc$w_length); + symbol->name[symbol->name_desc.dsc$w_length] = 0; + symbol->name_desc.dsc$a_pointer = symbol->name; + symbol->name_desc.dsc$b_dtype = DSC$K_DTYPE_T; + symbol->name_desc.dsc$b_class = DSC$K_CLASS_S; + + /* construct the value descriptor, used only for saving + * the old symbol. + */ + symbol->value_desc.dsc$a_pointer = symbol->value; + symbol->value_desc.dsc$w_length = MAX_DCL_SYMBOL_VALUE; + symbol->value_desc.dsc$b_dtype = DSC$K_DTYPE_T; + symbol->value_desc.dsc$b_class = DSC$K_CLASS_S; + } + + if (found == 0) + { + unsigned long old_symtbl; + unsigned short value_len; + + /* Look up the symbol */ + status = LIB$GET_SYMBOL (&symbol->name_desc, &symbol->value_desc, + &value_len, &old_symtbl); + if (!$VMS_STATUS_SUCCESS (status)) + value_len = (unsigned short)-1; + else if (old_symtbl != symtbl) + value_len = (unsigned short)-1; + + symbol->value_desc.dsc$w_length = value_len; + + /* Store it away */ + if (value_len != (unsigned short) -1) + symbol->value[value_len] = 0; + + /* Make sure atexit scheduled */ + if (vms_dcl_symbol_head == NULL) + { + vms_dcl_symbol_head = symbol; + atexit (clear_exported_symbols); + } + else + { + /* Extend the chain */ + next->link = symbol; + } + } + + /* Create or replace a symbol */ + value_desc.dsc$a_pointer = new_value; + string_len = strlen (value); + if (string_len > MAX_DCL_SYMBOL_VALUE) + string_len = MAX_DCL_SYMBOL_VALUE; + + strncpy (new_value, value, string_len); + new_value[string_len] = 0; + + /* Special handling for GNU Make. GNU Make doubles the dollar signs + * in environment variables read in from getenv(). Make exports symbols + * with the dollar signs already doubled. So all $$ must be converted + * back to $. + * If the first $ is not doubled, then do not convert at all. + */ + dollarp = strchr (new_value, '$'); + while (dollarp && dollarp[1] == '$') + { + int left; + dollarp++; + left = string_len - (dollarp - new_value - 1); + string_len--; + if (left > 0) + { + memmove (dollarp, &dollarp[1], left); + dollarp = strchr (&dollarp[1], '$'); + } + else + { + /* Ended with $$, simple case */ + dollarp[1] = 0; + break; + } + } + value_desc.dsc$w_length = string_len; + value_desc.dsc$b_dtype = DSC$K_DTYPE_T; + value_desc.dsc$b_class = DSC$K_CLASS_S; + status = LIB$SET_SYMBOL (&symbol->name_desc, &value_desc, &symtbl); + return status; +} + +/* export a DCL symbol using a string in the same syntax as putenv */ +int +vms_putenv_symbol (const char * string) +{ + + char name[MAX_DCL_SYMBOL_LEN + 1]; + int status; + char * value; + int name_len; + + /* Isolate the name from the value */ + value = strchr (string, '='); + if (value == NULL) + { + errno = EINVAL; + return -1; + } + + /* Copy the name from the string */ + name_len = (value - string); + if (name_len > MAX_DCL_SYMBOL_LEN) + name_len = MAX_DCL_SYMBOL_LEN; + + strncpy (name, string, name_len); + name[name_len] = 0; + + /* Skip past the "=" */ + value++; + + /* Export the symbol */ + status = vms_export_dcl_symbol (name, value); + + /* Convert the error to Unix format */ + if (!$VMS_STATUS_SUCCESS (status)) + { + errno = EVMSERR; + vaxc$errno = status; + return -1; + } + return 0; +} + +#if __CRTL_VER >= 70301000 +# define transpath_parm transpath +#else +static char transpath[MAX_DCL_SYMBOL_VALUE]; +#endif + +/* Helper callback routine for converting Unix paths to VMS */ +static int +to_vms_action (char * vms_spec, int flag, char * transpath_parm) +{ + strncpy (transpath, vms_spec, MAX_DCL_SYMBOL_VALUE - 1); + transpath[MAX_DCL_SYMBOL_VALUE - 1] = 0; + return 0; +} + +#ifdef __DECC +# pragma message save + /* Undocumented extra parameter use triggers a ptrmismatch warning */ +# pragma message disable ptrmismatch +#endif + +/* Create a foreign command only visible to children */ +int +create_foreign_command (const char * command, const char * image) +{ + char vms_command[MAX_DCL_SYMBOL_VALUE + 1]; + int status; + + vms_command[0] = '$'; + vms_command[1] = 0; + if (image[0] == '/') + { +#if __CRTL_VER >= 70301000 + /* Current decc$to_vms is reentrant */ + decc$to_vms (image, to_vms_action, 0, 1, &vms_command[1]); +#else + /* Older decc$to_vms is not reentrant */ + decc$to_vms (image, to_vms_action, 0, 1); + strncpy (&vms_command[1], transpath, MAX_DCL_SYMBOL_VALUE - 1); + vms_command[MAX_DCL_SYMBOL_VALUE] = 0; +#endif + } + else + { + strncpy (&vms_command[1], image, MAX_DCL_SYMBOL_VALUE - 1); + vms_command[MAX_DCL_SYMBOL_VALUE] = 0; + } + status = vms_export_dcl_symbol (command, vms_command); + + return status; +} +#ifdef __DECC +# pragma message restore +#endif + + +#ifdef DEBUG + +int +main(int argc, char ** argv, char **env) +{ + + char value[MAX_DCL_SYMBOL_VALUE +1]; + int status = 0; + int putenv_status; + int vms_status; + struct dsc$descriptor_s name_desc; + struct dsc$descriptor_s value_desc; + const unsigned long symtbl = LIB$K_CLI_LOCAL_SYM; + unsigned short value_len; + unsigned long old_symtbl; + int result; + const char * vms_command = "vms_export_symbol"; + const char * vms_image = "test_image.exe"; + const char * vms_symbol1 = "test_symbol1"; + const char * value1 = "test_value1"; + const char * vms_symbol2 = "test_symbol2"; + const char * putenv_string = "test_symbol2=value2"; + const char * value2 = "value2"; + + /* Test creating a foreign command */ + vms_status = create_foreign_command (vms_command, vms_image); + if (!$VMS_STATUS_SUCCESS (vms_status)) + { + printf("Create foreign command failed: %d\n", vms_status); + status = 1; + } + + name_desc.dsc$a_pointer = (char *)vms_command; + name_desc.dsc$w_length = strlen (vms_command); + name_desc.dsc$b_dtype = DSC$K_DTYPE_T; + name_desc.dsc$b_class = DSC$K_CLASS_S; + + value_desc.dsc$a_pointer = value; + value_desc.dsc$w_length = MAX_DCL_SYMBOL_VALUE; + value_desc.dsc$b_dtype = DSC$K_DTYPE_T; + value_desc.dsc$b_class = DSC$K_CLASS_S; + + vms_status = LIB$GET_SYMBOL (&name_desc, &value_desc, + &value_len, &old_symtbl); + if (!$VMS_STATUS_SUCCESS (vms_status)) + { + printf ("lib$get_symbol for command failed: %d\n", vms_status); + status = 1; + } + + value[value_len] = 0; + result = strncasecmp (&value[1], vms_image, value_len - 1); + if (result != 0) + { + printf ("create_foreign_command failed! expected '%s', got '%s'\n", + vms_image, &value[1]); + status = 1; + } + + /* Test exporting a symbol */ + vms_status = vms_export_dcl_symbol (vms_symbol1, value1); + if (!$VMS_STATUS_SUCCESS (vms_status)) + { + printf ("vms_export_dcl_symbol for command failed: %d\n", vms_status); + status = 1; + } + + name_desc.dsc$a_pointer = (char *)vms_symbol1; + name_desc.dsc$w_length = strlen (vms_symbol1); + vms_status = LIB$GET_SYMBOL(&name_desc, &value_desc, + &value_len, &old_symtbl); + if (!$VMS_STATUS_SUCCESS(vms_status)) + { + printf ("lib$get_symbol for command failed: %d\n", vms_status); + status = 1; + } + + value[value_len] = 0; + result = strncmp (value, value1, value_len); + if (result != 0) + { + printf ("vms_export_dcl_symbol failed! expected '%s', got '%s'\n", + value1, value); + status = 1; + } + + /* Test putenv for DCL symbols */ + putenv_status = vms_putenv_symbol (putenv_string); + if (putenv_status != 0) + { + perror ("vms_putenv_symbol"); + status = 1; + } + + name_desc.dsc$a_pointer = (char *)vms_symbol2; + name_desc.dsc$w_length = strlen(vms_symbol2); + vms_status = LIB$GET_SYMBOL (&name_desc, &value_desc, + &value_len, &old_symtbl); + if (!$VMS_STATUS_SUCCESS (vms_status)) + { + printf ("lib$get_symbol for command failed: %d\n", vms_status); + status = 1; + } + + value[value_len] = 0; + result = strncmp (value, value2, value_len); + if (result != 0) + { + printf ("vms_putenv_symbol failed! expected '%s', got '%s'\n", + value2, value); + status = 1; + } + + vms_restore_symbol (putenv_string); + vms_status = LIB$GET_SYMBOL (&name_desc, &value_desc, + &value_len, &old_symtbl); + if ($VMS_STATUS_SUCCESS (vms_status)) + { + printf ("lib$get_symbol for command succeeded, should have failed\n"); + status = 1; + } + + exit (status); +} + +#endif diff --git a/local/recipes/dev/gnu-make/source/src/vms_progname.c b/local/recipes/dev/gnu-make/source/src/vms_progname.c new file mode 100644 index 0000000000..1d6edbdf5c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vms_progname.c @@ -0,0 +1,463 @@ +/* File: vms_progname.c + * + * This module provides a fixup of the program name. + * + * This module is designed to be a plug in replacement for the + * progname module used by many GNU utilities with a few enhancements + * needed for GNU Make. + * + * It does not support the HAVE_DECL_PROGRAM_INVOCATION_* macros at this + * time. + * + * Make sure that the program_name string is set as close as possible to + * what the original command was given. + * + * When run from DCL, The argv[0] element is initialized with an absolute + * path name. The decc$ feature logical names can control the format + * of this pathname. In some cases it causes the UNIX format name to be + * formatted incorrectly. + * + * This DCL provided name is usually incompatible with what is expected to + * be provided by Unix programs and needs to be replaced. + * + * When run from an exec() call, the argv[0] element is initialized by the + * program. This name is compatible with what is expected to be provided + * by Unix programs and should be passed through unchanged. + * + * The DCL provided name can be detected because it always contains the + * device name. + * + * DCL examples: + * devname:[dir]program.exe;1 Normal VMS - remove path and .EXE;n + * devname:[dir]facility$program.exe;1 Facility also needs removal. + * /devname/dir/program.exe + * /DISK$VOLUME/dir/program.exe.1 Bug version should not be there. + * /DISK$VOLUME/dir/program. Bug Period should not be there. + * + */ + +/* 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 +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 . */ + + +/* Per copyright assignment agreement with the Free Software Foundation + this software may be available under under other license agreements + and copyrights. */ + + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#ifdef USE_PROGNAME_H +# include "progname.h" +#endif + +#pragma member_alignment save +#pragma nomember_alignment longword +struct item_list_3 +{ + unsigned short len; + unsigned short code; + void * bufadr; + unsigned short * retlen; +}; + +struct filescan_itmlst_2 +{ + unsigned short length; + unsigned short itmcode; + char * component; +}; + +#pragma member_alignment + +int +SYS$GETDVIW (unsigned long efn, + unsigned short chan, + const struct dsc$descriptor_s * devnam, + const struct item_list_3 * itmlst, + void * iosb, + void (* astadr)(unsigned long), + unsigned long astprm, + void * nullarg); + +int +SYS$FILESCAN (const struct dsc$descriptor_s * srcstr, + struct filescan_itmlst_2 * valuelist, + unsigned long * fldflags, + struct dsc$descriptor_s *auxout, + unsigned short * retlen); + +/* String containing name the program is called with. + To be initialized by main(). */ + +const char *program_name = NULL; + +static int internal_need_vms_symbol = 0; + +static char vms_new_nam[256]; + +int +need_vms_symbol (void) +{ + return internal_need_vms_symbol; +} + + +void +set_program_name (const char *argv0) +{ + int status; + int result; + +#ifdef DEBUG + printf ("original argv0 = %s\n", argv0); +#endif + + /* Posix requires non-NULL argv[0] */ + if (argv0 == NULL) + { + fputs ("A NULL argv[0] was passed through an exec system call.\n", + stderr); + abort (); + } + + program_name = argv0; + result = 0; + internal_need_vms_symbol = 0; + + /* If the path name starts with a /, then it is an absolute path */ + /* that may have been generated by the CRTL instead of the command name */ + /* If it is the device name between the slashes, then this was likely */ + /* from the run command and needs to be fixed up. */ + /* If the DECC$POSIX_COMPLIANT_PATHNAMES is set to 2, then it is the */ + /* DISK$VOLUME that will be present, and it will still need to be fixed. */ + if (argv0[0] == '/') + { + char * nextslash; + int length; + struct item_list_3 itemlist[3]; + unsigned short dvi_iosb[4]; + char alldevnam[64]; + unsigned short alldevnam_len; + struct dsc$descriptor_s devname_dsc; + char diskvolnam[256]; + unsigned short diskvolnam_len; + + internal_need_vms_symbol = 1; + + /* Get some information about the disk */ + /*--------------------------------------*/ + itemlist[0].len = (sizeof alldevnam) - 1; + itemlist[0].code = DVI$_ALLDEVNAM; + itemlist[0].bufadr = alldevnam; + itemlist[0].retlen = &alldevnam_len; + itemlist[1].len = (sizeof diskvolnam) - 1 - 5; + itemlist[1].code = DVI$_VOLNAM; + itemlist[1].bufadr = &diskvolnam[5]; + itemlist[1].retlen = &diskvolnam_len; + itemlist[2].len = 0; + itemlist[2].code = 0; + + /* Add the prefix for the volume name. */ + /* SYS$GETDVI will append the volume name to this */ + strcpy (diskvolnam, "DISK$"); + + nextslash = strchr (&argv0[1], '/'); + if (nextslash != NULL) + { + length = nextslash - argv0 - 1; + + /* Cast needed for HP C compiler diagnostic */ + devname_dsc.dsc$a_pointer = (char *)&argv0[1]; + devname_dsc.dsc$w_length = length; + devname_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + devname_dsc.dsc$b_class = DSC$K_CLASS_S; + + status = SYS$GETDVIW (EFN$C_ENF, 0, &devname_dsc, itemlist, + dvi_iosb, NULL, 0, 0); + if (!$VMS_STATUS_SUCCESS (status)) + { + /* If the sys$getdviw fails, then this path was passed by */ + /* An exec() program and not from DCL, so do nothing */ + /* An example is "/tmp/program" where tmp: does not exist */ +#ifdef DEBUG + printf ("sys$getdviw failed with status %d\n", status); +#endif + result = 0; + } + else if (!$VMS_STATUS_SUCCESS (dvi_iosb[0])) + { +#ifdef DEBUG + printf ("sys$getdviw failed with iosb %d\n", dvi_iosb[0]); +#endif + result = 0; + } + else + { + char * devnam; + int devnam_len; + char argv_dev[64]; + + /* Null terminate the returned alldevnam */ + alldevnam[alldevnam_len] = 0; + devnam = alldevnam; + devnam_len = alldevnam_len; + + /* Need to skip past any leading underscore */ + if (devnam[0] == '_') + { + devnam++; + devnam_len--; + } + + /* And remove the trailing colon */ + if (devnam[devnam_len - 1] == ':') + { + devnam_len--; + devnam[devnam_len] = 0; + } + + /* Null terminate the returned volnam */ + diskvolnam_len += 5; + diskvolnam[diskvolnam_len] = 0; + + /* Check first for normal CRTL behavior */ + if (devnam_len == length) + { + strncpy (vms_new_nam, &argv0[1], length); + vms_new_nam[length] = 0; + result = (strcasecmp (devnam, vms_new_nam) == 0); + } + + /* If we have not got a match, check for POSIX Compliant */ + /* behavior. To be more accurate, we could also check */ + /* to see if that feature is active. */ + if ((result == 0) && (diskvolnam_len == length)) + { + strncpy (vms_new_nam, &argv0[1], length); + vms_new_nam[length] = 0; + result = (strcasecmp (diskvolnam, vms_new_nam) == 0); + } + } + } + } + else + { + /* The path did not start with a slash, so it could be VMS format */ + /* If it is vms format, it has a volume/device in it as it must */ + /* be an absolute path */ + struct dsc$descriptor_s path_desc; + int status; + unsigned long field_flags; + struct filescan_itmlst_2 item_list[5]; + char * volume; + char * name; + int name_len; + char * ext; + + path_desc.dsc$a_pointer = (char *)argv0; /* cast ok */ + path_desc.dsc$w_length = strlen (argv0); + path_desc.dsc$b_dtype = DSC$K_DTYPE_T; + path_desc.dsc$b_class = DSC$K_CLASS_S; + + /* Don't actually need to initialize anything buf itmcode */ + /* I just do not like uninitialized input values */ + + /* Sanity check, this must be the same length as input */ + item_list[0].itmcode = FSCN$_FILESPEC; + item_list[0].length = 0; + item_list[0].component = NULL; + + /* If the device is present, then it if a VMS spec */ + item_list[1].itmcode = FSCN$_DEVICE; + item_list[1].length = 0; + item_list[1].component = NULL; + + /* we need the program name and type */ + item_list[2].itmcode = FSCN$_NAME; + item_list[2].length = 0; + item_list[2].component = NULL; + + item_list[3].itmcode = FSCN$_TYPE; + item_list[3].length = 0; + item_list[3].component = NULL; + + /* End the list */ + item_list[4].itmcode = 0; + item_list[4].length = 0; + item_list[4].component = NULL; + + status = SYS$FILESCAN ((const struct dsc$descriptor_s *)&path_desc, + item_list, &field_flags, NULL, NULL); + + + if ($VMS_STATUS_SUCCESS (status) && + (item_list[0].length == path_desc.dsc$w_length) && + (item_list[1].length != 0)) + { + + char * dollar; + int keep_ext; + int i; + + /* We need the filescan to be successful, */ + /* same length as input, and a volume to be present */ + internal_need_vms_symbol = 1; + + /* We will assume that we only get to this path on a version */ + /* of VMS that does not support the EFS character set */ + + /* There may be a xxx$ prefix on the image name. Linux */ + /* programs do not handle that well, so strip the prefix */ + name = item_list[2].component; + name_len = item_list[2].length; + dollar = strrchr (name, '$'); + if (dollar != NULL) + { + dollar++; + name_len = name_len - (dollar - name); + name = dollar; + } + + strncpy (vms_new_nam, name, name_len); + vms_new_nam[name_len] = 0; + + /* Commit to using the new name */ + program_name = vms_new_nam; + + /* We only keep the extension if it is not ".exe" */ + keep_ext = 0; + ext = item_list[3].component; + + if (item_list[3].length != 1) + { + keep_ext = 1; + if (item_list[3].length == 4) + { + if ((ext[1] == 'e' || ext[1] == 'E') && + (ext[2] == 'x' || ext[2] == 'X') && + (ext[3] == 'e' || ext[3] == 'E')) + keep_ext = 0; + } + } + + if (keep_ext == 1) + strncpy (&vms_new_nam[name_len], ext, item_list[3].length); + } + } + + if (result) + { + char * lastslash; + char * dollar; + char * dotexe; + char * lastdot; + char * extension; + + /* This means it is probably the name from a DCL command */ + /* Find the last slash which separates the file from the */ + /* path. */ + lastslash = strrchr (argv0, '/'); + + if (lastslash != NULL) { + int i; + + lastslash++; + + /* There may be a xxx$ prefix on the image name. Linux */ + /* programs do not handle that well, so strip the prefix */ + dollar = strrchr (lastslash, '$'); + + if (dollar != NULL) { + dollar++; + lastslash = dollar; + } + + strcpy (vms_new_nam, lastslash); + + /* In UNIX mode + EFS character set, there should not be a */ + /* version present, as it is not possible when parsing to */ + /* tell if it is a version or part of the UNIX filename as */ + /* UNIX programs use numeric extensions for many reasons. */ + + lastdot = strrchr (vms_new_nam, '.'); + if (lastdot != NULL) { + int i; + + i = 1; + while (isdigit ((unsigned char) lastdot[i])) { + i++; + } + if (lastdot[i] == 0) { + *lastdot = 0; + } + } + + /* 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') && + (dotexe[2] == 'x' || dotexe[2] == 'X') && + (dotexe[3] == 'e' || dotexe[3] == 'E') && + (dotexe[4] == 0)) { + + *dotexe = 0; + } else { + /* Also need to handle a null extension because of a */ + /* CRTL bug. */ + if (dotexe[1] == 0) { + *dotexe = 0; + } + } + } + + /* Commit to new name */ + program_name = vms_new_nam; + + } else { + /* There is no way that the code should ever get here */ + /* As we already verified that the '/' was present */ + fprintf (stderr, "Sanity failure somewhere we lost a '/'\n"); + } + } +} + +#ifdef DEBUG + +int +main (int argc, char ** argv, char **env) +{ + + char command[1024]; + + set_program_name (argv[0]); + + printf ("modified argv[0] = %s\n", program_name); + + return 0; +} +#endif diff --git a/local/recipes/dev/gnu-make/source/src/vmsdir.h b/local/recipes/dev/gnu-make/source/src/vmsdir.h new file mode 100644 index 0000000000..0f8fe3ada3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vmsdir.h @@ -0,0 +1,76 @@ +/* dirent.h for vms +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 +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 . */ + +#ifndef VMSDIR_H +#define VMSDIR_H + +#include + +#define MAXNAMLEN 255 + +#ifndef __DECC +#if !defined (__GNUC__) && !defined (__ALPHA) +typedef unsigned long u_long; +typedef unsigned short u_short; +#endif +#endif + +struct direct +{ + off_t d_off; + u_long d_fileno; + u_short d_reclen; + u_short d_namlen; + char d_name[MAXNAMLEN + 1]; +}; + +#undef DIRSIZ +#define DIRSIZ(dp) \ + (((sizeof (struct direct) \ + - (MAXNAMLEN+1) \ + + ((dp)->d_namlen+1)) \ + + 3) & ~3) + +#define d_ino d_fileno /* compatibility */ + + +/* + * Definitions for library routines operating on directories. + */ + +typedef struct DIR +{ + struct direct dir; + char d_result[MAXNAMLEN + 1]; +#if defined (__ALPHA) || defined (__DECC) + struct FAB fab; +#else + struct fabdef fab; +#endif +} DIR; + +#ifndef NULL +#define NULL 0 +#endif + +#define rewinddir(dirp) seekdir((dirp), (long)0) + +DIR *opendir (); +struct direct *readdir (DIR *dfd); +int closedir (DIR *dfd); +const char *vmsify (const char *name, int type); + +#endif /* VMSDIR_H */ diff --git a/local/recipes/dev/gnu-make/source/src/vmsfunctions.c b/local/recipes/dev/gnu-make/source/src/vmsfunctions.c new file mode 100644 index 0000000000..499f3393d3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vmsfunctions.c @@ -0,0 +1,226 @@ +/* VMS functions +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include "debug.h" +#include "job.h" + +#include +#include + +#ifdef __DECC +#include +#endif + +#include +#include "vmsdir.h" + +#ifdef HAVE_VMSDIR_H + +DIR * +opendir (char *dspec) +{ + struct DIR *dir = xcalloc (sizeof (struct DIR)); + struct NAM *dnam = xmalloc (sizeof (struct NAM)); + struct FAB *dfab = &dir->fab; + char *searchspec = xmalloc (MAXNAMLEN + 1); + + *dfab = cc$rms_fab; + *dnam = cc$rms_nam; + sprintf (searchspec, "%s*.*;", dspec); + + dfab->fab$l_fna = searchspec; + dfab->fab$b_fns = strlen (searchspec); + dfab->fab$l_nam = dnam; + + *dnam = cc$rms_nam; + dnam->nam$l_esa = searchspec; + dnam->nam$b_ess = MAXNAMLEN; + + if (! (sys$parse (dfab) & 1)) + { + free (dir); + free (dnam); + free (searchspec); + return (NULL); + } + + return dir; +} + +#define uppercasify(str) \ + do \ + { \ + char *tmp; \ + for (tmp = (str); *tmp != '\0'; tmp++) \ + if (islower ((unsigned char)*tmp)) \ + *tmp = toupper ((unsigned char)*tmp); \ + } \ + while (0) + +struct direct * +readdir (DIR *dir) +{ + struct FAB *dfab = &dir->fab; + struct NAM *dnam = (struct NAM *)(dfab->fab$l_nam); + struct direct *dentry = &dir->dir; + int i; + + memset (dentry, 0, sizeof *dentry); + + dnam->nam$l_rsa = dir->d_result; + dnam->nam$b_rss = MAXNAMLEN; + + DB (DB_VERBOSE, (".")); + + if (!((i = sys$search (dfab)) & 1)) + { + DB (DB_VERBOSE, (_("sys$search() failed with %d\n"), i)); + return (NULL); + } + + dentry->d_off = 0; + if (dnam->nam$w_fid == 0) + dentry->d_fileno = 1; + else + dentry->d_fileno = dnam->nam$w_fid[0] + (dnam->nam$w_fid[1] << 16); + + dentry->d_reclen = sizeof (struct direct); + dentry->d_namlen = dnam->nam$b_name + dnam->nam$b_type; + strncpy (dentry->d_name, dnam->nam$l_name, dentry->d_namlen); + dentry->d_name[dentry->d_namlen] = '\0'; + +#ifdef HAVE_CASE_INSENSITIVE_FS + uppercasify (dentry->d_name); +#endif + + return (dentry); +} + +int +closedir (DIR *dir) +{ + if (dir != NULL) + { + struct FAB *dfab = &dir->fab; + struct NAM *dnam = (struct NAM *)(dfab->fab$l_nam); + if (dnam != NULL) + free (dnam->nam$l_esa); + free (dnam); + free (dir); + } + + return 0; +} +#endif /* compiled for OpenVMS prior to V7.x */ + +/* Argv0 will be a full vms file specification, like + node$dka100:[utils.gnumake]make.exe;47 + prefix it with "mcr " to make it a vms command, executable for DCL. */ +const char * +vms_command(const char* argv0) +{ + size_t l = strlen(argv0) + 1; + char* s = xmalloc(l + 4); + memcpy(s, "mcr ", 4); + memcpy(s+4, argv0, l); + return s; +} + +/* Argv0 aka argv[0] will be a full vms file specification, like + node$dka100:[utils.gnumake]make.exe;47, set up by the CRTL. + The vms progname should be ^^^^, the file name without + file type .exe and ;version. + Use sys$parse to get the name part of the file specification. That is + in the above example, pick up "make" and return a copy of that string. + 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". + 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). + NAM$M_NO_SHORT_UPCASE may not be available for older versions of VMS. + NAML is not available on older versions of VMS (NAML$C_BID not defined). + argv[0] on older versions of VMS (no extended parse style and no + CRTL feature DECC$ARGV_PARSE_STYLE) is always in lowercase. */ +const char * +vms_progname(const char* argv0) +{ + int status; + static struct FAB fab; + char *progname; + const char *fallback = "make"; + +#ifdef NAML$C_BID + static char esa[NAML$C_MAXRSS]; + static struct NAML naml; +#else + static char esa[NAM$C_MAXRSS]; + static struct NAM nam; +#endif + + fab = cc$rms_fab; + fab.fab$l_fna = (char*)argv0; + fab.fab$b_fns = strlen(argv0); + +#ifdef NAML$C_BID + fab.fab$l_naml = &naml; + naml = cc$rms_naml; + naml.naml$l_long_expand = esa; + naml.naml$l_long_expand_alloc = NAML$C_MAXRSS; + naml.naml$b_nop = NAML$M_SYNCHK; + naml.naml$l_input_flags = NAML$M_NO_SHORT_OUTPUT; +#else + fab.fab$l_nam = &nam; + nam = cc$rms_nam; + nam.nam$l_esa = esa; + nam.nam$b_ess = NAM$C_MAXRSS; +# ifdef NAM$M_NO_SHORT_UPCASE + nam.nam$b_nop = NAM$M_SYNCHK | NAM$M_NO_SHORT_UPCASE; +# else + nam.nam$b_nop = NAM$M_SYNCHK; +# endif +#endif + + status = sys$parse(&fab); + if (!(status & 1)) + return fallback; + +#ifdef NAML$C_BID + if (naml.naml$l_long_name_size == 0) + return fallback; + progname = xmalloc(naml.naml$l_long_name_size + 1); + memcpy(progname, naml.naml$l_long_name, naml.naml$l_long_name_size); + progname[naml.naml$l_long_name_size] = '\0'; +#else + if (nam.nam$b_name == 0) + return fallback; + progname = xmalloc(nam.nam$b_name + 1); +# ifdef NAM$M_NO_SHORT_UPCASE + memcpy(progname, nam.nam$l_name, nam.nam$b_name); +# else + { + int i; + for (i = 0; i < nam.nam$b_name; i++) + progname[i] = tolower(nam.nam$l_name[i]); + } +# endif + progname[nam.nam$b_name] = '\0'; +#endif + + return progname; +} diff --git a/local/recipes/dev/gnu-make/source/src/vmsify.c b/local/recipes/dev/gnu-make/source/src/vmsify.c new file mode 100644 index 0000000000..7c3426eddb --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vmsify.c @@ -0,0 +1,1005 @@ +/* vmsify.c -- Module for vms <-> unix file name conversion +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 +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 . */ + +/* Written by Klaus Kämpf (kkaempf@progis.de) + of proGIS Software, Aachen, Germany */ + + +#include +#include +#include + +#include "makeint.h" + +#if VMS +#include +#include +#include +#include +#include +#include +#include +#include +/* Initialize a string descriptor (struct dsc$descriptor_s) for an + arbitrary string. ADDR is a pointer to the first character + of the string, and LEN is the length of the string. */ + +#define INIT_DSC_S(dsc, addr, len) do { \ + (dsc).dsc$b_dtype = DSC$K_DTYPE_T; \ + (dsc).dsc$b_class = DSC$K_CLASS_S; \ + (dsc).dsc$w_length = (len); \ + (dsc).dsc$a_pointer = (addr); \ +} while (0) + +/* Initialize a string descriptor (struct dsc$descriptor_s) for a + NUL-terminated string. S is a pointer to the string; the length + is determined by calling strlen(). */ + +#define INIT_DSC_CSTRING(dsc, s) INIT_DSC_S(dsc, s, strlen(s)) +#endif + +/* + copy 'from' to 'to' up to but not including 'upto' + return 0 if eos on from + return 1 if upto found + + return 'to' at last char + 1 + return 'from' at match + 1 or eos if no match + + if as_dir == 1, change all '.' to '_' + else change all '.' but the last to '_' +*/ + +static int +copyto (char **to, const char **from, char upto, int as_dir) +{ + const char *s; + + s = strrchr (*from, '.'); + + while (**from) + { + if (**from == upto) + { + do + { + (*from)++; + } + while (**from == upto); + return 1; + } + if (**from == '.') + { + if ((as_dir == 1) + || (*from != s)) + **to = '_'; + else + **to = '.'; + } + else + { +#ifdef HAVE_CASE_INSENSITIVE_FS + if (isupper ((unsigned char)**from)) + **to = tolower ((unsigned char)**from); + else +#endif + **to = **from; + } + (*to)++; + (*from)++; + } + + return 0; +} + + +/* + get translation of logical name + +*/ + +static char * +trnlog (const char *name) +{ + int stat; + static char reslt[1024]; + $DESCRIPTOR (reslt_dsc, reslt); + short resltlen; + struct dsc$descriptor_s name_dsc; + char *s; + + /* + * the string isn't changed, but there is no string descriptor with + * "const char *dsc$a_pointer" + */ + INIT_DSC_CSTRING (name_dsc, (char *)name); + + stat = lib$sys_trnlog (&name_dsc, &resltlen, &reslt_dsc); + + if ((stat&1) == 0) + { + return ""; + } + if (stat == SS$_NOTRAN) + { + return ""; + } + reslt[resltlen] = '\0'; + + s = xmalloc (resltlen+1); + strcpy (s, reslt); + return s; +} + +static char * +showall (char *s) +{ + static char t[512]; + char *pt; + + pt = t; + if (strchr (s, '\\') == 0) + return s; + while (*s) + { + if (*s == '\\') + { + *pt++ = *s; + } + *pt++ = *s++; + } + return pt; +} + + +enum namestate { N_START, N_DEVICE, N_OPEN, N_DOT, N_CLOSED, N_DONE }; + +/* + convert unix style name to vms style + type = 0 -> name is a full name (directory and filename part) + type = 1 -> name is a directory + type = 2 -> name is a filename without directory + + The following conversions are applied + (0) (1) (2) + input full name dir name file name + +1 ./ [] .dir +2 ../ .dir + +3 // : :[000000] :000000.dir +4 //a a: a: a: +5 //a/ a: a: a:000000.dir + +9 / [000000] [000000] 000000.dir +10 /a [000000]a [a] [000000]a +11 /a/ [a] [a] [000000]a.dir +12 /a/b [a]b [a.b] [a]b +13 /a/b/ [a.b] [a.b] [a]b.dir +14 /a/b/c [a.b]c [a.b.c] [a.b]c +15 /a/b/c/ [a.b.c] [a.b.c] [a.b]c.dir + +16 a a [.a] a +17 a/ [.a] [.a] a.dir +18 a/b [.a]b [.a.b] [.a]b +19 a/b/ [.a.b] [.a.b] [.a]b.dir +20 a/b/c [.a.b]c [.a.b.c] [.a.b]c +21 a/b/c/ [.a.b.c] [.a.b.c] [.a.b]c.dir + +22 a.b.c a_b.c [.a_b_c] a_b_c.dir + +23 [x][y]z [x.y]z [x.y]z [x.y]z +24 [x][.y]z [x.y]z [x.y]z [x.y]z + +25 filenames with '$' are left unchanged if they contain no '/' +25 filenames with ':' are left unchanged +26 filenames with a single pair of '[' ']' are left unchanged + + The input string is not written to. The result is also const because + it's a static buffer; we don't want to change it. +*/ + +const char * +vmsify (const char *name, int type) +{ +/* max 255 device + max 39 directory + max 39 filename + max 39 filetype + max 5 version +*/ +/* todo: VMSMAXPATHLEN is defined for ODS2 names: it needs to be adjusted. */ +#define VMSMAXPATHLEN 512 + + enum namestate nstate; + static char vmsname[VMSMAXPATHLEN+1]; + const char *fptr; + const char *t; + char *vptr; + int as_dir; + int count; + const char *s; + const char *s1; + const char *s2; + + if (name == 0) + return 0; + fptr = name; + vptr = vmsname; + nstate = N_START; + + /* case 25a */ + t = strpbrk (name, "$:"); + + if (t != 0) + { +// const char *s1; +// const char *s2; + + if (type == 1) + { + s1 = strchr (t+1, '['); + s2 = strchr (t+1, ']'); + } + + if (*t == '$') + { + if (strchr (name, '/') == 0) + { + strcpy (vmsname, name); + if ((type == 1) && (s1 != 0) && (s2 == 0)) + strcat (vmsname, "]"); + return vmsname; + } + } + else + { + strcpy (vmsname, name); + if ((type == 1) && (s1 != 0) && (s2 == 0)) + strcat (vmsname, "]"); + return vmsname; + } + } + + /* case 26 */ + t = strchr (name, '['); + + if (t != 0) + { +// const char *s; +// const char *s1 = strchr (t+1, '['); + s1 = strchr (t+1, '['); + if (s1 == 0) + { + strcpy (vmsname, name); + if ((type == 1) && (strchr (t+1, ']') == 0)) + strcat (vmsname, "]"); + return vmsname; + } + s1--; + if (*s1 != ']') + { + strcpy (vmsname, name); + return vmsname; /* not ][, keep unchanged */ + } + + /* we have ][ */ + + s = name; + + /* s -> starting char + s1 -> ending ']' */ + do + { + strncpy (vptr, s, s1-s); /* copy up to but not including ']' */ + vptr += s1-s; + if (*s1 == 0) + break; + s = s1 + 1; /* s -> char behind ']' */ + if (*s != '[') /* was '][' ? */ + break; /* no, last ] found, exit */ + s++; + if (*s != '.') + *vptr++ = '.'; + s1 = strchr (s, ']'); + if (s1 == 0) /* no closing ] */ + s1 = s + strlen (s); + } + while (1); + + *vptr++ = ']'; + + fptr = s; + + } + else /* no [ in name */ + { + int state = 0; + int rooted = 1; /* flag if logical is rooted, else insert [000000] */ + + do + { + switch (state) + { + case 0: /* start of loop */ + if (*fptr == '/') + { + fptr++; + state = 1; + } + else if (*fptr == '.') + { + fptr++; + state = 10; + } + else + state = 2; + break; + + case 1: /* '/' at start */ + if (*fptr == '/') + { + fptr++; + state = 3; + } + else + state = 4; + break; + + case 2: /* no '/' at start */ + { + const char *s = strchr (fptr, '/'); + if (s == 0) /* no '/' (16) */ + { + if (type == 1) + { + strcpy (vptr, "[."); + vptr += 2; + } + copyto (&vptr, &fptr, 0, (type==1)); + if (type == 1) + *vptr++ = ']'; + state = -1; + } + else /* found '/' (17..21) */ + { + if ((type == 2) + && (*(s+1) == 0)) /* 17(2) */ + { + copyto (&vptr, &fptr, '/', 1); + state = 7; + } + else + { + strcpy (vptr, "[."); + vptr += 2; + copyto (&vptr, &fptr, '/', 1); + nstate = N_OPEN; + state = 9; + } + } + break; + } + + case 3: /* '//' at start */ + { +// const char *s; +// const char *s1; + char *vp; + while (*fptr == '/') /* collapse all '/' */ + fptr++; + if (*fptr == 0) /* just // */ + { + char cwdbuf[VMSMAXPATHLEN+1]; + + s1 = getcwd(cwdbuf, VMSMAXPATHLEN); + if (s1 == 0) + { + vmsname[0] = '\0'; + return vmsname; /* FIXME, err getcwd */ + } + s = strchr (s1, ':'); + if (s == 0) + { + vmsname[0] = '\0'; + return vmsname; /* FIXME, err no device */ + } + strncpy (vptr, s1, s-s1+1); + vptr += s-s1+1; + state = -1; + break; + } + + s = vptr; + + if (copyto (&vptr, &fptr, '/', 1) == 0) /* copy device part */ + { + *vptr++ = ':'; + state = -1; + break; + } + *vptr = ':'; + nstate = N_DEVICE; + if (*fptr == 0) /* just '//a/' */ + { + strcpy (vptr+1, "[000000]"); + vptr += 9; + state = -1; + break; + } + *vptr = 0; + /* check logical for [000000] insertion */ + vp = trnlog (s); + if (*vp != '\0') + { /* found translation */ + for (;;) /* loop over all nested logicals */ + { + char *vp2 = vp + strlen (vp) - 1; + if (*vp2 == ':') /* translation ends in ':' */ + { + vp2 = trnlog (vp); + free (vp); + if (*vp2 == 0) + { + rooted = 0; + break; + } + vp = vp2; + continue; /* next iteration */ + } + if (*vp2 == ']') /* translation ends in ']' */ + { + if (*(vp2-1) == '.') /* ends in '.]' */ + { + if (strncmp (fptr, "000000", 6) != 0) + rooted = 0; + } + else + { + strcpy (vmsname, s1); + vp = strchr (vmsname, ']'); + *vp = '.'; + nstate = N_DOT; + vptr = vp; + } + } + break; + } + free (vp); + } + else + rooted = 0; + + if (*vptr == 0) + { + nstate = N_DEVICE; + *vptr++ = ':'; + } + else + vptr++; + + if (rooted == 0) + { + nstate = N_DOT; + strcpy (vptr, "[000000."); + vptr += 8; + vp = vptr-1; + } + else + vp = 0; + + /* vp-> '.' after 000000 or NULL */ + + s = strchr (fptr, '/'); + if (s == 0) + { /* no next '/' */ + if (*(vptr-1) == '.') + *(vptr-1) = ']'; + else if (rooted == 0) + *vptr++ = ']'; + copyto (&vptr, &fptr, 0, (type == 1)); + state = -1; + break; + } + else + { + while (*(s+1) == '/') /* skip multiple '/' */ + s++; + } + + if ((rooted != 0) + && (*(vptr-1) != '.')) + { + *vptr++ = '['; + nstate = N_DOT; + } + else + if ((nstate == N_DOT) + && (vp != 0) + && (*(s+1) == 0)) + { + if (type == 2) + { + *vp = ']'; + nstate = N_CLOSED; + } + } + state = 9; + break; + } + case 4: /* single '/' at start (9..15) */ + if (*fptr == 0) + state = 5; + else + state = 6; + break; + + case 5: /* just '/' at start (9) */ + if (type != 2) + { + *vptr++ = '['; + nstate = N_OPEN; + } + strcpy (vptr, "000000"); + vptr += 6; + if (type == 2) + state = 7; + else + state = 8; + break; + + case 6: /* chars following '/' at start 10..15 */ + { + const char *s; + *vptr++ = '['; + nstate = N_OPEN; + s = strchr (fptr, '/'); + if (s == 0) /* 10 */ + { + if (type != 1) + { + strcpy (vptr, "000000]"); + vptr += 7; + } + copyto (&vptr, &fptr, 0, (type == 1)); + if (type == 1) + { + *vptr++ = ']'; + } + state = -1; + } + else /* 11..15 */ + { + if ( (type == 2) + && (*(s+1) == 0)) /* 11(2) */ + { + strcpy (vptr, "000000]"); + nstate = N_CLOSED; + vptr += 7; + } + copyto (&vptr, &fptr, '/', (*(vptr-1) != ']')); + state = 9; + } + break; + } + + case 7: /* add '.dir' and exit */ + if ((nstate == N_OPEN) + || (nstate == N_DOT)) + { + char *vp = vptr-1; + while (vp > vmsname) + { + if (*vp == ']') + { + break; + } + if (*vp == '.') + { + *vp = ']'; + break; + } + vp--; + } + } + strcpy (vptr, ".dir"); + vptr += 4; + state = -1; + break; + + case 8: /* add ']' and exit */ + *vptr++ = ']'; + state = -1; + break; + + case 9: /* 17..21, fptr -> 1st '/' + 1 */ + { + const char *s; + if (*fptr == 0) + { + if (type == 2) + { + state = 7; + } + else + state = 8; + break; + } + s = strchr (fptr, '/'); + if (s == 0) + { + if (type != 1) + { + if (nstate == N_OPEN) + { + *vptr++ = ']'; + nstate = N_CLOSED; + } + as_dir = 0; + } + else + { + if (nstate == N_OPEN) + { + *vptr++ = '.'; + nstate = N_DOT; + } + as_dir = 1; + } + } + else + { + while (*(s+1) == '/') + s++; + if ( (type == 2) + && (*(s+1) == 0)) /* 19(2), 21(2)*/ + { + if (nstate != N_CLOSED) + { + *vptr++ = ']'; + nstate = N_CLOSED; + } + as_dir = 1; + } + else + { + if (nstate == N_OPEN) + { + *vptr++ = '.'; + nstate = N_DOT; + } + as_dir = 1; + } + } + if ( (*fptr == '.') /* check for '..' or '../' */ + && (*(fptr+1) == '.') + && ((*(fptr+2) == '/') + || (*(fptr+2) == 0)) ) + { + char *vp; + fptr += 2; + if (*fptr == '/') + { + do + { + fptr++; + } + while (*fptr == '/'); + } + else if (*fptr == 0) + type = 1; + vptr--; /* vptr -> '.' or ']' */ + vp = vptr; + for (;;) + { + vp--; + if (*vp == '.') /* one back */ + { + vptr = vp; + nstate = N_OPEN; + break; + } + if (*vp == '[') /* top level reached */ + { + if (*fptr == 0) + { + strcpy (vp, "[000000]"); + vptr = vp + 8; + nstate = N_CLOSED; + s = 0; + break; + } + else + { + vptr = vp+1; + nstate = N_OPEN; + break; + } + } + } + } + else + { + copyto (&vptr, &fptr, '/', as_dir); + if (nstate == N_DOT) + nstate = N_OPEN; + } + if (s == 0) + { /* 18,20 */ + if (type == 1) + *vptr++ = ']'; + state = -1; + } + else + { + if (*(s+1) == 0) + { + if (type == 2) /* 19,21 */ + { + state = 7; + } + else + { + *vptr++ = ']'; + state = -1; + } + } + } + break; + } + + case 10: /* 1,2 first is '.' */ + if (*fptr == '.') + { + fptr++; + state = 11; + } + else + state = 12; + break; + + case 11: /* 2, '..' at start */ + count = 1; + if (*fptr != 0) + { + if (*fptr != '/') /* got ..xxx */ + { + strcpy (vmsname, name); + return vmsname; + } + do /* got ../ */ + { + fptr++; + while (*fptr == '/') fptr++; + if (*fptr != '.') + break; + if (*(fptr+1) != '.') + break; + fptr += 2; + if ((*fptr == 0) + || (*fptr == '/')) + count++; + } + while (*fptr == '/'); + } + { /* got '..' or '../' */ + char *vp; + char cwdbuf[VMSMAXPATHLEN+1]; + + vp = getcwd(cwdbuf, VMSMAXPATHLEN); + if (vp == 0) + { + vmsname[0] = '\0'; + return vmsname; /* FIXME, err getcwd */ + } + strcpy (vptr, vp); + vp = strchr (vptr, ']'); + if (vp != 0) + { + nstate = N_OPEN; + while (vp > vptr) + { + vp--; + if (*vp == '[') + { + vp++; + strcpy (vp, "000000]"); + state = -1; + break; + } + else if (*vp == '.') + { + if (--count == 0) + { + if (*fptr == 0) /* had '..' or '../' */ + { + *vp++ = ']'; + state = -1; + } + else /* had '../xxx' */ + { + state = 9; + } + *vp = '\0'; + break; + } + } + } + } + vptr += strlen (vptr); + } + break; + + case 12: /* 1, '.' at start */ + if (*fptr != 0) + { + if (*fptr != '/') + { + strcpy (vmsname, name); + return vmsname; + } + while (*fptr == '/') + fptr++; + } + + { + char *vp; + char cwdbuf[VMSMAXPATHLEN+1]; + + vp = getcwd(cwdbuf, VMSMAXPATHLEN); + if (vp == 0) + { + vmsname[0] = '\0'; + return vmsname; /*FIXME, err getcwd */ + } + strcpy (vptr, vp); + } + if (*fptr == 0) + { + state = -1; + break; + } + else + { + char *vp = strchr (vptr, ']'); + if (vp == 0) + { + state = -1; + break; + } + *vp = '\0'; + nstate = N_OPEN; + vptr += strlen (vptr); + state = 9; + } + break; + } + + } + while (state > 0); + + + } + + + /* directory conversion done + fptr -> filename part of input string + vptr -> free space in vmsname + */ + + *vptr++ = 0; + + return vmsname; +} + + + +/* + convert from vms-style to unix-style + + dev:[dir1.dir2] //dev/dir1/dir2/ +*/ + +const char * +unixify (const char *name) +{ + static char piece[512]; + const char *s; + char *p; + + if (strchr (name, '/') != 0) /* already in unix style */ + { + strcpy (piece, name); + return piece; + } + + p = piece; + *p = 0; + + /* device part */ + + s = strchr (name, ':'); + + if (s != 0) + { + int l = s - name; + *p++ = '/'; + *p++ = '/'; + strncpy (p, name, l); + p += l; + } + + /* directory part */ + + *p++ = '/'; + s = strchr (name, '['); + + if (s != 0) + { + s++; + switch (*s) + { + case ']': /* [] */ + strcat (p, "./"); + break; + case '-': /* [- */ + strcat (p, "../"); + break; + case '.': + strcat (p, "./"); /* [. */ + break; + default: + s--; + break; + } + s++; + while (*s) + { + if (*s == '.') + *p++ = '/'; + else + *p++ = *s; + s++; + if (*s == ']') + { + s++; + break; + } + } + if (*s != 0) /* more after ']' ?? */ + { + if (*(p-1) != '/') + *p++ = '/'; + strcpy (p, s); /* copy it anyway */ + } + } + + else /* no '[' anywhere */ + + { + *p++ = 0; + } + + /* force end with '/' */ + + if (*(p-1) != '/') + *p++ = '/'; + *p = 0; + + return piece; +} + +/* EOF */ diff --git a/local/recipes/dev/gnu-make/source/src/vmsjobs.c b/local/recipes/dev/gnu-make/source/src/vmsjobs.c new file mode 100644 index 0000000000..66381b8f7c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vmsjobs.c @@ -0,0 +1,1462 @@ +/* --------------- Moved here from job.c --------------- + This file must be #included in job.c, as it accesses static functions. + +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include +#include +#include + +/* TODO - VMS specific header file conditionally included in makeint.h */ + +#include +#include +void +decc$exit (int status); + +/* Lowest legal non-success VMS exit code is 8 */ +/* GNU make only defines codes 0, 1, 2 */ +/* So assume any exit code > 8 is a VMS exit code */ + +#ifndef MAX_EXPECTED_EXIT_CODE +# define MAX_EXPECTED_EXIT_CODE 7 +#endif + + +#if __CRTL_VER >= 70302000 && !defined(__VAX) +# define MAX_DCL_LINE_LENGTH 4095 +# define MAX_DCL_CMD_LINE_LENGTH 8192 +#else +# define MAX_DCL_LINE_LENGTH 255 +# define MAX_DCL_CMD_LINE_LENGTH 1024 +#endif +#define MAX_DCL_TOKEN_LENGTH 255 +#define MAX_DCL_TOKENS 127 + +enum auto_pipe { nopipe, add_pipe, dcl_pipe }; + +char *vmsify (char *name, int type); + +static int vms_jobsefnmask = 0; + +/* returns whether path is assumed to be a unix like shell. */ +int +_is_unixy_shell (const char *path) +{ + return vms_gnv_shell; +} + +#define VMS_GETMSG_MAX 256 +static char vms_strsignal_text[VMS_GETMSG_MAX + 2]; + +char * +vms_strsignal (int status) +{ + if (status <= MAX_EXPECTED_EXIT_CODE) + sprintf (vms_strsignal_text, "lib$spawn returned %x", status); + else + { + int vms_status; + unsigned short * msg_len; + unsigned char out[4]; + vms_status = SYS$GETMSG (status, &msg_len, + vms_strsignal_text, 7, *out); + } + + return vms_strsignal_text; +} + + +/* Wait for nchildren children to terminate */ +static void +vmsWaitForChildren (int *status) +{ + while (1) + { + if (!vms_jobsefnmask) + { + *status = 0; + return; + } + + *status = sys$wflor (32, vms_jobsefnmask); + } + return; +} + +static int ctrlYPressed= 0; +/* This is called at main or AST level. It is at AST level for DONTWAITFORCHILD + and at main level otherwise. In any case it is called when a child process + terminated. At AST level it won't get interrupted by anything except a + inner mode level AST. +*/ +static int +vmsHandleChildTerm (struct childbase *cbase) +{ + struct child *child = (struct child*)cbase; + struct child *lastc, *c; + int child_failed; + int exit_code; + + /* The child efn is 0 when a built-in or null command is executed + successfully with out actually creating a child. + */ + if (child->efn > 0) + { + vms_jobsefnmask &= ~(1 << (child->efn - 32)); + + lib$free_ef (&child->efn); + } + if (child->comname) + { + if (!ISDB (DB_JOBS) && !ctrlYPressed) + unlink (child->comname); + free (child->comname); + } + + (void) sigblock (fatal_signal_mask); + + /* First check to see if this is a POSIX exit status and handle */ + if ((child->cstatus & VMS_POSIX_EXIT_MASK) == VMS_POSIX_EXIT_MASK) + { + exit_code = (child->cstatus >> 3) & 255; + if (exit_code != MAKE_SUCCESS) + child_failed = 1; + } + else + { + child_failed = !$VMS_STATUS_SUCCESS (child->cstatus); + if (child_failed) + exit_code = child->cstatus; + } + + /* Search for a child matching the deceased one. */ + lastc = 0; +#if defined(RECURSIVEJOBS) + /* I've had problems with recursive stuff and process handling */ + for (c = children; c != 0 && c != child; lastc = c, c = c->next) + ; +#else + c = child; +#endif + + if ($VMS_STATUS_SUCCESS (child->vms_launch_status)) + { + /* Convert VMS success status to 0 for UNIX code to be happy */ + child->vms_launch_status = 0; + } + + /* Set the state flag to say the commands have finished. */ + c->file->command_state = cs_finished; + notice_finished_file (c->file); + + (void) sigsetmask (sigblock (0) & ~(fatal_signal_mask)); + + return 1; +} + +/* VMS: + Spawn a process executing the command in ARGV and return its pid. */ + +/* local helpers to make ctrl+c and ctrl+y working, see below */ +#include +#include +#include + +static int ctrlMask= LIB$M_CLI_CTRLY; +static int oldCtrlMask; +static int setupYAstTried= 0; +static unsigned short int chan= 0; + +static void +reEnableAst(void) +{ + lib$enable_ctrl (&oldCtrlMask,0); +} + +static int +astYHandler (void) +{ + struct child *c; + for (c = children; c != 0; c = c->next) + if (c->pid > 0) + sys$delprc (&c->pid, 0, 0); + ctrlYPressed= 1; + kill (getpid(),SIGQUIT); + return SS$_NORMAL; +} + +static void +tryToSetupYAst(void) +{ + $DESCRIPTOR(inputDsc,"SYS$COMMAND"); + int status; + struct { + short int status, count; + int dvi; + } iosb; + unsigned short int loc_chan; + + setupYAstTried++; + + if (chan) + loc_chan= chan; + else + { + status= sys$assign(&inputDsc,&loc_chan,0,0); + if (!(status&SS$_NORMAL)) + { + lib$signal(status); + return; + } + } + status= sys$qiow (0, loc_chan, IO$_SETMODE|IO$M_CTRLYAST,&iosb,0,0, + astYHandler,0,0,0,0,0); + if (status==SS$_NORMAL) + status= iosb.status; + if (status!=SS$_NORMAL) + { + if (!chan) + sys$dassgn(loc_chan); + if (status!=SS$_ILLIOFUNC && status!=SS$_NOPRIV) + lib$signal(status); + return; + } + + /* called from AST handler ? */ + if (setupYAstTried>1) + return; + if (atexit(reEnableAst)) + fprintf (stderr, + _("-warning, you may have to re-enable CTRL-Y handling from DCL.\n")); + status= lib$disable_ctrl (&ctrlMask, &oldCtrlMask); + if (!(status&SS$_NORMAL)) + { + lib$signal(status); + return; + } + if (!chan) + chan = loc_chan; +} + +/* Check if a token is too long */ +#define INC_TOKEN_LEN_OR_RETURN(x) {token->length++; \ + if (token->length >= MAX_DCL_TOKEN_LENGTH) \ + { token->cmd_errno = ERANGE; return x; }} + +#define INC_TOKEN_LEN_OR_BREAK {token->length++; \ + if (token->length >= MAX_DCL_TOKEN_LENGTH) \ + { token->cmd_errno = ERANGE; break; }} + +#define ADD_TOKEN_LEN_OR_RETURN(add_len, x) {token->length += add_len; \ + if (token->length >= MAX_DCL_TOKEN_LENGTH) \ + { token->cmd_errno = ERANGE; return x; }} + +/* Check if we are out of space for more tokens */ +#define V_NEXT_TOKEN { if (cmd_tkn_index < MAX_DCL_TOKENS) \ + cmd_tokens[++cmd_tkn_index] = NULL; \ + else { token.cmd_errno = E2BIG; break; } \ + token.length = 0;} + + +#define UPDATE_TOKEN {cmd_tokens[cmd_tkn_index] = strdup(token.text); \ + V_NEXT_TOKEN;} + +#define EOS_ERROR(x) { if (*x == 0) { token->cmd_errno = ERANGE; break; }} + +struct token_info + { + char *text; /* Parsed text */ + int length; /* Length of parsed text */ + char *src; /* Pointer to source text */ + int cmd_errno; /* Error status of parse */ + int use_cmd_file; /* Force use of a command file */ + }; + + +/* Extract a Posix single quoted string from input line */ +static char * +posix_parse_sq (struct token_info *token) +{ + /* A Posix quoted string with no expansion unless in a string + Unix simulation means no lexical functions present. + */ + char * q; + char * p; + q = token->text; + p = token->src; + + *q++ = '"'; + p++; + INC_TOKEN_LEN_OR_RETURN (p); + + while (*p != '\'' && (token->length < MAX_DCL_TOKEN_LENGTH)) + { + EOS_ERROR (p); + if (*p == '"') + { + /* Embedded double quotes need to be doubled */ + *q++ = '"'; + INC_TOKEN_LEN_OR_BREAK; + *q = '"'; + } + else + *q = *p; + + q++; + p++; + INC_TOKEN_LEN_OR_BREAK; + } + *q++ = '"'; + p++; + INC_TOKEN_LEN_OR_RETURN (p); + *q = 0; + return p; +} + +/* Extract a Posix double quoted string from input line */ +static char * +posix_parse_dq (struct token_info *token) +{ + /* Unix mode: Any embedded \" becomes doubled. + \t is tab, \\, \$ leading character stripped. + $ character replaced with \' unless escaped. + */ + char * q; + char * p; + q = token->text; + p = token->src; + *q++ = *p++; + INC_TOKEN_LEN_OR_RETURN (p); + while (*p != 0) + { + if (*p == '\\') + { + switch(p[1]) + { + case 't': /* Convert tabs */ + *q = '\t'; + p++; + break; + case '\\': /* Just remove leading backslash */ + case '$': + p++; + *q = *p; + break; + case '"': + p++; + *q = *p; + *q++ = '"'; + INC_TOKEN_LEN_OR_BREAK; + default: /* Pass through unchanged */ + *q++ = *p++; + INC_TOKEN_LEN_OR_BREAK; + } + INC_TOKEN_LEN_OR_BREAK; + } + else if (*p == '$' && isalpha ((unsigned char) p[1])) + { + /* A symbol we should be able to substitute */ + *q++ = '\''; + INC_TOKEN_LEN_OR_BREAK; + *q = '\''; + INC_TOKEN_LEN_OR_BREAK; + token->use_cmd_file = 1; + } + else + { + *q = *p; + INC_TOKEN_LEN_OR_BREAK; + if (*p == '"') + { + p++; + q++; + break; + } + } + p++; + q++; + } + *q = 0; + return p; +} + +/* Extract a VMS quoted string or substitution string from input line */ +static char * +vms_parse_quotes (struct token_info *token) +{ + /* VMS mode, the \' means that a symbol substitution is starting + so while you might think you can just copy until the next + \'. Unfortunately the substitution can be a lexical function + which can contain embedded strings and lexical functions. + Messy, so both types need to be handled together. + */ + char * q; + char * p; + q = token->text; + p = token->src; + int parse_level[MAX_DCL_TOKENS + 1]; + int nest = 0; + + parse_level[0] = *p; + if (parse_level[0] == '\'') + token->use_cmd_file = 1; + + *q++ = *p++; + INC_TOKEN_LEN_OR_RETURN (p); + + + /* Copy everything until after the next single quote at nest == 0 */ + while (token->length < MAX_DCL_TOKEN_LENGTH) + { + EOS_ERROR (p); + *q = *p; + INC_TOKEN_LEN_OR_BREAK; + if ((*p == parse_level[nest]) && (p[1] != '"')) + { + if (nest == 0) + { + *q++ = *p++; + break; + } + nest--; + } + else + { + switch(*p) + { + case '\\': + /* Handle continuation on to next line */ + if (p[1] != '\n') + break; + p++; + p++; + *q = *p; + break; + case '(': + /* Parenthesis only in single quote level */ + if (parse_level[nest] == '\'') + { + nest++; + parse_level[nest] == ')'; + } + break; + case '"': + /* Double quotes only in parenthesis */ + if (parse_level[nest] == ')') + { + nest++; + parse_level[nest] == '"'; + } + break; + case '\'': + /* Symbol substitution only in double quotes */ + if ((p[1] == '\'') && (parse_level[nest] == '"')) + { + nest++; + parse_level[nest] == '\''; + *p++ = *q++; + token->use_cmd_file = 1; + INC_TOKEN_LEN_OR_BREAK; + break; + } + *q = *p; + } + } + p++; + q++; + /* Pass through doubled double quotes */ + if ((*p == '"') && (p[1] == '"') && (parse_level[nest] == '"')) + { + *p++ = *q++; + INC_TOKEN_LEN_OR_BREAK; + *p++ = *q++; + INC_TOKEN_LEN_OR_BREAK; + } + } + *q = 0; + return p; +} + +/* Extract a $ string from the input line */ +static char * +posix_parse_dollar (struct token_info *token) +{ + /* $foo becomes 'foo' */ + char * q; + char * p; + q = token->text; + p = token->src; + token->use_cmd_file = 1; + + p++; + *q++ = '\''; + INC_TOKEN_LEN_OR_RETURN (p); + + while ((isalnum ((unsigned char) *p)) || (*p == '_')) + { + *q++ = *p++; + INC_TOKEN_LEN_OR_BREAK; + } + *q++ = '\''; + while (1) + { + INC_TOKEN_LEN_OR_BREAK; + break; + } + *q = 0; + return p; +} + +const char *vms_filechars = "0123456789abcdefghijklmnopqrstuvwxyz" \ + "ABCDEFGHIJKLMNOPQRSTUVWXYZ[]<>:/_-.$"; + +/* Simple text copy */ +static char * +parse_text (struct token_info *token, int assignment_hack) +{ + char * q; + char * p; + int str_len; + q = token->text; + p = token->src; + + /* If assignment hack, then this text needs to be double quoted. */ + if (vms_unix_simulation && (assignment_hack == 2)) + { + *q++ = '"'; + INC_TOKEN_LEN_OR_RETURN (p); + } + + *q++ = *p++; + INC_TOKEN_LEN_OR_RETURN (p); + + while (*p != 0) + { + str_len = strspn (p, vms_filechars); + if (str_len == 0) + { + /* Pass through backslash escapes in Unix simulation + probably will not work anyway. + All any character after a ^ otherwise to support EFS. + */ + if (vms_unix_simulation && (p[0] == '\\') && (p[1] != 0)) + str_len = 2; + else if ((p[0] == '^') && (p[1] != 0)) + str_len = 2; + else if (!vms_unix_simulation && (p[0] == ';')) + str_len = 1; + + if (str_len == 0) + { + /* If assignment hack, then this needs to be double quoted. */ + if (vms_unix_simulation && (assignment_hack == 2)) + { + *q++ = '"'; + INC_TOKEN_LEN_OR_RETURN (p); + } + *q = 0; + return p; + } + } + if (str_len > 0) + { + ADD_TOKEN_LEN_OR_RETURN (str_len, p); + strncpy (q, p, str_len); + p += str_len; + q += str_len; + *q = 0; + } + } + /* If assignment hack, then this text needs to be double quoted. */ + if (vms_unix_simulation && (assignment_hack == 2)) + { + *q++ = '"'; + INC_TOKEN_LEN_OR_RETURN (p); + } + return p; +} + +/* single character copy */ +static char * +parse_char (struct token_info *token, int count) +{ + char * q; + char * p; + q = token->text; + p = token->src; + + while (count > 0) + { + *q++ = *p++; + INC_TOKEN_LEN_OR_RETURN (p); + count--; + } + *q = 0; + return p; +} + +/* Build a command string from the collected tokens + and process built-ins now +*/ +static struct dsc$descriptor_s * +build_vms_cmd (char **cmd_tokens, + enum auto_pipe use_pipe_cmd, + int append_token) +{ + struct dsc$descriptor_s *cmd_dsc; + int cmd_tkn_index; + char * cmd; + int cmd_len; + int semicolon_seen; + + cmd_tkn_index = 0; + cmd_dsc = xmalloc (sizeof (struct dsc$descriptor_s)); + + /* Empty command? */ + if (cmd_tokens[0] == NULL) + { + cmd_dsc->dsc$a_pointer = NULL; + cmd_dsc->dsc$w_length = 0; + return cmd_dsc; + } + + /* Max DCL command + 1 extra token and trailing space */ + cmd = xmalloc (MAX_DCL_CMD_LINE_LENGTH + 256); + + cmd[0] = '$'; + cmd[1] = 0; + cmd_len = 1; + + /* Handle real or auto-pipe */ + if (use_pipe_cmd == add_pipe) + { + /* We need to auto convert to a pipe command */ + strcat (cmd, "pipe "); + cmd_len += 5; + } + + semicolon_seen = 0; + while (cmd_tokens[cmd_tkn_index] != NULL) + { + + /* Check for buffer overflow */ + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + + /* Eliminate double ';' */ + if (semicolon_seen && (cmd_tokens[cmd_tkn_index][0] == ';')) + { + semicolon_seen = 0; + free (cmd_tokens[cmd_tkn_index++]); + if (cmd_tokens[cmd_tkn_index] == NULL) + break; + } + + /* Special handling for CD built-in */ + if (strncmp (cmd_tokens[cmd_tkn_index], "builtin_cd", 11) == 0) + { + int result; + semicolon_seen = 0; + free (cmd_tokens[cmd_tkn_index]); + cmd_tkn_index++; + if (cmd_tokens[cmd_tkn_index] == NULL) + break; + DB(DB_JOBS, (_("BUILTIN CD %s\n"), cmd_tokens[cmd_tkn_index])); + + /* TODO: chdir fails with some valid syntaxes */ + result = chdir (cmd_tokens[cmd_tkn_index]); + if (result != 0) + { + /* TODO: Handle failure better */ + free (cmd); + while (cmd_tokens[cmd_tkn_index] == NULL) + free (cmd_tokens[cmd_tkn_index++]); + cmd_dsc->dsc$w_length = -1; + cmd_dsc->dsc$a_pointer = NULL; + return cmd_dsc; + } + } + else if (strncmp (cmd_tokens[cmd_tkn_index], "exit", 5) == 0) + { + /* Copy the exit command */ + semicolon_seen = 0; + strcpy (&cmd[cmd_len], cmd_tokens[cmd_tkn_index]); + cmd_len += strlen (cmd_tokens[cmd_tkn_index]); + free (cmd_tokens[cmd_tkn_index++]); + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + + /* Optional whitespace */ + 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]); + free (cmd_tokens[cmd_tkn_index++]); + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + } + + /* There should be a status, but it is optional */ + if (cmd_tokens[cmd_tkn_index][0] == ';') + continue; + + /* If Unix simulation, add '((' */ + if (vms_unix_simulation) + { + strcpy (&cmd[cmd_len], "(("); + cmd_len += 2; + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + } + + /* Add the parameter */ + strcpy (&cmd[cmd_len], cmd_tokens[cmd_tkn_index]); + cmd_len += strlen (cmd_tokens[cmd_tkn_index]); + free (cmd_tokens[cmd_tkn_index++]); + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + + /* Add " * 8) .and. %x7f8) .or. %x1035a002" */ + if (vms_unix_simulation) + { + const char *end_str = " * 8) .and. %x7f8) .or. %x1035a002"; + strcpy (&cmd[cmd_len], end_str); + cmd_len += strlen (end_str); + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + } + continue; + } + + /* auto pipe needs spaces before semicolon */ + if (use_pipe_cmd == add_pipe) + if (cmd_tokens[cmd_tkn_index][0] == ';') + { + cmd[cmd_len++] = ' '; + semicolon_seen = 1; + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + } + else + { + char ch; + ch = cmd_tokens[cmd_tkn_index][0]; + if (!(ch == ' ' || ch == '\t')) + semicolon_seen = 0; + } + + strcpy (&cmd[cmd_len], cmd_tokens[cmd_tkn_index]); + cmd_len += strlen (cmd_tokens[cmd_tkn_index]); + + free (cmd_tokens[cmd_tkn_index++]); + + /* Skip the append tokens if they exist */ + if (cmd_tkn_index == append_token) + { + free (cmd_tokens[cmd_tkn_index++]); + if (isspace ((unsigned char) cmd_tokens[cmd_tkn_index][0])) + free (cmd_tokens[cmd_tkn_index++]); + free (cmd_tokens[cmd_tkn_index++]); + } + } + + cmd[cmd_len] = 0; + cmd_dsc->dsc$w_length = cmd_len; + cmd_dsc->dsc$a_pointer = cmd; + cmd_dsc->dsc$b_dtype = DSC$K_DTYPE_T; + cmd_dsc->dsc$b_class = DSC$K_CLASS_S; + + return cmd_dsc; +} + +pid_t +child_execute_job (struct childbase *child, int good_stdin UNUSED, char *argv) +{ + int i; + + static struct dsc$descriptor_s *cmd_dsc; + static struct dsc$descriptor_s pnamedsc; + int spflags = CLI$M_NOWAIT; + int status; + int comnamelen; + char procname[100]; + + char *p; + char *cmd_tokens[(MAX_DCL_TOKENS * 2) + 1]; /* whitespace does not count */ + char token_str[MAX_DCL_TOKEN_LENGTH + 1]; + struct token_info token; + int cmd_tkn_index; + int paren_level = 0; + enum auto_pipe use_pipe_cmd = nopipe; + int append_token = -1; + char *append_file = NULL; + int unix_echo_cmd = 0; /* Special handle Unix echo command */ + int assignment_hack = 0; /* Handle x=y command as piped command */ + + /* Parse IO redirection. */ + + child->comname = NULL; + + DB (DB_JOBS, ("child_execute_job (%s)\n", argv)); + + while (isspace ((unsigned char)*argv)) + argv++; + + if (*argv == 0) + { + /* Only a built-in or a null command - Still need to run term AST */ + child->cstatus = VMS_POSIX_EXIT_MASK; + child->vms_launch_status = SS$_NORMAL; + child->efn = 0; + vmsHandleChildTerm (child); + /* TODO what is this "magic number" */ + return 270163; /* Special built-in */ + } + + sprintf (procname, "GMAKE_%05x", getpid () & 0xfffff); + pnamedsc.dsc$w_length = strlen (procname); + pnamedsc.dsc$a_pointer = procname; + pnamedsc.dsc$b_dtype = DSC$K_DTYPE_T; + pnamedsc.dsc$b_class = DSC$K_CLASS_S; + + /* Old */ + /* Handle comments and redirection. + For ONESHELL, the redirection must be on the first line. Any other + redirection token is handled by DCL, that is, the pipe command with + redirection can be used, but it should not be used on the first line + for ONESHELL. */ + + /* VMS parser notes: + 1. A token is any of DCL verbs, qualifiers, parameters, or punctuation. + 2. Only MAX_DCL_TOKENS per line in both one line or command file mode. + 3. Each token limited to MAC_DCL_TOKEN_LENGTH + 4. If the line to DCL is greater than MAX_DCL_LINE_LENGTH then a + command file must be used. + 5. Currently a command file must be used symbol substitution is to + be performed. + 6. Currently limiting command files to 2 * MAX_DCL_TOKENS. + + Build both a command file token list and command line token list + until it is determined that the command line limits are exceeded. + */ + + cmd_tkn_index = 0; + cmd_tokens[cmd_tkn_index] = NULL; + p = argv; + + token.text = token_str; + token.length = 0; + token.cmd_errno = 0; + token.use_cmd_file = 0; + + while (*p != 0) + { + /* We can not build this command so give up */ + if (token.cmd_errno != 0) + break; + + token.src = p; + + switch (*p) + { + case '\'': + if (vms_unix_simulation || unix_echo_cmd) + { + p = posix_parse_sq (&token); + UPDATE_TOKEN; + break; + } + + /* VMS mode, the \' means that a symbol substitution is starting + so while you might think you can just copy until the next + \'. Unfortunately the substitution can be a lexical function + which can contain embedded strings and lexical functions. + Messy. + */ + p = vms_parse_quotes (&token); + UPDATE_TOKEN; + break; + case '"': + if (vms_unix_simulation) + { + p = posix_parse_dq (&token); + UPDATE_TOKEN; + break; + } + + /* VMS quoted string, can contain lexical functions with + quoted strings and nested lexical functions. + */ + p = vms_parse_quotes (&token); + UPDATE_TOKEN; + break; + + case '$': + if (vms_unix_simulation) + { + p = posix_parse_dollar (&token); + UPDATE_TOKEN; + break; + } + + /* Otherwise nothing special */ + p = parse_text (&token, 0); + UPDATE_TOKEN; + break; + case '\\': + if (p[1] == '\n') + { + /* Line continuation, remove it */ + p += 2; + break; + } + + /* Ordinary character otherwise */ + if (assignment_hack != 0) + assignment_hack++; + if (assignment_hack > 2) + { + assignment_hack = 0; /* Reset */ + if (use_pipe_cmd == nopipe) /* force pipe use */ + use_pipe_cmd = add_pipe; + token_str[0] = ';'; /* add ; token */ + token_str[1] = 0; + UPDATE_TOKEN; + } + p = parse_text (&token, assignment_hack); + UPDATE_TOKEN; + break; + case '!': + case '#': + /* Unix '#' is VMS '!' which comments out the rest of the line. + Historically the rest of the line has been skipped. + Not quite the right thing to do, as the f$verify lexical + function works in comments. But this helps keep the line + lengths short. + */ + unix_echo_cmd = 0; + while (*p != '\n' && *p != 0) + p++; + break; + case '(': + /* Subshell, equation, or lexical function argument start */ + p = parse_char (&token, 1); + UPDATE_TOKEN; + paren_level++; + break; + case ')': + /* Close out a paren level */ + p = parse_char (&token, 1); + UPDATE_TOKEN; + paren_level--; + /* TODO: Should we diagnose if paren_level goes negative? */ + break; + case '&': + if (isalpha ((unsigned char) p[1]) && !vms_unix_simulation) + { + /* VMS symbol substitution */ + p = parse_text (&token, 0); + token.use_cmd_file = 1; + UPDATE_TOKEN; + break; + } + if (use_pipe_cmd == nopipe) + use_pipe_cmd = add_pipe; + if (p[1] != '&') + p = parse_char (&token, 1); + else + p = parse_char (&token, 2); + UPDATE_TOKEN; + break; + case '|': + if (use_pipe_cmd == nopipe) + use_pipe_cmd = add_pipe; + if (p[1] != '|') + p = parse_char (&token, 1); + else + p = parse_char (&token, 2); + UPDATE_TOKEN; + break; + case ';': + /* Separator - convert to a pipe command. */ + unix_echo_cmd = 0; + case '<': + if (use_pipe_cmd == nopipe) + use_pipe_cmd = add_pipe; + p = parse_char (&token, 1); + UPDATE_TOKEN; + break; + case '>': + if (use_pipe_cmd == nopipe) + use_pipe_cmd = add_pipe; + if (p[1] == '>') + { + /* Parsing would have been simple until support for the >> + append redirect was added. + Implementation needs: + * if not exist output file create empty + * open/append gnv$make_temp??? output_file + * define/user sys$output gnv$make_temp??? + ** And all this done before the command previously tokenized. + * command previously tokenized + * close gnv$make_temp??? + */ + p = parse_char (&token, 2); + append_token = cmd_tkn_index; + token.use_cmd_file = 1; + } + else + p = parse_char (&token, 1); + UPDATE_TOKEN; + break; + case '/': + /* Unix path or VMS option start, read until non-path symbol */ + if (assignment_hack != 0) + assignment_hack++; + if (assignment_hack > 2) + { + assignment_hack = 0; /* Reset */ + if (use_pipe_cmd == nopipe) /* force pipe use */ + use_pipe_cmd = add_pipe; + token_str[0] = ';'; /* add ; token */ + token_str[1] = 0; + UPDATE_TOKEN; + } + p = parse_text (&token, assignment_hack); + UPDATE_TOKEN; + break; + case ':': + if ((p[1] == 0) || isspace ((unsigned char) p[1])) + { + /* Unix Null command - treat as comment until next command */ + unix_echo_cmd = 0; + p++; + while (*p != 0) + { + if (*p == ';') + { + /* Remove Null command from pipeline */ + p++; + break; + } + p++; + } + break; + } + + /* String assignment */ + /* := :== or : */ + if (p[1] != '=') + p = parse_char (&token, 1); + else if (p[2] != '=') + p = parse_char (&token, 2); + else + p = parse_char (&token, 3); + UPDATE_TOKEN; + break; + case '=': + /* = or == */ + /* If this is not an echo statement, this could be a shell + assignment. VMS requires the target to be quoted if it + is not a macro substitution */ + if (!unix_echo_cmd && vms_unix_simulation && (assignment_hack == 0)) + assignment_hack = 1; + if (p[1] != '=') + p = parse_char (&token, 1); + else + p = parse_char (&token, 2); + UPDATE_TOKEN; + break; + case '+': + case '-': + case '*': + p = parse_char (&token, 1); + UPDATE_TOKEN; + break; + case '.': + /* .xxx. operation, VMS does not require the trailing . */ + p = parse_text (&token, 0); + UPDATE_TOKEN; + break; + default: + /* Skip repetitive whitespace */ + if (isspace ((unsigned char) *p)) + { + p = parse_char (&token, 1); + + /* Force to a space or a tab */ + if ((token_str[0] != ' ') || + (token_str[0] != '\t')) + token_str[0] = ' '; + UPDATE_TOKEN; + + while (isspace ((unsigned char) *p)) + p++; + if (assignment_hack != 0) + assignment_hack++; + break; + } + + if (assignment_hack != 0) + assignment_hack++; + if (assignment_hack > 2) + { + assignment_hack = 0; /* Reset */ + if (use_pipe_cmd == nopipe) /* force pipe use */ + use_pipe_cmd = add_pipe; + token_str[0] = ';'; /* add ; token */ + token_str[1] = 0; + UPDATE_TOKEN; + } + p = parse_text (&token, assignment_hack); + if (strncasecmp (token.text, "echo", 4) == 0) + unix_echo_cmd = 1; + else if (strncasecmp (token.text, "pipe", 4) == 0) + use_pipe_cmd = dcl_pipe; + UPDATE_TOKEN; + break; + } + } + + /* End up here with a list of tokens to build a command line. + Deal with errors detected during parsing. + */ + if (token.cmd_errno != 0) + { + while (cmd_tokens[cmd_tkn_index] == NULL) + free (cmd_tokens[cmd_tkn_index++]); + child->cstatus = VMS_POSIX_EXIT_MASK | (MAKE_TROUBLE << 3); + child->vms_launch_status = SS$_ABORT; + child->efn = 0; + errno = token.cmd_errno; + return -1; + } + + /* Save any redirection to append file */ + if (append_token != -1) + { + int file_token; + char * lastdot; + char * lastdir; + char * raw_append_file; + file_token = append_token; + file_token++; + 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 */ + lastdot = strrchr(raw_append_file, '.'); + lastdir = strrchr(raw_append_file, ']'); + if (lastdir == NULL) + lastdir = strrchr(raw_append_file, '>'); + if (lastdir == NULL) + lastdir = strrchr(raw_append_file, ':'); + if ((lastdot == NULL) || (lastdot > lastdir)) + { + append_file = xmalloc (strlen (raw_append_file) + 1); + strcpy (append_file, raw_append_file); + strcat (append_file, "."); + } + else + append_file = strdup(raw_append_file); + } + + cmd_dsc = build_vms_cmd (cmd_tokens, use_pipe_cmd, append_token); + if (cmd_dsc->dsc$a_pointer == NULL) + { + if (cmd_dsc->dsc$w_length < 0) + { + free (cmd_dsc); + child->cstatus = VMS_POSIX_EXIT_MASK | (MAKE_TROUBLE << 3); + child->vms_launch_status = SS$_ABORT; + child->efn = 0; + return -1; + } + + /* Only a built-in or a null command - Still need to run term AST */ + free (cmd_dsc); + child->cstatus = VMS_POSIX_EXIT_MASK; + child->vms_launch_status = SS$_NORMAL; + child->efn = 0; + vmsHandleChildTerm (child); + /* TODO what is this "magic number" */ + return 270163; /* Special built-in */ + } + + if (cmd_dsc->dsc$w_length > MAX_DCL_LINE_LENGTH) + token.use_cmd_file = 1; + + DB(DB_JOBS, (_("DCL: %s\n"), cmd_dsc->dsc$a_pointer)); + + /* Enforce the creation of a command file if "vms_always_use_cmd_file" is + non-zero. + Further, this way DCL reads the input stream and therefore does + 'forced' symbol substitution, which it doesn't do for one-liners when + they are 'lib$spawn'ed. + + Otherwise the behavior is: + + Create a *.com file if either the command is too long for + lib$spawn, or if a redirect appending to a file is desired, or + symbol substitition. + */ + + if (vms_always_use_cmd_file || token.use_cmd_file) + { + FILE *outfile; + int cmd_len; + + outfile = get_tmpfile (&child->comname); + + comnamelen = strlen (child->comname); + + /* The whole DCL "script" is executed as one action, and it behaves as + any DCL "script", that is errors stop it but warnings do not. Usually + the command on the last line, defines the exit code. However, with + redirections there is a prolog and possibly an epilog to implement + the redirection. Both are part of the script which is actually + executed. So if the redirection encounters an error in the prolog, + the user actions will not run; if in the epilog, the user actions + ran, but output is not captured. In both error cases, the error of + redirection is passed back and not the exit code of the actions. The + user should be able to enable DCL "script" verification with "set + verify". However, the prolog and epilog commands are not shown. Also, + if output redirection is used, the verification output is redirected + into that file as well. */ + fprintf (outfile, "$ gnv$$make_verify = \"''f$verify(0)'\"\n"); + fprintf (outfile, "$ gnv$$make_pid = f$getjpi(\"\",\"pid\")\n"); + fprintf (outfile, "$ on error then $ goto gnv$$make_error\n"); + + /* Handle append redirection */ + if (append_file != NULL) + { + /* If file does not exist, create it */ + fprintf (outfile, + "$ gnv$$make_al = \"gnv$$make_append''gnv$$make_pid'\"\n"); + fprintf (outfile, + "$ if f$search(\"%s\") .eqs. \"\" then create %s\n", + append_file, append_file); + + fprintf (outfile, + "$ open/append 'gnv$$make_al' %s\n", append_file); + + /* define sys$output to that file */ + fprintf (outfile, + "$ define/user sys$output 'gnv$$make_al'\n"); + DB (DB_JOBS, (_("Append output to %s\n"), append_file)); + free(append_file); + } + + fprintf (outfile, "$ gnv$$make_verify = f$verify(gnv$$make_verify)\n"); + + /* TODO: + Only for ONESHELL there will be several commands separated by + '\n'. But there can always be multiple continuation lines. + */ + + fprintf (outfile, "%s\n", cmd_dsc->dsc$a_pointer); + fprintf (outfile, "$ gnv$$make_status_2 = $status\n"); + fprintf (outfile, "$ goto gnv$$make_exit\n"); + + /* Exit and clean up */ + fprintf (outfile, "$ gnv$$make_error: ! 'f$verify(0)\n"); + fprintf (outfile, "$ gnv$$make_status_2 = $status\n"); + + if (append_token != -1) + { + fprintf (outfile, "$ deassign sys$output\n"); + fprintf (outfile, "$ close 'gnv$$make_al'\n"); + + DB (DB_JOBS, + (_("Append %.*s and cleanup\n"), comnamelen-3, child->comname)); + } + fprintf (outfile, "$ gnv$$make_exit: ! 'f$verify(0)\n"); + fprintf (outfile, + "$ exit 'gnv$$make_status_2' + (0*f$verify(gnv$$make_verify))\n"); + + fclose (outfile); + + free (cmd_dsc->dsc$a_pointer); + cmd_dsc->dsc$a_pointer = xmalloc (256 + 4); + sprintf (cmd_dsc->dsc$a_pointer, "$ @%s", child->comname); + cmd_dsc->dsc$w_length = strlen (cmd_dsc->dsc$a_pointer); + + DB (DB_JOBS, (_("Executing %s instead\n"), child->comname)); + } + + child->efn = 0; + while (child->efn < 32 || child->efn > 63) + { + status = LIB$GET_EF ((unsigned long *)&child->efn); + if (!$VMS_STATUS_SUCCESS (status)) + { + if (child->comname) + { + if (!ISDB (DB_JOBS)) + unlink (child->comname); + free (child->comname); + } + return -1; + } + } + + SYS$CLREF (child->efn); + + vms_jobsefnmask |= (1 << (child->efn - 32)); + + /* Export the child environment into DCL symbols */ + if (child->environment != 0) + { + char **ep = child->environment; + while (*ep != 0) + { + vms_putenv_symbol (*ep); + *ep++; + } + } + + /* + LIB$SPAWN [command-string] + [,input-file] + [,output-file] + [,flags] + [,process-name] + [,process-id] [,completion-status-address] [,byte-integer-event-flag-num] + [,AST-address] [,varying-AST-argument] + [,prompt-string] [,cli] [,table] + */ + +#ifndef DONTWAITFORCHILD + /* + * Code to make ctrl+c and ctrl+y working. + * The problem starts with the synchronous case where after lib$spawn is + * called any input will go to the child. But with input re-directed, + * both control characters won't make it to any of the programs, neither + * the spawning nor to the spawned one. Hence the caller needs to spawn + * with CLI$M_NOWAIT to NOT give up the input focus. A sys$waitfr + * has to follow to simulate the wanted synchronous behaviour. + * The next problem is ctrl+y which isn't caught by the crtl and + * therefore isn't converted to SIGQUIT (for a signal handler which is + * already established). The only way to catch ctrl+y, is an AST + * assigned to the input channel. But ctrl+y handling of DCL needs to be + * disabled, otherwise it will handle it. Not to mention the previous + * ctrl+y handling of DCL needs to be re-established before make exits. + * One more: At the time of LIB$SPAWN signals are blocked. SIGQUIT will + * make it to the signal handler after the child "normally" terminates. + * This isn't enough. It seems reasonable for simple command lines like + * a 'cc foobar.c' spawned in a subprocess but it is unacceptable for + * spawning make. Therefore we need to abort the process in the AST. + * + * Prior to the spawn it is checked if an AST is already set up for + * ctrl+y, if not one is set up for a channel to SYS$COMMAND. In general + * this will work except if make is run in a batch environment, but there + * nobody can press ctrl+y. During the setup the DCL handling of ctrl+y + * is disabled and an exit handler is established to re-enable it. + * If the user interrupts with ctrl+y, the assigned AST will fire, force + * an abort to the subprocess and signal SIGQUIT, which will be caught by + * the already established handler and will bring us back to common code. + * After the spawn (now /nowait) a sys$waitfr simulates the /wait and + * enables the ctrl+y be delivered to this code. And the ctrl+c too, + * which the crtl converts to SIGINT and which is caught by the common + * signal handler. Because signals were blocked before entering this code + * sys$waitfr will always complete and the SIGQUIT will be processed after + * it (after termination of the current block, somewhere in common code). + * And SIGINT too will be delayed. That is ctrl+c can only abort when the + * current command completes. Anyway it's better than nothing :-) + */ + + if (!setupYAstTried) + tryToSetupYAst(); + child->vms_launch_status = lib$spawn (cmd_dsc, /* cmd-string */ + NULL, /* input-file */ + NULL, /* output-file */ + &spflags, /* flags */ + &pnamedsc, /* proc name */ + &child->pid, &child->cstatus, &child->efn, + 0, 0, + 0, 0, 0); + + status = child->vms_launch_status; + if ($VMS_STATUS_SUCCESS (status)) + { + status = sys$waitfr (child->efn); + vmsHandleChildTerm (child); + } +#else + child->vms_launch_status = lib$spawn (cmd_dsc, + NULL, + NULL, + &spflags, + &pnamedsc, + &child->pid, &child->cstatus, &child->efn, + vmsHandleChildTerm, child, + 0, 0, 0); + status = child->vms_launch_status; +#endif + + /* Free the pointer if not a command file */ + if (!vms_always_use_cmd_file && !token.use_cmd_file) + free (cmd_dsc->dsc$a_pointer); + free (cmd_dsc); + + if (!$VMS_STATUS_SUCCESS (status)) + { + switch (status) + { + case SS$_EXQUOTA: + errno = EPROCLIM; + break; + default: + errno = EFAIL; + } + } + + /* Restore the VMS symbols that were changed */ + if (child->environment != 0) + { + char **ep = child->environment; + while (*ep != 0) + { + vms_restore_symbol (*ep); + *ep++; + } + } + + /* TODO what is this "magic number" */ + return (status & 1) ? 270163 : -1 ; +} diff --git a/local/recipes/dev/gnu-make/source/src/vpath.c b/local/recipes/dev/gnu-make/source/src/vpath.c new file mode 100644 index 0000000000..9c95441f60 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vpath.c @@ -0,0 +1,634 @@ +/* Implementation of pattern-matching file search paths for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include "filedef.h" +#include "variable.h" +#ifdef WINDOWS32 +#include "pathstuff.h" +#endif + + +/* Structure used to represent a selective VPATH searchpath. */ + +struct vpath + { + struct vpath *next; /* Pointer to next struct in the linked list. */ + const char *pattern; /* The pattern to match. */ + const char *percent; /* Pointer into 'pattern' where the '%' is. */ + size_t patlen; /* Length of the pattern. */ + const char **searchpath; /* Null-terminated list of directories. */ + size_t maxlen; /* Maximum length of any entry in the list. */ + }; + +/* Linked-list of all selective VPATHs. */ + +static struct vpath *vpaths; + +/* Structure for the general VPATH given in the variable. */ + +static struct vpath *general_vpath; + +/* Structure for GPATH given in the variable. */ + +static struct vpath *gpaths; + + +/* Reverse the chain of selective VPATH lists so they will be searched in the + order given in the makefiles and construct the list from the VPATH + variable. */ + +void +build_vpath_lists (void) +{ + struct vpath *new = 0; + struct vpath *old, *nexto; + char *p; + + /* Reverse the chain. */ + for (old = vpaths; old != 0; old = nexto) + { + nexto = old->next; + old->next = new; + new = old; + } + + vpaths = new; + + /* If there is a VPATH variable with a nonnull value, construct the + general VPATH list from it. We use variable_expand rather than just + calling lookup_variable so that it will be recursively expanded. */ + + { + /* Turn off --warn-undefined-variables while we expand SHELL and IFS. */ + int save = warn_undefined_variables_flag; + warn_undefined_variables_flag = 0; + + p = variable_expand ("$(strip $(VPATH))"); + + warn_undefined_variables_flag = save; + } + + if (*p != '\0') + { + /* Save the list of vpaths. */ + struct vpath *save_vpaths = vpaths; + char gp[] = "%"; + + /* Empty 'vpaths' so the new one will have no next, and 'vpaths' + will still be nil if P contains no existing directories. */ + vpaths = 0; + + /* Parse P. */ + construct_vpath_list (gp, p); + + /* Store the created path as the general path, + and restore the old list of vpaths. */ + general_vpath = vpaths; + vpaths = save_vpaths; + } + + /* If there is a GPATH variable with a nonnull value, construct the + GPATH list from it. We use variable_expand rather than just + calling lookup_variable so that it will be recursively expanded. */ + + { + /* Turn off --warn-undefined-variables while we expand SHELL and IFS. */ + int save = warn_undefined_variables_flag; + warn_undefined_variables_flag = 0; + + p = variable_expand ("$(strip $(GPATH))"); + + warn_undefined_variables_flag = save; + } + + if (*p != '\0') + { + /* Save the list of vpaths. */ + struct vpath *save_vpaths = vpaths; + char gp[] = "%"; + + /* Empty 'vpaths' so the new one will have no next, and 'vpaths' + will still be nil if P contains no existing directories. */ + vpaths = 0; + + /* Parse P. */ + construct_vpath_list (gp, p); + + /* Store the created path as the GPATH, + and restore the old list of vpaths. */ + gpaths = vpaths; + vpaths = save_vpaths; + } +} + +/* Construct the VPATH listing for the PATTERN and DIRPATH given. + + This function is called to generate selective VPATH lists and also for + the general VPATH list (which is in fact just a selective VPATH that + is applied to everything). The returned pointer is either put in the + linked list of all selective VPATH lists or in the GENERAL_VPATH + variable. + + If DIRPATH is nil, remove all previous listings with the same + pattern. If PATTERN is nil, remove all VPATH listings. Existing + and readable directories that are not "." given in the DIRPATH + separated by the path element separator (defined in makeint.h) are + loaded into the directory hash table if they are not there already + and put in the VPATH searchpath for the given pattern with trailing + slashes stripped off if present (and if the directory is not the + root, "/"). The length of the longest entry in the list is put in + the structure as well. The new entry will be at the head of the + VPATHS chain. */ + +void +construct_vpath_list (char *pattern, char *dirpath) +{ + unsigned int elem; + char *p; + const char **vpath; + size_t maxvpath; + unsigned int maxelem; + const char *percent = NULL; + + if (pattern != 0) + percent = find_percent (pattern); + + if (dirpath == 0) + { + /* Remove matching listings. */ + struct vpath *path, *lastpath; + + lastpath = 0; + path = vpaths; + while (path != 0) + { + struct vpath *next = path->next; + + if (pattern == 0 + || (((percent == 0 && path->percent == 0) + || (percent - pattern == path->percent - path->pattern)) + && streq (pattern, path->pattern))) + { + /* Remove it from the linked list. */ + if (lastpath == 0) + vpaths = path->next; + else + lastpath->next = next; + + /* Free its unused storage. */ + /* MSVC erroneously warns without a cast here. */ + free ((void *)path->searchpath); + free (path); + } + else + lastpath = path; + + path = next; + } + + return; + } + +#ifdef WINDOWS32 + convert_vpath_to_windows32 (dirpath, ';'); +#endif + + /* Skip over any initial separators and blanks. */ + while (STOP_SET (*dirpath, MAP_BLANK|MAP_PATHSEP)) + ++dirpath; + + /* Figure out the maximum number of VPATH entries and put it in + MAXELEM. We start with 2, one before the first separator and one + nil (the list terminator) and increment our estimated number for + each separator or blank we find. */ + maxelem = 2; + p = dirpath; + while (*p != '\0') + if (STOP_SET (*p++, MAP_BLANK|MAP_PATHSEP)) + ++maxelem; + + vpath = xmalloc (maxelem * sizeof (const char *)); + maxvpath = 0; + + elem = 0; + p = dirpath; + while (*p != '\0') + { + char *v; + size_t len; + + /* Find the end of this entry. */ + v = p; + while (*p != '\0' +#if defined(HAVE_DOS_PATHS) && (PATH_SEPARATOR_CHAR == ':') + /* Platforms whose PATH_SEPARATOR_CHAR is ':' and which + 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 && ISDIRSEP (p[1]))) +#else + && *p != PATH_SEPARATOR_CHAR +#endif + && !ISBLANK (*p)) + ++p; + + len = p - v; + /* Make sure there's no trailing slash, + but still allow "/" as a directory. */ +#if defined(__MSDOS__) || defined(__EMX__) || defined(HAVE_DOS_PATHS) + /* We need also to leave alone a trailing slash in "d:/". */ + if (len > 3 || (len > 1 && v[1] != ':')) +#endif + if (len > 1 && p[-1] == '/') + --len; + + /* Put the directory on the vpath list. */ + if (len > 1 || *v != '.') + { + vpath[elem++] = dir_name (strcache_add_len (v, len)); + if (len > maxvpath) + maxvpath = len; + } + + /* Skip over separators and blanks between entries. */ + while (STOP_SET (*p, MAP_BLANK|MAP_PATHSEP)) + ++p; + } + + if (elem > 0) + { + struct vpath *path; + /* ELEM is now incremented one element past the last + entry, to where the nil-pointer terminator goes. + Usually this is maxelem - 1. If not, shrink down. */ + if (elem < (maxelem - 1)) + vpath = xrealloc ((void *)vpath, (elem+1) * sizeof (const char *)); + + /* Put the nil-pointer terminator on the end of the VPATH list. */ + vpath[elem] = NULL; + + /* Construct the vpath structure and put it into the linked list. */ + path = xmalloc (sizeof (struct vpath)); + path->searchpath = vpath; + path->maxlen = maxvpath; + path->next = vpaths; + vpaths = path; + + /* Set up the members. */ + path->pattern = strcache_add (pattern); + path->patlen = strlen (pattern); + path->percent = percent ? path->pattern + (percent - pattern) : 0; + } + else + /* There were no entries, so free whatever space we allocated. */ + /* MSVC erroneously warns without a cast here. */ + free ((void *)vpath); +} + +/* Search the GPATH list for a pathname string that matches the one passed + in. If it is found, return 1. Otherwise we return 0. */ + +int +gpath_search (const char *file, size_t len) +{ + if (gpaths && (len <= gpaths->maxlen)) + { + const char **gp; + for (gp = gpaths->searchpath; *gp != NULL; ++gp) + if (strneq (*gp, file, len) && (*gp)[len] == '\0') + return 1; + } + + return 0; +} + + +/* Search the given VPATH list for a directory where the name pointed to by + FILE exists. If it is found, we return a cached name of the existing file + and set *MTIME_PTR (if MTIME_PTR is not NULL) to its modtime (or zero if no + stat call was done). Also set the matching directory index in PATH_INDEX + if it is not NULL. Otherwise we return NULL. */ + +static const char * +selective_vpath_search (struct vpath *path, const char *file, + FILE_TIMESTAMP *mtime_ptr, unsigned int* path_index) +{ + int not_target; + char *name; + const char *n; + const char *filename; + const char **vpath = path->searchpath; + size_t maxvpath = path->maxlen; + unsigned int i; + size_t flen, name_dplen; + int exists = 0; + + /* Find out if *FILE is a target. + If and only if it is NOT a target, we will accept prospective + files that don't exist but are mentioned in a makefile. */ + { + struct file *f = lookup_file (file); + not_target = f == 0 || !f->is_target; + } + + flen = strlen (file); + + /* Split *FILE into a directory prefix and a name-within-directory. + NAME_DPLEN gets the length of the prefix; FILENAME gets the pointer to + the name-within-directory and FLEN is its length. */ + + n = strrchr (file, '/'); +#ifdef HAVE_DOS_PATHS + /* We need the rightmost slash or backslash. */ + { + const char *bslash = strrchr (file, '\\'); + if (!n || bslash > n) + n = bslash; + } +#endif + name_dplen = n != 0 ? n - file : 0; + filename = name_dplen > 0 ? n + 1 : file; + if (name_dplen > 0) + flen -= name_dplen + 1; + + /* Get enough space for the biggest VPATH entry, a slash, the directory + prefix that came with FILE, another slash (although this one may not + always be necessary), the filename, and a null terminator. */ + name = alloca (maxvpath + 1 + name_dplen + 1 + flen + 1); + + /* Try each VPATH entry. */ + for (i = 0; vpath[i] != 0; ++i) + { + int exists_in_cache = 0; + char *p = name; + size_t vlen = strlen (vpath[i]); + + /* Put the next VPATH entry into NAME at P and increment P past it. */ + p = mempcpy (p, vpath[i], vlen); + + /* Add the directory prefix already in *FILE. */ + if (name_dplen > 0) + { +#ifndef VMS + *p++ = '/'; +#else + /* VMS: if this is not in VMS format, treat as Unix format */ + if ((*p != ':') && (*p != ']') && (*p != '>')) + *p++ = '/'; +#endif + p = mempcpy (p, file, name_dplen); + } + +#ifdef HAVE_DOS_PATHS + /* Cause the next if to treat backslash and slash alike. */ + if (p != name && p[-1] == '\\' ) + p[-1] = '/'; +#endif + /* Now add the name-within-directory at the end of NAME. */ +#ifndef VMS + if (p != name && p[-1] != '/') + { + *p = '/'; + memcpy (p + 1, filename, flen + 1); + } + else +#else + /* VMS use a slash if no directory terminator present */ + if (p != name && p[-1] != '/' && p[-1] != ':' && + p[-1] != '>' && p[-1] != ']') + { + *p = '/'; + memcpy (p + 1, filename, flen + 1); + } + else +#endif + memcpy (p, filename, flen + 1); + + /* Check if the file is mentioned in a makefile. If *FILE is not + a target, that is enough for us to decide this file exists. + If *FILE is a target, then the file must be mentioned in the + makefile also as a target to be chosen. + + The restriction that *FILE must not be a target for a + makefile-mentioned file to be chosen was added by an + inadequately commented change in July 1990; I am not sure off + hand what problem it fixes. + + In December 1993 I loosened this restriction to allow a file + to be chosen if it is mentioned as a target in a makefile. This + seem logical. + + Special handling for -W / -o: make sure we preserve the special + values here. Actually this whole thing is a little bogus: I think + we should ditch the name/hname thing and look into the renamed + capability that already exists for files: that is, have a new struct + file* entry for the VPATH-found file, and set the renamed field if + we use it. + */ + { + struct file *f = lookup_file (name); + if (f != 0) + { + exists = not_target || f->is_target; + if (exists && mtime_ptr + && (f->last_mtime == OLD_MTIME || f->last_mtime == NEW_MTIME)) + { + *mtime_ptr = f->last_mtime; + mtime_ptr = 0; + } + } + } + + if (!exists) + { + /* That file wasn't mentioned in the makefile. + See if it actually exists. */ + +#ifdef VMS + /* For VMS syntax just use the original vpath */ + if (*p != '/') + exists_in_cache = exists = dir_file_exists_p (vpath[i], filename); + else +#endif + { + /* Clobber a null into the name at the last slash. + Now NAME is the name of the directory to look in. */ + *p = '\0'; + /* We know the directory is in the hash table now because either + construct_vpath_list or the code just above put it there. + Does the file we seek exist in it? */ + exists_in_cache = exists = dir_file_exists_p (name, filename); + } + } + + if (exists) + { + /* The file is in the directory cache. + Now check that it actually exists in the filesystem. + The cache may be out of date. When vpath thinks a file + exists, but stat fails for it, confusion results in the + higher levels. */ + + struct stat st; + +#ifndef VMS + /* Put the slash back in NAME. */ + *p = '/'; +#else + /* If the slash was removed, put it back */ + if (*p == 0) + *p = '/'; +#endif + + if (exists_in_cache) /* Makefile-mentioned file need not exist. */ + { + int e; + + EINTRLOOP (e, stat (name, &st)); /* Does it really exist? */ + if (e != 0) + { + exists = 0; + continue; + } + + /* Store the modtime into *MTIME_PTR for the caller. */ + if (mtime_ptr != 0) + { + *mtime_ptr = FILE_TIMESTAMP_STAT_MODTIME (name, st); + mtime_ptr = 0; + } + } + + /* We have found a file. + If we get here and mtime_ptr hasn't been set, record + UNKNOWN_MTIME to indicate this. */ + if (mtime_ptr != 0) + *mtime_ptr = UNKNOWN_MTIME; + + /* Store the name we found and return it. */ + + if (path_index) + *path_index = i; + + return strcache_add_len (name, (p + 1 - name) + flen); + } + } + + return 0; +} + + +/* Search the VPATH list whose pattern matches FILE for a directory where FILE + exists. If it is found, return the cached name of an existing file, and + set *MTIME_PTR (if MTIME_PTR is not NULL) to its modtime (or zero if no + stat call was done). Also set the matching directory index in VPATH_INDEX + and PATH_INDEX if they are not NULL. Otherwise we return 0. */ + +const char * +vpath_search (const char *file, FILE_TIMESTAMP *mtime_ptr, + unsigned int* vpath_index, unsigned int* path_index) +{ + struct vpath *v; + + /* If there are no VPATH entries or FILENAME starts at the root, + there is nothing we can do. */ + + if (file[0] == '/' +#ifdef HAVE_DOS_PATHS + || file[0] == '\\' || file[1] == ':' +#endif + || (vpaths == 0 && general_vpath == 0)) + return 0; + + if (vpath_index) + { + *vpath_index = 0; + *path_index = 0; + } + + for (v = vpaths; v != 0; v = v->next) + { + if (pattern_matches (v->pattern, v->percent, file)) + { + const char *p = selective_vpath_search ( + v, file, mtime_ptr, path_index); + if (p) + return p; + } + + if (vpath_index) + ++*vpath_index; + } + + + if (general_vpath != 0) + { + const char *p = selective_vpath_search ( + general_vpath, file, mtime_ptr, path_index); + if (p) + return p; + } + + return 0; +} + + + + +/* Print the data base of VPATH search paths. */ + +void +print_vpath_data_base (void) +{ + unsigned int nvpaths; + struct vpath *v; + + puts (_("\n# VPATH Search Paths\n")); + + nvpaths = 0; + for (v = vpaths; v != 0; v = v->next) + { + unsigned int i; + + ++nvpaths; + + printf ("vpath %s ", v->pattern); + + for (i = 0; v->searchpath[i] != 0; ++i) + printf ("%s%c", v->searchpath[i], + v->searchpath[i + 1] == 0 ? '\n' : PATH_SEPARATOR_CHAR); + } + + if (vpaths == 0) + puts (_("# No 'vpath' search paths.")); + else + printf (_("\n# %u 'vpath' search paths.\n"), nvpaths); + + if (general_vpath == 0) + puts (_("\n# No general ('VPATH' variable) search path.")); + else + { + const char **path = general_vpath->searchpath; + unsigned int i; + + fputs (_("\n# General ('VPATH' variable) search path:\n# "), stdout); + + for (i = 0; path[i] != 0; ++i) + printf ("%s%c", path[i], + path[i + 1] == 0 ? '\n' : PATH_SEPARATOR_CHAR); + } +} diff --git a/local/recipes/dev/gnu-make/source/src/w32/compat/dirent.c b/local/recipes/dev/gnu-make/source/src/w32/compat/dirent.c new file mode 100644 index 0000000000..e9cb1d2ff7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/compat/dirent.c @@ -0,0 +1,196 @@ +/* Directory entry code for Window platforms. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + + +#include +#include +#include +#include +#include +#include +#include "dirent.h" + +#ifndef __MINGW32__ +DIR* +opendir(const char* pDirName) +{ + struct stat sb; + DIR* pDir; + char* pEndDirName; + size_t nBufferLen; + + /* sanity checks */ + if (!pDirName) { + errno = EINVAL; + return NULL; + } + if (stat(pDirName, &sb) != 0) { + errno = ENOENT; + return NULL; + } + if ((sb.st_mode & S_IFMT) != S_IFDIR) { + errno = ENOTDIR; + return NULL; + } + + /* allocate a DIR structure to return */ + pDir = (DIR *) malloc(sizeof (DIR)); + + if (!pDir) + return NULL; + + /* input directory name length */ + nBufferLen = strlen(pDirName); + + /* copy input directory name to DIR buffer */ + strcpy(pDir->dir_pDirectoryName, pDirName); + + /* point to end of the copied directory name */ + pEndDirName = &pDir->dir_pDirectoryName[nBufferLen - 1]; + + /* if directory name did not end in '/' or '\', add '/' */ + if ((*pEndDirName != '/') && (*pEndDirName != '\\')) { + pEndDirName++; + *pEndDirName = '/'; + } + + /* now append the wildcard character to the buffer */ + pEndDirName++; + *pEndDirName = '*'; + pEndDirName++; + *pEndDirName = '\0'; + + /* other values defaulted */ + pDir->dir_nNumFiles = 0; + pDir->dir_hDirHandle = INVALID_HANDLE_VALUE; + pDir->dir_ulCookie = __DIRENT_COOKIE; + + return pDir; +} + +void +closedir(DIR *pDir) +{ + /* got a valid pointer? */ + if (!pDir) { + errno = EINVAL; + return; + } + + /* sanity check that this is a DIR pointer */ + if (pDir->dir_ulCookie != __DIRENT_COOKIE) { + errno = EINVAL; + return; + } + + /* close the WINDOWS32 directory handle */ + if (pDir->dir_hDirHandle != INVALID_HANDLE_VALUE) + FindClose(pDir->dir_hDirHandle); + + free(pDir); + + return; +} + +struct dirent * +readdir(DIR* pDir) +{ + WIN32_FIND_DATA wfdFindData; + + if (!pDir) { + errno = EINVAL; + return NULL; + } + + /* sanity check that this is a DIR pointer */ + if (pDir->dir_ulCookie != __DIRENT_COOKIE) { + errno = EINVAL; + return NULL; + } + + if (pDir->dir_nNumFiles == 0) { + pDir->dir_hDirHandle = FindFirstFile(pDir->dir_pDirectoryName, &wfdFindData); + if (pDir->dir_hDirHandle == INVALID_HANDLE_VALUE) + return NULL; + } else if (!FindNextFile(pDir->dir_hDirHandle, &wfdFindData)) + return NULL; + + /* bump count for next call to readdir() */ + pDir->dir_nNumFiles++; + + /* fill in struct dirent values */ + pDir->dir_sdReturn.d_ino = (ino_t)-1; + strcpy(pDir->dir_sdReturn.d_name, wfdFindData.cFileName); + + if (wfdFindData.dwFileAttributes & FILE_ATTRIBUTE_DEVICE) + pDir->dir_sdReturn.d_type = DT_CHR; + else if (wfdFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + pDir->dir_sdReturn.d_type = DT_DIR; + else + pDir->dir_sdReturn.d_type = DT_REG; + + return &pDir->dir_sdReturn; +} + +void +rewinddir(DIR* pDir) +{ + if (!pDir) { + errno = EINVAL; + return; + } + + /* sanity check that this is a DIR pointer */ + if (pDir->dir_ulCookie != __DIRENT_COOKIE) { + errno = EINVAL; + return; + } + + /* close the WINDOWS32 directory handle */ + if (pDir->dir_hDirHandle != INVALID_HANDLE_VALUE) + if (!FindClose(pDir->dir_hDirHandle)) + errno = EBADF; + + /* reset members which control readdir() */ + pDir->dir_hDirHandle = INVALID_HANDLE_VALUE; + pDir->dir_nNumFiles = 0; + + return; +} + +void +seekdir(DIR* pDir, long nPosition) +{ + if (!pDir) + return; + + /* sanity check that this is a DIR pointer */ + if (pDir->dir_ulCookie != __DIRENT_COOKIE) + return; + + /* go back to beginning of directory */ + rewinddir(pDir); + + /* loop until we have found position we care about */ + for (--nPosition; nPosition && readdir(pDir); nPosition--); + + /* flag invalid nPosition value */ + if (nPosition) + errno = EINVAL; + + return; +} +#endif /* !__MINGW32__ */ diff --git a/local/recipes/dev/gnu-make/source/src/w32/compat/posixfcn.c b/local/recipes/dev/gnu-make/source/src/w32/compat/posixfcn.c new file mode 100644 index 0000000000..f1013ae2bf --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/compat/posixfcn.c @@ -0,0 +1,151 @@ +/* Replacements for Posix functions and Posix functionality for MS-Windows. + +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include +#include +#include +#include +#include + +#include "dlfcn.h" + +#include "job.h" + +#if MAKE_LOAD + +/* Support for dynamic loading of objects. */ + +static DWORD last_err; + +void * +dlopen (const char *file, int mode) +{ + char dllfn[MAX_PATH], *p; + HANDLE dllhandle; + + if ((mode & ~(RTLD_LAZY | RTLD_NOW | RTLD_GLOBAL)) != 0) + { + errno = EINVAL; + last_err = ERROR_INVALID_PARAMETER; + return NULL; + } + + if (!file) + dllhandle = GetModuleHandle (NULL); + else + { + /* MSDN says to be sure to use backslashes in the DLL file name. */ + strcpy (dllfn, file); + for (p = dllfn; *p; p++) + if (*p == '/') + *p = '\\'; + + dllhandle = LoadLibrary (dllfn); + } + if (!dllhandle) + last_err = GetLastError (); + + return dllhandle; +} + +char * +dlerror (void) +{ + static char errbuf[1024]; + DWORD ret; + + if (!last_err) + return NULL; + + ret = FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, last_err, 0, errbuf, sizeof (errbuf), NULL); + while (ret > 0 && (errbuf[ret - 1] == '\n' || errbuf[ret - 1] == '\r')) + --ret; + + errbuf[ret] = '\0'; + if (!ret) + sprintf (errbuf, "Error code %lu", last_err); + + last_err = 0; + return errbuf; +} + +void * +dlsym (void *handle, const char *name) +{ + FARPROC addr = NULL; + + if (!handle || handle == INVALID_HANDLE_VALUE) + { + last_err = ERROR_INVALID_PARAMETER; + return NULL; + } + + addr = GetProcAddress (handle, name); + if (!addr) + last_err = GetLastError (); + + return (void *)addr; +} + +int +dlclose (void *handle) +{ + if (!handle || handle == INVALID_HANDLE_VALUE) + return -1; + if (!FreeLibrary (handle)) + return -1; + + return 0; +} + + +#endif /* MAKE_LOAD */ + + +/* MS runtime's isatty returns non-zero for any character device, + including the null device, which is not what we want. */ +int +isatty (int fd) +{ + HANDLE fh = (HANDLE) _get_osfhandle (fd); + DWORD con_mode; + + if (fh == INVALID_HANDLE_VALUE) + { + errno = EBADF; + return 0; + } + if (GetConsoleMode (fh, &con_mode)) + return 1; + + errno = ENOTTY; + return 0; +} + +char * +ttyname (int fd) +{ + /* This "knows" that Make only asks about stdout and stderr. A more + sophisticated implementation should test whether FD is open for + input or output. We can do that by looking at the mode returned + by GetConsoleMode. */ + return "CONOUT$"; +} diff --git a/local/recipes/dev/gnu-make/source/src/w32/include/dirent.h b/local/recipes/dev/gnu-make/source/src/w32/include/dirent.h new file mode 100644 index 0000000000..2712e51d96 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/include/dirent.h @@ -0,0 +1,84 @@ +/* Windows version of dirent.h +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 +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 . */ + +#ifndef _DIRENT_H +#define _DIRENT_H + +#ifdef __MINGW32__ +# include +# include_next +#else + +#include +#include +#include +#include + +#ifndef NAME_MAX +#define NAME_MAX 255 +#endif + +#define __DIRENT_COOKIE 0xfefeabab + +/* File types for `d_type'. + Windows only supports DT_CHR, DT_DIR, and DT_REG. */ +enum + { + DT_UNKNOWN = 0, +# define DT_UNKNOWN DT_UNKNOWN + DT_FIFO = 1, +# define DT_FIFO DT_FIFO + DT_CHR = 2, +# define DT_CHR DT_CHR + DT_DIR = 4, +# define DT_DIR DT_DIR + DT_BLK = 6, +# define DT_BLK DT_BLK + DT_REG = 8, +# define DT_REG DT_REG + DT_LNK = 10, +# define DT_LNK DT_LNK + DT_SOCK = 12, +# define DT_SOCK DT_SOCK + DT_WHT = 14 +# define DT_WHT DT_WHT + }; + + +struct dirent + { + ino_t d_ino; /* unused - no equivalent on WINDOWS32. */ + unsigned char d_type; + char d_name[NAME_MAX+1]; /* must come last due to dir.c assumptions. */ + }; + +typedef struct dir_struct + { + ULONG dir_ulCookie; + HANDLE dir_hDirHandle; + DWORD dir_nNumFiles; + char dir_pDirectoryName[NAME_MAX+1]; + struct dirent dir_sdReturn; + } DIR; + +DIR *opendir(const char *); +struct dirent *readdir(DIR *); +void rewinddir(DIR *); +void closedir(DIR *); +void seekdir(DIR *, long); + +#endif /* !__MINGW32__ */ +#endif diff --git a/local/recipes/dev/gnu-make/source/src/w32/include/dlfcn.h b/local/recipes/dev/gnu-make/source/src/w32/include/dlfcn.h new file mode 100644 index 0000000000..dc1d529702 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/include/dlfcn.h @@ -0,0 +1,29 @@ +/* dlfcn.h replacement for MS-Windows build. +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 +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 . */ + +#ifndef DLFCN_H +#define DLFCN_H + +#define RTLD_LAZY 1 +#define RTLD_NOW 2 +#define RTLD_GLOBAL 4 + +extern void *dlopen (const char *, int); +extern void *dlsym (void *, const char *); +extern char *dlerror (void); +extern int dlclose (void *); + +#endif /* DLFCN_H */ diff --git a/local/recipes/dev/gnu-make/source/src/w32/include/pathstuff.h b/local/recipes/dev/gnu-make/source/src/w32/include/pathstuff.h new file mode 100644 index 0000000000..374d8056a2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/include/pathstuff.h @@ -0,0 +1,25 @@ +/* Definitions for Windows path manipulation. +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 +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 . */ + +#ifndef _PATHSTUFF_H +#define _PATHSTUFF_H + +char *convert_Path_to_windows32(char *Path, char to_delim); +char *convert_vpath_to_windows32(char *Path, char to_delim); +char *w32ify(const char *file, int resolve); +char *getcwd_fs(char *buf, int len); + +#endif diff --git a/local/recipes/dev/gnu-make/source/src/w32/include/sub_proc.h b/local/recipes/dev/gnu-make/source/src/w32/include/sub_proc.h new file mode 100644 index 0000000000..83f71f617e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/include/sub_proc.h @@ -0,0 +1,64 @@ +/* Definitions for Windows process invocation. +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 +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 . */ + +#ifndef SUB_PROC_H +#define SUB_PROC_H + +/* + * Component Name: + * + * $Date$ + * + * $Source$ + * + * $Id$ + */ + +#define EXTERN_DECL(entry, args) extern entry args +#define VOID_DECL void + +EXTERN_DECL(HANDLE process_init, (VOID_DECL)); +EXTERN_DECL(HANDLE process_init_fd, (HANDLE stdinh, HANDLE stdouth, + HANDLE stderrh)); +EXTERN_DECL(long process_begin, (HANDLE proc, char **argv, char **envp, + char *exec_path, char *as_user)); +EXTERN_DECL(long process_pipe_io, (HANDLE proc, char *stdin_data, + int stdin_data_len)); +EXTERN_DECL(long process_file_io, (HANDLE proc)); +EXTERN_DECL(void process_cleanup, (HANDLE proc)); +EXTERN_DECL(HANDLE process_wait_for_any, (int block, DWORD* pdwWaitStatus)); +EXTERN_DECL(void process_register, (HANDLE proc)); +EXTERN_DECL(HANDLE process_easy, (char** argv, char** env, + int outfd, int errfd)); +EXTERN_DECL(BOOL process_kill, (HANDLE proc, int signal)); +EXTERN_DECL(BOOL process_table_full, (VOID_DECL)); +EXTERN_DECL(int process_table_usable_size, (VOID_DECL)); +EXTERN_DECL(int process_table_actual_size, (VOID_DECL)); +EXTERN_DECL(DWORD process_set_handles, (HANDLE *handles)); +EXTERN_DECL(DWORD process_wait_for_multiple_objects, (DWORD, const HANDLE*, BOOL, DWORD)); + +/* support routines */ +EXTERN_DECL(long process_errno, (HANDLE proc)); +EXTERN_DECL(long process_last_err, (HANDLE proc)); +EXTERN_DECL(long process_exit_code, (HANDLE proc)); +EXTERN_DECL(long process_signal, (HANDLE proc)); +EXTERN_DECL(char * process_outbuf, (HANDLE proc)); +EXTERN_DECL(char * process_errbuf, (HANDLE proc)); +EXTERN_DECL(int process_outcnt, (HANDLE proc)); +EXTERN_DECL(int process_errcnt, (HANDLE proc)); +EXTERN_DECL(void process_pipes, (HANDLE proc, int pipes[3])); + +#endif diff --git a/local/recipes/dev/gnu-make/source/src/w32/include/w32err.h b/local/recipes/dev/gnu-make/source/src/w32/include/w32err.h new file mode 100644 index 0000000000..d67e84bd3a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/include/w32err.h @@ -0,0 +1,26 @@ +/* Definitions for Windows error handling. +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 +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 . */ + +#ifndef _W32ERR_H_ +#define _W32ERR_H_ + +#ifndef EXTERN_DECL +#define EXTERN_DECL(entry, args) entry args +#endif + +EXTERN_DECL(const char * map_windows32_error_to_string, (DWORD error)); + +#endif /* !_W32ERR_H */ diff --git a/local/recipes/dev/gnu-make/source/src/w32/pathstuff.c b/local/recipes/dev/gnu-make/source/src/w32/pathstuff.c new file mode 100644 index 0000000000..38dbc2a3e3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/pathstuff.c @@ -0,0 +1,270 @@ +/* Path conversion for Windows pathnames. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" +#include +#include +#include "pathstuff.h" + +/* + * Convert delimiter separated vpath to Canonical format. + */ +char * +convert_vpath_to_windows32(char *Path, char to_delim) +{ + char *etok; /* token separator for old Path */ + + /* + * Convert all spaces to delimiters. Note that pathnames which + * contain blanks get trounced here. Use 8.3 format as a workaround. + */ + for (etok = Path; etok && *etok; etok++) + if (ISBLANK ((unsigned char) *etok)) + *etok = to_delim; + + return (convert_Path_to_windows32(Path, to_delim)); +} + +/* + * Convert delimiter separated path to Canonical format. + */ +char * +convert_Path_to_windows32(char *Path, char to_delim) +{ + char *etok; /* token separator for old Path */ + char *p; /* points to element of old Path */ + + /* is this a multi-element Path ? */ + /* FIXME: Perhaps use ":;\"" in strpbrk to convert all quotes to + delimiters as well, as a way to handle quoted directories in + PATH? */ + for (p = Path, etok = strpbrk(p, ":;"); + etok; + etok = strpbrk(p, ":;")) + if ((etok - p) == 1) { + if (*(etok - 1) == ';' || + *(etok - 1) == ':') { + etok[-1] = to_delim; + etok[0] = to_delim; + p = ++etok; + continue; /* ignore empty bucket */ + } else if (!isalpha ((unsigned char) *p)) { + /* found one to count, handle things like '.' */ + *etok = to_delim; + p = ++etok; + } else if ((*etok == ':') && ((etok = strpbrk(etok+1, ":;")) != NULL)) { + /* found one to count, handle drive letter */ + *etok = to_delim; + p = ++etok; + } else + /* all finished, force abort */ + p += strlen(p); + } else if (*p == '"') { /* a quoted directory */ + for (p++; *p && *p != '"'; p++) /* skip quoted part */ + ; + etok = strpbrk(p, ":;"); /* find next delimiter */ + if (etok) { + *etok = to_delim; + p = ++etok; + } else + p += strlen(p); + } else { + /* found another one, no drive letter */ + *etok = to_delim; + p = ++etok; + } + + return Path; +} + +/* + * Convert to forward slashes. Resolve to full pathname optionally + */ +char * +w32ify(const char *filename, int resolve) +{ + static char w32_path[FILENAME_MAX]; + char *p; + + if (resolve) + { + 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) - 1); + + for (p = w32_path; p && *p; p++) + if (*p == '\\') + *p = '/'; + + return w32_path; +} + +char * +getcwd_fs(char* buf, int len) +{ + char *p = getcwd(buf, len); + + if (p) { + char *q = w32ify(buf, 0); + strncpy(buf, q, len); + } + + return p; +} + +#ifdef unused +/* + * Convert delimiter separated pathnames (e.g. PATH) or single file pathname + * (e.g. c:/foo, c:\bar) to NutC format. If we are handed a string that + * _NutPathToNutc() fails to convert, just return the path we were handed + * and assume the caller will know what to do with it (It was probably + * a mistake to try and convert it anyway due to some of the bizarre things + * that might look like pathnames in makefiles). + */ +char * +convert_path_to_nutc(char *path) +{ + int count; /* count of path elements */ + char *nutc_path; /* new NutC path */ + int nutc_path_len; /* length of buffer to allocate for new path */ + char *pathp; /* pointer to nutc_path used to build it */ + char *etok; /* token separator for old path */ + char *p; /* points to element of old path */ + char sep; /* what flavor of separator used in old path */ + char *rval; + + /* is this a multi-element path ? */ + for (p = path, etok = strpbrk(p, ":;"), count = 0; + etok; + etok = strpbrk(p, ":;")) + if ((etok - p) == 1) { + if (*(etok - 1) == ';' || + *(etok - 1) == ':') { + p = ++etok; + continue; /* ignore empty bucket */ + } else if (etok = strpbrk(etok+1, ":;")) + /* found one to count, handle drive letter */ + p = ++etok, count++; + else + /* all finished, force abort */ + p += strlen(p); + } else + /* found another one, no drive letter */ + p = ++etok, count++; + + if (count) { + count++; /* x1;x2;x3 <- need to count x3 */ + + /* + * Hazard a guess on how big the buffer needs to be. + * We have to convert things like c:/foo to /c=/foo. + */ + nutc_path_len = strlen(path) + (count*2) + 1; + nutc_path = xmalloc(nutc_path_len); + pathp = nutc_path; + *pathp = '\0'; + + /* + * 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. + */ + for (p = path, etok = strpbrk(p, ":;"); + etok; + etok = strpbrk(p, ":;")) { + + /* don't trip up on device specifiers or empty path slots */ + if ((etok - p) == 1) + if (*(etok - 1) == ';' || + *(etok - 1) == ':') { + p = ++etok; + continue; + } else if ((etok = strpbrk(etok+1, ":;")) == NULL) + break; /* thing found was a WINDOWS32 pathname */ + + /* save separator */ + sep = *etok; + + /* terminate the current path element -- temporarily */ + *etok = '\0'; + +#ifdef __NUTC__ + /* convert to NutC format */ + if (_NutPathToNutc(p, pathp, 0) == FALSE) { + free(nutc_path); + rval = savestring(path, strlen(path)); + return rval; + } +#else + *pathp++ = '/'; + *pathp++ = p[0]; + *pathp++ = '='; + *pathp++ = '/'; + strcpy(pathp, &p[2]); +#endif + + pathp += strlen(pathp); + *pathp++ = ':'; /* use Unix style path separtor for new path */ + *pathp = '\0'; /* make sure we are null terminaed */ + + /* restore path separator */ + *etok = sep; + + /* point p to first char of next path element */ + p = ++etok; + + } + } else { + nutc_path_len = strlen(path) + 3; + nutc_path = xmalloc(nutc_path_len); + pathp = nutc_path; + *pathp = '\0'; + p = path; + } + + /* + * OK, here we handle the last element in PATH (e.g. c of a;b;c) + * or the path was a single filename and will be converted + * here. Note, testing p here assures that we don't trip up + * on paths like a;b; which have trailing delimiter followed by + * nothing. + */ + if (*p != '\0') { +#ifdef __NUTC__ + if (_NutPathToNutc(p, pathp, 0) == FALSE) { + free(nutc_path); + rval = savestring(path, strlen(path)); + return rval; + } +#else + *pathp++ = '/'; + *pathp++ = p[0]; + *pathp++ = '='; + *pathp++ = '/'; + strcpy(pathp, &p[2]); +#endif + } else + *(pathp-1) = '\0'; /* we're already done, don't leave trailing : */ + + rval = savestring(nutc_path, strlen(nutc_path)); + free(nutc_path); + return rval; +} + +#endif diff --git a/local/recipes/dev/gnu-make/source/src/w32/subproc/misc.c b/local/recipes/dev/gnu-make/source/src/w32/subproc/misc.c new file mode 100644 index 0000000000..c611e090cf --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/subproc/misc.c @@ -0,0 +1,83 @@ +/* Process handling for Windows +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include +#include +#include +#include +#include +#include "proc.h" + + +/* + * Description: Convert a NULL string terminated UNIX environment block to + * an environment block suitable for a windows32 system call + * + * Returns: TRUE= success, FALSE=fail + * + * Notes/Dependencies: the environment block is sorted in case-insensitive + * order, is double-null terminated, and is a char *, not a char ** + */ +int _cdecl compare(const void *a1, const void *a2) +{ + return _stricoll(*((char**)a1),*((char**)a2)); +} +bool_t +arr2envblk(char **arr, char **envblk_out, size_t *envsize_needed) +{ + char **tmp; + size_t size_needed; + int arrcnt; + char *ptr; + + arrcnt = 0; + while (arr[arrcnt]) { + arrcnt++; + } + + tmp = (char**) calloc(arrcnt + 1, sizeof(char *)); + if (!tmp) { + return FALSE; + } + + arrcnt = 0; + size_needed = *envsize_needed = 0; + while (arr[arrcnt]) { + tmp[arrcnt] = arr[arrcnt]; + size_needed += strlen(arr[arrcnt]) + 1; + arrcnt++; + } + size_needed++; + *envsize_needed = size_needed; + + qsort((void *) tmp, (size_t) arrcnt, sizeof (char*), compare); + + ptr = *envblk_out = calloc(size_needed, 1); + if (!ptr) { + free(tmp); + return FALSE; + } + + arrcnt = 0; + while (tmp[arrcnt]) { + strcpy(ptr, tmp[arrcnt]); + ptr += strlen(tmp[arrcnt]) + 1; + arrcnt++; + } + + free(tmp); + return TRUE; +} diff --git a/local/recipes/dev/gnu-make/source/src/w32/subproc/proc.h b/local/recipes/dev/gnu-make/source/src/w32/subproc/proc.h new file mode 100644 index 0000000000..4133813ca8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/subproc/proc.h @@ -0,0 +1,29 @@ +/* Definitions for Windows +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 +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 . */ + +#ifndef _PROC_H +#define _PROC_H + +typedef int bool_t; + +#define E_SCALL 101 +#define E_IO 102 +#define E_NO_MEM 103 +#define E_FORK 104 + +extern bool_t arr2envblk(char **arr, char **envblk_out, size_t *envsize_needed); + +#endif diff --git a/local/recipes/dev/gnu-make/source/src/w32/subproc/sub_proc.c b/local/recipes/dev/gnu-make/source/src/w32/subproc/sub_proc.c new file mode 100644 index 0000000000..501afc3e6e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/subproc/sub_proc.c @@ -0,0 +1,1564 @@ +/* Process handling for Windows. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include +#include +#include +#include /* for _get_osfhandle */ +#ifdef _MSC_VER +# include /* for intptr_t */ +#else +# include +#endif +#include +#include /* for msvc _beginthreadex, _endthreadex */ +#include +#include + +#include "filedef.h" +#include "variable.h" +#include "sub_proc.h" +#include "proc.h" +#include "w32err.h" +#include "debug.h" +#include "os.h" + +#define GMAKE_MAXIMUM_WAIT_OBJECTS (MAXIMUM_WAIT_OBJECTS * MAXIMUM_WAIT_OBJECTS) + +/* We need to move these special-case return codes out-of-band */ +#define GMAKE_WAIT_TIMEOUT 0xFFFF0102L +#define GMAKE_WAIT_ABANDONED_0 0x00080000L + +static char *make_command_line(char *shell_name, char *exec_path, char **argv); + +typedef struct sub_process_t { + intptr_t sv_stdin[2]; + intptr_t sv_stdout[2]; + intptr_t sv_stderr[2]; + int using_pipes; + char *inp; + DWORD incnt; + char * volatile outp; + volatile DWORD outcnt; + char * volatile errp; + volatile DWORD errcnt; + pid_t pid; + int exit_code; + int signal; + long last_err; + long lerrno; +} sub_process; + +/* keep track of children so we can implement a waitpid-like routine */ +static sub_process *proc_array[GMAKE_MAXIMUM_WAIT_OBJECTS]; +static unsigned int proc_index = 0; +static unsigned int fake_exits_pending = 0; + +/* + * Address the scalability limit intrisic to WaitForMultipleOjects by + * calling WaitForMultipleObjects on 64 element chunks of the input + * array with 0 timeout. Exit with an appropriately conditioned result + * or repeat again every 10 ms if no handle has signaled and the + * requested timeout was not zero. + */ +DWORD process_wait_for_multiple_objects( + DWORD nCount, + const HANDLE *lpHandles, + BOOL bWaitAll, + DWORD dwMilliseconds +) +{ + assert(nCount <= GMAKE_MAXIMUM_WAIT_OBJECTS); + + if (nCount <= MAXIMUM_WAIT_OBJECTS) { + DWORD retVal = WaitForMultipleObjects(nCount, lpHandles, bWaitAll, dwMilliseconds); + return (retVal == WAIT_TIMEOUT) ? GMAKE_WAIT_TIMEOUT : retVal; + } else { + for (;;) { + DWORD objectCount = nCount; + int blockCount = 0; + DWORD retVal = 0; + + assert(bWaitAll == FALSE); /* This logic only works for this use case */ + assert(dwMilliseconds == 0 || dwMilliseconds == INFINITE); /* No support for timeouts */ + + for (; objectCount > 0; blockCount++) { + DWORD n = objectCount <= MAXIMUM_WAIT_OBJECTS ? objectCount : MAXIMUM_WAIT_OBJECTS; + objectCount -= n; + retVal = WaitForMultipleObjects(n, &lpHandles[blockCount * MAXIMUM_WAIT_OBJECTS], + FALSE, 0); + switch (retVal) { + case WAIT_TIMEOUT: + retVal = GMAKE_WAIT_TIMEOUT; + continue; + break; + case WAIT_FAILED: + fprintf(stderr,"WaitForMultipleOjbects failed waiting with error %lu\n", GetLastError()); + break; + default: + if (retVal >= WAIT_ABANDONED_0) { + assert(retVal < WAIT_ABANDONED_0 + MAXIMUM_WAIT_OBJECTS); + retVal += blockCount * MAXIMUM_WAIT_OBJECTS - WAIT_ABANDONED_0 + GMAKE_WAIT_ABANDONED_0; + } else { + assert(retVal < WAIT_OBJECT_0 + MAXIMUM_WAIT_OBJECTS); + retVal += blockCount * MAXIMUM_WAIT_OBJECTS; + } + break; + } + + return retVal; + + } + + if (dwMilliseconds == 0) return retVal; + + Sleep(10); /* Sleep for 10 ms */ + } + } +} + +/* + * Fill a HANDLE list with handles to wait for. + */ +DWORD +process_set_handles(HANDLE *handles) +{ + DWORD count = 0; + unsigned int i; + + /* Build array of handles to wait for */ + for (i = 0; i < proc_index; i++) { + /* Don't wait on child processes that have already finished */ + if (fake_exits_pending && proc_array[i]->exit_code) + continue; + + handles[count++] = (HANDLE) proc_array[i]->pid; + } + + return count; +} + +/* + * When a process has been waited for, adjust the wait state + * array so that we don't wait for it again + */ +static void +process_adjust_wait_state(sub_process* pproc) +{ + unsigned int i; + + if (!proc_index) + return; + + for (i = 0; i < proc_index; i++) + if (proc_array[i]->pid == pproc->pid) + break; + + if (i < proc_index) { + proc_index--; + if (i != proc_index) + memmove(&proc_array[i], &proc_array[i+1], + (proc_index-i) * sizeof(sub_process*)); + proc_array[proc_index] = NULL; + } +} + +/* + * Waits for any of the registered child processes to finish. + */ +static sub_process * +process_wait_for_any_private(int block, DWORD* pdwWaitStatus) +{ + HANDLE handles[GMAKE_MAXIMUM_WAIT_OBJECTS]; + DWORD retval, which; + unsigned int i; + + if (!proc_index) + return NULL; + + /* build array of handles to wait for */ + for (i = 0; i < proc_index; i++) { + handles[i] = (HANDLE) proc_array[i]->pid; + + if (fake_exits_pending && proc_array[i]->exit_code) + break; + } + + /* wait for someone to exit */ + if (!fake_exits_pending) { + retval = process_wait_for_multiple_objects(proc_index, handles, FALSE, (block ? INFINITE : 0)); + which = retval - WAIT_OBJECT_0; + } else { + fake_exits_pending--; + retval = !WAIT_FAILED; + which = i; + } + + /* If the pointer is not NULL, set the wait status result variable. */ + if (pdwWaitStatus) + *pdwWaitStatus = (retval == GMAKE_WAIT_TIMEOUT) ? WAIT_TIMEOUT : retval; + + /* return pointer to process */ + if ((retval == GMAKE_WAIT_TIMEOUT) || (retval == WAIT_FAILED)) { + return NULL; + } + else { + sub_process* pproc = proc_array[which]; + process_adjust_wait_state(pproc); + return pproc; + } +} + +/* + * Terminate a process. + */ +BOOL +process_kill(HANDLE proc, int signal) +{ + sub_process* pproc = (sub_process*) proc; + pproc->signal = signal; + return (TerminateProcess((HANDLE) pproc->pid, signal)); +} + +/* + * Returns true when we have no more available slots in our process table. + */ +BOOL +process_table_full() +{ + extern int shell_function_pid; + + /* Reserve slots for jobserver_semaphore if we have one and the shell function if not active */ + return(proc_index >= GMAKE_MAXIMUM_WAIT_OBJECTS - jobserver_enabled() - (shell_function_pid == 0)); +} + +/* + * Returns the maximum number of job slots we can support when using the jobserver. + */ +int +process_table_usable_size() +{ + /* Reserve slots for jobserver_semaphore and shell function */ + return(GMAKE_MAXIMUM_WAIT_OBJECTS - 2); +} + +/* + * Returns the actual size of the process table. + */ +int +process_table_actual_size() +{ + return(GMAKE_MAXIMUM_WAIT_OBJECTS); +} + +/* + * Use this function to register processes you wish to wait for by + * calling process_file_io(NULL) or process_wait_any(). This must be done + * because it is possible for callers of this library to reuse the same + * handle for multiple processes launches :-( + */ +void +process_register(HANDLE proc) +{ + assert(proc_index < GMAKE_MAXIMUM_WAIT_OBJECTS); + proc_array[proc_index++] = (sub_process *) proc; +} + +/* + * Public function which works kind of like waitpid(). Wait for any + * of the children to die and return results. To call this function, + * you must do 1 of things: + * + * x = process_easy(...); + * + * or + * + * x = process_init_fd(); + * process_register(x); + * + * or + * + * x = process_init(); + * process_register(x); + * + * You must NOT then call process_pipe_io() because this function is + * not capable of handling automatic notification of any child + * death. + */ + +HANDLE +process_wait_for_any(int block, DWORD* pdwWaitStatus) +{ + sub_process* pproc = process_wait_for_any_private(block, pdwWaitStatus); + + if (!pproc) + return NULL; + else { + /* + * Ouch! can't tell caller if this fails directly. Caller + * will have to use process_last_err() + */ + (void) process_file_io(pproc); + return ((HANDLE) pproc); + } +} + +long +process_signal(HANDLE proc) +{ + if (proc == INVALID_HANDLE_VALUE) return 0; + return (((sub_process *)proc)->signal); +} + +long +process_last_err(HANDLE proc) +{ + if (proc == INVALID_HANDLE_VALUE) return ERROR_INVALID_HANDLE; + return (((sub_process *)proc)->last_err); +} + +long +process_exit_code(HANDLE proc) +{ + if (proc == INVALID_HANDLE_VALUE) return EXIT_FAILURE; + return (((sub_process *)proc)->exit_code); +} + +/* +2006-02: +All the following functions are currently unused. +All of them would crash gmake if called with argument INVALID_HANDLE_VALUE. +Hence whoever wants to use one of this functions must invent and implement +a reasonable error handling for this function. + +char * +process_outbuf(HANDLE proc) +{ + return (((sub_process *)proc)->outp); +} + +char * +process_errbuf(HANDLE proc) +{ + return (((sub_process *)proc)->errp); +} + +int +process_outcnt(HANDLE proc) +{ + return (((sub_process *)proc)->outcnt); +} + +int +process_errcnt(HANDLE proc) +{ + return (((sub_process *)proc)->errcnt); +} + +void +process_pipes(HANDLE proc, int pipes[3]) +{ + pipes[0] = ((sub_process *)proc)->sv_stdin[0]; + pipes[1] = ((sub_process *)proc)->sv_stdout[0]; + pipes[2] = ((sub_process *)proc)->sv_stderr[0]; + return; +} +*/ + + HANDLE +process_init() +{ + sub_process *pproc; + /* + * open file descriptors for attaching stdin/stdout/sterr + */ + HANDLE stdin_pipes[2]; + HANDLE stdout_pipes[2]; + HANDLE stderr_pipes[2]; + SECURITY_ATTRIBUTES inherit; + BYTE sd[SECURITY_DESCRIPTOR_MIN_LENGTH]; + + pproc = malloc(sizeof(*pproc)); + memset(pproc, 0, sizeof(*pproc)); + + /* We can't use NULL for lpSecurityDescriptor because that + uses the default security descriptor of the calling process. + Instead we use a security descriptor with no DACL. This + allows nonrestricted access to the associated objects. */ + + if (!InitializeSecurityDescriptor((PSECURITY_DESCRIPTOR)(&sd), + SECURITY_DESCRIPTOR_REVISION)) { + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + return((HANDLE)pproc); + } + + inherit.nLength = sizeof(inherit); + inherit.lpSecurityDescriptor = (PSECURITY_DESCRIPTOR)(&sd); + inherit.bInheritHandle = TRUE; + + /* By convention, parent gets pipe[0], and child gets pipe[1]. + This means the READ side of stdin pipe goes into pipe[1] and the + WRITE side of the stdout and stderr pipes go into pipe[1]. */ + if (CreatePipe( &stdin_pipes[1], &stdin_pipes[0], &inherit, 0) == FALSE || + CreatePipe( &stdout_pipes[0], &stdout_pipes[1], &inherit, 0) == FALSE || + CreatePipe( &stderr_pipes[0], &stderr_pipes[1], &inherit, 0) == FALSE) { + + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + return((HANDLE)pproc); + } + + /* Mark the parent sides of the pipes as non-inheritable. */ + if (SetHandleInformation(stdin_pipes[0], + HANDLE_FLAG_INHERIT, 0) == FALSE || + SetHandleInformation(stdout_pipes[0], + HANDLE_FLAG_INHERIT, 0) == FALSE || + SetHandleInformation(stderr_pipes[0], + HANDLE_FLAG_INHERIT, 0) == FALSE) { + + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + return((HANDLE)pproc); + } + pproc->sv_stdin[0] = (intptr_t) stdin_pipes[0]; + pproc->sv_stdin[1] = (intptr_t) stdin_pipes[1]; + pproc->sv_stdout[0] = (intptr_t) stdout_pipes[0]; + pproc->sv_stdout[1] = (intptr_t) stdout_pipes[1]; + pproc->sv_stderr[0] = (intptr_t) stderr_pipes[0]; + pproc->sv_stderr[1] = (intptr_t) stderr_pipes[1]; + + pproc->using_pipes = 1; + + pproc->lerrno = 0; + + return((HANDLE)pproc); +} + + + HANDLE +process_init_fd(HANDLE stdinh, HANDLE stdouth, HANDLE stderrh) +{ + sub_process *pproc; + + pproc = malloc(sizeof(*pproc)); + if (pproc) { + memset(pproc, 0, sizeof(*pproc)); + + /* + * Just pass the provided file handles to the 'child + * side' of the pipe, bypassing pipes altogether. + */ + pproc->sv_stdin[1] = (intptr_t) stdinh; + pproc->sv_stdout[1] = (intptr_t) stdouth; + pproc->sv_stderr[1] = (intptr_t) stderrh; + + pproc->last_err = pproc->lerrno = 0; + } + + return((HANDLE)pproc); +} + + +static HANDLE +find_file(const char *exec_path, const char *path_var, + char *full_fname, DWORD full_len) +{ + HANDLE exec_handle; + char *fname; + char *ext; + DWORD req_len; + int i; + static const char *extensions[] = + /* Should .com come before no-extension case? */ + { ".exe", ".cmd", ".bat", "", ".com", NULL }; + + fname = xmalloc(strlen(exec_path) + 5); + strcpy(fname, exec_path); + ext = fname + strlen(fname); + + for (i = 0; extensions[i]; i++) { + strcpy(ext, extensions[i]); + if (((req_len = SearchPath (path_var, fname, NULL, full_len, + full_fname, NULL)) > 0 + /* For compatibility with previous code, which + used OpenFile, and with Windows operation in + general, also look in various default + locations, such as Windows directory and + Windows System directory. Warning: this also + searches PATH in the Make's environment, which + might not be what the Makefile wants, but it + seems to be OK as a fallback, after the + previous SearchPath failed to find on child's + PATH. */ + || (req_len = SearchPath (NULL, fname, NULL, full_len, + full_fname, NULL)) > 0) + && req_len <= full_len + && (exec_handle = + CreateFile(full_fname, + GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL)) != INVALID_HANDLE_VALUE) { + free(fname); + return(exec_handle); + } + } + + free(fname); + return INVALID_HANDLE_VALUE; +} + +/* + * Return non-zero of FNAME specifies a batch file and its name + * includes embedded whitespace. + */ + +static int +batch_file_with_spaces(const char *fname) +{ + size_t fnlen = strlen(fname); + + return (fnlen > 4 + && (_strnicmp(fname + fnlen - 4, ".bat", 4) == 0 + || _strnicmp(fname + fnlen - 4, ".cmd", 4) == 0) + /* The set of characters in the 2nd arg to strpbrk + should be the same one used by make_command_line + below to decide whether an argv[] element needs + quoting. */ + && strpbrk(fname, " \t") != NULL); +} + + +/* + * Description: Create the child process to be helped + * + * Returns: success <=> 0 + * + * Notes/Dependencies: + */ +long +process_begin( + HANDLE proc, + char **argv, + char **envp, + char *exec_path, + char *as_user) +{ + sub_process *pproc = (sub_process *)proc; + char *shell_name = 0; + int file_not_found=0; + HANDLE exec_handle; + char exec_fname[MAX_PATH]; + const char *path_var = NULL; + char **ep; + char buf[MAX_PATH]; + DWORD bytes_returned; + DWORD flags; + char *command_line; + STARTUPINFO startInfo; + PROCESS_INFORMATION procInfo; + char *envblk=NULL; + size_t envsize_needed = 0; + int pass_null_exec_path = 0; + + /* + * Shell script detection... if the exec_path starts with #! then + * we want to exec shell-script-name exec-path, not just exec-path + * NT doesn't recognize #!/bin/sh or #!/etc/Tivoli/bin/perl. We do not + * hard-code the path to the shell or perl or whatever: Instead, we + * assume it's in the path somewhere (generally, the NT tools + * bin directory) + */ + + /* Use the Makefile's value of PATH to look for the program to + execute, because it could be different from Make's PATH + (e.g., if the target sets its own value. */ + if (envp) + for (ep = envp; *ep; ep++) { + if (strncmp (*ep, "PATH=", 5) == 0 + || strncmp (*ep, "Path=", 5) == 0) { + path_var = *ep + 5; + break; + } + } + exec_handle = find_file(exec_path, path_var, + exec_fname, sizeof(exec_fname)); + + /* + * If we couldn't open the file, just assume that Windows will be + * somehow able to find and execute it. If the first character + * of the command is '/', assume they set SHELL to a Unixy shell + * that have some magic mounts known only to it, and run the whole + * command via $SHELL -c "COMMAND" instead. + */ + if (exec_handle == INVALID_HANDLE_VALUE) { + if (exec_path[0] == '/') { + char *new_argv0; + char **argvi = argv; + size_t arglen = 0; + + strcpy(buf, variable_expand ("$(SHELL)")); + shell_name = &buf[0]; + strcpy(exec_fname, "-c"); + /* Construct a single command string in argv[0]. */ + while (*argvi) { + arglen += strlen(*argvi) + 1; + argvi++; + } + new_argv0 = xmalloc(arglen + 1); + new_argv0[0] = '\0'; + for (argvi = argv; *argvi; argvi++) { + strcat(new_argv0, *argvi); + strcat(new_argv0, " "); + } + /* Remove the extra blank at the end. */ + new_argv0[arglen-1] = '\0'; + free(argv[0]); + argv[0] = new_argv0; + argv[1] = NULL; + } + else + file_not_found++; + } + else { + /* Attempt to read the first line of the file */ + if (ReadFile( exec_handle, + buf, sizeof(buf) - 1, /* leave room for trailing NULL */ + &bytes_returned, 0) == FALSE || bytes_returned < 2) { + + pproc->last_err = GetLastError(); + pproc->lerrno = E_IO; + CloseHandle(exec_handle); + return(-1); + } + if (buf[0] == '#' && buf[1] == '!') { + /* + * This is a shell script... Change the command line from + * exec_path args to shell_name exec_path args + */ + char *p; + + /* Make sure buf is NULL terminated */ + buf[bytes_returned] = 0; + /* + * Depending on the file system type, etc. the first line + * of the shell script may end with newline or newline-carriage-return + * Whatever it ends with, cut it off. + */ + p= strchr(buf, '\n'); + if (p) + *p = 0; + p = strchr(buf, '\r'); + if (p) + *p = 0; + + /* + * Find base name of shell + */ + shell_name = strrchr( buf, '/'); + if (shell_name) { + shell_name++; + } else { + shell_name = &buf[2];/* skipping "#!" */ + } + + } + CloseHandle(exec_handle); + } + + flags = 0; + + if (file_not_found) + command_line = make_command_line( shell_name, exec_path, argv); + else { + /* If exec_fname includes whitespace, CreateProcess + behaves erratically and unreliably, and often fails + if argv[0] also includes whitespace (and thus will + be quoted by make_command_line below). So in that + case, we don't pass exec_fname as the 1st arg to + CreateProcess, but instead replace argv[0] with + exec_fname (to keep its leading directories and + extension as found by find_file), and pass NULL to + CreateProcess as its 1st arg. This works around + the bugs in CreateProcess, which are probably + caused by its passing the command to cmd.exe with + some incorrect quoting. */ + if (!shell_name + && batch_file_with_spaces(exec_fname) + && _stricmp(exec_path, argv[0]) == 0) { + char *new_argv, *p; + char **argvi; + size_t arglen; + int i; + pass_null_exec_path = 1; + /* Rewrite argv[] replacing argv[0] with exec_fname. */ + for (argvi = argv + 1, arglen = strlen(exec_fname) + 1; + *argvi; + argvi++) { + arglen += strlen(*argvi) + 1; + } + new_argv = xmalloc(arglen); + p = strcpy(new_argv, exec_fname) + strlen(exec_fname) + 1; + for (argvi = argv + 1, i = 1; *argvi; argvi++, i++) { + strcpy(p, *argvi); + argv[i] = p; + p += strlen(*argvi) + 1; + } + argv[i] = NULL; + free (argv[0]); + argv[0] = new_argv; + } + command_line = make_command_line( shell_name, exec_fname, argv); + } + + if ( command_line == NULL ) { + pproc->last_err = 0; + pproc->lerrno = E_NO_MEM; + return(-1); + } + + if (envp) { + if (arr2envblk(envp, &envblk, &envsize_needed) == FALSE) { + pproc->lerrno = E_NO_MEM; + free( command_line ); + if ((pproc->last_err == ERROR_INVALID_PARAMETER + || pproc->last_err == ERROR_MORE_DATA) + && envsize_needed > 32*1024) { + fprintf (stderr, "CreateProcess failed, probably because environment is too large (%Iu bytes).\n", + envsize_needed); + } + pproc->last_err = 0; + return(-1); + } + } + + if (shell_name || file_not_found || pass_null_exec_path) { + exec_path = 0; /* Search for the program in %Path% */ + } else { + exec_path = exec_fname; + } + + /* + * Set up inherited stdin, stdout, stderr for child + */ + memset(&startInfo, '\0', sizeof(startInfo)); + GetStartupInfo(&startInfo); + startInfo.dwFlags = STARTF_USESTDHANDLES; + startInfo.lpReserved = 0; + startInfo.cbReserved2 = 0; + startInfo.lpReserved2 = 0; + startInfo.hStdInput = (HANDLE)pproc->sv_stdin[1]; + startInfo.hStdOutput = (HANDLE)pproc->sv_stdout[1]; + startInfo.hStdError = (HANDLE)pproc->sv_stderr[1]; + + if (as_user) { + free(envblk); + return -1; + } else { + DB (DB_JOBS, ("CreateProcess(%s,%s,...)\n", + exec_path ? exec_path : "NULL", + command_line ? command_line : "NULL")); + if (CreateProcess( + exec_path, + command_line, + NULL, + 0, /* default security attributes for thread */ + TRUE, /* inherit handles (e.g. helper pipes, oserv socket) */ + flags, + envblk, + 0, /* default starting directory */ + &startInfo, + &procInfo) == FALSE) { + + pproc->last_err = GetLastError(); + pproc->lerrno = E_FORK; + fprintf(stderr, "process_begin: CreateProcess(%s, %s, ...) failed.\n", + exec_path ? exec_path : "NULL", command_line); + free(envblk); + free( command_line ); + return(-1); + } + } + + pproc->pid = (pid_t)procInfo.hProcess; + /* Close the thread handle -- we'll just watch the process */ + CloseHandle(procInfo.hThread); + + /* Close the halves of the pipes we don't need */ + if ((HANDLE)pproc->sv_stdin[1] != INVALID_HANDLE_VALUE) + CloseHandle((HANDLE)pproc->sv_stdin[1]); + if ((HANDLE)pproc->sv_stdout[1] != INVALID_HANDLE_VALUE) + CloseHandle((HANDLE)pproc->sv_stdout[1]); + if ((HANDLE)pproc->sv_stderr[1] != INVALID_HANDLE_VALUE) + CloseHandle((HANDLE)pproc->sv_stderr[1]); + pproc->sv_stdin[1] = 0; + pproc->sv_stdout[1] = 0; + pproc->sv_stderr[1] = 0; + + free( command_line ); + free(envblk); + pproc->lerrno=0; + return 0; +} + + + +#if 0 /* unused */ +static DWORD +proc_stdin_thread(sub_process *pproc) +{ + DWORD in_done; + for (;;) { + if (WriteFile( (HANDLE) pproc->sv_stdin[0], pproc->inp, pproc->incnt, + &in_done, NULL) == FALSE) + _endthreadex(0); + /* This if should never be true for anonymous pipes, but gives + us a chance to change I/O mechanisms later. */ + if (in_done < pproc->incnt) { + pproc->incnt -= in_done; + pproc->inp += in_done; + } else { + _endthreadex(0); + } + } + return 0; /* for compiler warnings only.. not reached. */ +} + +static DWORD +proc_stdout_thread(sub_process *pproc) +{ + DWORD bufsize = 1024; + char c; + DWORD nread; + pproc->outp = malloc(bufsize); + if (pproc->outp == NULL) + _endthreadex(0); + pproc->outcnt = 0; + + for (;;) { + if (ReadFile( (HANDLE)pproc->sv_stdout[0], &c, 1, &nread, NULL) + == FALSE) { +/* map_windows32_error_to_string(GetLastError());*/ + _endthreadex(0); + } + if (nread == 0) + _endthreadex(0); + if (pproc->outcnt + nread > bufsize) { + bufsize += nread + 512; + pproc->outp = realloc(pproc->outp, bufsize); + if (pproc->outp == NULL) { + pproc->outcnt = 0; + _endthreadex(0); + } + } + pproc->outp[pproc->outcnt++] = c; + } + return 0; +} + +static DWORD +proc_stderr_thread(sub_process *pproc) +{ + DWORD bufsize = 1024; + char c; + DWORD nread; + pproc->errp = malloc(bufsize); + if (pproc->errp == NULL) + _endthreadex(0); + pproc->errcnt = 0; + + for (;;) { + if (ReadFile( (HANDLE)pproc->sv_stderr[0], &c, 1, &nread, NULL) == FALSE) { + map_windows32_error_to_string(GetLastError()); + _endthreadex(0); + } + if (nread == 0) + _endthreadex(0); + if (pproc->errcnt + nread > bufsize) { + bufsize += nread + 512; + pproc->errp = realloc(pproc->errp, bufsize); + if (pproc->errp == NULL) { + pproc->errcnt = 0; + _endthreadex(0); + } + } + pproc->errp[pproc->errcnt++] = c; + } + return 0; +} + + +/* + * Purpose: collects output from child process and returns results + * + * Description: + * + * Returns: + * + * Notes/Dependencies: + */ + long +process_pipe_io( + HANDLE proc, + char *stdin_data, + int stdin_data_len) +{ + sub_process *pproc = (sub_process *)proc; + bool_t stdin_eof = FALSE, stdout_eof = FALSE, stderr_eof = FALSE; + HANDLE childhand = (HANDLE) pproc->pid; + HANDLE tStdin = NULL, tStdout = NULL, tStderr = NULL; + unsigned int dwStdin, dwStdout, dwStderr; + HANDLE wait_list[4]; + DWORD wait_count; + DWORD wait_return; + HANDLE ready_hand; + bool_t child_dead = FALSE; + BOOL GetExitCodeResult; + + /* + * Create stdin thread, if needed + */ + pproc->inp = stdin_data; + pproc->incnt = stdin_data_len; + if (!pproc->inp) { + stdin_eof = TRUE; + CloseHandle((HANDLE)pproc->sv_stdin[0]); + pproc->sv_stdin[0] = 0; + } else { + tStdin = (HANDLE) _beginthreadex( 0, 1024, + (unsigned (__stdcall *) (void *))proc_stdin_thread, + pproc, 0, &dwStdin); + if (tStdin == 0) { + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + goto done; + } + } + + /* + * Assume child will produce stdout and stderr + */ + tStdout = (HANDLE) _beginthreadex( 0, 1024, + (unsigned (__stdcall *) (void *))proc_stdout_thread, pproc, 0, + &dwStdout); + tStderr = (HANDLE) _beginthreadex( 0, 1024, + (unsigned (__stdcall *) (void *))proc_stderr_thread, pproc, 0, + &dwStderr); + + if (tStdout == 0 || tStderr == 0) { + + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + goto done; + } + + + /* + * Wait for all I/O to finish and for the child process to exit + */ + + while (!stdin_eof || !stdout_eof || !stderr_eof || !child_dead) { + wait_count = 0; + if (!stdin_eof) { + wait_list[wait_count++] = tStdin; + } + if (!stdout_eof) { + wait_list[wait_count++] = tStdout; + } + if (!stderr_eof) { + wait_list[wait_count++] = tStderr; + } + if (!child_dead) { + wait_list[wait_count++] = childhand; + } + + wait_return = WaitForMultipleObjects(wait_count, wait_list, + FALSE, /* don't wait for all: one ready will do */ + child_dead? 1000 :INFINITE); /* after the child dies, subthreads have + one second to collect all remaining output */ + + if (wait_return == WAIT_FAILED) { +/* map_windows32_error_to_string(GetLastError());*/ + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + goto done; + } + + ready_hand = wait_list[wait_return - WAIT_OBJECT_0]; + + if (ready_hand == tStdin) { + CloseHandle((HANDLE)pproc->sv_stdin[0]); + pproc->sv_stdin[0] = 0; + CloseHandle(tStdin); + tStdin = 0; + stdin_eof = TRUE; + + } else if (ready_hand == tStdout) { + + CloseHandle((HANDLE)pproc->sv_stdout[0]); + pproc->sv_stdout[0] = 0; + CloseHandle(tStdout); + tStdout = 0; + stdout_eof = TRUE; + + } else if (ready_hand == tStderr) { + + CloseHandle((HANDLE)pproc->sv_stderr[0]); + pproc->sv_stderr[0] = 0; + CloseHandle(tStderr); + tStderr = 0; + stderr_eof = TRUE; + + } else if (ready_hand == childhand) { + + DWORD ierr; + GetExitCodeResult = GetExitCodeProcess(childhand, &ierr); + if (ierr == CONTROL_C_EXIT) { + pproc->signal = SIGINT; + } else { + pproc->exit_code = ierr; + } + if (GetExitCodeResult == FALSE) { + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + goto done; + } + child_dead = TRUE; + + } else { + + /* ?? Got back a handle we didn't query ?? */ + pproc->last_err = 0; + pproc->lerrno = E_FAIL; + goto done; + } + } + + done: + if (tStdin != 0) + CloseHandle(tStdin); + if (tStdout != 0) + CloseHandle(tStdout); + if (tStderr != 0) + CloseHandle(tStderr); + + if (pproc->lerrno) + return(-1); + else + return(0); + +} +#endif /* unused */ + +/* + * Purpose: collects output from child process and returns results + * + * Description: + * + * Returns: + * + * Notes/Dependencies: + */ + long +process_file_io( + HANDLE proc) +{ + sub_process *pproc; + HANDLE childhand; + DWORD wait_return; + BOOL GetExitCodeResult; + DWORD ierr; + + if (proc == NULL) + pproc = process_wait_for_any_private(1, 0); + else + pproc = (sub_process *)proc; + + /* some sort of internal error */ + if (!pproc) + return -1; + + childhand = (HANDLE) pproc->pid; + + /* + * This function is poorly named, and could also be used just to wait + * for child death if you're doing your own pipe I/O. If that is + * the case, close the pipe handles here. + */ + if (pproc->sv_stdin[0]) { + CloseHandle((HANDLE)pproc->sv_stdin[0]); + pproc->sv_stdin[0] = 0; + } + if (pproc->sv_stdout[0]) { + CloseHandle((HANDLE)pproc->sv_stdout[0]); + pproc->sv_stdout[0] = 0; + } + if (pproc->sv_stderr[0]) { + CloseHandle((HANDLE)pproc->sv_stderr[0]); + pproc->sv_stderr[0] = 0; + } + + /* + * Wait for the child process to exit + */ + + wait_return = WaitForSingleObject(childhand, INFINITE); + + if (wait_return != WAIT_OBJECT_0) { +/* map_windows32_error_to_string(GetLastError());*/ + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + goto done2; + } + + GetExitCodeResult = GetExitCodeProcess(childhand, &ierr); + if (ierr == CONTROL_C_EXIT) { + pproc->signal = SIGINT; + } else { + pproc->exit_code = ierr; + } + if (GetExitCodeResult == FALSE) { + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + } + +done2: + if (pproc->lerrno) + return(-1); + else + return(0); + +} + +/* + * Description: Clean up any leftover handles, etc. It is up to the + * caller to manage and free the input, output, and stderr buffers. + */ + void +process_cleanup( + HANDLE proc) +{ + sub_process *pproc = (sub_process *)proc; + int i; + + if (pproc->using_pipes) { + for (i= 0; i <= 1; i++) { + if ((HANDLE)pproc->sv_stdin[i] + && (HANDLE)pproc->sv_stdin[i] != INVALID_HANDLE_VALUE) + CloseHandle((HANDLE)pproc->sv_stdin[i]); + if ((HANDLE)pproc->sv_stdout[i] + && (HANDLE)pproc->sv_stdout[i] != INVALID_HANDLE_VALUE) + CloseHandle((HANDLE)pproc->sv_stdout[i]); + if ((HANDLE)pproc->sv_stderr[i] + && (HANDLE)pproc->sv_stderr[i] != INVALID_HANDLE_VALUE) + CloseHandle((HANDLE)pproc->sv_stderr[i]); + } + } + if ((HANDLE)pproc->pid) + CloseHandle((HANDLE)pproc->pid); + + free(pproc); +} + + +/* + * Description: + * Create a command line buffer to pass to CreateProcess + * + * Returns: the buffer or NULL for failure + * Shell case: sh_name a:/full/path/to/script argv[1] argv[2] ... + * Otherwise: argv[0] argv[1] argv[2] ... + * + * Notes/Dependencies: + * CreateProcess does not take an argv, so this command creates a + * command line for the executable. + */ + +static char * +make_command_line( char *shell_name, char *full_exec_path, char **argv) +{ + int argc = 0; + char** argvi; + int* enclose_in_quotes = NULL; + int* enclose_in_quotes_i; + size_t bytes_required = 0; + char* command_line; + char* command_line_i; + int have_sh = 0; /* HAVE_CYGWIN_SHELL */ + int cygwin_mode = 0; /* HAVE_CYGWIN_SHELL */ + +#ifdef HAVE_CYGWIN_SHELL + cygwin_mode = 1; +#endif + + if (shell_name && full_exec_path) { + have_sh = cygwin_mode && strstr(full_exec_path, "sh.exe"); + bytes_required + = strlen(shell_name) + 1 + strlen(full_exec_path); + /* + * Skip argv[0] if any, when shell_name is given. + * The special case of "-c" in full_exec_path means + * argv[0] is not the shell name, but the command string + * to pass to the shell. + */ + if (*argv && strcmp(full_exec_path, "-c")) argv++; + /* + * Add one for the intervening space. + */ + if (*argv) bytes_required++; + } + + argvi = argv; + while (*(argvi++)) argc++; + + if (argc) { + enclose_in_quotes = (int*) calloc(1, argc * sizeof(int)); + + if (!enclose_in_quotes) { + return NULL; + } + } + + /* We have to make one pass through each argv[i] to see if we need + * to enclose it in ", so we might as well figure out how much + * memory we'll need on the same pass. + */ + + argvi = argv; + enclose_in_quotes_i = enclose_in_quotes; + while(*argvi) { + char* p = *argvi; + unsigned int backslash_count = 0; + + /* + * We have to enclose empty arguments in ". + */ + if (!(*p)) *enclose_in_quotes_i = 1; + + while(*p) { + switch (*p) { + case '\"': + /* + * We have to insert a backslash for each " + * and each \ that precedes the ". + */ + bytes_required += (backslash_count + 1); + backslash_count = 0; + break; + +#if !defined(HAVE_MKS_SHELL) && !defined(HAVE_CYGWIN_SHELL) + case '\\': + backslash_count++; + break; +#endif + /* + * At one time we set *enclose_in_quotes_i for '*' or '?' to suppress + * wildcard expansion in programs linked with MSVC's SETARGV.OBJ so + * that argv in always equals argv out. This was removed. Say you have + * such a program named glob.exe. You enter + * glob '*' + * at the sh command prompt. Obviously the intent is to make glob do the + * wildcarding instead of sh. If we set *enclose_in_quotes_i for '*' or '?', + * then the command line that glob would see would be + * glob "*" + * and the _setargv in SETARGV.OBJ would _not_ expand the *. + */ + case ' ': + case '\t': + *enclose_in_quotes_i = 1; + /* fall through */ + + default: + backslash_count = 0; + break; + } + + /* + * Add one for each character in argv[i]. + */ + bytes_required++; + + p++; + } + + if (*enclose_in_quotes_i) { + /* + * Add one for each enclosing ", + * and one for each \ that precedes the + * closing ". + */ + bytes_required += (backslash_count + 2); + } + + /* + * Add one for the intervening space. + */ + if (*(++argvi)) bytes_required++; + enclose_in_quotes_i++; + } + + /* + * Add one for the terminating NULL. + */ + bytes_required++; + + command_line = (char*) malloc(bytes_required); + + if (!command_line) { + free(enclose_in_quotes); + return NULL; + } + + command_line_i = command_line; + + if (shell_name && full_exec_path) { + while(*shell_name) { + *(command_line_i++) = *(shell_name++); + } + + *(command_line_i++) = ' '; + + while(*full_exec_path) { + *(command_line_i++) = *(full_exec_path++); + } + + if (*argv) { + *(command_line_i++) = ' '; + } + } + + argvi = argv; + enclose_in_quotes_i = enclose_in_quotes; + + while(*argvi) { + char* p = *argvi; + unsigned int backslash_count = 0; + + if (*enclose_in_quotes_i) { + *(command_line_i++) = '\"'; + } + + while(*p) { + if (*p == '\"') { + if (cygwin_mode && have_sh) { /* HAVE_CYGWIN_SHELL */ + /* instead of a \", cygwin likes "" */ + *(command_line_i++) = '\"'; + } else { + + /* + * We have to insert a backslash for the " + * and each \ that precedes the ". + */ + backslash_count++; + + while(backslash_count) { + *(command_line_i++) = '\\'; + backslash_count--; + }; + } +#if !defined(HAVE_MKS_SHELL) && !defined(HAVE_CYGWIN_SHELL) + } else if (*p == '\\') { + backslash_count++; + } else { + backslash_count = 0; +#endif + } + + /* + * Copy the character. + */ + *(command_line_i++) = *(p++); + } + + if (*enclose_in_quotes_i) { +#if !defined(HAVE_MKS_SHELL) && !defined(HAVE_CYGWIN_SHELL) + /* + * Add one \ for each \ that precedes the + * closing ". + */ + while(backslash_count--) { + *(command_line_i++) = '\\'; + }; +#endif + *(command_line_i++) = '\"'; + } + + /* + * Append an intervening space. + */ + if (*(++argvi)) { + *(command_line_i++) = ' '; + } + + enclose_in_quotes_i++; + } + + /* + * Append the terminating NULL. + */ + *command_line_i = '\0'; + + free(enclose_in_quotes); + return command_line; +} + +/* + * Description: Given an argv and optional envp, launch the process + * using the default stdin, stdout, and stderr handles. + * Also, register process so that process_wait_for_any_private() + * can be used via process_file_io(NULL) or + * process_wait_for_any(). + * + * Returns: + * + * Notes/Dependencies: + */ +HANDLE +process_easy( + char **argv, + char **envp, + int outfd, + int errfd) +{ + HANDLE hIn = INVALID_HANDLE_VALUE; + HANDLE hOut = INVALID_HANDLE_VALUE; + HANDLE hErr = INVALID_HANDLE_VALUE; + HANDLE hProcess, tmpIn, tmpOut, tmpErr; + DWORD e; + + if (process_table_full()) { + DB (DB_JOBS, ("process_easy: All process slots used up\n")); + return INVALID_HANDLE_VALUE; + } + /* Standard handles returned by GetStdHandle can be NULL or + INVALID_HANDLE_VALUE if the parent process closed them. If that + happens, we open the null device and pass its handle to + CreateProcess as the corresponding handle to inherit. */ + tmpIn = GetStdHandle(STD_INPUT_HANDLE); + if (DuplicateHandle(GetCurrentProcess(), + tmpIn, + GetCurrentProcess(), + &hIn, + 0, + TRUE, + DUPLICATE_SAME_ACCESS) == FALSE) { + if ((e = GetLastError()) == ERROR_INVALID_HANDLE) { + tmpIn = CreateFile("NUL", GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (tmpIn != INVALID_HANDLE_VALUE + && DuplicateHandle(GetCurrentProcess(), + tmpIn, + GetCurrentProcess(), + &hIn, + 0, + TRUE, + DUPLICATE_SAME_ACCESS) == FALSE) + CloseHandle(tmpIn); + } + if (hIn == INVALID_HANDLE_VALUE) { + fprintf(stderr, "process_easy: DuplicateHandle(In) failed (e=%ld)\n", e); + return INVALID_HANDLE_VALUE; + } + } + if (outfd >= 0) + tmpOut = (HANDLE)_get_osfhandle (outfd); + else + tmpOut = GetStdHandle (STD_OUTPUT_HANDLE); + if (DuplicateHandle(GetCurrentProcess(), + tmpOut, + GetCurrentProcess(), + &hOut, + 0, + TRUE, + DUPLICATE_SAME_ACCESS) == FALSE) { + if ((e = GetLastError()) == ERROR_INVALID_HANDLE) { + tmpOut = CreateFile("NUL", GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (tmpOut != INVALID_HANDLE_VALUE + && DuplicateHandle(GetCurrentProcess(), + tmpOut, + GetCurrentProcess(), + &hOut, + 0, + TRUE, + DUPLICATE_SAME_ACCESS) == FALSE) + CloseHandle(tmpOut); + } + if (hOut == INVALID_HANDLE_VALUE) { + fprintf(stderr, "process_easy: DuplicateHandle(Out) failed (e=%ld)\n", e); + return INVALID_HANDLE_VALUE; + } + } + if (errfd >= 0) + tmpErr = (HANDLE)_get_osfhandle (errfd); + else + tmpErr = GetStdHandle(STD_ERROR_HANDLE); + if (DuplicateHandle(GetCurrentProcess(), + tmpErr, + GetCurrentProcess(), + &hErr, + 0, + TRUE, + DUPLICATE_SAME_ACCESS) == FALSE) { + if ((e = GetLastError()) == ERROR_INVALID_HANDLE) { + tmpErr = CreateFile("NUL", GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (tmpErr != INVALID_HANDLE_VALUE + && DuplicateHandle(GetCurrentProcess(), + tmpErr, + GetCurrentProcess(), + &hErr, + 0, + TRUE, + DUPLICATE_SAME_ACCESS) == FALSE) + CloseHandle(tmpErr); + } + if (hErr == INVALID_HANDLE_VALUE) { + fprintf(stderr, "process_easy: DuplicateHandle(Err) failed (e=%ld)\n", e); + return INVALID_HANDLE_VALUE; + } + } + + hProcess = process_init_fd(hIn, hOut, hErr); + + if (process_begin(hProcess, argv, envp, argv[0], NULL)) { + fake_exits_pending++; + /* process_begin() failed: make a note of that. */ + if (!((sub_process*) hProcess)->last_err) + ((sub_process*) hProcess)->last_err = -1; + ((sub_process*) hProcess)->exit_code = process_last_err(hProcess); + + /* close up unused handles */ + if (hIn != INVALID_HANDLE_VALUE) + CloseHandle(hIn); + if (hOut != INVALID_HANDLE_VALUE) + CloseHandle(hOut); + if (hErr != INVALID_HANDLE_VALUE) + CloseHandle(hErr); + } + + process_register(hProcess); + + return hProcess; +} diff --git a/local/recipes/dev/gnu-make/source/src/w32/subproc/w32err.c b/local/recipes/dev/gnu-make/source/src/w32/subproc/w32err.c new file mode 100644 index 0000000000..eb201034fd --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/subproc/w32err.c @@ -0,0 +1,85 @@ +/* Error handling for Windows +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include +#include +#include "makeint.h" +#include "w32err.h" + +/* + * Description: the windows32 version of perror() + * + * Returns: a pointer to a static error + * + * Notes/Dependencies: I got this from + * comp.os.ms-windows.programmer.win32 + */ +const char * +map_windows32_error_to_string (DWORD ercode) { +/* + * We used to have an MSVC-specific '__declspec (thread)' qualifier + * here, with the following comment: + * + * __declspec (thread) necessary if you will use multiple threads on MSVC + * + * However, Make was never multithreaded on Windows (except when + * Ctrl-C is hit, in which case the main thread is stopped + * immediately, so it doesn't matter in this context). The functions + * on sub_proc.c that started and stopped additional threads were + * never used, and are now #ifdef'ed away. Until we need more than + * one thread, we have no problems with the following buffer being + * static. (If and when we do need it to be in thread-local storage, + * the corresponding GCC qualifier is '__thread'.) + */ + static char szMessageBuffer[128]; + /* Fill message buffer with a default message in + * case FormatMessage fails + */ + wsprintf (szMessageBuffer, "Error %ld\n", ercode); + + /* + * Special code for winsock error handling. + */ + if (ercode > WSABASEERR) { +#if 0 + HMODULE hModule = GetModuleHandle("wsock32"); + if (hModule != NULL) { + FormatMessage(FORMAT_MESSAGE_FROM_HMODULE, + hModule, + ercode, + LANG_NEUTRAL, + szMessageBuffer, + sizeof(szMessageBuffer), + NULL); + FreeLibrary(hModule); + } +#else + O (fatal, NILF, szMessageBuffer); +#endif + } else { + /* + * Default system message handling + */ + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + ercode, + LANG_NEUTRAL, + szMessageBuffer, + sizeof(szMessageBuffer), + NULL); + } + return szMessageBuffer; +} diff --git a/local/recipes/dev/gnu-make/source/src/w32/w32os.c b/local/recipes/dev/gnu-make/source/src/w32/w32os.c new file mode 100644 index 0000000000..9c5dec2478 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/w32os.c @@ -0,0 +1,514 @@ +/* Windows32-based operating system interface for GNU Make. +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 +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include +#include + +#include +#include +#include +#if _WIN32_WINNT > 0x0601 +#include +#endif +#include "pathstuff.h" +#include "sub_proc.h" +#include "w32err.h" +#include "os.h" +#include "debug.h" + +unsigned int +check_io_state () +{ + static unsigned int state = IO_UNKNOWN; + + /* We only need to compute this once per process. */ + if (state != IO_UNKNOWN) + return state; + + /* Could have used GetHandleInformation, but that isn't supported + on Windows 9X. */ + HANDLE outfd = (HANDLE)_get_osfhandle (fileno (stdout)); + HANDLE errfd = (HANDLE)_get_osfhandle (fileno (stderr)); + + if ((HANDLE)_get_osfhandle (fileno (stdin)) != INVALID_HANDLE_VALUE) + state |= IO_STDIN_OK; + if (outfd != INVALID_HANDLE_VALUE) + state |= IO_STDOUT_OK; + if (errfd != INVALID_HANDLE_VALUE) + state |= IO_STDERR_OK; + + if (ALL_SET (state, IO_STDOUT_OK|IO_STDERR_OK)) + { + unsigned int combined = 0; + + if (outfd == errfd) + combined = IO_COMBINED_OUTERR; + else + { + DWORD outtype = GetFileType (outfd), errtype = GetFileType (errfd); + + if (outtype == errtype + && outtype != FILE_TYPE_UNKNOWN && errtype != FILE_TYPE_UNKNOWN) + { + if (outtype == FILE_TYPE_CHAR) + { + /* For character devices, check if they both refer to a + console. This loses if both handles refer to the + null device (FIXME!), but in that case we don't care + in the context of Make. */ + DWORD outmode, errmode; + + /* Each process on Windows can have at most 1 console, + so if both handles are for the console device, they + are the same. We also compare the console mode to + distinguish between stdin and stdout/stderr. */ + if (GetConsoleMode (outfd, &outmode) + && GetConsoleMode (errfd, &errmode) + && outmode == errmode) + combined = IO_COMBINED_OUTERR; + } + else + { + /* For disk files and pipes, compare their unique + attributes. */ + BY_HANDLE_FILE_INFORMATION outfi, errfi; + + /* Pipes get zero in the volume serial number, but do + appear to have meaningful information in file index + attributes. We test file attributes as well, for a + good measure. */ + if (GetFileInformationByHandle (outfd, &outfi) + && GetFileInformationByHandle (errfd, &errfi) + && outfi.dwVolumeSerialNumber == errfi.dwVolumeSerialNumber + && outfi.nFileIndexLow == errfi.nFileIndexLow + && outfi.nFileIndexHigh == errfi.nFileIndexHigh + && outfi.dwFileAttributes == errfi.dwFileAttributes) + combined = IO_COMBINED_OUTERR; + } + } + } + state |= combined; + } + + return state; +} + +/* A replacement for tmpfile, since the MSVCRT implementation creates + the file in the root directory of the current drive, which might + not be writable by our user, and also it returns a FILE* and we want a file + descriptor. Mostly borrowed from create_batch_file, see job.c. */ +int +os_anontmp () +{ + char temp_path[MAX_PATH+1]; + unsigned path_size = GetTempPath (sizeof (temp_path), temp_path); + int using_cwd = 0; + + /* These variables are static so we won't try to reuse a name that was + generated a little while ago, because that file might not be on disk yet, + since we use FILE_ATTRIBUTE_TEMPORARY below, which tells the OS it + doesn't need to flush the cache to disk. If the file is not yet on disk, + we might think the name is available, while it really isn't. This + happens in parallel builds. */ + static unsigned uniq = 0; + static int second_loop = 0; + + const char base[] = "gmake_tmpf"; + const unsigned sizemax = sizeof (base) - 1 + 4 + 10 + 10; + unsigned pid = GetCurrentProcessId (); + + if (path_size == 0) + { + path_size = GetCurrentDirectory (sizeof (temp_path), temp_path); + using_cwd = 1; + } + + ++uniq; + if (uniq >= 0x10000 && !second_loop) + { + /* If we already had 64K batch files in this + process, make a second loop through the numbers, + looking for free slots, i.e. files that were + deleted in the meantime. */ + second_loop = 1; + uniq = 1; + } + + while (path_size > 0 && path_size + sizemax < sizeof (temp_path) + && (uniq < 0x10000 || !second_loop)) + { + HANDLE h; + + sprintf (temp_path + path_size, + "%s%s%u-%x.tmp", + temp_path[path_size - 1] == '\\' ? "" : "\\", + base, pid, uniq); + h = CreateFile (temp_path, /* file name */ + GENERIC_READ | GENERIC_WRITE | DELETE, /* desired access */ + FILE_SHARE_READ | FILE_SHARE_WRITE, /* share mode */ + NULL, /* default security attributes */ + CREATE_NEW, /* creation disposition */ + FILE_ATTRIBUTE_NORMAL | /* flags and attributes */ + FILE_ATTRIBUTE_TEMPORARY | + FILE_FLAG_DELETE_ON_CLOSE, + NULL); /* no template file */ + + if (h != INVALID_HANDLE_VALUE) + return _open_osfhandle ((intptr_t)h, 0); + + { + const DWORD er = GetLastError (); + + if (er == ERROR_FILE_EXISTS || er == ERROR_ALREADY_EXISTS) + { + ++uniq; + if (uniq == 0x10000 && !second_loop) + { + second_loop = 1; + uniq = 1; + } + } + /* The temporary path is not guaranteed to exist, or might not be + writable by user. Use the current directory as fallback. */ + else if (!using_cwd) + { + path_size = GetCurrentDirectory (sizeof (temp_path), temp_path); + using_cwd = 1; + } + else + { + errno = EACCES; + return -1; + } + } + } + + if (uniq >= 0x10000) + errno = EEXIST; + return -1; +} + +#if defined(MAKE_JOBSERVER) + +/* This section provides OS-specific functions to support the jobserver. */ + +static char jobserver_semaphore_name[MAX_PATH + 1]; +static HANDLE jobserver_semaphore = NULL; + +unsigned int +jobserver_setup (int slots, const char *style) +{ + /* sub_proc.c is limited in the number of objects it can wait for. */ + + if (style && strcmp (style, "sem") != 0) + OS (fatal, NILF, _("Unknown jobserver auth style '%s'"), style); + + if (slots > process_table_usable_size()) + { + slots = process_table_usable_size(); + DB (DB_JOBS, (_("Jobserver slots limited to %d\n"), slots)); + } + + sprintf (jobserver_semaphore_name, "gmake_semaphore_%d", _getpid ()); + + jobserver_semaphore = CreateSemaphore ( + NULL, /* Use default security descriptor */ + slots, /* Initial count */ + slots, /* Maximum count */ + jobserver_semaphore_name); /* Semaphore name */ + + if (jobserver_semaphore == NULL) + { + DWORD err = GetLastError (); + const char *estr = map_windows32_error_to_string (err); + ONS (fatal, NILF, + _("creating jobserver semaphore: (Error %ld: %s)"), err, estr); + } + + return 1; +} + +unsigned int +jobserver_parse_auth (const char *auth) +{ + jobserver_semaphore = OpenSemaphore ( + SEMAPHORE_ALL_ACCESS, /* Semaphore access setting */ + FALSE, /* Child processes DON'T inherit */ + auth); /* Semaphore name */ + + if (jobserver_semaphore == NULL) + { + DWORD err = GetLastError (); + const char *estr = map_windows32_error_to_string (err); + fatal (NILF, strlen (auth) + INTSTR_LENGTH + strlen (estr), + _("internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"), + auth, err, estr); + } + DB (DB_JOBS, (_("Jobserver client (semaphore %s)\n"), auth)); + + return 1; +} + +char * +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 () +{ + return jobserver_semaphore != NULL; +} + +/* Close jobserver semaphore */ +void +jobserver_clear () +{ + if (jobserver_semaphore != NULL) + { + CloseHandle (jobserver_semaphore); + jobserver_semaphore = NULL; + } +} + +void +jobserver_release (int is_fatal) +{ + if (! ReleaseSemaphore ( + jobserver_semaphore, /* handle to semaphore */ + 1, /* increase count by one */ + NULL)) /* not interested in previous count */ + { + if (is_fatal) + { + DWORD err = GetLastError (); + const char *estr = map_windows32_error_to_string (err); + ONS (fatal, NILF, + _("release jobserver semaphore: (Error %ld: %s)"), err, estr); + } + perror_with_name ("release_jobserver_semaphore", ""); + } +} + +unsigned int +jobserver_acquire_all () +{ + unsigned int tokens = 0; + while (1) + { + DWORD dwEvent = WaitForSingleObject ( + jobserver_semaphore, /* Handle to semaphore */ + 0); /* DON'T wait on semaphore */ + + if (dwEvent != WAIT_OBJECT_0) + return tokens; + + ++tokens; + } +} + +void +jobserver_signal () +{ +} + +void jobserver_pre_child (int recursive) +{ +} + +void jobserver_post_child (int recursive) +{ +} + +void +jobserver_pre_acquire () +{ +} + +/* Returns 1 if we got a token, or 0 if a child has completed. + The Windows implementation doesn't support load detection. */ +unsigned int +jobserver_acquire (int timeout) +{ + HANDLE *handles; + DWORD dwHandleCount; + DWORD dwEvent; + + handles = xmalloc(process_table_actual_size() * sizeof(HANDLE)); + + /* Add jobserver semaphore to first slot. */ + handles[0] = jobserver_semaphore; + + /* Build array of handles to wait for. */ + dwHandleCount = 1 + process_set_handles (&handles[1]); + + dwEvent = process_wait_for_multiple_objects ( + dwHandleCount, /* number of objects in array */ + handles, /* array of objects */ + FALSE, /* wait for any object */ + INFINITE); /* wait until object is signalled */ + + free(handles); + + if (dwEvent == WAIT_FAILED) + { + DWORD err = GetLastError (); + const char *estr = map_windows32_error_to_string (err); + ONS (fatal, NILF, + _("semaphore or child process wait: (Error %ld: %s)"), + err, estr); + } + + /* WAIT_OBJECT_0 indicates that the semaphore was signalled. */ + 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) +{ + HANDLE fh = (HANDLE)_get_osfhandle(fd); + + if (fh && fh != INVALID_HANDLE_VALUE) + SetHandleInformation(fh, HANDLE_FLAG_INHERIT, 1); +} + +void +fd_noinherit(int fd) +{ + HANDLE fh = (HANDLE)_get_osfhandle(fd); + + if (fh && fh != INVALID_HANDLE_VALUE) + SetHandleInformation(fh, HANDLE_FLAG_INHERIT, 0); +} + +void +fd_set_append (int fd) +{} diff --git a/local/recipes/dev/gnu-make/source/tests/README b/local/recipes/dev/gnu-make/source/tests/README new file mode 100644 index 0000000000..6ffa19a7c7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/README @@ -0,0 +1,100 @@ +The test suite was originally written by Steve McGee and Chris Arthur. +It is covered by the GNU General Public License (Version 2), described +in the file COPYING. It has been maintained as part of GNU make proper +since GNU make 3.78. + +This entire test suite, including all test files, are copyright and +distributed under the following terms: + + ----------------------------------------------------------------------------- + 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 + 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 . + ----------------------------------------------------------------------------- + +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. + +To run the test suite on a UNIX system, use "perl ./run_make_tests" +(or just "./run_make_tests" if you have a perl on your PATH). + +To run the test suite on Windows NT or DOS systems, use +"perl.exe ./run_make-tests.pl". + +By default, the test engine picks up the first executable called "make" +that it finds in your path. You may use the -make_path option (i.e., +"perl run_make_tests -make_path /usr/local/src/make-3.78/make") if +you want to run a particular copy. This now works correctly with +relative paths and when make is called something other than "make" (like +"gmake"). + +Tests cannot end with a "~" character, as the test suite will ignore any +that do (I was tired of having it run my Emacs backup files as tests :)) + +Also, sometimes the tests may behave strangely on networked +filesystems. You can use mkshadow to create a copy of the test suite in +/tmp or similar, and try again. If the error disappears, it's an issue +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. + +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 +expected result. + +There is a -help option which will give you more information about the +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 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. + +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 should be +handled the same way as normal GNU make bugs/problems (see the README for GNU +make). + + + Paul D. Smith + Chris Arthur diff --git a/local/recipes/dev/gnu-make/source/tests/config-flags.pm.W32 b/local/recipes/dev/gnu-make/source/tests/config-flags.pm.W32 new file mode 100644 index 0000000000..9d2602bbce --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/config-flags.pm.W32 @@ -0,0 +1,9 @@ +# This is a -*-perl-*- script +# +# Set variables for Windows systems. + +%CONFIG_FLAGS = ( + USE_SYSTEM_GLOB => 'no' +); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/config-flags.pm.in b/local/recipes/dev/gnu-make/source/tests/config-flags.pm.in new file mode 100644 index 0000000000..90cd98016d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/config-flags.pm.in @@ -0,0 +1,20 @@ +# This is a -*-perl-*- script +# +# Set variables that were defined by configure, in case we need them +# during the tests. + +%CONFIG_FLAGS = ( + AM_LDFLAGS => '@AM_LDFLAGS@', + AR => '@AR@', + CC => '@CC@', + CFLAGS => '@CFLAGS@', + CPP => '@CPP@', + CPPFLAGS => '@CPPFLAGS@', + GUILE_CFLAGS => '@GUILE_CFLAGS@', + GUILE_LIBS => '@GUILE_LIBS@', + LDFLAGS => '@LDFLAGS@', + LIBS => '@LIBS@', + USE_SYSTEM_GLOB => '@USE_SYSTEM_GLOB@' +); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/config_flags_pm.com b/local/recipes/dev/gnu-make/source/tests/config_flags_pm.com new file mode 100755 index 0000000000..d02ea66775 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/config_flags_pm.com @@ -0,0 +1,54 @@ +$! +$! config_flags_pm.com - Build config-flags.pm on VMS. +$! +$! Just good enough to run the self tests for now. +$! +$! 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 +$! 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 . +$! +$! +$ open/read cfpm_in config-flags.pm.in +$! +$ outfile = "sys$disk:[]config-flags.pm" +$! +$ cflags = "/include=([],[.lib]" +$! +$ create 'outfile' +$ open/append cfpm 'outfile' +$! +$cfpm_read_loop: +$ read cfpm_in/end=cfpm_read_loop_end line_in +$ line_in_len = f$length(line_in) +$ if f$locate("@", line_in) .lt. line_in_len +$ then +$ part1 = f$element(0, "@", line_in) +$ key = f$element(1, "@", line_in) +$ part2 = f$element(2, "@", line_in) +$ value = "" +$ if key .eqs. "CC" then value = "CC" +$ if key .eqs. "CPP" then value = "CPP" +$ if key .eqs. "CFLAGS" then value = cflags +$ if key .eqs. "GUILE_CFLAGS" then value = cflags +$ if key .eqs. "USE_SYSTEM_GLOB" then value = "no" +$ write cfpm part1, value, part2 +$ goto cfpm_read_loop +$ endif +$ write cfpm line_in +$ goto cfpm_read_loop +$cfpm_read_loop_end: +$ close cfpm_in +$ close cfpm +$! diff --git a/local/recipes/dev/gnu-make/source/tests/guile.supp b/local/recipes/dev/gnu-make/source/tests/guile.supp new file mode 100644 index 0000000000..9e9b01ba33 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/guile.supp @@ -0,0 +1,31 @@ +# Guile valgrind suppression file +# Created with Guile 1.8.7 + +# --- Garbage collection +{ + guilegc + Memcheck:Cond + ... + fun:scm_gc_for_newcell +} +{ + guilegc + Memcheck:Value4 + ... + fun:scm_gc_for_newcell +} +{ + guilegc + Memcheck:Value8 + ... + fun:scm_gc_for_newcell +} + + +# -- scm_alloc_struct +{ + guileheap + Memcheck:Leak + ... + fun:scm_alloc_struct +} diff --git a/local/recipes/dev/gnu-make/source/tests/mkshadow b/local/recipes/dev/gnu-make/source/tests/mkshadow new file mode 100755 index 0000000000..4615aecde6 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/mkshadow @@ -0,0 +1,57 @@ +#!/bin/sh +# +# 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-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 . + +case "$1" in + "") echo 'Usage: mkshadow '; exit 1 ;; +esac + +dest="$1" + +if [ ! -d "$dest" ]; then + echo "Destination directory '$dest' must exist!" + exit 1 +fi + +if [ ! -f run_make_tests ]; then + echo "The current directory doesn't appear to contain the test suite!" + exit 1 +fi + +suite=`pwd | sed 's%^/tmp_mnt%%'` +name=`basename "$suite"` + +files=`echo *` + +set -e + +mkdir "$dest/$name" +cd "$dest/$name" + +ln -s "$suite" .testdir + +for f in $files; do + ln -s .testdir/$f . +done + +rm -rf work + +echo "Shadow test suite created in '$dest/$name'." +exit 0 diff --git a/local/recipes/dev/gnu-make/source/tests/run_make_tests b/local/recipes/dev/gnu-make/source/tests/run_make_tests new file mode 100755 index 0000000000..b68b78494e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/run_make_tests @@ -0,0 +1,2 @@ +#!/bin/sh +exec perl $0.pl ${1+"$@"} diff --git a/local/recipes/dev/gnu-make/source/tests/run_make_tests.bat b/local/recipes/dev/gnu-make/source/tests/run_make_tests.bat new file mode 100644 index 0000000000..b90b6e3b0d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/run_make_tests.bat @@ -0,0 +1,21 @@ +@echo off +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 +rem the terms of the GNU General Public License as published by the Free +rem Software Foundation; either version 3 of the License, or (at your option) +rem any later version. +rem +rem GNU Make is distributed in the hope that it will be useful, but WITHOUT +rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +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 . + +setlocal +cd "%~dp0" + +perl -I. .\run_make_tests.pl %* diff --git a/local/recipes/dev/gnu-make/source/tests/run_make_tests.pl b/local/recipes/dev/gnu-make/source/tests/run_make_tests.pl new file mode 100644 index 0000000000..70dd1821b9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/run_make_tests.pl @@ -0,0 +1,730 @@ +#!/usr/bin/env perl +# -*-perl-*- + +# Test driver for the Make test suite + +# Usage: run_make_tests [testname] +# [-debug] +# [-help] +# [-verbose] +# [-keep] +# [-make ] +# (and others) + +# 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 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 . + +# Add the working directory to @INC and load the test driver +use FindBin; +use lib "$FindBin::Bin"; + +our $testsroot = $FindBin::Bin; + +require "test_driver.pl"; + +use File::Spec; + +use Cwd; +$cwdpath = cwd(); +($cwdvol, $cwddir, $_) = File::Spec->splitpath($cwdpath, 1); + +# Some target systems might not have the POSIX module... +$has_POSIX = eval { require "POSIX.pm" }; + +%FEATURES = (); +%DEFVARS = ( + AR => undef, + CC => undef +); + +$valgrind = 0; # invoke make with valgrind +$valgrind_args = ''; +$memcheck_args = '--num-callers=15 --tool=memcheck --leak-check=full --suppressions=guile.supp'; +$massif_args = '--num-callers=15 --tool=massif --alloc-fn=xmalloc --alloc-fn=xcalloc --alloc-fn=xrealloc --alloc-fn=xstrdup --alloc-fn=xstrndup'; +$pure_log = undef; + +# The location of the GNU make source directory +$srcdir = undef; +$fqsrcdir = undef; +$srcvol = undef; + +# The location of the build directory +$blddir = undef; +$fqblddir = undef; +$bldvol = undef; + +$make_path = undef; +@make_command = (); + +$command_string = ''; + +$all_tests = 0; + +# Shell commands + +$sh_name = '/bin/sh'; +$is_posix_sh = 1; + +$CMD_rmfile = 'rm -f'; + +# rmdir broken in some Perls on VMS. +if ($^O eq 'VMS') +{ + require VMS::Filespec; + VMS::Filespec->import(); + + sub vms_rmdir { + my $vms_file = vmspath($_[0]); + $vms_file = fileify($vms_file); + my $ret = unlink(vmsify($vms_file)); + return $ret + }; + + *CORE::GLOBAL::rmdir = \&vms_rmdir; + + $CMD_rmfile = 'delete_file -no_ask'; +} + +%CONFIG_FLAGS = (); + +# Find the strings that will be generated for various error codes. +# We want them from the C locale regardless of our current locale. + +$ERR_no_such_file = undef; +$ERR_read_only_file = undef; +$ERR_unreadable_file = undef; +$ERR_nonexe_file = undef; +$ERR_exe_dir = undef; +$ERR_command_not_found = undef; + +#$SIG{INT} = sub { print STDERR "Caught a signal!\n"; die @_; }; + +sub valid_option +{ + local($option) = @_; + + if ($option =~ /^-make([-_]?path)?$/i) { + $make_path = shift @argv; + if (! -f $make_path) { + print "$option $make_path: Not found.\n"; + exit 1; + } + return 1; + } + + if ($option =~ /^-srcdir$/i) { + $srcdir = shift @argv; + if (! -f File::Spec->catfile($srcdir, 'src', 'gnumake.h')) { + print "$option $srcdir: Not a valid GNU make source directory.\n"; + exit 1; + } + return 1; + } + + if ($option =~ /^-all([-_]?tests)?$/i) { + $all_tests = 1; + return 1; + } + + if ($option =~ /^-(valgrind|memcheck)$/i) { + $valgrind = 1; + $valgrind_args = $memcheck_args; + return 1; + } + + if ($option =~ /^-massif$/i) { + $valgrind = 1; + $valgrind_args = $massif_args; + return 1; + } + +# This doesn't work--it _should_! Someone badly needs to fix this. +# +# elsif ($option =~ /^-work([-_]?dir)?$/) +# { +# $workdir = shift @argv; +# return 1; +# } + + return 0; +} + + +# This is an "all-in-one" function. Arguments are as follows: +# +# [0] (string): The makefile to be tested. undef means use the last one. +# [1] (string): Arguments to pass to make. +# [2] (string): Answer we should get back. +# [3] (integer): Exit code we expect. A missing code means 0 (success) + +$makefile = undef; +$old_makefile = undef; +$mkpath = undef; +$make_name = undef; +$helptool = undef; + +sub subst_make_string +{ + local $_ = shift; + $makefile and s/#MAKEFILE#/$makefile/g; + s/#MAKEPATH#/$mkpath/g; + 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 $_; +} + +sub run_make_test +{ + local ($makestring, $options, $answer, $err_code, $timeout) = @_; + my @call = caller; + + # If the user specified a makefile string, create a new makefile to contain + # it. If the first value is not defined, use the last one (if there is + # one). + + if (! defined $makestring) { + defined $old_makefile + or die "run_make_test(undef) invoked before run_make_test('...')\n"; + $makefile = $old_makefile; + } elsif ($makestring) { + if (! defined($makefile)) { + $makefile = &get_tmpfile(); + } + + # Make sure it ends in a newline and substitute any special tokens. + $makestring && $makestring !~ /\n$/s and $makestring .= "\n"; + $makestring = subst_make_string($makestring); + + # Populate the makefile! + open(MAKEFILE, "> $makefile") or die "Failed to open $makefile: $!\n"; + print MAKEFILE $makestring; + close(MAKEFILE) or die "Failed to write $makefile: $!\n"; + } + + # Do the same processing on $answer as we did on $makestring. + if (defined $answer) { + $answer && $answer !~ /\n$/s and $answer .= "\n"; + $answer = subst_make_string($answer); + } + + run_make_with_options($makefile, $options, &get_logfile(0), + $err_code, $timeout, @call); + &compare_output($answer, &get_logfile(1)); + + $old_makefile = $makefile; + $makefile = undef; +} + +sub add_options { + my $cmd = shift; + + foreach (@_) { + if (ref($cmd)) { + push(@$cmd, ref($_) ? @$_ : $_); + } else { + $cmd .= ' '.(ref($_) ? "@$_" : $_); + } + } + + return $cmd; +} + +sub create_command { + return !$_[0] || ref($_[0]) ? [@make_command] : join(' ', @make_command); +} + +# The old-fashioned way... +# $options can be a scalar (string) or a ref to an array of options +# If it's a scalar the entire argument is passed to system/exec etc. as +# a single string. If it's a ref then the array is passed to system/exec. +# 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) = @_; + @call = caller unless @call; + my $code; + my $command = create_command($options); + + $expected_code = 0 unless defined($expected_code); + + # Reset to reflect this one test. + $test_passed = 1; + + if ($filename) { + $command = add_options($command, '-f', $filename); + } + + if ($options) { + if (!ref($options) && $^O eq 'VMS') { + # Try to make sure arguments are properly quoted. + # This does not handle all cases. + # We should convert the tests to use array refs not strings + + # VMS uses double quotes instead of single quotes. + $options =~ s/\'/\"/g; + + # If the leading quote is inside non-whitespace, then the + # quote must be doubled, because it will be enclosed in another + # set of quotes. + $options =~ s/(\S)(\".*\")/$1\"$2\"/g; + + # Options must be quoted to preserve case if not already quoted. + $options =~ s/(\S+)/\"$1\"/g; + + # Special fixup for embedded quotes. + $options =~ s/(\"\".+)\"(\s+)\"(.+\"\")/$1$2$3/g; + + $options =~ s/(\A)(?:\"\")(.+)(?:\"\")/$1\"$2\"/g; + + # Special fixup for misc/general4 test. + $options =~ s/""\@echo" "cc""/\@echo cc"/; + $options =~ s/"\@echo link"""/\@echo link"/; + + # Remove shell escapes expected to be removed by bash + if ($options !~ /path=pre/) { + $options =~ s/\\//g; + } + + # special fixup for options/eval + $options =~ s/"--eval=\$\(info" "eval/"--eval=\$\(info eval/; + + print ("Options fixup = -$options-\n") if $debug; + } + + $command = add_options($command, $options); + } + + my $cmdstr = cmd2str($command); + $command_string = "# $call[1]:$call[2]:\n$cmdstr\n"; + + if ($valgrind) { + print VALGRIND "\n\nExecuting: $cmdstr\n"; + } + + { + my $old_timeout = $test_timeout; + $timeout and $test_timeout = $timeout; + + # If valgrind is enabled, turn off the timeout check + $valgrind and $test_timeout = 0; + + if (ref($command)) { + $code = run_command_with_output($logname, @$command); + } else { + $code = run_command_with_output($logname, $command); + } + $test_timeout = $old_timeout; + } + + # Check to see if we have Purify errors. If so, keep the logfile. + # For this to work you need to build with the Purify flag -exit-status=yes + + if ($pure_log && -f $pure_log) { + if ($code & 0x7000) { + $code &= ~0x7000; + + # If we have a purify log, save it + $tn = $pure_testname . ($num_of_logfiles ? ".$num_of_logfiles" : ""); + print("Renaming purify log file to $tn\n") if $debug; + rename($pure_log, "$tn") or die "Can't rename $pure_log to $tn: $!\n"; + ++$purify_errors; + } else { + unlink($pure_log); + } + } + + if ($code != $expected_code) { + 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); + # If it's a SIGINT, stop here + if ($code & 127) { + print STDERR "\nCaught signal ".($code & 127)."!\n"; + ($code & 127) == 2 and exit($code); + } + return 0; + } + + if ($profile & $vos) { + system "add_profile @make_command"; + } + + return 1; +} + +sub print_usage +{ + &print_standard_usage ("run_make_tests", + "[-make MAKE_PATHNAME] [-srcdir SRCDIR] [-memcheck] [-massif]",); +} + +sub print_help +{ + &print_standard_help ( + "-make", + "\tYou may specify the pathname of the copy of make to run.", + "-srcdir", + "\tSpecify the make source directory.", + "-valgrind", + "-memcheck", + "\tRun the test suite under valgrind's memcheck tool.", + "\tChange the default valgrind args with the VALGRIND_ARGS env var.", + "-massif", + "\tRun the test suite under valgrind's massif tool.", + "\tChange the default valgrind args with the VALGRIND_ARGS env var." + ); +} + +sub set_defaults +{ + # $profile = 1; + $testee = "GNU Make"; + $make_path = "make"; + $tmpfilesuffix = "mk"; + if ($port_type eq 'UNIX') { + $scriptsuffix = '.sh'; + } elsif ($port_type eq 'VMS') { + $scriptsuffix = '.com'; + } 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 +# sub parse_status +# { +# if (open(my $fh, '<', "$_[0]/config.status")) { +# while (my $line = <$fh>) { +# $line =~ m/^[SD]\["([^\"]+)"\]=" *(.*)"/ and $CONFIG_FLAGS{$1} = $2; +# } +# return 1; +# } +# return 0; +# } + +sub find_prog +{ + my $prog = $_[0]; + my ($v, $d, $f) = File::Spec->splitpath($prog); + + # If there's no directory then we need to search the PATH + if (! $d) { + foreach my $e (File::Spec->path()) { + $prog = File::Spec->catfile($e, $f); + if (-x $prog) { + ($v, $d, $f) = File::Spec->splitpath($prog); + last; + } + } + } + + return ($v, $d, $f); +} + +sub get_config +{ + return exists($CONFIG_FLAGS{$_[0]}) ? $CONFIG_FLAGS{$_[0]} : ''; +} + +sub set_more_defaults +{ + my $string; + + # Now that we have located make_path, locate the srcdir and blddir + my ($mpv, $mpd, $mpf) = find_prog($make_path); + + # We have a make program so try to compute the blddir. + if ($mpd) { + my $f = File::Spec->catpath($mpv, File::Spec->catdir($mpd, 'tests'), 'config-flags.pm'); + if (-f $f) { + $bldvol = $mpv; + $blddir = $mpd; + } + } + + # If srcdir wasn't provided on the command line, try to find it. + if (! $srcdir && $blddir) { + # See if the blddir is the srcdir + my $f = File::Spec->catpath($bldvol, File::Spec->catdir($blddir, 'src'), 'gnumake.h'); + if (-f $f) { + $srcdir = $blddir; + $srcvol = $bldvol; + } + } + + if (! $srcdir) { + # Not found, see if our parent is the source dir + my $f = File::Spec->catpath($cwdvol, File::Spec->catdir(File::Spec->updir(), 'src'), 'gnumake.h'); + if (-f $f) { + $srcdir = File::Spec->updir(); + $srcvol = $cwdvol; + } + } + + # If we have srcdir but not blddir, set them equal + if ($srcdir && !$blddir) { + $blddir = $srcdir; + $bldvol = $srcvol; + } + + # Load the config flags + if (!$blddir) { + warn "Cannot locate config-flags.pm (no blddir)\n"; + } else { + my $f = File::Spec->catpath($bldvol, File::Spec->catdir($blddir, 'tests'), 'config-flags.pm'); + if (! -f $f) { + warn "Cannot locate $f\n"; + } else { + unshift(@INC, File::Spec->catpath($bldvol, File::Spec->catdir($blddir, 'tests'), '')); + require "config-flags.pm"; + } + } + + # Find the full pathname of Make. For DOS systems this is more + # complicated, so we ask make itself. + if ($osname eq 'VMS') { + $port_type = 'VMS-DCL' unless defined $ENV{"SHELL"}; + # On VMS pre-setup make to be found with simply 'make'. + $make_path = 'make'; + } else { + create_file('make.mk', 'all:;$(info $(MAKE))'); + my $mk = `$make_path -sf make.mk`; + unlink('make.mk'); + $mk =~ s/\r?\n$//; + $mk or die "FATAL ERROR: Cannot determine the value of \$(MAKE)\n"; + $make_path = $mk; + } + ($mpv, $mpd, $mpf) = File::Spec->splitpath($make_path); + + # Ask make what shell to use + create_file('shell.mk', 'all:;$(info $(SHELL))'); + $sh_name = `$make_path -sf shell.mk`; + unlink('shell.mk'); + $sh_name =~ s/\r?\n$//; + if (! $sh_name) { + print "Cannot determine shell\n"; + $is_posix_sh = 0; + } else { + my $o = `$sh_name -c ': do nothing' 2>&1`; + $is_posix_sh = $? == 0 && $o eq ''; + } + + $string = `$make_path -v`; + $string =~ /^(GNU Make [^,\n]*)/ or die "$make_path is not GNU make. Version:\n$string"; + $testee_version = "$1\n"; + + create_file('null.mk', ''); + + my $redir = '2>&1'; + $redir = '' if os_name eq 'VMS'; + $string = `$make_path -f null.mk $redir`; + if ($string =~ /(.*): \*\*\* No targets\. Stop\./) { + $make_name = $1; + } else { + $make_name = $mpf; + } + + # prepend pwd if this is a relative path (ie, does not + # start with a slash, but contains one). Thanks for the + # clue, Roland. + + if ($mpd && !File::Spec->file_name_is_absolute($make_path) && $cwdvol == $mpv) { + $mkpath = File::Spec->catpath($cwdvol, File::Spec->catdir($cwd, $mpd), $mpf); + } else { + $mkpath = $make_path; + } + + # Not with the make program, so see if we can get it out of the makefile + if (! $srcdir && open(MF, '<', File::Spec->catfile(File::Spec->updir(), 'Makefile'))) { + local $/ = undef; + $_ = ; + close(MF); + /^abs_srcdir\s*=\s*(.*?)\s*$/m; + -f File::Spec->catfile($1, 'src', 'gnumake.h') and $srcdir = $1; + } + + # At this point we should have srcdir and blddir: get fq versions + $fqsrcdir = File::Spec->rel2abs($srcdir); + $fqblddir = File::Spec->rel2abs($blddir); + + # Find the helper tool + $helptool = File::Spec->catfile($fqsrcdir, 'tests', 'thelp.pl'); + + # It's difficult to quote this properly in all the places it's used so + # ensure it doesn't need to be quoted. + $helptool =~ s,\\,/,g if $port_type eq 'W32'; + $helptool =~ s, ,\\ ,g; + + # Get Purify log info--if any. + + if (exists $ENV{PURIFYOPTIONS} + && $ENV{PURIFYOPTIONS} =~ /.*-logfile=([^ ]+)/) { + $pure_log = $1 || ''; + $pure_log =~ s/%v/$make_name/; + $purify_errors = 0; + } + + $string = `$make_path -j 2 -f null.mk $redir`; + if ($string =~ /not supported/) { + $parallel_jobs = 0; + } + else { + $parallel_jobs = 1; + } + + unlink('null.mk'); + + create_file('features.mk', 'all:;$(info $(.FEATURES))'); + %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); + + if ($valgrind) { + my $args = $valgrind_args; + open(VALGRIND, "> valgrind.out") or die "Cannot open valgrind.out: $!\n"; + # -q --leak-check=yes + exists $ENV{VALGRIND_ARGS} and $args = $ENV{VALGRIND_ARGS}; + @make_command = ('valgrind', '--log-fd='.fileno(VALGRIND)); + push(@make_command, split(' ', $args)); + push(@make_command, $make_path); + # F_SETFD is 2 + fcntl(VALGRIND, 2, 0) or die "fcntl(setfd) failed: $!\n"; + system("echo Starting on `date` 1>&".fileno(VALGRIND)); + print "Enabled valgrind support.\n"; + } + + if ($debug) { + print "Port type: $port_type\n"; + print "Make command: @make_command\n"; + print "Shell path: $sh_name".($is_posix_sh ? ' (POSIX)' : '')."\n"; + print "#PWD#: $cwdpath\n"; + print "#PERL#: $perl_name\n"; + print "#MAKEPATH#: $mkpath\n"; + print "#MAKE#: $make_name\n"; + } +} + +sub setup_for_test +{ + $makefile = &get_tmpfile; + if (-f $makefile) { + unlink $makefile; + } + + # Get rid of any Purify logs. + if ($pure_log) { + ($pure_testname = $testname) =~ tr,/,_,; + $pure_testname = "$pure_log.$pure_testname"; + system("rm -f $pure_testname*"); + print("Purify testfiles are: $pure_testname*\n") if $debug; + } +} + +exit !&toplevel; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/archives b/local/recipes/dev/gnu-make/source/tests/scripts/features/archives new file mode 100644 index 0000000000..809bf21e21 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/archives @@ -0,0 +1,242 @@ +# -*-mode: perl-*- + +$description = "Test GNU make's archive management features."; + +$details = "\ +This only works on systems that support it."; + +# If this instance of make doesn't support archives, skip it +exists $FEATURES{archives} or return -1; + +# In theory archive support exists on Windows but it doesn't use ar; +# someone will need to port this test. +$port_type eq 'W32' and return -1; + +# Create some .o files to work with +if ($osname eq 'VMS') { + # VMS AR needs real object files at this time. + foreach $afile ('a1', 'a2', 'a3') { + # Use non-standard extension to prevent implicit rules from recreating + # objects when the test tampers with the timestamp. + 1 while unlink "$afile.c1"; + 1 while unlink "$afile.o"; + open (MYFILE, ">$afile.c1"); + print MYFILE "int $afile(void) {return 1;}\n"; + close MYFILE; + system("cc $afile.c1 /object=$afile.o"); + } +} else { + utouch(-60, qw(a1.o a2.o a3.o)); +} + +# Fallback if configure did not find AR +my $ar = get_config('AR') || 'ar'; + +my $redir = '2>&1'; +$redir = '' if $osname eq 'VMS'; + +# 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 ${arflags}U libxx.a a1.o $redir`; +if ($? == 0) { + $arflags = "${arflags}U"; + $arvar = "$arvar ARFLAGS=$arflags"; +} + +# Some versions of ar print different things on creation. Find out. +unlink('libxx.a'); +my $created = `$ar $arflags libxx.a a1.o $redir`; +$created =~ s/a1\.o/#OBJECT#/g; + +# Some versions of ar print different things on add. Find out. +my $add = `$ar $arflags libxx.a a2.o $redir`; +$add =~ s/a2\.o/#OBJECT#/g; + +# Some versions of ar print different things on replacement. Find out. +my $repl = `$ar $arflags libxx.a a2.o $redir`; +$repl =~ s/a2\.o/#OBJECT#/g; + +unlink('libxx.a'); + +# Very simple +($_ = $created) =~ s/#OBJECT#/a1.o/g; +my $answer = "$ar $arflags libxx.a a1.o\n$_"; +if ($port_type eq 'VMS-DCL') { + $answer = 'library /replace libxx.a a1.o'; +} +run_make_test('all: libxx.a(a1.o)', $arvar, $answer); + +# Multiple .o's. Add a new one to the existing library +($_ = $add) =~ s/#OBJECT#/a2.o/g; + +$answer = "$ar $arflags libxx.a a2.o\n$_"; +if ($port_type eq 'VMS-DCL') { + $answer = 'library /replace libxx.a a2.o'; +} +run_make_test('all: libxx.a(a1.o a2.o)', $arvar, $answer); + +# Touch one of the .o's so it's rebuilt +if ($port_type eq 'VMS-DCL') { + # utouch is not changing what VMS library compare is testing for. + # So do a real change by regenerating the file. + 1 while unlink('a1.o'); + # Later time stamp than last insertion. + sleep(2); + system('cc a1.c1 /object=a1.o'); + # Next insertion will have a later timestamp. + sleep(2); +} else { + utouch(-40, 'a1.o'); +} + +($_ = $repl) =~ s/#OBJECT#/a1.o/g; +$answer = "$ar $arflags libxx.a a1.o\n$_"; +if ($port_type eq 'VMS-DCL') { + $answer = 'library /replace libxx.a a1.o'; +} +run_make_test(undef, $arvar, $answer); + +# Use wildcards +$answer = "#MAKE#: Nothing to be done for 'all'.\n"; +run_make_test('all: libxx.a(*.o)', $arvar, $answer); + +# Touch one of the .o's so it's rebuilt +if ($port_type eq 'VMS-DCL') { + # utouch is not changing what VMS library compare is testing for. + # So do a real change by regenerating the file. + 1 while unlink('a1.o'); + # Make timestamp later than last insertion. + sleep(2); + system('cc a1.c1 /object=a1.o'); +} else { + utouch(-30, 'a1.o'); +} +($_ = $repl) =~ s/#OBJECT#/a1.o/g; +$answer = "$ar $arflags libxx.a a1.o\n$_"; +if ($port_type eq 'VMS-DCL') { + $answer = 'library /replace libxx.a a1.o'; +} +run_make_test(undef, $arvar, $answer); + +# Use both wildcards and simple names +if ($port_type eq 'VMS-DCL') { + # utouch is not changing what VMS library compare is testing for. + # So do a real change by regenerating the file. + 1 while unlink('a2.o'); + sleep(2); + system('cc a2.c1 /object=a2.o'); +} else { + utouch(-50, 'a2.o'); +} +($_ = $add) =~ s/#OBJECT#/a3.o/g; +$_ .= "$ar $arflags libxx.a a2.o\n"; +($_ .= $repl) =~ s/#OBJECT#/a2.o/g; +$answer = "$ar $arflags libxx.a a3.o\n$_"; +if ($port_type eq 'VMS-DCL') { + $answer = 'library /replace libxx.a a3.o'; +} + +run_make_test('all: libxx.a(a3.o *.o)', $arvar, $answer); + +# Check whitespace handling +if ($port_type eq 'VMS-DCL') { + # utouch is not changing what VMS library compare is testing for. + # So do a real change by regenerating the file. + 1 while unlink('a2.o'); + sleep(2); + system('cc a2.c1 /object=a2.o'); +} else { + utouch(-40, 'a2.o'); +} +($_ = $repl) =~ s/#OBJECT#/a2.o/g; +$answer = "$ar $arflags libxx.a a2.o\n$_"; +if ($port_type eq 'VMS-DCL') { + $answer = 'library /replace libxx.a a2.o'; +} +run_make_test('all: libxx.a( a3.o *.o )', $arvar, $answer); + +rmfiles(qw(a1.c1 a2.c1 a3.c1 a1.o a2.o a3.o libxx.a)); + +# Check non-archive targets +# See Savannah bug #37878 +$mk_string = q! +all: foo(bar).baz +foo(bar).baz: ; @echo '$@' +!; + +if ($port_type eq 'VMS-DCL') { + $mk_string =~ s/echo/write sys\$\$output/; + $mk_string =~ s/\'/\"/g; +} +run_make_test($mk_string, $arvar, "foo(bar).baz\n"); + +# Check renaming of archive targets. +# See Savannah bug #38442 + +mkdir('artest', 0777); +touch('foo.vhd'); +$mk_string = q! +DIR = artest +vpath % $(DIR) +default: lib(foo) +(%): %.vhd ; @cd $(DIR) && touch $(*F) && $(AR) $(ARFLAGS) $@ $(*F) >/dev/null 2>&1 && rm $(*F) +.PHONY: default +!; +if ($port_type eq 'VMS-DCL') { + $mk_string =~ s#= artest#= sys\$\$disk:\[.artest\]#; + $mk_string =~ s#lib\(foo\)#lib.tlb\(foo\)#; + $mk_string =~ s#; \@cd#; pipe SET DEFAULT#; + $mk_string =~ + s#touch \$\(\*F\)#touch \$\(\*F\) && library/create/text sys\$\$disk:\$\@#; + $mk_string =~ + s#library#if f\$\$search(\"\$\@\") \.eqs\. \"\" then library#; + # VMS needs special handling for null extension + $mk_string =~ s#\@ \$\(\*F\)#\@ \$\(\*F\)\.#; + $mk_string =~ s#>/dev/null 2>&1 ##; +} +run_make_test($mk_string, $arvar, ""); + +run_make_test(undef, $arvar, "#MAKE#: Nothing to be done for 'default'.\n"); + +unlink('foo.vhd'); +if ($osname eq 'VMS') { + remove_directory_tree("$cwdpath/artest"); +} else { + remove_directory_tree('artest'); +} + +# Check long names for archive members. +# See Savannah bug #54395 + +if ($osname ne 'VMS') { + my $pre = '1234567890123456'; + my $lib = 'libxx.a'; + my $cr = $created; + $cr =~ s/#OBJECT#/${pre}a/g; + my $ad = $add; + $ad =~ s/#OBJECT#/${pre}b/g; + + run_make_test(qq! +# Both member names > 16 characters long +default: $lib(${pre}a) $lib(${pre}b) + +(%): % ; \$(AR) \$(ARFLAGS) \$@ \$% + +$pre%: ; touch \$\@ +!, + $arvar, "touch ${pre}a\n$ar $arflags $lib ${pre}a\n${cr}touch ${pre}b\n$ar $arflags $lib ${pre}b\n${ad}rm ${pre}a ${pre}b\n"); + + # Run it again; nothing should happen + run_make_test(undef, $arvar, "#MAKE#: Nothing to be done for 'default'.\n"); + + unlink($lib); +} + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/comments b/local/recipes/dev/gnu-make/source/tests/scripts/features/comments new file mode 100644 index 0000000000..9257955f7b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/comments @@ -0,0 +1,35 @@ +$description = "The following test creates a makefile to test comments\n" + ."and comment continuation to the next line using a \n" + ."backslash within makefiles."; + +$details = "To test comments within a makefile, a semi-colon was placed \n" + ."after a comment was started. This should not be reported as\n" + ."an error since it is within a comment. We then continue the \n" + ."comment to the next line using a backslash. To test whether\n" + ."the comment really continued, we place an echo command with some\n" + ."text on the line which should never execute since it should be \n" + ."within a comment\n"; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE <<\EOF; +# Test comment vs semicolon parsing and line continuation +target: # this ; is just a comment \ + @echo This is within a comment. + @echo There should be no errors for this makefile. +EOF + +# 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 = "There should be no errors for this makefile.\n"; + +# COMPARE RESULTS + +&compare_output($answer,&get_logfile(1)) diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/conditionals b/local/recipes/dev/gnu-make/source/tests/scripts/features/conditionals new file mode 100644 index 0000000000..78344b9389 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/conditionals @@ -0,0 +1,162 @@ +# -*-perl-*- +$description = "Check GNU make conditionals."; + +$details = "Attempt various different flavors of GNU make conditionals."; + +run_make_test(' +arg1 = first +arg2 = second +arg3 = third +arg4 = cc +arg5 = second + +all: +ifeq ($(arg1),$(arg2)) + @echo arg1 equals arg2 +else + @echo arg1 NOT equal arg2 +endif + +ifeq \'$(arg2)\' "$(arg5)" + @echo arg2 equals arg5 +else + @echo arg2 NOT equal arg5 +endif + +ifneq \'$(arg3)\' \'$(arg4)\' + @echo arg3 NOT equal arg4 +else + @echo arg3 equal arg4 +endif + +ifndef undefined + @echo variable is undefined +else + @echo variable undefined is defined +endif +ifdef arg4 + @echo arg4 is defined +else + @echo arg4 is NOT defined +endif', + '', + 'arg1 NOT equal arg2 +arg2 equals arg5 +arg3 NOT equal arg4 +variable is undefined +arg4 is defined'); + + +# Test expansion of variables inside ifdef. + +run_make_test(' +foo = 1 + +FOO = foo +F = f + +DEF = no +DEF2 = no + +ifdef $(FOO) +DEF = yes +endif + +ifdef $(F)oo +DEF2 = yes +endif + + +DEF3 = no +FUNC = $1 +ifdef $(call FUNC,DEF)3 + DEF3 = yes +endif + +all:; @echo DEF=$(DEF) DEF2=$(DEF2) DEF3=$(DEF3)', + '', + 'DEF=yes DEF2=yes DEF3=yes'); + + +# Test all the different "else if..." constructs + +run_make_test(' +arg1 = first +arg2 = second +arg3 = third +arg4 = cc +arg5 = fifth + +result = + +ifeq ($(arg1),$(arg2)) + result += arg1 equals arg2 +else ifeq \'$(arg2)\' "$(arg5)" + result += arg2 equals arg5 +else ifneq \'$(arg3)\' \'$(arg3)\' + result += arg3 NOT equal arg4 +else ifndef arg5 + result += variable is undefined +else ifdef undefined + result += arg4 is defined +else + result += success +endif + + +all: ; @echo $(result)', + '', + 'success'); + + +# Test some random "else if..." construct nesting + +run_make_test(' +arg1 = first +arg2 = second +arg3 = third +arg4 = cc +arg5 = second + +ifeq ($(arg1),$(arg2)) + $(info failed 1) +else ifeq \'$(arg2)\' "$(arg2)" + ifdef undefined + $(info failed 2) + else + $(info success) + endif +else ifneq \'$(arg3)\' \'$(arg3)\' + $(info failed 3) +else ifdef arg5 + $(info failed 4) +else ifdef undefined + $(info failed 5) +else + $(info failed 6) +endif + +.PHONY: all +all: ; @:', + '', + 'success'); + +# SV 47960 : ensure variable assignments in non-taken legs don't cause problems +run_make_test(' +ifneq ($(FOO),yes) +target: +else +BAR = bar +target: +endif + @echo one +', + '', "one\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/local/recipes/dev/gnu-make/source/tests/scripts/features/default_names b/local/recipes/dev/gnu-make/source/tests/scripts/features/default_names new file mode 100644 index 0000000000..3ecbaab911 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/default_names @@ -0,0 +1,44 @@ +# -*-perl-*- + +$description = "This script tests to make sure that Make looks for +default makefiles in the correct order (GNUmakefile,makefile,Makefile)"; + +# Create a makefile called "GNUmakefile" +$makefile = "GNUmakefile"; + +open(MAKEFILE,"> $makefile"); +print MAKEFILE "FIRST: ; \@echo It chose GNUmakefile\n"; +close(MAKEFILE); + +# Create another makefile called "makefile" +open(MAKEFILE,"> makefile"); +print MAKEFILE "SECOND: ; \@echo It chose makefile\n"; +close(MAKEFILE); + +# 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; +if (! -f 'Makefile') { + # Create another makefile called "Makefile" + $case_sensitive = 1; + open(MAKEFILE,"> Makefile"); + print MAKEFILE "THIRD: ; \@echo It chose Makefile\n"; + close(MAKEFILE); +} + +run_make_with_options("","",&get_logfile); +compare_output("It chose GNUmakefile\n",&get_logfile(1)); +unlink($makefile); + +run_make_with_options("","",&get_logfile); +compare_output("It chose makefile\n",&get_logfile(1)); +unlink("makefile"); + +if ($case_sensitive) { + run_make_with_options("","",&get_logfile); + compare_output("It chose Makefile\n",&get_logfile(1)); + unlink("Makefile"); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/dircache b/local/recipes/dev/gnu-make/source/tests/scripts/features/dircache new file mode 100644 index 0000000000..e5e846903a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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/local/recipes/dev/gnu-make/source/tests/scripts/features/double_colon b/local/recipes/dev/gnu-make/source/tests/scripts/features/double_colon new file mode 100644 index 0000000000..a039b0a9a8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/double_colon @@ -0,0 +1,230 @@ +# -*-perl-*- +$description = "Test handling of double-colon rules."; + +$details = "\ +We test these features: + + - Multiple commands for the same (double-colon) target + - Different prerequisites for targets: only out-of-date + ones are rebuilt. + - Double-colon targets that aren't the goal target. + +Then we do the same thing for parallel builds: double-colon +targets should always be built serially."; + +# 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 +foo:: f2.h ; @echo foo SECOND + +bar:: ; @echo aaa; sleep 1; echo aaa done +bar:: ; @echo bbb + +baz:: ; @echo aaa +baz:: ; @echo bbb + +biz:: ; @echo aaa +biz:: two ; @echo bbb + +two: ; @echo two + +f1.h f2.h: ; @echo $@ + +d :: ; @echo ok +d :: d ; @echo oops +!, + "all", "aaa\nbbb\n"); + +# TEST 1: As above, in parallel + +if ($parallel_jobs) { + run_make_test(undef, "-j10 all", "aaa\nbbb\n"); +} + +# TEST 2: A simple double-colon rule that is the goal target + +run_make_test(undef, "bar", "aaa\naaa done\nbbb\n"); + +# TEST 3: As above, in parallel + +if ($parallel_jobs) { + run_make_test(undef, "-j10 bar", "aaa\naaa done\nbbb\n"); +} + +# TEST 4: Each double-colon rule is supposed to be run individually + +&utouch(-5, 'f2.h'); +&touch('foo'); + +run_make_test(undef, "foo", "f1.h\nfoo FIRST\n"); + +# TEST 5: Again, in parallel. + +if ($parallel_jobs) { + run_make_test(undef, "-j10 foo", "f1.h\nfoo FIRST\n"); +} + +# TEST 6: Each double-colon rule is supposed to be run individually + +&utouch(-5, 'f1.h'); +unlink('f2.h'); +&touch('foo'); + +run_make_test(undef, "foo", "f2.h\nfoo SECOND\n"); + +# TEST 7: Again, in parallel. + +if ($parallel_jobs) { + run_make_test(undef, "-j10 foo", "f2.h\nfoo SECOND\n"); +} + +# TEST 8: Test circular dependency check; PR/1671 + +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_test(undef, "-j10 biz", "aaa\ntwo\nbbb\n"); +#} + +unlink('foo','f1.h','f2.h'); + + +# TEST 9: make sure all rules in s double colon family get executed +# (Savannah bug #14334). +# + +&touch('one'); +&touch('two'); + +run_make_test(' +.RECIPEPREFIX = > +.PHONY: all +all: result + +result:: one +> @echo $^ >>$@ +> @echo $^ + +result:: two +> @echo $^ >>$@ +> @echo $^ + +', +'', +'one +two'); + +unlink('result','one','two'); + +# TEST 10: SV 33399 : check for proper backslash handling + +run_make_test(' +a\ xb :: ; @echo one +a\ xb :: ; @echo two +', + '', "one\ntwo\n"); + +# Test 11: SV 44742 : All double-colon rules should be run in parallel build. + +run_make_test(' +.RECIPEPREFIX = > +result :: 01 +> @echo update +> @touch $@ +result :: 02 +> @echo update +> @touch $@ +result :: 03 +> @echo update +> @touch $@ +result :: 04 +> @echo update +> @touch $@ +result :: 05 +> @echo update +> @touch $@ +01 02 03 04 05: +> @touch 01 02 03 04 05 +', + '-j10 result', "update\nupdate\nupdate\nupdate\nupdate\n"); + +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 $* +', + '-rs -j2 1 2 root', "all_one\nall_two\nroot\n"); + +# SV 47995 : Parallel double-colon rules with FORCE + +run_make_test(' +all:: ; @echo one + +all:: joe ; @echo four + +joe: FORCE ; touch joe-is-forced + +FORCE: +', + '-j5', "one\ntouch joe-is-forced\nfour\n"); + +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; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/echoing b/local/recipes/dev/gnu-make/source/tests/scripts/features/echoing new file mode 100644 index 0000000000..a666a26307 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/echoing @@ -0,0 +1,64 @@ +# -*-perl-*- +$description = "The following test creates a makefile to test command +echoing. It tests that when a command line starts with +a '\@', the echoing of that line is suppressed. It also +tests the -n option which tells make to ONLY echo the +commands and no execution happens. In this case, even +the commands with '\@' are printed. Lastly, it tests the +-s flag which tells make to prevent all echoing, as if +all commands started with a '\@'."; + +$details = "This test is similar to the 'clean' test except that a '\@' has +been placed in front of the delete command line. Four tests +are run here. First, make is run normally and the first echo +command should be executed. In this case there is no '\@' so +we should expect make to display the command AND display the +echoed message. Secondly, make is run with the clean target, +but since there is a '\@' at the beginning of the command, we +expect no output; just the deletion of a file which we check +for. Third, we give the clean target again except this time +we give make the -n option. We now expect the command to be +displayed but not to be executed. In this case we need only +to check the output since an error message would be displayed +if it actually tried to run the delete command again and the +file didn't exist. Lastly, we run the first test again with +the -s option and check that make did not echo the echo +command before printing the message.\n"; + +$example = "EXAMPLE_FILE"; + +touch($example); + +# TEST #1 +# ------- + +run_make_test(" +all: +\techo This makefile did not clean the dir... good +clean: +\t\@$CMD_rmfile $example\n", + '', 'echo This makefile did not clean the dir... good +This makefile did not clean the dir... good'); + +# TEST #2 +# ------- + +run_make_test(undef, 'clean', ''); +if (-f $example) { + $test_passed = 0; + unlink($example); +} + +# TEST #3 +# ------- + +run_make_test(undef, '-n clean', "$CMD_rmfile $example\n"); + + +# TEST #4 +# ------- + +run_make_test(undef, '-s', "This makefile did not clean the dir... good\n"); + + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/errors b/local/recipes/dev/gnu-make/source/tests/scripts/features/errors new file mode 100644 index 0000000000..2cdaf31ded --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/errors @@ -0,0 +1,118 @@ +# -*-perl-*- + +$description = "Test ignored failures in recipe command lines"; + +run_make_test(qq! +one: +\t-exit 1 +\texit 0 +two: +\texit 1 +\texit 0 +!, + "one", "exit 1\n#MAKE#: [#MAKEFILE#:3: one] Error 1 (ignored)\nexit 0\n"); + +# TEST #1 +# ------- + +run_make_test(undef, " -i two", + "exit 1\n#MAKE#: [#MAKEFILE#:6: two] Error 1 (ignored)\nexit 0\n"); + +# TEST #2 +# ------- + +# Test that error line offset works + +run_make_test(qq! +all: +\t\@echo hi +\t\@echo there +\t\@exit 1 +!, + '', "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 +# ------- + +# Try failing due to unknown command +my $unk = './foobarbazbozblat'; +unlink($unk); + +my ($ernum, $erstr) = errors_getinfo($unk, "xx yy"); +run_make_test(qq! +one: ; -$unk xx yy +!, '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$erstr\n#MAKE#: [#MAKEFILE#:2: two] Error $ernum (ignored)\n"); + +# TEST #5 +# ------- + +run_make_test(undef, 'two', + "$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$erstr\n#MAKE#: *** [#MAKEFILE#:4: three] Error $ernum\n", 512); + +# Try failing due to non-executable file + +if ($ERR_nonexe_file) { + my $noexe = './barfooblatboz'; + touch($noexe); + + run_make_test(qq! + one: ; -$noexe xx yy + two: ; $noexe aa bb + !, + 'one', "$noexe xx yy\n#MAKE#: $noexe: $ERR_nonexe_file\n#MAKE#: [#MAKEFILE#:2: one] Error 127 (ignored)\n"); + + unlink($noexe); +} + +# Try failing by "running" a directory + +if ($ERR_exe_dir) { + mkdir('sd', 0775) or print "mkdir: sd: $!\n"; + + run_make_test(q! +PATH := . +all: ; sd +!, + '', "sd\n#MAKE#: sd: $ERR_exe_dir\n#MAKE#: *** [#MAKEFILE#:3: all] Error 127", 512); + + run_make_test(q! +all: ; ./sd +!, + '', "./sd\n#MAKE#: ./sd: $ERR_exe_dir\n#MAKE#: *** [#MAKEFILE#:2: all] Error 127", 512); + + rmdir('sd'); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/escape b/local/recipes/dev/gnu-make/source/tests/scripts/features/escape new file mode 100644 index 0000000000..5157a977ec --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/escape @@ -0,0 +1,103 @@ +# -*-perl-*- +$description = "Test various types of escaping in makefiles."; + +$details = "\ +Make sure that escaping of ':' works in target names. +Make sure escaping of whitespace works in target names. +Make sure that escaping of '#' works. +Make sure that backslash before non-special characters are kept."; + + +# TEST 1 + +run_make_test(q! +ifdef NOESC +path = pre: +endif +ifdef ONEESC +path = pre\: +endif +ifdef TWOESC +path = pre\\\\: +endif + +$(path)foo : ; @echo "touch ($@)" + +foo\ bar: ; @echo "touch ($@)" + +sharp: foo\#bar.ext +foo\#bar.ext: ; @echo "foo#bar.ext = ($@)" +!, + '', + 'touch (foo)'); + +# TEST 2: This one should fail, since the ":" is unquoted. + +run_make_test(undef, + 'NOESC=1', + "#MAKEFILE#:12: *** target pattern contains no '%'. Stop.", + 512); + +# TEST 3: This one should work, since we escape the ":". + +run_make_test(undef, + 'ONEESC=1', + 'touch (pre:foo)'); + +# TEST 4: This one should fail, since the escape char is escaped. + +run_make_test(undef, + 'TWOESC=1', + "#MAKEFILE#:12: *** target pattern contains no '%'. Stop.", + 512); + +# TEST 5: This one should work + +run_make_test(undef, + ['foo bar'], + 'touch (foo bar)'); + +# TEST 6: Test escaped comments + +run_make_test(undef, + 'sharp', + 'foo#bar.ext = (foo#bar.ext)'); + +# Test escaped colons in prerequisites +# Quoting of backslashes in q!! is kind of messy. +# Solaris sh does not properly handle backslashes even in '' so just +# check the output make prints, not what the shell interprets. +run_make_test(q! +foo: foo\\:bar foo\\\\\\:bar foo\\\\\\\\\\:bar +foo foo\\:bar foo\\\\\\:bar foo\\\\\\\\\\:bar: ; : '$@' +!, + '', ": 'foo:bar'\n: 'foo\\:bar'\n: 'foo\\\\:bar'\n: 'foo'\n"); + +# Test backslash before non-special chars: should be kept as-is + +run_make_test(q! +all: ..\foo +.DEFAULT: ; : '$@' +!, + '', ": '..\\foo'\n"); + +# Test escaped comments in variable assignments +run_make_test(q! +self = $1 +foo := $(call self,#foo#)#foo +bar := $(call self,\#bar\#)#bar +all:;@echo '$(foo) $(bar)' +!, + '',"#foo# \\#bar\\#"); + +# Test escaped comments in variable assignments in a variable +run_make_test(q! +C = \# +self = $1 +foo := $(call self,$Cfoo$C)#foo +all:;@echo '$(foo)' +!, + '',"#foo#"); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/exec b/local/recipes/dev/gnu-make/source/tests/scripts/features/exec new file mode 100644 index 0000000000..f139cf8c8b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/exec @@ -0,0 +1,72 @@ +# -*-perl-*- + +use warnings; + +my $description = "Test that make can execute binaries as well as scripts with" + ." 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 shbang in the" + ." executed script. There is also a test which executes a script" + ." 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}; +if ($usersh !~ /csh/) { + push @shbangs, ("#!$usersh"); + push @shells, ("SHELL=$usersh"); +} + +my $answer = 'hello, world'; + +# tests [0-11] +# Have a makefile with various SHELL= exec a shell program with varios +# shbangs or without a shbang at all. +my $stem = './exec.cmd'; +my $k = 0; +for my $shbang (@shbangs) { + for my $shell (@shells) { + my $cmd = $k ? "$stem.$k" : $stem; + ++$k; + unlink $cmd; + open(CMD,"> $cmd"); + print CMD "$shbang\n"; + print CMD "printf \"$answer\\n\";\n"; + close(CMD); + chmod 0700, $cmd; + + run_make_test("# shbang=$shbang\n# shell=$shell" . q! +all:; @$(CMD) +!, "$shell CMD=$cmd", "$answer\n"); + + rmfiles($cmd); + } +} + +# tests [12-14] +# Exec a binary from a makefile that has SHELL=. +for my $shell (@shells) { + run_make_test(q! +all:; @#PERL# -e 'printf "$(ANSWER)\n"'; +!, "$shell ANSWER='$answer'", "$answer\n"); +} + +# test 15 +# Use perl as a shell. +run_make_test(q! +SHELL = #PERL# +.SHELLFLAGS = -e +all:; @printf "$(ANSWER)\n"; +!, "ANSWER='$answer'", "$answer\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/export b/local/recipes/dev/gnu-make/source/tests/scripts/features/export new file mode 100644 index 0000000000..ad58177b6b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/export @@ -0,0 +1,210 @@ +# -*-perl-*- +$description = "Check GNU make export/unexport commands."; + +$details = ""; + +# The test driver cleans out our environment for us so we don't have to worry +# about that here. + +&run_make_test(' +FOO = foo +BAR = bar +BOZ = boz + +export BAZ = baz +export BOZ + +BITZ = bitz +BOTZ = botz + +export BITZ BOTZ +unexport BOTZ + +ifdef EXPORT_ALL +export +endif + +ifdef UNEXPORT_ALL +unexport +endif + +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" +', + '', "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 + +$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"); + +# TEST 2: global export. Explicit unexport takes precedence. + +run_make_test(undef, "EXPORT_ALL=1" , + "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz +FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n"); + +# TEST 3: global unexport. Explicit export takes precedence. + +&run_make_test(undef, "UNEXPORT_ALL=1", + "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz +FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n"); + +# TEST 4: both: in the above makefile the unexport comes last so that rules. + +&run_make_test(undef, "EXPORT_ALL=1 UNEXPORT_ALL=1", + "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz +FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n"); + +# TEST 5: test the pseudo target. + +&run_make_test(undef, "EXPORT_ALL_PSEUDO=1", + "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz +FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n"); + +# TEST 6: Test the expansion of variables inside export + +&run_make_test(' +foo = f-ok +bar = b-ok + +FOO = foo +F = f + +BAR = bar +B = b + +export $(FOO) +export $(B)ar + +.RECIPEPREFIX := > +all: +> @echo foo=$(foo) bar=$(bar) +> @echo foo=$$foo bar=$$bar +', + "", "foo=f-ok bar=b-ok\nfoo=f-ok bar=b-ok\n"); + +# TEST 7: Test the expansion of variables inside unexport + +&run_make_test(' +foo = f-ok +bar = b-ok + +FOO = foo +F = f + +BAR = bar +B = b + +export foo bar + +unexport $(FOO) +unexport $(B)ar + +.RECIPEPREFIX := > +all: +> @echo foo=$(foo) bar=$(bar) +> @echo foo=$$foo bar=$$bar +', + '', "foo=f-ok bar=b-ok\nfoo= bar=\n"); + +# TEST 7: Test exporting multiple variables on the same line + +&run_make_test(' +A = a +B = b +C = c +D = d +E = e +F = f +G = g +H = h +I = i +J = j + +SOME = A B C + +export F G H I J + +export D E $(SOME) + +all: ; @echo A=$$A B=$$B C=$$C D=$$D E=$$E F=$$F G=$$G H=$$H I=$$I J=$$J +', + '', "A=a B=b C=c D=d E=e F=f G=g H=h I=i J=j\n"); + +# TEST 8: Test unexporting multiple variables on the same line + +@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 +B = b +C = c +D = d +E = e +F = f +G = g +H = h +I = i +J = j + +SOME = A B C + +unexport F G H I J + +unexport D E $(SOME) + +all: ; @echo A=$$A B=$$B C=$$C D=$$D E=$$E F=$$F G=$$G H=$$H I=$$I J=$$J +', + '', "A= B= C= D= E= F= G= H= I= J=\n"); + +# TEST 9: Check setting a variable named "export" + +&run_make_test(' +export = 123 +export export +export export = 456 +a: ; @echo "\$$(export)=$(export) / \$$export=$$export" +', + '', "\$(export)=456 / \$export=456\n"); + +# TEST 10: Check "export" as a target + +&run_make_test(' +a: export +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/local/recipes/dev/gnu-make/source/tests/scripts/features/grouped_targets b/local/recipes/dev/gnu-make/source/tests/scripts/features/grouped_targets new file mode 100644 index 0000000000..6b3c561741 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/grouped_targets @@ -0,0 +1,207 @@ +# -*-perl-*- + +$description = "This test is about grouped multiple targets indicated by &:"; +$details = "Here we test for requirements like\n" + ."- if multiple such targets are updated, the recipe is run once\n" + ."- parsing issues related to the &: syntax itself\n"; + +# Parsing: &: allowed without any targets. +run_make_test(q{ +.PHONY: all +&:; +all: ;@printf '' +}, +'', ""); + +# Parsing: &: works not preceded by whitespace. +run_make_test(q{ +foo&:;@echo foo +}, +'foo', "foo"); + +# Ordinary rule runs recipe four times for t1 t2 t3 t4. +# Grouped target rule runs recipe once; others are considered updated. +run_make_test(q{ +.PHONY: t1 t2 t3 t4 g1 g2 g3 g4 +t1 t2 t3 t4: ; @echo $@ +g1 g2 g3 g4 &: ; @echo $@ +}, +'t1 t2 t3 t4 g1 g2 g3 g4', +"t1\n" +."t2\n" +."t3\n" +."t4\n" +."g1\n" +."#MAKE#: Nothing to be done for 'g2'.\n" +."#MAKE#: Nothing to be done for 'g3'.\n" +."#MAKE#: Nothing to be done for 'g4'."); + +# Similar to previous test, but targets come from m1 phony +# rather than from the command line. We don't see "Nothing to +# be done for" messages. Also, note reversed order g4 g3 ... +# Thus the auto variable $@ is "g4" when that rule fires. +run_make_test(q{ +.PHONY: m1 t1 t2 t3 t4 g1 g2 g3 g4 +m1: t1 t2 t3 t4 g4 g3 g2 g1 +t1 t2 t3 t4: ; @echo $@ +g1 g2 g3 g4&: ; @echo $@ +}, +'', +"t1\nt2\nt3\nt4\ng4"); + +# Set a grouped target recipe for existing targets +run_make_test(q{ +.PHONY: M a b +M: a b +a: +a b&: ; @echo Y +b: +}, +'', +"Y"); + +# grouped targets require a recipe +run_make_test(q{ +.PHONY: M a b +M: a b +a b&: +}, +'', +"#MAKEFILE#:4: *** grouped targets must provide a recipe. Stop.", 512); + +# Pattern rules use grouped targets anyway so it's a no-op +run_make_test(q{ +.PHONY: M +M: a.q b.q +a.% b.%&: ; @echo Y +}, +'', +"Y"); + +# Double-colon grouped target rules. +run_make_test(q{ +.PHONY: M a b c d e f g h +M: a b +a b c&:: ; @echo X +c d e&:: ; @echo Y +f g h&:: ; @echo Z +}, +'', +"X"); + +run_make_test(q{ +.PHONY: M a b c d e f g h +M: c +a b c&:: ; @echo X +c d e&:: ; @echo Y +f g h&:: ; @echo Z +}, +'', +"X\nY"); + +run_make_test(q{ +.PHONY: M a b c d e f g h +M: a b c d e +a b c&:: ; @echo X +c d e&:: ; @echo Y +f g h&:: ; @echo Z +}, +'', +"X\nY"); + +run_make_test(q{ +.PHONY: M a b c d e f g h +M: d e +a b c&:: ; @echo X +c d e&:: ; @echo Y +f g h&:: ; @echo Z +}, +'', +"Y"); + +run_make_test(q{ +.PHONY: M a b c d e f g h +M: f g h +a b c&:: ; @echo X +c d e&:: ; @echo Y +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/local/recipes/dev/gnu-make/source/tests/scripts/features/implicit_search b/local/recipes/dev/gnu-make/source/tests/scripts/features/implicit_search new file mode 100644 index 0000000000..564dc5bb6a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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/local/recipes/dev/gnu-make/source/tests/scripts/features/include b/local/recipes/dev/gnu-make/source/tests/scripts/features/include new file mode 100644 index 0000000000..69d67181cc --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/include @@ -0,0 +1,465 @@ +# -*-mode: perl; rm-trailing-spaces: nil-*- + +$description = "Test various forms of the GNU make 'include' command."; + +$details = "\ +Test include, -include, sinclude and various regressions involving them. +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."; + +create_file('incl.mk', "ANOTHER: ; \@echo This is another included makefile\n"); + +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 +sinclude nonexistent.mk +sinclude nonexistent-2.mk +-include makeit.mk +sinclude makeit.mk + +error: makeit.mk +!, + "all", "There should be no errors for this makefile.\n"); + +run_make_test(undef, "ANOTHER", "This is another included makefile\n"); + +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 +# the -include suppressed it during the makefile read phase, we should +# see one during the makefile run phase). + +run_make_test + (' +-include foo.mk +error: foo.mk ; @echo $@ +', + '', + "#MAKE#: *** No rule to make target 'foo.mk', needed by 'error'. Stop.\n", + 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. + +run_make_test + (' +bar.mk: foo := baz +-include bar.mk +hello: ; @echo hello +', + '', + "hello\n" + ); + + +# Test inheritance of dontcare flag when rebuilding makefiles. +# +run_make_test(' +.PHONY: all +all: ; @: + +-include foo + +foo: bar; @: +', '', ''); + + +# Make sure that we don't die when the command fails but we dontcare. +# (Savannah bug #13216). +# +run_make_test(' +.PHONY: all +all:; @: + +-include foo + +foo: bar; @: + +bar:; @exit 1 +', '', ''); + +# Check include, sinclude, -include with no filenames. +# (Savannah bug #1761). + +run_make_test(' +.PHONY: all +all:; @: +include +-include +sinclude', '', ''); + + +# Test that the diagnostics is issued even if the target has been +# tried before with the dontcare flag (direct dependency case). +# +run_make_test(' +-include foo + +all: bar + +foo: baz +bar: baz +', +'', +"#MAKE#: *** No rule to make target 'baz', needed by 'bar'. Stop.\n", +512); + +# Test that the diagnostics is issued even if the target has been +# tried before with the dontcare flag (indirect dependency case). +# +run_make_test(' +-include foo + +all: bar + +foo: baz +bar: baz +baz: end +', +'', +"#MAKE#: *** No rule to make target 'end', needed by 'baz'. Stop.\n", +512); + +# Test include of make-able file doesn't show an error (Savannah #102) +run_make_test(q! +.PHONY: default +default:; @echo DONE + +inc1:; echo > $@ +include inc1 +include inc2 +inc2:; echo > $@ +!, + '', "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("\n", '', '#MAKE#: *** No targets. Stop.', 512); + +# No target in included file either, still gets correct error. +touch('inc1.mk'); +run_make_test('include inc1.mk', '', '#MAKE#: *** No targets. Stop.', 512); +rmfiles('inc1.mk'); + +# Include same file multiple times + +run_make_test(q! +default:; @echo DEFAULT +include inc1 +inc1:; echo > $@ +include inc1 +!, + '', "echo > inc1\nDEFAULT\n"); + +rmfiles('inc1'); + +if (defined $ERR_no_such_file) { + + # Test that the diagnostics is issued even if the target has been + # tried before with the dontcare flag (include/-include case). + # + run_make_test(' +include bar +-include foo + +all: + +foo: baz +bar: baz +baz: end +', +'', + "#MAKEFILE#:2: bar: $ERR_no_such_file\n#MAKE#: *** No rule to make target 'end', needed by 'baz'. Stop.\n", + 512); + + # Test include of non-make-able file does show an error (Savannah #102) + run_make_test(q! +.PHONY: default +default:; @echo DONE + +inc1:; echo > $@ +include inc1 +include inc2 +!, + '', "echo > inc1\n#MAKEFILE#:7: inc2: $ERR_no_such_file\n#MAKE#: *** No rule to make target 'inc2'. Stop.\n", 512); + + rmfiles('inc1'); + + # Included file has a prerequisite that fails to build + + run_make_test(q! +default:; @echo DEFAULT +include inc1 +inc1: foo; echo > $@ +foo:; exit 1 +!, + '', "exit 1\n#MAKEFILE#:3: inc1: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:5: foo] Error 1\n", 512); + + rmfiles('inc1'); + + # Included file has a prerequisite we don't know how to build + + run_make_test(q! +default:; @echo DEFAULT +include inc1 +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); +} + +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'; + + run_make_test(q! +include inc1 +all:;@echo $(FOO) +!, + '', "#MAKEFILE#:2: inc1: $ERR_unreadable_file\n#MAKE#: *** No rule to make target 'inc1'. Stop.", 512); + + # 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) +include inc1 +inc1:; @%s $@ && echo FOO := bar > $@ +!, $CMD_rmfile), + '', "bar"); + + # 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/local/recipes/dev/gnu-make/source/tests/scripts/features/jobserver b/local/recipes/dev/gnu-make/source/tests/scripts/features/jobserver new file mode 100644 index 0000000000..8ecbe3458a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/jobserver @@ -0,0 +1,160 @@ +# -*-perl-*- + +$description = "Test jobserver."; + +$details = "These tests are ones that specifically are different when the +jobserver feature is available. Most -j tests are the same whether or not +jobserver is available, and those appear in the 'parallelism' test suite."; + +exists $FEATURES{'jobserver'} or return -1; + +if (!$parallel_jobs) { + return -1; +} + +# Shorthand +my $np = '--no-print-directory'; + +# Simple test of MAKEFLAGS settings +run_make_test(q! +SHOW = $(patsubst --jobserver-auth=%,--jobserver-auth=,$(MAKEFLAGS)) +recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all +all:;@echo $@: "/$(SHOW)/" +!, + "-j2 $np", "recurse: /-j2 --jobserver-auth= $np/\nall: /-j2 --jobserver-auth= $np/\n"); + +# Setting parallelism with the environment +# Command line should take precedence over the environment +$ENV{MAKEFLAGS} = "-j2 $np"; +run_make_test(q! +SHOW = $(patsubst --jobserver-auth=%,--jobserver-auth=,$(MAKEFLAGS)) +recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all +all:;@echo $@: "/$(SHOW)/" +!, + '', "recurse: /-j2 --jobserver-auth= $np/\nall: /-j2 --jobserver-auth= $np/\n"); + +# Test override of -jN +$ENV{MAKEFLAGS} = "-j9 $np"; +run_make_test(q! +SHOW = $(patsubst --jobserver-auth=%,--jobserver-auth=,$(MAKEFLAGS)) +recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE) -j3 -f #MAKEFILE# recurse2 +recurse2: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all +all:;@echo $@: "/$(SHOW)/" +!, + "-j2 $np", "recurse: /-j2 --jobserver-auth= $np/\n#MAKE#[1]: warning: -j3 forced in submake: resetting jobserver mode.\nrecurse2: /-j3 --jobserver-auth= $np/\nall: /-j3 --jobserver-auth= $np/\n"); + +# Test override of -jN with -j +run_make_test(q! +SHOW = $(patsubst --jobserver-auth=%,--jobserver-auth=,$(MAKEFLAGS)) +recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE) -j -f #MAKEFILE# recurse2 +recurse2: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all +all:;@echo $@: "/$(SHOW)/" +!, + "-j2 $np", "recurse: /-j2 --jobserver-auth= $np/\n#MAKE#[1]: warning: -j0 forced in submake: resetting jobserver mode.\nrecurse2: /-j $np/\nall: /-j $np/\n"); + +# Don't put --jobserver-auth into a re-exec'd MAKEFLAGS. +# We can't test this directly because there's no way a makefile can +# show the value of MAKEFLAGS we were re-exec'd with. We can intuit it +# by looking for "disabling jobserver mode" warnings; we should only +# get one from the original invocation and none from the re-exec. +# See Savannah bug #18124 + +unlink('inc.mk'); + +run_make_test(q! +.RECIPEPREFIX = > +-include inc.mk +recur: +#> @echo 'MAKEFLAGS = $(MAKEFLAGS)' +> @rm -f inc.mk +> @$(MAKE) -j2 -f #MAKEFILE# all +all: +#> @echo 'MAKEFLAGS = $(MAKEFLAGS)' +> @echo $@ +inc.mk: +#> @echo 'MAKEFLAGS = $(MAKEFLAGS)' +> @echo 'FOO = bar' > $@ +!, + "$np -j2", "#MAKE#[1]: warning: -j2 forced in submake: resetting jobserver mode.\nall\n"); + +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 +# Environments that don't use a pipe won't close access, so this won't happen. +if ($port_type ne 'W32') { + create_file('Makefile2', "vpath %.c ../\n", "foo:\n"); + + run_make_test(q! +default: ; @ #MAKEPATH# -f Makefile2 +!, + "--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'); +} + +# For Windows and named pipes, we don't need to worry about recursion +if ($port_type eq 'W32' || exists $FEATURES{'jobserver-fifo'}) { + create_file('Makefile2', "vpath %.c ../\n", "foo:\n"); + + run_make_test(q! +default: ; @ #MAKEPATH# -f Makefile2 +!, + "-j2 $np", +"#MAKE#[1]: Nothing to be done for 'foo'."); + + rmfiles('Makefile2'); +} + +# Ensure enter/leave directory messages appear before jobserver warnings + +run_make_test(q! +all: ; @$(MAKE) -C . -f #MAKEFILE# recurse -j1 +recurse: ; @echo hi +!, + '-w -j2', "#MAKE#: Entering directory '#PWD#' +#MAKE#[1]: Entering directory '#PWD#' +#MAKE#[1]: warning: -j1 forced in submake: resetting jobserver mode. +hi +#MAKE#[1]: Leaving directory '#PWD#' +#MAKE#: Leaving directory '#PWD#'\n"); + +# Check for invalid jobserver-style options + +run_make_test(q! +all: a +all a: ; @echo $@ +!, + '--jobserver-style=foo -j8', + "#MAKE#: *** Unknown jobserver auth style 'foo'. Stop.", 512); + +# 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/local/recipes/dev/gnu-make/source/tests/scripts/features/load b/local/recipes/dev/gnu-make/source/tests/scripts/features/load new file mode 100644 index 0000000000..b462ed9cca --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/load @@ -0,0 +1,150 @@ +# -*-perl-*- +$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; + +my $cc = get_config('CC'); +if (! $cc) { + $verbose and print "Skipping load test: no CC defined\n"; + return -1; +} + +# First build a shared object +# Provide both a default and non-default load symbol + +unlink(qw(testload.c testload.so)); + +open(my $F, '> testload.c') or die "open: testload.c: $!\n"; +print $F <<'EOF' ; +#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; +} + +int +explicit_setup (gmk_floc *pos) +{ + (void)pos; + gmk_eval ("TESTLOAD = explicit", 0); + if (getenv("TESTAPI_KEEP")) + return -1; + return 1; +} +EOF +close($F) or die "close: testload.c: $!\n"; + +# Make sure we can compile + +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$clog"; + return -1; +} + +# TEST 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"); + +# TEST 2 +# Load using an explicit function +run_make_test(q! +PRE := $(.LOADED) +load ./testload.so(explicit_setup) +POST := $(.LOADED) +all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD) +!, + '', "pre= post=testload.so explicit\n"); + +# TEST 3 +# Check multiple loads +run_make_test(q! +PRE := $(.LOADED) +load ./testload.so +load testload.so(explicit_setup) +POST := $(.LOADED) +all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD) +!, + '', "pre= post=testload.so implicit\n"); + +# TEST 4 +# Check auto-rebuild of loaded file that's out of date +utouch(-10, 'testload.so'); +touch('testload.c'); + +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, + '', "rebuilding testload.so\npre= post=testload.so implicit\n"); + +# TEST 5 +# Check auto-rebuild of loaded file when it doesn't exist +unlink('testload.so'); + +run_make_test(q! +PRE := $(.LOADED) +-load ./testload.so(explicit_setup) +POST := $(.LOADED) +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. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/loadapi b/local/recipes/dev/gnu-make/source/tests/scripts/features/loadapi new file mode 100644 index 0000000000..a72f1f1bb7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/loadapi @@ -0,0 +1,228 @@ +# -*-perl-*- +$description = "Test the shared object load API."; + +$details = "Verify the different aspects of the shared object API."; + +# Don't do anything if this system doesn't support "load" +exists $FEATURES{load} or return -1; + +my $cc = get_config('CC'); +if (! $cc) { + $verbose and print "Skipping load test: no CC defined\n"; + return -1; +} + +# First build a shared object +# Provide both a default and non-default load symbol + +unlink(qw(testapi.c testapi.so)); + +open(my $F, '> testapi.c') or die "open: testapi.c: $!\n"; +print $F <<'EOF' ; +#include +#include + +#include "gnumake.h" + +char *getenv (const char*); + +int plugin_is_GPL_compatible; + +int testapi_gmk_setup (); + +static char * +test_eval (const char *buf) +{ + gmk_eval (buf, 0); + return NULL; +} + +static char * +test_expand (const char *val) +{ + return gmk_expand (val); +} + +static char * +test_noexpand (const char *val) +{ + char *str = gmk_alloc (strlen (val) + 1); + strcpy (str, val); + return str; +} + +static char * +func_test (const char *funcname, unsigned int argc, char **argv) +{ + char *mem; + + if (strcmp (funcname, "test-expand") == 0) + return test_expand (argv[0]); + + if (strcmp (funcname, "test-eval") == 0) + return test_eval (argv[0]); + + if (strcmp (funcname, "test-noexpand") == 0) + return test_noexpand (argv[0]); + + mem = gmk_alloc (sizeof ("unknown")); + strcpy (mem, "unknown"); + return mem; +} + +int +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 +close($F) or die "close: testapi.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 testapi.so testapi.c"; + +my $clog = `$sobuild 2>&1`; +if ($? != 0) { + $verbose and print "Failed to build testapi.so:\n$sobuild\n$_"; + return -1; +} + +# TEST 1 +# Check the gmk_expand() function +run_make_test(q! +EXPAND = expansion +all: ; @echo $(test-expand $$(EXPAND)) +load testapi.so +!, + '', "expansion\n"); + +# TEST 2 +# Check the eval operation. Prove that the argument is expanded only once +run_make_test(q! +load testapi.so +TEST = bye +ASSIGN = VAR = $(TEST) $(shell echo there) +$(test-eval $(value ASSIGN)) +TEST = hi +all:;@echo '$(VAR)' +!, + '', "hi there\n"); + +# TEST 2 +# Check the no-expand capability +run_make_test(q! +load testapi.so +TEST = hi +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. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/mult_rules b/local/recipes/dev/gnu-make/source/tests/scripts/features/mult_rules new file mode 100644 index 0000000000..bddd501c6a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/mult_rules @@ -0,0 +1,88 @@ +$description = "\ +The following test creates a makefile to test the presence +of multiple rules for one target. One file can be the +target of several rules if at most one rule has commands; +the other rules can only have dependencies."; + +$details = "\ +The makefile created in this test contains two hardcoded rules +for foo.o and bar.o. It then gives another multiple target rule +with the same names as above but adding more dependencies. +Additionally, another variable extradeps is listed as a +dependency but is defined to be null. It can however be defined +on the make command line as extradeps=extra.h which adds yet +another dependency to the targets."; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE < $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "bigoutput littleoutput: test.h\n"; +print MAKEFILE "\t\@echo I am \$(subst output,,\$@)\n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&touch("test.h"); + +&run_make_with_options($makefile,"bigoutput",&get_logfile); + + +# Create the answer to what should be produced by this Makefile +$answer = "I am big\n"; + +&compare_output($answer,&get_logfile(1)); + +&run_make_with_options($makefile,"littleoutput",&get_logfile); +$answer = "I am little\n"; +&compare_output($answer,&get_logfile(1)); + +unlink "test.h"; + +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/order_only b/local/recipes/dev/gnu-make/source/tests/scripts/features/order_only new file mode 100644 index 0000000000..4ebdc2b8da --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/order_only @@ -0,0 +1,118 @@ +# -*-perl-*- +$description = "Test order-only prerequisites."; + +$details = "\ +Create makefiles with various combinations of normal and order-only +prerequisites and ensure they behave properly. Test the \$| variable."; + +# TEST #0 -- Basics + +run_make_test(' +%r: | baz ; @echo $< $^ $| +bar: foo +foo:;@: +baz:;@:', + '', "foo foo baz\n"); + +# TEST #1 -- First try: the order-only prereqs need to be built. + +run_make_test(q! +foo: bar | baz + @echo '$$^ = $^' + @echo '$$| = $|' + touch $@ + +.PHONY: baz + +bar baz: + touch $@!, + '', "touch bar\ntouch baz\n\$^ = bar\n\$| = baz\ntouch foo\n"); + + +# TEST #2 -- now we do it again: baz is PHONY but foo should _NOT_ be updated + +run_make_test(undef, '', "touch baz\n"); + +unlink(qw(foo bar baz)); + +# TEST #3 -- Make sure the order-only prereq was promoted to normal. + +run_make_test(q! +foo: bar | baz + @echo '$$^ = $^' + @echo '$$| = $|' + touch $@ + +foo: baz + +.PHONY: baz + +bar baz: + touch $@!, + '', "touch bar\ntouch baz\n\$^ = bar baz\n\$| = \ntouch foo\n"); + + +# TEST #4 -- now we do it again + +run_make_test(undef, '', "touch baz\n\$^ = bar baz\n\$| = \ntouch foo\n"); + +unlink(qw(foo bar baz)); + +# Test empty normal prereqs + +# TEST #5 -- make sure the parser was correct. + +run_make_test(q! +foo:| baz + @echo '$$^ = $^' + @echo '$$| = $|' + touch $@ + +.PHONY: baz + +baz: + touch $@!, + '', "touch baz\n\$^ = \n\$| = baz\ntouch foo\n"); + +# TEST #6 -- now we do it again: this time foo won't be built + +run_make_test(undef, '', "touch baz\n"); + +unlink(qw(foo baz)); + +# Test order-only in pattern rules + +# TEST #7 -- make sure the parser was correct. + +run_make_test(q! +%.w : %.x | baz + @echo '$$^ = $^' + @echo '$$| = $|' + touch $@ + +all: foo.w + +.PHONY: baz +foo.x baz: + touch $@!, + '', + "touch foo.x\ntouch baz\n\$^ = foo.x\n\$| = baz\ntouch foo.w\n"); + +# TEST #8 -- now we do it again: this time foo.w won't be built + +run_make_test(undef, '', "touch baz\n"); + +unlink(qw(foo.w foo.x baz)); + +# TEST #9 -- make sure that $< is set correctly in the face of order-only +# prerequisites in pattern rules. + +run_make_test(' +%r: | baz ; @echo $< $^ $| +bar: foo +foo:;@: +baz:;@:', + '', "foo foo baz\n"); + + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/output-sync b/local/recipes/dev/gnu-make/source/tests/scripts/features/output-sync new file mode 100644 index 0000000000..13a54ca08a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/output-sync @@ -0,0 +1,371 @@ +# -*-perl-*- + +$description = "Test --output-sync (-O) option."; + +$details = "Test the synchronization of output from parallel jobs."; + +# If we don't have output sync support, never mind. +exists $FEATURES{'output-sync'} or return -1; + +# Output sync can't be tested without parallelization +$parallel_jobs or return -1; + + +# The following subdirectories with Makefiles are used in several +# of the following tests. The model is: +# foo/Makefile - has a "foo" target that waits for the bar target +# bar/Makefile - has a "bar" target that runs immediately +# - has a "baz" target that waits for the foo target +# +# So, you start the two sub-makes in parallel and first the "bar" target is +# built, followed by "foo", followed by "baz". The trick is that first each +# target prints a "start" statement, then waits (if appropriate), then prints +# an end statement. Thus we can tell if the -O flag is working, since +# otherwise these statements would be mixed together. + +@syncfiles = (); + +sub output_sync_clean { + rmfiles('foo/Makefile', 'bar/Makefile', @syncfiles); + rmdir('foo'); + rmdir('bar'); +} + +# We synchronize the different jobs by having them wait for a sentinel file to +# be created, instead of relying on a certain amount of time passing. +# Unfortunately in this test we have to sleep after we see the sync file, +# since we also want to make the obtaining of the write synchronization lock +# reliable. If things are too fast, then sometimes a different job will steal +# the output sync lock and the output is mis-ordered from what we expect. +sub output_sync_wait { + return subst_make_string("#HELPER# -q wait ../mksync.$_[0] sleep 1"); +} +sub output_sync_set { + return subst_make_string("#HELPER# -q file ../mksync.$_[0]"); +} + +@syncfiles = qw(mksync.foo mksync.foo_start mksync.bar mksync.bar_start); + +$tmout = 30; + +output_sync_clean(); +mkdir('foo', 0777); +mkdir('bar', 0777); + +$set_foo = output_sync_set('foo'); +$set_bar = output_sync_set('bar'); +$set_foo_start = output_sync_set('foo_start'); +$set_bar_start = output_sync_set('bar_start'); + +$wait_foo = output_sync_wait('foo'); +$wait_bar = output_sync_wait('bar'); +$wait_foo_start = output_sync_set('foo_start'); +$wait_bar_start = output_sync_set('bar_start'); + +open(MAKEFILE,"> foo/Makefile"); +print MAKEFILE < bar/Makefile"); +print MAKEFILE <&2) +!, + '-w -Oline', "#MAKE#: Entering directory '#PWD#'\nfoo\n#MAKE#: Leaving directory '#PWD#'\n"); + +# Ensure that output generated while parsing makefiles is synced +# when appropriate. +run_make_test(q! +$(shell echo foo 1>&2) +all: ; echo bar +!, + '-s -w -Otarget', "#MAKE#: Entering directory '#PWD#'\nfoo\n#MAKE#: Leaving directory '#PWD#'\n#MAKE#: Entering directory '#PWD#'\nbar\n#MAKE#: Leaving directory '#PWD#'\n"); + +# Test recursion +$m1 = get_tmpfile(); +$m2 = get_tmpfile(); + +open(M1, "> $m1"); +print M1 <<'EOF'; +$(shell echo d1 stderr 1>&2) +$(info d1 stdout) +all:; @: +EOF +close(M1); + +open(M2, "> $m2"); +print M2 <<'EOF'; +$(shell echo d2 stderr 1>&2) +$(info d2 stdout) +all:; @: +# Force an ordering on the output +$(shell sleep 1) +EOF +close(M2); + +run_make_test(qq! +all: t1 t2 +t1: ; \@\$(MAKE) -f $m1 +t2: ; \@\$(MAKE) -f $m2 +!, + "-j -Oline", "#MAKE#[1]: Entering directory '#PWD#'\nd1 stderr\nd1 stdout\n#MAKE#[1]: Leaving directory '#PWD#'\n#MAKE#[1]: Entering directory '#PWD#'\nd2 stderr\nd2 stdout\n#MAKE#[1]: Leaving directory '#PWD#'\n"); + +rmfiles($m1, $m2); + +# Ensure that output generated while parsing makefiles is synced +# when appropriate. +$m1 = get_tmpfile(); + +open(M1, "> $m1"); +print M1 <<'EOF'; +$(shell echo d1 stderr 1>&2) +$(info d1 stdout) +$(error d1 failed) +all:; @: +EOF +close(M1); + +run_make_test(qq! +all: t1 +t1: ; -\@\$(MAKE) -f $m1 +!, + "-j -Oline", "#MAKE#[1]: Entering directory '#PWD#'\nd1 stderr\nd1 stdout\n$m1:3: *** d1 failed. Stop.\n#MAKE#[1]: Leaving directory '#PWD#'\n#MAKE#: [#MAKEFILE#:3: t1] Error 2 (ignored)\n"); + +rmfiles($m1); + +# Test $(error ...) functions in recipes + +run_make_test(q! +foo: $(OBJS) ; echo $(or $(filter %.o,$^),$(error fail)) +!, + '-O', "#MAKEFILE#:2: *** fail. Stop.\n", 512); + +# SV 47365: Make sure exec failure error messages are shown +# Needs to be ported to Windows +if ($port_type ne 'W32') { + run_make_test(q! +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/local/recipes/dev/gnu-make/source/tests/scripts/features/override b/local/recipes/dev/gnu-make/source/tests/scripts/features/override new file mode 100644 index 0000000000..fff6c4e827 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/override @@ -0,0 +1,45 @@ +# -*-perl-*- + +$description = "Test the override directive on variable assignments."; + +$details = ""; + +# TEST 0: Basic override + +run_make_test(' +X = start +override recur = $(X) +override simple := $(X) +X = end +all: ; @echo "$(recur) $(simple)" +', + 'recur=I simple=J', "end start\n"); + +# TEST 1: Override with append + +run_make_test(' +X += X1 +override X += X2 +override Y += Y1 +Y += Y2 +all: ; @echo "$(X) $(Y)" +', + '', "X1 X2 Y1\n"); + +# TEST 2: Override with append to the command line + +run_make_test(undef, 'X=C Y=C', "C X2 C Y1\n"); + +# Test override of define/endef + +run_make_test(' +override define foo +@echo First comes the definition. +@echo Then comes the override. +endef +all: ; $(foo) +', + 'foo=Hello', "First comes the definition.\nThen comes the override.\n"); + + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/parallelism b/local/recipes/dev/gnu-make/source/tests/scripts/features/parallelism new file mode 100644 index 0000000000..98ee8a308e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/parallelism @@ -0,0 +1,248 @@ +# -*-perl-*- + +$description = "Test parallelism (-j) option."; +$details = ""; + +if (!$parallel_jobs) { + return -1; +} + +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!, + '-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(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!, + '', "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(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!, + '-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(q! +all: 1 2; @#HELPER# out success +-include 1.inc 2.inc +.RECIPEPREFIX := > +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)); + + +# Test parallelism with included files--this time recurse first and make +# sure the jobserver works. +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) +-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' > $@!, + "-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)); + +# Grant Taylor reports a problem where tokens can be lost (not written back +# to the pipe when they should be): this happened when there is a $(shell ...) +# 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. + +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); + +# Michael Matz reported a bug where if make is running in +# parallel without -k and two jobs die in a row, but not too close to each +# other, then make will quit without waiting for the rest of the jobs to die. + +run_make_test(q! +.PHONY: all fail.1 fail.2 fail.3 ok +all: fail.1 ok fail.2 fail.3 + +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# -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.... +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. +# +run_make_test(' +.PHONY: all +all:; @: + +-include foo.d + +foo.d: comp ; @#HELPER# out $@ + +comp: mod_a.o mod_b.o; @: + +mod_a.o mod_b.o: ; @#HELPER# fail 1 +', '-j2', "fail 1\nfail 1\n"); + + +# TEST #9 -- Savannah bugs 3330 and 15919 +# In earlier versions of make this will either give the wrong answer, or hang. + +utouch(-10, 'target'); +run_make_test('target: intermed ; #HELPER# file $@ + +.INTERMEDIATE: intermed +intermed: | phony ; #HELPER# file $@ + +.PHONY: phony +phony: ; : phony', '-rR -j', ': phony'); +rmfiles('target'); + +# TEST #11: Make sure -jN from MAKEFLAGS is processed even when we re-exec +# See Savannah bug #33873 + +$ENV{MAKEFLAGS} = '-j4'; + +run_make_test(q! +things = thing1 thing2 +all: $(things) +thing1:; @#HELPER# wait thing2start file $@start wait thing2end out $@end +thing2:; @#HELPER# file $@start wait thing1start file $@end +-include inc.mk +inc.mk: ; @touch $@ +!, + '', "file thing2start\nwait thing2start\nfile thing1start\nwait thing1start\nfile thing2end\nwait thing2end\nthing1end\n"); + +rmfiles(qw(inc.mk thing1start thing1end thing2start thing2end)); + +# Ensure intermediate/secondary files are not pruned incorrectly. +# See Savannah bug #30653 + +utouch(-15, 'file2'); +utouch(-10, 'file4'); +utouch(-5, 'file1'); + +run_make_test(q! +.INTERMEDIATE: file3 +file4: file3 ; @mv -f $< $@ +file3: file2 ; touch $@ +file2: file1 ; @touch $@ +!, + '--no-print-directory -j2', "touch file3"); + +rmfiles('file1', 'file2', 'file3', 'file4'); + +# Ensure that the jobserver is preserved across make re-exec. + +run_make_test(q! +all: one two +one: ;@ #HELPER# wait TWO file ONE +two: ;@ #HELPER# file TWO +include fff1.mk +fff1.mk: ; touch $@ +!, + '-j2', "touch fff1.mk\nfile TWO\nwait TWO\nfile ONE\n"); + +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 + +run_make_test(q! +all: ; @$(MAKE) -f #MAKEFILE# recurse + +recurse: one two ; @#HELPER# out $@ +one: ;@ #HELPER# wait TWO file ONE +two: ;@ #HELPER# file TWO + +mkinclude: ; touch fff1.mk + +ifeq ($(MAKECMDGOALS),recurse) +include fff1.mk +fff1.mk: ; @$(MAKE) -f #MAKEFILE# mkinclude +endif +!, + '--no-print-directory -j2', "touch fff1.mk\nfile TWO\nwait TWO\nfile ONE\nrecurse\n"); + +rmfiles('fff1.mk', 'ONE', 'TWO'); + + +# Make sure that all jobserver FDs are closed if we need to re-exec the +# master copy. +# +# First, find the "default" file descriptors we normally use +# Then make sure they're still used. +# +# Right now we don't have a way to run a makefile and capture the output +# without checking it, so we can't really write this test. + +# run_make_test(' +# submake: ; @$(MAKE) --no-print-directory -f #MAKEFILE# fdprint 5>output + +# dependfile: ; @echo FOO=bar > $@ + +# INCL := true + +# FOO=foo +# ifeq ($(INCL),true) +# -include dependfile +# endif + +# fdprint: ; @echo $(filter --jobserver%,$(MAKEFLAGS)) + +# recurse: ; @$(MAKE) --no-print-directory -f #MAKEFILE# submake INCL=true', +# '-j2 INCL=false fdprint', +# 'bar'); + +# rmfiles(qw(dependfile output)); + + +# # Do it again, this time where the include is done by the non-master make. +# run_make_test(undef, '-j2 recurse INCL=false', 'bar'); + +# rmfiles(qw(dependfile output)); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/patspecific_vars b/local/recipes/dev/gnu-make/source/tests/scripts/features/patspecific_vars new file mode 100644 index 0000000000..a530bba10a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/patspecific_vars @@ -0,0 +1,148 @@ +# -*-perl-*- +$description = "Test pattern-specific variable settings."; + +$details = "\ +Create a makefile containing various flavors of pattern-specific variable +settings, override and non-override, and using various variable expansion +rules, semicolon interference, etc."; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE <<'EOF'; +all: one.x two.x three.x +FOO = foo +BAR = bar +BAZ = baz +one.x: override FOO = one +%.x: BAR = two +t%.x: BAR = four +thr% : override BAZ = three +one.x two.x three.x: ; @echo $@: $(FOO) $(BAR) $(BAZ) +four.x: baz ; @echo $@: $(FOO) $(BAR) $(BAZ) +baz: ; @echo $@: $(FOO) $(BAR) $(BAZ) + +# test matching multiple patterns +a%: AAA = aaa +%b: BBB = ccc +a%: BBB += ddd +%b: AAA ?= xxx +%b: AAA += bbb +.PHONY: ab +ab: ; @echo $(AAA); echo $(BBB) +EOF + +close(MAKEFILE); + + +# TEST #1 -- basics + +&run_make_with_options($makefile, "", &get_logfile); +$answer = "one.x: one two baz\ntwo.x: foo four baz\nthree.x: foo four three\n"; +&compare_output($answer,&get_logfile(1)); + + +# TEST #2 -- try the override feature + +&run_make_with_options($makefile, "BAZ=five", &get_logfile); +$answer = "one.x: one two five\ntwo.x: foo four five\nthree.x: foo four three\n"; +&compare_output($answer,&get_logfile(1)); + + +# TEST #3 -- make sure patterns are inherited properly + +&run_make_with_options($makefile, "four.x", &get_logfile); +$answer = "baz: foo two baz\nfour.x: foo two baz\n"; +&compare_output($answer,&get_logfile(1)); + + +# TEST #4 -- test multiple patterns matching the same target + +&run_make_with_options($makefile, "ab", &get_logfile); +$answer = "aaa bbb\nccc ddd\n"; +&compare_output($answer,&get_logfile(1)); + +# TEST #5 -- test pattern-specific exported variables +# +run_make_test(' +/%: export foo := foo + +/bar: + @echo $(foo) $$foo +', '', 'foo foo'); + + +# TEST #6 -- test expansion of pattern-specific simple variables +# +run_make_test(' +.PHONY: all + +all: inherit := good $$t +all: bar baz + +b%: pattern := good $$t + +global := original $$t + + +# normal target +# +ifdef rec +bar: a = global: $(global) pattern: $(pattern) inherit: $(inherit) +else +bar: a := global: $(global) pattern: $(pattern) inherit: $(inherit) +endif + +bar: ; @echo \'normal: $a;\' + + +# pattern target +# +ifdef rec +%z: a = global: $(global) pattern: $(pattern) inherit: $(inherit) +else +%z: a := global: $(global) pattern: $(pattern) inherit: $(inherit) +endif + +%z: ; @echo \'pattern: $a;\' + + +global := new $$t +', +'', +'normal: global: original $t pattern: inherit: ; +pattern: global: original $t pattern: inherit: ;'); + + +# TEST #7 -- test expansion of pattern-specific recursive variables +# +run_make_test(undef, # reuse previous makefile +'rec=1', +'normal: global: new $t pattern: good $t inherit: good $t; +pattern: global: new $t pattern: good $t inherit: good $t;'); + +# TEST #8: override in pattern-specific variables + +run_make_test(' +a%: override FOO += f1 +a%: FOO += f2 +ab: ; @echo "$(FOO)" +', + '', "f1\n"); + +run_make_test(undef, 'FOO=C', "C f1\n"); + +# TEST #9: Test shortest stem selection in pattern-specific variables. + +run_make_test(' +%-mt.x: x := two +%.x: x := one + +all: foo.x foo-mt.x + +foo.x: ;@echo $x +foo-mt.x: ;@echo $x +', +'', +"one\ntwo"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/patternrules b/local/recipes/dev/gnu-make/source/tests/scripts/features/patternrules new file mode 100644 index 0000000000..0b35408d78 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/patternrules @@ -0,0 +1,676 @@ +# -*-perl-*- + +$description = "Test pattern rules."; + +$details = ""; + +use Cwd; + +$dir = cwd; +$dir =~ s,.*/([^/]+)$,../$1,; + + +# TEST #0: Make sure that multiple patterns where the same target +# can be built are searched even if the first one fails +# to match properly. +# + +run_make_test(q! +.PHONY: all + +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 + +# 2 - phony +%.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.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). +# +run_make_test(' +TARGETS := foo foo.out + +.PHONY: all foo.in + +all: $(TARGETS) + +%: %.in ; @echo $@ + +%.out: % ; @echo $@ + +foo.in: ; @: + +', + '', "foo\nfoo.out"); + + +# TEST #2: make sure intermediate files that also happened to be +# prerequisites are not removed (Savannah bug #12267). +# +run_make_test(' +$(dir)/foo.o: + +$(dir)/foo.y: ; @echo $@ + +%.c: %.y ; touch $@ + +%.o: %.c ; @echo $@ + +.PHONY: install +install: $(dir)/foo.c + +', + "dir=$dir", "$dir/foo.y\ntouch $dir/foo.c\n$dir/foo.o"); + +unlink("$dir/foo.c"); + + +# TEST #3: make sure precious flag is set properly for targets +# that are built via implicit rules (Savannah bug #13218). +# +run_make_test(' +.DELETE_ON_ERROR: + +.PRECIOUS: %.bar + +%.bar:; @touch $@ && exit 1 + +$(dir)/foo.bar: + +', + "dir=$dir", + "#MAKE#: *** [#MAKEFILE#:6: $dir/foo.bar] Error 1", 512); + +unlink("$dir/foo.bar"); + + +# TEST #4: make sure targets of a matched implicit pattern rule are +# never considered intermediate (Savannah bug #13022). +# +run_make_test(' +.PHONY: all +all: foo.c foo.o + +%.h %.c: %.in ; touch $*.h ; touch $*.c + +%.o: %.c %.h ; echo $+ >$@ + +%.o: %.c ; @echo wrong rule + +foo.in: ; touch $@ + +', + '', "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'); + +# TEST #5: make sure both prefix and suffix patterns work with multiple +# target patterns (Savannah bug #26593). +# +run_make_test(' +all: foo.s1 foo.s2 p1.foo p2.foo + +p1.% p2.%: %.orig ; @echo $@ +%.s1 %.s2: %.orig ; @echo $@ + +.PHONY: foo.orig +', + '', "foo.s1\np1.foo\n"); + +# TEST 6: Make sure that non-target files are still eligible to be created +# as part of implicit rule chaining. Savannah bug #17752. + +run_make_test(sprintf(q! +BIN = xyz +COPY = $(BIN).cp +SRC = $(BIN).c +allbroken: $(COPY) $(BIN) ; @echo ok +$(SRC): ; @echo 'main(){}' > $@ +%%.cp: %% ; @cp $< $@ +%% : %%.c ; @cp $< $@ +clean: ; @%s $(SRC) $(COPY) $(BIN) +!, $CMD_rmfile), + '', "ok\n"); + +unlink(qw(xyz xyz.cp xyz.c)); + +# TEST 7: Make sure that all prereqs of all "also_make" targets get created +# before any of the things that depend on any of them. Savannah bug #19108. + +run_make_test(q! +final: x ; @echo $@ +x: x.t1 x.t2 ; @echo $@ +x.t2: dep +dep: ; @echo $@ +%.t1 %.t2: ; @echo $*.t1 ; echo $*.t2 +!, + '', "dep\nx.t1\nx.t2\nx\nfinal\n"); + + +# TEST 8: Verify we can remove pattern rules. Savannah bug #18622. + +my @f = (qw(foo.w foo.ch)); +touch(@f); + +run_make_test(q! +CWEAVE := : + +# Disable builtin rules +%.tex : %.w +%.tex : %.w %.ch +!, + 'foo.tex', + "#MAKE#: *** No rule to make target 'foo.tex'. Stop.", 512); + +unlink(@f); + +# TEST #9: Test shortest stem selection in pattern rules. + +run_make_test(' +%.x: ;@echo one +%-mt.x: ;@echo two + +all: foo.x foo-mt.x +', + '', "one\ntwo"); + +# Test pattern rules building the same targets +# 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 + +%.elf %.lnk: %.c ; : $*.elf $*.lnk + +%.elf %.dbg: %.lnk ; : $*.elf $*.dbg +!, + '-j2', ": a.elf a.lnk\n: a.elf a.dbg\n"); + +# 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"); + +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; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/quoting b/local/recipes/dev/gnu-make/source/tests/scripts/features/quoting new file mode 100644 index 0000000000..b7d95268b3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/quoting @@ -0,0 +1,31 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to test using \n" . + "quotes within makefiles."; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE <<'EOM'; +TEXFONTS = NICEFONT +DEFINES = -DDEFAULT_TFM_PATH=\".:$(TEXFONTS)\" +test: ; @"echo" 'DEFINES = $(DEFINES)' +EOM + +# 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 = 'DEFINES = -DDEFAULT_TFM_PATH=\".:NICEFONT\"' . "\n"; + +# COMPARE RESULTS + +&compare_output($answer,&get_logfile(1)); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/recursion b/local/recipes/dev/gnu-make/source/tests/scripts/features/recursion new file mode 100644 index 0000000000..d225c13750 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/recursion @@ -0,0 +1,67 @@ +# -*-perl-*- +$description = "Test recursion."; + +$details = "DETAILS"; + +# Test some basic recursion. +run_make_test(' +.RECIPEPREFIX := | +all: +| $(MAKE) -f #MAKEFILE# foo +foo: +| @echo $(MAKE) +| @echo MAKELEVEL = $(MAKELEVEL) +| $(MAKE) -f #MAKEFILE# last +last: +| @echo $(MAKE) +| @echo MAKELEVEL = $(MAKELEVEL) +| @echo THE END +', + ('CFLAGS=-O -w' . ($parallel_jobs ? ' -j 2' : '')), + ($vos + ? "#MAKE#: Entering directory '#PWD#' +make 'CFLAGS=-O' -f #MAKEFILE# foo +make CFLAGS=-O +MAKELEVEL = 0 +make 'CFLAGS=-O' -f #MAKEFILE# last +make CFLAGS=-O +MAKELEVEL = 0 +THE END +#MAKE#: Leaving directory '#PWD#'" + : "#MAKE#: Entering directory '#PWD#' +#MAKEPATH# -f #MAKEFILE# foo +#MAKE#[1]: Entering directory '#PWD#' +#MAKEPATH# +MAKELEVEL = 1 +#MAKEPATH# -f #MAKEFILE# last +#MAKE#[2]: Entering directory '#PWD#' +#MAKEPATH# +MAKELEVEL = 2 +THE END +#MAKE#[2]: Leaving directory '#PWD#' +#MAKE#[1]: Leaving directory '#PWD#' +#MAKE#: Leaving directory '#PWD#'")); + + +# Test command line overrides. +run_make_test(' +recur: all ; @$(MAKE) --no-print-directory -f #MAKEFILE# a=AA all +all: ; @echo "MAKEOVERRIDES = $(MAKEOVERRIDES)" +', + 'a=ZZ', + 'MAKEOVERRIDES = a=ZZ +MAKEOVERRIDES = a=AA +'); + +# SV 46013: Ensure that MAKEOVERRIDES is passed even if set in the makefile +run_make_test(q! +ifeq ($(MAKELEVEL),0) +MAKEOVERRIDES += FOO+=bar +endif +.PHONY: M R +M: ; @$(MAKE) --no-print-directory -f #MAKEFILE# R +R: ; @echo '$(FOO)' +!, + '', 'bar'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/reinvoke b/local/recipes/dev/gnu-make/source/tests/scripts/features/reinvoke new file mode 100644 index 0000000000..07cbbfbe91 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/reinvoke @@ -0,0 +1,180 @@ +# -*-mode: perl-*- + +$description = "Test GNU make's auto-reinvocation feature."; + +$details = "\ +If the makefile or one it includes can be rebuilt then it is, and make +is reinvoked. We create a rule to rebuild the makefile from a temp +file, then touch the temp file to make it newer than the makefile."; + +$omkfile = $makefile; + +&utouch(-600, 'incl.mk'); +# For some reason if we don't do this then the test fails for systems +# with sub-second timestamps, maybe + NFS? Not sure. +&utouch(-1, 'incl-1.mk'); + +run_make_test(' +all: ; @echo running rules. + +#MAKEFILE# incl.mk: incl-1.mk ; @echo rebuilding $@; echo >> $@ + +include incl.mk', + '', "rebuilding incl.mk\nrunning rules.\n"); + +# Make sure updating the makefile itself also works + +&utouch(-600, $omkfile); + +run_make_test(undef, '', "rebuilding #MAKEFILE#\nrunning rules.\n"); + +&rmfiles('incl.mk', 'incl-1.mk'); + + +# In this test we create an included file that's out-of-date, but then +# the rule doesn't update it. Make shouldn't re-exec. + +&utouch(-600, 'b','a'); +#&utouch(-10, 'a'); +&touch('c'); + +run_make_test(' +all: ; @echo hello + +a : b ; echo >> $@ + +b : c ; test -f $@ || echo >> $@ + +c: ; echo >> $@ + +include $(F)', + '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', "test -f b || echo >> b\nhello\n"); + +&rmfiles('a','b','c'); + +# Ensure command line variables are preserved properly across re-exec +# Tests for Savannah bug #30723 + +run_make_test(' +ifdef RECURSE +-include foo30723 +endif +recurse: ; @$(MAKE) -f $(MAKEFILE_LIST) RECURSE=1 test +test: ; @echo F.O=$(F.O) +foo30723: ; @touch $@ +', + '--no-print-directory F.O=bar', "F.O=bar\n"); + +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; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/rule_glob b/local/recipes/dev/gnu-make/source/tests/scripts/features/rule_glob new file mode 100644 index 0000000000..2d377e7ead --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/rule_glob @@ -0,0 +1,37 @@ +# -*-perl-*- + +$description = "Test globbing in targets and prerequisites."; + +$details = ""; + +touch(qw(a.one a.two a.three)); + +# Test wildcards in regular targets and prerequisites +run_make_test(q{ +.PHONY: all a.one a.two a.three +all: a.one* a.t[a-z0-9]o a.th[!q]ee +a.o[Nn][Ee] a.t*: ; @echo $@ +}, + '', "a.one\na.two\na.three"); + +# Test wildcards in pattern targets and prerequisites +run_make_test(q{ +.PHONY: all +all: a.four +%.four : %.t* ; @echo $@: $(sort $^) +}, + '', "a.four: a.three a.two"); + +# Test wildcards in second expansion targets and prerequisites +run_make_test(q{ +.PHONY: all +all: a.four +.SECONDEXPANSION: +%.four : $$(sort %.t*) ; @echo $@: $(sort $^) +}, + '', "a.four: a.three a.two"); + +unlink(qw(a.one a.two a.three)); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/se_explicit b/local/recipes/dev/gnu-make/source/tests/scripts/features/se_explicit new file mode 100644 index 0000000000..d1247d40af --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/se_explicit @@ -0,0 +1,504 @@ +# -*-perl-*- +$description = "Test second expansion in ordinary rules."; + +$details = ""; + +# TEST #0: Test handing of '$' in prerequisites with and without second +# expansion. + +# If we don't support archives then the prerequisite is different +my $prereq = exists $FEATURES{'archives'} ? '$' : '$(PRE)'; + +run_make_test(q! +ifdef SE + .SECONDEXPANSION: +endif +foo$$bar: bar$$baz bar$$biz ; @echo '$@ : $^' +PRE = one two +bar$$baz: $$(PRE) +baraz: $$(PRE) +PRE = three four +.DEFAULT: ; @echo '$@' +!, + '', + "$prereq\nbar\$biz\nfoo\$bar : bar\$baz bar\$biz"); + +run_make_test(undef, 'SE=1', "three\nfour\nbariz\nfoo\$bar : baraz bariz"); + +# TEST #1: automatic variables. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +foo: bar baz + +foo: biz | buz + +foo: $$@.1 \ + $$<.2 \ + $$(addsuffix .3,$$^) \ + $$(addsuffix .4,$$+) \ + $$|.5 \ + $$*.6 + +!, +'', +'bar +baz +biz +buz +foo.1 +bar.2 +bar.3 +baz.3 +biz.3 +bar.4 +baz.4 +biz.4 +buz.5 +.6 +'); + + +# Test #2: target/pattern -specific variables. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +foo.x: $$a $$b + +foo.x: a := bar + +%.x: b := baz +!, +'', +'bar +baz +'); + + +# Test #3: order of prerequisites. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +all: foo bar baz + +# Subtest #1 +foo: foo.1; @: +foo: foo.2 +foo: foo.3 + +# Subtest #2 +bar: bar.2 +bar: bar.1; @: +bar: bar.3 + +# Subtest #3 +baz: baz.1 +baz: baz.2 +baz: ; @: +!, +'', +'foo.1 +foo.2 +foo.3 +bar.1 +bar.2 +bar.3 +baz.1 +baz.2 +'); + +# TEST #4: eval in a context where there is no reading_file +run_make_test(q! +.SECONDEXPANSION: +all : $$(eval $$(info test)) +!, + '', "test\n#MAKE#: Nothing to be done for 'all'.\n"); + +# TEST #5: (NEGATIVE) catch eval in a prereq list trying to create new +# target/prereq relationships. + +run_make_test(q! +.SECONDEXPANSION: +proj1.exe : proj1.o $$(eval $$(test)) +define test +proj1.o : proj1.c +proj1.c: proj1.h +endef +!, + '', "#MAKE#: *** prerequisites cannot be defined in recipes. Stop.\n", 512); + + +# Automatic $$+ variable expansion issue. Savannah bug #25780 +run_make_test(q! +all : foo foo +.SECONDEXPANSION: +all : $$+ ; @echo '$+' +foo : ; +!, + '', "foo foo foo foo\n"); + + +# Automatic $$+ variable expansion issue. Savannah bug #25780 +run_make_test(q! +all : bar bar +bar : ; +q%x : ; +.SECONDEXPANSION: +a%l: q1x $$+ q2x ; @echo '$+' +!, + '', "q1x bar bar q2x bar bar\n"); + + +# Allow patsubst shorthand in second expansion context. +# Requires the colon to be quoted. Savannah bug #16545 +run_make_test(q! +.PHONY: foo.bar +.SECONDEXPANSION: +foo: $$(@\\:%=%.bar); @echo '$^' +!, + '', "foo.bar\n"); + +# SV 54549 : Ensure we don't free used variable_sets +run_make_test(q! +foo: -lcat + +# Removing second expansion prevents segfault +.SECONDEXPANSION: +foo: $$@.o ; + +# Having an empty command here prevents segfault unless, +# the environment is empty. `env -i make foo` +# MFLAGS=-w or MAKEFLAGS=-w `env MFLAGS=-w make foo` +# libcat.a target calls an extra command, `@true \n @touch $@` +# odd. +%.o: ; @true + +# Having an empty command prevents segfault. +-l%: lib%.a ; @true + +# Not creating libcat.a here prevents segfault, +libcat.a: ; @touch $@ +!, + '', 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 '-lcat' will be ignored in favor of the one for 'libcat.a'.!); +unlink('libcat.a'); + +# SV 28456 : Don't reset $$< for default recipes +run_make_test(q! +.SECONDEXPANSION: + +.PHONY: biz baz +biz: baz ; +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/local/recipes/dev/gnu-make/source/tests/scripts/features/se_implicit b/local/recipes/dev/gnu-make/source/tests/scripts/features/se_implicit new file mode 100644 index 0000000000..c9d7ca9f4d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/se_implicit @@ -0,0 +1,506 @@ +# -*-perl-*- +$description = "Test second expansion in implicit rules."; + +$details = ""; + +use Cwd; + +$dir = cwd; +$dir =~ s,.*/([^/]+)$,../$1,; + + +# Test #1: automatic variables. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +foo.a: bar baz + +foo.a: biz | buz + +foo.%: 1.$$@ \ + 2.$$< \ + $$(addprefix 3.,$$^) \ + $$(addprefix 4.,$$+) \ + 5.$$| \ + 6.$$* ; @: + +1.foo.a \ +2.bar \ +3.bar \ +3.baz \ +3.biz \ +4.bar \ +4.baz \ +4.biz \ +5.buz \ +6.a: ; @echo '$@' + +!, +'', +'1.foo.a +2.bar +3.bar +3.baz +3.biz +4.bar +4.baz +4.biz +5.buz +6.a +bar +baz +biz +buz +'); + + +# Test #2: target/pattern -specific variables. +# +run_make_test(q! +.SECONDEXPANSION: +foo.x: + +foo.%: $$(%_a) $$(%_b) bar ; @: + +foo.x: x_a := bar + +%.x: x_b := baz + +bar baz: ; @echo '$@' +!, + '', "bar\nbaz\n"); + + +# Test #3: order of prerequisites. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +all: foo bar baz + + +# Subtest #1 +# +%oo: %oo.1; @: + +foo: foo.2 + +foo: foo.3 + +foo.1: ; @echo '$@' + + +# Subtest #2 +# +bar: bar.2 + +%ar: %ar.1; @: + +bar: bar.3 + +bar.1: ; @echo '$@' + + +# Subtest #3 +# +baz: baz.1 + +baz: baz.2 + +%az: ; @: +!, + '', +'foo.1 +foo.2 +foo.3 +bar.1 +bar.2 +bar.3 +baz.1 +baz.2 +'); + + +# Test #4: stem splitting logic. +# +run_make_test(q! +.SECONDEXPANSION: +$(dir)/tmp/bar.o: + +$(dir)/tmp/foo/bar.c: ; @echo '$@' +$(dir)/tmp/bar/bar.c: ; @echo '$@' +foo.h: ; @echo '$@' + +%.o: $$(addsuffix /%.c,foo bar) foo.h ; @echo '$@: {$<} $^' +!, + "dir=$dir", "$dir/tmp/foo/bar.c +$dir/tmp/bar/bar.c +foo.h +$dir/tmp/bar.o: {$dir/tmp/foo/bar.c} $dir/tmp/foo/bar.c $dir/tmp/bar/bar.c foo.h +"); + + +# Test #5: stem splitting logic and order-only prerequisites. +# +run_make_test(q! +.SECONDEXPANSION: +$(dir)/tmp/foo.o: $(dir)/tmp/foo.c +$(dir)/tmp/foo.c: ; @echo '$@' +bar.h: ; @echo '$@' + +%.o: %.c|bar.h ; @echo '$@: {$<} {$|} $^' + +!, + "dir=$dir", "$dir/tmp/foo.c +bar.h +$dir/tmp/foo.o: {$dir/tmp/foo.c} {bar.h} $dir/tmp/foo.c +"); + + +# Test #6: lack of implicit prerequisites. +# +run_make_test(q! +.SECONDEXPANSION: +foo.o: foo.c +foo.c: ; @echo '$@' + +%.o: ; @echo '$@: {$<} $^' +!, + '', "foo.c\nfoo.o: {foo.c} foo.c\n"); + + +# Test #7: Test stem from the middle of the name. +# +run_make_test(q! +.SECONDEXPANSION: +foobarbaz: + +foo%baz: % $$*.1 ; @echo '$*' + +bar bar.1: ; @echo '$@' +!, + '', "bar\nbar.1\nbar\n"); + + +# Test #8: Make sure stem triple-expansion does not happen. +# +run_make_test(q! +.SECONDEXPANSION: +foo$$bar: + +f%r: % $$*.1 ; @echo '$*' + +oo$$ba oo$$ba.1: ; @echo '$@' +!, + '', 'oo$ba +oo$ba.1 +oo$ba +'); + +# Test #9: Check the value of $^ +run_make_test(q! +.SECONDEXPANSION: + +%.so: | $$(extra) ; @echo $^ + +foo.so: extra := foo.o +foo.so: +foo.o: +!, + '', "\n"); + +# Test #10: Test second expansion with second expansion prerequisites +# Ensures pattern_search() recurses with SE prereqs. +touch('a'); +run_make_test(q! +.SECONDEXPANSION: +sim_base_rgg := just_a_name +sim_base_src := a +sim_base_f := a a a +sim_%.f: $${sim_$$*_f} ; echo $@ +sim_%.src: $${sim_$$*_src} ; echo $@ +sim_%: \ + $$(if $$(sim_$$*_src),sim_%.src) \ + $$(if $$(sim_$$*_f),sim_%.f) \ + $$(if $$(sim_$$*_rgg),$$(sim_$$*_rgg).s) ; echo $@ +!, + '-s sim_base', "#MAKE#: *** No rule to make target 'sim_base'. Stop.", 512); + +unlink('a'); + +# Ensure that order-only tokens embedded in second expansions are parsed +run_make_test(q! +.SECONDEXPANSION: +PREREQS=p1|p2 +P2=p2 +all : foo bar +f%o: $$(PREREQS) ; @echo '$@' from '$^' and '$|' +b%r: p1|$$(P2) ; @echo '$@' from '$^' and '$|' +p% : ; : $@ +!, + "", ": p1\n: p2\nfoo from p1 and p2\nbar from p1 and p2\n"); + +# SV 28456 : Don't reset $$< for default recipes +run_make_test(q! +.SECONDEXPANSION: + +.PHONY: foo bar +foo: bar +foo: $$(info $$<) +%oo: ; +!, + '', "bar\n#MAKE#: Nothing to be done for 'foo'.\n"); + +# SV 54161: Expand $$* properly when it contains a path + +run_make_test(q! +.SECONDEXPANSION: +%x: $$(info $$*); @echo '$*' +!, + '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/local/recipes/dev/gnu-make/source/tests/scripts/features/se_statpat b/local/recipes/dev/gnu-make/source/tests/scripts/features/se_statpat new file mode 100644 index 0000000000..935ff3faa8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/se_statpat @@ -0,0 +1,232 @@ +# -*-perl-*- +$description = "Test second expansion in static pattern rules."; + +$details = ""; + +# Test #1: automatic variables. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +foo.a foo.b: foo.%: bar.% baz.% +foo.a foo.b: foo.%: biz.% | buz.% + +foo.a foo.b: foo.%: $$@.1 \ + $$<.2 \ + $$(addsuffix .3,$$^) \ + $$(addsuffix .4,$$+) \ + $$|.5 \ + $$*.6 +!, + '', 'bar.a +baz.a +biz.a +buz.a +foo.a.1 +bar.a.2 +bar.a.3 +baz.a.3 +biz.a.3 +bar.a.4 +baz.a.4 +biz.a.4 +buz.a.5 +a.6 +'); + + +# Test #2: target/pattern -specific variables. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +foo.x foo.y: foo.%: $$(%_a) $$($$*_b) + +foo.x: x_a := bar + +%.x: x_b := baz +!, + '', "bar\nbaz\n"); + + +# Test #3: order of prerequisites. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +all: foo.a bar.a baz.a + +# Subtest #1 +foo.a foo.b: foo.%: foo.%.1; @: +foo.a foo.b: foo.%: foo.%.2 +foo.a foo.b: foo.%: foo.%.3 + + +# Subtest #2 +bar.a bar.b: bar.%: bar.%.2 +bar.a bar.b: bar.%: bar.%.1; @: +bar.a bar.b: bar.%: bar.%.3 + + +# Subtest #3 +baz.a baz.b: baz.%: baz.%.1 +baz.a baz.b: baz.%: baz.%.2 +baz.a baz.b: ; @: +!, + '', 'foo.a.1 +foo.a.2 +foo.a.3 +bar.a.1 +bar.a.2 +bar.a.3 +baz.a.1 +baz.a.2 +'); + + +# Test #4: Make sure stem triple-expansion does not happen. +# +run_make_test(q! +.SECONDEXPANSION: +foo$$bar: f%r: % $$*.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/local/recipes/dev/gnu-make/source/tests/scripts/features/shell_assignment b/local/recipes/dev/gnu-make/source/tests/scripts/features/shell_assignment new file mode 100644 index 0000000000..686e4bd27c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/shell_assignment @@ -0,0 +1,65 @@ +# -*-perl-*- + +$description = "Test BSD-style shell assignments (VAR != VAL) for variables."; + +$details = ""; + +# TEST 0: Basic shell assignment (!=). + +run_make_test(' +.POSIX: + +demo1!=printf \' 1 2 3\n4\n\n5 \n \n 6\n\n\n\n\' +demo2 != printf \'7 8\n \' +demo3 != printf \'$$(demo2)\' +demo4 != printf \' 2 3 \n\' +demo5 != printf \' 2 3 \n\n\' +all: ; @echo "<$(demo1)> <$(demo2)> <$(demo3)> <$(demo4)> <${demo5}>" +', + '', "< 1 2 3 4 5 6 > <7 8 > <7 8 > < 2 3 > < 2 3 >\n"); + +# TEST 1: Handle '#' the same way as BSD make + +run_make_test(' +foo1!=echo bar#baz +hash != printf \'\043\' +foo2!= echo "bar$(hash)baz" + +all: ; @echo "<$(foo1)> <$(hash)> <$(foo2)>" +', + '', " <#> \n"); + +# TEST 2: shell assignment variables (from !=) should be recursive. +# Note that variables are re-evaluated later, so the shell can output +# a value like $(XYZZY) as part of !=. The $(XYZZY) will be EVALUATED +# when the value containing it is evaluated. On the negative side, this +# means if you don't want this, you need to escape dollar signs as $$. +# On the positive side, it means that shell programs can output macros +# that are then evaluated as they are traditionally evaluated.. and that +# you can use traditional macro evaluation semantics to implement !=. + +run_make_test(' +XYZZY = fiddle-dee-dee +dollar = $$ +VAR3 != printf \'%s\' \'$(dollar)(XYZZY)\' + +all: ; @echo "<$(VAR3)>" +', + '', "\n"); + + +# TEST 3: Overrides invoke shell anyway; they just don't store the result +# in a way that is visible. + +run_make_test(' + +override != echo abc > ,abc ; cat ,abc + +all: ; @echo "<$(override)>" ; cat ,abc +', + 'override=xyz', "\nabc\n"); + +unlink(',abc'); + + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/statipattrules b/local/recipes/dev/gnu-make/source/tests/scripts/features/statipattrules new file mode 100644 index 0000000000..e4e118ef64 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/statipattrules @@ -0,0 +1,311 @@ +# -*-perl-*- +$description = "Test handling of static pattern rules."; + +$details = "\ +The makefile created in this test has three targets. The +filter command is used to get those target names ending in +.o and statically creates a compile command with the target +name and the target name with .c. It also does the same thing +for another target filtered with .elc and creates a command +to emacs a .el file"; + +&touch('bar.c', 'lose.c'); + +# TEST #0 +# ------- + +run_make_test(' +files = foo.elc bar.o lose.o + +$(filter %.o,$(files)): %.o: %.c ; @echo CC -c $(CFLAGS) $< -o $@ + +$(filter %.elc,$(files)): %.elc: %.el ; @echo emacs $< +', + '', + 'CC -c bar.c -o bar.o'); + +# TEST #1 +# ------- + +run_make_test(undef, 'lose.o', 'CC -c lose.c -o lose.o'); + + +# TEST #2 +# ------- +&touch("foo.el"); + +run_make_test(undef, 'foo.elc', 'emacs foo.el'); + +# Clean up after the first tests. +unlink('foo.el', 'bar.c', 'lose.c'); + + +# TEST #3 -- PR/1670: don't core dump on invalid static pattern rules +# ------- + +run_make_test(' +.DEFAULT: ; @echo $@ +foo: foo%: % %.x % % % y.% % ; @echo $@ +', + '', ".x\ny.\nfoo"); + + +# TEST #4 -- bug #12180: core dump on a stat pattern rule with an empty +# prerequisite list. +run_make_test(' +foo.x bar.x: %.x : ; @echo $@ + +', + '', 'foo.x'); + + +# TEST #5 -- bug #13881: double colon static pattern rule does not +# substitute %. +run_make_test(' +foo.bar:: %.bar: %.baz +foo.baz: ;@: +', + '', ''); + + +# TEST #6: make sure the second stem does not overwrite the first +# 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 $^ + +.DEFAULT:;@: +', +'', +'all.foo +all.one all.foo.two'); + + +# TEST #7: make sure the second stem does not overwrite the first +# perprerequisite's stem when second expansion is enabled +# (Savannah bug #16053). +# +run_make_test(' +.RECIPEPREFIX := > +.SECONDEXPANSION: + +all.foo.bar: %.foo.bar: %.one $$*-one + +all.foo.bar: %.bar: %.two $$*-two + +all.foo.bar: +> @echo $* +> @echo $^ + +.DEFAULT:;@: +', +'', +'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/local/recipes/dev/gnu-make/source/tests/scripts/features/suffixrules b/local/recipes/dev/gnu-make/source/tests/scripts/features/suffixrules new file mode 100644 index 0000000000..b8f465267d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/suffixrules @@ -0,0 +1,99 @@ +# -*-perl-*- + +$description = "Test suffix rules."; + +$details = ""; + +# TEST #0: Clear all suffixes + +touch('foo.c'); + +run_make_test(q! +.SUFFIXES: +all: foo.o ; @echo $@ $< +!, + '', "#MAKE#: *** No rule to make target 'foo.o', needed by 'all'. Stop.\n", 512); + +unlink('foo.c'); + +# Test #1: Add a simple suffix rule + +touch('foo.baz'); + +run_make_test(q! +.SUFFIXES: .biz .baz + +.baz.biz: ; @echo make $@ +!, + 'foo.biz', "make foo.biz\n"); + +unlink('foo.baz'); + +# Test #2: Make sure the defaults still work + +touch('foo.c'); + +run_make_test(undef, 'foo.o COMPILE.c=@echo OUTPUT_OPTION=', "foo.c\n"); + +unlink('foo.c'); + +# Test #3: Replacing all suffixes + +touch('foo.baz'); + +run_make_test(q! +.SUFFIXES: +.SUFFIXES: .biz .baz + +.baz.biz: ; @echo make $@ +!, + 'foo.biz', "make foo.biz\n"); + +unlink('foo.baz'); + +# SV 40657: Test #4: "Suffix rules" with deps are normal rules + +my $prewarn = 'warning: ignoring prerequisites on suffix rule definition'; + +touch('foo.bar'); + +run_make_test(q! +.SUFFIXES: +.SUFFIXES: .biz .baz + +$X.POSIX: + +.baz.biz: foo.bar ; @echo make $@ from $< +!, + 'X=1 .baz.biz', "#MAKEFILE#:7: $prewarn\nmake .baz.biz from foo.bar\n"); + +# SV 40657: Test #5: In POSIX mode we don't get a warning + +run_make_test(undef, 'X= .baz.biz', "make .baz.biz from foo.bar\n"); + +unlink('foo.bar'); + +# SV 40657: Test #6: In POSIX mode, no pattern rules should be created + +utouch(-20, 'foo.baz'); + +run_make_test(undef, + 'X= foo.biz', "#MAKE#: *** No rule to make target 'foo.biz'. Stop.\n", 512); + +# SV 40657: Test #7: In Non-POSIX mode, a pattern rule is created + +run_make_test(undef, + 'X=1 foo.biz', "#MAKEFILE#:7: $prewarn\nmake foo.biz from foo.baz\n"); + +# SV 40657: Test #8: ... but any prerequisites are ignored + +utouch(-10, 'foo.biz'); +touch('foo.bar'); + +run_make_test(undef, + 'X=1 foo.biz', "#MAKEFILE#:7: $prewarn\n#MAKE#: 'foo.biz' is up to date.\n"); + +unlink('foo.baz', 'foo.biz', 'foo.bar'); + +# Complete +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/targetvars b/local/recipes/dev/gnu-make/source/tests/scripts/features/targetvars new file mode 100644 index 0000000000..5088251e4d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/targetvars @@ -0,0 +1,439 @@ +# -*-perl-*- +$description = "Test target-specific variable settings."; + +$details = "\ +Create a makefile containing various flavors of target-specific variable +values, override and non-override, and using various variable expansion +rules, semicolon interference, etc."; + +run_make_test(' +export FOO = foo +export BAR = bar +one: override FOO = one +one two: ; @echo $(FOO) $(BAR) +two: BAR = two +.RECIPEPREFIX = > +three: ; BAR=1000 +> @echo $(FOO) $(BAR) +# Some things that shouldn not be target vars +funk : override +funk : override adelic +adelic override : ; echo $@ +# Test per-target recursive variables +four:FOO=x +four:VAR$(FOO)=ok +four: ; @echo "$(FOO) $(VAR$(FOO)) $(VAR) $(VARx)" +five:FOO=x +five six : VAR$(FOO)=good +five six: ;@echo "$(FOO) $(VAR$(FOO)) $(VAR) $(VARx) $(VARfoo)" +# Test per-target variable inheritance +seven: eight +seven eight: ; @echo $@: $(FOO) $(BAR) +seven: BAR = seven +seven: FOO = seven +eight: BAR = eight +# Test the export keyword with per-target variables +nine: ; @echo $(FOO) $(BAR) $$FOO $$BAR +nine: FOO = wallace +nine-a: export BAZ = baz +nine-a: ; @echo $$BAZ +# Test = escaping +EQ = = +ten: one$(EQ)two +ten: one $(EQ) two +ten one$(EQ)two $(EQ):;@echo $@ +.PHONY: one two three four five six seven eight nine ten $(EQ) one$(EQ)two +# Test target-specific vars with pattern/suffix rules +QVAR = qvar +RVAR = = +%.q : ; @echo $(QVAR) $(RVAR) +foo.q : RVAR += rvar +# Target-specific vars with multiple LHS pattern rules +%.r %.s %.t: ; @echo $(QVAR) $(RVAR) $(SVAR) $(TVAR) +foo.r : RVAR += rvar +foo.t : TVAR := $(QVAR) +', + "one two three", "one bar\nfoo two\nBAR=1000\nfoo bar\n"); + +# TEST #2 + +run_make_test(undef, "one two FOO=1 BAR=2", "one 2\n1 2\n"); + +# TEST #3 + +run_make_test(undef, "four", "x ok ok\n"); + +# TEST #4 + +run_make_test(undef, "seven", "eight: seven eight\nseven: seven seven\n"); + +# TEST #5 + +run_make_test(undef, "nine", "wallace bar wallace bar\n"); + +# TEST #5-a + +run_make_test(undef, "nine-a", "baz\n"); + +# TEST #6 + +run_make_test(undef, "ten", "one=two\none bar\n=\nfoo two\nten\n"); + +# TEST #6 + +run_make_test(undef, "foo.q bar.q", "qvar = rvar\nqvar =\n"); + +# TEST #7 + +run_make_test(undef, "foo.t bar.s", "qvar = qvar\nqvar =\n"); + +# TEST #8 +# For PR/1378: Target-specific vars don't inherit correctly + +run_make_test(' +foo: FOO = foo +bar: BAR = bar +foo: bar +bar: baz +baz: ; @echo $(FOO) $(BAR) +', "", "foo bar\n"); + +# TEST #9 +# For PR/1380: Using += assignment in target-specific variables sometimes fails +# Also PR/1831 + +run_make_test(' +.PHONY: all one +all: FOO += baz +all: one; @echo $(FOO) + +FOO = bar + +one: FOO += biz +one: FOO += boz +one: ; @echo $(FOO) +', + '', "bar baz biz boz\nbar baz\n"); + +# Test #10 + +run_make_test(undef, 'one', "bar biz boz\n"); + +# Test #11 +# PR/1709: Test semicolons in target-specific variable values + +run_make_test(' +foo : FOO = ; ok +foo : ; @echo "$(FOO)" +', + '', "; ok\n"); + +# Test #12 +# PR/2020: More hassles with += target-specific vars. I _really_ think +# I nailed it this time :-/. + +run_make_test(' +.PHONY: a + +BLAH := foo +COMMAND = echo $(BLAH) + +a: ; @$(COMMAND) + +a: BLAH := bar +a: COMMAND += snafu $(BLAH) +', + '', "bar snafu bar\n"); + +# Test #13 +# Test double-colon rules with target-specific variable values + +run_make_test(' +W = bad +X = bad +foo: W = ok +foo:: ; @echo $(W) $(X) $(Y) $(Z) +foo:: ; @echo $(W) $(X) $(Y) $(Z) +foo: X = ok + +Y = foo +bar: foo +bar: Y = bar + +Z = nopat +ifdef PATTERN + fo% : Z = pat +endif +', + 'foo', "ok ok foo nopat\nok ok foo nopat\n"); + +# Test #14 +# Test double-colon rules with target-specific variable values and +# inheritance + +run_make_test(undef, 'bar', "ok ok bar nopat\nok ok bar nopat\n"); + +# Test #15 +# Test double-colon rules with pattern-specific variable values + +run_make_test(undef, 'foo PATTERN=yes', "ok ok foo pat\nok ok foo pat\n"); + +# Test #16 +# Test target-specific variables with very long command line +# (> 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 test -f "build_information.generate" ; then echo "$(OBJ_DIR)/build_information.o"; else echo "no build information"; fi ) + +deals_changed_since: ; @echo $(BUILD_OBJ) +', + '', "no build information\n"); + +# TEST #17 + +# Test a merge of set_lists for files, where one list is much longer +# than the other. See Savannah bug #15757. + +mkdir('t1', 0777); +touch('t1/rules.mk'); + +run_make_test(' +VPATH = t1 +include rules.mk +.PHONY: all +all: foo.x +foo.x : rules.mk ; @echo MYVAR=$(MYVAR) FOOVAR=$(FOOVAR) ALLVAR=$(ALLVAR) +all: ALLVAR = xxx +foo.x: FOOVAR = bar +rules.mk : MYVAR = foo +.INTERMEDIATE: foo.x rules.mk +', + '-I t1', 'MYVAR= FOOVAR=bar ALLVAR=xxx'); + +rmfiles('t1/rules.mk'); +rmdir('t1'); + +# TEST #18 + +# Test appending to a simple variable containing a "$": avoid a +# double-expansion. See Savannah bug #15913. + +run_make_test(' +VAR := $$FOO +foo: VAR += BAR +foo: ; @echo '."'".'$(VAR)'."'".' +', + '', '$FOO BAR'); + +# TEST #19: Override with append variables + +run_make_test(' +a: override FOO += f1 +a: FOO += f2 +a: ; @echo "$(FOO)" +', + '', "f1\n"); + +run_make_test(undef, 'FOO=C', "C f1\n"); + +# TEST #19: Conditional variables with command-line settings + +run_make_test(' +a: FOO ?= f1 +a: ; @echo "$(FOO)" +', + '', "f1\n"); + +run_make_test(undef, 'FOO=C', "C\n"); + +# TEST #20: Check for continuation after semicolons + +run_make_test(q! +a: A = 'hello;\ +world' +a: ; @echo $(A) +!, + '', "hello; world\n"); + +# TEST #21: SV-56834 Ensure setting PATH in a target var works properly +my $sname = "foobar$scriptsuffix"; + +mkdir('sd', 0775); +create_file("sd/$sname", "exit 0\n"); +chmod 0755, "sd/$sname"; + +run_make_test(qq! +all: PATH := sd +all: ; $sname >/dev/null +!, + '', "$sname >/dev/null\n"); + +# Don't use the general PATH if not found on the target path + +$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$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(' +# define b +# @echo global +# endef +# a: define b +# @echo local +# endef + +# a: ; $(b) +# ', +# '', "local\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/temp_stdin b/local/recipes/dev/gnu-make/source/tests/scripts/features/temp_stdin new file mode 100644 index 0000000000..b06df53ee5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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/local/recipes/dev/gnu-make/source/tests/scripts/features/utf8 b/local/recipes/dev/gnu-make/source/tests/scripts/features/utf8 new file mode 100644 index 0000000000..54bc471049 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/utf8 @@ -0,0 +1,11 @@ +# -*-perl-*- + +$description = "Test support for UTF-8."; + +$details = ""; + +# Verify that the UTF-8 BOM is ignored. +run_make_test("\xEF\xBB\xBFall: ; \@echo \$\@\n", '', "all"); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/varnesting b/local/recipes/dev/gnu-make/source/tests/scripts/features/varnesting new file mode 100644 index 0000000000..0fbb332d61 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/varnesting @@ -0,0 +1,27 @@ +# -*-perl-*- +$description = "Test recursive variables"; + +$details = ""; + +run_make_test(' +x = variable1 +variable2 := Hello +y = $(subst 1,2,$(x)) +z = y +a := $($($(z))) +all: ; @echo $(a) +', + '', "Hello\n"); + +# This tests resetting the value of a variable while expanding it. +# You may only see problems with this if you're using valgrind or +# some other memory checker that poisons freed memory. +# See Savannah patch #7534 + +run_make_test(' +VARIABLE = $(eval VARIABLE := echo hi)$(VARIABLE) +wololo: ; @$(VARIABLE) +', + '', "hi\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/vpath b/local/recipes/dev/gnu-make/source/tests/scripts/features/vpath new file mode 100644 index 0000000000..7c034b5eba --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/vpath @@ -0,0 +1,114 @@ +# -*-perl-*- + +$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"); + +&touch(@files_to_touch); + +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"); + +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. + +mkdir('vpath-d', 0777); + +run_make_test(q! +vpath %.te vpath-d/ +.SECONDARY: +default: vpath-d/a vpath-d/b +vpath-d/a: fail.te +vpath-d/b : fail.te +vpath-d/fail.te: +!, + '', "#MAKE#: Nothing to be done for 'default'.\n"); + +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/local/recipes/dev/gnu-make/source/tests/scripts/features/vpathgpath b/local/recipes/dev/gnu-make/source/tests/scripts/features/vpathgpath new file mode 100644 index 0000000000..5c5996c696 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/vpathgpath @@ -0,0 +1,66 @@ +# -*-perl-*- +$description = "Tests VPATH+/GPATH functionality."; + +$details = ""; + +$VP = "$workdir$pathsep"; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "VPATH = $VP\n"; + +print MAKEFILE <<'EOMAKE'; + +GPATH = $(VPATH) + +.SUFFIXES: .a .b .c .d +.PHONY: general rename notarget intermediate + +%.a: +%.b: +%.c: +%.d: + +%.a : %.b ; cat $^ > $@ +%.b : %.c ; cat $^ > $@ +%.c :: %.d ; cat $^ > $@ + +# General testing info: + +general: foo.b +foo.b: foo.c bar.c + +EOMAKE + +close(MAKEFILE); + +@touchedfiles = (); + +$off = -500; + +sub gtouchfiles { + foreach (@_) { + ($f = $_) =~ s,VP/,$VP,g; + &utouch($off, $f); + $off += 10; + push(@touchedfiles, $f); + } +} + +# Run the general-case test + +>ouchfiles("VP/foo.d", "VP/bar.d", "VP/foo.c", "VP/bar.c", "foo.b", "bar.d"); + +&run_make_with_options($makefile,"general",&get_logfile()); + +push(@touchedfiles, "bar.c"); + +$answer = "$make_name: Nothing to be done for 'general'.\n"; + +&compare_output($answer,&get_logfile(1)); + +unlink(@touchedfiles) unless $keep; + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/vpathplus b/local/recipes/dev/gnu-make/source/tests/scripts/features/vpathplus new file mode 100644 index 0000000000..da16983908 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/vpathplus @@ -0,0 +1,88 @@ +# -*-perl-*- +$description = "Tests the new VPATH+ functionality added in 3.76."; + +$details = ""; + +$VP = "$workdir$pathsep"; + +@touchedfiles = (); + +$off = -500; + +sub touchfiles { + foreach (@_) { + &utouch($off, $_); + $off += 10; + push(@touchedfiles, $_); + } +} + +&touchfiles("$VP/foo.d", "$VP/bar.d", "$VP/foo.c", "$VP/bar.c", "foo.b", "bar.d"); + +# Run the general-case test + +run_make_test(qq!VPATH = $VP! . q! +.SUFFIXES: .a .b .c .d +.PHONY: general rename notarget intermediate + +%.a: +%.b: +%.c: +%.d: + +%.a : %.b ; cat $^ > $@ +%.b : %.c ; cat $^ > $@ 2>/dev/null || exit 1 +%.c :: %.d ; cat $^ > $@ + +# General testing info: + +general: foo.b +foo.b: foo.c bar.c + +# Rename testing info: + +rename: $(VPATH)/foo.c foo.d + +# Target not made testing info: + +notarget: notarget.b +notarget.c: notarget.d ; -@echo "not creating $@ from $^" + +# Intermediate files: + +intermediate: inter.a +!, + 'general', "cat bar.d > bar.c\ncat ${VP}foo.c bar.c > foo.b 2>/dev/null || exit 1\n"); + +push(@touchedfiles, "bar.c"); + +# Test rules that don't make the target correctly + +&touchfiles("$VP/notarget.c", "notarget.b", "notarget.d"); + +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"); + +my $be = pack("L", 1) eq pack("N", 1); +my $intfiles = $be ? "inter.c inter.b" : "inter.b inter.c"; + +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) + +&utouch(-20, "inter.a"); +&utouch(-10, "$VP/inter.b"); +&touch("$VP/inter.d"); + +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"); + +push(@touchedfiles, "$VP/inter.b", "$VP/inter.d"); + +unlink @touchedfiles unless $keep; + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/abspath b/local/recipes/dev/gnu-make/source/tests/scripts/functions/abspath new file mode 100644 index 0000000000..59bd3841bc --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/abspath @@ -0,0 +1,84 @@ +# -*-perl-*- +$description = "Test the abspath functions."; + +$details = ""; + +# Someone needs to rewrite this to be portable for Windows +$port_type eq 'W32' and return -1; + +run_make_test(' +ifneq ($(realpath $(abspath .)),$(CURDIR)) + $(warning .: abs="$(abspath .)" real="$(realpath $(abspath .))" curdir="$(CURDIR)") +endif + +ifneq ($(realpath $(abspath ./)),$(CURDIR)) + $(warning ./: abs="$(abspath ./)" real="$(realpath $(abspath ./))" curdir="$(CURDIR)") +endif + +ifneq ($(realpath $(abspath .///)),$(CURDIR)) + $(warning .///: abs="$(abspath .///)" real="$(realpath $(abspath .///))" curdir="$(CURDIR)") +endif + +ifneq ($(abspath /),/) + $(warning /: abspath="$(abspath /)") +endif + +ifneq ($(abspath ///),/) + $(warning ///: abspath="$(abspath ///)") +endif + +ifneq ($(abspath /.),/) + $(warning /.: abspath="$(abspath /.)") +endif + +ifneq ($(abspath ///.),/) + $(warning ///.: abspath="$(abspath ///.)") +endif + +ifneq ($(abspath /./),/) + $(warning /./: abspath="$(abspath /./)") +endif + +ifneq ($(abspath /.///),/) + $(warning /.///: abspath="$(abspath /.///)") +endif + +ifneq ($(abspath /..),/) + $(warning /..: abspath="$(abspath /..)") +endif + +ifneq ($(abspath ///..),/) + $(warning ///..: abspath="$(abspath ///..)") +endif + +ifneq ($(abspath /../),/) + $(warning /../: abspath="$(abspath /../)") +endif + +ifneq ($(abspath /..///),/) + $(warning /..///: abspath="$(abspath /..///)") +endif + + +ifneq ($(abspath /foo/bar/..),/foo) + $(warning /foo/bar/..: abspath="$(abspath /foo/bar/..)") +endif + +ifneq ($(abspath /foo/bar/../../../baz),/baz) + $(warning /foo/bar/../../../baz: abspath="$(abspath /foo/bar/../../../baz)") +endif + +ifneq ($(abspath /foo/bar/../ /..),/foo /) + $(warning /foo/bar/../ /..: abspath="$(abspath /foo/bar/../ /..)") +endif + + +.PHONY: all +all: ; @: +', +'', +''); + + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/addprefix b/local/recipes/dev/gnu-make/source/tests/scripts/functions/addprefix new file mode 100644 index 0000000000..1845552f1e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/addprefix @@ -0,0 +1,44 @@ +$description = "The following test creates a makefile to test the addprefix " + ."function."; + +$details = ""; + +# IF YOU NEED >1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := \$(addprefix src${pathsep},a.b.z.foo hacks) \n" + ."all: \n" + ."\t\@echo \$(string) \n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile,0); + +# Create the answer to what should be produced by this Makefile +$answer = "src${pathsep}a.b.z.foo src${pathsep}hacks\n"; + +# COMPARE RESULTS + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/addsuffix b/local/recipes/dev/gnu-make/source/tests/scripts/functions/addsuffix new file mode 100644 index 0000000000..da4fbb71f5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/addsuffix @@ -0,0 +1,36 @@ +# -*-perl-*- +$description = "Test the addsuffix function."; + +$details = ""; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE <1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := \$(basename src${pathsep}a.b.z.foo.c src${pathsep}hacks src.bar${pathsep}a.b.z.foo.c src.bar${pathsep}hacks hacks) \n" + ."all: \n" + ."\t\@echo \$(string) \n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile,0); + +# Create the answer to what should be produced by this Makefile +$answer = "src${pathsep}a.b.z.foo src${pathsep}hacks src.bar${pathsep}a.b.z.foo src.bar${pathsep}hacks hacks\n"; + +# COMPARE RESULTS + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/call b/local/recipes/dev/gnu-make/source/tests/scripts/functions/call new file mode 100644 index 0000000000..dc1a6233d3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/call @@ -0,0 +1,92 @@ +# -*-perl-*- +$description = "Test the call function.\n"; + +$details = "Try various uses of call and ensure they all give the correct +results.\n"; + +run_make_test(q! +# Simple, just reverse two things +# +reverse = $2 $1 + +# A complex 'map' function, using recursive 'call'. +# +map = $(foreach a,$2,$(call $1,$a)) + +# Test using a builtin; this is silly as it's simpler to do without call +# +my-notdir = $(call notdir,$(1)) + +# Test using non-expanded builtins +# +my-foreach = $(foreach $(1),$(2),$(3)) +my-if = $(if $(1),$(2),$(3)) + +# Test recursive invocations of call with different arguments +# +one = $(1) $(2) $(3) +two = $(call one,$(1),foo,$(2)) + +# Test recursion on the user-defined function. As a special case make +# won't error due to this. +# Implement transitive closure using $(call ...) +# +DEP_foo = bar baz quux +DEP_baz = quux blarp +rest = $(wordlist 2,$(words ${1}),${1}) +tclose = $(if $1,$(firstword $1)\ + $(call tclose,$(sort ${DEP_$(firstword $1)} $(call rest,$1)))) + +all: ; @echo '$(call reverse,bar,foo)'; \ + echo '$(call map,origin,MAKE reverse map)'; \ + echo '$(call my-notdir,a/b c/d e/f)'; \ + echo '$(call my-foreach)'; \ + echo '$(call my-foreach,a,,,)'; \ + echo '$(call my-if,a,b,c)'; \ + echo '$(call two,bar,baz)'; \ + echo '$(call tclose,foo)'; +!, + "", "foo bar\ndefault file file\nb d f\n\n\nb\nbar foo baz\nfoo bar baz blarp quux \n"); + +# These won't work because call expands all its arguments first, before +# passing them on, then marks them as resolved/simple, so they're not +# expanded again by the function. +# +# echo '$(call my-foreach,a,x y z,$$(a)$$(a))'; \ +# echo '$(call my-if,,$$(info don't print this),$$(info do print this))' +# +# $answer = "xx yy zz\ndo print this\n"; + +# TEST eclipsing of arguments when invoking sub-calls + +run_make_test(q! +all = $1 $2 $3 $4 $5 $6 $7 $8 $9 + +level1 = $(call all,$1,$2,$3,$4,$5) +level2 = $(call level1,$1,$2,$3) +level3 = $(call level2,$1,$2,$3,$4,$5) + +all: + @echo $(call all,1,2,3,4,5,6,7,8,9,10,11) + @echo $(call level1,1,2,3,4,5,6,7,8) + @echo $(call level2,1,2,3,4,5,6,7,8) + @echo $(call level3,1,2,3,4,5,6,7,8) +!, + "", "1 2 3 4 5 6 7 8 9\n1 2 3 4 5\n1 2 3\n1 2 3\n"); + +# Ensure that variables are defined in global scope even in a $(call ...) + +delete $ENV{X123}; + +run_make_test(' +tst = $(eval export X123) +$(call tst) +all: ; @echo "$${X123-not set}" +', + '', "\n"); + +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/dir b/local/recipes/dev/gnu-make/source/tests/scripts/functions/dir new file mode 100644 index 0000000000..f48fb8c092 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/dir @@ -0,0 +1,44 @@ +$description = "The following test creates a makefile to test the dir " + ."function."; + +$details = ""; + +# IF YOU NEED >1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := \$(dir src${pathsep}foo.c hacks) \n" + ."all: \n" + ."\t\@echo \$(string) \n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile,0); + +# Create the answer to what should be produced by this Makefile +$answer = "src${pathsep} .${pathsep}\n"; + +# COMPARE RESULTS + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/error b/local/recipes/dev/gnu-make/source/tests/scripts/functions/error new file mode 100644 index 0000000000..998afe4814 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/error @@ -0,0 +1,71 @@ +# -*-Perl-*- + +$description = "\ +The following test creates a makefile to test the error function."; + +$details = ""; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE 'err = $(error Error found!) + +ifdef ERROR1 +$(error error is $(ERROR1)) +endif + +ifdef ERROR2 +$(error error is $(ERROR2)) +endif + +ifdef ERROR3 +all: some; @echo $(error error is $(ERROR3)) +endif + +ifdef ERROR4 +all: some; @echo error is $(ERROR4) + @echo $(error error is $(ERROR4)) +endif + +some: ; @echo Some stuff + +testvar: ; @: $(err) +'; + +close(MAKEFILE); + +# Test #1 + +&run_make_with_options($makefile, "ERROR1=yes", &get_logfile, 512); +$answer = "$makefile:4: *** error is yes. Stop.\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #2 + +&run_make_with_options($makefile, "ERROR2=no", &get_logfile, 512); +$answer = "$makefile:8: *** error is no. Stop.\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #3 + +&run_make_with_options($makefile, "ERROR3=maybe", &get_logfile, 512); +$answer = "Some stuff\n$makefile:12: *** error is maybe. Stop.\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #4 + +&run_make_with_options($makefile, "ERROR4=definitely", &get_logfile, 512); +$answer = "Some stuff\n$makefile:17: *** error is definitely. Stop.\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #5 + +&run_make_with_options($makefile, "testvar", &get_logfile, 512); +$answer = "$makefile:22: *** Error found!. Stop.\n"; +&compare_output($answer,&get_logfile(1)); + +# 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/local/recipes/dev/gnu-make/source/tests/scripts/functions/eval b/local/recipes/dev/gnu-make/source/tests/scripts/functions/eval new file mode 100644 index 0000000000..a3fba87a5d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/eval @@ -0,0 +1,169 @@ +# -*-perl-*- + +$description = "Test the eval function."; + +$details = "This is a test of the eval function in GNU make. +This function will evaluate inline makefile syntax and incorporate the +results into its internal database.\n"; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE <<'EOF'; +define Y + all:: ; @echo $AA + A = B +endef + +X = $(eval $(value Y)) + +$(eval $(shell echo A = A)) +$(eval $(Y)) +$(eval A = C) +$(eval $(X)) +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile, "", &get_logfile); + +# Create the answer to what should be produced by this Makefile +$answer = "AA\nBA\n"; + +&compare_output($answer,&get_logfile(1)); + +# Test to make sure defining variables when we have extra scope pushed works +# as expected. + +$makefile2 = &get_tmpfile; + +open(MAKEFILE,"> $makefile2"); + +print MAKEFILE <<'EOF'; +VARS = A B + +VARSET = $(1) = $(2) + +$(foreach v,$(VARS),$(eval $(call VARSET,$v,$v))) + +all: ; @echo A = $(A) B = $(B) +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile2, "", &get_logfile); + +# Create the answer to what should be produced by this Makefile +$answer = "A = A B = B\n"; + +&compare_output($answer,&get_logfile(1)); + +# Test to make sure eval'ing inside conditionals works properly + +$makefile3 = &get_tmpfile; + +open(MAKEFILE,"> $makefile3"); + +print MAKEFILE <<'EOF'; +FOO = foo + +all:: ; @echo it + +define Y + all:: ; @echo worked +endef + +ifdef BAR +$(eval $(Y)) +endif + +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile3, "", &get_logfile); +$answer = "it\n"; +&compare_output($answer,&get_logfile(1)); + +&run_make_with_options($makefile3, "BAR=1", &get_logfile); +$answer = "it\nworked\n"; +&compare_output($answer,&get_logfile(1)); + + +# TEST very recursive invocation of eval + +$makefile3 = &get_tmpfile; + +open(MAKEFILE,"> $makefile3"); + +print MAKEFILE <<'EOF'; +..9 := 0 1 2 3 4 5 6 7 8 9 +rev=$(eval res:=)$(foreach word,$1,$(eval res:=${word} ${res}))${res} +a:=$(call rev,${..9}) +all: ; @echo '[$(a)]' + +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile3, "", &get_logfile); +$answer = "[ 9 8 7 6 5 4 3 2 1 0 ]\n"; +&compare_output($answer,&get_logfile(1)); + + +# TEST eval with no filename context. +# The trick here is that because EVAR is taken from the environment, it must +# be evaluated before every command is invoked. Make sure that works, when +# we have no file context for reading_file (bug # 6195) + +$makefile4 = &get_tmpfile; + +open(MAKEFILE,"> $makefile4"); + +print MAKEFILE <<'EOF'; +EVAR = $(eval FOBAR = 1) +all: ; @echo "OK" + +EOF + +close(MAKEFILE); + +$ENV{EVAR} = '1'; +&run_make_with_options($makefile4, "", &get_logfile); +$answer = "OK\n"; +&compare_output($answer,&get_logfile(1)); + + +# Clean out previous information to allow new run_make_test() interface. +# If we ever convert all the above to run_make_test() we can remove this line. +$makefile = undef; + +# Test handling of backslashes in strings to be evaled. + +run_make_test(' +define FOO +all: ; @echo hello \ +world +endef +$(eval $(FOO)) +', '', 'hello world'); + +run_make_test(' +define FOO +all: ; @echo '."'".'he\llo'."'".' + @echo world +endef +$(eval $(FOO)) +', '', 'he\llo +world'); + + +# We don't allow new target/prerequisite relationships to be defined within a +# command script, because these are evaluated after snap_deps() and that +# causes lots of problems (like core dumps!) +# See Savannah bug # 12124. + +run_make_test('deps: ; $(eval deps: foo)', '', + '#MAKEFILE#:1: *** prerequisites cannot be defined in recipes. Stop.', + 512); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/file b/local/recipes/dev/gnu-make/source/tests/scripts/functions/file new file mode 100644 index 0000000000..50948a04b0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/file @@ -0,0 +1,222 @@ +# -*-perl-*- + +$description = 'Test the $(file ...) function.'; + +# Test > and >> +run_make_test(q! +define A +a +b +endef +B = c d +$(file >file.out,$(A)) +$(foreach L,$(B),$(file >> file.out,$L)) +x:;@echo hi; cat file.out +!, + '', "hi\na\nb\nc\nd"); + +unlink('file.out'); + +# Test >> to a non-existent file +run_make_test(q! +define A +a +b +endef +$(file >> file.out,$(A)) +x:;@cat file.out +!, + '', "a\nb"); + +unlink('file.out'); + +# Test > with no content +run_make_test(q! +$(file >4touch) +.PHONY:x +x:;@cat 4touch +!, + '', ''); + +# Test >> with no content +run_make_test(q! +$(file >>4touch) +.PHONY:x +x:;@cat 4touch +!, + '', ''); +unlink('4touch'); + +# Test > to a read-only file +if (defined $ERR_read_only_file) { + touch('file.out'); + chmod(0444, 'file.out'); + + run_make_test(q! +define A +a +b +endef +$(file > file.out,$(A)) +x:;@cat file.out +!, + '', "#MAKEFILE#:6: *** open: file.out: $ERR_read_only_file. Stop.", + 512); + + unlink('file.out'); +} + +# Use variables for operator and filename +run_make_test(q! +define A +a +b +endef +OP = > +FN = file.out +$(file $(OP) $(FN),$(A)) +x:;@cat file.out +!, + '', "a\nb"); + +unlink('file.out'); + +# Don't add newlines if one already exists +run_make_test(q! +define A +a +b + +endef +$(file >file.out,$(A)) +x:;@cat file.out +!, + '', "a\nb"); + +unlink('file.out'); + +# Empty text +run_make_test(q! +$(file >file.out,) +$(file >>file.out,) +x:;@cat file.out +!, + '', "\n\n"); + +unlink('file.out'); + +# Reading files +run_make_test(q! +$(file >file.out,A = foo) +X1 := $(file >file.out,B = bar) +$(eval $(file +X1 := x$(file +X1 := x$(file +X1 := x$(file +X1 := x$(file )', '', + "#MAKEFILE#:1: *** file: missing filename. Stop.\n", 512); + +run_make_test('$(file >>)', '', + "#MAKEFILE#:1: *** file: missing filename. Stop.\n", 512); + +run_make_test('$(file <)', '', + "#MAKEFILE#:1: *** file: missing filename. Stop.\n", 512); + +# Bad call + +run_make_test('$(file foo)', '', + "#MAKEFILE#:1: *** file: invalid file operation: foo. Stop.\n", 512); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/filter-out b/local/recipes/dev/gnu-make/source/tests/scripts/functions/filter-out new file mode 100644 index 0000000000..dec5343ee5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/filter-out @@ -0,0 +1,58 @@ +# -*-perl-*- + +$description = "Test the filter and filter-out functions."; + +$details = "The makefile created in this test has two variables. The +filter-out function is first used to discard names ending in +.o with a single simple pattern. The second filter-out function +augments the simple pattern with three literal names, which are +also added to the text argument. This tests an internal hash table +which is only used if there are multiple literals present in both +the pattern and text arguments. The result of both filter-out +functions is the same single .elc name.\n"; + +# Basic test -- filter +run_make_test(q! +files1 := $(filter %.o, foo.elc bar.o lose.o) +files2 := $(filter %.o foo.i, foo.i bar.i lose.i foo.elc bar.o lose.o) +all: ; @echo '$(files1) $(files2)' +!, + '', "bar.o lose.o foo.i bar.o lose.o\n"); + +# Basic test -- filter-out +run_make_test(q! +files1 := $(filter-out %.o, foo.elc bar.o lose.o) +files2 := $(filter-out foo.i bar.i lose.i %.o, foo.i bar.i lose.i foo.elc bar.o lose.o) +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"); + +run_make_test(q!all:;@echo '$(filter foo\%\%\\\\\%\%bar,foo%%\\%%bar fooX\\Ybar)'!, + '', "foo%%\\%%bar\n"); + +run_make_test(q! +X = $(filter foo\\\\\%bar,foo\%bar foo\Xbar) +all:;@echo '$(X)'!, + '', "foo\\%bar\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/findstring b/local/recipes/dev/gnu-make/source/tests/scripts/functions/findstring new file mode 100644 index 0000000000..48abede61c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/findstring @@ -0,0 +1,47 @@ +$description = "The following test creates a makefile to test the findstring " + ."function."; + +$details = ""; + +# IF YOU NEED >1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := \$(findstring port, reporter)\n" + ."all: \n" + ."\t\@echo \$(string) \n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile, + "", + &get_logfile, + 0); + +# Create the answer to what should be produced by this Makefile +$answer = "port\n"; + +# COMPARE RESULTS + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/flavor b/local/recipes/dev/gnu-make/source/tests/scripts/functions/flavor new file mode 100644 index 0000000000..80d6be79f1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/flavor @@ -0,0 +1,44 @@ +# -*-perl-*- +$description = "Test the flavor function."; + +$details = ""; + + +# Test #1: Test general logic. +# +run_make_test(' +s := s +r = r + +$(info u $(flavor u)) +$(info s $(flavor s)) +$(info r $(flavor r)) + +ra += ra +rc ?= rc + +$(info ra $(flavor ra)) +$(info rc $(flavor rc)) + +s += s +r += r + +$(info s $(flavor s)) +$(info r $(flavor r)) + + +.PHONY: all +all:;@: +', +'', +'u undefined +s simple +r recursive +ra recursive +rc recursive +s simple +r recursive'); + + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/foreach b/local/recipes/dev/gnu-make/source/tests/scripts/functions/foreach new file mode 100644 index 0000000000..6a06109a58 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/foreach @@ -0,0 +1,93 @@ +# -*-perl-*- +# $Id$ + +$description = "Test the foreach function."; + +$details = "This is a test of the foreach function in gnu make. +This function starts with a space separated list of +names and a variable. Each name in the list is subsituted +into the variable and the given text evaluated. The general +form of the command is $(foreach var,\$list,\$text). Several +types of foreach loops are tested\n"; + + +# TEST 0 + +# Set an environment variable that we can test in the makefile. +$ENV{FOOFOO} = 'foo foo'; + +run_make_test("space = ' '".' +null := +auto_var = udef space CC null FOOFOO MAKE foo CFLAGS WHITE @ < +foo = bletch null @ garf +av = $(foreach var, $(auto_var), $(origin $(var)) ) +override WHITE := BLACK +for_var = $(addsuffix .c,foo $(null) $(foo) $(space) $(av) ) +fe = $(foreach var2, $(for_var),$(subst .c,.o, $(var2) ) ) +all: auto for2 +auto : ; @echo $(av) +for2: ; @echo $(fe)', + '-e WHITE=WHITE CFLAGS=', + "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"); + +# TEST 1: Test that foreach variables take precedence over global +# variables in a global scope (like inside an eval). Tests bug #11913 + +run_make_test(' +.PHONY: all target +all: target + +x := BAD + +define mktarget +target: x := $(x) +target: ; @echo "$(x)" +endef + +x := GLOBAL + +$(foreach x,FOREACH,$(eval $(value mktarget)))', + '', + 'FOREACH'); + +# Allow variable names with trailing space +run_make_test(q! +$(foreach \ + a \ +, b c d \ +, $(info $a)) +all:;@: +!, + "", "b\nc\nd\n"); + +# Allow empty variable names. We still expand the body. + +run_make_test(' +x = $(foreach ,1 2 3,a) +y := $x + +all: ; @echo $y', + '', "a a a\n"); + +# Check some error conditions. + +run_make_test(' +x = $(foreach ) +y = $x + +all: ; @echo $y', + '', + "#MAKEFILE#:2: *** insufficient number of arguments (1) to function 'foreach'. Stop.", + 512); + +run_make_test(' +x = $(foreach x,y) +y := $x + +all: ; @echo $y', + '', + "#MAKEFILE#:2: *** insufficient number of arguments (2) to function 'foreach'. Stop.", + 512); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/guile b/local/recipes/dev/gnu-make/source/tests/scripts/functions/guile new file mode 100644 index 0000000000..120aaf3bce --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/guile @@ -0,0 +1,116 @@ +# -*-perl-*- + +$description = 'Test the $(guile ...) function.'; + +$details = 'This only works on systems that support it.'; + +# If this instance of make doesn't support GNU Guile, skip it +# This detects if guile is loaded using the "load" directive +# $makefile = get_tmpfile(); +# open(MAKEFILE, "> $makefile") || die "Failed to open $makefile: $!\n"; +# print MAKEFILE q! +# -load guile +# all: ; @echo $(filter guile,$(.LOADED)) +# !; +# close(MAKEFILE) || die "Failed to write $makefile: $!\n"; +# $cmd = subst_make_string("#MAKEPATH# -f $makefile"); +# $log = get_logfile(0); +# $code = run_command_with_output($log, $cmd); +# read_file_into_string ($log) eq "guile\n" and $FEATURES{guile} = 1; + +# If we don't have Guile support, never mind. +exists $FEATURES{guile} or return -1; + +# Guile and Valgrind don't play together at all. +$valgrind and return -1; + +# Verify simple data type conversions +# Currently we don't support vectors: +# echo '$(guile (vector 1 2 3))'; \ +run_make_test(q! +x:;@echo '$(guile #f)'; \ + echo '$(guile #t)'; \ + echo '$(guile #\c)'; \ + echo '$(guile 1234)'; \ + echo '$(guile 'foo)'; \ + echo '$(guile "bar")'; \ + echo '$(guile (cons 'a 'b))'; \ + echo '$(guile '(a b (c . d) 1 (2) 3))' +!, + '', "\n#t\nc\n1234\nfoo\nbar\na b\na b c d 1 2 3"); + +# Verify guile functions in variables -- SV 43378 +run_make_test(q! +res := $(guile #f) \ + $(guile #t) \ + $(guile #\c) \ + $(guile 1234) \ + $(guile 'foo) \ + $(guile "bar") \ + $(guile (cons 'a 'b)) \ + $(guile '(a b (c . d) 1 (2) 3)) +x:;@echo '$(res)' +!, + '', " #t c 1234 foo bar a b a b c d 1 2 3"); + +# Verify the gmk-expand function +run_make_test(q! +VAR = $(guile (gmk-expand "$(shell echo hi)")) +x:;@echo '$(VAR)' +!, + '', "hi"); + +# Verify the gmk-eval function +# Prove that the string is expanded only once (by eval) +run_make_test(q! +TEST = bye +EVAL = VAR = $(TEST) $(shell echo there) +$(guile (gmk-eval "$(value EVAL)")) +TEST = hi +x:;@echo '$(VAR)' +!, + '', "hi there"); + +# Verify the gmk-eval function with a list +run_make_test(q! +$(guile (gmk-eval '(VAR = 1 (2) () 3))) +x:;@echo '$(VAR)' +!, + '', "1 2 3"); + +# Verify the gmk-var function +run_make_test(q! +VALUE = hi $(shell echo there) +VAR = $(guile (gmk-var "VALUE")) +x:;@echo '$(VAR)' +!, + '', "hi there"); + +# Verify the gmk-var function with a symbol +run_make_test(q! +VALUE = hi $(shell echo there) +VAR = $(guile (gmk-var 'VALUE)) +x:;@echo '$(VAR)' +!, + '', "hi there"); + +# Write a Guile program using define and run it +run_make_test(q! +# Define the "fib" function in Guile +define fib +;; A procedure for counting the n:th Fibonacci number +;; See SICP, p. 37 +(define (fib n) + (cond ((= n 0) 0) + ((= n 1) 1) + (else (+ (fib (- n 1)) + (fib (- n 2)))))) +endef +$(guile $(fib)) + +# Now run it +x:;@echo $(guile (fib $(FIB))) +!, + 'FIB=10', "55"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/if b/local/recipes/dev/gnu-make/source/tests/scripts/functions/if new file mode 100644 index 0000000000..8604e4f2f8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/if @@ -0,0 +1,33 @@ +# -*-perl-*- +$description = "Test the if function.\n"; + +$details = "Try various uses of if and ensure they all give the correct +results.\n"; + +open(MAKEFILE, "> $makefile"); + +print MAKEFILE < +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/local/recipes/dev/gnu-make/source/tests/scripts/functions/join b/local/recipes/dev/gnu-make/source/tests/scripts/functions/join new file mode 100644 index 0000000000..302c30707b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/join @@ -0,0 +1,44 @@ +$description = "The following test creates a makefile to test the join " + ."function."; + +$details = ""; + +# IF YOU NEED >1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := \$(join a b c,foo hacks .pl1) \n" + ."all: \n" + ."\t\@echo \$(string) \n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile,0); + +# Create the answer to what should be produced by this Makefile +$answer = "afoo bhacks c.pl1\n"; + +# COMPARE RESULTS + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/let b/local/recipes/dev/gnu-make/source/tests/scripts/functions/let new file mode 100644 index 0000000000..48aec78fa3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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/local/recipes/dev/gnu-make/source/tests/scripts/functions/notdir b/local/recipes/dev/gnu-make/source/tests/scripts/functions/notdir new file mode 100644 index 0000000000..4ed8f9c703 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/notdir @@ -0,0 +1,44 @@ +$description = "The following test creates a makefile to test the notdir " + ."function."; + +$details = ""; + +# IF YOU NEED >1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := \$(notdir ${pathsep}src${pathsep}foo.c hacks) \n" + ."all: \n" + ."\t\@echo \$(string) \n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile,0); + +# Create the answer to what should be produced by this Makefile +$answer = "foo.c hacks\n"; + +# COMPARE RESULTS + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/origin b/local/recipes/dev/gnu-make/source/tests/scripts/functions/origin new file mode 100644 index 0000000000..9b9fd56a16 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/origin @@ -0,0 +1,49 @@ +# -*-perl-*- + +$description = "Test the origin function."; + +$details = "This is a test of the origin function in gnu make. +This function will report on where a variable was +defined per the following list: + +'undefined' never defined +'default' default definition +'environment' environment var without -e +'environment override' environment var with -e +'file' defined in makefile +'command line' defined on the command line +'override' defined by override in makefile +'automatic' Automatic variable\n"; + +# Set an environment variable +$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 @) +auto : +> @echo $(av)', + '-e WHITE=WHITE CFLAGS=', + 'undefined default environment default file command line override automatic +undefined +default +environment +default +file +command line +override +automatic'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/realpath b/local/recipes/dev/gnu-make/source/tests/scripts/functions/realpath new file mode 100644 index 0000000000..fcea515522 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/realpath @@ -0,0 +1,92 @@ +# -*-perl-*- +$description = "Test the realpath functions."; + +$details = ""; + +# Check the local directory's realpath +run_make_test(' +ifneq ($(realpath .),$(CURDIR)) + $(warning $(realpath .) != $(CURDIR)) +endif + +ifneq ($(realpath ./),$(CURDIR)) + $(warning $(realpath ./) != $(CURDIR)) +endif + +ifneq ($(realpath .///),$(CURDIR)) + $(warning $(realpath .///) != $(CURDIR)) +endif + +.PHONY: all +all: ; @: +', + '', ''); + +# Find the realpath to the root of the partition +create_file('root.mk', 'all:;$(info $(realpath /))'); +my $root = `$make_path -sf root.mk`; +unlink('root.mk'); +chomp $root; + +my $tst = ' +ifneq ($(realpath /.),#ROOT#) + $(warning $(realpath /.) != #ROOT#) +endif + +ifneq ($(realpath /./),#ROOT#) + $(warning $(realpath /./) != #ROOT#) +endif + +ifneq ($(realpath /.///),#ROOT#) + $(warning $(realpath /.///) != #ROOT#) +endif + +ifneq ($(realpath /..),#ROOT#) + $(warning $(realpath /..) != #ROOT#) +endif + +ifneq ($(realpath /../),#ROOT#) + $(warning $(realpath /../) != #ROOT#) +endif + +ifneq ($(realpath /..///),#ROOT#) + $(warning $(realpath /..///) != #ROOT#) +endif + +ifneq ($(realpath . /..),$(CURDIR) #ROOT#) + $(warning $(realpath . /..) != $(CURDIR) #ROOT#) +endif + +.PHONY: all +all: ; @: +'; +$tst =~ s/#ROOT#/$root/g; +run_make_test($tst, '', ''); + +# On Windows platforms "//" means something special. So, don't do these tests +# there. + +if ($port_type ne 'W32') { + $tst = ' +ifneq ($(realpath ///),#ROOT#) + $(warning $(realpath ///) != #ROOT#) +endif + +ifneq ($(realpath ///.),#ROOT#) + $(warning $(realpath ///.) != #ROOT#) +endif + +ifneq ($(realpath ///..),#ROOT#) + $(warning $(realpath ///..) != #ROOT#) +endif + +.PHONY: all +all: ; @:'; + $tst =~ s/#ROOT#/$root/g; + + run_make_test($tst, '', ''); +} + + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/shell b/local/recipes/dev/gnu-make/source/tests/scripts/functions/shell new file mode 100644 index 0000000000..d89a0c831d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/shell @@ -0,0 +1,214 @@ +# -*-perl-*- + +$description = 'Test the $(shell ...) function.'; + +$details = ''; + +# Test standard shell +run_make_test('.PHONY: all +OUT := $(shell echo hi) +all: ; @echo $(OUT) + ','','hi'); + +# Test shells inside rules. +run_make_test('.PHONY: all +all: ; @echo $(shell echo hi) + ','','hi'); + +# Verify .SHELLSTATUS +run_make_test('.PHONY: all +PRE := $(.SHELLSTATUS) +$(shell exit 0) +OK := $(.SHELLSTATUS) +$(shell exit 1) +BAD := $(.SHELLSTATUS) +all: ; @echo PRE=$(PRE) OK=$(OK) BAD=$(BAD) + ','','PRE= OK=0 BAD=1'); + +# Test unescaped comment characters in shells. Savannah bug #20513 +run_make_test(q! +FOO := $(shell echo '#') +foo: ; echo '$(FOO)' +!, + '', "echo '#'\n#\n"); + +# 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"); + +$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) +', + '', "#MAKE#: ./basdfdfsed: $ERR_no_such_file\nhi\n127\n"); + + run_make_test(' +$(shell ./basdfdfsed where) +all: ; @echo $(.SHELLSTATUS) +', + '', "#MAKE#: ./basdfdfsed: $ERR_no_such_file\n127\n"); + + # Test SHELLSTATUS for kill. + # This test could be ported to Windows, using taskkill ... ? + + # Figure out the exit code for SIGINT + my $pid = fork(); + if (! $pid) { + exec('kill -2 $$') or die "exec: Cannot execute sleep\n"; + } + waitpid($pid, 0); + # .SHELLSTATUS for a signal gives 128 + the signal number + my $ret = $?; + if ($ret > 255) { + # Solaris 10 perl 5.8.4 puts signal number + 128 into the high 8 bits. + $ret >>= 8; + } + $ret |= 128; + + run_make_test('.PHONY: all +$(shell kill -2 $$$$) +STAT := $(.SHELLSTATUS) +all: ; @echo STAT=$(STAT) + ','',"STAT=$ret\n"); + + # Test that not-found errors can be redirected + if ($ERR_command_not_found) { + $_ = $ERR_command_not_found; + s/#CMDNAME#/bad-command/g; + run_make_test(q! +out := $(shell bad-command 2>&1) +all: ; @echo '$(.SHELLSTATUS): $(out)' +!, + '', "127: $_\n"); + } + + # If we're using pipes for jobserver, then we will close them and not + # allow them to be available to sub-makes invoked via $(shell ...) + if (exists $FEATURES{'jobserver'}) { + run_make_test(q! +ifeq ($(ELT),) +default:; @$(MAKE) -f #MAKEFILE# ELT=1 +else ifeq ($(ELT),1) +OUTPUT := $(shell $(MAKE) -f #MAKEFILE# ELT=2) +$(info $(OUTPUT)) +default:;: $(ELT) +else +default:;: $(ELT) +endif +!, + '--no-print-directory -j2 --jobserver-style=pipe', "#MAKE#[2]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.\n: 2\n: 1"); + } + + # This crashes if we use vfork and don't reset environ properly + run_make_test(q! +export PATH = $(shell echo "tests:$$PATH") +foo = $(shell echo yes) + +all:;echo $(foo) +!, + '', "echo yes\nyes\n"); +} + +# 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"); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/sort b/local/recipes/dev/gnu-make/source/tests/scripts/functions/sort new file mode 100644 index 0000000000..e6e1343d7c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/sort @@ -0,0 +1,51 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to verify +the ability of make to sort lists of object. Sort +will also remove any duplicate entries. This will also +be tested."; + +$details = "The make file is built with a list of object in a random order +and includes some duplicates. Make should sort all of the elements +remove all duplicates\n"; + +run_make_test(' +foo := moon_light days +foo1:= jazz +bar := captured +bar2 = boy end, has rise A midnight +bar3:= $(foo) +s1 := _by +s2 := _and_a +t1 := $(addsuffix $(s1), $(bar) ) +t2 := $(addsuffix $(s2), $(foo1) ) +t3 := $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) +t4 := $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) +t5 := $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) +t6 := $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) +t7 := $(t6) $(t6) $(t6) +p1 := $(addprefix $(foo1), $(s2) ) +blank:= +all: + @echo $(sort $(bar2) $(foo) $(addsuffix $(s1), $(bar) ) $(t2) $(bar2) $(bar3)) + @echo $(sort $(blank) $(foo) $(bar2) $(t1) $(p1) ) + @echo $(sort $(foo) $(bar2) $(t1) $(t4) $(t5) $(t7) $(t6) ) +', + '', 'A boy captured_by days end, has jazz_and_a midnight moon_light rise +A boy captured_by days end, has jazz_and_a midnight moon_light rise +A boy captured_by days end, has jazz_and_a midnight moon_light rise +'); + + +# Test with non-space/tab whitespace. Note that you can't see the +# original bug except using valgrind. + +run_make_test("FOO = a b\tc\rd\fe \f \f \f \f \ff +all: ; \@echo \$(words \$(sort \$(FOO)))\n", + '', "6\n"); + +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/strip b/local/recipes/dev/gnu-make/source/tests/scripts/functions/strip new file mode 100644 index 0000000000..8222433f31 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/strip @@ -0,0 +1,57 @@ +# -*-perl-*- +$description = "The following test creates a makefile to verify +the ability of make to strip white space from lists of object.\n"; + + +$details = "The make file is built with a list of objects that contain white space +These are then run through the strip command to remove it. This is then +verified by echoing the result.\n"; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE <<'EOMAKE'; +TEST1 := "Is this TERMINAL fun? What makes you believe is this terminal fun? JAPAN is a WONDERFUL planet -- I wonder if we will ever reach their level of COMPARATIVE SHOPPING..." +E := +TEST2 := $E try this and this $E + +define TEST3 + +and these test out + + +some +blank lines + + + +endef + +.PHONY: all +all: + @echo '$(strip $(TEST1) )' + @echo '$(strip $(TEST2) )' + @echo '$(strip $(TEST3) )' + +space: ; @echo '$(strip ) $(strip )' + +EOMAKE + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile); +$answer = "\"Is this TERMINAL fun? What makes you believe is this terminal fun? JAPAN is a WONDERFUL planet -- I wonder if we will ever reach their level of COMPARATIVE SHOPPING...\" +try this and this +and these test out some blank lines +"; +&compare_output($answer,&get_logfile(1)); + + +&run_make_with_options($makefile,"space",&get_logfile); +$answer = " \n"; +&compare_output($answer,&get_logfile(1)); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/substitution b/local/recipes/dev/gnu-make/source/tests/scripts/functions/substitution new file mode 100644 index 0000000000..0d2f6a2590 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/substitution @@ -0,0 +1,38 @@ +# -*-perl-*- + +$description = "Test the subst and patsubst functions"; + +$details = ""; + +# Generic patsubst test: test both the function and variable form. + +run_make_test(' +foo := a.o b.o c.o +bar := $(foo:.o=.c) +bar2:= $(foo:%.o=%.c) +bar3:= $(patsubst %.c,%.o,x.c.c bar.c) +all:;@echo $(bar); echo $(bar2); echo $(bar3)', +'', +'a.c b.c c.c +a.c b.c c.c +x.c.o bar.o'); + +# Patsubst without '%'--shouldn't match because the whole word has to match +# in patsubst. Based on a bug report by Markus Mauhart + +run_make_test('all:;@echo $(patsubst Foo,Repl,FooFoo)', '', 'FooFoo'); + +# Variable subst where a pattern matches multiple times in a single word. +# Based on a bug report by Markus Mauhart + +run_make_test(' +A := fooBARfooBARfoo +all:;@echo $(A:fooBARfoo=REPL)', '', 'fooBARREPL'); + +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/suffix b/local/recipes/dev/gnu-make/source/tests/scripts/functions/suffix new file mode 100644 index 0000000000..0c4f919ea1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/suffix @@ -0,0 +1,57 @@ +$description = "The following test creates a makefile to test the suffix\n" + ."function. \n"; + +$details = "The suffix function will return the string following the last _._\n" + ."the list provided. It will provide all of the unique suffixes found\n" + ."in the list. The long strings are sorted to remove duplicates.\n"; + +# IF YOU NEED >1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := word.pl general_test2.pl1 FORCE.pl word.pl3 generic_test.perl /tmp.c/bar foo.baz/bar.c MAKEFILES_variable.c\n" + ."string2 := \$(string) \$(string) \$(string) \$(string) \$(string) \$(string) \$(string)\n" + ."string3 := \$(string2) \$(string2) \$(string2) \$(string2) \$(string2) \$(string2) \$(string2)\n" + ."string4 := \$(string3) \$(string3) \$(string3) \$(string3) \$(string3) \$(string3) \$(string3)\n" + ."all: \n" + ."\t\@echo \$(suffix \$(string)) \n" + ."\t\@echo \$(sort \$(suffix \$(string4))) \n" + ."\t\@echo \$(suffix \$(string) a.out) \n" + ."\t\@echo \$(sort \$(suffix \$(string3))) \n"; + + + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile,0); + +# Create the answer to what should be produced by this Makefile + +# COMPARE RESULTS +$answer = ".pl .pl1 .pl .pl3 .perl .c .c\n" + .".c .perl .pl .pl1 .pl3\n" + .".pl .pl1 .pl .pl3 .perl .c .c .out\n" + .".c .perl .pl .pl1 .pl3\n"; + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/value b/local/recipes/dev/gnu-make/source/tests/scripts/functions/value new file mode 100644 index 0000000000..8e1a6f04b7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/value @@ -0,0 +1,30 @@ +# -*-perl-*- + +$description = "Test the value function."; + +$details = "This is a test of the value function in GNU make. +This function will evaluate to the value of the named variable with no +further expansion performed on it.\n"; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE <<'EOF'; +export FOO = foo + +recurse = FOO = $FOO +static := FOO = $(value FOO) + +all: ; @echo $(recurse) $(value recurse) $(static) $(value static) +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile, "", &get_logfile); + +# Create the answer to what should be produced by this Makefile +$answer = "FOO = OO FOO = foo FOO = foo FOO = foo\n"; + + +&compare_output($answer,&get_logfile(1)); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/warning b/local/recipes/dev/gnu-make/source/tests/scripts/functions/warning new file mode 100644 index 0000000000..16eb83bb45 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/warning @@ -0,0 +1,83 @@ +# -*-Perl-*- + +$description = "\ +The following test creates a makefile to test the warning function."; + +$details = ""; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE <<'EOF'; +ifdef WARNING1 +$(warning warning is $(WARNING1)) +endif + +ifdef WARNING2 +$(warning warning is $(WARNING2)) +endif + +ifdef WARNING3 +all: some; @echo hi $(warning warning is $(WARNING3)) +endif + +ifdef WARNING4 +all: some; @echo hi + @echo there $(warning warning is $(WARNING4)) +endif + +some: ; @echo Some stuff + +EOF + +close(MAKEFILE); + +# Test #1 + +&run_make_with_options($makefile, "WARNING1=yes", &get_logfile, 0); +$answer = "$makefile:2: warning is yes\nSome stuff\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #2 + +&run_make_with_options($makefile, "WARNING2=no", &get_logfile, 0); +$answer = "$makefile:6: warning is no\nSome stuff\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #3 + +&run_make_with_options($makefile, "WARNING3=maybe", &get_logfile, 0); +$answer = "Some stuff\n$makefile:10: warning is maybe\nhi\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #4 + +&run_make_with_options($makefile, "WARNING4=definitely", &get_logfile, 0); +$answer = "Some stuff\n$makefile:15: warning is definitely\nhi\nthere\n"; +&compare_output($answer,&get_logfile(1)); + +# Test linenumber offset + +run_make_test(q! +all: one two + $(warning in $@ line 3) + @true + $(warning in $@ line 5) + +one two: + $(warning in $@ line 8) + @true + $(warning in $@ line 10) +!, + '', "#MAKEFILE#:8: in one line 8 +#MAKEFILE#:10: in one line 10 +#MAKEFILE#:8: in two line 8 +#MAKEFILE#:10: in two line 10 +#MAKEFILE#:3: in all line 3 +#MAKEFILE#:5: in all line 5\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/local/recipes/dev/gnu-make/source/tests/scripts/functions/wildcard b/local/recipes/dev/gnu-make/source/tests/scripts/functions/wildcard new file mode 100644 index 0000000000..f01f574a97 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/wildcard @@ -0,0 +1,163 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to test wildcard +expansions and the ability to put a command on the same +line as the target name separated by a semi-colon."; + +$details = "\ +This test creates 4 files by the names of 1.example, +two.example and 3.example. We execute three tests. The first +executes the print1 target which tests the '*' wildcard by +echoing all filenames by the name of '*.example'. The second +test echo's all files which match '?.example' and +[a-z0-9].example. Lastly we clean up all of the files using +the '*' wildcard as in the first test"; + +touch("example.1"); +touch("example.two"); +touch("example.3"); +touch("example.for"); +touch("example._"); + +# TEST #1 +# ------- + +run_make_test(qq/ +.PHONY: print1 print2 clean +print1: ;\@echo \$(wildcard example.*) +print2: +\t\@echo \$(wildcard example.?) +\t\@echo \$(wildcard example.[a-z0-9]) +\t\@echo \$(wildcard example.[!A-Za-z_\\!]) +clean: +\t$CMD_rmfile \$(wildcard example.*) +/, + 'print1', "example.1 example.3 example._ example.for example.two\n"); + +# TEST #2 +# ------- + +run_make_test(undef, 'print2', "example.1 example.3 example._\n" + ."example.1 example.3\n" + ."example.1 example.3\n"); + +# TEST #3 +# ------- + +$answer = "$CMD_rmfile example.1 example.3 example._ example.for example.two"; +if ($vos) +{ + $answer .= " \n"; +} +else +{ + $answer .= "\n"; +} + +run_make_test(undef, 'clean', $answer); + +# TEST #4: Verify that failed wildcards don't return the pattern + +run_make_test(q! +all: ; @echo $(wildcard xz--y*.7) +!, + '', "\n"); + +# TEST #5: wildcard used to verify file existence + +touch('xxx.yyy'); + +run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!, '', "file=xxx.yyy\n"); + +unlink('xxx.yyy'); + +run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!, '', "file=\n"); + +# TEST #7: verify that when the input pattern has a trailing slash wildcard +# returns only directories. +# +# Currently this doesn't work with our embedded GLOB so disable it. +# ------- + +if (get_config('USE_SYSTEM_GLOB') eq 'yes') { + touch("hellof"); + mkdir("hellod", 0770); + mkdir("hellod/worldd", 0770); + touch("hellod/worldf"); + mkdir("hellod/worldd/kend1", 0770); + mkdir("hellod/worldd/kend2", 0770); + touch("hellod/worldd/kenf1"); + touch("hellod/worldd/kenf2"); + + run_make_test(qq! +print3: +\t\@echo \$(wildcard hello*) +\t\@echo \$(wildcard hello*/) +\t\@echo \$(wildcard hellod/world*) +\t\@echo \$(wildcard hellod/world*/) +\t\@echo \$(wildcard hello* hellod/world*) +\t\@echo \$(wildcard hello*/ hellod/world*/) +\t\@echo \$(wildcard hellod/*) +\t\@echo \$(wildcard hellod/*/) +\t\@echo \$(wildcard */world*) +\t\@echo \$(wildcard */worldd/) +\t\@echo \$(wildcard hellod/*/ken*/) +\t\@echo \$(wildcard hellod/*/ken?[12]) +\t\@echo \$(wildcard hellod/*/ken?[12]/) +!, '', + "hellod hellof\n" + ."hellod/\n" + ."hellod/worldd hellod/worldf\n" + ."hellod/worldd/\n" + ."hellod hellof hellod/worldd hellod/worldf\n" + ."hellod/ hellod/worldd/\n" + ."hellod/worldd hellod/worldf\n" + ."hellod/worldd/\n" + ."hellod/worldd hellod/worldf\n" + ."hellod/worldd/\n" + ."hellod/worldd/kend1/ hellod/worldd/kend2/\n" + ."hellod/worldd/kend1 hellod/worldd/kend2 " + ."hellod/worldd/kenf1 hellod/worldd/kenf2\n" + ."hellod/worldd/kend1/ hellod/worldd/kend2/\n"); + + unlink('hellof', 'hellod/worldf', 'hellod/worldd/kenf1', + 'hellod/worldd/kenf2'); + foreach $d ('hellod/worldd/kend1', 'hellod/worldd/kend2', 'hellod/worldd', + 'hellod') { + rmdir($d); + } +} + +if ($port_type ne 'W32') { + # Check wildcard on the root directory + run_make_test('print4: ; @echo $(wildcard /)', '', "/\n"); +} + +if ($port_type ne 'W32' && eval { symlink("",""); 1 }) { + + # TEST #6: check for wildcards matching directories + # See SV 53465 + + my $dir = '__rdir'; + my $lnk = '__ldir'; + mkdir($dir, 0777); + symlink($dir, $lnk); + + run_make_test(qq!all: ; \@echo \$(wildcard $lnk*/.)!, '', "$lnk/."); + + unlink($lnk); + rmdir($dir); + + # Test for dangling symlinks + # This doesn't work with the built-in glob... needs to be updated! + + if (get_config('USE_SYSTEM_GLOB') eq 'yes') { + symlink($dir, $lnk); + + run_make_test(qq!all: ; \@echo \$(wildcard $lnk)!, '', "$lnk"); + + unlink($lnk); + } +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/word b/local/recipes/dev/gnu-make/source/tests/scripts/functions/word new file mode 100644 index 0000000000..217e693698 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/word @@ -0,0 +1,175 @@ +# -*-perl-*- +$description = "\ +Test the word, words, wordlist, firstword, and lastword functions.\n"; + +$details = "\ +Produce a variable with a large number of words in it, +determine the number of words, and then read each one back.\n"; + +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 $(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 + +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: *** invalid first argument to 'word' function: empty value. Stop.", + 512); + +run_make_test(undef, + 'word-e2', + "#MAKEFILE#:4: *** invalid first argument to 'word' function: 'abc '. Stop.", + 512); + +run_make_test(undef, + 'word-e3', + "#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#:8: *** invalid first argument to 'wordlist' function: empty value. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e2', + "#MAKEFILE#:9: *** invalid first argument to 'wordlist' function: 'abc '. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e3', + "#MAKEFILE#:10: *** invalid second argument to 'wordlist' function: ' 12a '. Stop.", + 512); + +# Test error conditions again, but this time in a variable reference + +run_make_test('FOO = foo bar biz baz + +W = $(word $x,$(FOO)) +WL = $(wordlist $s,$e,$(FOO)) + +word-e: ; @echo $(W) +wordlist-e: ; @echo $(WL)', + 'word-e x=', + "#MAKEFILE#:3: *** invalid first argument to 'word' function: empty value. Stop.", + 512); + +run_make_test(undef, + 'word-e x=abc', + "#MAKEFILE#:3: *** invalid first argument to 'word' function: 'abc'. Stop.", + 512); + +run_make_test(undef, + 'word-e x=0', + "#MAKEFILE#:3: *** first argument to 'word' function must be greater than 0. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e s= e=', + "#MAKEFILE#:4: *** invalid first argument to 'wordlist' function: empty value. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e s=abc e=', + "#MAKEFILE#:4: *** invalid first argument to 'wordlist' function: 'abc'. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e s=4 e=12a', + "#MAKEFILE#:4: *** invalid second argument to 'wordlist' function: '12a'. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e s=0 e=12', + "#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 ) +# +run_make_test(' +void := +list := $(void) foo bar baz # + +a := $(word 1,$(list)) +b := $(firstword $(list)) + +.PHONY: all + +all: ; @test "$a" = "$b" && echo $a +', +'', +'foo'); + + +# TEST #9 -- test $(lastword ) +# +run_make_test(' +void := +list := $(void) foo bar baz # + +a := $(word $(words $(list)),$(list)) +b := $(lastword $(list)) + +.PHONY: all + +all: ; @test "$a" = "$b" && echo $a +', +'', +'baz'); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/misc/bs-nl b/local/recipes/dev/gnu-make/source/tests/scripts/misc/bs-nl new file mode 100644 index 0000000000..e8ba046732 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/misc/bs-nl @@ -0,0 +1,230 @@ +# -*-perl-*- +$description = "Test backslash-newline handling."; + +$details = ""; + +# TEST #1 +# ------- + +# Backslash-newlines in recipes + +# These are basic backslash-newlines with no tricks +run_make_test("fast:;\@echo fa\\\nst\n", + '', 'fast'); + +run_make_test("slow:;\@: no-op; echo sl\\\now\n", + '', 'slow'); + +run_make_test("dquote:;\@echo \"dqu\\\note\"\n", + '', 'dquote'); + +# Single quotes don't behave the same in Windows +if ($port_type ne 'W32') { + run_make_test("squote:;\@echo 'squ\\\note'\n", + '', "squ\\\note"); +} + +# Ensure that a leading prefix character is omitted +run_make_test("fast:;\@echo fa\\\n\tst\n", + '', 'fast'); + +run_make_test("slow:;\@: no-op; echo sl\\\n\tow\n", + '', 'slow'); + +run_make_test("dquote:;\@echo \"dqu\\\n\tote\"\n", + '', 'dquote'); + +# Single quotes don't behave the same in Windows +if ($port_type ne 'W32') { + run_make_test("squote:;\@echo 'squ\\\n\tote'\n", + '', "squ\\\note"); +} + +# Ensure that ONLY the leading prefix character is omitted +run_make_test("fast:;\@echo fa\\\n\t st\n", + '', 'fa st'); + +run_make_test("slow:;\@: no-op; echo sl\\\n\t\tow\n", + '', "sl ow"); + +run_make_test("dquote:;\@echo \"dqu\\\n\t ote\"\n", + '', 'dqu ote'); + +run_make_test("squote:;\@echo 'squ\\\n\t\t ote'\n", + '', "squ\\\n\t ote"); + +# Backslash-newlines in variable values + +# Simple +run_make_test(q! +var = he\ +llo +var:;@echo '|$(var)|'!, + '', "|he llo|"); + +# Condense trailing space +run_make_test(q! +var = he \ +llo +var:;@echo '|$(var)|'!, + '', "|he llo|"); + +# Remove leading space +run_make_test(q! +var = he\ + llo +var:;@echo '|$(var)|'!, + '', "|he llo|"); + +# Multiple bs/nl condensed +run_make_test(q! +var = he\ +\ +\ + llo +var:;@echo '|$(var)|'!, + '', "|he llo|"); + +# POSIX: Preserve trailing space +run_make_test(q! +.POSIX: +var = he \ +llo +var:;@echo '|$(var)|'!, + '', "|he llo|"); + +# POSIX: One space per bs-nl +run_make_test(q! +.POSIX: +var = he\ +\ +\ + llo +var:;@echo '|$(var)|'!, + '', "|he llo|"); + +# Savannah #39035: handle whitespace in call +run_make_test(q! +f = echo $(1) +t:; @$(call f,"a \ + b"); \ + $(call f,"a \ + b") +!, + '', "a b\na b\n"); + +# Savannah #38945: handle backslash CRLF +# We need our own makefile so we can set binmode +my $m1 = get_tmpfile(); +open(MAKEFILE, "> $m1"); +binmode(MAKEFILE); +print MAKEFILE "FOO = foo \\\r\n"; +close(MAKEFILE); + +my $m2 = get_tmpfile(); +open(MAKEFILE, "> $m2"); +print MAKEFILE "include $m1\ndefine BAR\nall: ; \@echo \$(FOO) bar\nendef\n\$(eval \$(BAR))\n"; +close(MAKEFILE); + +run_make_with_options($m2, '', get_logfile()); +compare_output("foo bar\n", get_logfile(1)); + +# Test different types of whitespace, and bsnl inside functions + +sub xlate +{ + $_ = $_[0]; + s/\\r/\r/g; + s/\\t/\t/g; + s/\\f/\f/g; + s/\\n/\n/g; + return $_; +} + +run_make_test(xlate(q! +$(foreach\r a \t , b\t c \r ,$(info $a \r ) ) +all:;@: +!), + '', "b \r \nc \r \n"); + +run_make_test(xlate(q! +all:;@:$(foreach\r a \t , b\t c \r ,$(info $a \r ) ) +!), + '', "b \r \nc \r \n"); + +run_make_test(xlate(q! +$(foreach \ +\r a \t\ + , b\t \ + c \r ,$(info \ + $a \r ) \ + ) +all:;@: +!), + '', "b \r \nc \r \n"); + +run_make_test(xlate(q! +all:;@:$(foreach \ +\r a \t\ + , b\t \ + c \r ,$(info \ + $a \r ) \ + ) +!), + '', "b \r \nc \r \n"); + +run_make_test(xlate(q! +define FOO +$(foreach +\r a \t + , b\t + c \r ,$(info + $a \r ) + ) +endef +$(FOO) +all:;@: +!), + '', "b \r \nc \r \n"); + +run_make_test(xlate(q! +define FOO +$(foreach +\r a \t + , b\t + c \r ,$(info + $a \r ) + ) +endef +all:;@:$(FOO) +!), + '', "b \r \nc \r \n"); + +# Test variables in recipes that expand to multiple lines + +run_make_test(q! +define var + +echo foo + + +echo bar +endef +all:;$(var) +!, + '', "echo foo\nfoo\necho bar\nbar\n"); + +run_make_test(q! +define var + +echo foo + +@ + +echo bar +endef +all:;$(var) +!, + '', "echo foo\nfoo\necho bar\nbar\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/misc/close_stdout b/local/recipes/dev/gnu-make/source/tests/scripts/misc/close_stdout new file mode 100644 index 0000000000..c8c839e7f2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/misc/close_stdout @@ -0,0 +1,9 @@ +# -*-perl-*- + +$description = "Make sure make exits with an error if stdout is full."; + +-e '/dev/full' or return -1; + +run_make_test("\n", '-v > /dev/full', '/^#MAKE#: write error/', 256); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/misc/fopen-fail b/local/recipes/dev/gnu-make/source/tests/scripts/misc/fopen-fail new file mode 100644 index 0000000000..18e0b7d07f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/misc/fopen-fail @@ -0,0 +1,22 @@ +# -*-perl-*- + +$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. +# See Savannah bug #27374. + +# Use a longer-than-normal timeout: some systems have more FDs available? +# We also set ulimit -n 512 in check-regression in Makefile.am, which see. +# See Savannah bug #42390. +run_make_test(q! +include $(lastword $(MAKEFILE_LIST)) +!, + '', undef, 512, 300); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/misc/general1 b/local/recipes/dev/gnu-make/source/tests/scripts/misc/general1 new file mode 100644 index 0000000000..352fc6adac --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/misc/general1 @@ -0,0 +1,51 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to test the +simple functionality of make. It mimics the +rebuilding of a product with dependencies. +It also tests the simple definition of VPATH."; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE < $makefile"); + +# The contents of the Makefile ... + +print MAKEFILE < $makefile2"); +print MAKEFILE "all:;\@echo FOO = \$(FOO)\nFOO = foo"; +close(MAKEFILE); + +&run_make_with_options($makefile2,"",&get_logfile); +$answer = "FOO = foo\n"; +&compare_output($answer,&get_logfile(1)); + +# TEST 3 + +# Check semicolons in variable references + +run_make_test(' +$(if true,$(info true; true)) +all: ; @: +', + '', 'true; true'); + +# TEST 4 + +# Check that backslashes in command scripts are handled according to POSIX. +# Checks Savannah bug # 1332. + +# Test the fastpath / no quotes +run_make_test(' +all: + @echo foo\ +bar + @echo foo\ + bar + @echo foo\ + bar + @echo foo\ + bar + @echo foo \ +bar + @echo foo \ + bar + @echo foo \ + bar + @echo foo \ + bar +', + '', 'foobar +foobar +foo bar +foo bar +foo bar +foo bar +foo bar +foo bar'); + +# Test the fastpath / single quotes +# Single quotes don't behave the same in Windows +if ($port_type ne 'W32') { + run_make_test(q! +all: + @echo 'foo\ +bar' + @echo 'foo\ + bar' + @echo 'foo\ + bar' + @echo 'foo\ + bar' + @echo 'foo \ +bar' + @echo 'foo \ + bar' + @echo 'foo \ + bar' + @echo 'foo \ + bar' +!, + '', 'foo\ +bar +foo\ +bar +foo\ + bar +foo\ + bar +foo \ +bar +foo \ +bar +foo \ + bar +foo \ + bar'); +} + +# Test the fastpath / double quotes +run_make_test(' +all: + @echo "foo\ +bar" + @echo "foo\ + bar" + @echo "foo\ + bar" + @echo "foo\ + bar" + @echo "foo \ +bar" + @echo "foo \ + bar" + @echo "foo \ + bar" + @echo "foo \ + bar" +', + '', 'foobar +foobar +foo bar +foo bar +foo bar +foo bar +foo bar +foo bar'); + +# Test the slow path / no quotes +run_make_test(' +all: + @echo hi; echo foo\ +bar + @echo hi; echo foo\ + bar + @echo hi; echo foo\ + bar + @echo hi; echo foo\ + bar + @echo hi; echo foo \ +bar + @echo hi; echo foo \ + bar + @echo hi; echo foo \ + bar + @echo hi; echo foo \ + bar +', + '', 'hi +foobar +hi +foobar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar'); + +# Test the slow path / no quotes. This time we put the slow path +# determination _after_ the backslash-newline handling. +run_make_test(' +all: + @echo foo\ +bar; echo hi + @echo foo\ + bar; echo hi + @echo foo\ + bar; echo hi + @echo foo\ + bar; echo hi + @echo foo \ +bar; echo hi + @echo foo \ + bar; echo hi + @echo foo \ + bar; echo hi + @echo foo \ + bar; echo hi +', + '', 'foobar +hi +foobar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi'); + +# Test the slow path / single quotes +run_make_test(q! +all: + @echo hi; echo 'foo\ +bar' + @echo hi; echo 'foo\ + bar' + @echo hi; echo 'foo\ + bar' + @echo hi; echo 'foo\ + bar' + @echo hi; echo 'foo \ +bar' + @echo hi; echo 'foo \ + bar' + @echo hi; echo 'foo \ + bar' + @echo hi; echo 'foo \ + bar' +!, + '', 'hi +foo\ +bar +hi +foo\ +bar +hi +foo\ + bar +hi +foo\ + bar +hi +foo \ +bar +hi +foo \ +bar +hi +foo \ + bar +hi +foo \ + bar'); + +# Test the slow path / double quotes +run_make_test(' +all: + @echo hi; echo "foo\ +bar" + @echo hi; echo "foo\ + bar" + @echo hi; echo "foo\ + bar" + @echo hi; echo "foo\ + bar" + @echo hi; echo "foo \ +bar" + @echo hi; echo "foo \ + bar" + @echo hi; echo "foo \ + bar" + @echo hi; echo "foo \ + bar" +', + '', 'hi +foobar +hi +foobar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar'); + +run_make_test('x:;@-exit 1', '', "#MAKE#: [#MAKEFILE#:1: x] Error 1 (ignored)\n"); + +# Slow path with odd setups + +if ($port_type ne 'W32') { + run_make_test(q! + slow: SHELL := echo + slow: .SHELLFLAGS := hoho + slow:; @foo bar + !, + '', "hoho foo bar\n"); + + run_make_test(q! + slow: SHELL := echo hi + slow: .SHELLFLAGS := ho ho + slow:; @foo bar + !, + '', "hi ho ho foo bar\n"); + + run_make_test(q! + slow: SHELL := echo hi + slow: .SHELLFLAGS := 'ho;ho' + slow:; @foo bar + !, + '', "hi ho;ho foo bar\n"); +} + +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/misc/general4 b/local/recipes/dev/gnu-make/source/tests/scripts/misc/general4 new file mode 100644 index 0000000000..cfd69a8987 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/misc/general4 @@ -0,0 +1,146 @@ +# -*-perl-*- + +$description = "\ +This tests random features of make's algorithms, often somewhat obscure, +which have either broken at some point in the past or seem likely to +break."; + +run_make_test(' +# Make sure that subdirectories built as prerequisites are actually handled +# properly. + +all: dir/subdir/file.a + +dir/subdir: ; @echo mkdir -p dir/subdir + +dir/subdir/file.b: dir/subdir ; @echo touch dir/subdir/file.b + +dir/subdir/%.a: dir/subdir/%.b ; @echo cp $< $@', + '', "mkdir -p dir/subdir\ntouch dir/subdir/file.b\ncp dir/subdir/file.b dir/subdir/file.a\n"); + +# Test implicit rules + +&touch('foo.c'); +run_make_test('foo: foo.o', + 'CC="@echo cc" OUTPUT_OPTION=', + 'cc -c foo.c +cc foo.o -o foo'); +unlink('foo.c'); + + +# Test implicit rules with '$' in the name (see se_implicit) + +run_make_test(q! +%.foo : baz$$bar ; @echo 'done $<' +%.foo : bar$$baz ; @echo 'done $<' +test.foo: +baz$$bar bar$$baz: ; @echo '$@' +!, + '', + "baz\$bar\ndone baz\$bar"); + + +# Test implicit rules with '$' in the name (see se_implicit) +# Use the '$' in the pattern. + +run_make_test(q! +%.foo : %$$bar ; @echo 'done $<' +test.foo: +test$$bar: ; @echo '$@' +!, + '', + "test\$bar\ndone test\$bar"); + +# Make sure that subdirectories built as prerequisites are actually handled +# properly... this time with '$' + +run_make_test(q! + +all: dir/subdir/file.$$a + +dir/subdir: ; @echo mkdir -p '$@' + +dir/subdir/file.$$b: dir/subdir ; @echo touch '$@' + +dir/subdir/%.$$a: dir/subdir/%.$$b ; @echo 'cp $< $@' +!, + '', "mkdir -p dir/subdir\ntouch dir/subdir/file.\$b\ncp dir/subdir/file.\$b dir/subdir/file.\$a\n"); + +# Test odd whitespace at the beginning of a line + +run_make_test(" +all: + \f + + \\ + \f \\ + \013 \\ +all: ; \@echo hi +", + '', "hi\n"); + +# SV-56834 Ensure setting PATH in the makefile works properly +my $sname = "foobar$scriptsuffix"; + +mkdir('sd', 0775); +create_file("sd/$sname", "exit 0\n"); +chmod 0755, "sd/$sname"; + +run_make_test(qq! +PATH := sd +all: ; $sname >/dev/null +!, + '', "$sname >/dev/null\n"); + +# Don't use the general PATH if not found on the target path + +$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$erstr\n#MAKE#: *** [#MAKEFILE#:3: all] Error $ernum", 512); + +unlink("sd/$sname"); +rmdir('sd'); + +# Ensure that local programs are not found if "." is not on the PATH + +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$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/local/recipes/dev/gnu-make/source/tests/scripts/misc/utf8 b/local/recipes/dev/gnu-make/source/tests/scripts/misc/utf8 new file mode 100644 index 0000000000..2adcd071d6 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/misc/utf8 @@ -0,0 +1,14 @@ +# -*-perl-*- +$description = "Test utf8 handling."; + +$details = ""; + +# Variable names containing UTF8 characters +run_make_test(" +\xe2\x96\xaa := hello +\$(info \$(\xe2\x96\xaa)) +all: +", + '', "hello\n#MAKE#: Nothing to be done for 'all'."); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-B b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-B new file mode 100644 index 0000000000..4c4c4cfb6c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-B @@ -0,0 +1,87 @@ +# -*-perl-*- + +$description = "Test make -B (always remake) option.\n"; + +$details = "\ +Construct a simple makefile that builds a target. +Invoke make once, so it builds everything. Invoke it again and verify +that nothing is built. Then invoke it with -B and verify that everything +is built again."; + +&touch('bar.x'); + +run_make_test(' +.SUFFIXES: + +.PHONY: all +all: foo + +foo: bar.x + @echo cp $< $@ + @echo "" > $@ +', + '', 'cp bar.x foo'); + +run_make_test(undef, '', "#MAKE#: Nothing to be done for 'all'."); +run_make_test(undef, '-B', 'cp bar.x foo'); + +# Put the timestamp for foo into the future; it should still be remade. + +utouch(1000, 'foo'); +run_make_test(undef, '', "#MAKE#: Nothing to be done for 'all'."); +run_make_test(undef, '-B', 'cp bar.x foo'); + +# Clean up + +rmfiles('bar.x', 'foo'); + +# Test -B with the re-exec feature: we don't want to re-exec forever +# Savannah bug # 7566 + +run_make_test(' +all: ; @: +$(info MAKE_RESTARTS=$(MAKE_RESTARTS)) +include foo.x +foo.x: ; @touch $@ +', + '-B', 'MAKE_RESTARTS= +MAKE_RESTARTS=1'); + +rmfiles('foo.x'); + +# Test -B with the re-exec feature: we DO want -B in the "normal" part of the +# makefile. + +&touch('blah.x'); + +run_make_test(' +all: blah.x ; @echo $@ +$(info MAKE_RESTARTS=$(MAKE_RESTARTS)) +include foo.x +foo.x: ; @touch $@ +blah.x: ; @echo $@ +', + '-B', 'MAKE_RESTARTS= +MAKE_RESTARTS=1 +blah.x +all'); + +rmfiles('foo.x', 'blah.x'); + +# Test that $? is set properly with -B; all prerequisites will be newer! + +utouch(-10, 'x.b'); +touch('x.a'); + +run_make_test(q! +x.a: x.b ; @echo $? +!, + '-B', "x.b\n"); + +unlink(qw(x.a x.b)); + +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-C b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-C new file mode 100644 index 0000000000..7daf69f24c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-C @@ -0,0 +1,66 @@ +# -*-perl-*- + +$description = "Test the -C option to GNU make."; + +$details = "\ +This test is similar to the clean test except that this test creates the file +to delete in the work directory instead of the current directory. Make is +called from another directory using the -C workdir option so that it can both +find the makefile and the file to delete in the work directory."; + +$example = $workdir . $pathsep . "EXAMPLE"; + +open(MAKEFILE,"> $makefile"); +print MAKEFILE qq! +all: ; \@echo This makefile did not clean the dir ... good +clean: ; $CMD_rmfile EXAMPLE\$(ext) +!; +close(MAKEFILE); + +# TEST #1 +# ------- +touch($example); + +run_make_with_options("${testname}.mk", "-C $workdir clean", &get_logfile); + +use Cwd; + +chdir $workdir; +$wpath = cwd(); +chdir $cwdpath; + +if (-f $example) { + $test_passed = 0; +} + +# Create the answer to what should be produced by this Makefile +$answer = "$make_name: Entering directory '$wpath'\n" + . "$CMD_rmfile EXAMPLE\n" + . "$make_name: Leaving directory '$wpath'\n"; + +compare_output($answer,&get_logfile(1)); + + +# TEST #2 +# ------- +# Do it again with trailing "/"; this should work the same + +$example .= "slash"; + +touch($example); + +run_make_with_options("${testname}.mk", "-C $workdir/ clean ext=slash", &get_logfile); + +if (-f $example) { + $test_passed = 0; +} + +# Create the answer to what should be produced by this Makefile +$answer = "$make_name: Entering directory '$wpath'\n" + . "$CMD_rmfile EXAMPLEslash\n" + . "$make_name: Leaving directory '$wpath'\n"; + +&compare_output($answer,&get_logfile(1)); + +unlink($example); +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-I b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-I new file mode 100644 index 0000000000..64ee7c5816 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-I @@ -0,0 +1,116 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to test the -I option."; + +$details = "\ +This test tests the -I option by including a filename in +another directory and giving make that directory name +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."; + +use File::Spec; + +# 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); + +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 \$(main_makefile)\n"); + +my $nosuch = "#MAKEFILE#:5: $included: $ERR_no_such_file +#MAKE#: *** No rule to make target '$included'. Stop.\n"; + + +# 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"); + +# Verify that we get an error if we add -I- to delete previous includes +run_make_test(undef, "-I $subdir -I- all", $nosuch, 512); + +# 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"); + +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"); + +# 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"); + +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/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-W b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-W new file mode 100644 index 0000000000..857b1cce09 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-W @@ -0,0 +1,91 @@ +# -*-perl-*- + +$description = "Test make -W (what if) option.\n"; + +# Basic build + +run_make_test(' +a.x: b.x +a.x b.x: ; echo >> $@ +', + '', "echo >> b.x\necho >> a.x"); + +# Run it again: nothing should happen + +run_make_test(undef, '', "#MAKE#: 'a.x' is up to date."); + +# Now run it with -W b.x: should rebuild a.x + +run_make_test(undef, '-W b.x', 'echo >> a.x'); + +# Put the timestamp for a.x into the future; it should still be remade. + +utouch(1000, 'a.x'); +run_make_test(undef, '', "#MAKE#: 'a.x' is up to date."); +run_make_test(undef, '-W b.x', 'echo >> a.x'); + +# Clean up + +rmfiles('a.x', 'b.x'); + +# Test -W with the re-exec feature: we don't want to re-exec forever +# Savannah bug # 7566 + +# First set it up with a normal build + +run_make_test(' +all: baz.x ; @: +include foo.x +foo.x: bar.x + @echo "\$$(info restarts=\$$(MAKE_RESTARTS))" > $@ + @echo "touch $@" +bar.x: ; echo >> $@ +baz.x: bar.x ; @echo "touch $@" +', + '', 'echo >> bar.x +touch foo.x +restarts=1 +touch baz.x'); + +# Now run with -W bar.x + +# Tweak foo.x's timestamp so the update will change it. +&utouch(1000, 'foo.x'); + +run_make_test(undef, '-W bar.x', "restarts=\ntouch foo.x\nrestarts=1\ntouch baz.x"); + +rmfiles('foo.x', 'bar.x'); + +# Test -W on vpath-found files: it should take effect. +# Savannah bug # 15341 + +mkdir('x-dir', 0777); +utouch(-20, 'x-dir/x'); +touch('y'); + +run_make_test(' +y: x ; @echo cp $< $@ +', + '-W x-dir/x VPATH=x-dir', + 'cp x-dir/x y'); + +# Make sure ./ stripping doesn't interfere with the match. + +run_make_test(' +y: x ; @echo cp $< $@ +', + '-W ./x-dir/x VPATH=x-dir', + 'cp x-dir/x y'); + +run_make_test(undef, + '-W x-dir/x VPATH=./x-dir', + 'cp ./x-dir/x y'); + +unlink(qw(y x-dir/x)); +rmdir('x-dir'); + +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-d b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-d new file mode 100644 index 0000000000..ec2e39ac93 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-e b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-e new file mode 100644 index 0000000000..944c39dfd5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-e @@ -0,0 +1,15 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to ..."; + +$details = ""; + +$ENV{GOOGLE} = 'boggle'; + +run_make_test(q! +GOOGLE = bazzle +all:; @echo "$(GOOGLE)" +!, + '-e', "boggle\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-f b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-f new file mode 100644 index 0000000000..ab225cefe7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-f @@ -0,0 +1,162 @@ +# -*-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" + ."makefiles and specifies all of them with the -f option \n" + ."on the command line. To make sure they were concatenated, \n" + ."we then call make with the rules from the concatenated \n" + ."makefiles one at a time. Finally, it calls all three \n" + ."rules in one call to make and checks that the output\n" + ."is in the correct order."; + +$makefile2 = &get_tmpfile; +$makefile3 = &get_tmpfile; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "all: \n"; +print MAKEFILE "\t\@echo This is the output from the original makefile\n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +# Create a second makefile +open(MAKEFILE,"> $makefile2"); +print MAKEFILE "TWO: \n"; +print MAKEFILE "\t\@echo This is the output from makefile 2\n"; +close(MAKEFILE); + +# Create a third makefile +open(MAKEFILE,"> $makefile3"); +print MAKEFILE "THREE: \n"; +print MAKEFILE "\t\@echo This is the output from makefile 3\n"; +close(MAKEFILE); + + +# Create the answer to what should be produced by this Makefile +$answer = "This is the output from the original makefile\n"; + +# Run make to catch the default rule +&run_make_with_options($makefile,"-f $makefile2 -f $makefile3",&get_logfile,0); + +&compare_output($answer,&get_logfile(1)); + + +# Run Make again with the rule from the second makefile: TWO +$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 + +$answer = "This is the output from makefile 3\n"; +&run_make_with_options($makefile, + "-f $makefile2 -f $makefile3 THREE", + &get_logfile, + 0); +&compare_output($answer,&get_logfile(1)); + + +# Run Make again with ALL three rules in the order 2 1 3 to make sure +# that all rules are executed in the proper order + +$answer = "This is the output from makefile 2\n"; +$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, + 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/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-k b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-k new file mode 100644 index 0000000000..4bd68f032d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-k @@ -0,0 +1,115 @@ +# -*-perl-*- + +$description = "Test the make -k (don't stop on error) option.\n"; + +$details = "\ +The makefile created in this test is a simulation of building +a small product. However, the trick to this one is that one +of the dependencies of the main target does not exist. +Without the -k option, make would fail immediately and not +build any part of the target. What we are looking for here, +is that make builds the rest of the dependencies even though +it knows that at the end it will fail to rebuild the main target."; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE < $makefile2"); +print MAKEFILE <<'EOF'; +.SUFFIXES: + +all: exe1 exe2; @echo making $@ + +exe1 exe2: lib; @echo cp $^ $@ + +lib: foo.o; @echo cp $^ $@ + +foo.o: ; exit 1 +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile2, "-k", &get_logfile, $error_code); + +$answer = "exit 1 +$make_name: *** [$makefile2:9: foo.o] Error 1 +$make_name: Target 'all' not remade because of errors.\n"; + +&compare_output($answer, &get_logfile(1)); + +# TEST -- make sure we keep the error code if we can't create an included +# makefile. + +if (defined $ERR_no_such_file) { + run_make_test('all: ; @echo hi +include ifile +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'. +#MAKEFILE#:2: Failed to remake makefile 'ifile'.\n", + 512); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-l b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-l new file mode 100644 index 0000000000..d1e604947f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-l @@ -0,0 +1,51 @@ +# -*-perl-*- +# Date: Tue, 11 Aug 1992 09:34:26 -0400 +# From: pds@lemming.webo.dg.com (Paul D. Smith) + +$description = "Test load balancing (-l) option."; + +$details = "\ +This test creates a makefile where all depends on three rules +which contain the same body. Each rule checks for the existence +of a temporary file; if it exists an error is generated. If it +doesn't exist then it is created, the rule sleeps, then deletes +the temp file again. Thus if any of the rules are run in +parallel the test will fail. When make is called in this test, +it is given the -l option with a value of 0.0001. This ensures +that the load will be above this number and make will therefore +decide that it cannot run more than one job even though -j 4 was +also specified on the command line."; + +# On Windows a very different algorithm is used. +$port_type eq 'W32' and return -1; + +open(MAKEFILE,"> $makefile"); +printf MAKEFILE q, +define test +if [ ! -f test-file ]; then \ + echo >> test-file; sleep 2; %s test-file; \ +else \ + echo $@ FAILED; \ +fi +endef + +all : ONE TWO THREE +ONE : ; @$(test) +TWO : ; @$(test) +THREE : ; @$(test) +,, $CMD_rmfile; +close(MAKEFILE); + +$mkoptions = "-l 0.0001"; +$mkoptions .= " -j 4" if ($parallel_jobs); + +# We have to wait longer than the default (5s). +&run_make_with_options($makefile, $mkoptions, &get_logfile, 0, 8); + +$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/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-n b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-n new file mode 100644 index 0000000000..ca3b43d67c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-n @@ -0,0 +1,100 @@ +# -*-perl-*- +$description = "Test the -n option.\n"; + +$details = "Try various uses of -n and ensure they all give the correct results.\n"; + +touch('orig'); + +run_make_test(q! +final: intermediate ; echo >> $@ +intermediate: orig ; echo >> $@ +!, + '', "echo >> intermediate\necho >> final\n"); + +# TEST 1 + +run_make_test(undef, '-Worig -n', "echo >> intermediate\necho >> final\n"); + +rmfiles(qw(orig intermediate final)); + +# We consider the actual updated timestamp of targets with all +# recursive commands, even with -n. Switching this to the new model +# is non-trivial because we use a trick below to change the log content +# before we compare it ... + +$makefile2 = &get_tmpfile; + +open(MAKEFILE, "> $makefile2"); + +print MAKEFILE <<'EOF'; +.SUFFIXES: +BAR = # nothing +FOO = +$(BAR) +a: b; echo > $@ +b: c; $(FOO) +EOF + +close(MAKEFILE); + +&utouch(-20, 'b'); +&utouch(-10, 'a'); +&touch('c'); + +# TEST 2 + +&run_make_with_options($makefile2, "", &get_logfile); +$answer = "$make_name: 'a' is up to date.\n"; +&compare_output($answer, &get_logfile(1)); + +# TEST 3 + +&run_make_with_options($makefile2, "-n", &get_logfile); +$answer = "$make_name: 'a' is up to date.\n"; +&compare_output($answer, &get_logfile(1)); + +# TEST 4 + +unlink(qw(a b)); + +&run_make_with_options($makefile2, "-t -n", &get_logfile); + +open(DASH_N_LOG, ">>" . &get_logfile(1)); +print DASH_N_LOG "a exists but should not!\n" if -e 'a'; +print DASH_N_LOG "b exists but should not!\n" if -e 'b'; +close(DASH_N_LOG); + +&compare_output("touch b\ntouch a\n", &get_logfile(1)); + +# CLEANUP + +unlink(qw(a b c)); + +# Ensure -n continues to be included with recursive/re-execed make +# See Savannah bug #38051 + +$topmake = &get_tmpfile; +$submake = &get_tmpfile; + +open(MAKEFILE, "> $topmake"); +print MAKEFILE <<"EOF"; +foo: ; \@\$(MAKE) -f "$submake" bar +EOF +close(MAKEFILE); + + +# The bar target should print what would happen, but not actually run +open(MAKEFILE, "> $submake"); +print MAKEFILE <<'EOF'; +inc: ; touch $@ +-include inc +bar: ; @echo $(strip $(MAKEFLAGS)) +EOF +close(MAKEFILE); + +&run_make_with_options($topmake, '-n --no-print-directory', &get_logfile); +$answer = subst_make_string("#MAKEPATH# -f \"$submake\" bar\ntouch inc\necho n --no-print-directory\n"); +&compare_output($answer, &get_logfile(1)); + +unlink('inc'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-q b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-q new file mode 100644 index 0000000000..e67b55d444 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-q @@ -0,0 +1,86 @@ +# -*-perl-*- +$description = "Test the -q option.\n"; + +$details = "Try various uses of -q and ensure they all give the correct results.\n"; + +# TEST 0 + +run_make_test(qq! +one: +two: ; +three: ; : +four: ; \$(.XY) +five: ; \\ + \$(.XY) +six: ; \\ + \$(.XY) +\t\$(.XY) +seven: ; \\ + \$(.XY) +\t: foo +\t\$(.XY) +!, + '-q one', ''); + +# TEST 1 + +run_make_test(undef, '-q two', ''); + +# TEST 2 + +run_make_test(undef, '-q three', '', 256); + +# TEST 3 + +run_make_test(undef, '-q four', ''); + +# TEST 4 + +run_make_test(undef, '-q five', ''); + +# TEST 5 + +run_make_test(undef, '-q six', ''); + +# TEST 6 + +run_make_test(undef, '-q seven', '', 256); + +# TEST 7 : Savannah bug # 7144 + +run_make_test(' +one:: ; @echo one +one:: ; @echo two +', + '-q', '', 256); + +# TEST 7 : Savannah bug # 42249 +# Make sure we exit with 1 even for prerequisite updates +run_make_test(' +build-stamp: ; echo $@ +build-arch: build-stamp +build-x: build-arch +build-y: build-x +', + '-q build-y', '', 256); + +# TEST 8 +# Make sure we exit with 2 on error even with -q +run_make_test(' +build-stamp: ; echo $@ +build-arch: build-stamp-2 +build-x: build-arch +build-y: build-x +', + '-q build-y', "#MAKE#: *** No rule to make target 'build-stamp-2', needed by 'build-arch'. Stop.\n", 512); + +# TEST 9 : Savannah bug # 47151 +# Make sure we exit with 1 when invoking a recursive make +run_make_test(' +foo: bar ; echo foo +bar: ; @$(MAKE) -f #MAKEFILE# baz +baz: ; echo baz +', + '-q foo', '', 256); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-r b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-r new file mode 100644 index 0000000000..7157f71576 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-s b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-s new file mode 100644 index 0000000000..76bffe63fd --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-s @@ -0,0 +1,26 @@ +# -*-perl-*- + +$description = "Test the -s (silent) and --no-silent options.\n"; + +run_make_test(q! +all: one two +one: ; @echo MAKEFLAGS=$$MAKEFLAGS +two: ; echo two +!, + '', "MAKEFLAGS=\necho two\ntwo"); + +run_make_test(undef, '-s', "MAKEFLAGS=s\ntwo"); +run_make_test(undef, '--silent', "MAKEFLAGS=s\ntwo"); +run_make_test(undef, '--quiet', "MAKEFLAGS=s\ntwo"); + +run_make_test(undef, '--no-silent', "MAKEFLAGS=\necho two\ntwo"); + +run_make_test(undef, '-s --no-silent', "MAKEFLAGS=\necho two\ntwo"); +run_make_test(undef, '--silent --no-silent', "MAKEFLAGS=\necho two\ntwo"); +run_make_test(undef, '--quiet --no-silent', "MAKEFLAGS=\necho two\ntwo"); + +run_make_test(undef, '--no-silent -s', "MAKEFLAGS=s\ntwo"); +run_make_test(undef, '--no-silent --silent', "MAKEFLAGS=s\ntwo"); +run_make_test(undef, '--no-silent --quiet', "MAKEFLAGS=s\ntwo"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-t b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-t new file mode 100644 index 0000000000..ec27d7afbf --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-t @@ -0,0 +1,58 @@ +# -*-perl-*- + +$description = "Test the -t option.\n"; + +$details = "Look out for regressions of prior bugs related to -t.\n"; +# That means, nobody has even tried to make the tests below comprehensive + +# TEST 0 +# bug reported by Henning Makholm on 2001-11-03: +# make 3.79.1 touches only interm-[ab] but reports final-[a] as +# 'up to date' without touching them. +# The 'obvious' fix didn't work for double-colon rules, so pay special +# attention to them. + +open(MAKEFILE, "> $makefile"); +print MAKEFILE <<'EOMAKE'; +final-a: interm-a ; echo >> $@ +final-b: interm-b ; echo >> $@ +interm-a:: orig1-a ; echo >> $@ +interm-a:: orig2-a ; echo >> $@ +interm-b:: orig1-b ; echo >> $@ +interm-b:: orig2-b ; echo >> $@ +EOMAKE +close(MAKEFILE); + +&utouch(-30, 'orig1-a','orig2-b'); +&utouch(-20, 'interm-a','interm-b'); +&utouch(-10, 'final-a','final-b'); +&touch('orig2-a','orig1-b'); + +&run_make_with_options($makefile, "-t final-a final-b", &get_logfile); +$answer = "touch interm-a\ntouch final-a\ntouch interm-b\ntouch final-b\n"; +&compare_output($answer, &get_logfile(1)); + +unlink('orig1-a', 'orig2-a', 'interm-a', 'final-a'); +unlink('orig1-b', 'orig2-b', 'interm-b', 'final-b'); + +# TEST 1 +# -t should not touch files with no commands. + +$makefile2 = &get_tmpfile; + +open(MAKEFILE, "> $makefile2"); +print MAKEFILE <<'EOMAKE'; + +PHOOEY: xxx +xxx: ; @: + +EOMAKE +close(MAKEFILE); + +&run_make_with_options($makefile2, "-t", &get_logfile); +$answer = "touch xxx\n"; +&compare_output($answer, &get_logfile(1)); + +unlink('xxx'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/eval b/local/recipes/dev/gnu-make/source/tests/scripts/options/eval new file mode 100644 index 0000000000..54a3a4f012 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/eval @@ -0,0 +1,44 @@ +# -*-perl-*- + +$description = "Test the --eval option."; + +$details = "Verify that --eval options take effect, +and are passed to sub-makes."; + +# Verify that --eval is evaluated first +run_make_test(q! +$(info infile) +BAR = bar +all: ; @echo all +recurse: ; @$(MAKE) -f #MAKEFILE# && echo recurse!, + ['--eval=$(info eval)', 'FOO=$(BAR)'], "eval\ninfile\nall"); + +# Make sure that --eval is handled correctly during recursion +run_make_test(undef, ['--no-print-directory', '--eval=$(info eval)', 'recurse'], + "eval\ninfile\neval\ninfile\nall\nrecurse"); + +# Make sure that --eval is not passed in MAKEFLAGS +run_make_test(q! +all: ; @echo "MAKEFLAGS=$$MAKEFLAGS" +!, + ['--eval=$(info eval)'], + "eval\n".'MAKEFLAGS= --eval=$$(info\ eval)'); + +# Make sure that --eval is handled correctly during restarting +run_make_test(q! +all: ; @echo $@ +-include gen.mk +gen.mk: ; @echo > $@ +!, + ['--eval=$(info eval)'], "eval\neval\nall"); + +unlink('gen.mk'); + +# Check -E +run_make_test(q! +BAR = bar +all: ; @echo all +recurse: ; @$(MAKE) -f #MAKEFILE# && echo recurse!, + ['-E', '$(info eval)', 'FOO=$(BAR)'], "eval\nall"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/general b/local/recipes/dev/gnu-make/source/tests/scripts/options/general new file mode 100644 index 0000000000..702fb55bc9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/general @@ -0,0 +1,30 @@ +# -*-perl-*- +$description = "Test generic option processing.\n"; + +# TEST 0 + +if (!$parallel_jobs) { + $answer = "#MAKE#: Parallel jobs (-j) are not supported on this platform.\n#MAKE#: Resetting to single job (-j1) mode.\n1foo\n"; +} +else { + $answer = "1foo\n"; +} + +run_make_test(q! +foo 1foo: ; @echo $@ +!, + "-j 1foo", $answer); + +# TEST 1 + +# This test prints the usage string; I don't really know a good way to +# test it. I guess I could invoke make with a known-bad option to see +# what the usage looks like, then compare it to what I get here... :( + +# On UNIX I can invoke it with 2>/dev/null, then just check the error code. + +if ($port_type ne 'W32') { + run_make_test(undef, "-j1foo 2>/dev/null", '', 512); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/print-directory b/local/recipes/dev/gnu-make/source/tests/scripts/options/print-directory new file mode 100644 index 0000000000..7ba9a2e749 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/print-directory @@ -0,0 +1,70 @@ +# -*-perl-*- + +$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", $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! +include foo +all: ;@: +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! +all: ;@$(MAKE) -f #MAKEFILE# recurse +recurse: ; @echo hi +!, + "", $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/local/recipes/dev/gnu-make/source/tests/scripts/options/shuffle b/local/recipes/dev/gnu-make/source/tests/scripts/options/shuffle new file mode 100644 index 0000000000..5661683c0a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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/local/recipes/dev/gnu-make/source/tests/scripts/options/symlinks b/local/recipes/dev/gnu-make/source/tests/scripts/options/symlinks new file mode 100644 index 0000000000..83dc84fb92 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/symlinks @@ -0,0 +1,62 @@ +# -*-perl-*- + +$description = "Test the -L option."; + +$details = "Verify that symlink handling with and without -L works properly."; + +# Only run these tests if the system sypports symlinks + +exists $FEATURES{'check-symlink'} or return -1; + +use File::Spec; + +# Set up a symlink sym -> dep +# We'll make both dep and targ older than sym +&utouch(-10, 'dep'); +&utouch(-5, 'targ'); + +$dirnm = (File::Spec->splitdir($cwddir))[-1]; +symlink(File::Spec->catfile(File::Spec->updir(), $dirnm, 'dep'), 'sym'); + +# Without -L, nothing should happen +# With -L, it should update targ +run_make_test('targ: sym ; @echo make $@ from $<', '', + "#MAKE#: 'targ' is up to date."); +run_make_test(undef, '-L', "make targ from sym"); + +# Now update dep; in all cases targ should be out of date. +&touch('dep'); +run_make_test(undef, '', "make targ from sym"); +run_make_test(undef, '-L', "make targ from sym"); + +# Now update targ; in all cases targ should be up to date. +&touch('targ'); +run_make_test(undef, '', "#MAKE#: 'targ' is up to date."); +run_make_test(undef, '-L', "#MAKE#: 'targ' is up to date."); + +# Add in a new link between sym and dep. Be sure it's newer than targ. +sleep(1); +rename('dep', 'dep1'); +symlink('dep1', 'dep'); + +# Without -L, nothing should happen +# With -L, it should update targ +run_make_test(undef, '', "#MAKE#: 'targ' is up to date."); +run_make_test(undef, '-L', "make targ from sym"); + +rmfiles('targ', 'dep', 'sym', 'dep1'); + +# Check handling when symlinks point to non-existent files. Without -L we +# should get an error: with -L we should use the timestamp of the symlink. + +symlink("../$dirnm/dep", 'sym'); +run_make_test('targ: sym ; @echo make $@ from $<', '', + "#MAKE#: *** No rule to make target 'sym', needed by 'targ'. Stop.", 512); + +run_make_test('targ: sym ; @echo make $@ from $<', '-L', + 'make targ from sym'); + + +rmfiles('targ', 'sym'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/warn-undefined-variables b/local/recipes/dev/gnu-make/source/tests/scripts/options/warn-undefined-variables new file mode 100644 index 0000000000..ce15507d1e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/warn-undefined-variables @@ -0,0 +1,25 @@ +# -*-perl-*- + +$description = "Test the --warn-undefined-variables option."; + +$details = "Verify that warnings are printed for referencing undefined variables."; + +# Without --warn-undefined-variables, nothing should happen +run_make_test(' +EMPTY = +EREF = $(EMPTY) +UREF = $(UNDEFINED) + +SEREF := $(EREF) +SUREF := $(UREF) + +all: ; @echo ref $(EREF) $(UREF)', + '', 'ref'); + +# With --warn-undefined-variables, it should warn me +run_make_test(undef, '--warn-undefined-variables', + "#MAKEFILE#:7: warning: undefined variable 'UNDEFINED' +#MAKEFILE#:9: warning: undefined variable 'UNDEFINED' +ref"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/DEFAULT b/local/recipes/dev/gnu-make/source/tests/scripts/targets/DEFAULT new file mode 100644 index 0000000000..955c5608a1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/DEFAULT @@ -0,0 +1,35 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to override part\n" + ."of one Makefile with Another Makefile with the .DEFAULT\n" + ."rule."; + +$details = "This tests the use of the .DEFAULT special target to say that \n" + ."to remake any target that cannot be made fram the information\n" + ."in the containing makefile, make should look in another makefile\n" + ."This test gives this makefile the target bar which is not \n" + ."defined here but passes the target bar on to another makefile\n" + ."which does have the target bar defined.\n"; + +create_file('defsub.mk', q! +bar: ; @echo Executing rule BAR +!); + +run_make_test(q! +foo:; @echo Executing rule FOO + +.DEFAULT: ; @$(MAKE) -f defsub.mk $@ +!, + 'bar',"#MAKE#[1]: Entering directory '#PWD#'\n" + . "Executing rule BAR\n" + . "#MAKE#[1]: Leaving directory '#PWD#'\n"); + +unlink('defsub.mk'); + +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/DELETE_ON_ERROR b/local/recipes/dev/gnu-make/source/tests/scripts/targets/DELETE_ON_ERROR new file mode 100644 index 0000000000..f0d9f9b4d6 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/DELETE_ON_ERROR @@ -0,0 +1,22 @@ +#! -*-perl-*- + +$description = "Test the behaviour of the .DELETE_ON_ERROR target."; + +$details = ""; + +run_make_test(' +.DELETE_ON_ERROR: +all: ; exit 1 > $@ +', + '', "exit 1 > all\n#MAKE#: *** [#MAKEFILE#:3: all] Error 1\n#MAKE#: *** Deleting file 'all'", 512); + +run_make_test(' +.DELETE_ON_ERROR: +all: foo.x ; +%.x : %.q ; echo > $@ +%.q : ; exit 1 > $@ +', + '', "exit 1 > foo.q\n#MAKE#: *** [#MAKEFILE#:5: foo.q] Error 1\n#MAKE#: *** Deleting file 'foo.q'", 512); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/FORCE b/local/recipes/dev/gnu-make/source/tests/scripts/targets/FORCE new file mode 100644 index 0000000000..297bb38b40 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/FORCE @@ -0,0 +1,19 @@ +# -*-perl-*- + +$description = "The following tests rules without Commands or Dependencies."; + +# Create a file named "clean". This is the same name as the target clean +# and tricks the target into thinking that it is up to date. (Unless you +# use the .PHONY target. +touch('clean'); + +run_make_test(qq! +.IGNORE : +clean: FORCE ; $CMD_rmfile clean +FORCE: +!, + '', "$CMD_rmfile clean"); + +rmfiles('clean'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/INTERMEDIATE b/local/recipes/dev/gnu-make/source/tests/scripts/targets/INTERMEDIATE new file mode 100644 index 0000000000..e942e8c334 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/INTERMEDIATE @@ -0,0 +1,108 @@ +# -*-perl-*- + +$description = "Test the behaviour of the .INTERMEDIATE target."; + +$details = "\ +Test the behavior of the .INTERMEDIATE special target. +Create a makefile where a file would not normally be considered +intermediate, then specify it as .INTERMEDIATE. Build and ensure it's +deleted properly. Rebuild to ensure that it's not created if it doesn't +exist but doesn't need to be built. Change the original and ensure +that the intermediate file and the ultimate target are both rebuilt, and +that the intermediate file is again deleted. + +Try this with implicit rules and explicit rules: both should work.\n"; + +# TEST #0 + +&utouch(-20, 'foo.f', 'bar.f'); + +run_make_test(q! +.INTERMEDIATE: foo.e bar.e + +# Implicit rule test +%.d : %.e ; cp $< $@ +%.e : %.f ; cp $< $@ + +foo.d: foo.e + +# Explicit rule test +foo.c: foo.e bar.e; cat $^ > $@ +!, + 'foo.d', "cp foo.f foo.e\ncp foo.e foo.d\nrm foo.e\n"); + +# TEST #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_test(undef, 'foo.d', "cp foo.f foo.e\ncp foo.e foo.d\nrm foo.e\n"); + +# TEST #3 + +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_test(undef, 'foo.c', "#MAKE#: 'foo.c' is up to date.\n"); + +# TEST #5 + +&utouch(-10, 'foo.c'); +&touch('foo.f'); + +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_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 + +run_make_test(q! +all: foo +foo.a: ; touch $@ +%: %.a ; touch $@ +.INTERMEDIATE: foo.a +!, + '-R', "touch foo.a\ntouch foo\nrm foo.a\n"); + +unlink('foo'); + +# 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. + +touch('hello.z'); +unlink('test.x'); + +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/local/recipes/dev/gnu-make/source/tests/scripts/targets/NOTINTERMEDIATE b/local/recipes/dev/gnu-make/source/tests/scripts/targets/NOTINTERMEDIATE new file mode 100644 index 0000000000..e4690b1280 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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/local/recipes/dev/gnu-make/source/tests/scripts/targets/ONESHELL b/local/recipes/dev/gnu-make/source/tests/scripts/targets/ONESHELL new file mode 100644 index 0000000000..f9da14b318 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/ONESHELL @@ -0,0 +1,143 @@ +# -*-perl-*- + +$description = "Test the behaviour of the .ONESHELL target."; + +$details = ""; + +my $multi_ok = 0; + +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`; + $multi_ok = $? == 0; +} + +# Simple + +run_make_test(q! +.ONESHELL: +all: + a=$$$$ + [ 0"$$a" -eq "$$$$" ] || echo fail +!, + '', 'a=$$ +[ 0"$a" -eq "$$" ] || echo fail +'); + +# Simple but use multi-word SHELLFLAGS + +if ($multi_ok) { + run_make_test(q! +.ONESHELL: +.SHELLFLAGS = -e -c +all: + a=$$$$ + [ 0"$$a" -eq "$$$$" ] || echo fail +!, + '', 'a=$$ +[ 0"$a" -eq "$$" ] || echo fail +'); +} + +# Again, but this time with inner prefix chars + +run_make_test(q! +.ONESHELL: +all: + a=$$$$ + @-+ [ 0"$$a" -eq "$$$$" ] || echo fail +!, + '', 'a=$$ +[ 0"$a" -eq "$$" ] || echo fail +'); + +# This time with outer prefix chars + +run_make_test(q! +.ONESHELL: +all: + @a=$$$$ + [ 0"$$a" -eq "$$$$" ] || echo fail +!, + '', ''); + + +# This time with outer and inner prefix chars + +run_make_test(q! +.ONESHELL: +all: + @a=$$$$ + -@ +[ 0"$$a" -eq "$$$$" ] || echo fail +!, + '', ''); + + +# Now try using a different interpreter +# This doesn't work on Windows right now +if ($port_type ne 'W32') { + run_make_test(q! +.RECIPEPREFIX = > +.ONESHELL: +SHELL = #PERL# +.SHELLFLAGS = -e +all: +> @$$a=5 +> +7; +> @y=qw(a b c); +>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/local/recipes/dev/gnu-make/source/tests/scripts/targets/PHONY b/local/recipes/dev/gnu-make/source/tests/scripts/targets/PHONY new file mode 100644 index 0000000000..d49e3f8389 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/PHONY @@ -0,0 +1,42 @@ +# -*-perl-*- + +$description = "The following tests the use of a PHONY target. It makes\n" + ."sure that the rules under a target get executed even if\n" + ."a filename of the same name of the target exists in the\n" + ."directory.\n"; + +$details = "This makefile in this test declares the target clean to be a \n" + ."PHONY target. We then create a file named \"clean\" in the \n" + ."directory. Although this file exists, the rule under the target\n" + ."clean should still execute because of it's phony status."; + +$example = "EXAMPLE_FILE"; + +touch($example); + +# Create a file named "clean". This is the same name as the target clean +# and tricks the target into thinking that it is up to date. (Unless you +# use the .PHONY target. +touch('clean'); + +open(MAKEFILE, "> $makefile"); +print MAKEFILE qq! +.PHONY : clean +all: ; \@echo This makefile did not clean the dir ... good +clean: ; $CMD_rmfile $example clean +!; +close(MAKEFILE); + +$answer = "$CMD_rmfile $example clean\n"; +&run_make_with_options($makefile,"clean",&get_logfile); + +if (-f $example) { + $test_passed = 0; +} + +&compare_output($answer,&get_logfile(1)); + +# Just in case +unlink($example, 'clean'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/POSIX b/local/recipes/dev/gnu-make/source/tests/scripts/targets/POSIX new file mode 100644 index 0000000000..c40b8dbe48 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/POSIX @@ -0,0 +1,57 @@ +# -*-perl-*- + +$description = "Test the behaviour of the .POSIX target."; + +$details = ""; + + +# Ensure turning on .POSIX enables the -e flag for the shell +# We can't assume the exit value of "false" because on different systems it's +# different. + +my $script = 'false; true'; +my $flags = '-ec'; +my $out = `$sh_name $flags '$script' 2>&1`; +my $err = $? >> 8; +run_make_test(qq! +.POSIX: +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! +.SHELLFLAGS = $flags +.POSIX: +all: ; \@$script +!, + '', $out); + +# Test the default value of various POSIX-specific variables +my %POSIX = (AR => 'ar', ARFLAGS => '-rv', + YACC => 'yacc', YFLAGS => '', + LEX => 'lex', LFLAGS => '', + LDFLAGS => '', + CC => 'c99', CFLAGS => '-O1', + FC => 'fort77', FFLAGS => '-O1', + SCCSFLAGS => '', SCCSGETFLAGS => '-s'); +my $make = join('', map { "\t\@echo '$_=\$($_)'\n" } sort keys %POSIX); +my $r = join('', map { "$_=$POSIX{$_}\n"} sort keys %POSIX); +run_make_test(qq! +.POSIX: +all: +$make +!, + '', $r); + +# Make sure that local settings take precedence +%ENV = (%ENV, map { $_ => "xx-$_" } keys %POSIX); +$r = join('', map { "$_=xx-$_\n"} sort keys %POSIX); +run_make_test(undef, '', $r); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/SECONDARY b/local/recipes/dev/gnu-make/source/tests/scripts/targets/SECONDARY new file mode 100644 index 0000000000..963c240597 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/SECONDARY @@ -0,0 +1,189 @@ +#! -*-perl-*- + +$description = "Test the behaviour of the .SECONDARY target."; + +$details = "\ +Test the behavior of the .SECONDARY special target. +Create a makefile where a file would not normally be considered +intermediate, then specify it as .SECONDARY. Build and note that it's +not automatically deleted. Delete the file. Rebuild to ensure that +it's not created if it doesn't exist but doesn't need to be built. +Change the original and ensure that the secondary file and the ultimate +target are both rebuilt, and that the secondary file is not deleted. + +Try this with implicit rules and explicit rules: both should work.\n"; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE <<'EOF'; + +.SECONDARY: foo.e + +# Implicit rule test +%.d : %.e ; cp $< $@ +%.e : %.f ; cp $< $@ + +foo.d: foo.e + +# Explicit rule test +foo.c: foo.e ; cp $< $@ +EOF + +close(MAKEFILE); + +# TEST #1 + +&utouch(-20, 'foo.f'); + +&run_make_with_options($makefile,'foo.d',&get_logfile); +$answer = "cp foo.f foo.e\ncp foo.e foo.d\n"; +&compare_output($answer, &get_logfile(1)); + +# TEST #2 + +unlink('foo.e'); + +&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)); + +# TEST #3 + +&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\n"; +&compare_output($answer, &get_logfile(1)); + +# TEST #4 + +&run_make_with_options($makefile,'foo.c',&get_logfile); +$answer = "cp foo.e foo.c\n"; +&compare_output($answer, &get_logfile(1)); + +# TEST #5 + +unlink('foo.e'); + +&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)); + +# TEST #6 + +&utouch(-10, 'foo.c'); +&touch('foo.f'); + +&run_make_with_options($makefile,'foo.c',&get_logfile); +$answer = "cp foo.f foo.e\ncp foo.e foo.c\n"; +&compare_output($answer, &get_logfile(1)); + +unlink('foo.f', 'foo.e', 'foo.d', 'foo.c'); + +# TEST #7 -- test the "global" .SECONDARY, with no targets. + +$makefile2 = &get_tmpfile; + +open(MAKEFILE, "> $makefile2"); + +print MAKEFILE <<'EOF'; +.SECONDARY: + +final: intermediate +intermediate: source + +final intermediate source: ; echo $< > $@ +EOF + +close(MAKEFILE); + +&utouch(-10, 'source'); +touch('final'); + +&run_make_with_options($makefile2, '', &get_logfile); +$answer = "$make_name: 'final' is up to date.\n"; +&compare_output($answer, &get_logfile(1)); + +unlink('source', 'final', 'intermediate'); + + +# TEST #8 -- test the "global" .SECONDARY, with .PHONY. + +touch('version2'); +run_make_test(' +.PHONY: version +.SECONDARY: +version2: version ; @echo GOOD +all: version2', + 'all', 'GOOD'); + +unlink('version2'); + +# TEST #9 -- Savannah bug #15919 +# The original fix for this bug caused a new bug, shown here. + +touch(qw(1.a 2.a)); + +run_make_test(' +%.c : %.b ; cp $< $@ +%.b : %.a ; cp $< $@ +all : 1.c 2.c +2.a: 1.c', '-rR -j', +'cp 1.a 1.b +cp 1.b 1.c +cp 2.a 2.b +cp 2.b 2.c +rm 2.b 1.b'); + +unlink(qw(1.a 2.a 1.c 2.c)); + +# TEST #10 -- Savannah bug #15919 +touch('test.0'); +run_make_test(' +.SECONDARY : test.1 test.2 test.3 + +test : test.4 + +%.4 : %.int %.3 ; touch $@ + +%.int : %.3 %.2 ; touch $@ + +%.3 : | %.2 ; touch $@ + +%.2 : %.1 ; touch $@ + +%.1 : %.0 ; touch $@', '-rR -j 2', +'touch test.1 +touch test.2 +touch test.3 +touch test.int +touch test.4 +rm test.int'); + +# After a touch of test.0 it should give the same output, except we don't need +# to rebuild test.3 (order-only) +sleep(1); +touch('test.0'); +run_make_test(undef, '-rR -j 2', +'touch test.1 +touch test.2 +touch test.int +touch test.4 +rm test.int'); + +# With both test.0 and test.3 updated it should still build everything except +# test.3 +sleep(1); +touch('test.0', 'test.3'); +run_make_test(undef, '-rR -j 2', +'touch test.1 +touch test.2 +touch test.int +touch test.4 +rm test.int'); + +unlink(qw(test.0 test.1 test.2 test.3 test.4)); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/SILENT b/local/recipes/dev/gnu-make/source/tests/scripts/targets/SILENT new file mode 100644 index 0000000000..df396a4c56 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/SILENT @@ -0,0 +1,33 @@ +# -*-perl-*- + +$description = "Test the special target .SILENT."; + +run_make_test(q! +.PHONY: M a b +M: a b +.SILENT : b +a b: ; echo $@ +!, + '', "echo a\na\nb"); + +run_make_test(q! +.PHONY: M a b +M: a b +.SILENT: +a b: ; echo $@ +!, + '', "a\nb"); + +# SV 54740 : don't inherit .SILENT settings in sub-makes +run_make_test(q! +.PHONY: M r a b +r: a b ; @$(MAKE) -f #MAKEFILE# M V=x +a b: ; echo $@ + +V = +$V.SILENT: +M: a b +!, + '--no-print-directory', "a\nb\necho a\na\necho b\nb"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/WAIT b/local/recipes/dev/gnu-make/source/tests/scripts/targets/WAIT new file mode 100644 index 0000000000..b981023f8f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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/local/recipes/dev/gnu-make/source/tests/scripts/targets/clean b/local/recipes/dev/gnu-make/source/tests/scripts/targets/clean new file mode 100644 index 0000000000..e67458e90f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/clean @@ -0,0 +1,31 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to delete a \n" + ."file in the directory. It tests to see if make will \n" + ."NOT execute the command unless the rule is given in \n" + ."the make command line."; + +$example = "EXAMPLE_FILE"; + +open(MAKEFILE,"> $makefile"); +print MAKEFILE qq! +all: ; \@echo This makefile did not clean the dir... good +clean: ; $CMD_rmfile $example +!; +close(MAKEFILE); + +touch($example); +run_make_with_options($makefile,"",&get_logfile,0); + +$answer = "This makefile did not clean the dir... good\n"; +compare_output($answer,&get_logfile(1)) || error("abort"); + + +$answer = "$CMD_rmfile $example\n"; +run_make_with_options($makefile,"clean",&get_logfile,0); +if (-f $example) { + $test_passed = 0; +} +compare_output($answer,&get_logfile(1)) || error("abort"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/test_template b/local/recipes/dev/gnu-make/source/tests/scripts/test_template new file mode 100644 index 0000000000..3fd3f95376 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/test_template @@ -0,0 +1,29 @@ +# -*-perl-*- + +$description = ""; +$details = ""; + +# Run a make test. See the documentation of run_make_test() in +# run_make_tests.pl, but briefly the first argument is a string with the +# contents of a makefile to be tested, the second is a string containing the +# arguments to be passed to the make invocation, the third is a string +# containing the expected output. The fourth is the expected exit code for +# make. If not specified, it's assumed that the make program should succeed +# (exit with 0). + +run_make_test('Your test makefile goes here', + 'Arguments to pass to make go here', + 'Expected output from the invocation goes here'); + +# There are various special tokens, options, etc. See the full documentation +# in run_make_tests.pl. + + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/CURDIR b/local/recipes/dev/gnu-make/source/tests/scripts/variables/CURDIR new file mode 100644 index 0000000000..1be54f1a0a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/CURDIR @@ -0,0 +1,16 @@ +# -*-perl-*- + +$description = "This tests the CURDIR variable."; + +$details = "Echo CURDIR both with and without -C. Also ensure overrides work."; + + +# TEST #1 +# ------- + +run_make_test(q! +all: ; @echo $(CURDIR) +!, + '', "#PWD#\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/DEFAULT_GOAL b/local/recipes/dev/gnu-make/source/tests/scripts/variables/DEFAULT_GOAL new file mode 100644 index 0000000000..8188ce71ca --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/DEFAULT_GOAL @@ -0,0 +1,87 @@ +# -*-perl-*- +$description = "Test the .DEFAULT_GOAL special variable."; + +$details = ""; + + +# Test #1: basic logic. +# +run_make_test(' +# Basics. +# +foo: ; @: + +ifneq ($(.DEFAULT_GOAL),foo) +$(error ) +endif + +# Reset to empty. +# +.DEFAULT_GOAL := + +bar: ; @: + +ifneq ($(.DEFAULT_GOAL),bar) +$(error ) +endif + +# Change to a different goal. +# + +.DEFAULT_GOAL := baz + +baz: ; @echo $@ +', +'', +'baz'); + + +# Test #2: unknown goal. +# +run_make_test(' +.DEFAULT_GOAL = foo +', +'', +"#MAKE#: *** No rule to make target 'foo'. Stop.", +512); + + +# Test #3: more than one goal. +# +run_make_test(' +.DEFAULT_GOAL := foo bar +', +'', +'#MAKE#: *** .DEFAULT_GOAL contains more than one target. Stop.', +512); + + +# Test #4: Savannah bug #12226. +# +run_make_test(' +define rule +foo: ; @echo $$@ +endef + +define make-rule +$(eval $(rule)) +endef + +$(call make-rule) + +', +'', +'foo'); + +# TEST #5: .DEFAULT_GOAL containing just whitespace (Savannah bug #25697) + +run_make_test(' +N = +.DEFAULT_GOAL = $N $N # Just whitespace + +foo: ; @echo "boo" +', + '', "#MAKE#: *** No targets. Stop.\n", 512); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/EXTRA_PREREQS b/local/recipes/dev/gnu-make/source/tests/scripts/variables/EXTRA_PREREQS new file mode 100644 index 0000000000..57ad597e0b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/EXTRA_PREREQS @@ -0,0 +1,151 @@ +# -*-perl-*- + +$description = "Test the .EXTRA_PREREQS special variable."; +$details = ""; + +# Simple global .EXTRA_PREREQS and automatic variable settings +run_make_test(' +.EXTRA_PREREQS = tick tack +.PHONY: all +all: ; @echo ${.EXTRA_PREREQS}/$@/$ $@ +!, + "", "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/local/recipes/dev/gnu-make/source/tests/scripts/variables/INCLUDE_DIRS b/local/recipes/dev/gnu-make/source/tests/scripts/variables/INCLUDE_DIRS new file mode 100644 index 0000000000..6881292486 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/INCLUDE_DIRS @@ -0,0 +1,94 @@ +# -*-perl-*- +$description = "Test the .INCLUDE_DIRS special variable."; + +$details = ""; + +use Cwd; + +$dir = cwd; +$dir =~ s,.*/([^/]+)$,../$1,; + +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 + +.PHONY: all +all:;@: +', + '', ''); +} + +# Test #2: Make sure -I paths end up in .INCLUDE_DIRS. +# +run_make_test(' +ifeq ($(dir),) +$(warning dir is empty) +endif + +ifeq ($(filter $(dir),$(.INCLUDE_DIRS)),) +$(warning .INCLUDE_DIRS does not contain $(dir): $(.INCLUDE_DIRS)) +endif + +.PHONY: all +all:;@: +', + "-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/local/recipes/dev/gnu-make/source/tests/scripts/variables/LIBPATTERNS b/local/recipes/dev/gnu-make/source/tests/scripts/variables/LIBPATTERNS new file mode 100644 index 0000000000..918295443d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/LIBPATTERNS @@ -0,0 +1,38 @@ +# -*-perl-*- + +$description = "Test .LIBPATTERNS special variable."; + +$details = ""; + +# TEST 0: basics + +touch('mtest_foo.a'); + +run_make_test(' +.LIBPATTERNS = mtest_%.a +all: -lfoo ; @echo "build $@ from $<" +', + '', "build all from mtest_foo.a\n"); + +# TEST 1: Handle elements that are not patterns. + +run_make_test(' +.LIBPATTERNS = mtest_foo.a mtest_%.a +all: -lfoo ; @echo "build $@ from $<" +', + '', "#MAKE#: .LIBPATTERNS element 'mtest_foo.a' is not a pattern +build all from mtest_foo.a\n"); + +# TEST 2: target-specific override + +# Uncomment this when we add support, see Savannah bug #25703 +# run_make_test(' +# .LIBPATTERNS = mbad_%.a +# all: .LIBPATTERNS += mtest_%.a +# all: -lfoo ; @echo "build $@ from $<" +# ', +# '', "build all from mtest_foo.a\n"); + +unlink('mtest_foo.a'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKE b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKE new file mode 100644 index 0000000000..dc621606ed --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKE @@ -0,0 +1,24 @@ +# -*-perl-*- + +$description = "Test proper behavior of the MAKE variable"; + +$details = "DETAILS"; + +run_make_test(q! +TMP := $(MAKE) +MAKE := $(subst X=$(X),,$(MAKE)) +all: + @echo $(TMP) + $(MAKE) -f #MAKEFILE# foo + +foo: + @echo $(MAKE) +!, + '', + "#MAKEPATH#\n#MAKEPATH# -f #MAKEFILE# foo\n" + . "#MAKE#[1]: Entering directory '#PWD#'\n" + . "#MAKEPATH#\n#MAKE#[1]: Leaving directory '#PWD#'\n"); + +rmfiles("foo"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKECMDGOALS b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKECMDGOALS new file mode 100644 index 0000000000..879283b056 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKECMDGOALS @@ -0,0 +1,52 @@ +# -*-perl-*- + +$description = "Test the MAKECMDGOALS variable."; + +$details = "\ +We construct a makefile with various targets, all of which print out +\$(MAKECMDGOALS), then call it different ways."; + +open(MAKEFILE,"> $makefile"); +print MAKEFILE "\ +.DEFAULT all: + \@echo \$(MAKECMDGOALS) +"; +close(MAKEFILE); + +# TEST #1 + +&run_make_with_options($makefile, + "", + &get_logfile, + 0); +$answer = "\n"; +&compare_output($answer,&get_logfile(1)); + +# TEST #2 + +&run_make_with_options($makefile, + "all", + &get_logfile, + 0); +$answer = "all\n"; +&compare_output($answer,&get_logfile(1)); + + +# TEST #3 + +&run_make_with_options($makefile, + "foo bar baz yaz", + &get_logfile, + 0); +$answer = "foo bar baz yaz\nfoo bar baz yaz\nfoo bar baz yaz\nfoo bar baz yaz\n"; +&compare_output($answer,&get_logfile(1)); + + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKEFILES b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKEFILES new file mode 100644 index 0000000000..564d996025 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKEFILES @@ -0,0 +1,47 @@ +# -*-perl-*- + +$description = "Test the MAKEFILES variable."; + +$makefile2 = &get_tmpfile; +$makefile3 = &get_tmpfile; + +open(MAKEFILE,"> $makefile2"); +print MAKEFILE < $makefile3"); +print MAKEFILE < +all: +> @echo '$@: MAKEFLAGS=$(MAKEFLAGS)' +> @MSG=Works $(MAKE) -e -f #MAKEFILE# jump +jump: +> @echo '$@ $(MSG): MAKEFLAGS=$(MAKEFLAGS)' +> @$(MAKE) -f #MAKEFILE# print +print: +> @echo '$@ $(MSG): MAKEFLAGS=$(MAKEFLAGS)' +.PHONY: all jump print +!, + '--no-print-directory', + 'all: MAKEFLAGS= --no-print-directory +jump Works: MAKEFLAGS=e --no-print-directory +print Works: MAKEFLAGS=e --no-print-directory'); + +# 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'/"); + +# 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/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKELEVEL b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKELEVEL new file mode 100644 index 0000000000..96a4e74071 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKELEVEL @@ -0,0 +1,33 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to test +makelevels in Make. It prints \$(MAKELEVEL) and then +prints the environment variable MAKELEVEL"; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE < $@ +bar.x: ; @touch $@ +', + '', 'MAKE_RESTARTS= +MAKE_RESTARTS=1 +MAKE_RESTARTS=2'); + +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 +$(info MAKE_RESTARTS=$(MAKE_RESTARTS)) +include foo.x +foo.x: ; @echo "include bar.x" > $@ +bar.x: ; @touch $@ +', + '', "MAKE_RESTARTS= +MAKE_RESTARTS=1 +MAKE_RESTARTS=2 +recurse MAKE_RESTARTS= +#MAKE#[1]: Entering directory '#PWD#' +MAKE_RESTARTS= +all MAKE_RESTARTS= +#MAKE#[1]: Leaving directory '#PWD#'"); + +rmfiles('foo.x', 'bar.x'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/MFILE_LIST b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MFILE_LIST new file mode 100644 index 0000000000..b75eea7e8f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MFILE_LIST @@ -0,0 +1,40 @@ +# -*-perl-*- + +$description = "Test the MAKEFILE_LIST variable."; + +create_file('incl2', "m2 := \$(MAKEFILE_LIST)\n"); + +run_make_test(qq! +m1 := \$(MAKEFILE_LIST) +include incl2 +m3 := \$(MAKEFILE_LIST) + +all: +\t\@echo \$(m1) +\t\@echo \$(m2) +\t\@echo \$(m3) +!, + '', "#MAKEFILE#\n#MAKEFILE# incl2\n#MAKEFILE# incl2\n"); + +unlink('incl2'); + +# SV 50823 -- makefiles containing '$' chars + +create_file('foo$bar', "m2 := \$(MAKEFILE_LIST)\n"); + +run_make_test(qq! +m1 := \$(MAKEFILE_LIST) +include foo\$\$bar +m3 := \$(MAKEFILE_LIST) + +all: +\t\@echo '\$(m1)' +\t\@echo '\$(m2)' +\t\@echo '\$(m3)' +\t\@echo '\$(value MAKEFILE_LIST)' +!, + '', "#MAKEFILE#\n#MAKEFILE# foo\$bar\n#MAKEFILE# foo\$bar\n#MAKEFILE# foo\$bar\n"); + +unlink('foo$bar'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/SHELL b/local/recipes/dev/gnu-make/source/tests/scripts/variables/SHELL new file mode 100644 index 0000000000..78d887c592 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/SHELL @@ -0,0 +1,110 @@ +# -*-perl-*- + +$description = "Test proper handling of SHELL."; + +# If we don't have a POSIX shell available, never mind +$is_posix_sh or return -1; + +# On Windows, shell names might not match +if ($port_type eq 'W32') { + return -1; +} + +$mshell = $sh_name; + +# According to POSIX, the value of SHELL in the environment has no impact on +# the value in the makefile. + +$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. A more portable option might be to set SHELL to +# be $^X (perl) in the makefile, and set .SHELLFLAGS to -e. + +$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"; +} + +run_make_test("SHELL := $altshell\n".' +all:;@echo "$(SHELL) $$SHELL" +', '', "$altshell $mshell"); + +# As a GNU make extension, if make's SHELL variable is explicitly exported, +# then we really _DO_ export it. + +$ENV{SHELL} = $mshell; + +run_make_test("export SHELL := $altshell\n".' +all:;@echo "$(SHELL) $$SHELL" +', '', "$altshell $altshell"); + + +# Test out setting of SHELL, both exported and not, as a target-specific +# variable. + +$ENV{SHELL} = $mshell; + +run_make_test("all: SHELL := $altshell\n".' +all:;@echo "$(SHELL) $$SHELL" +', '', "$altshell $mshell"); + +$ENV{SHELL} = $mshell; + +run_make_test(" +SHELL := $altshell2 +one: two +two: export SHELL := $altshell\n".' +one two:;@echo "$@: $(SHELL) $$SHELL" +', '', "two: $altshell $altshell\none: $altshell2 $mshell\n"); + +# Test .SHELLFLAGS + +# We don't know the output here: on Solaris for example, every line printed +# by the shell in -x mode has a trailing space (!!) +my $script = 'true; true'; +my $flags = '-xc'; +my $out = `$sh_name $flags '$script' 2>&1`; + +run_make_test(qq! +.SHELLFLAGS = $flags +all: ; \@$script +!, + '', $out); + +# Do it again but add spaces to SHELLFLAGS + +# 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; + +if ($multi_ok) { + $flags = '-x -c'; + run_make_test(qq! +.SHELLFLAGS = $flags +all: ; \@$script +!, + '', $out); +} + +# We can't just use "false" because on different systems it provides a +# different exit code--once again Solaris: false exits with 255 not 1 +$script = 'true; false; true'; +$flags = '-xec'; +$out = `$sh_name $flags '$script' 2>&1`; +my $err = $? >> 8; + +run_make_test(qq! +.SHELLFLAGS = $flags +all: ; \@$script +!, + '', "$out#MAKE#: *** [#MAKEFILE#:3: all] Error $err\n", 512); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/automatic b/local/recipes/dev/gnu-make/source/tests/scripts/variables/automatic new file mode 100644 index 0000000000..771bbda8f7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/automatic @@ -0,0 +1,146 @@ +# -*-perl-*- + +$description = "Test automatic variable setting."; + +$details = ""; + +use Cwd; + +$dir = cwd; +$dir =~ s,.*/([^/]+)$,../$1,; + +open(MAKEFILE, "> $makefile"); +print MAKEFILE "dir = $dir\n"; +print MAKEFILE <<'EOF'; +.SUFFIXES: +.SUFFIXES: .x .y .z +$(dir)/foo.x : baz.z $(dir)/bar.y baz.z + @echo '$$@ = $@, $$(@D) = $(@D), $$(@F) = $(@F)' + @echo '$$* = $*, $$(*D) = $(*D), $$(*F) = $(*F)' + @echo '$$< = $<, $$( $makefile2"); +print MAKEFILE "dir = $dir\n"; +print MAKEFILE <<'EOF'; +.SECONDEXPANSION: +.SUFFIXES: +.DEFAULT: ; @echo '$@' + +$(dir)/foo $(dir)/bar: $@.x $$@.x $$$@.x $$$$@.x $$(@D).x $$(@F).x + +$(dir)/x.z $(dir)/y.z: $(dir)/%.z : $@.% $$@.% $$$@.% $$$$@.% $$(@D).% $$(@F).% + +$(dir)/biz: $$(@).x $${@}.x $${@D}.x $${@F}.x +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile2, "$dir/foo $dir/bar", &get_logfile); +$answer = ".x\n$dir/foo.x\nx\n\$@.x\n$dir.x\nfoo.x\n$dir/bar.x\nbar.x\n"; +&compare_output($answer, &get_logfile(1)); + +&run_make_with_options($makefile2, "$dir/x.z $dir/y.z", &get_logfile); +$answer = ".x\n$dir/x.z.x\nx\n\$@.x\n$dir.x\nx.z.x\n.y\n$dir/y.z.y\ny\n\$@.y\n$dir.y\ny.z.y\n"; +&compare_output($answer, &get_logfile(1)); + +&run_make_with_options($makefile2, "$dir/biz", &get_logfile); +$answer = "$dir/biz.x\n$dir.x\nbiz.x\n"; +&compare_output($answer, &get_logfile(1)); + +# TEST #2 -- test for Savannah bug #12320. +# +run_make_test(' +.SUFFIXES: .b .src + +mbr.b: mbr.src + @echo $* + +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. +# +# See also Savannah bugs #16002 and #16051. + +touch('foo'); + +run_make_test(' +foo: bar ; @echo "\$$? = $?" +bar: ;', + '', + '$? = bar'); + +unlink('foo'); + +# TEST #4: ensure prereq ordering is correct when the command target has none +# See Savannah bug #21198 + +run_make_test(' +all : A B +all : ; @echo $@ -- $^ -- $< +all : C D +all : E F +A B C D E F G H : ; @: +', + '', "all -- A B C D E F -- A\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/define b/local/recipes/dev/gnu-make/source/tests/scripts/variables/define new file mode 100644 index 0000000000..eecbd8f3e4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/define @@ -0,0 +1,305 @@ +# -*-perl-*- + +$description = "Test define/endef variable assignments."; + +$details = ""; + +# TEST 0: old-style basic define/endef + +run_make_test(' +define multi +@echo hi +echo there +endef + +all: ; $(multi) +', + '', "hi\necho there\nthere\n"); + +# TEST 1: Various new-style define/endef + +run_make_test(' +FOO = foo + +define multi = +echo hi +@echo $(FOO) +endef # this is the end + +define simple := +@echo $(FOO) +endef + +define posix ::= +@echo $(FOO) +endef + +append = @echo a + +define append += + +@echo b +endef + +define cond ?= # this is a conditional +@echo first +endef + +define cond ?= +@echo second +endef + +FOO = there + +all: ; $(multi) + $(simple) + $(posix) + $(append) + $(cond) +', + '', "echo hi\nhi\nthere\nfoo\nfoo\na\nb\nfirst\n"); + +# TEST 1a: Various new-style define/endef, with no spaces + +run_make_test(q! +FOO = foo + +define multi= +echo hi +@echo $(FOO) +endef # this is the end + +define simple:= +@echo $(FOO) +endef + +define posix::= +@echo $(FOO) +endef + +define posixbsd:::= +@echo '$(FOO)$$bar' +endef + +append = @echo a + +define append+= + +@echo b +endef + +define cond?= # this is a conditional +@echo first +endef + +define cond?= +@echo second +endef + +FOO = there + +all: ; $(multi) + $(simple) + $(posix) + $(posixbsd) + $(append) + $(cond) +!, + '', "echo hi\nhi\nthere\nfoo\nfoo\nfoo\$bar\na\nb\nfirst\n"); + +# TEST 2: define in true section of conditional (containing conditional) + +run_make_test(' +FOO = foo +NAME = def +def = +ifdef BOGUS + define $(subst e,e,$(NAME)) = + ifeq (1,1) + FOO = bar + endif + endef +endif + +$(eval $(def)) +all: ; @echo $(FOO) +', + 'BOGUS=1', "bar\n"); + +# TEST 3: define in false section of conditional (containing conditional) + +run_make_test(undef, '', "foo\n"); + +# TEST 4: nested define (supported?) + +run_make_test(' +define outer + define inner + A = B + endef +endef + +$(eval $(outer)) + +outer: ; @echo $(inner) +', + '', "A = B\n"); + +# TEST 5: NEGATIVE: Missing variable name + +run_make_test(' +NAME = +define $(NAME) = +ouch +endef +all: ; @echo ouch +', + '', "#MAKEFILE#:3: *** empty variable name. Stop.\n", 512); + +# TEST 6: NEGATIVE: extra text after define + +run_make_test(' +NAME = +define NAME = $(NAME) +ouch +endef +all: ; @echo ok +', + '', "#MAKEFILE#:3: extraneous text after 'define' directive\nok\n"); + +# TEST 7: NEGATIVE: extra text after endef + +run_make_test(' +NAME = +define NAME = +ouch +endef $(NAME) +all: ; @echo ok +', + '', "#MAKEFILE#:5: extraneous text after 'endef' directive\nok\n"); + +# TEST 8: NEGATIVE: missing endef + +run_make_test(' +NAME = +all: ; @echo ok +define NAME = +ouch +endef$(NAME) +', + '', "#MAKEFILE#:4: *** missing 'endef', unterminated 'define'. Stop.\n", 512); + +# ------------------------- +# Make sure that prefix characters apply properly to define/endef values. +# +# There's a bit of oddness here if you try to use a variable to hold the +# prefix character for a define. Even though something like this: +# +# define foo +# echo bar +# endef +# +# all: ; $(V)$(foo) +# +# (where V=@) can be seen by the user to be obviously different than this: +# +# define foo +# $(V)echo bar +# endef +# +# all: ; $(foo) +# +# and the user thinks it should behave the same as when the "@" is literal +# instead of in a variable, that can't happen because by the time make +# expands the variables for the command line and sees it begins with a "@" it +# can't know anymore whether the prefix character came before the variable +# reference or was included in the first line of the variable reference. + +# TEST #5 +# ------- + +run_make_test(' +define FOO +$(V1)echo hello +$(V2)echo world +endef +all: ; @$(FOO) +', '', 'hello +world'); + +# TEST #6 +# ------- + +run_make_test(undef, 'V1=@ V2=@', 'hello +world'); + +# TEST #7 +# ------- + +run_make_test(' +define FOO +$(V1)echo hello +$(V2)echo world +endef +all: ; $(FOO) +', 'V1=@', 'hello +echo world +world'); + +# TEST #8 +# ------- + +run_make_test(undef, 'V2=@', 'echo hello +hello +world'); + +# TEST #9 +# ------- + +run_make_test(undef, 'V1=@ V2=@', 'hello +world'); + +# TEST #10 +# ------- +# Test the basics; a "@" internally to the variable applies to only one line. +# A "@" before the variable applies to the entire variable. + +run_make_test(' +define FOO +@echo hello +echo world +endef +define BAR +echo hello +echo world +endef + +all: foo bar +foo: ; $(FOO) +bar: ; @$(BAR) +', '', 'hello +echo world +world +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/local/recipes/dev/gnu-make/source/tests/scripts/variables/flavors b/local/recipes/dev/gnu-make/source/tests/scripts/variables/flavors new file mode 100644 index 0000000000..627672f82b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/flavors @@ -0,0 +1,200 @@ +# -*-perl-*- + +$description = "Test various flavors of make variable setting."; + +$details = ""; + +# TEST 0: Recursive + +run_make_test(' +ugh = Goodbye +foo = $(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo $(foo) +', + '', "Hello\n"); + +# TEST 1: Simple + +run_make_test(' +bar = Goodbye +foo := $(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo $(foo) +', + '', "Goodbye\n"); + +# TEST 2: Append to recursive + +run_make_test(' +foo = Hello +ugh = Goodbye +foo += $(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo $(foo) +', + '', "Hello Hello\n"); + +# TEST 3: Append to simple + +run_make_test(' +foo := Hello +ugh = Goodbye +bar = ${ugh} +foo += $(bar) +ugh = Hello +all: ; @echo $(foo) +', + '', "Hello Goodbye\n"); + +# TEST 4: Conditional pre-set + +run_make_test(' +foo = Hello +ugh = Goodbye +bar = ${ugh} +foo ?= $(bar) +ugh = Hello +all: ; @echo $(foo) +', + '', "Hello\n"); + +# TEST 5: Conditional unset + +run_make_test(' +ugh = Goodbye +bar = ${ugh} +foo ?= $(bar) +ugh = Hello +all: ; @echo $(foo) +', + '', "Hello\n"); + +# TEST 6: Simple using POSIX syntax +run_make_test(' +bar = Goodbye +foo ::= $(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo $(foo) +', + '', "Goodbye\n"); + +# TEST 7: POSIX syntax no spaces +run_make_test(' +bar = Goodbye +foo::=$(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo $(foo) +', + '', "Goodbye\n"); + +# TEST 8: Append to empty +run_make_test(q! +recur = +recur += foo +simple := +simple += bar +recur_empty = foo +recur_empty += +simple_empty := bar +simple_empty += +empty_recur = +empty_recur += +empty_simple := +empty_simple += + +all: ; @: $(info recur=/$(recur)/ simple=/$(simple)/ recure=/$(recur_empty)/ simplee=/$(simple_empty)/ erecur=/$(empty_recur)/ esimple=/$(empty_simple)/) +!, + '', "recur=/foo/ simple=/bar/ recure=/foo/ simplee=/bar/ erecur=// esimple=//\n"); + +# TEST 9: Line continuation +run_make_test(q! +recur = $\ + one$\ + two$\ + three +simple := $\ + four$\ + five$\ + six + +all: d$\ + e$\ + p; @: + +.PHONY: dep +dep: ; @: $(info recur=/$(recur)/ simple=/$(simple)/) +!, + '', "recur=/onetwothree/ simple=/fourfivesix/\n"); + +# TEST 9: Line continuation +run_make_test(q! +.POSIX: +recur = $\ + one$\ + two$\ + three +simple := $\ + four$\ + five$\ + six + +all: d$\ + e$\ + p; @: + +.PHONY: dep +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/local/recipes/dev/gnu-make/source/tests/scripts/variables/negative b/local/recipes/dev/gnu-make/source/tests/scripts/variables/negative new file mode 100644 index 0000000000..5cb600a827 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/negative @@ -0,0 +1,60 @@ +# -*-perl-*- + +$description = "Run some negative tests (things that should fail)."; + +# TEST #0 +# Check that non-terminated variable references are detected (and +# reported using the best filename/lineno info +run_make_test(' +foo = bar +x = $(foo +y = $x + +all: ; @echo $y +', + '', '#MAKEFILE#:3: *** unterminated variable reference. Stop.', + 512); + +# TEST #1 +# Bogus variable value passed on the command line. +run_make_test(undef, + ['x=$(other'], + '#MAKEFILE#:4: *** unterminated variable reference. Stop.', + 512); + +# TEST #2 +# Again, but this time while reading the makefile. +run_make_test(' +foo = bar +x = $(foo +y = $x + +z := $y + +all: ; @echo $y +', + '', '#MAKEFILE#:3: *** unterminated variable reference. Stop.', + 512); + +# TEST #3 +# Bogus variable value passed on the command line. +run_make_test(undef, + ['x=$(other'], + '#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/local/recipes/dev/gnu-make/source/tests/scripts/variables/private b/local/recipes/dev/gnu-make/source/tests/scripts/variables/private new file mode 100644 index 0000000000..8967ffb55f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/private @@ -0,0 +1,122 @@ +# -*-perl-*- + +$description = "Test 'private' variables."; + +$details = ""; + +# 1: Simple verification that private variables are not inherited +&run_make_test(' +a: +F = g +a: F = a +b: private F = b + +a b c: ; @echo $@: F=$(F) +a: b +b: c +', + '', "c: F=a\nb: F=b\na: F=a\n"); + +# 2: Again, but this time we start with "b" so "a"'s variable is not in scope +&run_make_test(undef, 'b', "c: F=g\nb: F=b\n"); + +# 3: Verification with pattern-specific variables +&run_make_test(' +t.a: + +F1 = g +F2 = g +%.a: private F1 = a +%.a: F2 = a + +t.a t.b: ; @echo $@: F1=$(F1) / F2=$(F2) +t.a: t.b +', + '', "t.b: F1=g / F2=a\nt.a: F1=a / F2=a\n"); + +# 4: Test private global variables +&run_make_test(' +a: +private F = g +G := $(F) +a: +b: F = b + +a b: ; @echo $@: F=$(F) / G=$(G) +a: b +', + '', "b: F=b / G=g\na: F= / G=g\n"); + +# 5: Multiple conditions on the same variable. Test export. +delete $ENV{'_X'}; +&run_make_test(' +_X = x +a: export override private _X = a +a: ; @echo _X=$(_X) / _X=$$_X +', + '', "_X=a / _X=a"); + +# 6: Test override. +&run_make_test(undef, '_X=c', "_X=a / _X=a\n"); + +# 7: Ensure keywords still work as targets +&run_make_test(' +a: export override private foo bar +foo bar export override private: ; @echo $@ +', + '', "export\noverride\nprivate\nfoo\nbar\n"); + +# 8: Ensure keywords still work as variables +&run_make_test(' +private = g +a: private = a +a: b +a b: ; @echo $@=$(private) +', + '', "b=a\na=a\n"); + +# 9: make sure private suppresses inheritance +run_make_test(q! +DEFS = FOO +all: bar1 +bar1: private DEFS += 1 +bar3: private DEFS += 3 +bar1: bar2 +bar2: bar3 +bar1 bar2 bar3: ; @echo '$@: $(DEFS)' +!, + '', "bar3: FOO 3\nbar2: FOO\nbar1: FOO 1\n"); + +# 10: Test append with pattern-specific variables and private + +run_make_test(q! +IA = global +PA = global +PS = global +S = global +PS = global +SV = global +b%: IA += b% +b%: private PA += b% +b%: private PS = b% +bar: all +bar: IA += bar +bar: private PA += bar +bar: private PS = bar +a%: IA += a% +a%: private PA += a% +a%: private PS = a% +all: IA += all +all: private PA += all +all: private PS = all + +bar all: ; @echo '$@: IA=$(IA)'; echo '$@: PA=$(PA)'; echo '$@: PS=$(PS)' +!, + '', "all: IA=global b% bar a% all +all: PA=global a% all +all: PS=all +bar: IA=global b% bar +bar: PA=global b% bar +bar: PS=bar\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/special b/local/recipes/dev/gnu-make/source/tests/scripts/variables/special new file mode 100644 index 0000000000..68f3128cf7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/special @@ -0,0 +1,149 @@ +# -*-perl-*- + +$description = "Test special GNU make variables."; + +$details = ""; + +&run_make_test(' + +X1 := $(sort $(filter FOO BAR,$(.VARIABLES))) + +FOO := foo + +X2 := $(sort $(filter FOO BAR,$(.VARIABLES))) + +BAR := bar + +all: ; @echo X1 = $(X1); echo X2 = $(X2); echo LAST = $(sort $(filter FOO BAR,$(.VARIABLES))) +', + '', "X1 =\nX2 = FOO\nLAST = BAR FOO\n"); + +# SV 45728: Test that undefining a variable is reflected properly + +&run_make_test(' +FOO := foo +BAR := bar +$(info one: $(sort $(filter FOO BAR BAZ,$(.VARIABLES)))) +undefine BAR +BAZ := baz +$(info two: $(sort $(filter FOO BAR BAZ,$(.VARIABLES)))) +all:;@: +', + '', "one: BAR FOO\ntwo: BAZ FOO\n"); + +# $makefile2 = &get_tmpfile; +# open(MAKEFILE, "> $makefile2"); + +# print MAKEFILE <<'EOF'; + +# X1 := $(sort $(.TARGETS)) + +# all: foo +# @echo X1 = $(X1) +# @echo X2 = $(X2) +# @echo LAST = $(sort $(.TARGETS)) + +# X2 := $(sort $(.TARGETS)) + +# foo: + +# EOF + +# close(MAKEFILE); + +# # TEST #2 +# # ------- + +# &run_make_with_options($makefile2, "", &get_logfile); +# $answer = "X1 =\nX2 = all\nLAST = all foo\n"; +# &compare_output($answer, &get_logfile(1)); + +# Test the .RECIPEPREFIX variable +&run_make_test(' +define foo +: foo-one\ +foo-two +: foo-three + : foo-four +endef + +orig: ; : orig-one + : orig-two \ +orig-three \ + orig-four \ + orig-five \\\\ + : orig-six + $(foo) + +.RECIPEPREFIX = > +test: ; : test-one +>: test-two \ +test-three \ +>test-four \ +> test-five \\\\ +>: test-six +>$(foo) + +.RECIPEPREFIX = +reset: ; : reset-one + : reset-two \ +reset-three \ + reset-four \ + reset-five \\\\ + : reset-six + $(foo) +', + 'orig test reset', + ': orig-one +: orig-two \ +orig-three \ +orig-four \ + orig-five \\\\ +: orig-six +: foo-one foo-two +: foo-three +: foo-four +: test-one +: test-two \ +test-three \ +test-four \ + test-five \\\\ +: test-six +: foo-one foo-two +: foo-three +: foo-four +: reset-one +: reset-two \ +reset-three \ +reset-four \ + reset-five \\\\ +: reset-six +: foo-one foo-two +: foo-three +: foo-four'); + +# Test that the "did you mean TAB" message is printed properly + +run_make_test(q! +$x. +!, + '', '#MAKEFILE#:2: *** missing separator. Stop.', 512); + +run_make_test(q! +foo: + bar +!, + '', '#MAKEFILE#:3: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.', 512); + +run_make_test(q! +.RECIPEPREFIX = : +foo: + bar +!, + '', '#MAKEFILE#:4: *** missing separator. Stop.', 512); + +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/undefine b/local/recipes/dev/gnu-make/source/tests/scripts/variables/undefine new file mode 100644 index 0000000000..1732351bda --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/undefine @@ -0,0 +1,91 @@ +# -*-perl-*- + +$description = "Test variable undefine."; + +$details = ""; + +# TEST 0: basic undefine functionality + +run_make_test(' +a = a +b := b +define c +c +endef + +$(info $(flavor a) $(flavor b) $(flavor c)) + +n := b + +undefine a +undefine $n +undefine c + +$(info $(flavor a) $(flavor b) $(flavor c)) + + +all: ;@: +', +'', "recursive simple recursive\nundefined undefined undefined"); + + +# TEST 1: override + +run_make_test(' +undefine a +override undefine b + +$(info $(flavor a) $(flavor b)) + + +all: ;@: +', +'a=a b=b', "recursive undefined"); + +1; + +# TEST 2: undefine in eval (make sure we undefine from the global var set) + +run_make_test(' +define undef +$(eval undefine $$1) +endef + +a := a +$(call undef,a) +$(info $(flavor a)) + + +all: ;@: +', +'', "undefined"); + + +# TEST 3: Missing variable name + +run_make_test(' +a = +undefine $a +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/local/recipes/dev/gnu-make/source/tests/scripts/vms/library b/local/recipes/dev/gnu-make/source/tests/scripts/vms/library new file mode 100644 index 0000000000..8375dfa628 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/vms/library @@ -0,0 +1,73 @@ +# -*-mode: perl-*- + +$description = "Test GNU make's VMS Library management features."; + +$details = "\ +This only works on VMS systems."; + +return -1 if $osname ne 'VMS'; + +# Help library +$mk_string = "help : help.hlb(file1.hlp)\n\n" . +"file1.hlp :\n" . +"\t\@pipe open/write xxx file1.hlp ; write xxx \"1 help\" ; close xxx\n"; + +my $answer = "library /replace help.hlb file1.hlp"; + +run_make_test($mk_string, + '', $answer); + +unlink('help.hlb'); +unlink('file1.hlp'); + +#Text library +$mk_string = "text : text.tlb(file1.txt)\n\n" . +"file1.txt :\n" . +"\t\@pipe open/write xxx file1.txt ; write xxx \"text file\" ; close xxx\n"; + +$answer = "library /replace text.tlb file1.txt"; + +run_make_test($mk_string, + '', $answer); + +unlink('text.tlb'); +unlink('file1.txt'); + + +#Macro library +$mk_string = "macro : macro.mlb(file1.mar)\n\n" . +"file1.mar :\n" . +"\tpipe open/write xxx file1.mar ; " . +"write xxx \".macro a b\" ; write xxx \".endm\" ; close xxx\n"; + +$answer = "library /replace macro.mlb file1.mar"; + +run_make_test($mk_string, + '', $answer); + +unlink('macro.mlb'); +unlink('file1.mar'); + +$mk_string = +"all:imagelib.olb(file2.exe)\n" . +"file2.exe : file2.obj file2.opt\n" . +"\t\@link /share=\$\@ \$\*,\$\*/opt\n\n" . +"file2.opt :\n" . +"\t\@pipe open/write xxx file2.opt ; " . +"write xxx \"CASE_SENSITIVE=YES\" ; close xxx\n" . +"file2.c :\n" . +"\t\@pipe open/write xxx file2.c ; write xxx \"file2(){}\" ; close xxx\n"; + +$answer = "library /replace imagelib.olb file2.exe"; + +run_make_test($mk_string, + '', $answer); + +unlink('imagelib.olb'); +unlink('file2.c'); +unlink('file2.obj'); +unlink('file2.exe'); +unlink('file2.opt'); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/test_driver.pl b/local/recipes/dev/gnu-make/source/tests/test_driver.pl new file mode 100644 index 0000000000..b64fffb64e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/test_driver.pl @@ -0,0 +1,1546 @@ +#!/usr/bin/perl +# -*-perl-*- +# +# Modification history: +# 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-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 . + + +# Test driver routines used by a number of test suites, including +# those for SCS, make, roll_dir, and scan_deps (?). +# +# this routine controls the whole mess; each test suite sets up a few +# variables and then calls &toplevel, which does all the real work. + +# $Id$ + +use Config; +use Cwd; +use File::Spec; +use File::Temp; + +# The number of test categories we've run +$categories_run = 0; +# The number of test categroies that have passed +$categories_passed = 0; +# The total number of individual tests that have been run +$total_tests_run = 0; +# The total number of individual tests that have passed +$total_tests_passed = 0; +# The number of tests in this category that have been run +$tests_run = 0; +# The number of tests in this category that have passed +$tests_passed = 0; + +$port_type = undef; +$osname = undef; +$vos = undef; +$pathsep = undef; + +# Yeesh. This whole test environment is such a hack! +$test_passed = 1; + +# Timeout in seconds. If the test takes longer than this we'll fail it. +# 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; +} + +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; +} + +# %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 + # VMS, it is needed to be understood. + # + # Perl on VMS by default maps the %ENV array to the system wide logical + # name table. + # + # This is a very large dynamically changing table. + # On Linux, this would be the equivalent of a table that contained + # every mount point, temporary pipe, and symbolic link on every + # file system. You normally do not have permission to clear or replace it, + # and if you did, the results would be catastrophic. + # + # On VMS, added/changed %ENV items show up in the process logical + # name table. So to track changes, a copy of it needs to be captured. + + my $raw_output = `show log/process/access_mode=supervisor`; + my @raw_output_lines = split('\n',$raw_output); + my %log_hash; + foreach my $line (@raw_output_lines) { + if ($line =~ /^\s+"([A-Za-z\$_]+)"\s+=\s+"(.+)"$/) { + $log_hash{$1} = $2; + } + } + return \%log_hash +} + +# %origENV is the caller's original environment +if ($^O ne 'VMS') { + %origENV = %ENV; +} else { + my $proc_env = vms_get_process_logicals; + %origENV = %{$proc_env}; +} + +sub resetENV +{ + # We used to say "%ENV = ();" but this doesn't work in Perl 5.000 + # through Perl 5.004. It was fixed in Perl 5.004_01, but we don't + # want to require that here, so just delete each one individually. + + if ($^O ne 'VMS') { + foreach $v (keys %ENV) { + delete $ENV{$v}; + } + + %ENV = %makeENV; + } else { + my $proc_env = vms_get_process_logicals(); + my %delta = %{$proc_env}; + foreach my $v (keys %delta) { + if (exists $origENV{$v}) { + if ($origENV{$v} ne $delta{$v}) { + $ENV{$v} = $origENV{$v}; + } + } else { + delete $ENV{$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 (# POSIX-specific things + 'TZ', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH', + 'LD_LIBRARY_PATH', + # *SAN things + 'ASAN_OPTIONS', 'UBSAN_OPTIONS', 'LSAN_OPTIONS', + # Purify things + 'PURIFYOPTIONS', + # Windows-specific things + 'Path', 'SystemRoot', 'TEMP', 'TMP', 'USERPROFILE', 'PATHEXT', + # DJGPP-specific things + 'DJDIR', 'DJGPP', 'SHELL', 'COMSPEC', 'HOSTNAME', 'LFN', + 'FNCASE', '387', 'EMU387', 'GROUP' + ) { + $makeENV{$_} = $ENV{$_} if $ENV{$_}; + } + + # Make sure our compares are not foiled by locale differences + + $makeENV{LC_ALL} = 'C'; + $makeENV{LANG} = 'C'; + $makeENV{LANGUAGE} = 'C'; + + $| = 1; # unbuffered output + + $debug = 0; # debug flag + $profile = 0; # profiling flag + $verbose = 0; # verbose mode flag + $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. + $default_input_stack_level = 0; # used by attach_default_input, etc. + $cwd = "."; # don't we wish we knew + $cwdslash = ""; # $cwd . $pathsep, but "" rather than "./" + + &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"; + + &set_more_defaults; # suite-defined + + &print_banner; + + if ($osname eq 'VMS' && $cwdslash eq "") { + # Porting this script to VMS revealed a small bug in opendir() not + # handling search lists correctly when the directory only exists in + # one of the logical_devices. Need to find the first directory in + # the search list, as that is where things will be written to. + my @dirs = split('/', $cwdpath); + + my $logical_device = $ENV{$dirs[1]}; + if ($logical_device =~ /([A-Za-z0-9_]+):(:?.+:)+/) { + # A search list was found. Grab the first logical device + # and use it instead of the search list. + $dirs[1]=$1; + my $lcl_pwd = join('/', @dirs); + $workpath = $lcl_pwd . '/' . $workdir + } + } + + if (-d $workpath) { + print "Clearing $workpath...\n"; + &remove_directory_tree("$workpath/") + or &error ("Couldn't wipe out $workpath: $!\n"); + } else { + mkdir ($workpath, 0777) or &error ("Cannot mkdir $workpath: $!\n"); + } + + if (!-d $scriptpath) { + &error ("Failed to find $scriptpath containing perl test scripts.\n"); + } + + if (@TESTS) { + print "Making work dirs...\n"; + foreach $test (@TESTS) { + if ($test =~ /^([^\/]+)\//) { + $dir = $1; + push (@rmdirs, $dir); + -d "$workpath/$dir" + or mkdir ("$workpath/$dir", 0777) + or &error ("Couldn't mkdir $workpath/$dir: $!\n"); + } + } + } else { + print "Finding tests...\n"; + opendir (SCRIPTDIR, $scriptpath) + or &error ("Couldn't opendir $scriptpath: $!\n"); + @dirs = grep (!/^(\..*|CVS|RCS)$/, readdir (SCRIPTDIR) ); + closedir (SCRIPTDIR); + foreach my $dir (@dirs) { + next if ($dir =~ /^(\..*|CVS|RCS)$/ || ! -d "$scriptpath/$dir"); + push (@rmdirs, $dir); + # 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"); + opendir (SCRIPTDIR, "$scriptpath/$dir") + or &error ("Couldn't opendir $scriptpath/$dir: $!\n"); + @files = grep (!/^(\..*|CVS|RCS|.*~)$/, readdir (SCRIPTDIR) ); + closedir (SCRIPTDIR); + foreach my $test (@files) { + -d $test and next; + push (@TESTS, "$dir/$test"); + } + } + } + + if (@TESTS == 0) { + &error ("\nNo tests in $scriptpath, and none were specified.\n"); + } + + print "\n"; + + run_all_tests(); + + foreach my $dir (@rmdirs) { + rmdir ("$workpath/$dir"); + } + + rmdir ($temppath); + + $| = 1; + + $categories_failed = $categories_run - $categories_passed; + $total_tests_failed = $total_tests_run - $total_tests_passed; + + if ($total_tests_failed) { + print "\n$total_tests_failed Test"; + print "s" unless $total_tests_failed == 1; + print " in $categories_failed Categor"; + print ($categories_failed == 1 ? "y" : "ies"); + print " Failed (See .$diffext* files in $workdir dir for details) :-(\n\n"; + return 0; + } + + print "\n$total_tests_passed Test"; + print "s" unless $total_tests_passed == 1; + print " in $categories_passed Categor"; + print ($categories_passed == 1 ? "y" : "ies"); + print " Complete ... No Failures :-)\n\n"; + return 1; +} + +sub get_osname +{ + # Set up an initial value. In perl5 we can do it the easy way. + $osname = defined($^O) ? $^O : ''; + $vos = 0; + $pathsep = "/"; + + # find the type of the port. We do this up front to have a single + # point of change if it needs to be tweaked. + # + # This is probably not specific enough. + # + if ($osname =~ /MSWin32/i || $osname =~ /Windows/i + || $osname =~ /MINGW32/i || $osname =~ /CYGWIN_NT/i) { + $port_type = 'W32'; + } + # Bleah, the osname is so variable on DOS. This kind of bites. + # Well, as far as I can tell if we check for some text at the + # beginning of the line with either no spaces or a single space, then + # a D, then either "OS", "os", or "ev" and a space. That should + # match and be pretty specific. + elsif ($osname =~ /^([^ ]*|[^ ]* [^ ]*)D(OS|os|ev) /) { + $port_type = 'DOS'; + } + # Check for OS/2 + elsif ($osname =~ m%OS/2%) { + $port_type = 'OS/2'; + } + + # VMS has a GNV Unix mode or a DCL mode. + # The SHELL environment variable should not be defined in VMS-DCL mode. + elsif ($osname eq 'VMS' && !defined $ENV{"SHELL"}) { + $port_type = 'VMS-DCL'; + } + # Everything else, right now, is UNIX. Note that we should integrate + # the VOS support into this as well and get rid of $vos; we'll do + # that next time. + else { + $port_type = 'UNIX'; + } + + if ($osname eq 'VMS') { + return; + } + + # Find a path to Perl + + # See if the filesystem supports long file names with multiple + # dots. DOS doesn't. + $short_filenames = 0; + (open (TOUCHFD, "> fancy.file.name") and close (TOUCHFD)) + or $short_filenames = 1; + unlink ("fancy.file.name") or $short_filenames = 1; + + if (! $short_filenames) { + # Thanks go to meyering@cs.utexas.edu (Jim Meyering) for suggesting a + # better way of doing this. (We used to test for existence of a /mnt + # dir, but that apparently fails on an SGI Indigo (whatever that is).) + # Because perl on VOS translates /'s to >'s, we need to test for + # VOSness rather than testing for Unixness (ie, try > instead of /). + + mkdir (".ostest", 0777) or &error ("Couldn't create .ostest: $!\n", 1); + open (TOUCHFD, "> .ostest>ick") and close (TOUCHFD); + chdir (".ostest") or &error ("Couldn't chdir to .ostest: $!\n", 1); + } + + if (! $short_filenames && -f "ick") { + $osname = "vos"; + $vos = 1; + $pathsep = ">"; + + } 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 + # with switches first. + eval "chop (\$osname = `sh -c 'uname -nmsr 2>&1'`)"; + if ($osname =~ /not found/i) { + $osname = "(something posixy with no uname)"; + + } elsif ($@ ne "" || $?) { + eval "chop (\$osname = `sh -c 'uname -a 2>&1'`)"; + if ($@ ne "" || $?) { + $osname = "(something posixy)"; + } + } + } + + if (! $short_filenames) { + chdir ("..") or &error ("Couldn't chdir to ..: $!\n", 1); + unlink (".ostest>ick"); + rmdir (".ostest") or &error ("Couldn't rmdir .ostest: $!\n", 1); + } +} + +sub parse_command_line +{ + @argv = @_; + + # use @ARGV if no args were passed in + + if (@argv == 0) { + @argv = @ARGV; + } + + # look at each option; if we don't recognize it, maybe the suite-specific + # command line parsing code will... + + while (@argv) { + $option = shift @argv; + if ($option =~ /^-usage$/i) { + &print_usage; + exit 0; + } + if ($option =~ /^-(h|help)$/i) { + &print_help; + exit 0; + } + + if ($option =~ /^-debug$/i) { + print "\nDEBUG ON\n"; + $debug = 1; + + } elsif ($option =~ /^-profile$/i) { + $profile = 1; + + } elsif ($option =~ /^-verbose$/i) { + $verbose = 1; + + } elsif ($option =~ /^-detail$/i) { + $detail = 1; + $verbose = 1; + + } elsif ($option =~ /^-keep$/i) { + $keep = 1; + + } elsif (&valid_option($option)) { + # The suite-defined subroutine takes care of the option + + } elsif ($option =~ /^-/) { + print "Invalid option: $option\n"; + &print_usage; + exit 0; + + } else { # must be the name of a test + $option =~ s/\.pl$//; + push(@TESTS,$option); + } + } +} + +sub max +{ + my $num = shift @_; + my $newnum; + + while (@_) { + $newnum = shift @_; + if ($newnum > $num) { + $num = $newnum; + } + } + + return $num; +} + +sub print_centered +{ + my ($width, $string) = @_; + + if (length ($string)) { + my $pad = " " x ( ($width - length ($string) + 1) / 2); + print "$pad$string"; + } +} + +sub print_banner +{ + # $testee is suite-defined + 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."\n"); + &print_centered ($len, $testee_version); + &print_centered ($len, $line); + print "\n"; +} + +sub run_all_tests +{ + # Make sure we always run the tests from the current directory + unshift(@INC, cwd()); + + $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; + $num_of_tmpfiles = 0; + $description = ""; + $details = ""; + $old_makefile = undef; + $testname =~ s/^$scriptpath$pathsep//; + $perl_testname = "$scriptpath$pathsep$testname"; + $testname =~ s/(\.pl|\.perl)$//; + $testpath = "$workpath$pathsep$testname"; + $extext = '_' if $^O eq 'VMS'; + $log_filename = "$testpath.$logext"; + $diff_filename = "$testpath.$diffext"; + $base_filename = "$testpath.$baseext"; + $run_filename = "$testpath.$runext"; + $tmp_filename = "$testpath.$tmpfilesuffix"; + + -f $perl_testname or die "Invalid test: $testname\n\n"; + + setup_for_test(); + + $output = "........................................................ "; + + substr($output, 0, length($testname)) = "$testname "; + + print $output; + + $tests_run = 0; + $tests_passed = 0; + + # 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; + + # How did it go? + if (!defined($code)) { + # Failed to parse or called die + if (length ($@)) { + warn "\n*** Test died ($testname): $@\n"; + } else { + warn "\n*** Couldn't parse $perl_testname\n"; + } + $status = "FAILED ($tests_passed/$tests_run passed)"; + + } elsif ($code == -1) { + # Skipped... not supported + $status = "N/A"; + --$categories_run; + + } elsif ($code != 1) { + # Bad result... this shouldn't really happen. Usually means that + # the suite forgot to end with "1;". + warn "\n*** Test returned $code\n"; + $status = "FAILED ($tests_passed/$tests_run passed)"; + + } elsif ($tests_run == 0) { + # Nothing was done!! + $status = "FAILED (no tests found!)"; + + } elsif ($tests_run > $tests_passed) { + # Lose! + $status = "FAILED ($tests_passed/$tests_run passed)"; + + } else { + # Win! + ++$categories_passed; + $status = "ok ($tests_passed passed)"; + + # Clean up + for ($i = $num_of_tmpfiles; $i; $i--) { + rmfiles($tmp_filename . num_suffix($i)); + } + for ($i = $num_of_logfiles ? $num_of_logfiles : 1; $i; $i--) { + rmfiles($log_filename . num_suffix($i)); + rmfiles($base_filename . num_suffix($i)); + } + } + + # If the verbose option has been specified, then a short description + # of each test is printed before displaying the results of each test + # describing WHAT is being tested. + + if ($verbose) { + if ($detail) { + print "\nWHAT IS BEING TESTED\n"; + print "--------------------"; + } + print "\n\n$description\n\n"; + } + + # If the detail option has been specified, then the details of HOW + # the test is testing what it says it is testing in the verbose output + # will be displayed here before the results of the test are displayed. + + if ($detail) { + print "\nHOW IT IS TESTED\n"; + print "----------------"; + print "\n\n$details\n\n"; + } + + print "$status\n"; + } + + close(INCOPY); +} + +# If the keep flag is not set, this subroutine deletes all filenames that +# are sent to it. + +sub rmfiles +{ + my (@files) = @_; + + if (!$keep) { + return (unlink @files); + } + + return 1; +} + +sub print_standard_usage +{ + my ($plname, @moreusage) = @_; + + print "usage:\t$plname [testname] [-verbose] [-detail] [-keep]\n"; + print "\t\t\t[-profile] [-usage] [-help] [-debug]\n"; + foreach (@moreusage) { + print "\t\t\t$_\n"; + } +} + +sub print_standard_help +{ + my (@morehelp) = @_; + my $t = " "; + + my $line = "Test Driver For $testee"; + print "$line\n"; + $line = "=" x length ($line); + print "$line\n"; + + print_usage(); + + print "\ntestname\n" + . "${t}You may, if you wish, run only ONE test if you know the name\n" + . "${t}of that test and specify this name anywhere on the command\n" + . "${t}line. Otherwise ALL existing tests in the scripts directory\n" + . "${t}will be run.\n" + . "-verbose\n" + . "${t}If this option is given, a description of every test is\n" + . "${t}displayed before the test is run. (Not all tests may have\n" + . "${t}descriptions at this time)\n" + . "-detail\n" + . "${t}If this option is given, a detailed description of every\n" + . "${t}test is displayed before the test is run. (Not all tests\n" + . "${t}have descriptions at this time)\n" + . "-profile\n" + . "${t}If this option is given, then the profile file\n" + . "${t}is added to other profiles every time $testee is run.\n" + . "${t}This option only works on VOS at this time.\n" + . "-keep\n" + . "${t}You may give this option if you DO NOT want ANY\n" + . "${t}of the files generated by the tests to be deleted. \n" + . "${t}Without this option, all files generated by the test will\n" + . "${t}be deleted IF THE TEST PASSES.\n" + . "-debug\n" + . "${t}Use this option if you would like to see all of the system\n" + . "${t}calls issued and their return status while running the tests\n" + . "${t}This can be helpful if you're having a problem adding a test\n" + . "${t}to the suite, or if the test fails!\n"; + + foreach $line (@morehelp) { + my $tline = $line; + if (substr ($tline, 0, 1) eq "\t") { + substr ($tline, 0, 1) = $t; + } + print "$tline\n"; + } +} + +####################################################################### +########### Generic Test Driver Subroutines ########### +####################################################################### + +sub get_caller +{ + my $depth = defined ($_[0]) ? $_[0] : 1; + my ($pkg, $filename, $linenum) = caller ($depth + 1); + return "$filename: $linenum"; +} + +sub error +{ + my $message = $_[0]; + my $caller = &get_caller (1); + + if (defined ($_[1])) { + $caller = &get_caller ($_[1] + 1) . " -> $caller"; + } + + die "$caller: $message"; +} + +my %old_tempfiles = (); + +sub compare_output +{ + 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; + } else { + print "Comparing output ........ " if $debug; + + $slurp = &read_file_into_string ($logfile); + + # For make, get rid of any time skew error before comparing--too bad this + # has to go into the "generic" driver code :-/ + $slurp =~ s/^.*modification time .*in the future.*\n//gm; + $slurp =~ s/^.*Clock skew detected.*\n//gm; + + if ($slurp eq $answer) { + $answer_matched = 1; + } else { + # See if it is a slash or CRLF problem + my ($answer_mod, $slurp_mod) = ($answer, $slurp); + + $answer_mod =~ tr,\\,/,; + $answer_mod =~ s,\r\n,\n,gs; + + $slurp_mod =~ tr,\\,/,; + $slurp_mod =~ s,\r\n,\n,gs; + + $answer_matched = ($slurp_mod eq $answer_mod); + + if (!$answer_matched && $^O eq 'VMS') { + + # VMS has extra blank lines in output sometimes. + # Ticket #41760 + if (!$answer_matched) { + $slurp_mod =~ s/\n\n+/\n/gm; + $slurp_mod =~ s/\A\n+//g; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS adding a "Waiting for unfinished jobs..." + # Remove it for now to see what else is going on. + if (!$answer_matched) { + $slurp_mod =~ s/^.+\*\*\* Waiting for unfinished jobs.+$//m; + $slurp_mod =~ s/\n\n/\n/gm; + $slurp_mod =~ s/^\n+//gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS wants target device to exist or generates an error, + # Some test tagets look like VMS devices and trip this. + if (!$answer_matched) { + $slurp_mod =~ s/^.+\: no such device or address.*$//gim; + $slurp_mod =~ s/\n\n/\n/gm; + $slurp_mod =~ s/^\n+//gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS error message has a different case + if (!$answer_matched) { + $slurp_mod =~ s/no such file /No such file /gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS is putting comas instead of spaces in output + if (!$answer_matched) { + $slurp_mod =~ s/,/ /gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS Is sometimes adding extra leading spaces to output? + if (!$answer_matched) { + my $slurp_mod = $slurp_mod; + $slurp_mod =~ s/^ +//gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS port not handling POSIX encoded child status + # Translate error case it for now. + if (!$answer_matched) { + $slurp_mod =~ s/0x1035a00a/1/gim; + $answer_matched = 1 if $slurp_mod =~ /\Q$answer_mod\E/i; + + } + if (!$answer_matched) { + $slurp_mod =~ s/0x1035a012/2/gim; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # Tests are using a UNIX null command, temp hack + # until this can be handled by the VMS port. + # ticket # 41761 + if (!$answer_matched) { + $slurp_mod =~ s/^.+DCL-W-NOCOMD.*$//gim; + $slurp_mod =~ s/\n\n+/\n/gm; + $slurp_mod =~ s/^\n+//gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + # Tests are using exit 0; + # this generates a warning that should stop the make, but does not + if (!$answer_matched) { + $slurp_mod =~ s/^.+NONAME-W-NOMSG.*$//gim; + $slurp_mod =~ s/\n\n+/\n/gm; + $slurp_mod =~ s/^\n+//gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS is sometimes adding single quotes to output? + if (!$answer_matched) { + my $noq_slurp_mod = $slurp_mod; + $noq_slurp_mod =~ s/\'//gm; + $answer_matched = ($noq_slurp_mod eq $answer_mod); + + # And missing an extra space in output + if (!$answer_matched) { + $noq_answer_mod = $answer_mod; + $noq_answer_mod =~ s/\h\h+/ /gm; + $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); + } + + # VMS adding ; to end of some lines. + if (!$answer_matched) { + $noq_slurp_mod =~ s/;\n/\n/gm; + $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); + } + + # VMS adding trailing space to end of some quoted lines. + if (!$answer_matched) { + $noq_slurp_mod =~ s/\h+\n/\n/gm; + $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); + } + + # And VMS missing leading blank line + if (!$answer_matched) { + $noq_answer_mod =~ s/\A\n//g; + $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); + } + + # Unix double quotes showing up as single quotes on VMS. + if (!$answer_matched) { + $noq_answer_mod =~ s/\"//g; + $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); + } + } + } + + # If it still doesn't match, see if the answer might be a regex. + if (!$answer_matched && $answer =~ m,^/(.+)/$,) { + $answer_matched = ($slurp =~ /$1/); + if (!$answer_matched && $answer_mod =~ m,^/(.+)/$,) { + $answer_matched = ($slurp_mod =~ /$1/); + } + } + } + } + + if ($keep || ! $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; + } + + if (! $answer_matched) { + print "DIFFERENT OUTPUT\n" if $debug; + + print "\nCreating Difference File ...\n" if $debug; + + # Create the difference file + 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; +} + +sub read_file_into_string +{ + my ($filename) = @_; + my $oldslash = $/; + undef $/; + + open (RFISFILE, '<', $filename) or return ""; + my $slurp = ; + close (RFISFILE); + + $/ = $oldslash; + + return $slurp; +} + +my @OUTSTACK = (); +my @ERRSTACK = (); + +sub attach_default_output +{ + my ($filename) = @_; + + if ($vos) + { + my $code = system "++attach_default_output_hack $filename"; + $code == -2 or &error ("ado death\n", 1); + return 1; + } + + my $dup = undef; + open($dup, '>&', STDOUT) or error("ado: $! duping STDOUT\n", 1); + push @OUTSTACK, $dup; + + $dup = undef; + open($dup, '>&', STDERR) or error("ado: $! duping STDERR\n", 1); + push @ERRSTACK, $dup; + + open(STDOUT, '>', $filename) or error("ado: $filename: $!\n", 1); + open(STDERR, ">&STDOUT") or error("ado: $filename: $!\n", 1); +} + +# close the current stdout/stderr, and restore the previous ones from +# the "stack." + +sub detach_default_output +{ + if ($vos) + { + my $code = system "++detach_default_output_hack"; + $code == -2 or &error ("ddoh death\n", 1); + return 1; + } + + @OUTSTACK or error("default output stack has flown under!\n", 1); + + close(STDOUT); + close(STDERR) unless $^O eq 'VMS'; + + + open (STDOUT, '>&', pop @OUTSTACK) or error("ddo: $! duping STDOUT\n", 1); + open (STDERR, '>&', pop @ERRSTACK) or error("ddo: $! duping STDERR\n", 1); +} + +sub _run_with_timeout +{ + my $code; + if ($^O eq 'VMS') { + #local $SIG{ALRM} = sub { + # my $e = $ERRSTACK[0]; + # print $e "\nTest timed out after $test_timeout seconds\n"; + # die "timeout\n"; + #}; + #alarm $test_timeout; + system(@_); + #alarm 0; + my $severity = ${^CHILD_ERROR_NATIVE} & 7; + $code = 0; + if (($severity & 1) == 0) { + $code = 512; + } + + # Get the vms status. + my $vms_code = ${^CHILD_ERROR_NATIVE}; + + # Remove the print status bit + $vms_code &= ~0x10000000; + + # Posix code translation. + if (($vms_code & 0xFFFFF000) == 0x35a000) { + $code = (($vms_code & 0xFFF) >> 3) * 256; + } + + } elsif ($port_type eq 'W32') { + my $pid = system(1, @_); + $pid > 0 or die "Cannot execute $_[0]\n"; + local $SIG{ALRM} = sub { + my $e = $ERRSTACK[0]; + print $e "\nTest timed out after $test_timeout seconds\n"; + kill -9, $pid; + die "timeout\n"; + }; + alarm $test_timeout; + my $r = waitpid($pid, 0); + alarm 0; + $r == -1 and die "No such pid: $pid\n"; + # This shouldn't happen since we wait forever or timeout via SIGALRM + $r == 0 and die "No process exited.\n"; + $code = $?; + + } else { + my $pid = fork(); + if (! $pid) { + exec(@_) or die "exec: Cannot execute $_[0]: $!\n"; + } + local $SIG{ALRM} = sub { + my $e = $ERRSTACK[0]; + print $e "\nTest timed out after $test_timeout seconds\n"; + # Resend the alarm to our process group to kill the children. + $SIG{ALRM} = 'IGNORE'; + kill -14, $$; + die "timeout\n"; + }; + alarm $test_timeout; + my $r = waitpid($pid, 0); + alarm 0; + $r == -1 and die "No such pid: $pid\n"; + # This shouldn't happen since we wait forever or timeout via SIGALRM + $r == 0 and die "No process exited.\n"; + $code = $?; + } + + return $code; +} + +# This runs a command without any debugging info. +sub _run_command +{ + 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: $@"; + $code = 14; + } + + return $code; +} + +# run one command (passed as a list of arg 0 - n), returning 0 on success +# and nonzero on failure. + +sub run_command +{ + print "\nrun_command: @_\n" if $debug; + my $code = _run_command(@_); + print "run_command returned $code.\n" if $debug; + print "vms status = ${^CHILD_ERROR_NATIVE}\n" if $debug and $^O eq 'VMS'; + return $code; +} + +# run one command (passed as a list of arg 0 - n, with arg 0 being the +# second arg to this routine), returning 0 on success and non-zero on failure. +# The first arg to this routine is a filename to connect to the stdout +# & stderr of the child process. + +sub run_command_with_output +{ + my $filename = shift; + + print "\nrun_command_with_output($filename,$runname): @_\n" if $debug; + &attach_default_output ($filename); + my $code = eval { _run_command(@_) }; + my $err = $@; + &detach_default_output; + + $err and die $err; + + print "run_command_with_output returned $code.\n" if $debug; + print "vms status = ${^CHILD_ERROR_NATIVE}\n" if $debug and $^O eq 'VMS'; + return $code; +} + +# performs the equivalent of an "rm -rf" on the first argument. Like +# rm, if the path ends in /, leaves the (now empty) directory; otherwise +# deletes it, too. + +sub remove_directory_tree +{ + my ($targetdir) = @_; + my ($nuketop) = 1; + + my $ch = substr ($targetdir, length ($targetdir) - 1); + if ($ch eq "/" || $ch eq $pathsep) { + $targetdir = substr ($targetdir, 0, length ($targetdir) - 1); + $nuketop = 0; + } + + -e $targetdir or return 1; + + &remove_directory_tree_inner ("RDT00", $targetdir) or return 0; + if ($nuketop && !rmdir ($targetdir)) { + print "Cannot remove $targetdir: $!\n"; + return 0; + } + + return 1; +} + +sub remove_directory_tree_inner +{ + my ($dirhandle, $targetdir) = @_; + + opendir ($dirhandle, $targetdir) or return 0; + my $subdirhandle = $dirhandle; + $subdirhandle++; + while (my $object = readdir ($dirhandle)) { + $object =~ /^(\.\.?|CVS|RCS)$/ and next; + $object = "$targetdir$pathsep$object"; + + lstat ($object); + if (-d _ && &remove_directory_tree_inner ($subdirhandle, $object)) { + if (!rmdir($object)) { + print "Cannot remove $object: $!\n"; + return 0; + } + } else { + if ($^O ne 'VMS') { + if (!unlink $object) { + print "Cannot unlink $object: $!\n"; + return 0; + } + } else { + # VMS can have multiple versions of a file. + 1 while unlink $object; + } + } + } + closedir ($dirhandle); + return 1; +} + +# We used to use this behavior for this function: +# +#sub touch +#{ +# my (@filenames) = @_; +# my $now = time; +# +# foreach my $file (@filenames) { +# utime ($now, $now, $file) +# or (open (TOUCHFD, ">> $file") and close (TOUCHFD)) +# or &error ("Couldn't touch $file: $!\n", 1); +# } +# return 1; +#} +# +# But this behaves badly on networked filesystems where the time is +# skewed, because it sets the time of the file based on the _local_ +# host. Normally when you modify a file, it's the _remote_ host that +# determines the modtime, based on _its_ clock. So, instead, now we open +# the file and write something into it to force the remote host to set +# the modtime correctly according to its clock. +# + +sub touch +{ + foreach my $file (@_) { + (open(T, '>>', $file) and print(T "\n") and close(T)) + or &error("Couldn't touch $file: $!\n", 1); + } + + return @_; +} + +# Touch with a time offset. To DTRT, call touch() then use stat() to get the +# access/mod time for each file and apply the offset. + +sub utouch +{ + my $off = shift; + + &touch(@_); + + foreach my $f (@_) { + my @s = stat($f); + utime($s[8]+$off, $s[9]+$off, $f); + } + + return @_; +} + +# open a file, write some stuff to it, and close it. + +sub create_file +{ + my ($filename, @lines) = @_; + + open (CF, "> $filename") or &error ("Couldn't open $filename: $!\n", 1); + foreach $line (@lines) { + print CF $line; + } + close (CF); +} + +# create a directory tree described by an associative array, wherein each +# key is a relative pathname (using slashes) and its associated value is +# one of: +# DIR indicates a directory +# FILE:contents indicates a file, which should contain contents +\n +# LINK:target indicates a symlink, pointing to $basedir/target +# The first argument is the dir under which the structure will be created +# (the dir will be made and/or cleaned if necessary); the second argument +# is the associative array. + +sub create_dir_tree +{ + my ($basedir, %dirtree) = @_; + + &remove_directory_tree ("$basedir"); + mkdir ($basedir, 0777) or &error ("Couldn't mkdir $basedir: $!\n", 1); + + foreach my $path (sort keys (%dirtree)) { + if ($dirtree {$path} =~ /^DIR$/) { + mkdir ("$basedir/$path", 0777) + or &error ("Couldn't mkdir $basedir/$path: $!\n", 1); + + } elsif ($dirtree {$path} =~ /^FILE:(.*)$/) { + &create_file ("$basedir/$path", $1 . "\n"); + + } elsif ($dirtree {$path} =~ /^LINK:(.*)$/) { + symlink ("$basedir/$1", "$basedir/$path") + or &error ("Couldn't symlink $basedir/$path -> $basedir/$1: $!\n", 1); + + } else { + &error ("Bogus dirtree type: \"$dirtree{$path}\"\n", 1); + } + } + if ($just_setup_tree) { + die "Tree is setup...\n"; + } +} + +# compare a directory tree with an associative array in the format used +# by create_dir_tree, above. +# The first argument is the dir under which the structure should be found; +# the second argument is the associative array. + +sub compare_dir_tree +{ + my ($basedir, %dirtree) = @_; + my $bogus = 0; + + opendir (DIR, $basedir) or &error ("Couldn't open $basedir: $!\n", 1); + my @allfiles = grep (!/^(\.\.?|CVS|RCS)$/, readdir (DIR) ); + closedir (DIR); + if ($debug) { + print "dirtree: (%dirtree)\n$basedir: (@allfiles)\n"; + } + + foreach my $path (sort keys (%dirtree)) + { + if ($debug) { + print "Checking $path ($dirtree{$path}).\n"; + } + + my $found = 0; + foreach my $i (0 .. $#allfiles) { + if ($allfiles[$i] eq $path) { + splice (@allfiles, $i, 1); # delete it + if ($debug) { + print " Zapped $path; files now (@allfiles).\n"; + } + lstat ("$basedir/$path"); + $found = 1; + last; + } + } + + if (!$found) { + print "compare_dir_tree: $path does not exist.\n"; + $bogus = 1; + next; + } + + if ($dirtree {$path} =~ /^DIR$/) { + if (-d _ && opendir (DIR, "$basedir/$path") ) { + my @files = readdir (DIR); + closedir (DIR); + @files = grep (!/^(\.\.?|CVS|RCS)$/ && ($_ = "$path/$_"), @files); + push (@allfiles, @files); + if ($debug) + { + print " Read in $path; new files (@files).\n"; + } + + } else { + print "compare_dir_tree: $path is not a dir.\n"; + $bogus = 1; + } + + } elsif ($dirtree {$path} =~ /^FILE:(.*)$/) { + if (-l _ || !-f _) { + print "compare_dir_tree: $path is not a file.\n"; + $bogus = 1; + next; + } + + if ($1 ne "*") { + my $contents = &read_file_into_string ("$basedir/$path"); + if ($contents ne "$1\n") { + print "compare_dir_tree: $path contains wrong stuff." + . " Is:\n$contentsShould be:\n$1\n"; + $bogus = 1; + } + } + + } elsif ($dirtree {$path} =~ /^LINK:(.*)$/) { + my $target = $1; + if (!-l _) { + print "compare_dir_tree: $path is not a link.\n"; + $bogus = 1; + next; + } + + my $contents = readlink ("$basedir/$path"); + $contents =~ tr/>/\//; + my $fulltarget = "$basedir/$target"; + $fulltarget =~ tr/>/\//; + if (!($contents =~ /$fulltarget$/)) { + if ($debug) { + $target = $fulltarget; + } + print "compare_dir_tree: $path should be link to $target, " + . "not $contents.\n"; + $bogus = 1; + } + + } else { + &error ("Bogus dirtree type: \"$dirtree{$path}\"\n", 1); + } + } + + if ($debug) { + print "leftovers: (@allfiles).\n"; + } + + foreach my $file (@allfiles) { + print "compare_dir_tree: $file should not exist.\n"; + $bogus = 1; + } + + return !$bogus; +} + +# this subroutine generates the numeric suffix used to keep tmp filenames, +# log filenames, etc., unique. If the number passed in is 1, then a null +# string is returned; otherwise, we return ".n", where n + 1 is the number +# we were given. + +sub num_suffix +{ + my ($num) = @_; + if (--$num > 0) { + return "$extext$num"; + } + + return ""; +} + +# This subroutine returns a log filename with a number appended to +# the end corresponding to how many logfiles have been created in the +# current running test. An optional parameter may be passed (0 or 1). +# If a 1 is passed, then it does NOT increment the logfile counter +# and returns the name of the latest logfile. If either no parameter +# is passed at all or a 0 is passed, then the logfile counter is +# incremented and the new name is returned. + +sub get_logfile +{ + my ($no_increment) = @_; + + $num_of_logfiles += !$no_increment; + + return ($log_filename . &num_suffix ($num_of_logfiles)); +} + +# This subroutine returns a base (answer) filename with a number +# appended to the end corresponding to how many logfiles (and thus +# base files) have been created in the current running test. +# NO PARAMETERS ARE PASSED TO THIS SUBROUTINE. + +sub get_basefile +{ + return ($base_filename . &num_suffix ($num_of_logfiles)); +} + +# This subroutine returns a difference filename with a number appended +# to the end corresponding to how many logfiles (and thus diff files) +# have been created in the current running test. + +sub get_difffile +{ + return ($diff_filename . &num_suffix ($num_of_logfiles)); +} + +# This subroutine returns a command filename with a number appended +# to the end corresponding to how many logfiles (and thus command files) +# have been created in the current running test. + +sub get_runfile +{ + return ($run_filename . &num_suffix ($num_of_logfiles)); +} + +# just like logfile, only a generic tmp filename for use by the test. +# they are automatically cleaned up unless -keep was used, or the test fails. +# Pass an argument of 1 to return the same filename as the previous call. + +sub get_tmpfile +{ + my ($no_increment) = @_; + + $num_of_tmpfiles += !$no_increment; + + return ($tmp_filename . &num_suffix ($num_of_tmpfiles)); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/thelp.pl b/local/recipes/dev/gnu-make/source/tests/thelp.pl new file mode 100755 index 0000000000..993339cbf1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/thelp.pl @@ -0,0 +1,118 @@ +#!/usr/bin/env perl +# -*-perl-*- +# +# This script helps us write tests in a portable way, without relying on a lot +# of shell features. Since we already have Perl to run the tests, use that. +# +# The arguments represent a set of steps that will be run one at a time. +# Each step consists of an operator and argument. +# +# It supports the following operators: +# out : echo to stdout with a newline +# raw : echo to stdout without adding anything +# file : echo to stdout AND create the file +# dir : echo to stdout AND create the directory +# rm : echo to stdout AND delete the file/directory +# wait : wait for a file named to exist +# tmout : Change the timeout for waiting. Default is 4 seconds. +# sleep : Sleep for seconds then echo +# fail : echo to stdout then exit with error code err +# +# If given -q only the "out" command generates output. + +# Force flush +$| = 1; + +my $quiet = 0; +my $timeout = 10; + +sub op { + my ($op, $nm) = @_; + + defined $nm or die "Missing value for $op\n"; + + if ($op eq 'out') { + print "$nm\n"; + return 1; + } + if ($op eq 'raw') { + print "$nm"; + return 1; + } + + # Show the output before creating the file + if ($op eq 'file') { + print "file $nm\n" unless $quiet; + open(my $fh, '>', $nm) or die "$nm: open: $!\n"; + close(my $fh); + return 1; + } + + # Show the output before creating the directory + if ($op eq 'dir') { + print "dir $nm\n" unless $quiet; + mkdir($nm) or die "$nm: mkdir: $!\n"; + return 1; + } + + # Show the output after removing the file + if ($op eq 'rm') { + if (-f $nm) { + unlink($nm) or die "$nm: unlink: $!\n"; + } elsif (-d $nm) { + rmdir($nm) or die "$nm: rmdir: $!\n"; + } else { + die "$nm: not file or directory: $!\n"; + } + print "rm $nm\n" unless $quiet; + return 1; + } + + if ($op eq 'tmout') { + $timeout = $nm; + print "tmout $nm\n" unless $quiet; + return 1; + } + + # Show the output after the file exists + if ($op eq 'wait') { + my $start = time(); + my $end = $start + $timeout; + while (time() <= $end) { + if (-f $nm) { + print "wait $nm\n" unless $quiet; + return 1; + } + select(undef, undef, undef, 0.1); + } + die "wait $nm: timeout after ".(time()-$start-1)." seconds\n"; + } + + # Show the output after sleeping + if ($op eq 'sleep') { + sleep($nm); + print "sleep $nm\n" unless $quiet; + return 1; + } + + if ($op eq 'fail') { + print "fail $nm\n"; + exit($nm); + } + + die("Invalid command: $op $nm\n"); +} + +if (@ARGV && $ARGV[0] eq '-q') { + $quiet = 1; + shift; +} + +while (@ARGV) { + if (op($ARGV[0], $ARGV[1])) { + shift; + shift; + } +} + +exit(0); diff --git a/local/recipes/dev/gnu-make/source/vms_export_symbol_test.com b/local/recipes/dev/gnu-make/source/vms_export_symbol_test.com new file mode 100644 index 0000000000..4345f44af4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/vms_export_symbol_test.com @@ -0,0 +1,37 @@ +$! VMS_EXPORT_SYMBOL_TEST.COM +$! +$! Verify the VMS_EXPORT_SYMBOL.C module +$! +$! 22-May-2014 J. Malmberg +$! +$!========================================================================= +$! +$ cc/names=(as_is)/define=(DEBUG=1,_POSIX_EXIT=1) vms_export_symbol.c +$! +$ link vms_export_symbol +$! +$ delete vms_export_symbol.obj;* +$! +$! Need a foreign command to test. +$ vms_export_symbol := $sys$disk:[]vms_export_symbol.exe +$ save_export_symbol = vms_export_symbol +$! +$ vms_export_symbol +$ if $severity .ne. 1 +$ then +$ write sys$output "Test program failed!"; +$ endif +$! +$ if vms_export_symbol .nes. save_export_symbol +$ then +$ write sys$output "Test failed to restore foreign command!" +$ endif +$ if f$type(test_export_symbol) .nes. "" +$ then +$ write sys$output "Test failed to clear exported symbol!" +$ endif +$ if f$type(test_putenv_symbol) .nes. "" +$ then +$ write sys$output "Test failed to clear putenv exported symbol!" +$ endif +$! diff --git a/local/recipes/libs/freetype2/recipe.toml b/local/recipes/libs/freetype2/recipe.toml index 7fb16e80e7..05df93cd5d 100644 --- a/local/recipes/libs/freetype2/recipe.toml +++ b/local/recipes/libs/freetype2/recipe.toml @@ -3,8 +3,13 @@ name = "freetype2" version = "2.14.3" [source] -tar = "https://sourceforge.net/projects/freetype/files/freetype2/2.14.3/freetype-2.14.3.tar.xz/download" -blake3 = "0c791e2ea02be6e3cddd6e69ee84d66d869190e5275d8a34e282517769f1192e" +# Vendored local fork (full-fork model): builds from the committed source/ +# tree (offline, reproducible). source/ = pristine upstream + the patches below +# BAKED IN. .patch files kept tracked so a version bump can re-apply them via +# sync-recipe-source.sh. +# upstream: https://sourceforge.net/projects/freetype/files/freetype2/2.14.3/freetype-2.14.3.tar.xz/download +# blake3: 0c791e2ea02be6e3cddd6e69ee84d66d869190e5275d8a34e282517769f1192e +path = "source" [build] template = "custom" diff --git a/local/recipes/libs/freetype2/source/.clang-format b/local/recipes/libs/freetype2/source/.clang-format new file mode 100644 index 0000000000..fbd04c11cb --- /dev/null +++ b/local/recipes/libs/freetype2/source/.clang-format @@ -0,0 +1,16 @@ +BasedOnStyle: Chromium +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: true +AlignConsecutiveDeclarations: true +AlignConsecutiveMacros: true +AlignEscapedNewlines: true +# AlignOperands: Align +AlignTrailingComments: true +AlwaysBreakAfterReturnType: AllDefinitions +BreakBeforeBraces: Allman +ColumnLimit: 80 +DerivePointerAlignment: false +IndentCaseLabels: false +PointerAlignment: Left +SpaceBeforeParens: ControlStatements +SpacesInParentheses: true diff --git a/local/recipes/libs/freetype2/source/.redbear-src-version b/local/recipes/libs/freetype2/source/.redbear-src-version new file mode 100644 index 0000000000..d3a4c58190 --- /dev/null +++ b/local/recipes/libs/freetype2/source/.redbear-src-version @@ -0,0 +1 @@ +download diff --git a/local/recipes/libs/freetype2/source/CMakeLists.txt b/local/recipes/libs/freetype2/source/CMakeLists.txt new file mode 100644 index 0000000000..333d3d7732 --- /dev/null +++ b/local/recipes/libs/freetype2/source/CMakeLists.txt @@ -0,0 +1,722 @@ +# CMakeLists.txt +# +# Copyright (C) 2013-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# Written originally by John Cary +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. +# +# +# The following will (1) create a build directory, and (2) change into +# it and call cmake to configure the build with default parameters as +# a static library. See +# +# https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html +# +# for information about debug or release builds, for example +# +# cmake -B build -D CMAKE_BUILD_TYPE=Release +# +# +# For a dynamic library, use +# +# cmake -B build -D BUILD_SHARED_LIBS=true -D CMAKE_BUILD_TYPE=Release +# +# For a framework on OS X, use +# +# cmake -E chdir build cmake -G Xcode -D BUILD_FRAMEWORK:BOOL=true .. +# +# For an iOS static library, use +# +# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=OS .. +# +# or +# +# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR .. +# +# or +# +# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR64 .. +# +# +# Finally, build the project with +# +# cmake --build build +# +# Install it with +# +# (sudo) cmake --build build --target install +# +# A binary distribution can be made with +# +# cmake --build build --config Release --target package +# +# Please refer to the cmake manual for further options, in particular, +# how to modify compilation and linking parameters. +# +# Some notes. +# +# - Say `cmake -LAH` to see all configuration options. +# +# - `cmake' creates configuration files in +# +# /include/freetype/config +# +# which should be further modified if necessary. +# +# - You can use `cmake' directly on a freshly cloned FreeType git +# repository. +# +# - `CMakeLists.txt' is provided as-is since it is normally not used +# by the developer team. +# +# - Set the `FT_REQUIRE_ZLIB', `FT_REQUIRE_BZIP2', `FT_REQUIRE_PNG', +# `FT_REQUIRE_HARFBUZZ', and `FT_REQUIRE_BROTLI' CMake variables to +# `ON' or `TRUE' to force using a dependency. Leave a variable +# undefined (which is the default) to use the dependency only if it +# is available. Example: +# +# cmake -B build -D FT_REQUIRE_ZLIB=TRUE \ +# -D FT_REQUIRE_BZIP2=TRUE \ +# -D FT_REQUIRE_PNG=TRUE \ +# -D FT_REQUIRE_HARFBUZZ=TRUE \ +# -D FT_REQUIRE_BROTLI=TRUE [...] +# +# - Set the `FT_DYNAMIC_HARFBUZZ' CMake variable to `ON' or `TRUE' to +# load the HarfBuzz library dynamically at runtime, if possible. +# Example: +# +# cmake -B build -D FT_DYNAMIC_HARFBUZZ=TRUE [...] +# +# - Set `FT_DISABLE_XXX=TRUE' to disable a dependency completely +# (where `XXX' is a CMake package name like `BZip2'). Example for +# disabling all dependencies: +# +# cmake -B build -D FT_DISABLE_ZLIB=TRUE \ +# -D FT_DISABLE_BZIP2=TRUE \ +# -D FT_DISABLE_PNG=TRUE \ +# -D FT_DISABLE_HARFBUZZ=TRUE \ +# -D FT_DISABLE_BROTLI=TRUE [...] +# +# - NOTE: If a package is set as DISABLED, it cannot be set as +# REQUIRED without unsetting the DISABLED value first. For example, +# if `FT_DISABLE_HARFBUZZ=TRUE' has been set (Cache is present), you +# need to call `FT_DISABLE_HARFBUZZ=FALSE' before calling +# `FT_REQUIRE_HARFBUZZ=TRUE'. +# +# - Installation of FreeType can be controlled with the CMake +# variables `SKIP_INSTALL_HEADERS', `SKIP_INSTALL_LIBRARIES', and +# `SKIP_INSTALL_ALL' (this is compatible with the same CMake +# variables in zlib's CMake support). + + +# CMake 3.12 provides for IMPORTED targets for common libraries like +# zlib, libpng, and bzip2. +cmake_minimum_required(VERSION 3.12...3.31.0) + +include(CheckIncludeFile) +include(CMakeDependentOption) + +# CMAKE_TOOLCHAIN_FILE must be set before `project' is called, which +# configures the base build environment and references the toolchain +# file. +if (APPLE) + if (DEFINED IOS_PLATFORM) + if (NOT "${IOS_PLATFORM}" STREQUAL "OS" + AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR" + AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR64") + message(FATAL_ERROR + "IOS_PLATFORM must be set to either OS, SIMULATOR, or SIMULATOR64") + endif () + if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode") + message(AUTHOR_WARNING + "You should use Xcode generator with IOS_PLATFORM enabled" + " to get Universal builds.") + endif () + if (BUILD_SHARED_LIBS) + message(FATAL_ERROR + "BUILD_SHARED_LIBS can not be on with IOS_PLATFORM enabled") + endif () + if (BUILD_FRAMEWORK) + message(FATAL_ERROR + "BUILD_FRAMEWORK can not be on with IOS_PLATFORM enabled") + endif () + + # iOS only uses static libraries. + set(BUILD_SHARED_LIBS OFF) + + set(CMAKE_TOOLCHAIN_FILE + ${CMAKE_SOURCE_DIR}/builds/cmake/iOS.cmake) + endif () +else () + if (DEFINED IOS_PLATFORM) + message(FATAL_ERROR "IOS_PLATFORM is not supported on this platform") + endif () +endif () + + +project(freetype C) + +set(VERSION_MAJOR "2") +set(VERSION_MINOR "14") +set(VERSION_PATCH "3") + +# Generate LIBRARY_VERSION and LIBRARY_SOVERSION. +set(LIBTOOL_REGEX "version_info='([0-9]+):([0-9]+):([0-9]+)'") +file(STRINGS "${PROJECT_SOURCE_DIR}/builds/unix/configure.raw" + VERSION_INFO + REGEX ${LIBTOOL_REGEX}) +string(REGEX REPLACE + ${LIBTOOL_REGEX} "\\1" + LIBTOOL_CURRENT "${VERSION_INFO}") +string(REGEX REPLACE + ${LIBTOOL_REGEX} "\\2" + LIBTOOL_REVISION "${VERSION_INFO}") +string(REGEX REPLACE + ${LIBTOOL_REGEX} "\\3" + LIBTOOL_AGE "${VERSION_INFO}") + +# This is what libtool does internally on Unix platforms. +math(EXPR LIBRARY_SOVERSION "${LIBTOOL_CURRENT} - ${LIBTOOL_AGE}") +set(LIBRARY_VERSION "${LIBRARY_SOVERSION}.${LIBTOOL_AGE}.${LIBTOOL_REVISION}") + +# External dependency library detection is automatic. See the notes +# at the top of this file, for how to force or disable dependencies +# completely. +option(FT_DISABLE_ZLIB + "Disable use of system zlib and use internal zlib library instead." OFF) +cmake_dependent_option(FT_REQUIRE_ZLIB + "Require system zlib instead of internal zlib library." OFF + "NOT FT_DISABLE_ZLIB" OFF) + +option(FT_DISABLE_BZIP2 + "Disable support of bzip2 compressed fonts." OFF) +cmake_dependent_option(FT_REQUIRE_BZIP2 + "Require support of bzip2 compressed fonts." OFF + "NOT FT_DISABLE_BZIP2" OFF) + +option(FT_DISABLE_PNG + "Disable support of PNG compressed OpenType embedded bitmaps." OFF) +cmake_dependent_option(FT_REQUIRE_PNG + "Require support of PNG compressed OpenType embedded bitmaps." OFF + "NOT FT_DISABLE_PNG" OFF) + +option(FT_DISABLE_HARFBUZZ + "Disable HarfBuzz (used for improving auto-hinting of OpenType fonts)." OFF) +cmake_dependent_option(FT_DYNAMIC_HARFBUZZ + "Load HarfBuzz library dynamically at runtime, if possible." ON + "NOT FT_DISABLE_HARFBUZZ" OFF) +cmake_dependent_option(FT_REQUIRE_HARFBUZZ + "Require HarfBuzz for improving auto-hinting of OpenType fonts." OFF + "NOT FT_DISABLE_HARFBUZZ" OFF) + +option(FT_DISABLE_BROTLI + "Disable support of compressed WOFF2 fonts." OFF) +cmake_dependent_option(FT_REQUIRE_BROTLI + "Require support of compressed WOFF2 fonts." OFF + "NOT FT_DISABLE_BROTLI" OFF) + +option(FT_ENABLE_ERROR_STRINGS + "Enable support for meaningful error descriptions." OFF) + +# Disallow in-source builds. +if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") + message(FATAL_ERROR + "In-source builds are not permitted! Make a separate folder for" + " building, e.g.,\n" + " cmake -E make_directory build\n" + " cmake -E chdir build cmake ..\n" + "Before that, remove the files created by this failed run with\n" + " cmake -E remove CMakeCache.txt\n" + " cmake -E remove_directory CMakeFiles") +endif () + + +# Add local cmake modules. +list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/builds/cmake) + + +if (BUILD_FRAMEWORK) + if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode") + message(FATAL_ERROR + "You should use Xcode generator with BUILD_FRAMEWORK enabled") + endif () + set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD)") + set(BUILD_SHARED_LIBS ON) +endif () + + +# Find dependencies. +include(FindPkgConfig) +include(CMakePushCheckState) +include(CheckSymbolExists) + +if (NOT FT_DISABLE_HARFBUZZ) + set(HARFBUZZ_MIN_VERSION "2.0.0") + + if (FT_DYNAMIC_HARFBUZZ) + if (WIN32) # Windows uses its own LoadLibrary(). + set(FT_DYNAMIC_HARFBUZZ_ENABLED TRUE) + else() + cmake_push_check_state(RESET) + check_symbol_exists(dlopen "dlfcn.h" HAVE_DLOPEN_IN_LIBC) + if (NOT HAVE_DLOPEN_IN_LIBC) + set(CMAKE_REQUIRED_LIBRARIES dl) + check_symbol_exists(dlopen "dlfcn.h" HAVE_DLOPEN_IN_LIBDL) + endif() + cmake_pop_check_state() + + if (HAVE_DLOPEN_IN_LIBC OR HAVE_DLOPEN_IN_LIBDL) + set(FT_DYNAMIC_HARFBUZZ_ENABLED TRUE) + if (HAVE_DLOPEN_IN_LIBDL) + set(FT_NEED_LIBDL TRUE) + endif() + endif() + endif() + endif() + + if (FT_DYNAMIC_HARFBUZZ_ENABLED) + message(STATUS "Enabled dynamic loading of HarfBuzz library at runtime.") + elseif (FT_REQUIRE_HARFBUZZ) + find_package(HarfBuzz ${HARFBUZZ_MIN_VERSION} REQUIRED) + else () + find_package(HarfBuzz ${HARFBUZZ_MIN_VERSION}) + endif () +endif () + +if (NOT FT_DISABLE_PNG) + if (FT_REQUIRE_PNG) + find_package(PNG REQUIRED) + else () + find_package(PNG) + endif () + # FreePNG calls FindZLIB so unset ZLIB_FOUND to respect FT_DISABLE_ZLIB. + unset(ZLIB_FOUND) +endif () + +if (NOT FT_DISABLE_ZLIB) + if (FT_REQUIRE_ZLIB) + find_package(ZLIB REQUIRED) + else () + find_package(ZLIB) + endif () +endif () + +if (NOT FT_DISABLE_BZIP2) + # Genuine BZip2 does not provide bzip2.pc, but some platforms have + # it. For better dependency in freetype2.pc, bzip2.pc is searched + # regardless of the availability of libbz2. If bzip2.pc is found, + # Requires.private is used instead of Libs.private. + if (FT_REQUIRE_BZIP2) + find_package(BZip2 REQUIRED) + else () + find_package(BZip2) + endif () + pkg_check_modules(PC_BZIP2 bzip2) +endif () + +if (NOT FT_DISABLE_BROTLI) + if (FT_REQUIRE_BROTLI) + find_package(BrotliDec REQUIRED) + else () + find_package(BrotliDec) + endif () +endif () + +# Create the configuration file. +if (UNIX AND NOT WIN32) + check_include_file("unistd.h" HAVE_UNISTD_H) + check_include_file("fcntl.h" HAVE_FCNTL_H) + + file(READ "${PROJECT_SOURCE_DIR}/builds/unix/ftconfig.h.in" + FTCONFIG_H) + if (HAVE_UNISTD_H) + string(REGEX REPLACE + "#undef +(HAVE_UNISTD_H)" "#define \\1 1" + FTCONFIG_H "${FTCONFIG_H}") + endif () + if (HAVE_FCNTL_H) + string(REGEX REPLACE + "#undef +(HAVE_FCNTL_H)" "#define \\1 1" + FTCONFIG_H "${FTCONFIG_H}") + endif () +else () + file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h" + FTCONFIG_H) +endif () + +set(FTCONFIG_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h") +if (EXISTS "${FTCONFIG_H_NAME}") + file(READ "${FTCONFIG_H_NAME}" ORIGINAL_FTCONFIG_H) +else () + set(ORIGINAL_FTCONFIG_H "") +endif () +if (NOT (ORIGINAL_FTCONFIG_H STREQUAL FTCONFIG_H)) + file(WRITE "${FTCONFIG_H_NAME}" "${FTCONFIG_H}") +endif () + + +# Create the options file. +file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftoption.h" + FTOPTION_H) +if (ZLIB_FOUND) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_SYSTEM_ZLIB) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () +if (BZIP2_FOUND) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_USE_BZIP2) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () +if (PNG_FOUND) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_USE_PNG) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () +if (HARFBUZZ_FOUND OR FT_DYNAMIC_HARFBUZZ_ENABLED) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") + if (FT_DYNAMIC_HARFBUZZ_ENABLED) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") + endif () +endif () +if (BROTLIDEC_FOUND) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_USE_BROTLI) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () + +if (FT_ENABLE_ERROR_STRINGS) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_ERROR_STRINGS) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () + +set(FTOPTION_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h") +if (EXISTS "${FTOPTION_H_NAME}") + file(READ "${FTOPTION_H_NAME}" ORIGINAL_FTOPTION_H) +else () + set(ORIGINAL_FTOPTION_H "") +endif () +if (NOT (ORIGINAL_FTOPTION_H STREQUAL FTOPTION_H)) + file(WRITE "${FTOPTION_H_NAME}" "${FTOPTION_H}") +endif () + + +file(GLOB PUBLIC_HEADERS "include/ft2build.h" "include/freetype/*.h") +file(GLOB PUBLIC_CONFIG_HEADERS "include/freetype/config/*.h") +file(GLOB PRIVATE_HEADERS "include/freetype/internal/*.h") + + +set(BASE_SRCS + src/autofit/autofit.c + src/base/ftbase.c + src/base/ftbbox.c + src/base/ftbdf.c + src/base/ftbitmap.c + src/base/ftcid.c + src/base/ftfstype.c + src/base/ftgasp.c + src/base/ftglyph.c + src/base/ftgxval.c + src/base/ftinit.c + src/base/ftmm.c + src/base/ftotval.c + src/base/ftpatent.c + src/base/ftpfr.c + src/base/ftstroke.c + src/base/ftsynth.c + src/base/fttype1.c + src/base/ftwinfnt.c + src/bdf/bdf.c + src/bzip2/ftbzip2.c + src/cache/ftcache.c + src/cff/cff.c + src/cid/type1cid.c + src/gzip/ftgzip.c + src/lzw/ftlzw.c + src/pcf/pcf.c + src/pfr/pfr.c + src/psaux/psaux.c + src/pshinter/pshinter.c + src/psnames/psnames.c + src/raster/raster.c + src/sdf/sdf.c + src/sfnt/sfnt.c + src/smooth/smooth.c + src/svg/svg.c + src/truetype/truetype.c + src/type1/type1.c + src/type42/type42.c + src/winfonts/winfnt.c +) + +if (WIN32) + list(APPEND BASE_SRCS "builds/windows/ftsystem.c") +elseif (UNIX) + list(APPEND BASE_SRCS "builds/unix/ftsystem.c") +else () + list(APPEND BASE_SRCS "src/base/ftsystem.c") +endif () + +if (WIN32) + enable_language(RC) + list(APPEND BASE_SRCS builds/windows/ftdebug.c + src/base/ftver.rc) +elseif (WINCE) + list(APPEND BASE_SRCS builds/wince/ftdebug.c) +else () + list(APPEND BASE_SRCS src/base/ftdebug.c) +endif () + +if (BUILD_FRAMEWORK) + list(APPEND BASE_SRCS builds/mac/freetype-Info.plist) +endif () + + +if (NOT DISABLE_FORCE_DEBUG_POSTFIX) + set(CMAKE_DEBUG_POSTFIX d) +endif () + + +add_library(freetype + ${PUBLIC_HEADERS} + ${PUBLIC_CONFIG_HEADERS} + ${PRIVATE_HEADERS} + ${BASE_SRCS} +) + +target_compile_definitions( + freetype PRIVATE FT2_BUILD_LIBRARY) + +if (WIN32) + target_compile_definitions( + freetype PRIVATE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_WARNINGS) + if (BUILD_SHARED_LIBS) + target_compile_definitions( + freetype PRIVATE DLL_EXPORT) + endif () +else () + # Windows handles exports with DLL_EXPORT defined above. + set_target_properties(freetype PROPERTIES + C_VISIBILITY_PRESET hidden) +endif () + +if (BUILD_SHARED_LIBS) + set_target_properties(freetype PROPERTIES + VERSION ${LIBRARY_VERSION} + SOVERSION ${LIBRARY_SOVERSION}) +endif () + +# Pick up ftconfig.h and ftoption.h generated above, first. +target_include_directories( + freetype + PUBLIC + $ + $ + $ + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}/include + ${CMAKE_CURRENT_SOURCE_DIR}/include + + # Make available for builds/unix/ftsystem.c. + ${CMAKE_CURRENT_BINARY_DIR}/include/freetype/config +) + + +if (BUILD_FRAMEWORK) + set_property(SOURCE ${PUBLIC_CONFIG_HEADERS} + PROPERTY MACOSX_PACKAGE_LOCATION Headers/config + ) + set_target_properties(freetype PROPERTIES + FRAMEWORK TRUE + MACOSX_FRAMEWORK_INFO_PLIST + ${CMAKE_CURRENT_SOURCE_DIR}/builds/mac/freetype-Info.plist + PUBLIC_HEADER "${PUBLIC_HEADERS}" + XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" + ) +endif () + +# 'freetype-interface' is an interface library, to be accessed with +# `EXPORT_NAME Freetype::Freetype`. This is the target name provided +# by CMake's `FindFreetype.cmake`, so we provide it for compatibility. +add_library(freetype-interface INTERFACE) +set_target_properties(freetype-interface PROPERTIES + EXPORT_NAME Freetype::Freetype + INTERFACE_LINK_LIBRARIES freetype) + +set(PKGCONFIG_REQUIRES "") +set(PKGCONFIG_REQUIRES_PRIVATE "") +set(PKGCONFIG_LIBS "-L\${libdir} -lfreetype") +set(PKGCONFIG_LIBS_PRIVATE "") + +if (ZLIB_FOUND) + target_link_libraries(freetype PRIVATE ZLIB::ZLIB) + list(APPEND PKGCONFIG_REQUIRES_PRIVATE "zlib") +endif () +if (BZIP2_FOUND) + target_link_libraries(freetype PRIVATE BZip2::BZip2) + if (PC_BZIP2_FOUND) + list(APPEND PKGCONFIG_REQUIRES_PRIVATE "bzip2") + else () + list(APPEND PKGCONFIG_LIBS_PRIVATE "-lbz2") + endif () +endif () +if (PNG_FOUND) + target_link_libraries(freetype PRIVATE PNG::PNG) + list(APPEND PKGCONFIG_REQUIRES_PRIVATE "libpng") +endif () +if (FT_DYNAMIC_HARFBUZZ_ENABLED AND FT_NEED_LIBDL) + target_link_libraries(freetype PRIVATE dl) + list(APPEND PKGCONFIG_LIBS_PRIVATE " -ldl") +endif () +if (HarfBuzz_FOUND AND (NOT FT_DYNAMIC_HARFBUZZ_ENABLED)) + target_link_libraries(freetype PRIVATE HarfBuzz::HarfBuzz) + list(APPEND PKGCONFIG_REQUIRES_PRIVATE "harfbuzz >= ${HARFBUZZ_MIN_VERSION}") +endif () +if (BROTLIDEC_FOUND) + target_link_libraries(freetype PRIVATE ${BROTLIDEC_LIBRARIES}) + target_compile_definitions(freetype PRIVATE ${BROTLIDEC_DEFINITIONS}) + target_include_directories(freetype PRIVATE ${BROTLIDEC_INCLUDE_DIRS}) + list(APPEND PKGCONFIG_REQUIRES_PRIVATE "libbrotlidec") +endif () + + +# Installation. +include(GNUInstallDirs) + +if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL) + install( + # Note the trailing slash in the argument to `DIRECTORY'! + DIRECTORY ${PROJECT_SOURCE_DIR}/include/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2 + COMPONENT headers + PATTERN "internal" EXCLUDE + PATTERN "ftconfig.h" EXCLUDE + PATTERN "ftoption.h" EXCLUDE) + install( + FILES ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h + ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2/freetype/config + COMPONENT headers) +endif () + +if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) + # Generate the pkg-config file + file(READ "${PROJECT_SOURCE_DIR}/builds/unix/freetype2.in" FREETYPE2_PC_IN) + + string(REPLACE ";" ", " + PKGCONFIG_REQUIRES_PRIVATE "${PKGCONFIG_REQUIRES_PRIVATE}") + + string(REPLACE "%prefix%" ${CMAKE_INSTALL_PREFIX} + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%exec_prefix%" "\${prefix}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%libdir%" "\${prefix}/${CMAKE_INSTALL_LIBDIR}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%includedir%" "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%ft_version%" "${LIBTOOL_CURRENT}.${LIBTOOL_REVISION}.${LIBTOOL_AGE}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + + if (BUILD_SHARED_LIBS) + string(REPLACE "%PKGCONFIG_REQUIRES%" "${PKGCONFIG_REQUIRES}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%PKGCONFIG_REQUIRES_PRIVATE%" "${PKGCONFIG_REQUIRES_PRIVATE}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%PKGCONFIG_LIBS%" "${PKGCONFIG_LIBS}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%PKGCONFIG_LIBS_PRIVATE%" "${PKGCONFIG_LIBS_PRIVATE}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + else () + string(REPLACE "%PKGCONFIG_REQUIRES%" "${PKGCONFIG_REQUIRES} ${PKGCONFIG_REQUIRES_PRIVATE}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%PKGCONFIG_REQUIRES_PRIVATE%" "" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%PKGCONFIG_LIBS%" "${PKGCONFIG_LIBS} ${PKGCONFIG_LIBS_PRIVATE}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%PKGCONFIG_LIBS_PRIVATE%" "" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + endif () + + set(FREETYPE2_PC_IN_NAME "${PROJECT_BINARY_DIR}/freetype2.pc") + if (EXISTS "${FREETYPE2_PC_IN_NAME}") + file(READ "${FREETYPE2_PC_IN_NAME}" ORIGINAL_FREETYPE2_PC_IN) + else () + set(ORIGINAL_FREETYPE2_PC_IN "") + endif () + if (NOT (ORIGINAL_FREETYPE2_PC_IN STREQUAL FREETYPE2_PC_IN)) + file(WRITE "${FREETYPE2_PC_IN_NAME}" ${FREETYPE2_PC_IN}) + endif () + + install( + FILES ${PROJECT_BINARY_DIR}/freetype2.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT pkgconfig) + + include(CMakePackageConfigHelpers) + write_basic_package_version_file( + ${PROJECT_BINARY_DIR}/freetype-config-version.cmake + VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} + COMPATIBILITY SameMajorVersion) + + install( + TARGETS freetype freetype-interface + EXPORT freetype-targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + FRAMEWORK DESTINATION Library/Frameworks + COMPONENT libraries) + install( + EXPORT freetype-targets + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/freetype + FILE freetype-config.cmake + COMPONENT headers) + install( + FILES ${PROJECT_BINARY_DIR}/freetype-config-version.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/freetype + COMPONENT headers) +endif () + + +# Packaging. +set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME}) +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The FreeType font rendering library.") +set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.TXT") + +set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH}) +set(CPACK_PACKAGE_VERSION + "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") + +if (WIN32) + set(CPACK_GENERATOR ZIP) +else () + set(CPACK_GENERATOR TGZ) +endif () + +set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries") +set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C/C++ Headers") +set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION + "Library used to build programs which use FreeType") +set(CPACK_COMPONENT_HEADERS_DESCRIPTION + "C/C++ header files for use with FreeType") +set(CPACK_COMPONENT_HEADERS_DEPENDS libraries) +set(CPACK_COMPONENT_LIBRARIES_GROUP "Development") +set(CPACK_COMPONENT_HEADERS_GROUP "Development") + +include(CPack) + +# EOF diff --git a/local/recipes/libs/freetype2/source/ChangeLog b/local/recipes/libs/freetype2/source/ChangeLog new file mode 100644 index 0000000000..cc07278144 --- /dev/null +++ b/local/recipes/libs/freetype2/source/ChangeLog @@ -0,0 +1,11795 @@ +2026-03-22 Werner Lemberg + + * Version 2.14.3 released. + ========================== + + Tag sources with `VER-2-14-3'. + + * docs/VERSION.TXT: Add entry for version 2.14.3. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.14.2/2.14.3/, s/2142/2143/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. + + * builds/unix/configure.raw (version_info): Set to 26:6:20. + * CMakeLists.txt (VERSION_PATCH): Set to 3. + +2026-03-22 Werner Lemberg + + * subprojects/harfbuzz.wrap: Updated. + +2026-03-22 David Pokora + + [psaux] Avoid stack overflow. + + * src/psaux/t1.decode.c (t1_decoder_parse_charstrings) [op_pop]: Check stack + size. + + Fixes issue #1406. + +2026-03-22 Werner Lemberg + + * src/psaux/t1decide.c (t1_decoder_parse_charstrings): Fix bounds check. + + During charstring processing, the `decoder->len_buildchar` field can be + corrupted. Avoid this by caching this value in a local variable at function + entry. + + Based on a patch submitted by David Pokora . + + Fixes issue #1405. + +2026-03-20 Werner Lemberg + + ttnameid.h: Minor documentation improvement. + +2026-03-20 Werner Lemberg + + * src/sdf/ftsdf.c (sdf_generate_bounding_box): Fix thinko. + + Bug introduced in commit bda1d87f694dd. + + We would need an `FT_NEW_ARRAY_MULT` array... + + Reported as + + https://issues.oss-fuzz.com/issues/494362618 + +2026-03-19 Alexei Podtelezhnikov + + [sfnt/COLRv0] Revise sanity checks. + + This re-implements 6d62076a and potentially fixes #1404. + + * src/sfnt/ttcolr.c (tt_face_get_colr_layer): Rely on validated total num_layers. + +2026-03-19 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix allocation. + + Fixes #1403, proposed by Chris Anderson. + +2026-03-18 Werner Lemberg + + * src/sdf/ftsdf.c (sdf_generate_bounding_box): Fix allocation. + + Reported in + + https://mail.gnu.org/archive/html/freetype-devel/2026-02/msg00005.html + +2026-03-11 Werner Lemberg + + Update all copyright notices. + +2026-03-10 Alexei Podtelezhnikov + + .gitlab-ci.yml: Upgrade Windows pipelines. + +2026-03-10 Alexei Podtelezhnikov + + [base] Reintroduce overall rendering limits. + + * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Limit absolute + outline coordinnates to prevent integer issues downstream. + +2026-03-10 Alexei Podtelezhnikov + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fix memory leak. + + This leak was introduced in 85c8efe0afa5ad by overlooking the + direct `ft_bitmap_glyph_init` call (now gone). Fixes #1399, + also reported earlier: + https://issues.oss-fuzz.com/issues/482909897. + +2026-03-10 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Conic_To, Cubic_To): Avoid UB. + + Fixes #1396. + +2026-03-10 Alexei Podtelezhnikov + + [stroker] Actually validate outlines. + + Fixes #1400. + + * src/base/ftstroke.c (FT_Glyph_Stroke): Check for `GetCount` error. + (ft_stroke_border_get_counts): Actually return expected error. + (FT_Glyph_Stroke): Minor. + +2026-03-09 Miguel Sousa <@miguelsousa> + + * src/sfnt/ttobjs.c (tt_size_init_bytecode): Be more generous. + + Fixes issue #1137. + +2026-03-09 Werner Lemberg + + * src/sfnt/ttgpos.c (tt_face_load_gpos): Correctly release `gpos`. + + This is a follow-up to issue #1398. + +2026-03-09 Dominik Röttsches + + [sfnt] Use array count in sanitization of `BaseGlyphPaintRecord` list. + + * src/sfnt/ttcolr.c (tt_face_load_colr): Compute correct length + of `BaseGlyphPaintRecord` array size. + + Fixes issue #1397. + +2026-03-09 Werner Lemberg + + * src/sfnt/ttgpos.c (tt_face_validate_pair_pos2): Correct limit check. + + Fixes issue #1398. + +2026-03-09 Werner Lemberg + + * src/truetype/ttgload.c (load_truetype_glyph): Limit recursion. + + Fixes issue #1395. + +2026-03-08 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Set_High_Precision): Limit size. + + This should avoid integer overflows: + https://issues.oss-fuzz.com/issues/490433932 + https://issues.oss-fuzz.com/issues/490464129 + +2026-03-06 Werner Lemberg + + [cid] Add boundary check in incremental interface. + + * src/cid/cidgload.c (cid_load_glyph) [FT_CONFIG_OPTION_INCREMENTAL]: + Validate `fd_select`. + + Fixes issue #1394. + +2026-03-06 Werner Lemberg + + * src/sfnt/ttgpos.c (tt_face_get_pair_pos1_kerning): Typo. + + This could lead to make FreeType miss some kerning pairs. + + Fixes issue #1393. + +2026-03-06 Werner Lemberg + + * src/sfnt/ttgpos.c (tt_face_get_class): Fix range check. + + Fixes issue #1392. + +2026-03-06 Alexei Podtelezhnikov + + [base] Adjust rendering limits. + + * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Check width and + height directly. Fixes #1390. + +2026-03-03 Debbie Goldsmith + + [truetype] Reject fonts without 'glyf' and 'loca' table. + + * src/truetype/ttobjs.c (tt_face_init): Add check. + +2026-03-03 Werner Lemberg + + Minor whitespace. + +2026-03-03 Werner Lemberg + + CMakeLists.txt: Formatting. + +2026-03-02 Werner Lemberg + + * subprojects/*: Fix meson wrap files. + +2026-03-01 Werner Lemberg + + * Version 2.14.2 released. + ========================== + + Tag sources with `VER-2-14-2'. + + * docs/VERSION.TXT: Add entry for version 2.14.2. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.14.1/2.14.2/, s/2141/2142/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. + + * builds/unix/configure.raw (version_info): Set to 26:5:20. + * CMakeLists.txt (VERSION_PATCH): Set to 2. + +2026-03-01 Werner Lemberg + + * subprojects/*.wrap: Updated. + +2026-03-01 Werner Lemberg + + Very minor doc fixes. + +2026-02-23 Alexei Podtelezhnikov + + [truetype] Clean up TT_Load_Context. + + * src/truetype/ttinterp.c (TT_Load_Context): Remove return type. + * src/truetype/ttinterp.h (TT_Load_Context): Update signature. + * src/truetype/ttobjs.c (tt_size_run_{fpgm,prep}): Update callers. + * src/truetype/ttgload.c (tt_loader_init): Ditto. + +2026-02-21 Alexei Podtelezhnikov + + [truetype] Use FT_QALLOC_MULT. + + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Here. + This call provides builtin overflow protection. See #1382. + +2026-02-21 Alexei Podtelezhnikov + + * src/base/ftbitmap.c (FT_Bitmap_Blend): Use FT_ALLOC_MULT. + + This call is fortified with builtin overflow checks. + +2026-02-21 Alexei Podtelezhnikov + + [sdf] Substitute allocation macros. + + * src/sdf/ftsdf.c (sdf_generate_bounding_box, + sdf_generate_with_overlaps): Use more robust macros. + +2026-02-21 Alexei Podtelezhnikov + + [base] Clean up bitmap allocations. + + * src/base/src/base/ftobjs.c (ft_glyphslot_alloc_bitmap): Use preset + dimensions and call FT_MEM_ALLOC_MULT. + * include/freetype/internal/ftobjs.h (ft_glyphslot_alloc_bitmap): + Updated signature... + * src/*: ... and all callers. + +2026-02-20 Alexei Podtelezhnikov + + * src/sfnt/ttcolr.c (tt_face_colr_blend_layer): Use FT_ALLOC_MULT. + + Fixes #1389. The overflow is detected in ft_mem_qrealloc. + +2026-02-08 Alexei Podtelezhnikov + + * src/base/ftglyph.c (ft_bitmap_glyph_init): Always copy in full. + + Other glyph formats never perform lazy copy. Fixes #1385. + +2026-02-07 Alexei Podtelezhnikov + + * include/freetype/config/mac-support.h: Check for FT_MACINTOSH. + + Fixes warnings reported in !414. + +2026-02-04 Alexei Podtelezhnikov + + [pshinter] Merge extrema and inflex analyses. + + Any point on the horizontal or vertical segment, which can either + be either extreme or inflection point is now marked. This makes + separate inflection algorithm unnecessary. This simplifies the + algorithm without noticeable rendering differences. + + * src/pshinter/pshalgo.c (psh_glyph_compute_extrema): Rewrite + to detect both extrema and inflection points. Determine the + their direction instantly. + +2026-02-04 Alexei Podtelezhnikov + + * src/sfnt/ttgpos.c (tt_face_validate_*): Fix check signedness. + + This is an alternative to !398 without signed -1. + +2026-01-28 Alexei Podtelezhnikov + + * src/sfnt/sfwoff2.c (reconstruct_glyf): Revise variables. + + This should fix #1379 while resonstructing the code intent. + +2026-01-26 Alexei Podtelezhnikov + + [base, smooth] Implement direct LCD filtering. + + Applying an LCD filter to spans rather than the entire image improves + the performance of ClearType-like rendering by about 40% at 32 ppem + and much more at larger sizes. Small rounding differences are expected. + + * src/smooth/ftsmooth.c (ft_smooth_raster_lcd, ft_smooth_lcd_spans, + ft_smooth_raster_lcdv, ft_smooth_lcdv_spans, TOrigin): Implement it. + * include/freetype/internal/ftobjs.h (FT_LibraryRec): lcd_filter_func gone. + * src/base/ftlcdfil.c (ft_lcd_filter_fir): Removed. + (ft_lcd_padding): Use padding sufficient for any 5-tap filter. + (FT_Library_SetLcdFilterWeights, FT_Library_SetLcdFilter): Updated. + * docs/CHANGES: Updated. + +2026-01-25 Alexei Podtelezhnikov + + [base, smooth] Remove LCD filter from face properties. + + This removes the internal face property that sets the filtering weights. + The global filtering algorithms and weights are now optimized to work + well under all conditions. + + * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Do it. + * include/freetype/freetype.h (FT_Face_Properties): Revised docs. + * include/freetype/ftparams.h (FT_PARAM_TAG_LCD_FILTER_WEIGHTS): Ditto. + * src/base/ftlcdfil.c (ft_lcd_padding): Updated. + * src/base/ftobjs.c (ft_open_face_internal, FT_Face_Properties): Ditto. + * src/smooth/ftsmooth.c (ft_smooth_render): Ditto. + * docs/CHANGES: Updated. + +2026-01-25 Alexei Podtelezhnikov + + [base] Remove legacy LCD filter. + + * src/base/ftlcdfil.c (_ft_lcd_filter_legacy): Removed. + (FT_Library_SetLcdFilter): Updated. + * include/freetype/ftlcdfil.h (FT_LcdFilter): Updated. + * doc/CHANGES: Updated. + +2026-01-22 Alexei Podtelezhnikov + + * src/svg/ftsvg.c: Use FT_ALLOC_MULT. + + Fixes #1378. + +2026-01-19 Harish Raja Selvan + + * .gitlab-ci.yml: Add MSBuild for ARM64. + +2026-01-18 Alexei Podtelezhnikov + + [base, smooth] Fortify direct rendering. + + This is a better fix for #1384, which is rather about signed overflow. + + * include/freetype/ftimage.h (FT_Span): Use unsigned position. + * src/smooth/ftgrays.c (gray_sweep_direct): Sync with FT_Span. + * src/smooth/ftsmooth.c (ft_smooth_render): Remove redundant shift. + * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Readjust limits. + +2026-01-16 Alexei Podtelezhnikov + + [base] Maintain overall rendering limits. + + Reject rendering of outlines that stretch beyond 32767 pixels from + the origin, which is further restricted to 10922 horizontal pixels + for LCD rendering with ClearType-like algorithms. 16-bit FT_Span is + one of the reasons to have this limit imposed, fixes #1384. + + * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Impose global + rendering limits. + +2026-01-13 Harry Sintonen + + * src/autofit/ft-hb-ft.c (ft_hb_ft_reference_table): Use `ft_sfree`. + +2026-01-10 Alexei Podtelezhnikov + + [base] Set ppem-based rendering limits. + + Many rendering timeouts occur when the outline stretches far beyond + the Em size. Limiting the bounding box to 10 Em should reject such + requests. It is still to possible scribble excessively within the set + limits. At least, the memory usage will be curtained. + + * src/base/ftobjs.c (ft_glyphslot_free_bitmap): Revise limits based + on ppem when available. + +2026-01-07 Werner Lemberg + + [autofit] Prevent signed integer overflow. + + Reported as + + https://issues.oss-fuzz.com/issues/473887994 + https://issues.oss-fuzz.com/issues/473912282 + + * src/autofit/afatin.c (af_latin_align_top_tilde, + af_latin_align_bottom_tilde), src/autofit/afloader.c + (af_loader_load_glyph): Use `FT_PIX_ROUND_LONG`, `FT_PIX_CEIL_LONG`, and + `SUB_LONG`. + +2026-01-06 Werner Lemberg + + [truetype] Prevent signed integer overflow. + + Reported as + + https://issues.oss-fuzz.com/issues/473582311 + + * src/truetype/ttinterp.c (Ins_MDRP): Use `ADD_LONG` and `SUB_LONG`. + +2026-01-06 Werner Lemberg + + [autofit] Prevent signed integer overflow. + + Reported as + + https://issues.oss-fuzz.com/issues/473582304 + + * src/autofit/afloader.c (af_loader_load_glyph): Use `ADD_LONG`. + +2026-01-05 Ben Wagner + + Fix leak of exec->FDefs in tt_size_init_bytecode + +2026-01-04 Werner Lemberg + + [autofit] Prevent signed integer overflow. + + Reported as + + https://issues.oss-fuzz.com/issues/471525116 + + * src/autofit/aflatin.c (af_latin_stretch_top_tilde, + af_latin_stretch_bottom_tilde): Use `MUL_LONG`. + +2026-01-04 Celeste Liu + + [base] Fix support for format 13 charmaps. + + According to the OpenType specification of the 'cmap' table, the pair (0,6) + for platform and encoding IDs is used for format 13 charmap tables. Commit + ba6f3e18 (from 2017-01-17) introduced the `TT_APPLE_ID_FULL_UNICODE` macro + (i.e., encoding_id == 6, added to OpenType 1.8); however, the corresponding + cmap selection code wasn't updated. + + Unicode's Last Resort font (https://github.com/unicode-org/last-resort-font) + can be used to test a format 13 charmap. + + Fixes issue #1383. + + * src/base/ftobjc.s (find_unicode_charmap): Support + `TT_APPLE_ID_FULL_UNICODE`. + +2026-01-03 Werner Lemberg + + [ttgxvar] Check for overflow in array size computation. + + Problem reported and analyzed by povcfe . + + Fixes issue #1382. + + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Do it. + +2025-12-11 Ben Wagner + + Fix leak of exec in tt_size_init_bytecode + + * src/truetype/ttobjs.c (tt_size_init_bytecode): Call `TT_Done_Context` + on `exec` if it has not yet been assigned to `size->context`. + + Bug: https://issues.oss-fuzz.com/issues/467782706 + +2025-12-05 Alexei Podtelezhnikov + + * src/pcf/pcfdrivr.c (PCF_Face_Init): Handle charmap errors. + + This is a quick fix for #1377, more clean-ups to follow. + +2025-12-04 Werner Lemberg + + * src/sfnt/ttbdf.c (tt_face_load_bdf_props): Fix size test. + + This prevents a potential overflow on 32bit systems. + + Problem reported by Zhao Zijie . + +2025-12-04 Werner Lemberg + + Improve documentation of the 'BDF ' table as used in X11 `.otb` files. + + Also do some minor code formatting. + +2025-12-02 Werner Lemberg + + * src/otvalid/otvcommn.c (otv_FeatureList_validate): Fix array size check. + + Reported by Marc Schönefeld. + +2025-12-02 Werner Lemberg + + [otvalid] Minor formatting and comment fixes. + +2025-11-30 Alexei Podtelezhnikov + + [pshinter] Slightly simplify BlueShift application. + + * src/pshinter/pshglob.c (psh_blues_scale_zones): Just divide. + +2025-11-30 Alexei Podtelezhnikov + + [pshinter] Slightly simplify BlueScale application. + + * src/pshinter/pshglob.c (psh_globals_new): Update condition and + properly rescale BlueScale. + (psh_blues_scale_zones): Use it directly. + +2025-11-30 Alexei Podtelezhnikov + + [pshinter] Fix up degenerate contours. + + * src/pshinter/pshalgo.c (psh_glyph_compute_extrema): Use correct + goto label and shortcut degenerate contours. + +2025-11-29 Alexei Podtelezhnikov + + * src/base/ftutil.c (FT_List_Finalize): Delay reading 'data'. + + Fixes #1376. + +2025-11-29 Werner Lemberg + + * src/autofit/afgsub.c (af_parse_gsub): Always init `gsub_lookup_count`. + + Problem reported by Marc Schönefeld. + +2025-11-28 Werner Lemberg + + [autofit] Fix handling of invalid GSUB lookup indices. + + Problem reported by Marc Schönefeld. + + HarfBuzz validates everything while processing OpenType tables in fonts. + However, the data returned by `hb_ot_layout_collect_lookups` is not + validated. This commit adds proper checks. + + * src/autofit/afglobal.h (AF_FaceGlobals): New field `gsub_lookup_count`. + * src/autofit/afgsub.c (af_parse_gsub): Set it. + + * src/autofit/afadjust.c (af_reverse_character_map_new): Test result of + `hb_set_next`. + +2025-11-28 Werner Lemberg + + [sfnt] Fix GPOS handling. + + Problem reported by Marc Schönefeld. + + * src/sfnt/ttgpos.c (tt_face_validate_lookup_table, tt_face_load_gpos): Fix + counting of fitting subtables by correctly rejecting invalid data. + +2025-11-28 Alexei Podtelezhnikov + + * builds/toplevel.mk (dist): Replace `for` with `find ... -exec`. + +2025-11-27 Suzuki, Toshiya (鈴木俊哉) + + * builds/toplevel.mk (dist): `-wholename` -> `-name`. + + POSIX does not request `find` to support '-wholename'. + `find ... -wholename '*/.git' -prune -o ...` can be + rewritten as `find ... -name '*/.git' -prune -o ...` + for POSIX find. Fixes issue #1370. + +2025-11-27 suzuki toshiya + + * .gitlab-ci.yml: update macos image to Tahoe:2025-09-30. + + Fixes issue #1394. + +2025-11-17 Alexei Podtelezhnikov + + * builds/toplevel.mk (dist): Improve compatibility with BSD tar. + +2025-11-05 Alexei Podtelezhnikov + + [cff] Handle underline position and thickness as integers. + + This is done for consistency with Type 1 fonts. + + * include/freetype/internal/cfftypes.h (CFF_FontRecDic): Change + the variable types. + * include/cff/cfftoken.h (CFF_FontRecDic): Change the parsing macros. + * src/cff/cffobjs.c (cff_face_init), src/cff/cffload.c (cff_subfont_load), + src/cff/cffdrivr.c (cff_ps_get_font_info): Update users. + +2025-11-05 suzuki toshiya + + * src/tools/apinames.c (names_add): Remove unrequired cast of + `nm->hash` to int, which has been unrequired since eba2781a. + + Fixes issue #1361. + +2025-11-05 Suzuki, Toshiya (鈴木俊哉) + + * src/autofit/afgsub.c: Evaluate FT_CONFIG_OPTION_USE_HARFBUZZ + after and others. + + Fixes issue #1360. + +2025-11-05 Alexei Podtelezhnikov + + Minor. + +2025-11-05 Alexei Podtelezhnikov + + [cff,cid,type1,type42] Fix up `PS_FontInfo`. + + The italic angle is commonly specified in fractional degrees in + Type 1 fonts and its derivatives. This change clarifies and fixes + these values. Note that CFF fonts has always reported them as such, + but truncated the underline position and thickness. Fixes #1367. + + * include/freetype/t1tables.h (PS_FontInfoRec): + Use FT_Fixed for italic_angle. + * src/cid/cidtoken.h, src/type1/t1tokens.h, src/type42/t42parse.c: + Modify the italic_angle token. + * src/cff/cffdrivr.c (cff_ps_get_font_info): Fix the underline + position and thickness. + + * docs/CHANGES: Note this change. + +2025-10-26 Alexei Podtelezhnikov + + * src/base/ftadvanc.c (ft_face_scale_advances_): Adjust scaling. + + This is safe because advances are short originally. + +2025-10-26 Alexei Podtelezhnikov + + [base] Refactor obtaining advances. + + * src/base/ftadvanc.c (ft_load_advances): New separate function to + handle slow advances. + (FT_Get_Advance, FT_Get_Advances): Updated. + +2025-10-17 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (tt_loader_init): Reset compatibility. + + This may fix #1262, credits to Honnesh Ramachandra. + https://lists.nongnu.org/archive/html/freetype-devel/2025-10/msg00004.html + +2025-09-28 Werner Lemberg + + [autofit] Prevent signed integer overflow. + + * src/autofit/aflatin.c (af_latin_stretch_top_tilde, + af_latin_stretch_bottom_tilde, af_latin_align_top_tilde, + af_latin_align_bottom_tilde, + af_glyph_hints_apply_vertical_separation_adjustments): Use `ADD_LONG` and + `SUB_LONG` for values that involve `FT_LONG_MAX` and `FT_LONG_MIN`. + + Fixes issue #1363. + +2025-09-24 Werner Lemberg + + * src/bdf/bdfdriver.c (BDF_Glyph_Load): Use `bdf->bdffont->bpp` directly. + + Fixes issue #1362. + +2025-09-18 Alan Coopersmith + + * tests/README.md: Fix a script name. + +2025-09-14 Werner Lemberg + + [build] Don't use non-POSIX escapes in sed regexp. + + * builds/unix/configure.raw (ftoption_set, ftoption_unset): Avoid `\>`. + + Fixes issue #1358. + +2025-09-14 Werner Lemberg + + Typo. + +2025-09-12 Alexei Podtelezhnikov + + * include/freetype/internal/ftobjs.h (ft_default_raster): Relic removed. + +2025-09-11 Werner Lemberg + + * Version 2.14.1 released. + ========================== + + Tag sources with `VER-2-14-1'. + + * docs/VERSION.TXT: Add entry for version 2.14.1. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.14.0/2.14.1/, s/2140/2141/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. + + * builds/unix/configure.raw (version_info): Set to 26:4:20. + * CMakeLists.txt (VERSION_PATCH): Set to 1. + +2025-09-10 Behdad Esfahbod + + [base] Fix return values of two Font Variation functions. + + * src/base/ftmm.c (FT_Set_Var_Design_Coordinates, + FT_Set_Var_Blend_Coordinates): Do it. + + Fixes issue #1355. + +2025-09-10 Werner Lemberg + + * src/autofit/afgsub.c (af_map_lookup): Fix handling of lookup type 7. + + Fixes issue #1356. + +2025-09-08 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_Run_Context): Fix IUP tracking bits. + + Correctly fixes #1353 and #1349. + +2025-09-08 Alexei Podtelezhnikov + + Typo! + +2025-09-08 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_Run_Context): Reset IUP tracking bits. + + Fixes #1353. + +2025-09-08 Behdad Esfahbod + + [autofit] Fix HarfBuzz calling. + + * src/autofit/afadjust.c (af_reverse_character_map_new) + [FT_CONFIG_OPTION_USE_HARFBUZZ]: Use `ft_hb_enabled`. + + Fixes issue #1354. + +2025-09-08 Werner Lemberg + + * docs/release: Use `sshpass` for SourceForge.net password. + +2025-09-08 Werner Lemberg + + * docs/release: Fix `scp` usage with OpenSSH version >= 9.0. + + Starting with this version, OpenSSH uses `scp` with the SFTP protocol as the + default. However, SFTP is disabled on savannah.gnu.org since January 2025. + +2025-09-06 Werner Lemberg + + * Version 2.14.0 released. + ========================== + + Tag sources with `VER-2-14-0'. + + * docs/VERSION.TXT: Add entry for version 2.14.0. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.13.3/2.14.0/, s/2133/2140/. + + * include/freetype/freetype.h (FREETYPE_MINOR): Set to 14. + (FREETYPE_PATCH): Set to 0. + + * builds/unix/configure.raw (version_info): Set to 26:3:20. + * CMakeLists.txt (VERSION_MINOR): Set to 14. + (VERSION_PATCH): Set to 0. + +2025-09-06 Werner Lemberg + + * builds/toplevel.mk (do-dist): Download shallow clone of `config.git`. + + No need for any other commit than the current one. + +2025-09-06 Werner Lemberg + + Update all copyright notices. + +2025-09-05 Werner Lemberg + + src/sfnt/ttload.c (tt_face_load_any): Correctly handle font containers. + + Reported as + + https://issues.oss-fuzz.com/issues/424613326 + +2025-09-05 Jouk Jansen + + Clean up OpenVMS support. + + This avoids cluttering the source code with VMS-specific changes. + + * include/freetype/internal/ftcalc.h [__VMS], src/base/ftcalc.c + [vms_auto64_source]: Remove. + + * builds/vms/patch_ftcalc.sed: New file. + + * vms_make.com: Change macro definitions while this script is running; we + use `GNU sed` to inject the necessary preprocessor code on the fly. + +2025-09-01 Alexei Podtelezhnikov + + * src/psaux/psauxmod.h (psaux_driver_class): Removed declaration. + +2025-08-29 Alexei Podtelezhnikov + + [base] Use const FT_Module_Class. + + This is intended to warn against modifying any fields in the class, + at compile-time and avoid crashes at run-time. + + * include/freetype/internal/ftobjs.h (FT_ModuleRec): Do it. + * src/base/ftobjs.c (Destroy_Module, FT_Add_Module): Updated. + +2025-08-27 Alexei Podtelezhnikov + + * src/base/ftobjs.c (FT_Load_Glyph): Reduces scope of 'ttface'. + +2025-08-25 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c: Fix some builds. + +2025-08-23 Werner Lemberg + + * subprojects/*.wrap: Updated. + +2025-08-23 Werner Lemberg + + Updating `CHANGES` file; minor fixes elsewhere (mostly formatting). + +2025-08-20 Alexei Podtelezhnikov + + [truetype] Fix compilation without bytecode. + + Fixes #1351 and various warnings about unused variables. + + * src/truetype/ttinterp.c: Put the entire body under #ifdef. + * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Relocate + some declarations. + * src/truetype/ttinterp.h: Remove some #ifdef conditions. + * src/truetype/ttobjs.c (tt_size_done): Modified. + +2025-08-14 Alexei Podtelezhnikov + + [truetype] Small fix in the incremental interface (again). + + Fixes #1299, last [-Wdangling-pointer=] warning. + + * src/truetype/ttgload.c (load_truetype_glyph): Restore original stream + on exit unconditionally. + +2025-08-14 Alexei Podtelezhnikov + + [truetype] Small fix in the incremental interface. + + Fixes #1299, last [-Wdangling-pointer=] warning. + + * src/truetype/ttgload.c (load_truetype_glyph): Restore original stream + on exit. + +2025-08-14 Alexei Podtelezhnikov + + * src/autofit/afgsub.c: Fix a warning. + + Fixes [-Wunused-function] warning without HarfBuzz. + +2025-08-11 Alexei Podtelezhnikov + + * */ftoption.h: Update C99 wording. + +2025-08-11 Alexei Podtelezhnikov + + * */ftoption.h: Note C99 compliance. + +2025-08-08 Behdad Esfahbod + + [ttgxvar] Fix caching of scalars when there are intermediate tuples. + + For example, with `GoogleSansFlex-Regular.ttf` at ROND=100, the 'Q' glyph + was misrendering. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Reset `tupleScalars` + earlier. + +2025-08-05 Jouk Jansen + + Improvements to OpenVMS support. + + * include/freetype/internal/ftcalc.h [__VMS]: Undefine `FT_MulFix`. + + * src/base/ftcalc.c [vms_auto64_source]: Define `FT_MulFix`. + + * vms_make.com: Also create 32bit version of the FreeType library. + +2025-08-04 Alexei Podtelezhnikov + + * docs/CHANGES: Mention 'ftmulti' improvements. + +2025-08-02 Alexei Podtelezhnikov + + [type1/MM] Correctly reset the default instance. + + Call T1_Set_MM_WeightVector, which actually sets default weights, + instead of TT_Set_MM_Blend, which just centers the axes. + + * src/type1/t1load.c (T1_Reset_MM_Blend): Do it. + +2025-08-01 Alexei Podtelezhnikov + + [truetype/v40] Fix ROUND_XY_TO_GRID handling. + + Fixes #1346. + + * src/truetype/ttgload.c (TT_Process_Composite_Component): Round + the x-position unless in backward_compatibility mode. + +2025-07-30 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (Ins_MDRP,MIRP): Small tweak. + +2025-07-30 Alexei Podtelezhnikov + + [truetype] Tweak size management. + + * include/freetype/internal/services/svmetric.h (FT_Size_Reset_Func): + Update typedef, do not return error. + * src/truetype/ttobjs.c (tt_size_reset_height): Move the PPem error + handling from here... + (tt_size_reset): ... to here to improve readability. + src/truetype/ttobjs.h (tt_size_reset_height): Update prototype. + +2025-07-30 Alexei Podtelezhnikov + + [truetype] Relocate color compensation (cont'd). + + * src/truetype/ttinterp.c (Inc_MDAR,MIAP,MDRP,MIRP): Fix forgotten + rounding. + +2025-07-29 Alexei Podtelezhnikov + + [truetype] Fix EVEN and ODD instructions. + + It is possible to have a fractional part after rounding when rounding + to half-grid or super-rounding. The specs call to ignore the fractional + part in that case. + + ^ src/truetype/ttinterp.c (Ins_EVEN, Ins_ODD): Fix mask. + +2025-07-28 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c: Fix comments. + +2025-07-28 Alexei Podtelezhnikov + + * src/truetype/ttinterp.h (TT_Round_Func): Fix argument. + + Fixes #1347: function type mismatch. + +2025-07-27 Alexei Podtelezhnikov + + [truetype] Clean up size validation. + + Rely on non-zero ppem to validate the size object. + + * src/truetype/ttobjs.h (TT_Size_Merics): Remove the `valid` flag. + * src/truetype/ttobjs.c (tt_size_init,done,reset,reset_height): Updated. + * src/truetype/ttgload.c (TT_Load_Glyph): Check for non-zero ppem. + +2025-07-27 Alexei Podtelezhnikov + + [truetype] Relocate color compensation. + + The rounding color compensation, which is not used by FreeType, belongs + to GS. This is a more logical place for it, next to round_state. + + * src/truetype/ttobjs.h (TT_GraphicsState): Move compensations here... + (TT_Size_Metrics): ... from here. + * src/truetype/ttobjs.c (tt_size_init_bytecode): Updated. + * src/truetype/ttinterp.c (tt_default_graphics_state): Updated. + (Ins_ROUND,NROUND,EVEN,ODD): Updated. + (Round_*): Updated. + +2025-07-26 Alexei Podtelezhnikov + + [smooth] Remove usage of setjmp and longjmp. + + To support WASM targets with slow or unsupported setjmp and longjmp, + we eliminate these calls in favor of an error propagation model. + When gray_set_cell is out of cells, it raises an exception which is + later handled in gray_convert_glyph_inner. + This is a less invasive alternative to !385. + + * src/smooth/ftgrays.c (gray_set_cell): Raise the overflow exception + and redirect all work to `cell_null`. + (gray_move,line,conic,cubic_to): Return the exception. + (gray_convert_glyph, gray_convert_glyph_inner): Handle the exception. + +2025-07-05 Werner Lemberg + + [sfnt] Rewrite GPOS kerning support. (2/2) + + The previous code had a fundamental flaw: it didn't validate the necessary + parts of the 'GPOS' table before accessing it, causing crashes with + malformed data (since `TT_CONFIG_OPTION_GPOS_KERNING` is off by default, + standard fuzzers don't catch these problems). Additionally, it did a lot of + parsing while accessing kerning data, making it rather slow. + + The new implementation fixes this. After validation, offsets to the 'GPOS' + lookup subtables used in the 'kern' feature that correspond to 'simple' + kerning (i.e., similar to 'kern' table kerning) are stored in `TT_Face`; + this greatly simplifies and accelerates access to the kerning data. + + Testing with font `SF-Pro.ttf` version '1.00', the validation time for the + 'GPOS' table increases the start-up time of `FT_New_Face` by less than 1%, + while calls to `FT_Get_Kerning` become about 3.5 times faster. + + * include/freetype/internal (gpos_kerning_available): Replace with... + (gpos_lookups_kerning, num_gpos_lookups_kerning): ... these new fields. + Update callers. + + * src/ttgpos.c [TT_CONFIG_OPTION_GPOS_KERNING]: A new implementation. + +2025-07-05 Werner Lemberg + + [sfnt] Rewrite GPOS kerning support. (1/2) + + This commit removes the previous implementation. + +2025-07-05 Werner Lemberg + + [cff] Support GPOS kerning. + + * src/cff/cffdrivr.c (cff_get_kerning) [TT_CONFIG_OPTION_GPOS_KERNING]: Add + code similar to the one in `tt_get_kerning`. + +2025-07-05 Werner Lemberg + + * src/sfnt/ttkern.h (TT_FACE_HAS_KERNING): Remove macro. + + Given that we also support (limited) 'GPOS' table kerning if + `TT_CONFIG_OPTION_GPOS_KERNING` is defined, the name of this macro is + misleading since it only is true for 'kern' table kerning. + + * src/sfnt/sfobjs.c (sfn_load_face): Replace `TT_FACE_HAS_KERNING` with + plain code. + +2025-07-05 Werner Lemberg + + [autofit] Remove `globals->gsub_length`. + + We completely validate the accessed data from the 'GSUB' table, making this + field unnecessary. + + * src/autofit/afglobal.h (AF_FaceGlobalsRec): Remove `gsub_length` field. + + * src/autofit/afglobal.c (af_face_globals_new), src/autofit/afgsub.c + (af_parse_gsub): Updated. + +2025-07-01 Werner Lemberg + + * src/truetype/ttobjs.c (tt_size_init_bytecode): Correct previous fix. + + `FT_NEW_ARRAY` expects a signed value, not an unsigned one. + +2025-07-01 Werner Lemberg + + * src/autofit/afgsub.c: Include `tttables.h` and `afgsub.h`. + + This fixes 'make multi' compilation with clang. + + Reported as + + https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/381#note_2984610 + +2025-07-01 Werner Lemberg + + Various minor fixes. + + As reported by clang 19. + + * src/autofit/afadjust.c (adjustment_database): Make it static. + + * src/base/ftdbgmem.c (FT_MEM_SIZE_MIN): Remove unused macro. + + * src/psaux/psobjs.c (skip_procedure), src/truetype/ttinterp.c (Ins_IF, + Ins_ELSE, Ins_FDEF, Ins_IDEF): Add `default` clause. + +2025-07-01 Werner Lemberg + + More signedness fixes. + + As reported by clang 19. + + * src/autofit/afadjust.c (add_substitute): Make first argument unsigned. + Update all callers. + Other minor signedness fixes. + (af_reverse_character_map_new): Minor signedness fixes. + + * src/autofit/afgsub.c (af_hash_insert): Minor signedness fixes. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Make third + argument unsigned. + Update all callers. + Other minor signedness fixes. + (af_latin_hints_apply): Minor signedness fixes. + + * src/bdf/bdflib.c (bdf_parse_bitmap_): Minor signedness fix. + + * src/truetype/ttobjs.c (tt_size_init_bytecode): Minor signedness fix. + +2025-07-01 Werner Lemberg + + */*: Fix trivial signedness issues with format strings in trace messages. + + As reported with clang 19's `-Wformat` option. + +2025-07-01 Werner Lemberg + + Fix `make multi`. + + Reported as + + https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/381#note_2984253 + + * src/base/fthash.c: Include `ftobjs.h`. + * src/autofit/afgsub.c: Include `afglobal.h`. + +2025-06-30 Alexei Podtelezhnikov + + * MSBuild.sln: Minor. + +2025-06-29 Werner Lemberg + + [doc] Revise font variation API. + +2025-06-29 Werner Lemberg + + [doc] Use 'Adobe MM', 'TrueType GX', and 'OpenType Font Variations'. + +2025-06-26 Werner Lemberg + + Set minimum HarfBuzz version back to 2.0.0. + + Due to the new GSUB parsing we no longer need + `hb_ot_layout_lookup_get_glyph_alternates`. + + This partially reverts commit 5d2fd7608a9. + + * CMakeLists.txt (HARFBUZZ_MIN_VERSION), meson.build (harfbuzz_dep), + builds/unix/configure.raw (harfbuzz_pkg): Set version to 2.0.0. + + * src/autofit/ft-hb-decls.h: Remove entry for + `hb_ot_layout_lookup_get_glyph_alternates`. + +2025-06-26 Werner Lemberg + + [autofit] Speed up computation of `af_reverse_character_map_new`. (4/4) + + With this commit, the start-up time for creating the reverse character map + gets reduced from more than 300% to about 25% (as tested with `arial.ttf` + version 7.00). + + * src/autofit/afadjust.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include + `afgsub.h`. + (add_substitute): New auxiliary function to recursively add elements to + the reverse cmap. + (af_reverse_character_map_new): New code that replaces the old code + removed in the previous commit. + +2025-06-26 Werner Lemberg + + [autofit] Speed up computation of `af_reverse_character_map_new`. (3/4) + + Rip out some HarfBuzz code of `af_reverse_character_map_new`. The new code + comes immediately in a follow-up commit, making it easier to follow the + changes. + + * src/autofit/afadjust.c (af_get_glyph_alternates_helper, + af_get_glyph_alternates): Remove. + (af_reverse_character_map_new): Remove code to create the `*map` hash. + +2025-06-26 Werner Lemberg + + [autofit] Speed up computation of `af_reverse_character_map_new`. (2/4) + + Create an array of GSUB lookup indices for `SingleSubst` and + `AlternateSubst` lookup types to exit early if we have different types. + + Also improve tracing. + + * src/autofit/afglobal.h (AF_FaceGlobals) [FT_CONFIG_OPTION_USE_HARFBUZZ]: + New fields `gsub_length`, `gsub`, and `gsub_lookups_single_alternate`. + + * src/autofit/afglobal.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include + `afgsub.h`. + (af_face_globals_new) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call + `af_parse_gsub` to fill `gsub_lookups_single_alternate`. + (af_face_globals_free): Updated. + + * src/autofit/afadjust.c (af_get_glyph_alternates_helper): Exit early if we + possible. + (af_reverse_character_map_new): Trace GSUB lookup indices to be checked. + +2025-06-26 Werner Lemberg + + [autofit] Speed up computation of `af_reverse_character_map_new`. (1/4) + + Using HarfBuzz's API functions to construct the reverse map is too slow; we + have to call `hb_ot_layout_lookup_get_glyph_alternates` far too often + because it can only handle a single glyph at a time. For this reason we are + going to parse the GSUB table by ourselves. + + The new non-local functions are `af_parse_gsub` and `af_map_lookup`. + + * src/autofit/afgsub.c, src/autofit/afgsub.h: New files for parsing, + validating, and mapping the `SingleSubst` and `AlternateSubst` subtable + types of a GSUB table. + + * src/autofit/autofit.c, src/autofit/rules.mk (AUTOF_DRV_SRC): Updated. + +2025-06-26 Werner Lemberg + + [base] Add no-overwrite hash insert functions. + + * src/base/fthash.c (ft_hash_num_insert_no_overwrite, + ft_hash_str_insert_no_overwrite): New functions. + * include/freetype/internal/fthash.h: Updated. + +2025-06-26 Werner Lemberg + + [base] Add iterators for `FT_Hash`. + + * src/base/fthash.c (ft_hash_num_iterator, ft_hash_str_iterator): New + functions. + * include/freetype/internal/fthash.h: Updated. + +2025-06-24 Werner Lemberg + + [truetype] Add comment to explain heuristic limit for twilight points. + +2025-06-23 Alexei Podtelezhnikov + + [truetype] Restore non-persistent CVT and storage. + + According to specifications, CVT and storage area may or may not be + persistent after modifications by a glyf program. FreeType had always + reset them, which was broken by the last commit. + + * src/truetype/ttinterp.c (TT_Load_Context): Set CVT and storage here. + * src/truetype.ttobjs.c (tt_size_run_prep): Prioritize TT_Load_Context. + (tt_size_init_bytecode): Allocate but not set CVT and storage area. + +2025-06-22 Alexei Podtelezhnikov + + [truetype] Deduplicate 'codeRangeTable'. + + * src/truetype/ttinterp.c (TT_Load_Context, TT_Save_Context): Do not + copy 'codeRangeTable'. + * src/truetype/ttobjs.h (TT_Size): Remove 'codeRangeTable'. + (TT_CodeRange_Tag, TT_CodeRange, TT_DefArray): Moved to... + * src/truetype/ttinterp.h: ... this header.1 + +2025-06-22 Alexei Podtelezhnikov + + [truetype] Simplify bytecode allocations. + + To avoid repeated synchronization, some TT_Size allocations are moved + TT_ExecContext for good. The memory blocks are also consolidated. + + * src/truetype/ttinterp.c (TT_{Load,Save,Done}_Context): Remove + synchronization and stack management. + * src/truetype/ttobjs.c (tt_size_{init,done}_bytecode): Manage allocations + and assign them to the execution context. + (tt_size_run_prep): Updated. + +2025-06-22 Alexei Podtelezhnikov + + [truetype] Rework handling of rendering mode in bytecode. + + This replaces a large number of confusing boolean constructs that + describe the target rendering mode in the execution context with + the straight mode variable. It might fix some hidden bugs when + FT_LOAD_TARGET_XXX were used as flags, which they are not. + + The condition that triggers the CV program re-execution is simplified. + These events due the rendering mode change are rather rare and unexpected + and, therefore, should not be over-analyzed. In v40, all mode changes + now trigger the CV program. In v35, only switches to/from mono do. + + * src/truetype/ttinterp.h (TT_ExecContext): Replace 'grayscale', + 'grayscale_cleartype', 'subpixel_hinting_lean', and 'vertical_lcd_lean' + with the rendering 'mode'. + * src/truetype/ttinterp.c (Ins_GETINFO): Updated. + * src/truetype/ttgload.c (tt_loader_init): Replace 'prep' re-execution + trigger and update 'backward_compatibility' condition. + (tt_loader_set_pp): Updated. + +2025-06-21 Alexei Podtelezhnikov + + * src/truetype/{ttinterp.c,ttobjs.c}: Minor. + +2025-06-21 Alexei Podtelezhnikov + + [truetype] Clean up bytecode execution triggers. + + This avoids executing the CV program twice and cleans up the use of + 'fpgm' and 'prep' triggers + + * src/truetype/ttgload.c (tt_loader_init): Call 'tt_size_init_bytecode' + and 'tt_size_run_prep' explicitly and avoid the call repetition. + * src/truetype/ttobjs.c (tt_size_ready_bytecode): Removed as unused. + (tt_size_init, tt_size_init_bytecode, tt_size_done_bytecode): Remove some + 'fpgm' and 'prep' triggers and update. + (tt_size_run_fpgm, tt_size_run_prep): Do not set the pedantic flag here. + * src/truetype/ttobjs.h: Update signatures. + +2025-06-21 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (tt_loader_init, load_sbit_image): Clean up. + +2025-06-21 Alexei Podtelezhnikov + + [truetype] Simplify twilight zone management. + + * include/freetype/internal/tttypes.h (TT_GlyphZone): Remove 'memory'. + * src/truetype/ttobjs.c (tt_glyphzone_done): Use 'memory' as argument. + (tt_glyphzone_new, tt_glyphzone_done): Allocate/free as a single block. + (tt_size_init_bytecode, tt_size_done_bytecode): Updated. + * src/truetype/ttobjs.h (tt_glyphzone_done): Updated signature. + +2025-06-19 Behdad Esfahbod + + [autofit] Really fix handling of `RTLD_DEFAULT`. + + This commit actually implements what commit 43ec023e1a7 describes. + + * src/autofit/ft-hb.c (FT_RTLD_FLAGS): New macro for `dlopen`; it uses + `RTLD_GLOBAL` only if `RTLD_DEFAULT` is available. + +2025-06-15 Alexei Podtelezhnikov + + [truetype] Revise twilight zone initiation. + + This assures that twilight zone is reset before each CV program + execution, including after the rendering mode switch. Fixes #1344. + + * src/truetype/ttobjs.c (tt_size_ready_bytecode): Relocate the GS + the twilight zone initiation from here... + (tt_size_run_prep): ... to this function, sho that it is always + done prior to the CV program execution. + * src/truetype/ttobjs.c (TT_Run_Context): Set twilight zone here... + (TT_Load_Context): ... rather than here, as it used to be. + +2025-06-13 Alexei Podtelezhnikov + + * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Remove check. + + The highest (sign) attribute bit is reserved and should be zero. + It is harmless to omit this check however. Fixes #1342. + +2025-06-12 Werner Lemberg + + [autofit] Ignore virtual glyph indices from GSUB lookups. + + Reported as + + https://issues.chromium.org/issues/420401651 + + * src/autofit/afadjust.c (af_reverse_character_map_new): Implement it. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Clean up TT_GlyphZone. + + * include/freetype/internal/tttypes.h (TT_GlyphZone): Delete fields. + * src/truetype/ttobjs.c (tt_glyphzone_new, tt_glyphzone_done, + tt_size_init_bytecode): Updated. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Use FT_ARRAY_ZERO. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Updated. + * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids, + tt_size_ready_bytecode): Updated. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Rearrange bytecode run. + + This is a minor change with large code rearrangements. + + * src/truetype/ttinterp.c (TT_RunIns): Just loop through instructions + and move all setup to... + (TT_Run_Context): ... here; relocated. + (Compute_Round): Replaced by simple assignment, removed. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Relocate the interpreter pointer. + + This reduces dereferencing when calling the interpreter. + + * include/freetype/internal/tttypes.h (TT_Face): Move it from here... + * src/truetype/ttinterp.h (TT_ExecContext): ... to here. + * src/truetype/ttobjs.c (tt_size_init_bytecode): Move its initialization + * src/truetype/ttinterp.c (TT_New_Context): ... to here. + (TT_Run_Context): Updated. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Clean up the loader initiation. + + * include/freetype/internal/tttypes.h (TT_LoaderRec): Remove unused field. + * src/truetype/ttgload.c (tt_loader_init): Refactor. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Modify bytecode initiation. + + This reduces the number of function calls and data copying events. + + * src/truetype/ttinterp.c (TT_Goto_CodeRange): Merge into... + (TT_Set_CodeRange): ... this function. + (TT_Load_Context): Do not set up any zones, copy GS, or prepare the + execution... + (TT_Run_Context): ... do this here instead.. + * src/truetype/ttinterp.c (TT_Set_CodeRange): Update signature. + * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Call + TT_Run_Context. + * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Modify the graphics state management. + + Instead of restoring persistent GS variables, we only save modifications + permitted by the CVT program. This reduces the context manipulations. + + * src/truetype/ttobjs.h (TT_GraphicsState): Reorder fields. + * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): + Do not alter the context. + + * src/truetype/ttgload.c (TT_Hint_Glyph): Do not reset GS. + (tt_loader_init): Fix potential issue in 'instruct_control' handling. + * src/truetype/ttinterp.c (TT_Run_Context): Fully reset GS. + (TT_Load_Conext): Rearrange and remove the 'size' check, already + performed in FT_Load_Glyph. + (TT_Save_Context): Save only modifiable GS parts. + (tt_default_graphics_state): Updated. + * src/truetype/ttinterp.h (TT_Run_Context): Update signature. + +2025-06-10 Werner Lemberg + + [gxvar] Really fix setting of named-instance to Regular. + + This fixes an ommission in commit cf06661c51. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize `error`. + +2025-06-10 Werner Lemberg + + Two more link fixes. + +2025-06-10 Werner Lemberg + + Update links. + + Found with `linkchecker --check-extern index.html` running locally in the + 'freetype-web' repository. + +2025-06-07 Behdad Esfahbod + + Fix setting of named-instance to Regular + + Fixes https://gitlab.freedesktop.org/freetype/freetype/-/issues/1341 + + And more elaborate avoidance of loading face->blend if all coords + are zero. + +2025-06-04 Alexei Podtelezhnikov + + * src/type42/t42objs.c (T42_Size_Init): Fix uninitialized use. + + Found by Ozkan Sezer. + +2025-06-04 Ozkan Sezer + + [autofit] Fix `-Wunused-but-set-variable` warning in Windows builds. + + With this commit, the following warning gets removed. + + ``` + In file included from src/autofit/autofit.c:21:0: + src/autofit/ft-hb.c: In function 'ft_hb_funcs_init': + src/autofit/ft-hb.c:75:35: warning: + variable 'version_atleast' set but not used [-Wunused-but-set-variable] + ft_hb_version_atleast_func_t version_atleast = NULL; + ^~~~~~~~~~~~~~~ + ``` + + * src/autofit/ft-hb.c (ft_hb_funcs_init): Move `NULL` check of + `version_atleast` out of ifdefs. + +2025-06-04 Ozkan Sezer + + [build] Revise visibility attributes usage in autotools and CMake. + + * CMakeLists.txt: Set `C_VISIBILITY_PRESET` to hidden for non-Windows only. + Windows handles exports with `DLL_EXPORT` defined, and old MinGW + toolchains emit a lot of warnings about visibility attributes not being + supported in this configuration. + + * build/unix/configure.raw: Revise visibility attributes checks by compiling a + better test program with `-Werror` in `CFLAGS` so that warnings correctly + indicate unsupported configurations. + +2025-06-04 Ozkan Sezer + + * CMakeLists.txt: Add support for `FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC`. + + This commit introduces a new CMake option `FT_DYNAMIC_HARFBUZZ`. + +2025-06-03 Ozkan Sezer + + * src/autofit/ft-hb.c: Fix definition of `_GNU_SOURCE`. + + Commit 43ec023e1a730f defined the macro too late. + +2025-06-03 Werner Lemberg + + Replace 'www.freetype.org' with 'freetype.org'. + +2025-06-03 Ozkan Sezer + + * builds/unix/configure.raw: Fix HarfBuzz library detection for MinGW. + + Set `have_harfbuzz*` variables explicitly to dynamic for MinGW, since + Windows uses its own `LoadLibrary` call. + + This fixes a MinGW configuration error: + + ``` + checking for HARFBUZZ... no + checking for dlopen in -lc... no + checking for dlopen in -ldl... no + configure: error: harfbuzz support requested but library not found + ``` + +2025-06-03 Ozkan Sezer + + * builds/unix/configure.raw: Improve check for `dlopen`. + + Look for `dlopen` first in 'libc', then in 'libdl'. + +2025-06-03 Behdad Esfahbod + + * src/autofit/ft-hb.c: Fix usage of `RTLD_DEFAULT`. + + Using `RTLD_DEFAULT` we see whether the process already has HarfBuzz linked + in, and reuse it. If this symbol is not defined it is tempting to use + `RTLD_GLOBAL` instead, which would make the library available to the whole + process. However, without `RTLD_DEFAULT`, we would risk loading a second + HarfBuzz library, and if the linker mixes them up, probably giving symbols + from the new library to other clients, we might get into trouble. For this + reason, we do not pass `RTLD_GLOBAL` to `dlopen`; the default is + `RTLD_LOCAL`, and the rest of the process won't see the loaded HarfBuzz and + hopefully all be happy. + +2025-05-28 Werner Lemberg + + [sfnt] `FT_Load_Sfnt_Table` can now also load a font's table directory. + + Closes issue #1263. + + * src/sfnt/ttload.c (tt_face_load_any): Implement it. + +2025-05-28 Werner Lemberg + + [gzip] Update sources to zlib 1.13.1. + + Fixes issue #1294. + +2025-05-27 Vítor Ramos + + * src/base/ftobjs.c (FT_Load_Glyph): Loosen auto-hinting constraints. + + Fixes issue #1320. + +2025-05-27 Werner Lemberg + + Update `CHANGES` file. + +2025-05-27 Behdad Esfahbod + + [gxvar] Optimize out more bounds checking. + + Big win, ~20% in measured mega-var font, HarfBuzz's `benchmark-font` + 'glyph_h_advances' benchmark. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Implement it in + loops. + +2025-05-27 Behdad Esfahbod + + * src/truetype/ttgload.c (load_truetype_glyph): Use `IS_DEFAULT_INSTANCE`. + +2025-05-27 Behdad Esfahbod + + [gxvar] Set `doblend` to `FALSE` if at default location. + + * src/truetype/ttgxvar.c (tt_set_mm_blend, TT_Get_Var_Design): Do it. + +2025-05-27 Behdad Esfahbod + + [mm/gxvar] Always detect default instance and use optimized codepath. + + Even if it was explicitly set by either design or normalized APIs. + + Also update documentation. + + * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design): Use value -2 + of `error` to indicate that we have a non-default instance. + (TT_Set_Named_Instance): Updated. + + * src/base/ftmm.c (FT_Set_Var_Design_Coordinates, + FT_Set_Var_Blend_Coordinates): Updated. + +2025-05-27 Alexei Podtelezhnikov + + Typo. + +2025-05-27 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_Load_Context): Clean up. + +2025-05-26 Werner Lemberg + + [autofit] Fix integer overflow. + + Reported as + + https://issues.oss-fuzz.com/issues/420401635 + + * src/autofit/aflatin.c (af_latin_stretch_top_tilde, + af_latin_stretch_bottom_tilde): Use `SUB_LONG`. + +2025-05-26 Werner Lemberg + + [gxvar] Speed up handling of deltas in `ItemVariationStore`. (3/3) + + * src/base/ftcalc.c (FT_MulAddFix): Removed, no longer needed. + * include/freetype/internal/ftcalc.h: Updated. + +2025-05-26 Behdad Esfahbod + + [gxvar] Speed up handling of deltas in `ItemVariationStore`. (2/3) + + Do all math in fixed integer and do a single divide at the end. + + Also don't use an array to read deltas; just read them as we go, and skip + (branch-free) when scalar is 0. + + 30% speedup in measured mega-var font, HarfBuzz's `benchmark-font` + 'glyph_h_advances' benchmark. + +2025-05-26 Behdad Esfahbod + + [gxvar] Speed up handling of deltas in `ItemVariationStore`. (1/3) + + * src/truetype/ttgxvar.c (ft_mul_add_delta_scalar, ft_round_and_shift16): + New functions, reusing code from `ftcalc.c`. + +2025-05-26 Behdad Esfahbod + + Lift `FT_Int64` type to global (internal) FreeType use. + + * src/base/ftcalc.c (FT_Int64) [!FT_INT64]: Move declaration to... + * include/freetype/config/integer-types.h: ... this file. + (FT_UInt64) [!FT_INT64]: New structure. + (FT_INT64_ZERO): New macro. + +2025-05-26 Behdad Esfahbod + + [gxvar] Move scalar computation into its own function. + + * src/truetype/ttgxvar.c (tt_var_get_item_delta): Split off affected code + into... + (tt_calculate_scalar): ...this new function. + +2025-05-26 Werner Lemberg + + [autofit] Make the accent database work for more glyphs (again). + + See the added comment for an explanation. + + This partially undoes commit f68733d4a8. + + * src/autofit/afadjust.c (af_reverse_character_map_new): Always loop over all + elements of the adjustment database. + (in_range): Removed, no longer needed. + +2025-05-26 Alexei Podtelezhnikov + + [trueetype] Remove useless assignments. + + * src/truetype/ttobjs.c (tt_size_run_fpgm): Remove assignment that + is ignored and overridden later in 'Compute_Funcs'. + * src/truetype/ttinterp.c (TT_RunIns): Ditto. + (Ins_MIAP): Formatting. + +2025-05-25 Werner Lemberg + + [autofit] Minor code cleanup. + + * src/autofit/afadjust.c (af_reverse_character_map_new): Rename `result_set` + to `glyph_alternates` and move its clearing to... + (af_get_glyph_alternates): ...this function. + (af_get_glyph_alternates_helper): s/result/helper_result/. + +2025-05-25 Werner Lemberg + + [autofit] Speed up construction of reverse character map. (4/4) + + * src/autofit/afadjust.c (af_get_glyph_alternates): Move creation and + deletion of the `helper_result` set to... + (af_reverse_character_map_new): ...this function. + Gain for `arial.ttf` version 7.00: approx. 1%. + +2025-05-25 Werner Lemberg + + [autofit] Speed up construction of reverse character map. (3/4) + + * src/autofit/afadjust.c (af_reverse_character_map_new): Fold two loops into + one. + Gain for `arial.ttf` version 7.00: approx. 1%. + +2025-05-25 Werner Lemberg + + [autofit] Speed up construction of reverse character map. (2/4) + + This commit, together with the previous one, makes the startup of the + auto-hinter much faster. + + Note, though, that the startup time for handling the diacritic database is + still rather large. For example, loading `arial.ttf` version 7.00 followed + by auto-hinting a first Latin glyph is still approx. three times slower + than before the introduction of the database (this is because function + `hb_ot_layout_lookup_get_glyph_alternates` is called very often). + + * src/autofit/afshaper.c (scripts): Rename this array to... + (af_hb_scripts): ...this and export it. + (af_shaper_get_coverage_hb): Updated. + * src/autofit/afshaper.h: Updated. + + * src/autofit/afadjust.c (af_reverse_character_map_new): Pass the current + script to `hb_ot_layout_collect_lookups` to make HarfBuzz check less + lookups while searching for glyph alternates. + +2025-05-25 Werner Lemberg + + [autofit] Speed up construction of reverse character map. (1/4) + + Build reverse cmap for characters of the current script style only. + + * src/autofit/afadjust.c (in_range): New function. + (af_reverse_character_map_new): Pass `AF_StyleMetrics` instead of + `AF_FaceGlobals` so that we can access the current script style. + Use `in_range` to limit tested code points. + * src/autofit/afadjust.h: Updated. + * src/autofit/aflatin.c (af_latin_metrics_init): Updated. + +2025-05-25 Werner Lemberg + + [autofit] Avoid variable shadowing. + + * src/autofit/afadjust.c (af_reverse_character_map_new): Do it. + +2025-05-25 Werner Lemberg + + [autofit] Minor speedup of reverse charmap creation. + + * src/autofit/afglobal.h (AF_HAS_CMAP_ENTRY): New flag. + (AF_STYLE_MASK): Update value. + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): Set + `AF_HAS_CMAP_ENTRY`. + + * src/autofit/afadjust.c (af_reverse_character_map_new): For the creation of + the reverse map, change code to handle glyphs with cmap entries before + glyphs without cmap entries. Doing so avoids some code redundancy and + reduces the number of hash lookups. + +2025-05-25 Werner Lemberg + + [autofit] Whitespace. + +2025-05-25 Werner Lemberg + + [autofit] Use `FT_Offset`. + + * src/autofit/afadjust.c (af_adjustment_database_lookup, + af_reverse_character_map_new): Do it. + +2025-05-25 Werner Lemberg + + [autofit] Simplify return value of `af_adjustment_database_lookup`. + + * src/autofit/adfadjust.h (af_adjustment_database_lookup): Return integer. + (AF_AdjustmentDatabaseEntry): Move structure to... + * src/autofit/afadjust.c: ...this file. + (af_adjustment_database_lookup, af_reverse_character_map_new): Updated. + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Updated. + +2025-05-25 Werner Lemberg + + [autofit] Remove no longer used functions and structures. + + This is the clean-up from the previous commit. + + * src/autofit/afadjust.c (af_reverse_character_map_entry_compare, + af_reverse_character_map_lookup, af_reverse_character_map_expand): + Removed. + * src/autofit/afadjust.h: Updated. + * src/autofit/aftypes.h (AF_ReverseMapEntry, AF_ReverseCharacterMap): + Removed. + +2025-05-25 Werner Lemberg + + [autofit] Use a hash for handling vertical accent adjustments. + + This greatly simplifies the code. + + * src/autofit/afadjust.c (af_reverse_character_map_new): Implement it. + (af_reverse_character_map_done): Updated. + * src/autofit/afadjust.h: Updated. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Updated. + + * src/autofit/aftypes.h: Include `fthash.h`. + (AF_StyleMetrics): Change type of `reverse_charmap` to `FT_Hash`. + +2025-05-25 Werner Lemberg + + * src/autofit/aflatin.c (af_latin_hints_apply): Improve code legibility. + +2025-05-25 Werner Lemberg + + [autofit] Use `FT_LONG_MIN` and `FT_LONG_MAX` for `FT_Pos` variables. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues, + af_compute_vertical_extrema, af_find_highest_contour, + af_find_second_highest_contour, af_find_lowest_contour, + af_find_second_lowest_contour, af_check_contour_horizontal_overlap): + Updated. + +2025-05-25 Werner Lemberg + + [autofit] Fix uninitialized variables. + + * src/autofit/aflatin.c (af_latin_stretch_top_tilde, + af_latin_stretch_bottom_tilde): Initialize `min_measurement`. + +2025-05-23 Behdad Esfahbod + + [ttmtx] Fix check for being non-default variation position. + + If user explicitly sets variations to `NULL` after it being set to something + else, `face->blend` will still be non-`NULL`. The intention here however is + correctly captured by `FT_IS_VARIATION`. + + * src/sfnt/ttmtx.c (tt_face_get_metrics): Use `FT_IS_VARIATION`. + +2025-05-23 Behdad Esfahbod + + [gxvar] Optimize loading of 'gvar' table. + + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store, + tt_var_load_delta_set_index_mapping, ft_var_load_gvar): Use frames to + reduce bounds checking. + (TT_Vary_Apply_Glyph_Deltas): Better macro usage. + +2025-05-22 Behdad Esfahbod + + [mm] Short-circuit setting face to default instance if already is so. + + I found that in hb-ft I need to sometime reset the face to the default + instance. However, calling `FT_Set_Var_Design_Coordinates` with no coords + was still slowing down at least the glyph-advance code by processing + variations. + + Perhaps there's a better fix, but this handles the easy cases. + + * src/base/ftmm.c (FT_Set_Var_Design_Coordinates): Implement it. + +2025-05-22 Behdad Esfahbod + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix allocation. + + Bug was introduced in commit 582de1a4b6f. + +2025-05-21 Werner Lemberg + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Remove redundant test. + + This was erroneously added in commit e6e9110a8. + +2025-05-21 ColdPaleLight + + [sdf] Skip neighbor comparison for pixels near edges. + + If the distance of the current pixel to the edge is less than or equal + to 0.5, skip further neighbor comparisons to avoid unnecessary + calculations. When the `USE_SQUARED_DISTANCES` macro is defined, + compare to 0.25 instead. + + * src/sdf/ftbsdf.c (compare_neighbor): Add early return for pixels + close to edges to avoid unnecessary neighbor checks. + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + [gxvar] Cache shared-tuple scalar values. + + GoogleSansFlex HB benchmark-font draw results: + + Before: 2.13ms + After: 1.65ms + Speedup: 22% + + * src/truetype/ttgxvar.h (GX_BlendRec): Add `tuplescalars` field. + + * src/truetype/ttgxvar.c (ft_var_load_gvar): Allocate `tuplescalars` array. + (tt_set_mm_blend): Set its values. + (TT_Vary_Apply_Glyph_Deltas): Use it. + (tt_done_blend): Deallocate it. + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + [gxvar] Reduce number of mallocs. + + 8% speed up in drawing GoogleSansFlex variable in HB benchmark-font. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Use an allocation + pool instead of individual allocations. + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + [gxvar] Another optimization in computing scalar. + + Another ~6% speedup in GoogleSansFlex var drawing. + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Test `ncv` for being zero. + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + [gxvar] Remove stale comment. + + The code *does* check against start/end! + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Micro-optimize. + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + [gxvar] Inline two USHORT reads. + + Speeds up GoogleSansFlex variable glyph drawing by ~13%. + + Before: 2.95ms + After: 2.57ms + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Do it. + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + [gxvar] Micro-optimize loop end condition. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Do it. + +2025-05-21 Behdad Esfahbod + + [truetype] Don't process `mvar` metrics if default instance. + + GoogleSansFlex default-instance HarfBuzz benchmark-font draw: + + Before: 0.610ms + After: 0.435ms + Speedup: 28% + + * src/truetype/ttobjs.c (tt_face_init) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: + Check `instance_index`. + +2025-05-21 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (Ins_MIRP,DELTAP,DELTAC): Minor. + +2025-05-20 Alexei Podtelezhnikov + + [truetype] Update bytecode error handling. + + * src/truetype/ttinterp.c (Ins_SHP,SHPIX,ALIGNRP): Return appropriate + error in case of stack underflow. + (Ins_IP): Ditto and remove redundant check. + +2025-05-19 Werner Lemberg + + * src/aflatin.c (af_latin_hint_edges): Refine fix for serif handling. + + Commit 11432424 (from 2025-May-12) was too aggressive; it is now restricted + to edges that are not too far away. + +2025-05-19 Werner Lemberg + + * src/afadjust.c (adjustment_database): Make it complete up to U+FFFF. + + Also fix two entries. + + This is for Unicode 17.0. + +2025-05-19 Werner Lemberg + + [autofit] Fix vertical adjustment of (mainly) double diacritics. + + The series of commits that introduced this adjustment support had some + flaws. + + - If there were two diacritics on top of a base glyph, and the upper + diacritic was a tilde, the vertical centering correction was incorrectly + applied to the lower, non-tilde glyph instead of the tilde. + + - The maximum value allowed to shift a glyph was too strict (and also not + handling rounding issues), causing some diacritics and combinations of + diacritics to be not shifted at all. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Correctly handle + vertical centering correction. + +2025-05-19 Werner Lemberg + + [autofit] Code hygiene. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Use more flag + variables and improve trace messages. + +2025-05-19 Werner Lemberg + + * src/autofit/aflatin.c (af_latin_hint_edges): Fix handling of serifs. + + This has been discovered while inspecting the auto-hinting results of + character 'Ễ' in font `arial.ttf` (version 7.00) at 13ppem. + +2025-05-19 Werner Lemberg + + [autofit] Minor. + + * src/autofit/aflatin.c (af_latin_hint_edges): Rename `has_serifs` to + `has_non_stem_edges` and make it of type `FT_Bool`. + +2025-05-19 Werner Lemberg + + [autofit] New algorithm for preventing hinting of tilde glyphs. + + The old algorithm removed segments from edges to make the auto-hinter ignore + a tilde. However, the implementation had two flaws. + + - Edge array elements were moved around without reordering them afterwards. + - The linking between edges and segments wasn't correctly updated for moved + edges, which could cause endless loops. + + Correcting both problems are non-trivial; additionally, a fix would make + the auto-hinter slower. + + For these reasons, a new, simpler approach is taken: A new flag allows + points to be tagged as being ignored, and if such a point is enountered, it + doesn't get added to a segment. + + Fixes issue #1333. + + * src/autofit/afhints.h (AF_FLAG_IGNORE): New macro. + + * src/autofit/aflatin.c (af_latin_hints_compute_segments, af_touch_contour): + Use it. + (af_remove_segments_containing_point, af_remove_top_points_from_edges, + af_remove_bottom_points_from_edges): Removed. + (af_latin_stretch_top_tilde): Call `af_touch_top_contours` and + `af_touch_bottom_contours` unconditionally. + (af_latin_hints_apply): Updated. + +2025-05-16 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_DotFix14): Silence UBSAN. + +2025-05-16 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (Ins_DELTAP): Flip if-else. + +2025-05-15 Alexei Podtelezhnikov + + [truetype] Optimize DELTAP and DELTAC. + + * src/truetype/ttinterp.c (Ins_DELTAP,DELTAC): Perform PPEM range- + checking and manipulations outside the loop. + +2025-05-14 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (Compute_Funcs): Replace shifts. + +2025-05-14 Alexei Podtelezhnikov + + [truetype] Tighten code overflow checks. + + Fixes #1336. + + * src/truetype/ttinterp.c (Ins_NPUSHB,NPUSHW,PUSHB, PUSHW): + Tighten conditions. + +2025-05-14 Chris Liddell + + [type1] Fix memory leak on CharString error. + + In the event that a CharString retrieved via the incremental interface + caused an error, the memory for that CharString was not being freed. + + * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Free charstring. + +2025-05-14 Werner Lemberg + + Whitespace, formatting, minor spelling fix. + +2025-05-14 Werner Lemberg + + Adminstrativa. + +2025-05-13 Alexei Podtelezhnikov + + [truetype] Finalize bytecode changes. + + * src/truetype/ttinterp.c: Formatting, minor. + (TT_Goto_CodeRange): Initialize 'iniRange' here... + (TT_RunIns): ... instead of here. + * docs/CHANGES: Updated. + +2025-05-13 Alexei Podtelezhnikov + + [truetype] Streamline backward compatibility. + + The 'backward_compatibility' is only set in v40: no need to check + the interpreter version again and again. In addition, we now track + IUP in its lower bits. After both IUPx and IUPy have been called, + 'backward_compatibility' becomes equal to 0x7. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Wrap 'iup?_called' + into 'backward_compatibility'. + * src/truetype/ttinterp.c (Ins_INSTCTRL): Sync 'backward_compatibility'. + (Direct_Move, Direct_Move_X/Y, Move_Zp2_Point, + Ins_FLIPPT,FLIPRGON,FLIPRGOFF,SHPIX,DELTAP): Updated. + (TT_RunIns): Do not mess with IUP flags. + * src/truetype/ttgload.c (tt_loader_init): Set 'backward_compatibility'. + (TT_Hint_Glyph): Updated. + +2025-05-10 Alexei Podtelezhnikov + + [truetype] Optimize bytecode movements. + + Replacing FT_MulDiv with FT_MulFix gives large performance gains. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Store "projected" + freedom vector. + * src/truetype/ttinterp.c (Compute_Funcs): Compute "projected" + freedom vector. + (Direct_Move, Direct_Move_Orig, Compute_Point_displacement): Use it. + +2025-05-10 Alexei Podtelezhnikov + + [truetype] Simplify stack access. + + * src/truetype/ttinterp.c (Ins_MINDEX,CINDEX): Use local stack pointers. + (Ins_DELTAP,DELTAC): Ditto; limit the number of pairs before looping. + +2025-05-10 Alexei Podtelezhnikov + + [truetype] Tweak bytecode looping. + + * src/truetype/ttinterp.c (Ins_FLIPPT,SHP,SHPIX,IP,ALIGNRP): Handle + counters and stack locally. + (TT_RunIns): Updated. + +2025-05-10 Alexei Podtelezhnikov + + [truetype] Tweak bytecode initiation. + + * src/truetype/ttinterp.c (TT_Load_Context): Init stack tops. + * src/truetype/ttinterp.h (TT_ExecContextRec): Document it and clean. + * src/truetype/ttobjs.c (tt_size_run_prep,fpgm): Updated. + * src/truetype/ttgload.c (tt_loader_init): Minor. + +2025-05-10 Alexei Podtelezhnikov + + [truetype] Modify stack handling. + + * src/truetype/ttinterp.c (Ins_GETVARIATION): Increment stack. + (Ins_NPUSHB,NPUSHW,PUSHB,PUSHW): Handle the code stack here, ... + (TT_RunIns): ... instead of here. Consolidate error handling. + (SkipCode): Remove preemptive check. + +2025-05-10 Alexei Podtelezhnikov + + [truetype] Modify bytecode steps. + + * src/truetype/ttinterp.h (TT_Exec_ContextRec): Remove 'step_ins'. + * src/truetype/ttinterp.c (TT_RunIns, Ins_Goto_CodeRange, + Ins_JMPR,ENDF,PUSHW,NPUSHW): Set and use zero increment 'length' instead. + (Ins_CALL,LOOPCALL,UNKNOWN): Updated. + +2025-05-10 Werner Lemberg + + [autofit] Add safety check for accent adjustments. + + This commit does two things. + + - Ignore accents that have too large heights. This situation can happen if + an accent outline is unexpectedly not the highest (or lowest) contour. + - Add a new adjustment flag `AF_ADJUST_NO_HEIGHT_CHECK` to override the + height check. + + * src/autofit/afadjust.h (AF_ADJUST_NO_HEIGHT_CHECK): New macro. + + * src/autofit/afadjust.c (adjustment_database): Updated. + + * src/autofit/aflatin.c (af_latin_hints_apply): Handle new flag. + (af_glyph_hints_apply_vertical_separation_adjustments): Check limit. + +2025-05-10 Werner Lemberg + + [autofit] Better handling of characters with attached diacritics. (3/3) + + Fixes issue #136. + + * src/autofit/afadjust.c (adjustment_database): Updated. + +2025-05-10 Werner Lemberg + + [autofit] Better handling of characters with attached diacritics. (2/3) + + * src/autofit/afadjust.h (AF_IGNORE_CAPITAL_TOP, AF_IGNORE_CAPITAL_BOTTOM, + AF_IGNORE_SMALL_TOP, AF_IGNORE_SMALL_BOTTOM): New macros. + + * src/autofit/afadjust.c (af_reverse_character_map_new) + [FT_DEBUG_LEVEL_TRACE]: Updated. + Also fix debugging strings of other flags. + + * src/autofit/afhints.h (AF_EDGE_NO_BLUE): New edge flag to make the + auto-hinter ignore the edge while assigning blue zones. + + * src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Use it. + (af_prevent_top_blue_alignment, af_prevent_bottom_blue_alignment, + af_latin_get_base_glyph_blues, af_latin_ignore_top, + af_latin_ignore_bottom): New functions. + (af_latin_hints_apply): Updated. + +2025-05-10 Werner Lemberg + + [autofit] Better handling of characters with attached diacritics. (1/3) + + Introduce blue zone properties that will be used to make the auto-hinter + ignore diacritics attached on the top or the bottom of a base character. + + * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM, + AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM): New properties. + * src/autofit/afblue.dat: Use them. + + * src/autofit/afblue.c, src/autofit/afblue.h: Rengenerated. + + * src/autofit/aflatin.h (AF_LATIN_IS_CAPITAL_BOTTOM_BLUE, + AF_LATIN_IS_SMALL_BOTTOM_BLUE, AF_LATIN_BLUE_BOTTOM, + AF_LATIN_BLUE_BOTTOM_SMALL): New macros. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues)[FT_DEBUG_LEVEL_TRACE]: + Updated. + +2025-05-09 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Line_Up): Use 64-bit calculations. + + Attempt to fix #1332. + +2025-05-09 Werner Lemberg + + [sfnt] Avoid allocation bomb in compressed SVG documents. + + Reported as + + https://issues.oss-fuzz.com/issues/416538625 + + * src/sfnt/ttsvg.c (MAX_SVG_SIZE): New macro. + (tt_face_load_svg_doc): Reject too large buffer. + +2025-05-08 Werner Lemberg + + * include/freetype/ttnameid.h (TT_UCR_*): Define with unsigned long. + (TT_UCR_PHAGSPA): Fix definition. + + Fixes issue #1300. + +2025-05-08 Werner Lemberg + + [doc] Mention that there is no rendering support for 'COLR' v1 tables. + + Handles issue #1319. + +2025-05-08 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_DotFix14): Silence UBSAN. + +2025-05-07 Alexei Podtelezhnikov + + * src/cff/cffgload.c (cff_slot_load): Fix autohinter scaling. + + Fixes #1330. + +2025-05-05 Werner Lemberg + + [autofit] Avoid division by zero. + + Fixes issue #1331. + + * src/autofit/aflatin.c (af_latin_stretch_bottom_tilde): Don't divide by + zero. + +2025-05-04 Carlo Bramini + + Fix Cygwin visibility attributes. + + Reported as compilation warnings in #1329. + + * include/freetype/config/public-macros.h: Check __CYGWIN__. + * include/freetype/internal/compiler-macros.h: Ditto. + +2025-05-03 KatekovAnton + + * CMakeLists.txt: Fix cmake 4 error by specifying the policy version. + +2025-04-29 Werner Lemberg + + * docs/CHANGES: Updated. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + Provide configuration option to dynamically load the HarfBuzz library. + + We now request HarfBuzz version 2.6.8 (published in June 2020) or newer to + simplify the setup; this version introduced function + `hb_ot_layout_lookup_get_glyph_alternates`, which we need for the adjustment + database of the auto-hinter. + + No CMake support yet for dynamic loading. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC): New configuration macro. + + * builds/unix/configure.raw: Implement `--with-harfbuzz=dynamic`. + This gets tested automatically if we can't link with `libharfbuzz`. + (ft_option_set, ft_option_unset): Refine. + Require at least HarfBuzz version 2.6.8. + + * meson.build: Do the same as `configure.raw`. + * meson_options.txt: Updated. + + * CMakeLists.txt: Require at least HarfBuzz version 2.6.8. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Enable dynamic loading of HarfBuzz. (2/2) + + Handle the case where loading HarfBuzz dynamically fails. + + * src/autofit/ft-hb.c, src/autofit/ft-hb.h (ft_hb_enabled): New function. + + * src/autofit/afglobal.c (af_face_globals_new, af_face_globals_free): + Guard HarfBuzz functions with `ft_hb_enabled`. + + * src/autofit/aflatin.c (af_latin_metrics_init_widths, + af_latin_metrics_init_blues, af_latin_metrics_check_digits): Simplify + setup of `shaper_buf`. + Guard calls of `af_shaper_buf_create` with `ft_hb_enabled`. + + * src/autofit/afcjk.c (af_cjk_metrics_init_widths, + af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Dito. + + * src/autofit/afshaper.c: Guard all HarfBuzz function calls with + `ft_hb_enabled`. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Enable dynamic loading of HarfBuzz. (1/2) + + This commit activates the mini-HarfBuzz header files and provides the + necessary infrastructure for dynamically loading HarfBuzz if + `FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC` is defined (this macro gets set up + in a follow-up commit). + + * src/autofit/ft-hb.c: New file, providing `ft_hb_funcs_init` and + `ft_hb_funcs_done` for loading HarfBuzz dynamically. The name of the + library is hold in the macro `FT_LIBHARFBUZZ`, which can be overridden. + + * src/autofit/ft-hb.h: Don't include `hb.h` but `ft-hb-types.h`. + (hb): Modified to handle both standard linking and dynamically + loading of HarfBuzz. + (HB_EXTERN): New macro to load `ft-hb-decls.h`. + + * src/autofit/afadjust.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: For the sake of + dynamically loading the HarfBuzz library, replace the compile-time macro + `HB_VERSION_ATLEAST` with a call to the run-time function + `hb_version_atleast` where necessary – a follow-up commit will set the + minimum version of HarfBuzz to 2.6.8, which provides all necessary + functions needed by FreeType. + + * src/autofit/afmodule.h: Include `ft-hb.h`. + (AF_ModuleRec) [FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC]: Add `hb_funcs` + structure to hold pointers to the dynamically loaded HarfBuzz functions. + + * src/autofit/afmodule.c (af_autofitter_init, af_autofitter_done) + [FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC]: Call `ft_hb_funcs_init` and + `ft_hb_funcs_done`. + + * src/autofit/afshaper.h: Updated. + * src/autofit/autofit.c: Include `ft-hb.c`. + + * src/autofit/rules.mk (AUTOF_DRV_SRC, AUTOF_DRV_H): Updated. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Some preparations for loading HarfBuzz dynamically. (4/4) + + Add 'mini' HarfBuzz declarations to make FreeType independent on HarfBuzz + header files. + + The files get activated in a follow-up commit. + + * src/autofit/ft-hb-decls.h, src/autofit/ft-hb-types.h: New files, holding + verbatim (or slightly massaged) entries from public HarfBuzz header files. + + * src/autofit/hb-script: New file. + A verbatim copy of a public HarfBuzz header file. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Some preparations for loading HarfBuzz dynamically. (3/4) + + * src/autofit/afshaper.c: Move around code so that the non-HarfBuzz code is + present even if `FT_CONFIG_OPTION_USE_HARFBUZZ` is not defined. This is a + preliminary step to allow deactivation of HarfBuzz at run-time. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Some preparations for loading HarfBuzz dynamically. (2/4) + + Pass `AF_FaceGlobals` to many functions, or provide it, tagged with + `FT_UNUSED`. We need this later on to access a dynamically linked HarfBuzz + library. + + * src/autofit/ft-hb-ft.h (ft_hb_ft_font_create): Use `globals` argument. + Drop unused `destroy` argument. + * src/autofit/ft-hb-ft.c (ft_hb_ft_face_create, ft_hb_ft_font_create): Use + `globals` argument. + Drop unused `destroy` argument. + (ft_hb_ft_face_create, ft_hb_ft_reference_table): Cast `user_data` to + `AF_FaceGlobals`. + + * src/autofit/afadjust.c (af_get_glyph_alternates_helper, + af_get_glyph_alternates): Add `globals` argument. + Update callers. + + * src/autofit/afshaper.c, src/autofit/afshaper.h (af_shaper_buf_create, + af_shaper_buf_destroy): Use `globals` argument. + + * src/autofit/afglobal.c (af_face_globals_new): Updated. + + * src/autofit/afcjk.c (af_cjk_metrics_init_widths, + af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated. + * src/autofit/aflatin.c (af_latin_metrics_init_widths, + af_latin_metrics_init_blues, af_latin_metrics_check_digits): Updated. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Some preparations for loading HarfBuzz dynamically. (1/4) + + * src/autofit/ft-hb.h: New file, defining the `hb` macro. Later on, we + provide a different definition of this macro depending on a yet-to-come + configuration option to support dynamic loading of HarfBuzz functions. + + * src/autofit/afadjust.c, src/autofit/afglobal.c, src/autofit/afshaper.c, + stc/ft-hb-ft.c: Use it. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Rename 'ft-hb' to 'ft-hb-ft'. + + Since it's a (shrinked) copy of 'hb-ft'. + + * src/autofit/afglobal.c (af_face_globals_new), src/autofit/afshaper.h, + src/autofit/autofit.c: Updated. + + * src/autofit/ft-hb.c, src/autofit/ft-hb.h: Renamed to... + * src/autofit/ft-hb-ft.c, src/autofit/ft-hb-ft.h: ...this; updated. + + * src/autofit/rules.mk (AUTOF_DRV_SRC): Updated. + +2025-04-29 Werner Lemberg + + * src/autofit/aflatin.c (af_latin_stretch_top_tilde): Don't divide by zero. + + Reported as + + https://issues.oss-fuzz.com/issues/414320186 + +2025-04-28 Werner Lemberg + + [autofit] Extend adjustment database with characters up to U+1FFF. + + This adds many pre-combined Latin glyphs, Cyrillic, Greek, and some + characters from other scripts (or rather, Unicode blocks). + + Fixes issues #112 and #471. + +2025-04-28 Werner Lemberg + + [autofit] Support diacritics with special vertical minima. + + This code catches situations like U+1F90 ('á¾'), where some fonts have + exactly the same vertical minimum for the lower accent as for the base + glyph. + + * src/autofit/aflatin.c (af_find_highest_contour, af_find_lowest_contour): + Handle it. + +2025-04-28 Werner Lemberg + + [autofit] More tilde stretch support. (3/3) + + The auto-hinter now supports up to four tilde glyphs (two above and two + below a base character). + + Note that diacritics above (or below) a tilde are now also ignored by the + auto-hinter. + + * src/autofit/afadjust.h (AF_ADJUST_TILDE_TOP2, AF_ADJUST_TILDE_BOTTOM2): + New macros. + * src/autofit/afadjust.c (af_reverse_character_map_new): Updated. + + * src/autofit/aflatin.c (af_remove_top_points_from_edges, + af_remove_bottom_points_from_edges): Make functions also handle all + contours higher (or lower) of the given one in the argument. + (af_touch_top_contours, af_touch_bottom_contours): New functions. + (af_latin_stretch_top_tilde, af_latin_stretch_bottom_tilde): Use it to + also handle all contours higher (or lower) than the tilde contour. + + * (af_latin_hints_apply): Handle more tilde glyphs. + +2025-04-28 Werner Lemberg + + [autofit] More tilde stretch support. (2/3) + + * src/autofit/aflatin.c (af_latin_stretch_top_tilde, + af_latin_stretch_bottom_tilde): Return vertical size difference between + stretched and original contour. + (af_latin_align_top_tilde, af_latin_align_bottom_tilde): Return applied + delta. + (af_latin_hints_apply): Updated; the return values are not used yet. + +2025-04-28 Werner Lemberg + + [autofit] More tilde stretch support. (1/3) + + Move some existing code that we soon need elsewhere into separate functions. + + * src/autofit/aflatin.c (af_move_contours_up, af_move_contours, down): New + functions. + (af_glyph_hints_apply_vertical_separation_adjustments): Use them. + (af_touch_contour): New function. + (af_latin_stretch_top_tilde, af_latin_stretch_bottom_tilde): Use it. + + (af_latin_remove_top_tilde_points_from_edges, + af_latin_remove_bottom_tilde_points_from_edges): Renamed to... + (af_remove_top_points_from_edges, af_remove_bottom_points_from_edges): + ...this. + Update callers. + +2025-04-28 Werner Lemberg + + [autofit] Support two below/above accents for vertical adjustment. (2/2) + + * src/autofit/afadjust.h (AF_ADJUST_UP2, AF_ADJUST_DOWN2): New macros. + * src/autofit/afadjust.c (af_reverse_character_map_new): Updated. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Implement it. + +2025-04-28 Werner Lemberg + + [autofit] Support two below/above accents for vertical adjustment. (1/2) + + Some variable renamings. + +2025-04-28 Werner Lemberg + + [autofit] Routines for finding the second highest/lowest contour. + + * src/autofit/aflatin.c (af_find_second_highest_contour, + af_find_second_lowest_contour): New functions. + +2025-04-28 Werner Lemberg + + [autofit] Use more functions to reduce code. + + * src/autofit/aflatin.c (af_find_highest_contour, af_find_lowest_contour): + Updated. + (af_glyph_hints_apply_vertical_separation_adjustments): Use + `af_compute_vertical_extrema`, `af_find_highest_contour`, and + `af_find_lowest_contour`. + (af_latin_hints_apply): Use `af_compute_vertical_extrema`, + +2025-04-28 Werner Lemberg + + * src/autofit/aflatin.c (af_compute_vertical_extrema): New function. + + To be used in a follow-up commit. + +2025-04-28 Werner Lemberg + + * src/autofit/aflatin.c: Some variable renaming. + +2025-04-28 Werner Lemberg + + [autofit] Avoid recomputation of highest and lowest contour. + + * src/autofit/aflatin.c (af_latin_hints_apply): Compute highest and lowest + contour in this function. + (af_latin_remove_top_tilde_points_from_edges, + af_latin_remove_bottom_tilde_points_from_edges, + af_latin_stretch_top_tilde, af_latin_stretch_bottom_tilde, + af_latin_align_top_tilde, af_latin_align_bottom_tilde): Updated. + +2025-04-28 Werner Lemberg + + * src/aflatin.c (af_latin_trace_height): Remove. + Update caller. + + The algorithm works fine. + +2025-04-28 Werner Lemberg + + [autofit] Support vertical stretching of tilde below base glyph. (2/2) + + * src/autofit/afadjust.h (AF_ADJUST_TILDE_BOTTOM): New macro. + * src/autofit/afadjust.c (af_reverse_character_map_new): Updated. + + * src/autofit/aflatin.c (af_find_lowest_contour, + af_latin_remove_bottom_tilde_points_from_edges, + af_latin_stretch_bottom_tilde, af_latin_align_bottom_tilde): New functions + in analogy to the top tilde versions. + (af_glyph_hints_apply_vertical_separation_adjustments): Add support in + analogy to the top tilde code. + (af_latin_hints_apply): Updated. + +2025-04-28 Werner Lemberg + + [autofit] Support vertical stretching of tilde below base glyph. (1/2) + + * src/autofit/aflatin.c (af_latin_remove_tilde_points_from_edges, + af_latin_stretch_tilde, af_latin_align_tilde): Rename to... + (af_latin_remove_top_tilde_points_from_edges, af_latin_stretch_top_tilde, + af_latin_align_top_tilde): ...this. + Update all callers. + (af_latin_hints_apply): Rename `is_tilde` to `is_top_tilde`. + +2025-04-28 Werner Lemberg + + [autofit] Allow vertical adjustment at the top and bottom simultaneously. + + This will be used to hint characters like U+1FB7 ('á¾·'). + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Implement it. + +2025-04-28 Werner Lemberg + + * src/autofit/afadjust.c (af_reverse_character_map_new): Update tracing. + +2025-04-28 Werner Lemberg + + [autofit] Indicate tilde handling with a flag macro, too. + + * src/autofit/afadjust.h (AF_ADJUST_TILDE_TOP): New macro. + (AF_AdjustmentDatabaseEntry): Remove field `apply_tilde`. + + * src/autofit/afadjust.c (adjustment_database, + af_reverse_character_map_new), src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments, + af_latin_hints_apply): Updated. + +2025-04-28 Werner Lemberg + + [aflatin] Convert adjustment database enum to macros. + + We are going to add more values, and we want to use combinations of them. + + * src/autofit/afadjust.h (AF_VerticalSeparationAdjustmentType): Replace + with... + (AF_ADJUST_UP, AF_ADJUST_DOWN, AF_ADJUST_NONE): ... new macros. + (AF_AdjustmentDatabaseEntry): Rename field + `vertical_separation_adjustment_type` to `flags`. + + * src/autofit/afadjust.c (af_reverse_character_map_new), + src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Updated. + +2025-04-28 Werner Lemberg + + [autofit] Shorten adjustment enum names. + + * src/autofit/afadjust.h (AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, + AF_VERTICAL_ADJUSTMENT_BOTTOM_CONTOUR_DOWN, AF_VERTICAL_ADJUSTMENT_NONE): + Renamed to... + (AF_ADJUST_UP, AF_ADJUST_DOWN, AF_ADJUST_NONE): ...this. + + * src/autofit/afadjust.c (adjustment_database, + af_reverse_character_map_expand), src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Updated. + +2025-04-26 Werner Lemberg + + * src/autofit/afranges.c: Updated to Unicode 17.0. + + But no support for new scripts (volunteers welcomed). + +2025-04-26 Werner Lemberg + + * src/autofit/afranges.c: Updated to Unicode 16.0. + + But no support for new scripts (volunteers welcomed). + +2025-04-26 Werner Lemberg + + * src/autofit/afranges.c: Updated to Unicode 15.1. + + But no support for new scripts (volunteers welcomed). + +2025-04-26 Werner Lemberg + + * src/autofit/afranges.c: Updated to Unicode 14.0. + + But no support for new scripts (volunteers welcomed). + +2025-04-26 Werner Lemberg + + * src/autofit/afranges.c: Updated to Unicode 13.0. + + But no support for new scripts (volunteers welcomed). + +2025-04-26 Werner Lemberg + + * src/autofit/afranges.c: Updated to Unicode 12.0. + + But no support for new scripts (volunteers welcomed). + +2025-04-25 Alexei Podtelezhnikov + + * include/freetype/internal/ftcalc.h (FT_MulFix_64): Silence UBSAN. + +2025-04-22 Behdad Esfahbod + + * src/autofit/afadjust.c (af_get_glyph_alternates): Fix endless loop. + +2025-04-20 Werner Lemberg + + * src/afadjust.c: Fix test for newer HarfBuzz version (second try). + +2025-04-20 Werner Lemberg + + * src/afadjust.c: Fix test for newer HarfBuzz version. + +2025-04-20 Werner Lemberg + + [autofit] Request at least HarfBuzz 7.2.0 for diacritic support. (3/3) + + This version (from April 2023) added 'SingleSubst' support to + `hb_ot_layout_lookup_get_glyph_alternates`. + +2025-04-20 Werner Lemberg + + [autofit] Speed up creation of the adjustment database's reverse map. (2/3) + + Remove the old code and activate the new one. + +2025-04-20 Werner Lemberg + + [autofit] Speed up creation of the adjustment database's reverse map. (1/3) + + As it turns out, the original implementation using + `hb_ot_shape_glyphs_closure` is extremely slow if a font has a rich set of + OpenType features. For example, this function was called 66954 times while + loading font `arial.ttf` version 7.00, increasing FreeType's startup time by + a factor of 10, which is unacceptable. + + The new algorithm uses a completely different, more low-level approach, no + longer working with OpenType features but with OpenType lookups. It relies + on function `hb_ot_layout_lookup_get_glyph_alternates`, also replacing + recursion with a simple loop. In total, this brings the additional startup + time back to an acceptable range of a few percent. + + A side effect of the new approach is that it catches more alternate forms: + the old code didn't properly handle script-specific features. + + To make the change more readable, this commit only adds new code. + +2025-04-18 Werner Lemberg + + * src/autofit/afadjust.c (af_reverse_character_map_new): Check `map` limit. + + Reported as + + https://issues.chromium.org/issues/410925355 + +2025-04-18 Alexei Podtelezhnikov + + * include/freetype/internal/ftcalc.h: Fix fringe compilation. + +2025-04-18 Alexei Podtelezhnikov + + * src/base/ftcalc.c (ft_corner_orientation) [!FT_INT32]: Fix up. + +2025-04-17 Werner Lemberg + + [autofit] Don't access uninitialized memory. + + Reported as + + https://bugs.ghostscript.com/show_bug.cgi?id=708295 + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Initialize all + array elements of `contour_y_minima` and `contour_y_maxima`. + +2025-04-17 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_MulFix14,TT_DotFix14)[!FT_INT64]: Sync. + +2025-04-17 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_DotFix14): Silence UBSAN. + +2025-04-17 Alexei Podtelezhnikov + + * src/base/ftcalc.c: Miscellaneous cleanups. + +2025-04-16 Werner Lemberg + + [autofit] Avoid crash. + + Reported as + + https://issues.oss-fuzz.com/issues/410811029 + + * src/autofit/aflatin.c (af_remove_segments_containing_point): Check + `edge->last`. + +2025-04-15 Alexei Podtelezhnikov + + [base, truetype] Silence UBSAN (cont'd). + + * src/truetype/ttinterp.c (TT_MulFix14, TT_DotFix14): Use MUL_INT64. + * include/freetype/internal/ftcalc.c (FT_MulFix): Ditto. + +2025-04-15 Werner Lemberg + + [autofit] Avoid unnecessary recomputation of HarfBuzz data. + + Call the functions once per font instead of once per glyph. + + * src/autofit/afadjust.c (af_all_glyph_variants): Move code to compute the + `feature_tags` and `type_3_lookup_indices` sets to... + (af_reverse_character_map_new): ...this function. + +2025-04-15 Werner Lemberg + + [autofit] Fix creation of the adjustment database's reverse map. + + Due to the way the reverse map array gets constructed with HarfBuzz, there + might be multiple, identical glyph index entries with different character + values in the array. As an example, an OpenType feature like 'unic' might + map lowercase glyph 'ae' to uppercase glyph 'AE', in addition to the already + present cmap entry for 'AE'. + + In most cases, this incorrect mapping is harmless (but still wrong). + However, there exist some lowercase/uppercase character pairs where the + diacritic for the uppercase character is on the other vertical side of the + base character as for the lowercase character. An example is U+0122 (LATIN + CAPITAL LETTER G WITH CEDILLA) and U+0123 (LATIN SMALL LETTER G WITH + CEDILLA): the former has the cedilla below, the latter above. A wrong + mapping would thus shift the base glyph 'G' up by a pixel instead of + shifting the cedilla down. + + We fix this by always giving precedence to cmap entries. + + * src/autofit/afadjust.c (af_reverse_character_map_entry_compare): Do a + secondary sort on the character code. + + (af_reverse_character_map_lookup): Adjust binary search to return the + first occurrence of an entry (i.e., the one with the lowest array index). + + (af_reverse_character_map_new)[FT_CONFIG_OPTION_USE_HARFBUZZ]: Implement + cmap priority. + +2025-04-15 Werner Lemberg + + [autofit] Reduce adjustment database lookups. + + This is also in preparation for a follow-up commit. + + * src/autofit/afadjust.h (af_lookup_vertical_separation_type, + af_lookup_tilde_correction_type): Replaced with... + (af_adjustment_database_lookup, af_reverse_character_map_lookup): + ... this. + + * src/autofit/afadjust.c (af_adjustment_database_lookup, + af_adjustment_database_lookup): Updated. + (af_lookup_vertical_separation_type, af_lookup_tilde_correction_type): + Removed. + (af_reverse_character_map_new)[FT_DEBUG_LEVEL_TRACE]: Updated. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments, + af_latin_hints_apply): Updated. + +2025-04-15 Werner Lemberg + + * src/afadjust.c (adjustment_database): Make it complete up to U+017F. + +2025-04-15 Werner Lemberg + + * src/autofit/afadjust.c (af_reverse_character_map_new): Add tracing code. + +2025-04-15 Werner Lemberg + + * src/afadjust.c: Minor fixes. + +2025-04-15 Werner Lemberg + + [autofit] Better vertical separation adjustment support. (2/2) + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Handle diacritics + with more than a single contour. + +2025-04-15 Werner Lemberg + + [autofit] Better vertical separation adjustment support. (1/2) + + Test vertical maxima instead of vertical minima to identify the highest + contour (and vice versa to identify the lowest contour). Doing so will + allow support of diacritics that consist of more than a single outline. + + This works because of the topological constraints ensured by the adjustment + database. + + * src/autofit/aflatin.c (af_find_highest_contour, + af_glyph_hints_apply_vertical_separation_adjustments): Implement it. + +2025-04-15 Werner Lemberg + + [autofit] Use new y extrema arrays. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Implement it. + +2025-04-15 Werner Lemberg + + [autofit] Provide infrastructure for storing y extrema of contours. + + We need this for better positioning support of diacritics. + + * src/autofit/afhints.h (AF_GlyphHintsRec): New fields `contour_y_minima` + and `contour_y_maxima`, together with its embedded variants. + + * src/autofit/afhints.c (af_glyph_hints_done, af_glyph_hints_reload): Handle + new arrays. + +2025-04-15 Werner Lemberg + + [autofit] Avoid crash. + + Reported as + + https://issues.oss-fuzz.com/issues/410609442 + + * src/autofit/aflatin.c (af_remove_segments_containing_point): Check `edge`. + +2025-04-14 Werner Lemberg + + [autofit] Fix just introduced heap buffer overflow + + Reported as + + https://issues.oss-fuzz.com/issues/410393975 + + * src/autofit/afadjust.c [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Synchronize with + HarfBuzz code. + +2025-04-14 Werner Lemberg + + * docs/CHANGES: Mention Craig's GSoC 2023 project. + +2025-04-14 Craig White + + [autofit] Add GSUB table handling to reverse character map generation. + + If HarfBuzz is enabled, the reverse character map generation now considers + GSUB entries when looking for glyphs that correspond to a code point. + + * src/autofit/afadjust.c (af_all_glyph_variants_helper, + af_all_glyph_variants) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New functions. + + (af_reverse_character_map_new) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call new + code. + +2025-04-14 Craig White + + [autofit] Add tilde-unflattening algorithm. + + * src/autofit/aflatin.c (af_find_highest_contour, + af_remove_segments_containing_point, + af_latin_remove_tilde_points_from_edges, af_latin_stretch_tilde, + af_latin_align_tilde): New functions. + (af_latin_hints_apply): Call tilde-unflatting code if necessary. + +2025-04-14 Craig White + + [autofit] Implement vertical separation adjustment. + + * src/autofit/aflatin.c: Include `afadjust.h`. + (af_latin_metrics_init): Call `af_reverse_character_map_new`. + (af_latin_metrics_done): New function. + + (af_move_contour_vertically, af_check_contour_horizontal_overlap, + af_glyph_hints_apply_vertical_separation_adjustments): New functions. + + (af_latin_hints_apply): Call + `af_glyph_hints_apply_vertical_separation_adjustments`. + + (af_latin_writing_system_class): Updated. + + * src/autofit/aftypes.h (AF_StyleMetricsRec): Add `reverse_charmap` field. + +2025-04-14 Craig White + + [autofit] Add code for reverse charmaps and adjustment database lookup. + + * src/autofit/aftypes.h (AF_ReverseMapEntry, AF_ReverseCharacterMap): New + structures. + + * src/autofit/afadjust.c (af_adjustment_database_lookup, + af_reverse_character_map_entry_compare, af_reverse_character_map_lookup, + af_lookup_vertical_separation_type, af_lookup_tilde_correction_type, + af_reverse_character_map_expand, af_reverse_character_map_new, + af_reverse_character_map_done): New functions. + + * src/autofit/afadjust.c: Updated. + +2025-04-14 Craig White + + [autofit] Add adjustment database. + + * src/autofit/afadjust.c, src/autofit/afadjust.h: New files. + + * include/freetype/internal/fttrace.h: Add 'afadjust' component. + + * src/autofit/autofit.c: Include `afadjust.c`. + + * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afadjust.c`. + +2025-04-14 Craig White + + [base] Make `find_unicode_charmap` a base function. + + This is needed for forthcoming changes in the auto-hinter. + + * include/freetype/internal/ftobjs.h, src/base/ftobjs.c: Updated. + +2025-04-12 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (hdigits): Removed. + + Fixes #1325. + +2025-04-12 Alexei Podtelezhnikov + + * include/freetype/internal/ftcalc.h (FT_MSB) [__CC_ARM]: Added. + +2025-04-12 Alexei Podtelezhnikov + + Typos in macros. + + * include/freetype/internal/ftcalc.h: s/_M_X86/_M_IX86/. + * src/truetype/ttinterp.c: s/_M_X86/_M_IX86/. + +2025-04-12 Alexei Podtelezhnikov + + * docs/CHANGES: Updated. + +2025-04-12 Alexei Podtelezhnikov + + [base, truetype] Silence UBSAN. + + * src/truetype/ttinterp.c (TT_MulFix14_64): Use unsigned multiplication. + * include/freetype/internal/ftcalc.h (FT_MulFix_64): Ditto. + +2025-04-12 Alexei Podtelezhnikov + + [base, truetype] Synchronize MulFix assembly. + + * include/freetype/internal/ftcalc.h (FT_MulFix_*), + src/truetype/ttinterp.c (TT_MulFix14_*): Synchronize routines. + +2025-04-10 Alexei Podtelezhnikov + + [truetype] Modernize bytecode projections. + + With 64-bit platforms widely available, it is more efficient to use + 64-bit variables readily. It results in noticeable 10% improvement + in glyph loading speed. + + * src/truetype/ttinterp.c (TT_MulFix14, TT_DotFix14) [FT_INT64]: + Prioritize available implementation with arguments adjusted based on + the use cases. + +2025-04-09 Alexei Podtelezhnikov + + [base] Update FT_MulFix inlining. + + Resolves inconsistencies in 64-bit multiplication discussed in !355. + Importantly, FT_MulFix arguments and return value is FT_Long, + whatever sizeof FT_Long is on 64-bit platforms: 8 bytes on Linux or + 4 bytes on Windows. + + * include/freetype/internal/ftcalc.h (FT_MulFix_x86_64): Removed. + (FT_MulFix_64): Generalize and prioritize the inline implementation + for all 64-bit platforms ifdef FT_INT64. + * src/base/ftcalc.c (FT_MulFix)[FT_INT64]: Call 'FT_MulFix_64'. + * src/base/ftbase.c: Include 'ftcalc.c' after the FT_MulFix callers + to enable its inlining. + +2025-04-09 Alexei Podtelezhnikov + + [base] Update FT_MulFix inlining. + Resolves inconsistencies in 64-bit multiplication discussed in !355. Importantly, FT_MulFix arguments and return value is FT_Long, whatever sizeof FT_Long is on 64-bit platforms: 8 bytes on Linux or 4 bytes on Windows. * include/freetype/internal/ftcalc.h (FT_MulFix_x86_64): Removed. (FT_MulFix_64): Generalize and prioritize the inline implementation + for all 64-bit platforms ifdef FT_INT64. * src/base/ftcalc.c (FT_MulFix)[FT_INT64]: Call 'FT_MulFix_64'. * src/base/ftbase.c: Include 'ftcalc.c' after the FT_MulFix callers to enable its inlining. + +2025-04-05 Graham Asher + + Missing header wrappers. + + * include/freetype/config/integer-types.h, src/smooth/ftgrays.h: + Add missing FT_BEGIN_HEADER and FT_END_HEADER. + * src/smooth/ftgrays.c: Cosmetics. + +2025-03-26 Alexei Podtelezhnikov + + [bdf] Clarify callback flow. + + * src/bdf/bdflib.c (bdf_line_func_t_): Modify callback prototype. + (bdf_parse_*_): Updated. + (bdf_load_font, bdf_readstream_): Delay callback initiation. + +2025-03-26 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_readstream_): Relocate. + +2025-03-26 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_is_atom_): Do not check tabs. + +2025-03-26 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (_bdf_strncmp): Macro removed, callers updated. + +2025-02-26 Alexei Podtelezhnikov + + .gitlab-ci.yml: Minor. + +2025-02-26 Tim-Philipp Müller + + * .gitlab-ci.yml: Switch to arm64 runners for macOS CI. + +2025-02-25 Behdad Esfahbod + + [sfnt/CPAL] Return early if user requested currently-set palette + + Before, we were loading a palette (again and again) even if the + same was requested. Even if the font only had one palette... + + For a font like NotoColorEmoji that has over 5000 colors in its + palette, this was dominating the COLRv1 loading times for HarfBuzz + (and I believe all other clients) because they have to set the + palette to get access to the colors. + + * src/base/ftcolor.c (FT_Palette_Select): Check the current palette. + +2025-01-29 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_start_): Move setup of properties. + +2025-01-25 Alexei Podtelezhnikov + + [bdf] Treat all comments uniformly. + + * src/bdf/bdflib.c (bdf_parse_start_): Reject fonts with initial + COMMENTs. + (bdf_parse_properties_): Skip COMMENTs so that... + (bdf_add_property_): Do not make exception for COMMENT. + (bdf_parse_glyphs_, bdf_add_comments): Updated. + +2025-01-25 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (BDF_SWIDTH_ADJ_): Remove clashing flag and update. + +2025-01-23 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_atous_): Remove unnecessary checks. + +2025-01-23 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_ato{i.ul.s.us}_]): Remove uncecessary checks. + +2025-01-23 Alexei Podtelezhnikov + + [bdf] Postpone font default char handling. + + * src/bdf/bdflib.c (bdf_parse_start_, bdf_add_property_): Delay handling + of the default char until... + * src/bdf/bdfdrivr.c (BDF_Face_Init): ... handles all other properties. + +2025-01-23 Alexei Podtelezhnikov + + [bdf] Postpone font spacing handling. + + * src/bdf/bdf.h (bdf_font_t): Remove `monowidth`. + * src/bdf/bdflib.c (bdf_parse_start_, bdf_add_property_): Delay handling + of the font spacing until... + * src/bdf/bdfdrivr.c (BDF_Face_Init): ... handles all other properties. + +2025-01-23 Alexei Podtelezhnikov + + [bdf] Postpone font ascent and descent handling. + + * src/bdf/bdflib.c (bdf_parse_start_, bdf_add_property_): Delay handling + of the font ascent and descent until... + * src/bdf/bdfdrivr.c (BDF_Face_Init): ... handles all other properties. + +2025-01-22 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_start_): Relax the header order. + + We now check that the header is complete in no specific order. + +2025-01-20 Chad Brokaw + + * src/truetype/ttgxvar.c (tt_face_vary_cvt): Fix all shared values. + + Applying cvar deltas to all shared points was incorrectly omitted. + Fixes #1314. + +2025-01-19 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_glyphs_): Fix tracing. + +2025-01-19 Alexei Podtelezhnikov + + [bdf] Tokenize input instead of listing. + + Instead of cumbersome field list mamangement, we will tokenize input + using custom `bdf_strtok_`. + + * src/bdf/bdflib.c (bdf_list_t_, bdf_list_init_, bdf_list_ensure_, + bdf_list_shift_, bdf_list_join_, bdf_list_split_, + bdf_set_default_spacing_): Removed. + (bdf_strtok_): New function which NUL-terminates the first token at + the delimiter position and returns the next token that follows + consequtive delimiters. + (bdf_parse_*_, bdf_load_font): Updated. + + * docs/CHANGES: Claim overall 75% performance improvement. + +2025-01-18 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_start_): Prevent another STARTPROPERTIES. + + Only one STARTPROPERTIES was permitted in the old flow preventing + leaks and overflows. + + See https://issues.oss-fuzz.com/issues/389968131 + https://issues.oss-fuzz.com/issues/390464875 + +2025-01-17 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_start_): Do not overwrite flags. + +2025-01-16 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_readstream_): Skip all control characters. + + This agrees with specifications and makes the code a lot simpler. + +2025-01-16 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_start_): Reserve space for artificial properties. + +2025-01-15 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_add_property_): Add extra protection. + + See https://issues.oss-fuzz.com/issues/389972472 + https://issues.oss-fuzz.com/issues/389968131 + +2025-01-15 Alexei Podtelezhnikov + + * src/bdf/bdflib.c: Clean up. + +2025-01-15 Alexei Podtelezhnikov + + [bdf] Use flags instead of options. + + * src/bdf/bdf.h (bdf_options_t): Removed. + (BDF_KEEP_COMMENTS, BDF_KEEP_UNENCODED, BDF_CORRECT_METRICS): Updated + to avoid collisions with the other parsing flags. + * src/bdf/bdfdrivr.c (BDF_Face_Init): Use default flags explicitly. + * src/bdf/bdflib.c (bdf_load_font): Use flags as an argument to + initialize the parser. + (bdf_set_fedault_spacing_): Default to BDF_PROPORTIONAL explicitly. + (bdf_parse_*_): Updated. + +2025-01-15 Alexei Podtelezhnikov + + [bdf] Adjust parsing flow and CHARS handling. + + * src/bdf/bdflib.c (bdf_readstream_): Remove CHARS exception. + (bdf_parse_glyphs_): Move glyphs allocation... + (bdf_parse_properties_): and missing ascent and descent handling... + (bdf_parse_start_): ...to here under CHARS. + +2025-01-15 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_readstream_): Tweak variables and loop design. + +2025-01-13 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_glyphs_): Free unused glyph_name. + + See https://issues.oss-fuzz.com/issues/389330334. + +2025-01-13 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_glyphs_): Store glyph as soon as possible. + +2025-01-12 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_glyphs_): Avoid possible leak. + +2025-01-12 Alexei Podtelezhnikov + + [bdf] Speed up bitmap parsing. + + A dedicated parser of bitmap data with minimal error checking and + no string comparisons helps to improve performance. + + * src/bdf/bdflib.c (bdf_parse_bitmap_): New dedicated bitmap parser. + (bdf_parse_glyphs_): Pass to `bdf_parse_bitmap_` on BITMAP. + +2025-01-12 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (a2i): Formatting. + +2025-01-11 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_*_): Minor improvements. + +2025-01-11 Alexei Podtelezhnikov + + * src/bdf/bdf.h (bdf_font_t): Correct `internal` type. + * src/bdf/bdflib.c (*): Update users. + +2025-01-10 Alexei Podtelezhnikov + + * builds/windows/ftsystem.c: Fix ancient condition. + +2025-01-10 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_start_): Fix tracing labels. + +2025-01-09 Alexei Podtelezhnikov + + * MSBuild.rsp: Force console color for mintty. + +2025-01-09 Heiko Lewin + + * CMakeLists.txt: Use modern IMPORTED targets. + + This resolves build problems with newer libPNG versions by switching + to using IMPORTED CMake targets for common libraries where provided. + To do this the required CMake version is raised to version 3.12. + Doing this seems justified as using IMPORTED targets is a cleaner + and more powerful solution that can leverage advanced and CMake-specific + features that may be utilized by the referred dependencies' CMake modules. + + Resolves #1311. + +2025-01-08 Alexei Podtelezhnikov + + [cff] Remove size/slot checks. + + After the previous commit, cff_glyph_load is no longer called + without first checking for valid size and glyph objects in + FT_Glyph_Load and these checks can be removed downstream. + + * src/cff/cffdrivr.c (cff_glyph_load): Remove `size` and `glyph` checks. + * src/cff/cffgload.c (cff_slot_load): Ditto. + +2025-01-08 Alexei Podtelezhnikov + + * src/cff/cffdrivr.c (cff_get_advances): Do only fast advances. + + Otherwise, let TT_Get_Advances fall back on cff_load_glyph to do + slow advances. This avoids unchecked access to cff_load_glyph and + this is how tt_get_advances is implemented. + +2025-01-04 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Load_Glyph): Consolidate flag setting. + +2025-01-04 Alexei Podtelezhnikov + + Delay FT_GLYPH_FORMAT_OUTLINE assignmets. + + This assignmets used to be done prematurely before errors were checked + and outlines were actually loaded. Delaying the assignment provides + certain protection against careless usage of malformed input that + should now remain FT_GLYPH_FORMAT_NONE. + + * src/cff/cffgload.c (cff_slot_load): Ditto. + * src/cid/cidgload.c (cid_slot_load_glyph): Ditto. + * src/pfr/pfrobjs.c (pfr_slot_load): Ditto. + * src/truetype/ttgload.c (TT_Load_Glyph): Ditto. + * src/type1/t1gload.c (T1_Load_Glyph): Ditto. + +2025-01-03 Alexei Podtelezhnikov + + * builds/compiler/gcc-dev.mk: Silence some warnings. + +2025-01-02 Alexei Podtelezhnikov + + Remove superfluous outline zeroing. + + This is already done by `ft_glyphslot_clear`. + + * src/cff/cffgload.c (cff_slot_load): Do not zero outline fields. + * src/cid/cidgload.c (cid_slot_load_glyph: Ditto. + * src/pfr/pfrobjs.c (pfr_slot_load): Ditto. + * src/truetype/ttgload.c (load_sbit_image): Ditto. + * src/type1/t1gload.c (T1_Load_Glyph): Ditto. + +2025-01-02 Alexei Podtelezhnikov + + * src/truetype/ttobjs.c: Abbreviate tracing. + +2025-01-02 Alexei Podtelezhnikov + + * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Refactor `flip`. + +2025-01-01 Alexei Podtelezhnikov + + [truetype] Consolidate bitmap strike handling. + + * src/truetype/ttgload.c (TT_Load_Glyph): Relocate omitted whitespace + strike handling from here... + (load_sbit_image): ... to here. + +2024-12-31 Alexei Podtelezhnikov + + [truetype] Ingnore FT_LOAD_NO_BITMAP in bitmap-only fonts. + + For consistency with other bitmap-only fonts, we should ignore this + flag of the font is not scalable. + + * src/truetype/ttgload.c (TT_Load_Glyph): Check if face is scalable + when checking for FT_LOAD_NO_BITMAP. + + * docs/CHANGES: Start new chapter wtith this change. + +2024-12-16 Ben Wagner + + [ftstroke] Fix invalid pointer assignement to `arc` + + In `FT_Stroker_ConicTo` and `FT_Stroker_CubicTo` there is a `bez_stack`. + `arc` is initialized with `arc = bez_stack` and is never set to point + into any different object. The main loop looks like `while ( arc >= + bez_stack )` which is depending on a later `arc -= 2` (or `arc -= 3`) to + make `arc` point to before `bez_stack`. However, using pointer + subtraction to make `arc` point outside the array is undefined behavior, + and attempting to use the value in the loop predicate is "very" + undefined behavior. (C99 "Additive operators" 6.5.6.8.) + + This particular undefined behavior was discovered as either hangs or + MemorySantizer issues after "[InstCombine] Infer nuw for gep inbounds + from base of object" [0]. With this change, clang can infer that `arc` + must always point into the `bez_stack` object and therefore cannot be at + a "negative index" so the predicate is always true. + + [0] https://github.com/llvm/llvm-project/commit/e21ab4d16b555c28ded307571d138f594f33e325 + + * src/base/ftstroke.c (FT_Stroker_ConicTo, FT_Stroker_CubicTo): test + loop exit condition (there are no more arcs to process) before + decrementing `arc` + + Fixes: #1307 + +2024-12-04 Ben Wagner + + [cff] Fix leak of cmap data + + When `sfnt->load_face` succeeds it has already loaded any (optional) + cmap data. As a result, a subsequent call to `sfnt->load_cmap` will + overwrite the cmap data pointer with a new copy of the data but not free + the old, leading to a leak. + + This is a fix for "* src/cff/cffobjs.c (cff_face_init): Better handling + of Type0 fonts.". This still allows the cmap to be missing but avoids + the leak by only calling `sfnt->load_cmap` when there is no `head` + table (the font data is not being loaded as OpenType/CFF). + + * src/cff/cffobjs.c (cff_face_init): Fix leak + + Fixes: #1306 + +2024-11-06 Honnesh Ramachandra + + * src/cff/cffobjs.c (cff_face_init): Better handling of Type0 fonts. + + This issue relates to the PDF specification and its usage of CFF-based + embedded Type0 fonts. For Type0 fonts containing CID-keyed descendant + CFF-based fonts, the glyph index is the CID present in the content stream. + As a result, there is no requirement for a 'cmap' table to be present in the + font since the glyph indices are derived directly from the CIDs. FreeType + throws an error when it doesn’t find a 'cmap' table for such an Open Type + font containing CFF outlines. This commit relaxes this requirement for a + 'cmap' table for such fonts. + +2024-10-18 suzuki toshiya + + Download the latest gnu-config files in `make dist`. + + * builds/toplevel.mk: In `make dist`, checkout gnu-config + git repository at savannah, copy the latest versions of + `config.guess` and `config.sub` to builds/unix/. Also + the latest version of `gitlog-to-changelog` is used to + generate `ChangeLog`. + +2024-10-16 Behdad Esfahbod + + Move generic destroy to later in the face and size destruction. + + * src/base/ftobjs.c (destroy_size, destroy_face): This is such that the + generic destroy can be used to call `FT_Done_Library`. For that to work, + it needs to call it *after* having removed the face from the respective + module. + +2024-10-14 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (load_truetype_glyph): Rearrange. + +2024-10-14 suzuki toshiya + + * autogen.sh: Fix for Solaris 10. + + o Replace `test -e` by `test -d` (directory) and `-h` + (symlink), because pre-POSIX /bin/sh of Solaris 10 + does not support `test -e`. + o Replace the combination of `head` and `sed ...` by + single sed command `sed -n 1...p`. GNU libtoolize + with Solaris 10 /bin/sh complains "Broken Pipe" for + the closure of stdout by `head`. Let `sed` receive + all stdout and discard. + +2024-10-13 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c (gray_convert_glyph): Clear stack pointers. + + Fixes a dangling pointer warning, see #1299. + +2024-10-13 suzuki toshiya + + apinames: Fix a buffer overrun for VMS platform. + + Some output formats may rewrite symbol names during the output, + like the concatenation of "64__" suffix on VMS. To estimate + sufficient size to store symbol name, pass the output format + info to `names_add`. For VMS, `names_add` allocates longer + buffer to append "64__". + + * apinames.c (SUFFIX_VMS_64ADDR): New macro of "64__". + (main): Pass the format info to `read_header_file`. + (read_header_file): Pass the format info to `names_add`. + (names_add): Receive the format info, and reserve the symbol + name buffer 4 byte longer in the case of VMS, to append the + suffix in `names_dump`. + +2024-10-13 suzuki toshiya + + apinames: Fix out-of-scope reference of a static array. + + * apinames.c (names_dump): For WATCOM_LBC format, the + DLL name with no suffix is constructed on a static + array temp[], but the scope is closed before use it. + The declaration of temp[] is moved to the wider + scope for the dumping part to refer it. + +2024-10-12 Alexei Podtelezhnikov + + * vms_make.com: Format rules. + + Use tabs in rules only à la Makefile. + +2024-10-12 Marian Klymov + + * meson.build: Define DLL_EXPORT for shared library only. + + Fixes #1298. + +2024-10-12 Benoit Pierre + + * meson.build: Minor improvements. + +2024-10-12 Benoit Pierre + + * meson.build: Fix `bzip2` option handling. + +2024-10-12 Benoit Pierre + + * meson.build: Add support for compiling with error strings. + * meson_options.txt: Document it. + +2024-10-10 suzuki toshiya + + Fix help message of apinames. + + * src/tools/apinames.c: The first header file must be + given after the options. All arguments after the + first header file are dealt as header files to be + parsed, regardless with their leading "-". + + For example, + "apinames include/freetype/freetype.h -dFREETYPE.DLL" + warns "unable to open -dFREETYPE.DLL". + + Thus, the "header1" must be given after the arguments + to be parsed as the options. + +2024-09-21 Jouk Jansen + + Minor fixes for OpenVMS. + + * vms_name.com: Suppress a warning with the latest Clang compiler. + + * builds/vms/apinames_vms.bash: Use absolute path to avoid dependency on the + environment. + +2024-09-07 Alexei Podtelezhnikov + + * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Respect metrics_only. + + Also fixes recursive flip. + +2024-09-06 Alexei Podtelezhnikov + + * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Tweak loop. + +2024-09-06 Andrew Murray + + [sfnt] Support sbix graphicType 'flip'. + + * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Currently undocumented by + Apple, this flips the bitmap data horizontally. It is used on macOS in + Apple Color Emoji; 19.4d6e1; 2024-02-05 (file `Apple Color Emoji.ttc`). + + Fixes issue #1282. + +2024-09-05 suzuki toshiya + + Add `clang` to host compiler candidates in cross building. + + * builds/unix/configure.raw: In cross building, + `clang` is tried if there is no `gcc`, nor `cc`. + +2024-09-05 suzuki toshiya + + Improve the build rule for `apinames`. + + * builds/unix/configure.raw: copy `CFLAGS` & + `LDFLAGS` values to `CFLAGS_BUILD` & + `LDFLAGS_BUILD`, in a self-hosting case. + + * builds/unix/unix-cc.in: set `CCexe_CFLAGS` & + `CCexe_LDFLAGS` by `CFLAGS_BUILD` & + `LDFLAGS_BUILD`. + + In some confused environments, simple building + like `cc -o apinames apinames.c` is no longer + able to build an executable running on the host. + + The validity of `CC` is tested with consideration + of `CFLAGS` and `LDFLAGS`, thus, duplicating + `CFLAGS` & `LDFLAGS` to `CCexe_CFLAGS` & + `CCexe_LDFLAGS` (via XXX_BUILD) would be slightly + safer in a self-hosting build. + + Fixes the issue #1296. + +2024-08-26 Alexei Podtelezhnikov + + * src/sfnt/ttcmap.c (tt_cmap*_get_info): Remove casting. + +2024-08-25 Alexei Podtelezhnikov + + * include/freetype/ftimage.h (FT_Bitmap): Describe empty bitmap. + +2024-08-14 luz paz + + Fix various typos. + +2024-08-13 Alexei Podtelezhnikov + + * messon.build: Install `include/freetype/ftlogging.h`. + + Fixes #1292. + +2024-08-12 Werner Lemberg + + * Version 2.13.3 released. + ========================== + + Tag sources with `VER-2-13-3'. + + * docs/VERSION.TXT: Add entry for version 2.13.3. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.13.2/2.13.3/, s/2132/2133/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. + + * builds/unix/configure.raw (version_info): Set to 26:2:20. + * CMakeLists.txt (VERSION_PATCH): Set to 3. + +2024-08-12 Werner Lemberg + + * meson.build: Install `freetype2.m4`. + + Fixes #1290. + +2024-08-12 Werner Lemberg + + * src/*/*: Fix C++ compilation; fix clang warnings. + +2024-08-12 Werner Lemberg + + * subprojects/*.wrap: Updated. + +2024-08-12 Werner Lemberg + + Various minor documentation or formatting fixes. + +2024-08-07 Werner Lemberg + + tttables.h (FT_Get_CMap_Format): Minor documentation improvement. + +2024-08-05 Alexei Podtelezhnikov + + * src/truetype/ttgxvar.c (ft_var_readpacked*): Minor. + +2024-08-05 Alexei Podtelezhnikov + + * src/base/ftstream.c (FT_Stream_ReadFields): Switch to `FT_Offset`. + +2024-08-02 Alexei Podtelezhnikov + + * src/winfonts/winfnt.c (fnt_face_get_dll_font): Unwrap arithmetic. + +2024-08-02 Alexei Podtelezhnikov + + * src/base/ftstream.c (FT_Stream_ReadFields): Update condition. + +2024-08-02 Alexei Podtelezhnikov + + [truetype/GX] Use more robust conditions. + + * src/truetype/ttgxvar.c (ft_var_readpacked{points,deltas}): Rewrite + conditions to avoid undefined behavior. + +2024-07-31 Alexei Podtelezhnikov + + [truetype/GX] Read points and deltas more carefully. + + Hopefully fixes newly introduced buffer overflows: + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=70807 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=70809 + + * src/truetype/ttgxvar.c (ft_var_readpacked{points,deltas}): Explicitly + check stream frame limits and modify run counting. + +2024-07-30 Alexei Podtelezhnikov + + [truetype/GX] Read stream more aggressively. + + With ample checks against the table size, we should be able to use + macros without the limit checks and functional calls. + + * src/truetype/ttgxvar.c (ft_var_readpacked{points,deltas}): + Use FT_NEXT_* instead of FT_GET_*. + +2024-07-29 Alexei Podtelezhnikov + + * src/sfnt/ttload.c (tt_face_load_name): Shorten dereference. + +2024-07-29 Alexei Podtelezhnikov + + * src/autofit/afmodule.c (af_autofitter_load_glyph): Shorten deref. + +2024-07-29 Alexei Podtelezhnikov + + [bdf,pcf,winfonts,sfnt] Remove barely used marcros. + + * include/freetype/internal/ftobjs.h (FT_FACE_SIZE, FT_SIZE_FACE): + Removed. + * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Updated. + * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto. + * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto + * src/sfnt/ttbdf.c (tt_face_find_bdf_prop): Ditto. + +2024-07-27 Dan Rosser + + * include/freetype/internal/ftcalc.h (FT_MSB)[_M_ARM64EC]: Added. + +2024-07-19 Werner Lemberg + + * src/truetype/ttobjs.c (tt_size_run_prep): Correct scaling of CVT values. + + This reverts the scaling behaviour introduced in commit 37580053. + + Fixes issue #1005. + +2024-06-29 Philip Race + + * psobjs.c (ps_table_add): Check length before calling `FT_MEM_CPY`. + + Fixes issue #1280. + +2024-06-29 Don Olmstead + + CMakeLists.txt: Respect FT_DISABLE_ZLIB value + + The CMake build uses `find_package` to look for dependencies. Before calling `find_package` it looks to see if the dependency was disabled. If not the associated `_FOUND` variable will be set. This value is then checked to determine if the dependency is added. + + However `find_package(PNG)` calls `find_package(ZLIB)` within its find module. So in the case of `FT_DISABLE_ZLIB=TRUE` and `FT_DISABLE_PNG=FALSE` the `ZLIB_FOUND` value can be set and even though `FT_DISABLE_ZLIB` is turned on. + + Unset the value of `ZLIB_FOUND` after the call to `find_package(PNG)` so the value is only set when `FT_DISABLE_ZLIB` is turned off. + +2024-06-26 Werner Lemberg + + Make 'multi' build work again. + + * src/psaux/psobjs.c: Include `psft.h`. + + * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttgpos.c`. + + Fixes issue #1284. + +2024-06-23 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (load_truetype_glyph): Unsigned fix. + +2024-06-21 Alexei Podtelezhnikov + + Use unsigned tags `FT_Outline`. + + This change comes along with 2a7bb4596f56 ans is only meant to reduce + pointer casting in the code. + + * include/freetype/ftimage.h (FT_Outline): Do it. + * src/*: Update `FT_Outline` users. + +2024-06-21 Ben Wagner + + [ttgxvar] Avoid "applying zero offset to null pointer" + + In C it is undefined behavior to do arithmetic on a null pointer, including + adding zero. When using NotoSansKhmer[wdth,wght].ttf UBSAN produces a report + like + + ttgxvar.c:1052:31: runtime error: applying zero offset to null pointer + + when adding zero to `varData->deltaSet` (which is null) to produce `bytes`. + Protect against all the potential issues of this kind by returning early if + `varData->regionIdxCount == 0`. + + * src/truetype/ttgxvar.c (tt_var_get_item_delta): early return on no regions + +2024-06-21 Alexei Podtelezhnikov + + Use unsigned point and contour indexing in `FT_Outline`. + + This doubles the number or allowed points, see + https://github.com/harfbuzz/harfbuzz/issues/4752 + + Although it is hardly practical to use more than 32767 points, + other font engines seem to support it. + + * docs/CHANGES: Announce it. + * include/freetype/ftimage.h (FT_Outline): Do it and update limits. + * src/*: Update `FT_Outline` users. + +2024-06-20 Alexei Podtelezhnikov + + * src/pfr/pfrgload.c (pfr_glyph_curve_to): Avoid casting. + +2024-06-19 Alexei Podtelezhnikov + + * src/base/ftgloadr.c (FT_GlyphLoader_Prepare): Minor refactoring. + +2024-06-18 Alexei Podtelezhnikov + + [base, autofit, psaux] Remove unnecessary casting. + + * src/autofit/afhints.c (af_glyph_hints_reload): Remove (short) casting. + * src/base/ftgloadr.c (FT_GlyphLoader_Add): Ditto. + * src/psaux/psobjs.c ({t1,cff,ps}_builder_{add,close}_contour): Ditto. + +2024-06-18 Alexei Podtelezhnikov + + * include/freetype/ftimage.h: Explain standard types. + +2024-05-29 Ben Wagner + + [ttgxvar] Replace tabs with spaces + + Also clarify comments around conversion and clamping. + + * src/truetype/ttgxvar.c (ft_var_to_normalized): doit + +2024-05-27 Alexei Podtelezhnikov + + [truetype/GX] Consolidate memory allocations. + + * src/truetype/ttgxvar.c (tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): + Allocate and split bigger memory blocks, avoid unnecessary zeroing, + do not copy shared tuples, revise error exit paths. + +2024-05-26 Alexei Podtelezhnikov + + Whitespace. + +2024-05-24 Alexei Podtelezhnikov + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Reduce checks. + +2024-05-24 Alexei Podtelezhnikov + + Revert "[truetype] Reduce allocation scope." + + This reverts commit 9ff4153cbfd60491f11bb56905ce6e20e94d23c7. + +2024-05-23 Alexei Podtelezhnikov + + [truetype] Reduce allocation scope. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Reduce scope + of `points_org` and 'points_out`. + +2024-05-23 Alexei Podtelezhnikov (ÐлекÑей Подтележников) + + * .gitlab-ci.yml: Disable UWP compilation. + +2024-05-23 Alexei Podtelezhnikov + + * include/freetype/internal/ftmemory.h (FT_MEM_DUP): Fix g++ error. + +2024-05-21 Alexei Podtelezhnikov + + [cff, truetype] Validate variation axes immediately. + + Instead of validating variation axes in every access, OpenType specs + suggest that peak = 0 be used to tag invalid ranges. This implements + just that once during loading. + + * src/cff/cffload.c (cff_blend_build_vector): Move the range checks... + (cff_vstore_load): ... here. + * src/truetype/ttgxvar.c (tt_var_get_item_delta): Ditto... + (tt_var_load_item_variation_store): ... ditto. + +2024-05-21 Alexei Podtelezhnikov + + [cff, truetype] Rearrange variation range checks. + + This should achieve quicker results for common cases. + + * src/cff/cffload.c (cff_blend_build_vector): Rearrange conditionals. + * src/truetype/ttgxvar.c (tt_var_get_item_delta): Ditto. + +2024-05-21 Alexei Podtelezhnikov + + * src/truetype/ttgxvar.c (tt_var_get_item_delta): Align with specs. + +2024-05-21 Alexei Podtelezhnikov + + * src/truetype/ttgxvar.c (tt_var_get_item_delta): Minor refactoring. + +2024-05-21 Alexei Podtelezhnikov + + [cff] Optimize the blend vector computations. + + * src/cff/cffload.c (cff_blend_build_vector): Use FT_MulDiv and skip + multiplying by 1. + +2024-05-20 Alexei Podtelezhnikov + + [bdf] Use concise macros. + + * src/bdf/bdflib.c (bdf_create_property): Use FT_STRDUP. + (bdf_parse_glyphs_, bdf_parse_start_): Use FT_DUP for brevity. + +2024-05-20 Alexei Podtelezhnikov + + [cache] Use FT_DUP to duplicate data. + + * src/cache/ftcsbits.c (ftc_sbit_copy_bitmap): Use concise FT_MEM_DUP. + +2024-05-20 Alexei Podtelezhnikov + + [truetype, type1] Use FT_DUP to duplicate data. + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use concise FT_DUP. + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ditto. + * src/type1/t1load.c (parse_subrs): Ditto. + +2024-05-18 Alexei Podtelezhnikov + + * builds/windows/ftsystem.c: Use _WINRT_DLL to check for UWP. + + Fixes compilation using Windows GDK, reported by Erin Melucci. + +2024-05-13 Alexei Podtelezhnikov + + * include/freetype/ftmm.h: Include `freetype.h`. + + Reported by Ben Wagner, see !326. + +2024-05-13 Alexei Podtelezhnikov + + [type1/MM] Safer handle arrays of different types. + + * src/type1/t1load.c (parse_blend_design_map): Separately allocate... + (T1_Done_Blend): ... and free `design_points` and `blend_points`. + +2024-05-12 Alexei Podtelezhnikov + + * src/type1/t1load.c (parse_blend_design_map): Add risky cast. + +2024-05-12 Alexei Podtelezhnikov + + * docs/CHANGES: Mention the last commit. + +2024-05-12 Alexei Podtelezhnikov + + [type1/MM] Tighten headers. + + * include/freetype/internal/t1types.h: Host PS_DesignMap and PS_Blend. + * include/freetype/ftmm.h: Host and document TT_MAX_MM_XXX. + * include/freetype/t1tables.h: Remove them from here. + +2024-05-11 Alexei Podtelezhnikov + + * src/pshinter/pshrec.c (ps_hints_stem): Correct argument. + +2024-05-08 Ben Wagner + + [psaux] Fix location and type order in initializer + + `T1_FIELD_ZERO` is used to zero initialize a `T1_FieldRec`. + `T1_FIELD_ZERO` is currently initilizing `T1_FieldRec::location` with a + `T1_FieldType` and `T1_FieldRec::type` with a `T1_FieldLocation`. This + was detected with `-Wenum-conversion`. + + * include/freetype/internal/psaux.h (T1_FIELD_ZERO): correct order of + initalizers + +2024-05-08 Alexei Podtelezhnikov + + * include/freetype/internal/psaux.h: Fix g++ warning. + + Reported by Hin-Tak Leung. + +2024-05-08 Ben Wagner + + [colr] Avoid overflow in range checks + + In 32 bit builds `FT_ULong` is 32 bits and can silently overflow when a + large number is read into one and then it is summed or multiplied with + another number. Checks for range overflow must be written so that they + themselves do not overflow. Also ensure that the table_size is always the + first part of the range check and consistently use `<` or `<=`. + + * src/sfnt/ttcolr.c (tt_face_load_colr): Avoid overflow. + (find_base_glyph_v1_record): Remove old work-around. + + Bug: https://issues.chromium.org/issues/41495455 + Bug: https://issues.chromium.org/issues/40945818 + +2024-05-06 Werner Lemberg + + .mailmap: Fix entry for Ben Wagner. + +2024-05-06 Alexei Podtelezhnikov + + [sdf, bsdf] Use shared FT_SqrtFixed. + + FT_SqrtFixed (95b0fe2a6dff) is faster and does not overflow. + + * src/sdf/ftsdfcommin.h (square_root): Replace with a macro. + * src/sdf/ftsdfcommin.c (square_root): Remove function. + +2024-05-04 Alexei Podtelezhnikov + + * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Remove FT_ABS. + + See + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68679 + +2024-05-03 Alexei Podtelezhnikov + + * src/sfnt/sfwoff2.c (woff2_open_font): Fix copy-paste typo. + +2024-05-03 Alexei Podtelezhnikov + + [woff,woff2] Limit the number of tables and use FT_MSB. + + The upper limit of 4095 is implied by the SFNT header format + where the multiplication by 16 would overflow without it. + + * src/sfnt/sfwoff.c (woff_open_font): Updated. + * src/sfnt/sfwoff2.c (woff2_open_font): Ditto. + +2024-05-02 Ben Wanger + + [woff2] Disallow zero table font entries + + The existing code already disallows zero table woff2 overall, but still + allows for individual CollectionFontEntry to create font instances with + zero tables. Such fonts are not useful so error early. + + This also fixes an MSAN discovered issue where if a CollectionFontEntry + numTables is zero then the sfnt_header was not fully initialized. + + * src/sfnt/sfwoff2.c (woff2_open_font): error on zero tables, always + initalize sfnt_header + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68384 + +2024-05-02 Alexei Podtelezhnikov + + [sfnt] Use faster macros in checksums. + + * src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Use FT_NEXT_XXX. + * src/sfnt/sfwoff2.c (compute_ULong_sum): Use macros. + +2024-05-01 Alexei Podtelezhnikov + + * src/sfnt/sfwoff2.c (compute_ULong_sum): Clean up. + +2024-04-30 Alexei Podtelezhnikov + + * docs/CHANGES: Updated. + +2024-04-30 Alexei Podtelezhnikov + + * src/cache/ftccache.c (FTC_Cache_RemoveFaceID): Remove nodes instantly. + +2024-04-29 Alexei Podtelezhnikov + + [cache] Remove unused `node_reset`. + + * src/cache/ftcmru.h (FTC_MruListClassRec): Remove `node_reset` field. + * src/cache/ftcbasic.c (ftc_basic_{image,sbit}_family_class): Ditto. + * src/cache/ftcmanag.c (ftc_face_list_class): Ditto. + (ftc_size_node_reset): Remove function. + * src/cache/ftcglyph.h: Fix comment. + +2024-04-29 Alexei Podtelezhnikov + + * src/cache/ftcmru.c (FTC_MruList_New): Do not reset nodes. + + Resetting of the size nodes can crash, if a parent face purge happens + simultaneously and destroys the node. It is safer to create a new node. + Fixes #1270, reopened with a separate issue. + +2024-04-28 Alexei Podtelezhnikov + + * src/cache/ftcimage.c (ftc_inode_weight): Formatting. + +2024-04-28 Alexei Podtelezhnikov + + Document the SDF spread further. + +2024-04-23 Alexei Podtelezhnikov + + * include/freetype/ftdriver.h: s/truncated/clamped/. + +2024-04-23 Alexei Podtelezhnikov + + Improve SDF documentation. + +2024-04-21 Alexei Podtelezhnikov + + [cache] Minor tweaks. + + * src/cache/ftcimage.c (ftc_inode_free): Remove unnecessary check. + * src/cache/ftcmanag.c (FTC_Manager_Done): Do not zero before freeing. + +2024-04-21 Alexei Podtelezhnikov + + * src/cache/ftcbasic.c: Cosmetic harmonization. + +2024-04-20 Alexei Podtelezhnikov + + [cache] Reduce type mismatches. + + * src/cache/ftcbasic.c (FTC_BasicAttrRec): Match type of `load_flags` + to its main purpose in `FT_Load_Glyph`. + (FTC_ImageCache_Lookup{,Scaler},FTC_SBitCache_Lookup{,Scaler}): Updated. + +2024-04-19 Alexei Podtelezhnikov + + * src/cache/{ftcbasic.c,ftccmap.c}: Use FTC_INLINE. + +2024-04-19 Alexei Podtelezhnikov + + [cache] Tweak headers. + + * src/cache/ftccback.h: Include less and move `ftc_node_destroy`... + * src/cache/ftccache.h: ... to here. + * src/cache/ftcmanag.c: Include less. + +2024-04-19 Alexei Podtelezhnikov + + * src/cache/ftcglyph.c [!FTC_INLINE]: Fix compilation. + +2024-04-17 Alexei Podtelezhnikov + + [cache] Improve MRU list management. + + * src/cache/ftcmru.c (FTC_MruList_Remove): Cosmetic. + (FTC_MruList_New): Accept only valid changes. + * src/cache/ftcmanag.c (ftc_size_node_done): Simplify. + +2024-04-17 Alexei Podtelezhnikov + + [cache] Fix error handling. + + Manipulate the cache after a face is requested or a size is looked up + successfully. Fixes #1270. + + * src/cache/ftcmanag.c (ftc_size_node_init, ftc_size_node_reset, + ftc_face_node_init): Check for errors before accepting a change. + * src/cache/ftcmru.c (FTC_MruList_New): Do nothing if reset fails. + +2024-04-14 Alexei Podtelezhnikov + + [smooth] Switch to vertical bisections. + + With horizontal bisections, the smallest section is a whole single + scanline. Almost horizontal lines or other complex scanlines can + easily overflow the rendering pool. Switching to vertical bisections + splits the scanlines and should rule out the overflows. Fixes #1269. + + * src/smooth/ftgrays.c (gray_convert_glyph): Bisect vertically. + +2024-04-14 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c (gray_convert_glyph): Refactor for convenience. + +2024-04-14 Alexei Podtelezhnikov + + [smooth] Store persistent clipping box. + + * src/smooth/ftgrays.c (gray_TWorker, gray_raster_render): Add and set + the new structure field. + (gray_convert_glyph): Use it. + +2024-03-08 Ben Wanger + + [colr] Ensure enough bytes for PaintColrLayers + + * src/sfnt/ttcolr.c (read_paint): check that there are five additional + bytes to be read when reading PaintColrLayers. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66566 + +2024-03-08 Ben Wagner + + Avoid n^2 scanning for binary data. + + When creating a CID parser the location of the 'StartData' or '/sfnts' + tokens needs to be known. However, the token parser requires that the + entire document be in memory and flattening the entire stream into memory is + to be avoided. + + To avoid forcing the entire stream into memory, previously this code would + scan through the stream looking for 'StartData' or '/sfnts' as strings. + However, these strings could have been in a comment or string token, so the + stream would be read into memory up to that point and the parser run to + check that these strings were actually tokens. This forced a parser restart + from the beginning each time; as a result, data with many 'StartData' + non-tokens would take n^2 time to check. + + * src/cid/cidparse.c (cid_parser_new): Change algorithm to make the initial + scan look for the last possible 'StartData' or '/sfnts' string in the + stream. The stream is read forward instead of backward as a typical normal + CID font will have one 'StartData' toward the beginning of the data and it + it much faster to read the data from beginning to end instead of end to + beginning. For memory-based fonts the limit is set to the end of the stream + since the stream is already in memory. Then the parser is run once to look + for 'StartData' or '/sfnts' tokens. If they are found the parser is re-set + to reflect this new information. + + Reported as + + https://issues.chromium.org/issues/40201695 + +2024-03-06 Alexei Podtelezhnikov + + * CMakeLists.txt: Bump required version to 3.5. + + Fixes #1267. + +2024-03-04 Jordan Williams + + meson: Use the standard dependency mechanism to find bzip2 + + This follows standard conventions in Meson by using the pkg-config file. + This change allows Conan to switch to the Meson build system. + +2024-02-29 Ben Wanger + + [cff, truetype] Always set up default variable instance. + + For default variable instances `cff_face_init` did not set the blend. This + mostly worked as later use of the unset blend produced the default + variation. However, if a user called `TT_Get_MM_Var` the blend would be + partially set up, but not fully. In particular the number of axes, the axis + definitions, and the instance locations would be set up, but not the current + instance location (`coords` and `normalizedcoords`). This could lead to the + default instances of CFF2 fonts erroring on any use of `blend`. + + Ensure the default variable instance is fully set up by always calling + `FT_Set_Named_Instance` on a variable face. + + * src/cff/cffobjs.c (cff_face_init): Call `FT_Set_Named_Instance` on + default instances. + * src/truetype/ttobjs.c (tt_face_init): Ditto. + + Fixes #1268. + +2024-02-23 Werner Lemberg + + * src/truetype/ttgxvar.c (ft_var_to_normalized): Integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66543 + +2024-01-27 Alexei Podtelezhnikov + + Update all copyright notices. + +2024-01-27 Alexei Podtelezhnikov + + * src/sfnt/ttgpos.c (tt_gpos_get_glyph_class): Fix warning C4018. + +2024-01-27 David Saltzman + + Add support for kerning from 'GPOS' tables. + + This commit adds support for kerning from 'GPOS' tables, while maintaining + support for basic 'kern' tables. `FT_HAS_KERNING` will be true for a font + with either available and `FT_Get_Kerning` will still use the basic 'kern' + table data if avilable, otherwise check the GPOS 'kern' feature. + + This feature is disabled by default; it can be enabled with the + `TT_CONFIG_OPTION_GPOS_KERNING` flag. + + Only basic kerning (pair positioning with just an x advance) is supported + from the GPOS layout features; support for that was added to make the + existing `FT_Get_Kerning` API more consistently functional. FreeType does + not intend to extend itself to further GPOS functionality though; a + higher-level library like HarfBuzz can be used instead for that. + + * include/freetype/config/ftoption.h, include/devel/ftoption.h + (TT_CONFIG_OPTION_GPOS_KERNING): New configuration option. + + * include/freetype/internal/fttrace.h: Add `ttgpos` trace handler. + + * include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_gpos` and + `get_gpos_kerning` fields. + (FT_DEFINE_SFNT_INTERFACE): Updated. + + * include/freetype/internal/tttypes.h: Include `fttypes.h`. + (TT_FaceRec) [TT_CONFIG_OPTION_GPOS_KERNING]: Add `gpos_table` and + `gpos_kerning_available` fields. + + * src/sfnt/ttgpos.c, src/sfnt/ttgpos.h: New files. + + * src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GPOS_KERNING]: Include `ttgpos.h`. + (sfnt_interface): Updated. + + * src/sfnt/sfnt.c: Include `ttgpos.c`. + + * src/sfnt/sfobjs.c [TT_CONFIG_OPTION_GPOS_KERNING]: Include `ttgpos.h`. + (sfnt_load_face) [TT_CONFIG_OPTION_GPOS_KERNING]: Load and free GPOS kerning + data; check GPOS kerning availability. + + * src/truetype/ttdriver.c (tt_get_kerning): Use GPOS kerning if there's no + 'kern' table. + +2024-01-14 Alexei Podtelezhnikov + + [smooth] Remove SSE2. + + As a result of 7b308a29dd10, the regular 64-bit execution is now faster + than SSE2. The rendering speed of script fonts at 64 ppem or larger is + improved by about 3% without SSE2. See !314 for the testing results. + + * src/smooth/ftgrays.c (gray_render_conic)[FT_INT64]: Remove SSE2 code. + +2024-01-14 Alexei Podtelezhnikov + + * CMakeLists.txt: Accommodate MingGW. + + See https://github.com/StephanTLavavej/mingw-distro/issues/97. + +2024-01-08 Ozkan Sezer + + * src/sfnt/ttcolr.c (find_base_glyph_v1_record): Fix build in C90 mode. + +2024-01-07 Alexei Podtelezhnikov + + [base] Fix up Mac resource forks and dfonts. + + * src/base/ftobjs.c (IsMacResource): Assign `face_index`. + * src/base/ftmac.c (FT_New_Face_From_Suitcase): Ditto after rework. + +2024-01-05 Alexei Podtelezhnikov + + [sfnt] Restrict POST version 1.0. + + A font has surfaced with `post` version 1.0 and fewer than 258 glyphs. + Its glyphs did not correspond to their names. We now reject such `post` + strictly following specifications. + + * src/sfnt/ttpost.c (tt_face_get_ps_name): Check the number of glyphs + for version 1.0. + +2024-01-03 Alexei Podtelezhnikov + + * .gitlab-ci.yml: Use detached CI pipelines. + + See issue freedesktop/freedesktop#540. + +2024-01-02 Werner Lemberg + + [sfnt] Guard access in 'COLR' v1 glyph binary search. + + Reported as + + https://bugs.chromium.org/p/chromium/issues/detail?id=1505216 + + * src/sfnt/ttcolr.c (find_base_glyph_v1_record): Guard access of the search + pointer during binary search. The pointer needs to be checked as we go as + the test that compares number of v1 glyphs with table size at the time of + loading the table is not sufficient on its own. + + A scenario is possible in which the `BaseGlyphRecord` list extends into + non-`BaseGlyphRecord` parts of the 'COLR' v1 table (but passed the size + comparison check). Then, at those locations, invalid glyph ID values are + read and may provoke an invalid read due to reassigning min and max values + during the binary search. + +2023-12-18 Alexei Podtelezhnikov + + [ci] Add support for MSBuild on Windows. + + This adds msbuild job for VS2019 (x64). + + * .gitlab-ci.yml: Added "windows msbuild vs2019 amd64". + +2023-12-14 Skef Iterum + + [CFF] Extract `BlueValues` as `Fixed` rather than `Int`. + + This is a follow-up to commit 26a7f047, + + [cff] Make blend operator work with floats in private dicts. + + which addressed the 'party baseline' bug. However, the reporting user + indicated that the default location and some other points in design space + rendered OK, but other points in design space still had problems. The most + obvious issue being that the x-heights of lower-case letters did not align; + see + + https://github.com/adobe-fonts/source-serif/issues/121#issuecomment-1773794136 + + After some analysis we determined that this was due to an interaction + between `BlueValue` rounding and the zone-based algorithm. In short, for a + point to be considered in a zone it must fall within the bounds of the zone. + (There is a slop factor in some cases, but only a very small one.) In the + Adobe-contributed side of the code, point values are not integer-rounded, + instead they're kept as (some form of) fixed. Rounding just the `BlueValues` + means that points that need to be considered within a zone will fall outside + of it at some points in design space. + + The majority of this patch changes the storage and parsing of `BlueValues` + to keep them as `FT_Fixed`. No significant code changes were needed because + the values are converted to `Fixed` anyway when stored in `CF_BlueRec`. No + attempt was made to address problems in the older pshinter code beyond + converting the values from `FT_Fixed` to `FT_Short` when copying the private + dictionary. (However, as the point values are also rounded in that code, + the problem is much less likely to occur, although inconsistency between + rounding and truncation could cause an analogous problem.) + + * include/freetype/internal/cfftypes.h (CFF_PrivateRec): Use `FT_Fixed` for + `blue_values`, `other_blues`, `family_blues`, and `family_other_blues`. + + * src/cff/cffload.c (cff_blend_doBlend): Updated. + + * src/cff/cffobjs.c (CFF_fixedToInt): New macro. + (cff_make_private_dict): Use it. + + * src/cff/cffparse.h (cff_kind_delta_fixed): New enum value. + + * src/cff/cffparse.c (do_fixed): Updated. + (CFF_FIELD_DELTA, CFF_FIELD_DELTA_FIXED, CFF_DELTA_KIND): New set of macros, + replacing `CFF_FIELD_DELTA`. + (cff_parser_run): Updated to handle fixed-float deltas. + + * src/cff/cfftoken.h: Updated to use `CFF_FIELD_DELTA_FIXED` for blue + values. + + * src/psaux/psblues.c (cf2_blueToFixed): Removed, no longer needed. + (cf2_blues_init): Updated. + + * src/pxaux/psft.c, src/pxaux/psft.h (cf2_getBlueValues, cf2_getOtherBlues, + cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Updated signatures. + + * src/psaux/psobjs.c (t1_make_subfont): Updated. + +2023-12-14 Skef Iterum + + [psaux] Improve tracing. + + * src/psaux/psintrp.c (cf2_doBlend, cf2_interpT2CharString [cf2_cmdBLEND]): + Show blended values. + +2023-12-14 Jouk Jansen + + * vms_make.com: Switch to `clang`. + + Also add proper bzip2 support. + +2023-12-14 Werner Lemberg + + * src/truetype/ttgxvar.c (ft_var_to_normalized): Fix undefined left-shift. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=63723 + +2023-12-07 Alexei Podtelezhnikov + + [msbuild] Streamline the process. + + MSBuild.exe can now be fired from the root folder without options. + + * builds/windows/vc2010/freetype.sln: Relocated to... + * MSBuild.sln: ... here with minor changes. + * MSBuild.rsp: New file with command line options. + * docs/INSTALL: Reference `MSBuild.sln`. + +2023-12-02 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Draw_Sweep): Swap stub conditions. + +2023-12-02 Alexei Podtelezhnikov + + * src/raster/ftmisc.h (FT_MulDiv): Remove unused copy. + +2023-11-28 Alexei Podtelezhnikov + + [raster] Speed up Bézier arches with extrema. + + While it is recommended to have an explicit point at each curve + extrema, they might be missing or outline could be rotated. This + leads to excessive bisections in raster to find them. This change + helps to decrease the number of bisections. The scanline + intersections remain monotonous, of course. + + * src/raster/ftraster.c (Conic_To, Cubic_To): Check that control + points cross the scanlines to bisect. + +2023-11-25 Alexei Podtelezhnikov + + * docs/*: Typos. + +2023-11-24 Alexei Podtelezhnikov + + [raster] Eliminate intensive flow checking. + + * src/raster/ftraster.c (Draw_Sweep): Pass the flow increment. + (Increment): Accept the flow increment. + +2023-11-23 Alexei Podtelezhnikov + + * src/raster/ftraster.c: Comments, defines, includes, cleanups. + +2023-11-21 Alexei Podtelezhnikov + + * src/raster/ftraster.c (FT_Outline_Get_CBox ) [STANDALONE_]: Removed. + +2023-11-21 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Draw_Sweep): No-fault return. + (Render_Single_Pass): Updated. + +2023-11-21 Alexei Podtelezhnikov + + [raster] Sweep polishing. + + * src/raster/ftraster.c (*_Sweep_Span): Polish. + (*_Sweep_Drop): Restore tracing, polish. + (Draw_Sweep): Simplify the dropout processing loop. + +2023-11-21 Alexei Podtelezhnikov + + [raster] Rearrange dropout control. + + This reduces the code duplication. + + * src/raster/ftraster.c (Function_Sweep_Span): Change signature. + (Vertical_Sweep_Drop, Horizontal_Sweep_Drop): Focus on pixel setting + and move duplicated the dropout control logic to... + (Draw_Sweep): ... this function and refactor. + (Vertical_Sweep_Span, Horizontal_Sweep_Span): Minor. + +2023-11-21 Alexei Podtelezhnikov + + [raster] Use bitwise dropout mode interpretation. + + * src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop, + Draw_Sweep, Render_GLyph): Interpret dropout mode using bit masks. + +2023-11-16 Alexei Podtelezhnikov + + * docs/CHANGES: Updated. + +2023-11-16 Alexei Podtelezhnikov + + [raster] Keep only bottom y-turns. + + This results in noticeable performance improvement. + + * src/raster/ftraster.c (Insert_Y_Turns): All bottom y-turns are still + sorted and stored; only the maximum top y-turn is recorded now. The + function is renamed. + (End_Profile): Updated accordingly. + (Convert_Glyph): Reserve space for the top value. + +2023-11-15 Alexei Podtelezhnikov + + * src/raster/ftraster.c (End_Profile): Reduce branching. + (InsNew): Tweak condition. + +2023-11-15 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Draw_Sweep): Use more natural loop. + +2023-11-15 Alexei Podtelezhnikov + + [raster] Dissolve a loop. + + * src/raster/ftraster.c (End_Profile): Set initial `X` here... + (Draw_Sweep): ... instead of here; delay the `start` decrement. + +2023-11-15 Alexei Podtelezhnikov + + * src/raster/ftraster.c: Comments. + +2023-11-14 Alexei Podtelezhnikov + + [raster] Stylistic changes. + + * src/raster/ftraster.c (Line_To): Code it similar to curves; + shortcut the flat lines here... + (Line_Up): ... instead of here. + +2023-11-14 Alexei Podtelezhnikov + + [raster] Revise overshoot setting. + + * src/raster/ftraster.c (New_Profile, End_Profile): Deal with overshoots + locally. + (Line_To, Conic_To, Cubic_To): Update callers. + +2023-11-14 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Conic_To, Cubic_To): Fix recent regression. + +2023-11-14 Alexei Podtelezhnikov + + * include/freetype/ftimage.h: Fix type and link. + +2023-11-14 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Increment): Minor tweak. + +2023-11-13 Alexei Podtelezhnikov + + [raster] Get rid of the fresh flag. + + * src/raster/ftraster.c (black_TWorker): Remove the fresh flag. + (New_Profile): Set the starting scanline here based on the current + coordinate and initialize the joint crossing if necessary. + (Line_Up, Bezier_Up): Do not deal with fresh and joint starts at all. + (Line_Down, Bezier_Down): Simplify. + (Conic_To, Cubic_To): Update the current coordinate after each + subsection. + +2023-11-12 Alexei Podtelezhnikov + + [raster] Get rid of the joint flag. + + * src/raster/ftraster.c (Line_Up, Bezier_Up): Deal with the scanline + joints directly based on the initial y-coordinate. + (New_Profile, black_TWorker): Remove the boolean flag. + +2023-11-11 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Line_Up, Bezier_Up): Check "between" earlier. + +2023-11-11 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Line_Up): Updated and fixed up. + + This largely synchronizes the entries into `Line_Up` and `Bezier_Up`. + Minor bugs in the remainder calculations and accumulations are fixed. + +2023-11-10 Alexei Podtelezhnikov + + * src/raster/ftraster.c (End_Profile, Convert_Glyph): Clean up. + +2023-11-10 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Bezier_Up): Improve joint and loop. + +2023-11-07 Alexei Podtelezhnikov + + [raster] Harmonize target bitmap navigation. + + * src/raster/ftraster.c (black_TWorker): Store signed maximum indexes + in both directions instead of unsigned dimensions of the original bitmap. + (*_Sweep_*, Render_Glyph, ft_black_render): Updated all users. + +2023-11-06 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Bezier_Up): Improve flow. + +2023-11-06 Alexei Podtelezhnikov + + [raster] Reshuffle code for readability. + + * src/raster/ftraster.c (Render_Glyph): Setup the rendering pool here. + (ft_black_render): Setup the target bitmap helpers here. + +2023-11-04 Alexei Podtelezhnikov + + [raster] Improve profile accounting during sweeping. + + * src/raster/ftraster.c (TProfile): Get rid of `countL`. + (Draw_Sweep): Use `start` for countdown to activation. + (Horizontal_Sweep_Drop, Vertical_Sweep_Drop): Rely on `height` and + `offset` to verify profile ends for the stub detection. + +2023-11-04 Alexei Podtelezhnikov + + [raster] Consolidate profile increment to the next line. + + * src/raster/ftraster.c (s/Sort/Increment): Rename this function to + reflect its true purpose, delete exhausted profiles here... + (Draw_Sweep): ... instead of here. + +2023-11-04 Alexei Podtelezhnikov + + [raster] Instantly remove profiles from linked lists. + + * src/raster/ftraster.c (DelOld): Remove loopy function. + (Draw_Sweep): Implement instant profile removal. + +2023-11-03 Alexei Podtelezhnikov (ÐлекÑей Подтележников) + + [raster] Modify the split condition. + + While curving close to a pixel center, vertical and horizontal pass + might split the curve differently and cause a rare dropout. This + makes the split condition invariant of the sweep direction and more + robust. + + * src/raster/ftraster.c (Bezier_Up): Modify the split condition. + +2023-11-03 Alexei Podtelezhnikov (ÐлекÑей Подтележников) + + [raster] Remove the jitter exception. + + The jitter exception used to be applied when two neighboring pixels + were barely inside the outline. One the left one was turned on then, + which contradicts the OpenType specifications. Intended to remove + glitches, it caused disappearing lines and was softened by adding an + exception to the exception (#54589). + + * src/raster/ftraster.c (Vertical_Sweep_Span): Drop the jitter exception. + +2023-10-31 Alexei Podtelezhnikov + + [raster] Simplify dropout detection. + + * src/raster/ftrater.c (Draw_Sweep): Use a single dropout condition. + +2023-10-31 Alexei Podtelezhnikov + + [raster] Simplify sweeping entry and exit. + + * src/raster/ftraster.c (Draw_Sweep): Use y-turns to set the range, + correctly set the initial position, directly loop through y_turns, + and remove a 5-gray remnant at exit. + +2023-10-26 Alexei Podtelezhnikov + + [raster] Switch to routine Int instead of Short. + + This is mostly cosmetic and removes a few casts, plus Short is + promoted to Int in calculations anyway. + + * src/raster/ftraster.c (Vertical_Sweep_Init, Vertical_Sweep_Span, + Vertical_Sweep_Drop, Horizontal_Sweep_Init, Horizontal_Sweep_Span, + Horizontal_Sweep_Drop, Draw_Sweep): Mostly s/Short/Int/ and remove + casting. + +2023-10-24 Alexei Podtelezhnikov + + [raster] Increase the raster pool density. + + This only helps to delay the pool overflow and bisections to larger + sizes and benefits only very intricate glyphs at reasonable sizes. + + * src/raster/ftraster.c (TProfile): Use Int instead of Long or PLong + when it is sufficient. + (New_Profile, End_Profuile, Bezier_Up, Sort): Updated accordingly. + +2023-10-23 Alexei Podtelezhnikov + + [raster] Slightly improve the pool design. + + * src/raster/ftraster.c (TProfile): Include the variable array member + and repackage with pointers first. + (New_Profile): Advance the top using the variable array pointer. + +2023-10-22 Alexei Podtelezhnikov + + [raster] Clean up sweeping. + + * src/raster/ftraster.c (Draw_Sweep): Zero initialize the working + lists directly and remove unnecessary y-turn checks. + (Init_Linked): Removed. + +2023-10-22 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Insert_Y_Turn): Improve flow. + +2023-10-22 Alexei Podtelezhnikov + + * src/pcf/pcfutil.c (BSWAP16): Limit clang support. + + These ancient builtins have been supported by clang since 2013. We + condition it somewhat stricter but still around 2017. This is more + portable than `__has_builtin`. Fixes #1260. + +2023-10-19 Alexei Podtelezhnikov + + [raster] Small optimizations. + + * src/raster/ftraster.c (New_Profile): Set important fields only and + delay setting `gProfile` until... + (End_Profile): ... it is checked to be valid here. + (Convert_Glyph): Updated. + +2023-10-18 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Convert_Glyph): Remove redundant check. + +2023-10-18 Alexei Podtelezhnikov + + [raster] Fix linked profiles in contour loops. + + This fixes a subtle bug when the last profile in a contour was not + properly short-circuited if it was still empty at `End_Profile`. + We finalize all linking in `Finalize_Profile_List` now and do nothing + else there. The turns are added in `End_Profile`. + + * src/raster/ftraster.c (Insert_Y_Turn): Moved up unchanged. + (End_Profile): Take care of turns but set only preliminary linking. + (Finalize_Profile_Table): Take care of linking and null-termination. + (Convert_Glyph): Adjusted accordingly. + +2023-10-15 Alexei Podtelezhnikov + + * src/raster/ftraster.c: Improve tracing. + +2023-10-13 Alexei Podtelezhnikov + + [raster] Improve profile accounting. + + * src/raster/ftraster.c (End_Profile): Do not initiate next profile. + (New_Profile): Fully initiate new profile. + (Convert_Glyph): Clean up variables, initialize `fProfile` here. + +2023-10-13 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Convert_Glyph): Fix null-dereference. + +2023-10-13 Alexei Podtelezhnikov + + [raster] Fix pool overflow checking. + + * src/raster/ftraster.c (New_Profile, End_Profile): Check for overflow + immediately. + (Convert_Glyph, Render_Single_Pass): Fix boundaries. + +2023-10-13 Alexei Podtelezhnikov + + [raster] Miscellaneous clean-ups. + + * src/raster/ftraster.c (New_Profile): Use NULL. + (End_Profile): Optimize variables. + (Convert_Glyph): Do not initialize `cProfile` yet. + (Render_Single_Pass): Tracing. + +2023-10-10 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c: Move the sweep functions... + + ... out of the setjmp/longjmp scope for readability. + +2023-10-10 Alexei Podtelezhnikov + + * src/raster/ftraster.c: Tracing updates. + +2023-10-09 Zachary Zollman + + fix typo in FT_Outline_Decompose note + +2023-09-29 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c (gray_render_conic) [SSE2]: Improve flow. + +2023-09-26 Alexei Podtelezhnikov + + * src/gxvalid/gxvcommn.h (GXV_USHORT_TO_SHORT): Removed. + +2023-09-25 Alexei Podtelezhnikov + + Comment typos. + +2023-09-25 Alexei Podtelezhnikov + + * src/base/ftcalc.c (FT_MOVE_SIGN): Enclose assignments. + +2023-09-21 Alexei Podtelezhnikov + + * include/freetype/internal/ftcalc.h (FT_MSB): Define for Solaris 11. + +2023-09-20 Alexei Podtelezhnikov + + [psaux] Use `FT_SqrtFixed`. + + * src/psaux/cffdecode.c : Call `FT_SqrtFixed`. + * src/psaux/psintrp.c : Ditto. + +2023-09-20 Alexei Podtelezhnikov + + [base] Reintroduce `FT_SqrtFixed`. + + The general square root calculations are not necessary in FreeType. + For vector normalization or length, FreeType uses special functions. + It is, however, required in the legacy CFF specifications. + + * src/base/ftcalc.c (FT_SqrtFixed): New function that uses either + Babylonian or bit-wise algorithm, whichever is faster for the given + situation. + * include/freetype/internal/ftcalc.h (FT_SqrtFixed): Declare it. + +2023-09-18 Alexei Podtelezhnikov + + * src/base/ftcalc.c /* FT_SqrtFixed */: Fix defunct overflow. + +2023-09-14 Alexei Podtelezhnikov + + * src/tools/apinames.c (read_header_file): Typos. + +2023-09-13 Alexei Podtelezhnikov + + Update 2 files + + - /src/base/ftcalc.c + - /include/freetype/internal/ftcalc.h + +2023-09-13 Ben Wagner + + [base] Fix typo to correct predicate for call + + * src/base/ftobj.c (FT_Get_Color_Glyph_Paint): check + `get_colr_glyph_paint` before calling `get_colr_glyph_paint` and not + `get_colr_layer` + +2023-09-12 Alexei Podtelezhnikov + + * src/psaux/cffdecode.c (cff_op_sqrt): Correct upper limit. + +2023-09-11 Alexei Podtelezhnikov + + * src/psaux/cffdecode.c (cff_op_sqrt): Improve initial guess. + +2023-09-11 Alexei Podtelezhnikov + + src/psaux/psintrp.c (cf2_escSQRT): Improve initial guess. + + The worst number of iterations decreased from 11 to 5. + +2023-09-11 Alexei Podtelezhnikov + + * src/type1/t1afm.c (t1_get_index): Restore `strlen` call. + + This reverts commit 8ed6d97446f2f3e5523da62eefbbf32ef7c1290e + and fixes + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62246 + +2023-09-10 Alexei Podtelezhnikov + + * src/cff/cffparse.c (CFF_Field_Handler): Some s/0/NULL/. + +2023-09-10 Alexei Podtelezhnikov + + [type1, cid, type42] Post-cleanup. + + * include/freetype/internal/psaux.h (T1_FIELD_ZERO): Terminating macro. + * src/cid/cidload.c (cid_parse_dict): Use while-loop. + * src/type1/t1load.c (parse_dict): Ditto. + * src/type42/t42parse.c (t42_parse_dict): Ditto. + +2023-09-09 Alexei Podtelezhnikov + + Update forgotten array termini. + + * src/cid/cidload.c (cid_field_records): Account for added `len`. + * src/type1/t1load.c (t1_keywords): Ditto. + * src/type42/t42parse.c (t42_keywords): Ditto. + +2023-09-09 Alexei Podtelezhnikov + + [type1, cid, type42] Streamline dictionary parsing. + + When matching the keywords, we avoid calculating their lengths by + checking the stored values. This itself is a sufficient pre-check + before diving into `memcmp`. Therefore, we remove explicit check of + the first characters. + + * include/freetype/internal/psaux.h (T1_FieldRec): Store length. + * src/cid/cidload.c (cid_parse_dict): Use `memcmp` and stored length. + * src/type1/t1load.c (parse_dict): Ditto. + * src/type42/t42parse.c (t42_parse_dict): Ditto. + +2023-09-09 Alexei Podtelezhnikov + + * src/type1/t1afm.c (t1_get_index): Avoid `strlen` call. + + Instead, we check the terminal zero. + +2023-09-08 Alexei Podtelezhnikov + + * src/type1/t1driver.c (t1_ps_get_font_value): Avoid redundant null. + +2023-09-08 Alexei Podtelezhnikov + + [cff, truetype] Improve prefix and suffix removal. + + * src/cff/cffobjs.c (remove_style): Rewrite using pointers. + (remove_subset_prefix): Unwrap loop and use `memmove`. + * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag): Unwrap loop + and avoid `strlen`. + +2023-09-07 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c (load_format_20): Micro-optimize. + +2023-09-05 Werner Lemberg + + [autofit] Fix synchronization mistake between FreeType and ttfautohint. + + Found by Behdad. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix array size of + `blue_sorted`: FreeType doesn't have artificial blue zones. + +2023-09-04 Werner Lemberg + + [autofit] Fix typos. + + This also reduces the used heap size by a large factor. + + From Behdad. + + * src/autofit/afcjk.h (AF_CJKAxisRec): Use `AF_BLUE_STRINGSET_MAX_LEN`. + * src/autofit/aflatin.h (AF_LatinAxisRec): Ditto. + +2023-08-31 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c (load_format_20): Rework tracing. + +2023-08-30 Alexei Podtelezhnikov + + [builds] Abbreviate the DLG submodule update. + + * autogen.sh, builds/toplevel.mk: Revise the command options. + +2023-08-29 Alexei Podtelezhnikov + + Comment added. + +2023-08-29 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c (load_format_20): Permit long names. + + Fixes #1254. + +2023-08-27 Werner Lemberg + + [gzip] Update sources to zlib 1.13. + +2023-08-25 Werner Lemberg + + docs/release: Minor fixes. + +2023-08-25 Anurag Thakur + + docs/freetype-web.txt: New file. + +2023-08-25 Werner Lemberg + + * Version 2.13.2 released. + ========================== + + Tag sources with `VER-2-13-2'. + + * docs/VERSION.TXT: Add entry for version 2.13.2. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.13.1/2.13.2/, s/2131/2132/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. + + * builds/unix/configure.raw (version_info): Set to 26:1:20. + * CMakeLists.txt (VERSION_PATCH): Set to 2. + +2023-08-25 Alexei Podtelezhnikov + + * src/base/ftcalc.c (FT_MulAddFix): Simplify 32-bit rounding. + +2023-08-25 Werner Lemberg + + Fix clang warnings. + + * src/cffload.c (cff_blend_doBlend): Fix type of `sum`. + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Fix type of + `word_delta_count`. + +2023-08-24 Werner Lemberg + + * subprojects/*.wrap: Updated. + +2023-08-24 Hugh McMaster + + builds/unix/configure.raw: Use variable to specify minimum Python version. + +2023-08-24 Alexei Podtelezhnikov + + * builds/toplevel.mk: Simplify version extraction. + +2023-08-22 Alexei Podtelezhnikov + + [base] Improve the matrix degeneracy check. + + Also fixes #1251. + + * src/base/ftcalc.c (FT_Matrix_Check): To avoid overflow, scale by shifting. + * include/freetype/internal/ftcalc.h (FT_Matrix_Check): Update description. + +2023-08-22 Werner Lemberg + + builds/toplevel.mk: Don't use `\#` in functions. + + The behaviour changed in GNU make 4.3, where `#` (without the backslash) + would be necessary. Using a variable instead the code works with both older + and newer GNU make versions. + + Fixes #1252. + +2023-08-19 Hugh McMaster + + builds/freetype.mk: Invoke `mkdocs` as a Python module + + FreeType's `refdoc` target currently allows users to override the + default Python path, which is useful for testing and development. + + In contrast, `mkdocs` is invoked via the default Python path. + + Invoking `mkdocs` via Python's module syntax allows for greater + flexibility, although there is no change for the default use case. + +2023-08-17 Ben Wagner + + [base] Avoid UB with memcpy + + `FT_NEW_ARRAY(p, 0)` sets `p` to `NULL`. `FT_Stream_ReadAt` with a + memory based stream uses `FT_MEM_COPY` which is `memcpy` which specifies + that it is undefined behavior for either the `src` or `dst` to be + `NULL`. Instead of forcing all callers work around calling + `FT_Stream_Read` when `buffer == NULL && count == 0` do the check in + `FT_StreamRead`. This allows any call with `count == 0` to succesfully + read zero bytes without UB. + + * src/base/ftstream.c (FT_Stream_ReadAt): skip `FT_MEM_COPY` when + `count == 0`. (FT_Stream_TryRead): ditto + + Fixes: #1250 + +2023-08-12 Werner Lemberg + + Fix warnings in tracing messages for 32bit compilation. + + Since we now require C99, use `%td` for `ptrdiff_t` and `%zu` for `size_t`. + +2023-08-04 Ben Wagner + + Avoid overflow in COLR bounds checks. + + The values read into `base_glyphs_offset_v1` and `layer_offset_v1` may + be in the range 0xFFFFFFFD-0xFFFFFFFF. On systems where `unsigned long` + is 32 bits adding 4 to such values will wrap and pass bounds checks but + accessing values at such offsets will be out of bounds. + + On the other hand `table_size` has already been tested to be at least + `COLRV1_HEADER_SIZE` (34) so it is safe to subtract 4 from it. + + * src/sfnt/ttcolr.c (tt_face_load_colr): subtract 4 from `table_size` + instead of adding 4 to font data offsets in bounds checks + + Fixes: https://crbug.com/1469348 + +2023-08-02 Alexei Podtelezhnikov + + * src/base/ftobjs.c (open_face_from_buffer): Silence `maybe-uninitialized`. + + We never call this function without a `driver_name` (#1245). + +2023-07-29 Alexei Podtelezhnikov + + [truetype] Reduce v40 footprint. + + * src/truetype/ttgload.c (TT_HInt_Glyph, tt_loader_set_pp, + tt_loader_init): Refactor code. + +2023-07-27 Alexei Podtelezhnikov + + [truetype] Remove Infinality for good (remaining bits). + + * src/truetype/ttobjs.h: Remove remaining fields. + * src/truetype/ttinterp.c: Do not initialize them. + * include/freetype/internal/tttypes.h: Remove descriptions. + +2023-07-27 Alexei Podtelezhnikov + + [truetype] Remove Infinality for good. + + Remove everything `#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY`, + which was undefined for a while now. + + * include/freetype/internal/tttypes.h: Ditto. + * src/truetype/truetype.c: Ditto. + * src/truetype/ttdriver.c: Ditto. + * src/truetype/ttgload.c: Ditto. + * src/truetype/ttinterp.c: Ditto. + * src/truetype/ttinterp.h: Ditto. + * src/truetype/ttobjs.c: Ditto. + * src/truetype/ttsubpix.[ch]: Remove files. + * src/truetype/rules.mk: Don't mention "ttsubpix.c". + +2023-07-21 Jouk Jansen + + * vms_make.com: Provide separate library compiled with C++. + + Some types on OpenVMS x86_64 (for example, `long') have different sizes + depending on whether compiled with either C or C++. In particular, + X-Windows applications crash if linked with the C++ version. + + This patch makes `vms_make.com` create a second version of the FreeType + library compiled with C++ if OpenVMS is running on the x86_64 platform. + +2023-07-21 Jouk Jansen + + * vms_make.com: Fix typos. + +2023-07-21 Jouk Jansen + + * src/smooth/ftgrays.c (FT_SSE2): Fix definition for VMS. + +2023-07-19 Jouk Jansen + + vms_make.com: Make use of additional libraries optional. + + Check whether `.olb` files are present. + + Also check for the HarfBuzz library. + +2023-07-19 Jouk Jansen + + vms_make.com: Add `/warn=noinfo` to `CFLAGS`. + + This reduces enormously the informationals while compiling on x86_64 (i.e., + which `.h` file is inluded form where). + +2023-07-18 Ben Wagner + + [woff2] Clean up on large brotli expansion + + * src/sfnt/sfwoff2.c (woff2_open_font): set error and goto cleanup + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=60711 + +2023-07-16 Werner Lemberg + + [woff2] Avoid allocation bomb. + + This is a fix for commit 85167dbd5, reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=60615 + + * src/sfnt/sfwoff2.c (MAX_SFNT_SIZE): New macro. + (woff2_open_font): Use it to limit the maximum size of an uncompressed WOFF2 + font. + +2023-07-14 Werner Lemberg + + [cff] Fix compiler warning. + + * src/cff/cffparse.c, src/cff/cffparse.h: Make `cff_parse_fixed` a local + function. + +2023-07-14 Ben Wagner + + [woff2] Remove sfnt size guess check + + In WOFF the `totalSfntSize` must be correct, however in WOFF2 this value + is now just a hint and a conforming implementation must not reject + otherwise valid data if the `totalSfntSize` turns out not to be exact. + + * src/sfnt/sfwoff2.c (woff2_open_font): remove check that uncompressed + woff2 data would fit in the sfnt size guess. + + Fixes: #1235 + +2023-07-14 Skef Iterum + + [cff] Make blend operator work with floats in private dicts. + + The CFF2 blend operator takes N default values and corresponding + sets of deltas and pushes N values specific to a designspace + location. CFF has a floating point numeric type and the FreeType + blending code was not converting those into its internal 16.16 + Fixed type format. + + Fixes #1243. + + * src/cff/cffparse.c (do_fixed): Handle floating point numbers. + Also fix scaling overflow check for integer-to-fixed conversion. + + * src/cff/cffload.c (cff_blend_doBlend): Updated. + +2023-07-08 Hin-Tak Leung + + * src/truetype/ttgload.c (TT_Hint_Glyph): More mostly cosmetic update. + + This is a follow-up to commit 49c74ac02, which creates a new local variable + "exec = loader->exec", and shortening a lot of "loader->exec". This commit + does two more such changes missed in that first commit. + +2023-07-06 Hugh McMaster + + [gzip] Don't compile internal zlib development files when using system zlib. + + `src/gzip/rules.mk` compiles the internal zlib sources even when using the + zlib development files provided by a host system. If the internal zlib + development files are not present, FreeType fails to build from source. + + This patch ensures the internal zlib development files are only + prerequisites when not using zlib development files on a host system. + + * src/gzip/rules.mk (GZIP_DRV_SRCS): Define conditionally. + +2023-06-24 Werner Lemberg + + * Version 2.13.1 released. + ========================== + + Tag sources with `VER-2-13-1'. + + * docs/VERSION.TXT: Add entry for version 2.13.1. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.13.0/2.13/1/, s/2130/2131/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. + + * builds/unix/configure.raw (version_info): Set to 26:0:20. + * CMakeLists.txt (VERSION_PATCH): Set to 1. + + * subprojects/libpng.wrap, subprojects/zlib.wrap, subprojects/dlg: Updated. + +2023-06-09 suzuki toshiya + + Comment fixes. + +2023-06-09 Werner Lemberg + + [sdf] Correct handling of empty glyphs. + + This is a refinement of commit 7b3ebb9. + + * src/sdf/ftsdfrend.c (ft_sdf_render): Goto 'Exit' instead of directly + returning. + (fd_bsdf_render): Ditto, also taking care of setting `FT_GLYPH_OWN_BITMAP` + correctly. + +2023-06-05 Ben Wagner + + Mark FT_Renderer_Class::raster_class as pointer to const + + The `FT_DEFINE_RASTER_FUNCS` macro declares a `const FT_Raster_Funcs`. + The address of the definition is taken and assigned to + `FT_Renderer_Class::raster_class` which is currently `FT_Raster_Funcs*`. + Until recently the `const` was cast away and with the removal of the + cast there are now warnings about dropping this `const`. Instead of + adding back the casts, make `FT_Renderer_Class::raster_class` a pointer + to const, as is done with pointers in other interfaces. + + * include/freetype/ftrender.h (FT_Renderer_Class_): mark `raster_class` + as const. + +2023-06-03 Ben Wagner + + Fix some `FT_Fixed` vs. `FT_Long` confusion. + + `FT_Fixed` and `FT_Long` are both typedef'ed to be `signed long`. However, + `FT_Fixed` implies that the lower 16 bits are being used to express + fractional values and so these two types should not be confused. + + * include/freetype/internal/services/svmm.h (FT_Set_MM_Blend_Func): Use + `FT_Fixed` for `coords`. Users are passing `FT_Fixed` and implementations + are taking `FT_Fixed`. + (FT_Get_MM_Blend_Func): Ditto. + + * src/autofit/afcjk.c (af_cjk_metrics_check_digits): Use `FT_Long` for + `advance` and `old_advance`. `advance`'s address is passed as `FT_Long*` to + `af_shaper_get_elem`, which writes the advance in em units (not fixed). The + exact value is not important here as it is only compared to check whether it + has changed. + + * src/autofit/aflatin.c (af_latin_metrics_check_digits): Ditto. + +2023-06-03 Ben Wagner + + */*: Remove many function pointer casts. + + In C it is undefined behavior to call a function through a function pointer + of a different type. This is now detected by the Control Flow Integrity + Sanitizer. All known issues have already been fixed. Prevent any + accidental re-introduction by removing function pointer casts when defining + services. The services will call the service functions through the function + pointers on the service. As a result the functions must have the same type + so there should be no need to cast. Removing the casts allows compilers to + warn about assignment to an incompatible function pointer type. + +2023-06-03 Werner Lemberg + + Minor formatting. + +2023-05-23 Werner Lemberg + + Replace `sprintf` with `snprintf`. + + Fixes #1233. + + * include/freetype/config/ftstdlib.h (ft_sprintf): Replace with... + (ft_snprintf): This new macro. + + * src/autofit/afhints.c (af_print_idx): Add argument to pass the buffer + size. + (af_glyph_hints_dump_points, af_glyph_hints_dump_segments, + af_glyph_hints_dump_edges): Updated. + + * src/bdf/bdflib.c (BUFSIZE): New macro. + (bdf_parse_properties_, bdf_parse_start_): Use `ft_snprintf`. + + * src/tools/ftrandom/ftrandom.c (do_test): Use `snprintf`. + +2023-05-23 Werner Lemberg + + docs/DEBUG: Formatting. + +2023-05-20 suzuki toshiya + + [doc] Type1 GX (sfnt-wrapped Type1) is not supported. + + * docs/formats.txt: Clarify the reference of Type1 GX, + and state that this format is not supported. This + is because the content `TYP1' table is not exactly same + with the Type1 font format specification; no eexec + encryption is used. For detail and concrete examples, + see the analysis on: + + https://gitlab.freedesktop.org/freetype/freetype/-/issues/1231 + +2023-05-19 Craig White + + Add missing end quote of a string in the example code of FT_Trace_Set_Level + +2023-05-19 Seigo Nonaka + + [truetype] Reduce heap allocation of `deltaSet` variation data. + + `deltaSet` is an array of packed integers that can be 32 bits, 16 bits, or + 8 bits. Before this change, these values were unpacked to 32-bit integers. + However, this can cause big heap allocations, e.g., around 500 KByte for + 'NotoSansCJK'. To reduce this amount, store the packed integers and unpack + them just before passing to the calculation. At calculation time, due to + the variable length of region indices, temporary heap allocations are + necessary. This heap allocation is not negligible and visible in `ftbench` + results. So, use stack-allocated arrays for short array calculations. + + Fixes #1230. + + * include/freetype/internal/ftmmtypes.h (GX_ItemVarDataRec): New fields + `wordDeltaCount` and `longWords`. + + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Load packed + data. + (tt_var_get_item_delta): Unpack data before applying. + +2023-05-17 Jouk Jansen + + vms_make.com: Create shared executable for x86 version of OpenVMS. + +2023-05-15 Werner Lemberg + + Add new load flag `FT_LOAD_NO_SVG`. + + Modern color fonts often contain both an 'SVG' and 'COLR' table. FreeType + always preferred 'SVG' over 'COLR' (this was a design decision), however, + this might not be the right choice for the user. The new flags makes + FreeType ignore the 'SVG' table while loading a glyph. + + Fixes #1229. + + * include/freetype/freetype.h (FT_LOAD_NO_SVG): New macro. + + * src/base/ftobjs.c (FT_Load_Glyph), src/cff/cffgload.c (cff_slot_load), + src/truetype/ttgload.c (TT_Load_Glyph): Use it. + +2023-05-13 Werner Lemberg + + .mailmap: Updated. + +2023-05-13 Alexei Podtelezhnikov + + [cache] Merge functions. + + * src/cache/ftccache.c (FTC_Cache_Init): Merge into... + (ftc_cache_done): ... this function, with unnecessary checks removed. + +2023-05-13 Alexei Podtelezhnikov + + [cache] Minor casting and cosmetic updates. + + * src/cache/ftcglyph.c (ftc_gcache_{init,done}): Remove casting. + (FTC_GCache_Lookup): Cosmetic variable renaming. + * src/cache/ftcsbits.c (ftc_snode_compare): Formatting. + +2023-05-12 Werner Lemberg + + * include/freetype/ftcache.h: Typo, punctuation. + +2023-05-12 Alexei Podtelezhnikov + + * include/freetype/ftcache.h: Formatted and updated. + +2023-05-12 suzuki toshiya + + * include/freetype/internal/t1types.h: Fix the indentation. + +2023-05-11 Alexei Podtelezhnikov + + [cache] Revise the dynamic hash table accounting. + + Instead of counting entries relative to the middle of the hash table, + this switches to the absolute counter with the full index range mask. + As a result, some calculations become a bit simpler. The cache resizing + logic stays largely the same. + + * src/cache/ftccache.h (FTC_NODE_TOP_FOR_HASH): Revised with new counter. + * src/cache/ftccache.c (ftc_get_top_node_for_hash): Ditto. + (ftc_cache_resize): Simplify reallocations and stop their zeroing. + (ftc_cache_init): Stop over-allocating but keep zeroing initially. + (FTC_Cache_Clear, FTC_Cache_RemoveFaceID): Updated accordingly. + +2023-05-11 suzuki toshiya + + [t1cid] Set FT_FACE_FLAG_CID_KEYED. + + * cidobjs.c (cid_face_init): Set FT_FACE_FLAG_CID_KEYED. + + * cidriver.c (cid_get_is_cid): Comment about the case that + is_cid cannot guarantee the glyph collection specification. + +2023-05-09 Jouk Jansen + + * src/smooth/ftgrays.c (FT_SSE2): Don't define for VMS. + +2023-05-08 Werner Lemberg + + * src/cff/cffdrivr.c (cff_glyph_load): Fix guard for `size`. + + This was forgotten to change in commit 2b54eba36b (in May 2004). + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=58739 + +2023-05-08 Werner Lemberg + + Minor compiler warning fixes. + + * src/autofit/afcjk.c (af_cjk_get_standard_widths), src/autofit/aflatin.c + (af_latin_get_standard_widths): Use `FT_CALLBACK_DEF`. + + * src/cff/cffparse.c (cff_parser_run): Initialize and fix allocation of `q`. + +2023-05-08 Werner Lemberg + + * src/psaux/t1cmap.c: Signature fixes. + +2023-05-08 Werner Lemberg + + * src/bzip2/ftbzip2.c: Signature fixes. + +2023-05-08 Werner Lemberg + + [cache] Signature fixes. + + * src/cache/ftcglyph.c, src/cache/ftcglyph.h (FTC_GNode_Compare): Remove + redundant function. It is equivalent to `ftc_gnode_compare` and becomes + completely meaningless with fixed signatures. + Update all callers. + + * src/cache/ftcsbits.c, src/cache/ftcsbits.h (FTC_SNode_Compare): Remove + redundant function. It is equivalent to `ftc_snode_compare` and becomes + completely meaningless with fixed signatures. + Update all callers. + +2023-05-07 Werner Lemberg + + [sdf] Signature fixes. + +2023-05-07 Werner Lemberg + + * src/svg/ftsvg.c: Signature fixes. + +2023-05-07 Werner Lemberg + + [raster] Signature fixes. + +2023-05-07 Werner Lemberg + + [smooth] Signature fixes. + +2023-05-07 Werner Lemberg + + [pshinter] Signature fixes. + + * src/pshinter/pshrec.c (t1_hints_close, t1_hints_apply): New wrapper + functions. + (t1_hints_funcs_init): Use them. + (t2_hints_close, t2_hints_apply): New wrapper functions. + (t2_hints_funcs_init): Use them. + +2023-05-07 Werner Lemberg + + [autofit] Signature fixes. + +2023-05-07 Werner Lemberg + + * src/sfnt/ttcmap: Signature fixes. + +2023-05-07 Werner Lemberg + + * src/pcf/pcfdrivr.c: Signature fix. + +2023-05-07 Werner Lemberg + + * src/winfonts/winfnt.c: Signature fixes. + +2023-05-07 Werner Lemberg + + * src/type42/t42parse.c: Signature fixes. + +2023-05-07 Werner Lemberg + + [pfr] Signature fixes. + +2023-05-07 Werner Lemberg + + * src/cid/cidload.c: Signature fixes. + +2023-05-07 Werner Lemberg + + * src/cff/cffcmap.c: Signature fixes. + +2023-05-07 Werner Lemberg + + * src/type1/t1load.c: Signature fixes. + +2023-05-07 Werner Lemberg + + [truetype] Signature fixes. + +2023-05-07 Werner Lemberg + + [base] Signature fixes. + +2023-05-07 Werner Lemberg + + * src/type42/t42drivr.c: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-07 Werner Lemberg + + * src/type1/*: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-07 Werner Lemberg + + * src/truetype/*: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-07 Werner Lemberg + + * src/sfnt/sfdriver.c, src/sfnt/ttbdf.c: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + + * src/sfnt/sfdriver.c (sfnt_load_table): New wrapper function. + (sfnt_service_sfnt_table): Use it. + +2023-05-07 Werner Lemberg + + * src/psnames/psmodule.c: Use `FT_CALLBACK_DEF`. + +2023-05-07 Werner Lemberg + + * src/pfr/pfrdrivr.c: face -> pfrface, pfrface -> face. + +2023-05-07 Werner Lemberg + + * src/pcf/pcfdrivr.c: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-07 Werner Lemberg + + * src/cid/cidriver.c: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-07 Werner Lemberg + + * src/bdf/bdfdrivr.c: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-07 Werner Lemberg + + * src/cff/*: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-06 Werner Lemberg + + [truetype] Fix style name handling for variation fonts. + + * include/freetype/internal/tttypes.h (TT_FaceRec): New field + `non_var_style_name`. + + * src/sfnt/sfobjs.c (sfnt_load_face): Initialize `non_var_style_name`. + (sfnt_done_face): Free `non_var_style_name`. + + * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Restore non-VF style name + if switching back to non-VF mode. + +2023-05-06 Werner Lemberg + + [truetype] Fix PostScript name handling for variation fonts. + + A variation font's PostScript name of a named instance is usually different + from the PostScript name of an unnamed instance. However, if a change + between a named instance and an unnamed instance with exactly the same + design axis values happened, it was possible that the PostScript name wasn't + correctly updated. + + This commit reorganizes the code to handle this issue within the top-level + API functions, using a new service to trigger recomputation of the + PostScript name. + + * include/freetype/internal/services/svmm.h (FT_Construct_PS_Name_Func): New + typedef. + (FT_Service_MultiMasters): New field `construct_ps_name`. + (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. + + * src/base/ftmm.c (FT_Set_Var_Design_Coordinates, + FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Call + `mm->construct_ps_name` to handle `postscript_name`. + (FT_Set_Named_Instance): Call `mm->construct_ps_name` to handle + `postscript_name`. + Use shortcut. + * src/cff/cffdrivr.c (cff_construct_ps_name): New function. + (cff_service_multi_masters): Updated. + + * src/truetype/ttgxvar.c (tt_set_mm_blend): Don't handle `postscript_name`. + (TT_Set_MM_Blend): Simplify. + (TT_Set_Named_Instance): Return -1 if axis values haven't changed. + Don't set `face_index`. + (tt_construct_ps_name): New function. + + * src/truetype/ttgxvar.h: Updated. + + * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. + + * src/type1/t1driver.c (t1_service_multi_masters): Updated. + + * src/type1/t1load.c (T1_Set_MM_Blend): Simplify. + +2023-05-06 Werner Lemberg + + * include/freetype/internal/services/svmm.h: Minor changes. + +2023-05-06 Werner Lemberg + + [truetype] Fix deactivation of variation font handling. + + According to the documentation, the functions `FT_Set_Named_Instance`, + `FT_Set_MM_Design_Coordinates`, `FT_Set_Var_Design_Coordinates`, and + `FT_Set_Var_Blend_Coordinates` can unset the `FT_FACE_FLAG_VARIATION` flag. + (The same is true for `FT_Set_MM_WeightVector` but this information was + accidentally omitted from the documentation.) + + However, if a call of these functions didn't change the axis values this + could fail because internal shortcuts exited too early. + + This commit reorganizes the code to handle `FT_FACE_FLAG_VARIATION` in the + top-level API functions, also taking care of the issue at hand. + + * src/base/ftmm.c (FT_Set_MM_Design_Coordinates, FT_Set_MM_WeightVector, + FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates, + FT_Set_Var_Blend_Coordinates): Handle `FT_FACE_FLAG_VARIATION`. + + * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design, + TT_Set_Named_Instance) Don't handle `FT_FACE_FLAG_VARIATION`. + + * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_WeightVector, + T1_Set_MM_Design): Ditto. + + * src/cff/cffobjs.c (cff_face_init): Use `FT_Set_Named_Instance` instead of + low-level functions. + + * src/truetype/ttobjs.c (tt_face_init): Ditto. + +2023-05-06 Werner Lemberg + + s/set_instance/set_named_instance/ + + * include/freetype/internal/services/svmm.h (FT_Set_Instance_Func): Renamed + to... + (FT_Set_Named_Instance_Func): ...this. + (FT_Service_MultiMasters): Rename `set_instance` to `set_named_instance`. + (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. + + * src/base/ftmm.c (FT_Set_Named_Instance): Updated. + + * src/cff/cffdrivr.c (cff_set_instance): Renamed to... + (cff_set_named_instance): ...this. + (cff_service_multi_masters): Updated. + * src/cff/cffobjs.c (cff_face_init): Updated. + + * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. + + * src/type1/t1driver.c (t1_service_multi_masters): Updated. + +2023-05-06 Werner Lemberg + + New Variation Font function `FT_Get_Default_Named_Instance`. + + * include/freetype/ftmm.h, src/base/ftmm.c (FT_Get_Default_Named_Instance): + New function. + + * include/freetype/internal/services/svmm.h + (FT_Get_Default_Named_Instance_Func): New typedef. + (FT_Service_MultiMasters): New field `get_default_named_instance`. + (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. + + * include/freetype/internal/tttypes.h (TT_Face): New field + `var_default_named_instance`. + + * src/sfnt/sfobjc.s (sfnt_init_face): Initialize + `var_default_named_instance`. + + * src/cff/cffdrivr.c (cff_get_default_named_instance): New function. + (cff_service_multi_masters): Updated. + + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Initialize + `var_default_named_instance`. + (TT_Get_Default_Named_Instance): New function. + * src/truetype/ttgxvar.h: Updated. + * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. + + * src/type1/t1driver.c (t1_service_multi_masters): Updated. + + * docs/CHANGES: Updated. + +2023-05-06 Werner Lemberg + + [cid] Improve tracing messages; formatting. + +2023-05-04 Alexei Podtelezhnikov + + * src/cache/ftccache.c (ftc_node_hash_unlink): Minor. + +2023-05-04 Alexei Podtelezhnikov + + * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Purge backwards. + +2023-05-04 Alexei Podtelezhnikov + + [cache] Revise list cleansing. + + * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Use one loop to + do it. + * src/cache/ftcmanag.c (FTC_Manager_Compress, FTC_Manager_FlushN): + Streamline loops. + +2023-05-03 suzuki toshiya + + [t1cid] Improve cid_get_cid_from_glyph_index(). + + Update cid_get_cid_from_glyph_index() to + return an error and CID=0 in the case that + the specified glyph index points to an invalid + entry. + + cidgload.h (cid_compute_fd_and_offsets): + Declare new helper function to set the + fd_select and 2 offsets to access the glyph + description data. + + cidgload.c (cid_compute_fd_and_offsets): + Move the part loading fd_select and 2 offsets + from cid_load_glyph() to here. If the loaded + parameters are broken, return the Invalid_Offset + error. This function does not load the glyph + data, only fills these parameters. + + (cid_load_glyph): Use new helper function in above. + + cidriver.c (cid_get_cid_from_glyph_index): + Check whether the requested glyph index points + to a valid entry, by calling cid_compute_fd_and_offsets(). + If it is valid, fill the cid by the glyph + index (=CID). If it is invalid, return an + error and fill the cid by 0. + +2023-04-30 Werner Lemberg + + API documentation: Re-organize chapters and sections + + * Split the very long 'Base Interface' section into smaller sections. + * Split the 'Core API' chapter into two chapters. + * Remove single enumeration values from `@order` fields since they have no + effect. + +2023-04-29 Alexei Podtelezhnikov + + * src/sfnt/pngshim.c (Load_SBit_Png): Remove FALL_THROUGH warning. + +2023-04-28 Werner Lemberg + + * src/sfnt/ttload.c (tt_face_load_font_dir): Add another guard. + + Reject 'OTTO' fonts with no valid tables. + +2023-04-28 Werner Lemberg + + * src/cff/cffdrivr/c (cff_get_ps_name): Avoid unnecessary crash. + + The situation can happen if `FT_New_Face` (or one of its siblings) is called + with a negative index to get the number of contained faces, followed + immediately by a call to `FT_Get_Postscript_Name`. While this is not a valid + use of the FreeType library there is no need for a crash. + + Fixes #1219. + +2023-04-28 Werner Lemberg + + * src/cff/cffdrivr.c (cff_ps_get_font_info): Reject 'CFF2' format. + +2023-04-28 Werner Lemberg + + * src/cid/cidgload.c (cid_load_glyph): Fix compiler warnings. + +2023-04-28 Werner Lemberg + + Minor documentation updates. + +2023-04-27 Werner Lemberg + + * src/ttgxvar.c: Minor changes. + + (TT_Get_MM_Var): Improve tracing messages. + (tt_set_mm_blend): Minor speed-up. + +2023-04-27 Werner Lemberg + + s/this is,/that is,/ + +2023-04-27 Alexei Podtelezhnikov + + [bdf] Clean up the atom property parsing. + + * src/bdflib.c (bdf_is_atom_): Refactor code with fewer checks. + (bdf_list_join_): Return NULL. + (bdf_add_comment_): Use const argument. + (bdf_get_property): Ditto, ditto, make the function static. + * src/bdf.h (bdf_get_property): Remove prototype. + +2023-04-25 Werner Lemberg + + Improve/add source comments and documentation. + +2023-04-25 Werner Lemberg + + [sfnt] Fix handling of PS names for Variation Fonts. + + * src/sfnt/sfdriver.c (get_win_string, get_apple_string): Continue + construction of string if an invalid character is encountered. + + Fixes #1218. + +2023-04-24 suzuki toshiya + + [t1cid] Change the trace messages of the charstrings retrieval errors. + + The t1cid driver catches 3 types of errors in + the charstrings retrieval; + A) The invalid FD number, there are 2 subtypes; + A-1) FD number is the maximum number fitting to FDBytes. + A-2) FD number is greater than num_dicts. + B) Declared length is overrunning. + C) Declared length is invalid (its end is before its head). + + Considering that some widely distributed fonts + (e.g., "CJKV" book by O'Reilly) have A-1 errors + in the unimplemented glyphs, the trace level for + A-1 is calmed to level 1. + + The errors A-2, B, and C would be irregular; + their trace levels are kept at level 0, but + the updated trace messages include the CID number. + +2023-04-24 suzuki toshiya + + [truetype] Fix `make multi'. + + * src/truetype/ttgxvar.c: Include freetype/internal/services/svmetric.h + for the FT_Service_MetricsVariations type definition. + +2023-04-19 Ben Wagner + + [services] FT_Size_Reset_Func to return FT_Error + + The `MetricsVariations` `FT_Size_Reset_Func` is currently defined to + return `void`, but the implementations return `FT_Error`. Even though + the pointers passed will be the same at runtime, calling a function + through a pointer of a different type from the original function pointer + type is undefined behavior. This may be caught at runtime by Control + Flow Integrity with something like clang's `cfi-icall`. + + Issue: https://crbug.com/1433651 + + * include/freetype/internal/services/svmetric.h (FT_Size_Reset_Func): + return `FT_Error` instead of `void`. + +2023-04-17 Ben Wagner + + [truetype] tt_size_reset_height to take FT_Size + + The `MetricsVariations` `FT_Size_Reset_Func` is defined to take an + `FT_Size`. Because `tt_size_reset_height` is to be used as such a + function, it must also take an `FT_Size` instead of a `TT_Size`. Even + though the pointers passed will be the same at runtime, calling a + function through a pointer of a different type from the original + function pointer type is undefined behavior. This may be caught at + runtime by Control Flow Integrity with something like clang's + `cfi-icall`. + + Issue: https://crbug.com/1433651 + + * src/truetype/ttobjs.h (tt_size_reset_height): take `FT_Size` + + * src/truetype/ttobjs.c (tt_size_reset_height): take `FT_Size` and + update documentation + +2023-04-13 Werner Lemberg + + * src/truetype/ttinterp.c: Remove outdated comments. + +2023-04-11 Ben Wagner + + [sfnt, truetype] Add `size_reset` to `MetricsVariations`. + + This is a generalization of commit + + ``` + commit e6699596af5c5d6f0ae0ea06e19df87dce088df8 + Author: Werner Lemberg + Date: Thu Feb 2 11:38:04 2017 +0100 + + [truetype] Fix MVAR post-action handling. + ``` + + It is also possible for plain `CFF ` style fonts to contain an `fvar` and + `MVAR` table and use `cff_metrics_adjust`. `tt_size_reset` should only be + called with `TT_Size` and never with `CFF_Size`. + + Allow the "metrics-variations" service to specify the correct function (if + any) to reset `FT_Size`s after adjusting metrics. + + * src/truetype/ttobjs.c (tt_size_reset): Split off some functionality + into... + (tt_size_reset_height): ... this new function. + + * src/truetype/ttdriver.c (tt_service_metrics_variations): Add + `size_reset`. + (tt_size_select, tt_size_request): Updated. + + * src/truetype/ttobjs.h: Updated. + + * include/freetype/internal/services/svmetric.h (MetricsVariations): Add + `size_reset`. + (FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Updated. + + * include/freetype/internal/tttypes.h (TT_FaceRec_): Rename `var` to + `tt_var` and add `face_var`. + + * src/cff/cffdrivr.c (cff_service_metrics_variations): Add `size_reset`. + (cff_hadvance_adjust, cff_metrics_adjust): Updated. + + * src/cff/cffobjs.c (cff_face_init): Use `face_var`. + + * src/sfnt/sfobjs.c (sfnt_init_face): Initialize `face_var`. + + * src/sfnt/ttmtx.c (tt_face_get_metrics): Use `tt_var`. + + * src/truetype/ttgxvar.c (tt_size_reset_iterator): Renamed to... + (ft_size_reset_iterator): ... this new function. + Call `size_reset`. + (tt_apply_mvar): Pass `size_reset` to `ft_size_reset_iterator`. + + Fixes #1211 + +2023-04-10 Alexei Podtelezhnikov + + * src/cff/cffcmap.c (cff_cmap_encoding_char_next): Abbreviate. + +2023-04-10 Alexei Podtelezhnikov + + Align `char_next` return types. + + This is mostly cosmetic because FT_UInt and FT_UInt32 are likely identical. + + * src/sfnt/ttcmap.c, src/cff/cffcmap.c, src/psaux/t1cmap.c, + src/psnames/psmodule.c, include/freetype/internal/service/svpcsmap.h, + src/pfr/pfrcmap.c, src/winfonts/winfnt.c (*_char_next): return FT_UInt. + +2023-04-09 Alexei Podtelezhnikov + + [sfnt] Clean up CMAP{4,12,13} handling. + + This moves the charcode overflow checks upstream and turns some + while-loops into the do-while ones to avoid the uninitialized warnings. + This should slightly reduce the number of checks and jumps. + + * src/sfnt/ttcmap.c (tt_cmap{4,12,13}_next, + tt_cmap{4.12.13}_char_map_linear): Remove the charcode overflow check. + (tt_cmap{4,12,13}_char_map_binary): Ditto and use do-while. + (tt_cmap{12,13}_char_next): Add the overflow check. + +2023-04-03 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c (load_format_25): Do not abort frame reading. + +2023-04-03 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c (load_format_*): Streamline frame reading. + +2023-04-02 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c: Formatting and comments. + +2023-04-02 Alexei Podtelezhnikov + + [sfnt] Consolidate POST version 2.0 and 2.5 (pt 2). + + * src/sfnt/ttpost.c (load_format_20, load_format_25): Update arguments + and move shared calls and checks upstream to... + (load_post_names): ... this function. + (tt_face_free_ps_names, tt_face_get_ps_name): Updated. + +2023-04-02 Alexei Podtelezhnikov + + [sfnt] Consolidate POST version 2.0 and 2.5 (pt 1). + + The deprecated POST version 2.5 can be handled using the data + structures of version 2.0. The goal is to reduce the footprint. + + * include/freetype/internal/tttypes.h (TT_Post_Names): Absorb and... + (TT_Post_20, TT_Post_25): ... remove these structures. + src/sfnt/ttpost.c (load_post_names, tt_face_get_ps_name, + tt_face_free_ps_names, load_format_20): Updated accordingly. + (load_format_25): ditto and convert offsets to glyph indices. + +2023-04-01 Alexei Podtelezhnikov + + [sfnt] Miscellaneous POST clean-ups. + + * src/sfnt/ttpost.c (load_format_20): Decrease casts. + (load_format_25): Check the table length and impose a theoretical + glyph number limit usable with 8-bit offset. Decrease casts. + (load_post_names): Pass the mapping data length without 2 bytes. + +2023-03-30 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c (load_format_20): Simplify comutations. + +2023-03-29 Alexei Podtelezhnikov + + [sfnt] Streamline POST format 2.0 handing (cont'd). + + * src/sfnt/ttpost.c (load_format_20): Co-allocate the string data and + their pointers, which makes it easier to handle and free them. + (tt_face_free_ps_names): Updated. + * include/freetype/internal/tttypes.h (TT_Post_20): Update type. + +2023-03-20 Alexei Podtelezhnikov + + [cff] Simplify `t2_strings` management in the old engine. + + * src/cff/cffparse.c (cff_parser_run): Allocate the charstring buffers + and the list nodes together so that they can be freed at once. + (finalize_t2_strings): Removed as no longer needed. + (cff_parser_done): Updated. + +2023-03-19 Alexei Podtelezhnikov + + [cff] Rework the stream limit checks. + + The old stream limit checks, before 6986ddac1ece, were good but + pointless for the crafted t2_strings. Checking limits there is + not necessary as they are created to hold all data. By using two + conditions, we can detect the actual crossing of the stream boundary + as appropriate for the stream pointer only. The t2_strings parsing + will not be triggering these checks. + + * src/cff/cffparse.c (cff_parser_within_limits): Removed. + (cff_parse_real, cff_parse_integer): Redesign the stream limit check. + (cff_parse_num, do fixed, cff_parse_fixed_dynamic): Update callers. + +2023-03-18 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use for-loop. + + Even though we never call `TT_Load_Simple_Glyph` with zero contours, + out of abundance of precaution, let's handle this case properly. + +2023-03-18 Alexei Podtelezhnikov + + [truetype] Clean up zeroing and local variables. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Avoid zeroing. + (load_truetype_glyph): Avoid zeroing and clean local variables. + +2023-03-16 Werner Lemberg + + * include/freetype/ftsystem.h (FT_Stream_IoFunc): Improve documentation. + + Fixes #1208. + +2023-03-16 Alexei Podtelezhnikov + + * src/base/ftsynth.c (FT_GlyphSlot_AdjustWeight): New API. + +2023-03-16 Alexei Podtelezhnikov + + [truetype] Clean up glyph loading. + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Clean space checking. + (TT_Hint_Glyph): Don't copy the outline structure. + (TT_Process_Simple_Glyph): Cosmetic update. + +2023-03-15 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Clean up. + +2023-03-13 Werner Lemberg + + builds/vms/apinames_vms.bash: Fix `unzip` artifact + + The problem occured when unpacking a zip file created on OpenVMS on Linux. + While OpenVMS knows many different file formats, Unix only knows stream-LF + and binary. In principle `zip` on Linux should have translated the file to + stream-LF but failed to do so. That caused the file to incorrectly contain + only one line with control-characters. + +2023-03-11 Alexei Podtelezhnikov + + [truetype] Fix recent fallout in memory management. + + * src/truetype/ttgload.c (TT_Process_Composite_Glyph, + TT_Load_Simple_Glyph): Clean up old instructions regardless of + new ones, postpone setting `control_len` and `control_data` until... + (TT_Load_Glyph): ... the exit from this function. + +2023-03-10 Jouk Jansen + + Update VMS installation support. + +2023-03-10 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Hint_Glyph): Mostly cosmetic update. + + The number of instructions is now taken from the executed context. + Technically, this means that `control_len` and `control_data` + values are no longer _used_ internally but only expose them. + +2023-03-08 Werner Lemberg + + apinames.c: Add comment. + +2023-03-07 Werner Lemberg + + [gzip] File `infback.c` is not needed. + + * src/gzip/infback.c: Remove. + * src/gzip/rules.mk (GZIP_DRV_SRCS): Updated. + +2023-03-07 Werner Lemberg + + [apinames] Fix VMS handling of overly long function names. + + Based on ideas from Jouk Jansen . + + * src/tools/vms_shorten_symbol.c: New file, taken from + + https://sourceforge.net/p/vms-ports/vmsshortsym/ci/default/tree/vms_shorten_symbol.c + + with some minor edits to allow compilation with C++ and being included in + another source code file. + + * src/tools/apinames.c: Include `vms_shorten_symbol.c`. + (PROGRAM_VERSION): Set to '0.5'. + (names_dump) [OUTPUT_VMS_OPT]: Call `vms_shorten_symbol` to get unique function + identifiers not longer than 31 characters. + +2023-03-07 Werner Lemberg + + * src/tools/apinames.c (panic): Accept variable number of arguments. + +2023-03-07 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix leak too. + +2023-03-07 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Triage memory leak. + + This leak has been introduced in the previous commit and immediately + detected: + https://chromium-review.googlesource.com/c/chromium/src/+/4313202 + +2023-03-06 Alexei Podtelezhnikov + + [truetype] Simplify memory management. + + Instead of using `Update_Max`, switch to regular FreeType memory + allocation macros, stop pre-allocating the glyph instruction arrays. + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph, + TT_Process_Composite_Glyph): Switch to regular memory allocation. + * src/truetype/ttinterp.c (Update_Max): Removed. + (TT_Load_Context): Reallocate stack and free old instructions. + (Modify_CVT_Check, Ins_WS): Switch to regular memory allocation. + * src/truetype/ttinterp.h (Update_Max): Removed. + +2023-03-06 David PROVENT + + Added information about the zlib version update in the changelog + +2023-03-06 Alexei Podtelezhnikov + + Fix a couple of MSVC warnings. + + * src/base/ftcalc.c (FT_MulAddFix): Add cast. + * src/sfnt/ttcolr.c (tt_face_get_colorline_stops, read_paint): Ditto. + +2023-03-05 Alexei Podtelezhnikov + + * builds/windows/vc2010/freetype.vcxproj: Suppress C4267 on _WIN64. + + This usually comes from `strlen` returning 64-bit `size_t`, which + we often assign to 32-bit `FT_ULong` on Windows-64 (LLP64). + +2023-03-05 Alexei Podtelezhnikov + + * src/cff/cffparse.c (cff_parser_run): Thinko. + +2023-03-05 Alexei Podtelezhnikov + + [cff] Clean up CharString number encoding. + + * src/cff/cffparser.c (cff_parser_run): Work with signed numbers. + +2023-03-05 Alexei Podtelezhnikov + + * src/cff/cffparse.c (cff_parser_run): Fix variable type. + +2023-03-04 Alexei Podtelezhnikov + + [cff] Clean up memory management in the old engine. + + * src/cff/cffparse.c (finalize_t2_strings): Fix NULL-dereferencing + in the out-of-memory situation, use `FT_FREE`. + (cff_parser_run): Use FreeType memory allocation macros and avoid + uninitialized pointers. + +2023-03-04 Alexei Podtelezhnikov + + * src/cff/cffobjs.c (cff_size_init): Synonymous change. + +2023-03-04 Alexei Podtelezhnikov + + * src/sfnt/sfobjs.c (sfnt_load_face): Shorten de-referencing. + +2023-03-04 Alexei Podtelezhnikov + + [pfr] Shorten de-referencing. + + * src/pfr/pfrobjs.c (pfr_face_done, pfr_face_init): Use closer `memory`. + * src/pfr/pfrgload.c (pfr_glyph_load_compound): Remove `loader`. + +2023-03-03 Alexei Podtelezhnikov + + * src/cff/cffobjs.c (cff_size_get_globals_funcs): Shorten de-referencing. + +2023-03-03 Alexei Podtelezhnikov + + [cff,cid,type1] Shorten de-referencing. + + * src/cff/cffobjs.c (cff_clot_init): Use immediate library reference. + * src/cid/cidobjs.c (cid_slot_init): Ditto. + * src/type1/t1objs.c (T1_GlyphSlot_Init): Ditto. + +2023-03-02 Alexei Podtelezhnikov + + * configure: Use `sed` instead of `grep`. + + This is more portable and consistent with `autogen.sh`. + +2023-03-02 Ben Wagner + + Avoid strtol on non-null-terminated data. + + Technically, `strtol` can only be used with C strings terminated with + `\0`. CID data is not generally null-terminated and often does not + contain a `\0` if it is hex-encoded. AddressSanitizer with `ASAN_OPTIONS` + containing `strict_string_checks=1` verifies this by using an adversarial + `strtol` that always reads to the terminating `\0`. + + To avoid undefined behavior from `strtol` in `cid_parser_new`, use the + parser to parse the tokens instead of attempting to parse them ad-hoc. + This will internally use `PS_Conv_Strtol` to parse the integer, which + respects the parser's limits and directly implements the PostScript + parsing rules for integers. + + * src/cid/cidparse.c (cid_parser_new): Use the parser to parse the + tokens. + + Fixes: https://bugs.chromium.org/p/chromium/issues/detail?id=1420329 + +2023-03-02 Alexei Podtelezhnikov + + * src/cff/cffload.c (cff_subfont_load): Synonymous update. + +2023-03-01 ubawurinna + + * src/gzip/README.freetype: Update version. + +2023-03-01 ubawurinna + + [gzip] Fix static linking. + + Without this patch, static linking with MS Visual Studio causes linking + errors. + + * src/gzip/ftgzip.c: Set `ZEXPORT` to nothing and `ZEXTERN` to static for + all compilers. + +2023-03-01 Werner Lemberg + + * include/freetype/internal/compiler-macros.h (FALL_THROUGH): Update. + + This follows + + https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00200.html + +2023-02-28 Alexei Podtelezhnikov + + [truetype] Treat 38 as 40 without Infinality. + + * include/freetype/ftdriver.h (TT_INTERPRETER_VERSION_38): Reinstate. + * src/truetype/ttdriver.c (tt_property_set): Fallback from 38 to 40. + +2023-02-26 Werner Lemberg + + * include/freetype/internal/compiler-macros.h (FALL_THROUGH): Update. + + This follows + + https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00159.html + +2023-02-26 Werner Lemberg + + * src/*: Replace leading underscores with trailing ones in dummy variables. + + This is to avoid clang warnings. + +2023-02-26 Karl Berry + + * configure: Don't hardcode `grep -E`. + + TeXLive still supports Solaris 5.10, where the system's `grep` doesn't + accept the `-E` option. We thus introduce an `EGREP` variable that is set + to either `grep -E` or `-egrep`. + +2023-02-26 Alexei Podtelezhnikov + + * src/cff/cffload.c (cff_encoding_load): Optimize array zeroing. + + This is unnecessary for predefined standard and expert encodings. + Even for custom encodings the arrays might be already zeroed when + CFF_FontRec is created but we keep it just in case. + +2023-02-25 Alexei Podtelezhnikov + + * src/type1/t1load.c (T1_Get_MM_Var): Optimize array zeroing. + +2023-02-25 Tamir Duberstein + + * src/base/ftsystem.c (ft_ansi_stream_io): Avoid undefined behaviour. + Also short-circuit on `offset` to avoid checking `count` a second time when + `ft_ansi_stream_io` is used for reading. + + Per ISO/IEC 9899: + + If an argument to a function has an invalid value (such as a value outside + the domain of the function, or a pointer outside the address space of the + program, or a null pointer, or apointer to non-modifiable storage when the + corresponding parameter is not const-qualified) or a type (after + promotion) not expected by a function with variable number of arguments, + the behavior is undefined. If a function argument is described as being + an array, the pointer actually passed to the function shall have a value + such that all address computations and accesses to objects (that would be + valid if the pointer did point to the first element of such an array) are + in fact valid. + + Per IEEE Std 1003.1: + + size_t fread(void *restrict ptr, size_t size, size_t nitems, + FILE *restrict stream); + + The `fread` function shall read into the array pointed to by `ptr` up to + `nitems` elements whose size is specified by `size` in bytes, from the + stream pointed to by `stream`. + + Since the first argument to `fread` is described as being an array, its + behavior is undefined when that argument is a null pointer. + + Per the documentation on `ft_ansi_stream_io`: + + If `count' is zero (this is, the function is used for seeking), a non-zero + return value indicates an error. + + Thus the intent is clear, and the call to `fread` can be skipped, avoiding + undefined behaviour. + +2023-02-21 Alexei Podtelezhnikov + + [raster] Clean up contour indexing. + + * src/raster/ftraster.c (Decompose_Curve, Convert_Glyph): Use consistent + index types (Int) and compact iterations. + +2023-02-21 Alexei Podtelezhnikov + + [autofit] Clean up contour indexing. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Refactor. + * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Ditto. + +2023-02-21 Alexei Podtelezhnikov + + * src/base/ftoutln.c (FT_Outline_Check): Fix C4701 warning. + +2023-02-21 Alexei Podtelezhnikov + + * src/sdf/ftsdf.c (get_min_distance_cubic): Fix C4701, typos. + +2023-02-20 Alexei Podtelezhnikov + + * src/base/ftstroke.c (FT_Stroker_ParseOutline): Clean up contour indexing. + +2023-02-20 Alexei Podtelezhnikov + + [base] Clean up contour indexing. + + * src/base/ftoutln.c (FT_Outline_Reverse, FT_Outline_EmboldenXY, + FT_Outline_Get_Orientation): Set the first and last indexes together. + (FT_Outline_Decompose): Ditto and check them more stringently. + * src/smooth/ftgrays.c (FT_Outline_Decompose)[STANDALONE_]: Ditto. + +2023-02-20 Alexei Podtelezhnikov + + * src/base/ftoutln.c (FT_Outline_Check): Update error code, clean up. + +2023-02-17 Alexei Podtelezhnikov + + [truetype] Hide Infinality. + + Remove Infinality as an option before its complete extraction. + + * include/freetype/ftoption.h: Remove the Infinality option. + * devel/ftoption.h: Ditto. + * include/freetype/ftdriver.h (TT_INTERPRETER_VERSION_38): Is 40 now. + +2023-02-17 Alex Ringlein + + * src/base/ftoutln.c (FT_Outline_Reverse): Anchor first contour points. + + A cubic contour has to always start from an on-point. Therefore, we + should not swap the first with the last point, which might be off, and + obtain an invalid contour. This does not matter for conic contours. + If anything, it also saves one swap there. Fixes #1207. + +2023-02-16 Werner Lemberg + + Documentation improvement for `FT_Bitmap`. + + Fixes #1205. + +2023-02-10 Alexei Podtelezhnikov + + [type1/MM] Round design coordinates. + + The design coordinates for MM fonts were not rounded. For example, + `FT_Get_Var_Design_Coordinates` returned values with fractional part. + + * src/type1/t1load.c (mm_axis_unmap): Refactor with rounding. + + * include/freetype/ftmm.h (FT_Var_Axis, FT_Set_Var_Design_Coordinates, + FT_Get_Var_Design_Coordinates): Reword documentation. + +2023-02-09 Jan Alexander Steffens (heftig) + + * builds/meson/parse_modules_cfg.py: Handle `gxvalid` and `otvalid`. + + These need a name mapping similar to what was done for other modules, + or linking will fail. + +2023-02-09 Werner Lemberg + + * build/toplevel.mk (do_dist): Fix typo. + +2023-02-09 Werner Lemberg + + * Version 2.13 released. + ========================== + + Tag sources with `VER-2-13-0'. + + * docs/VERSION.TXT: Add entry for version 2.13. + * docs/CHANGES: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.12.1/2.13/, s/2121/2130/. + + * include/freetype/freetype.h (FREETYPE_MINOR): Set to 13. + (FREETYPE_PATCH): Set to 0. + + * builds/unix/configure.raw (version_info): Set to 25:0:19. + * CMakeLists.txt (VERSION_MINOR): Set to 13. + (VERSION_PATCH): Set to 0. + +2023-02-09 Alexei Podtelezhnikov + + Comment on `FT_GlyphSlot_Slant'. + +2023-02-08 Werner Lemberg + + [autofit] Fix 'multi' compilation. + + * src/autofit/ft-hb.c: Decorate with `FT_LOCAL_DEF`. + Add ANSI boilerplate code for otherwise empty file. + * src/autofit/ft-hb.h: Include `compiler-macros.h` and `freetype.h`. + Use `FT_BEGIN_HEADER` and `FT_END_HEADER`. + Decorate with `FT_LOCAL`. + + * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `ft-hb.c`. + +2023-02-08 Werner Lemberg + + Fix `FT_LOCAL` and `FT_LOCAL_DEF` tags. + +2023-02-08 Werner Lemberg + + Fix 'fall-through' warning messages. + + Modern compilers get more insistent on that... + + * include/freetype/internal/compiler-macros.h (FALL_THROUGH): Define. + * src/*: Use it instead of `/* fall through */` comments. + +2023-02-08 Werner Lemberg + + For debugging, avoid implicit conversion from integer to double. + + Otherwise we get zillions of clang 15 warnings. + + * src/autofit/afcjk.c, src/autofit/afhints.c, src/autofit/aflatin.c, + src/base/ftobjs.c, src/base/ftoutln.c, src/cff/cffparse.c, + src/raster/ftraster.c, src/sfnt/pngshim.c, src/truetype/ttgload.c, + src/truetype/ttgxvar.c, src/truetype/ttobjs.c, src/type1/t1gload.c: Use + `double` cast in debugging and tracing macros. + +2023-02-08 Werner Lemberg + + Avoid reserved identifiers that are globally defined. + + This is mandated by the C99 standard, and clang 15 produces zillions of + warnings otherwise. + + * devel/ftoption.h, include/freetype/config/ftoption.h, + include/freetype/internal/ftmemory.h, src/autofit/afhints.h, + src/autofit/afmodule.c, src/autofit/aftypes.h, src/base/ftadvanc.c, + src/base/ftdbgmem.c, src/base/ftstream.c, src/bdf/bdflib.c, + src/truetype/ttinterp.c: Replace identifiers of the form `_foo` with `foo_`. + +2023-02-08 Werner Lemberg + + Fix minor clang and clang++ warnings. + +2023-02-08 Alexei Podtelezhnikov + + [truetype, type1] Additional variation tags. + + Sync with + https://learn.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg#registered-axis-tags + + * src/truetype/ttgxvar.h (TTAG_ital): New tag. + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use it. + * src/type1/t1load.c (T1_Get_MM_Var): Handle 'slnt' and 'ital'. + +2023-02-08 Alexei Podtelezhnikov + + * src/base/ftsynth.c (FT_GlyphSlot_Slant): Add vertical slant. + * include/freetype/ftsynth.h (FT_GlyphSlot_Slant): Update it. + +2023-02-08 anuj <95867901+anuj99@users.noreply.github.com> + + [sdf] Use 32-bit integers internally. + + * src/sdf/ftsdfcommon.h (FT_16D16, FT_26D6): Use 32-bit integers + instead of `FT_Fixed` for internal data types. `FT_Fixed` i.e. + `signed long` is 64-bit on some architectures. + +2023-02-07 Werner Lemberg + + docs/CHANGES: Updated. + +2023-02-04 Alexei Podtelezhnikov + + Comment on optional ascender and descender. + +2023-02-04 Alexei Podtelezhnikov + + * src/type1/t1afm.c (T1_Read_Metrics): Reaffirm ascender and descender. + +2023-02-04 Alexei Podtelezhnikov + + * src/type1/t1afm.c (T1_Read_Metrics): Validate ascender and descender. + + The ascender and descender are optional in the AFM specifications. + They could be omitted or even set to zero, e.g., in the current release + of URW++ base 35 fonts. + +2023-02-02 Werner Lemberg + + * src/cff/cffgload.c (cff_slot_load): Avoid memory leak. + + Fixes issue #1204. + +2023-02-01 Werner Lemberg + + * src/truetype/ttgxvar.c (tt_var_get_item_delta): Check `face->blend`. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=55581 + +2023-02-01 Werner Lemberg + + * docs/CHANGES: Add news for 'freetype-demos'. + +2023-01-30 Werner Lemberg + + * subprojects/harfbuzz.wrap, subprojects/libpng.wrap: Updated. + +2023-01-28 Werner Lemberg + + Minor changes. + + Comment fixes, typos, removing of unnecessary parentheses. + +2023-01-28 Werner Lemberg + + Whitespace. + +2023-01-27 Behdad Esfahbod + + [ttgxvar] Fix crash in COLRv1. + + This is a stopgap until issue #1202 is properly fixed. + + * src/truetype/ttxgvar.c (tt_var_get_item_delta): Check `normalizedcoords`. + +2023-01-19 Werner Lemberg + + The 'COLR' v1 API will no longer be experimental in the next release. + +2023-01-18 Alexei Podtelezhnikov + + * docs/oldlogs/ChangeLog.210: Typos. + +2023-01-18 Ben Wagner + + [base] Fix typo. + + * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Request module 't1cid', + not 'cid'. + +2023-01-18 Ben Wagner + + [base] Return error if requested driver is not found. + + In `open_face_from_buffer` it is possible that a driver is requested but + FreeType was built without the requested module. Return an error in this + case to indicate that the request could not be satisfied, rather than trying + all existing driver modules. + + * src/base/ftobjs.c (open_face_from_buffer): Return `FT_Err_Missing_Module` + if a driver is specified but not found. + +2023-01-18 Dominik Röttsches + + [sfnt] Avoid nullptr dereference in reading malformed 'COLR' v1 table. + + Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=1408044. + + * src/sfnt/ttcolr.c (tt_face_load_colr): When the 'COLR' v1 table header is + too small, don't deallocate delta set index map structures. + +2023-01-17 Werner Lemberg + + * src/tools/update-copyright: Allow execution from other repositories. + + We use this for `freetype-demos`. + +2023-01-17 Werner Lemberg + + Update all copyright notices. + +2023-01-17 Werner Lemberg + + * src/tools/no-copyright: Updated. + +2023-01-17 Ben Wagner + + [base] 'close' callback may not use `stream->memory`. + + The documentation for `FT_StreamRec::memory` states that it 'shouldn't be + touched by stream implementations'. This is true even for internal + implementations of the 'close' callback, since it is not guaranteed that + `memory` will even be set when the 'close' callback occurs. + + * src/base/ftobjs.c (new_memory_stream): stash current `memory` in + `stream->descriptor`. + (memory_stream_close): Use it. + +2023-01-17 Ben Wagner + + [base] Always close user-provided stream. + + The `FT_Open_Face` documentation states + + > If `FT_OPEN_STREAM` is set in `args->flags`, the stream in `args->stream` + > is automatically closed before this function returns any error (including + > `FT_Err_Invalid_Argument`). + + However, if the user provides a stream in `args.stream` with + `FT_OPEN_STREAM` set and a `close` function, but then for some reason passes + NULL for `aface` and a non-negative `face_index`, the error + `Invalid_Argument` is returned but the `close` callback will not be called + on the user-provided stream. This may cause resource leaks if the caller is + depending on the `close` callback to free resources. + + The difficulty is that a user may fill out a `FT_StreamRec` and pass its + address as `args.stream`, but the stream isn't really 'live' until + `FT_Stream_New` is called on it (and `memory` is set). In particular, it + cannot really be cleaned up properly in `ft_open_face_internal` until the + stream pointer has been copied into the `stream` local variable. + + * src/base/ftobj.c (ft_open_face_internal): Ensure that user-provided + `args.stream.close` is called even with early errors. + +2023-01-17 Ben Wagner + + [base] Fix leak of internal stream marked external. + + `open_face_from_buffer` allocates a new `FT_Stream` to pass to + `ft_open_face_internal`. Because this is an `FT_OPEN_STREAM`, + `ft_open_face_internal` will mark this as an 'external stream', which the + caller must free. However, `open_face_from_buffer` cannot directly free it + because the stream must last as long as the face. There is currently an + attempt at this by clearing the 'external stream' bit after + `open_face_from_buffer` returns successfully. However, this is too late as + the original stream may have already been closed and the stream on the face + may not be the same stream as originally passed. + + It is tempting to use `FT_OPEN_MEMORY` and let `ft_open_face_internal` + create the stream internally. However, with this method there is no means + to pass through a 'close' function to the created stream to free the + underlying data, which must be owned by the stream. + + A possibility is to check on success if the stream of the face is the same + as the original stream. If it is then unset the external flag. If not, + then free the original stream. Unfortunately, while no current + implementation does so, it is possible that the face still has the original + stream somewhere other than as the `FT_FaceRec::stream`. The stream needs + to remain available for the life of the face or until it is closed, + whichever comes earlier. + + The approach taken here is to let the stream own itself. When the stream is + closed it will free itself. + + * src/base/ftobjs.c (memory_stream_close): Free `stream`. + (open_face_from_buffer): Simplify error handling, since + `ft_open_face_internal` always closes `args.stream` on any error. + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54930 + +2023-01-16 Werner Lemberg + + sr/*.c: Various minor fixes. + + * src/autofit/ft-hb.c (_hb_ft_reference_table): Call `FT_UNUSED` after + variable declarations. + + * src/gxvalid/gxvjust.c (gxv_just_widthDeltaClusters_validate): Eliminate + unused variable. + + * src/gzip/ftgzip.c: Don't call GCC '-Wstrict-prototypes' pragma for C++ + compiler. + + * src/sfnt/ttcolr.c (ENSURE_READ_BYTES): Remove final semicolon to avoid + compiler warning. + + * src/sfnt/ttsvg.c (tt_face_load_svg_doc): Fix signedness warning. + +2023-01-16 Dominik Röttsches + + [sfnt] Remove temporary runtime flag for variable 'COLR' v1. + + Fixes #1187. + + * src/sfnt/ttcolr.c (top level, read_paint, tt_face_load_colr, + tt_face_free_colr, get_deltas_for_var_index_base, + tt_face_get_color_glyph_clipbox, tt_face_get_colorline_stops): Remove macro + definition `VARIABLE_COLRV1_ENABLED` and its usage. + + * src/truetype/ttdriver.c (tt_property_set): Remove parsing of + 'TEMPORARY-enable-variable-colrv1' property name. + + * src/truetype/ttobjs.h (TT_DriverRec): Remove `enable_variable_colrv1` + flag. + +2023-01-07 Werner Lemberg + + * src/autofit/ft-hb.c (_hb_ft_reference_table): Minor integration fixes. + +2023-01-07 Ben Wagner + + [truetype] Reset cvt and storage in context load. + + Currently the cvt and storage are saved and restored in `TT_RunIns`. + However, this is too granular as the cvt and storage area should be set to + the original cvt and storage area only when setting up the hinting context. + This allows for the cvt and storage area to be modified while parsing + multiple glyphs, as is the case with composite glyphs. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Remove `origCvt` and + `origStorage`. + + * src/truetype/ttinterp.c (TT_RunIns): Don't save and restore the cvt and + storage area. + (Modify_CVT_Check, Ins_WS): Switch from "if in glyph and using original data + do copy on write" to "if in glyph and not using glyph specific data do copy + on write". + +2023-01-06 Matthias Clasen + + [autofit] Don't depend on 'hb-ft'. + + The circular dependency is still there, but at least we no longer depend on + the HarfBuzz API that is only present if HarfBuzz has been built with + FreeType support, making the bootstrapping a bit easier. + + * src/autofit/ft-hb.c, src/autofit/ft-hb.h: New files, providing + `_hb_ft_font_create`, which is more or less a verbatim copy of the + corresponding HarfBuzz code from file `hb-ft.cc`. + + * src/autofit/afglobal.c (af_face_globals_new): Use it. + * src/autofit/afshaper.h: Don't include `hb-ft.h` but `ft-hb.h`. + * src/autofit/autofit.c: Include `ft-hb.c`. + + * LICENSE.TXT: Updated. + +2023-01-06 Ben Wagner + + [truetype] Keep variation store consistent. + + `tt_var_load_item_variation_store` fills out a `GX_ItemVarStore`. While it + may return an error, the item store must be left in a consistent state so + that any use or destruction of the item store can properly use or free the + data in it. Before this change the counts from the font data were read + directly into the item store before the actual allocation of the arrays to + which they referred. There exist many opportunities between the time the + counts are read and the arrays are allocated to return early due to invalid + data. When this happened the item store claimed to have entires it actually + did not, leading to crashes later when it was used. + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54449 + + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Read the counts + into local variables and store them in the item store only after the related + arrays are actually created on the item store. + +2023-01-05 Ben Wagner + + [base] Report used stream's external status. + + In `open_face` the initial stream is set on the face, along with the + information about if FreeType is the owner of the stream object itself. The + loaders may in the course of their work replace this stream with a new + stream (as is the case for 'woff' and 'woff2'), which may have a different + ownership than the initial stream object (likely the original stream object + is owned by the user and is external, while the new stream object is created + internally to FreeType and is internal). When the stream is replaced, the + face's flags are updated with the new ownership status. + + However, `open_face` cannot itself free this stream as its caller + `ft_open_face_internal` is responsible for this. In addition, in the case + of an error `open_face` cannot return an actual face with the new stream and + its ownership status to the caller. As a result, it must pass this + information back to the caller as a sort of "failed face" so that the caller + can clean up. + + `open_face` was already passing back the new stream but was not passing back + the stream ownership information. As a result the stream may not have been + free'd when needed. + + Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54700 + + * src/base/ftobjs.c (open_face): Pass back the ownership information as + well. + (ft_open_face_internal): Updated. + +2023-01-05 Noah Cabral + + fix spelling err in LICENSE.txt + +2023-01-05 Dominik Röttsches + + [sfnt] Fix color stop bounds check calculation at table end. + + Fixes https://bugs.chromium.org/p/skia/issues/detail?id=14021 + + * src/sfnt/ttcolr.c (VAR_IDX_BASE_SIZE): New macro. + (tt_face_get_colorline_stops): Fix off-by-one bounds check calculation, take + `VarColorStop` into account, and hopefully make it easier to read. + +2023-01-05 Alexei Podtelezhnikov + + * src/base/ftobjs.c (FT_Request_Metrics): Avoid division by zero. + + The division-by-zero might happen in broken fonts (see #1194). + Instead of returning a huge number from FT_DivFix and failing + to scale later, we now bail immediately. + +2022-12-20 Alexei Podtelezhnikov + + [psaux] Delay the upem validity assertion. + + Fixes #1194. + + * src/psaux/psft.c (cf2_getUnitsPerEm): Remove the upem assert. + (cf2_checkTransform): Assert the upem validity after checking the scale. + +2022-12-14 David Vanderson + Werner Lemberg + + [gzip] Make static compilation not leak global symbols. + + * src/gzip/ftgzip.c (HAVE_HIDDEN): Do not define; it is no longer needed + because everything is static. + (HAVE_MEMCPY): Define. + (zcalloc, zcfree): Remove no longer needed definitions (because `Z_SOLO` is + active). + + * src/gzip/patches/freetype-zlib.diff: Regenerated. + + Fixes #1146. + +2022-12-14 Werner Lemberg + + * src/gzip/ftzconf.h: Updated to zlib 1.2.13. + + I forgot to copy that file. + +2022-12-14 Werner Lemberg + + * builds/unix/configure.raw: Don't check for `memcpy` and `memmove`. + + We expect a C99 compiler, and both functions are part of this standard. + +2022-12-13 Werner Lemberg + + [sdf, sfnt] Handle minor compiler warnings. + + * src/sdf/ftsdf.c (get_min_distance_conic): Initialize `nearest_point`. + + * src/sfnt/ttsvg.c (find_doc): Initialize `mid_doc`. + + Fixes #1195. + +2022-12-07 Werner Lemberg + + * subprojects/zlib.wrap: Micro-update from upstream. + +2022-12-06 Jiří Malák + + * include/freetype/internal/ftcalc.h (FT_MSB): Support Open Watcom 2.0. + + Closes !232. + +2022-11-23 Luca Bacci + + * src/base/ftdbgmem.c (ft_mem_source_compare): Add FT_COMPARE_DEF. + + Closes !230. + +2022-11-21 Alexei Podtelezhnikov + + * src/autofit/afloader.c (af_loader_load_glyph): Remove `size` check. + + This is done by `FT_Load_Glyph`. + +2022-11-18 Alexei Podtelezhnikov + + Comments added. + +2022-11-16 Johan Matsson + + * src/autofit/afloader.c (af_loader_load_glyph): Fix dereference. + + This must happen after the NULL check. + + Taken from + + https://github.com/freetype/freetype/pull/2 + +2022-11-15 Alexei Podtelezhnikov + + * src/pcf/pcfutil.c ({Two,Four}ByteSwap): Use builtins or shifts. + + We trust glibc which uses shifts or builtins to swap bytes. This + must be more efficient. + +2022-11-14 Werner Lemberg + + * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50462 + +2022-11-14 Loïc Yhuel + + [meson] Use generated ftmodule.h + + ftmodule.h is generated at the root of the build directory, but FT_CONFIG_MODULES_H + (freetype/config/ftmodule.h) is used instead. + This makes the build fail when disabling modules in modules.cfg. + + * meson.build (harfbuzz_dep): Add '-DFT_CONFIG_MODULES_H='. + +2022-11-14 Loïc Yhuel + + [meson] Fix generated ftmodule.h + + The sdf module wasn't recognized, so the generated ftmodule.h had "None_renderer_class". + + * builds/meson/parse_modules_cfg.py: Handle sdf in RASTER_MODULES. + +2022-11-12 Dominik Röttsches + + Add `TT_CONFIG_OPTION_NO_BORING_EXPANSION` configuration macro. + + This gives users a possibility to deactivate new features not (yet) in the + OpenType standard. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (TT_CONFIG_OPTION_NO_BORING_EXPANSION): New macro. + + * src/truetype/ttgxvar.c (ft_var_load_avar): Use it to disable 'avar' + version 2.0 support. + +2022-11-12 Behdad Esfahbod + + [truetype] Improve bounds checks for `ItemVariationStore`. + + * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Move bounds check ... + (tt_var_get_item_delta): ... to this function, because it is safer. For + example, the 'avar' table 2.0 codepath was not performing a bounds check at + all. + +2022-11-12 Behdad Esfahbod + + [truetype] In `ItemVariationStore`, value 0xFFFF for `dataCount` is valid. + + It corresponds to outer indices of 0 to 0xFFFE. + + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Remove invalid + code. + +2022-11-11 Alexei Podtelezhnikov + + [pcf] Improve CMap efficiency and readability. + + * src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Check and walk + the encoding array indexes. + +2022-11-10 Sam James + + Fix `-Wstrict-prototypes`. + + * builds/unix/configure.raw: Fix `-Wstrict-prototypes`. + Clang 16 warns on these and they will be dropped in C23. + + * builds/unix/freetype2.m4: Ditto. + +2022-11-09 Ben Wagner + + [truetype] Check avar_segment before access + + * src/truetype/ttgxvar.c (tt_done_blend): check `avar_segment` before + accessing to free its `correspondence`. + + Reported as: + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53062 + +2022-11-09 Ben Wagner + + [truetype] Restore behavior of ft_var_load_hvvar + + * src/truetype/ttgcvar.c (ft_var_load_hvvar): restore previous behavior + + In a previous change [0] the behavior of `ft_var_load_hvvar` was changed + to not load the item variation store if it was at offset 0, but not + return an error when this happened. This broke any users, like + `tt_hvadvance_adjust`, that rely on successful completion of + `ft_var_load_hvvar` to imply that returned table's `itemStore` had been + initialized. This lead such users to dereference NULL. + + This change appears to have been unintentional and unrelated to the + actual avar2 changes. As a result, fix these NULL dereferences by + restoring the code to always attempt to initialize the `itemStore`. + + [0] ae4eb996 "[truetype] Add support for `avar` table 2.0 format." + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53061 + +2022-11-08 Werner Lemberg + + docs/CHANGES: Updated. + +2022-11-08 suzuki toshiya + + [build] use AC_CHECK_PROG() macro for libpng-config detection + + * builds/unix/configure.raw: use AC_CHECK_PROG() instead of `which` to find `libpng-config`. + +2022-11-08 suzuki toshiya + + [build] fix for make multi + + Fix "make multi" by MR !223 + + * include/freetype/internal/services/svmm.h: include ftmm.h to define FT_Get_MM_Func. + * src/truetype/ttgxvar.h: include ftmmtypes.h to use GX_AVarTable properly. + * src/base/ftmac.c: include ftdebug.h to use FT_THROW() properly. + +2022-11-08 Alexei Podtelezhnikov + + * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Accelerate the search. + + This is mostly for consistency because PFR fonts with bitmap strikes + do not seem to exist. + +2022-11-06 Alexei Podtelezhnikov + + [bdf, pfr, psnames] Accelarate charmap searches. + + The binary searches within charmaps can be accelerated because they + often contain dense continuous blocks of character codes. Within such + blocks, you can predict matches based on misses. This method has been + deployed in `bdf` since 0f122fef34; we only refactor it there. We now + use it in `pfr` and `psnames`, which speeds up the unicode charmap + access by about 50% in PFR and Type 1 fonts. + + * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Refactor. + * src/pfr/pfrcmap.c (pfr_cmap_char_{index,next}): Predict `mid` based + on the mismatch distance. + * src/psnames/psmodule.c (ps_unicodes_char_{index,next}): Ditto. + +2022-11-04 Behdad Esfahbod + + [truetype] Add support for `avar` table 2.0 format. + + See + + https://github.com/harfbuzz/boring-expansion-spec/blob/main/avar2.md + + for the specification. + + Currently, this is implemented only in most recent OS versions on Apple + platforms and in the HarfBuzz library, but it is expected to be added to the + OpenType standard soon. + + * src/truetype/ttgxvar.h (GX_AVarTableRec): New structure. + (GX_BlendRec): Use it to replace `avar_segment` with `avar_table`. + + * src/truetype/ttgxvar.c (ft_var_load_avar): Load new table version. + (ft_var_to_normalized, tt_done_blend): Extend for new format. + (ft_var_load_hvvar, ft_var_to_design): Updated. + +2022-10-24 Werner Lemberg + + Replace '1/64th' (and similar entries) with '1/64' in docs and comments. + +2022-10-24 Ivan Panchenko + + * include/freetype/*: Fix documentation typos. + +2022-10-21 Alexei Podtelezhnikov + + * src/truetype/ttgload.c: Cosmetic changes. + +2022-10-21 Alexei Podtelezhnikov + + [cff, truetype] Simplify SVG metrics scaling. + + Use pre-calculated scaling factors. Also, the advance widths used + to be rounded, which was incorrect. + + * src/cff/cffgload.c (cff_slot_load): Use `x_scale` and `y_scale`. + * src/truetype/ttgload.c (TT_Load_Glyph): Ditto. + +2022-10-20 Werner Lemberg + + * subprojects/zlib.wrap: Update to zlib version 1.2.13. + +2022-10-18 Dominik Röttsches + + [sfnt] Additional bounds checks for `COLR` v1 table handling. + + * src/sfnt/ttcolr.c (read_paint): Add `colr` argument, necessary for... + ... another use of `ENSURE_READ_BYTES`. + Update callers. + (tt_face_get_paint_layers): Ensure that the 4-byte paint table + offset can be read. + + This is a follow-up to !124 and issue + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52404 + +2022-10-18 Werner Lemberg + + [gzip] Update sources to zlib 1.2.13. + +2022-10-18 Alexei Podtelezhnikov + + * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Simplify calculations. + +2022-10-18 Werner Lemberg + + Minor formatting. + +2022-10-18 Dominik Röttsches + + [sfnt] Guard individual `COLR` v1 paint field reads. + + * src/sfnt/ttcolr.c (ENSURE_READ_BYTES): New macro. + (read_paint): Use it – after the start pointer `p` has been checked for + whether it allows reading the format byte, each successive paint table field + read need to be bounds-checked before reading further values. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52404 + +2022-10-17 Xiang Xiao + + * builds/toplevel.mk: Prefix all paths with `$(TOP_DIR)/`. + + This is useful for builds that are not started from the root directory. + +2022-10-17 Liu Kunpeng(柳鲲é¹) + + * src/base/ftsynth.c (FT_GlyphSlot_Slant): New API with custom slant. + * include/freetype/ftsynth.h (FT_GlyphSlot_Slant): Declare it. + +2022-10-15 Alexei Podtelezhnikov + + Note the lack of floating-point data types. + +2022-10-10 Werner Lemberg + + [cff] Remove `FT_CONFIG_OPTION_NO_GLYPH_NAMES`. + + This ancient option stayed completely undocumented. Given that the 'cff' + driver requires the 'psnames' module, it makes no sense today to have this + macro. + + * src/cff/cffdrivr.c (cff_services), src/cff/cffobjs.c (cff_face_init): + Remove corresponding conditional code. + +2022-10-10 Werner Lemberg + + Synchronize `ftoption.h` flavours. + +2022-10-10 Werner Lemberg + + Minor comment changes. + +2022-10-05 Alexei Podtelezhnikov + + Improve FT_Get_Name_Index docs and place it next to FT_Get_Glyph_Name. + +2022-10-04 Alexei Podtelezhnikov + + [autofit] Reset the face charmap directly. + + There is no need to validate the original charmap in `FT_Set_Charmap`. + It can be reset directly. + + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): + Use direct assignment. + * src/autofit/af{latin,cjk,indic}.c (af_latin_metrics_init): Ditto. + +2022-10-04 Alexei Podtelezhnikov + + * src/type1/t1afm.c (T1_Read_PFM): Set charmaps directly. + + As with the previous commit, we can avoid the validation checks + of `FT_Set_Charmap` and set it directly when choosing from the + available list. + +2022-10-03 Alexei Podtelezhnikov + + * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Avoid `FT_Set_Charmap`. + + Set charmap aggressively without all validations of `FT_Set_Charmap` + because we take it from the available array and only temporarily. + Even CMap Format 14 will gracefully return 0. + +2022-10-03 Alexei Podtelezhnikov + + * src/cache/ftcbasic.c (ftc_basic_family_get_count): Remove redundancy. + +2022-09-30 Werner Lemberg + + * src/psaux/pshints.c (cf2_hintmap_insertHint): Fix midpoint computation. + + Replace '(start + end) / 2' with 'start + (end - start) / 2' to avoid + overflow. + + Fixes #1180. + +2022-09-30 Werner Lemberg + + * src/psaux/pshints.c (cf2_hintmap_build): Improve debugging output. + +2022-09-29 mlugg + + [truetype] Fix undefined pointer arithmetic. + + * src/truetype/ttgxvar.c (tt_var_get_item_delta, ft_var_load_mvar): Use + `FT_OFFSET`. + +2022-09-29 Alexei Podtelezhnikov + + * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Use lighter FT_DivFix. + +2022-09-29 Ali Chraghi + + [base] FT_Attach_Stream: Make `parameters` argument constant. + +2022-09-29 Azamat Hackimov + + * src/tools/*.py: Migrate to Python 3. + + Fixes #1185, closes !205. Formatting changes according to PEP8. + +2022-09-27 Dominik Röttsches + + [sfnt] Guard access in 'COLR' table when requesting child table pointer. + + * src/sfnt/ttcolr.c (tt_face_get_colorline_stops, read_paint): Tighten + pointer bounds checks. + (get_child_table_pointer): Check whether incoming pointer `p` lies within + the 'COLR' table. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51816 + +2022-09-27 Ben Wagner + + [sfnt] Add SVG document bounds checking. + + Add a check that the document content is actually contained within the + `SVG ` table. Without this check a malformed font may claim arbitrary + memory as its document content. + + * src/sfnt/ttsvg.c (tt_face_load_svg): Take `numEntries` into account when + testing 'documentRecord' extents. + (find_doc): Rename `stream` to `document_records` for clarity. + (tt_face_load_svg_doc): Split `doc` from `doc_list` pointer for clarity. + Test that the document content is contained within the table. + Ensure minimum length of document before testing for gzip format. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51812 + +2022-09-23 Alexei Podtelezhnikov + + [base] Clean up the bitmap flow control. + + * src/base/ftbitmap.c (FT_Bitmap_Copy): Flip the copy if its pitch + is trully opposite, zero is not a positive value. + (FT_Bitmap_Convert): Set negative pitch as needed, accept negative + alignment values. + +2022-09-22 Alexei Podtelezhnikov + + [base] Discard and recreate bitmaps for copying and converting. + + Reusing target bitmaps for copying and converting is permitted. It is, + however, pointless to preserve their content before overwriting. Free- + malloc might be faster than realloc. + + * src/base/ftbitmap.c (FT_Bitmap_Copy, FT_Bitmap_Convert): Free + an old buffer and create a new one. + +2022-09-16 Dominik Röttsches + + Reject 'COLR' table if version is 1 but header too small. + + * src/sfnt/ttcolr.c (tt_face_load_colr): If the version is determined to + be 1, then the table size has to be at least the size of the v1 header. + Also, for peeking the number of base glyphs and entries in the layer list, + ensure that the table is sufficiently long. + + Fixes #1179. Original patch by Sergey Temnikov. + +2022-09-15 Werner Lemberg + + * src/otvalid/otvgsub.c (otv_SingleSubst_validate): Fix format 1 handling. + + Fixes #1181. + +2022-09-06 Dominik Röttsches + + [truetype] Reject 'fvar' loading when `num_instances` is too small. + + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Reject retrieving master when + 'fvar' values locally do not match with sanitized values from initialization + at `sfnt_init_face` time. + + Reported as + + https://bugs.chromium.org/p/chromium/issues/detail?id=1360295 + +2022-09-05 Dominik Röttsches + + [sfnt] Handle variable `COLR` v1 fonts without delta set index map + + Fixes #1178. + + * src/sfnt/ttcolr.c (get_deltas_for_var_index_base): Set outer index to + 0 and inner index to the delta index when retrieving deltas if the + `COLR` table has no delta set index map. + +2022-09-05 Dominik Röttsches + + [sfnt] Pointer sanity checks before reading layer info in 'COLR' v0 + + * src/sfnt/ttcolr.c (tt_face_get_colr_layer): Check that the pointer to + read from is within the 'COLR' table. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50633 + +2022-09-05 Werner Lemberg + + [autofit] Minor fix. + + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): Avoid + compiler warning. + +2022-09-05 Dominik Röttsches + + [sfnt] Don't require 'gvar' table to support variation fonts. + + Fixes #1172. + + * src/sfnt/sfobjs.c (sfnt_load_face): Tag font as Multiple Masters font if + `fvar` is present; do not require other tables to be present. + + * src/truetype/ttgxvar.c (tt_set_mm_blend): Allow for a missing 'gvar' table + when setting variation coordinates. However, if a 'gvar' table is actually + present, do perform a sanity check and fail on malformedness. + (TT_Get_MM_Var): Don't assume 'fvar' needs 'gvar' or 'CFF2 tables in all + cases, which is an overly tight check. + +2022-08-27 Alexei Podtelezhnikov + + * src/base/ftver.rc: Explicitly use UTF-16. + + Fixes #1177 to avoid mistranslation and other problems. + +2022-08-26 Dominik Röttsches + + [sfnt] Avoid undefined shifts in `COLR` v1 color line retrieval + + * src/sfnt/ttcolr.c (tt_face_get_colorline_stops): Disambiguate shift + behavior by using multiplication using macros from ftcalc.h. + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50573 + +2022-08-21 Sean Farrell + + CMakeLists.txt (FT_ENABLE_ERROR_STRINGS): New configuration option. + + This option uncomments FreeType configuration macro + `FT_CONFIG_OPTION_ERROR_STRINGS` to make function `FT_Error_String` return + meaningful error strings. + + This option is off by default. + +2022-08-21 Chris Liddell + + [base, type1] Better handling of out-of-memory situations. + + This follows similar code in `cff_slot_done`. + + * src/base/ftobjs.c (ft_glyphslot_done), src/type1/t1objs.c + (T1_GlyphSlot_Done): Check `internal` pointer. + + The Type1 problems was reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50057. + +2022-08-06 Tim-Philipp Müller + + ci: bump windows image and use newer runner and vs2019 + + The old 1809 runner will be decommissioned at some point. + +2022-08-04 @udoudou <> + + * src/cache/ftcmanag.c (FTC_Manager_New): Initialize `cur_weight`. + + See !192. + +2022-08-02 Alexei Podtelezhnikov + + * src/sfnt/ttload.c: Trace formatting updates. + +2022-08-02 Alexei Podtelezhnikov + + * src/psaux/psobjs.c (ps_table_release): Remove redundant casting. + +2022-08-02 Alexei Podtelezhnikov + + * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Reduce casting. + +2022-08-02 Alexei Podtelezhnikov + + [cache] Remove some casts, clean up tracing. + + * src/cache/ftcbasic.c (FTC_ImageCache_Lookup, FTC_SBitCache_Lookup): + Clean up tracing types. + * src/cache/ftccache.c (ftc_node_destroy): Ditto. + * src/cache/ftcmanag.c (FTC_Manager_Check): Ditto. + (FTC_Manager_Check, FTC_Node_Unref): Remove a cast. + * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Ditto. + +2022-08-01 Alexei Podtelezhnikov + + [autofit] Updated to reduce casting (cont'd). + + * src/autofit/afmodule.h (AF_ModuleRec): Change `default_script` type. + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): + Remove casting. + * src/autofit/afmodule.c (af_property_{set,get}): Updated accordingly. + +2022-08-01 Alexei Podtelezhnikov + + [autofit] Updated to reduce casting. + + * src/autofit/afglobal.h (AF_FaceGlobalsRec): Change `glyph_count` type. + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage, + af_face_globals_get_metrics, af_face_globals_is_digit, + af_face_globals_new): Changed local types and updated accordingly. + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Ditto. + +2022-08-01 Alexei Podtelezhnikov + + [psaux] Remove unused structure field. + + * include/freetype/internal/psaux.h (PS_TableRec): Remove `num_elems`. + * src/psaux/psobjs.c (ps_table_new): Remoove its initialization. + +2022-07-30 Dominik Röttsches + + [sfnt] Implement VarClipBox. + + * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Depending on the + format, read `var_index_base`, then retrieve and apply scaled deltas. + +2022-07-30 Dominik Röttsches + + [sfnt] Fix typo in clip box computation. + + * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Use appropriate + scale factor for `yMin` and `yMax`. + +2022-07-30 Alexei Podtelezhnikov + + [autofit] Use unsigned accounting for hints. + + * src/autofit/afhints.h (AF_AxisHintsRec): Use unsigned types. + + * src/autofit/afhints.c (af_axis_hints_new_{segment,edge}, + af_glyph_hints_get_num_segments, af_glyph_hints_get_segment_offset): + Updated accordingly. + * src/autofit/aflatin.c (af_cjk_hints_compute_edges): Ditto. + * src/autofit/afcjk.c (af_cjk_hints_compute_edges): Ditto. + +2022-07-30 Alexei Podtelezhnikov + + * src/autofit/afhints.h: Remove dead code. + +2022-07-29 Werner Lemberg + + * src/base/ftglyph.c (FT_Get_Glyph): Set `*aglyph` to NULL in case of error. + +2022-07-29 Werner Lemberg + + Fix compilation if `TT_CONFIG_OPTION_GX_VAR_SUPPORT` is not set. + + * src/sfnt/ttcolr.c: Protect relevant code with + `TT_CONFIG_OPTION_GX_VAR_SUPPORT`. + +2022-07-29 Werner Lemberg + + Fix clang14 compiler warnings. + + * include/freetype/internal/ftstream.h (FT_GET_SHORT_LE, FT_GET_USHORT_LE): + Fix type. + + * src/sfnt/ttcolr.c (get_deltas_for_var_index_base): Always return boolean + value. + (tt_face_get_colorline_stops): Fix type of `var_index_base`. + +2022-07-26 Alexei Podtelezhnikov + + [pfr] Fortify the kerning code. + + Any array index must be strictly less then the array size. Therefore, + we must reject indexes that are equal to the array size. Alternatively, + we should move the bounds check before the index decrement but that + would be confusing. + + In addition, it is ok to decrement zero (.notdef) and get UINT_MAX, + which is then automatically rejected in the bounds check. + + * src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix the bounds checking. + +2022-07-26 Werner Lemberg + + [pfr] Add some safety guards. + + * src/pfr/pfrload.c (pfr_phy_font_load): Check resolutions and number of + characters. + + Fixes #1174. + +2022-07-26 Werner Lemberg + + * src/pfr/*.c: Trivial improvements and formatting. + +2022-07-24 Werner Lemberg + + * configure: s/egrep/grep -E/ + + `egrep` is deprecated. + +2022-07-23 Ben Wagner + + [base] Build outlines in amortized constant time. + + When resizing the loader's points and contours, resize them to at least 1.5 + times their current size. The code currently only reserves as much space as + is currently required, leading to O(n^2) runtime when adding points one at a + time. + + This change does not attempt to ever shrink the loader's point and contour + storage since this was not attempted previously either. The 1.5 multiple + was chosen as a trade-off between potentially unused space and the runtime. + + * src/base/ftgloader.c (FT_GlyphLoader_CheckPoints): Implement it. + + Fixes #1173. + +2022-07-09 Dominik Röttsches + + [sfnt] Support variable 'COLR' v1 `PaintVarSkew*`. + + * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration values + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SKEW`, + `FT_COLR_PAINTFORMAT_INTERNAL_SKEW_CENTER`, and + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SKEW_CENTER`. + (read_paint): Handle new enumeration values. + +2022-07-09 Dominik Röttsches + + [sfnt] Support variable 'COLR' v1 `PaintVarRotate*`. + + * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration values + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_ROTATE` and + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_ROTATE_CENTER`. + (read_paint): Handle new enumeration values. + +2022-07-09 Dominik Röttsches + + [sfnt] Support 'COLR' v1 variable `PaintVarScale*`. + + * src/sfnt/ttcolr.c: (FT_PaintFormatInternal): New enumeration values + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE`, + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_CENTER`, + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_UNIFORM`, and + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_UNIFORM_CENTER`. + (read_paint): Handle new enumeration values. + +2022-07-09 Dominik Röttsches + + [sfnt] Support for 'COLR' v1 variable translate. + + * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration value + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_TRANSLATE`. + (read_paint): Handle new enumeration value. + +2022-07-09 Dominik Röttsches + + [sfnt] Support for 'COLR' v1 variable transforms. + + * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration value + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_TRANSFORM`. + (read_paint): Handle new enumeration value. + +2022-07-09 Dominik Röttsches + + [sfnt] Deltas for 'COLR' v1 gradient coordinates. + + * src/sfnt/ttcolr.c (read_paint) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Read and + apply deltas to radial, linear, and sweep gradient coordinates such as 'p0', + 'p1', 'p2', 'center', 'radii', and 'angles'. + +2022-07-08 Dominik Röttsches + + [sfnt] Support variable 'COLR' v1 color lines. + + * include/freetype/ftcolor.h (FT_ColorStopIterator): Add field + `read_variable` to indicate whether a variation index base should be read. + + * src/sfnt/ttcolr.c: (FT_PaintFormat_Internal): New enumerations + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_LINEAR_GRADIENT` + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_RADIAL_GRADIENT`, and + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SWEEP_GRADIENT`. + (read_color_line): New parameter `read_variable`; update callers. + (read_paint): Handle new enumerations. + +2022-07-07 Dominik Röttsches + + [sfnt] Apply variation deltas to `PaintVarSolid`. + + * src/sfnt/ttcolr.c (FT_PaintFormat_Internal_): New enumeration + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SOLID`. + + (get_deltas_for_var_index_base) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New + function to retrieve an array of delta values, which will be used for most + of 'COLR' v1 variation formats (in follow-up commits). + + (read_paint): Add `face` parameter; update caller. + Handle `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SOLID`. + +2022-07-07 Dominik Röttsches + + [sfnt] Check safety of cast to `TT_Driver` before accessing member. + + * src/sfnt/ttcolr.c (VARIABLE_COLRV1_ENABLED): Access + `enable_variable_colrv1` only if driver class matches. + +2022-07-06 Stephen Holdaway + + doc: Clarify description of `FT_Stream_IoFunc`. + + The existing documentation comments on `FT_Stream_IoFunc` hinted at the dual + seek/read behavior required for custom stream implementations to work, but + it didn't explicitly explain it. Without looking at the internals of + FreeType, it was easy for someone to assume their implementation should + handle both seek and read operations all the time. If this is done, you get + a variety of errors, but mostly just `Unknown_File_Format` (error code + 0x02). + +2022-07-04 Dominik Röttsches + + [sfnt] Load variation store for 'COLR' v1. + + * src/sfnt/ttcolr.c: Include `ttobjs.h` temporarily. + (VARIABLE_COLRV1_ENABLED): New temporary macro to detect whether variable + COLRv1 is enabled. + (Colr): New fields `var_store` and `delta_set_idx_map`. + (tt_face_load_colr, tt_face_free_colr) [VARIABLE_COLRV1_ENABLED]: Load and + free variation store data using the functions from the Multiple Masters + service. + +2022-07-03 Chris Liddell + + [base] Improve error handling in `FT_GlyphLoader_CheckPoints`. + + If `FT_GlyphLoader_CreateExtra` returns an error (and a couple of other + places), `FT_GlyphLoader_CheckPoints` would propagate the error immediately, + rather than cleaning up the partially set up `FT_GlyphLoader`. As a + consequence, a subsequent attempt to create a glyph could result in a crash. + + * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Ensure all the error + conditions exits are consistent, eventually calling `FT_GlyphLoader_Reset`. + +2022-07-03 Thomas Sondergaard + + CMakeLists.txt: Provide both 'freetype' and 'Freetype::Freetype' targets. + + FreeType can be located by consuming projects that use + `find_package(Freetype)` either via the old `MODULE` path (which uses + `FindFreetype.cmake` supplied by CMake), or via the new `CONFIG` path (which + uses `freetype-config.cmake` as supplied by this project). Up to this point + the CMake module has supplied the target `Freetype::Freetype` and the config + file provided by this project the target `freetype`. Now we supply both + `freetype` and `Freetype::Freetype` so that consuming projects can always + use the target `Freetype::Freetype` regardless of what path was taken by + `find_package(Freetype)`. + + Fixes #1165. + +2022-07-02 Werner Lemberg + + include/freetype/ftmm.h: Improve documentation. + +2022-07-01 Dominik Röttsches + + [base] Round values in `FT_MulAdd_Fix`. + + This avoids regressing Blink layout tests and makes `FT_MulAdd_Fix` delta + retrieval implementation consistent with the previous implementation, which + used `FT_fixedToInt` and included rounding. + + * src/base/ftcalc.c (FT_MulAdd_Fix): Implement it. + Also fix remaining `temp` initialization compilation issue. + + Fixes #1169. + +2022-07-01 Werner Lemberg + + Minor formatting. + +2022-06-30 Dominik Röttsches + + Fix initialisation of temp variable in new FT_MulAddFix + + src/truetype/ttgxvar.c (FT_MulAddFix): Initialise `temp`. + +2022-06-29 Dominik Röttsches + + [truetype] Perform variation store delta computation with 64-bit precision. + + * include/freetype/internal/ftmmtypes.h (FT_ItemVarDelta): Make type + explicitly 32-bit. + * include/freetype/internal/services/svmm.h + (FT_Var_Get_Item_Delta_Func): Change return type to `FT_ItemVarDelta` + * truetype/ttgxvar.h (tt_var_get_item_delta): Change return type to + `FT_ItemVarDelta`. + * truetype/ttgxvar.c (tt_var_get_item_delta): Store scalars and deltas + to intermediate array, perform computation using new method + `FT_MulAddFix`. + +2022-06-29 Dominik Röttsches + + New function `FT_MulAddFix` to compute the sum of fixed-point products. + + This function, based on the code of `FT_MulFix`, uses 64-bit precision + internally for intermediate computations. + + * include/freetype/internal/ftcalc.h, base/ftcalc.c (FT_MulAddFix): + Implement it. + +2022-06-22 Werner Lemberg + + CMakeLists.txt: Move inclusion of `FindPkgConfig` down. + + It must come after `CMAKE_TOOLCHAIN_FILE`. + + Fixes #1167. + +2022-06-22 Dominik Röttsches + + [sfnt] Upgrade stop_offset to FT_Fixed from FT_F2Dot14 + +2022-06-21 Alexei Podtelezhnikov + + * docs/CHANGES: Announce impending Infinality removal. + +2022-06-21 Alexei Podtelezhnikov + + * ttgload.c (TT_Process_Composite_Glyph): Fix a signedness warning. + +2022-06-21 Werner Lemberg + + s/fixed point/fixed-point/ + +2022-06-21 Werner Lemberg + + .gitlab-ci.yml: Correctly upgrade `meson`. + +2022-06-21 Dominik Röttsches + + Proposal: Feature control for variable COLRv1 + + * include/freetype/ftdriver.h (variable-color-v1 property): Add documentation + for variable-colr-v1 property. + * src/truetype/ttdriver.c (tt_property_set): Ingest variable-control property + when called, set to enable_variable_colrv1 driver flag. + * src/truetype/ttobjs.h (TT_DriverRec): Add enable_variable_colrv1 flag. + +2022-06-21 Xavier Claessens + + [meson] Disable FreeType in HarfBuzz fallback. + + This avoids cyclic subproject configuration when the 'harfbuzz' feature is + enabled, or `--wrap-mode=forcefallback` is used, but HarfBuzz is built as a + subproject. HarfBuzz does the same and disables HarfBuzz support when + configuring FreeType as a subproject. + + * meson.build (harfbuzz_dep): Implement it. + + * subprojects/harfbuzz.wrap: New file. + + * .gitlab-ci.yml [windows meson]: Use latest version of the meson 0.59 + series, which has a necessary bug fix to make CI work. + +2022-06-19 Alexei Podtelezhnikov + + [truetype] Clean up phantom point accounting. + + This formalizes that the phantom points appended in the outline + do not increase its point count, nor are they tagged or included + in any additional contours. Only their coordinates are stored. + They are counted in the glyph zone, however. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Infer `n_points` + from the outline size plus four phantom points. + * src/truetype/ttgxvar.h (TT_Vary_Apply_Glyph_Deltas): Remove this + argument. + * src/truetype/ttgload.c (tt_prepare_zone): Add phantom four. + (TT_Process_Simple_Glyph, load_truetype_glyph): Update all callers. + +2022-06-19 Alexei Podtelezhnikov + + [truetype/GX] Clean up phantom point adjustment. + + This moves phantom point and advance variation adjustment next to + calculations. The logic stays the same, HVAR and VVAR take priority. + + * src/truetype/ttgload.c (load_truetype_glyph): Move it from here... + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): ... to here + and check for HVAR and VVAR presence outside the main loop. + +2022-06-18 Ben Wagner + + [stream] Fix reading s32 when long is s64 + + `FT_READ_LONG`, `FT_GET_LONG`, and related macros did not return + negative values when `long` is more than 32 bits. `FT_Stream_ReadULong` + would read four bytes into the LSB of an `FT_ULong` and return that. + Since this can never set the MSb of the `FT_ULong` when `FT_ULong` is + more than 32 bits the cast to `FT_Long` never resulted in a negative + value. + + Fix this by modifying `FT_Stream_Read*` to return a type of the same + size as the bytes it is reading and changing the `FT_READ_*` and + `FT_GET_*` macros to cast to the same type returned by `FT_Stream_Read*` + but with the correctly signed type (instead of casting to what is + assumed to be the type of `var` which will happen automatically anyway). + + There exist a few cases like with the `OFF3` variants where there isn't + generally a type with the correct size. `FT_PEEK_OFF3` works around this + loading the bytes into the three most significant bits and then doing a + signed shift down. `FT_NEXT_OFF3` also already worked correctly by + casting this signed value to another signed type. `FT_Stream_GetUOffset` + works correctly but one must be careful not to attempt to cast the + returned value to a signed type. Fortunately there is only + `FT_GET_UOFF3` and no `FT_GET_OFF3`. + + All of these cases are handled correctly when reading values through + `FT_Stream_ReadFields` since it generically computes the signed value + through an `FT_Int32`. This change is essentially doing the same for + these macros. + + * include/freetype/internal/ftstream.h (FT_NEXT_*, FT_GET_*, FT_READ*): + Update macros and return types to use fixed size types for fixed size + values. + + * src/base/ftstream.c (FT_StreamGet*, FT_StreamRead*): Dito. + + Issue: #1161 + +2022-06-17 Alexei Podtelezhnikov + + [truetype/GX] Fix an old typo. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Vertical + advance is measured along y-coordinate. + +2022-06-16 Alexei Podtelezhnikov + + [truetype/GX] Clean up advance adjustment (Brrr). + + * src/truetype/ttgload.c (load_truetype_glyph): Remove remaining code. + +2022-06-16 Ben Wagner + + [type1] Directly search for eexec in private dict + + This code originally just searched for `eexec`. This was later modified + to check that the `eexec` found is valid (not in a string or comment). + This was done by searching for `eexec` as before and then, for each + `eexec` found, searching from the beginning using the correct parsing to + see if the `eexec` was still found. If the private dictionary is large + and contains many copies of `eexec` which are not valid, the initial + part of the private dictionary is scanned once for each, potentially + leading to n^2 parsing time. + + Instead of finding an initial `eexec` and then re-parsing to discover if + it is valid, drop the initial search for `eexec` and just parse to find + a valid `eexec`. This is strictly faster since the validation must + happen anyway and avoids restarting from the beginning each time an + `eexec` is found in the data. + + * src/type1/t1parse.c (T1_Get_Private_Dict): avoid n^2 parsing + + Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1328883 + +2022-06-16 Alexei Podtelezhnikov + + [truetype/GX] Clean up advance adjustment. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph, load_truetype_glyph): + Move the advance adjustment from here... + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): ... to here and + simplify arguments. + * src/truetype/ttgxvar.h (TT_Vary_Apply_Glyph_Deltas): Update prototype + with fewer arguments. + +2022-06-14 Ben Wagner + + [gzip] Handle inflate returning Z_NEED_DICT + + When `inflate` returns `Z_NEED_DICT` this is currently not reported as + an error and callers may assume that the decompression succeeded when it + did not. In particular, a compressed table in a woff file may not + actually be decompressed and written as expected, leaving the backing + memory for the expanded table uninitialized. + + * src/gzlip/ftgzip.c (FT_Gzip_Uncompress): treat `Z_NEED_DICT` as + indicating invalid data since there is no means to provide a dictionary. + + Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1335712 + +2022-06-13 Ben Wagner + + [woff] Don't allocate table entries until needed + + * src/sfnt/sfwoff.c (woff_open_font): delay allocating space for the + table entries until they are actually written out with the data. + +2022-06-12 Alexei Podtelezhnikov + + * src/sfnt/sfwoff2.c (woff2_open_font): Partial revert. + + Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47981. + +2022-06-12 Alexei Podtelezhnikov + + * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Cosmetic macro change. + +2022-06-11 Alexei Podtelezhnikov + + [woff, woff2] Avoid buffer zeroing. + + * src/sfnt/sfwoff.c (woff_open_font): Use Q-macros. + * src/sfnt/sfwoff2.c: Ditto. + (reconstruct_font): Allocate table_entry on stack. + +2022-06-10 Alexei Podtelezhnikov + + [smooth] Fix GCC LTO crashes on Windows. + + Fixes #1164 by using a volatile variable around `setjmp`. It is hard to + say how this fixes crashes related to certain link-time optimizations. + This does not decrease the rendering performance. + + * src/smooth/ftgrays.c (gray_convert_glyph_inner): Use volatile `error`. + +2022-06-09 bruvzg <@bruvzg> + + * src/smooth/ftgrays.c [FT_STATIC_RASTER]: Fix compilation. + +2022-06-06 Ben Wagner + + [svg] Set linear advances when loading SVG glyphs + + * include/freetype/freetype.h (FT_GlyphSlotRec_): update doc + * src/cff/cffgload.c (cff_slot_load): do it + * src/truetype/ttgload.c (TT_Load_Glyph): do it + + Fixes: #1156 + +2022-06-01 Ben Wagner + + [svg] Clear correct flags for doc ownership + + This issue was discovered with an SVG based font with some documents + compressed and other uncompressed. After loading the first compressed + document the ownership flag on the glyph slot was set to true but never + set to false. As a result after loading a compressed document a glyph + from an uncompressed document would load fine, but when this glyph slot + was cleared it would try to free its document resulting in a wild free. + + * src/base/ftobjs.c (ft_glyphslot_clear): clear correct flags + + Fixes: #1162 + +2022-06-01 Alexei Podtelezhnikov + + [docs] Correct favicon. + +2022-06-01 Alexei Podtelezhnikov + + [docs] Use hinted favicon. + +2022-05-27 Alexei Podtelezhnikov + + [docs] Update favicon. + +2022-05-25 Behdad Esfahbod (بهداد اسÙهبد) + + * src/sfnt/ttmtx.c (tt_face_get_metrics): Apply variations unconditionally. + + This causes a speed-up of approx. 20% for getting advance widths. + +2022-05-23 Dominik Röttsches + + [truetype] Support reading 32bit/16bit VarStore deltas + + * include/freetype/internal/ftmmtypes.h (FT_ItemVarDelta): Define type + to be used for delta arrays, upgrade to FT_long. + * src/truetype/ttgxvar.c: Adhere to long_words bit and read either + Short/Byte pairs or Long/Short pairs, as defined by spec. For better + readability, define macro for repetitive read code. + +2022-05-20 Dominik Röttsches + + [truetype] Handle 0xFFFF special value inside delta retrieval function + + * truetype/ttgxvar.c (tt_hvadvance_adjust, tt_apply_mvar, + tt_var_get_item_delta): Remove special 0xFFFF handling in favor of less + redundant handling inside the tt_var_get_item_delta function, as it is + equivalent to returning a 0 delta. Avoids code-duplication checking for + special value 0xFFFF. + +2022-05-19 Dominik Röttsches + + [truetype, snft] Add service methods for `DeltaSetIdxMap` and `VarStore`. + + This will be needed for 'COLR' v1 variation support. + + * src/truetype/ttgxvar.h (GX_ItemVarData, GX_AxisCoords, GX_VarRegion, + GX_VarItemStore, GX_DeltaSetIdxMap): Move structures to... + * include/freetype/internal/ftmmtypes.h: ... this new file. + + * include/freetype/internal/service/svmm.h (MultiMasters): Include + `ftmmtypes.h`. + (FT_Var_Load_Delta_Set_Idx_Map_Func, FT_Var_Load_Item_Var_Store_Func, + FT_Var_Get_Item_Delta_Func, FT_Var_Done_Item_Var_Store_Func, + FT_Var_Done_Delta_Set_Idx_Map_Func): New function typedefs. + (MultiMasters): Add them. + (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. + + * src/cff/cffdrivr.c (cff_load_item_variation_store, + cff_load_delta_set_index_mapping, cff_get_item_delta, + cff_done_item_variation_store, cff_done_delta_set_index_map): New wrapper + methods calling into mm service. + (cff_service_multi_masters): Updated. + + * src/truetype/ttgxvar.c (ft_var_load_item_variation_store, + ft_var_load_delta_set_index_mapping, ft_var_get_item_delta, + ft_var_done_item_variation_store, ft_var_done_delta_set_index_map): Renamed + to ... + (tt_var_load_item_variation_store, tt_var_load_delta_set_index_mapping, + tt_var_get_item_delta, tt_var_done_item_variation_store, + tt_var_done_delta_set_index_map): ... this for consistency. + Mark them as non-static. + * src/truetype/ttgxvar.h: Add corresponding prototypes. + + * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. + + * src/type1/t1driver.c (t1_service_multi_masters): Updated. + +2022-05-19 Dominik Röttsches + + [truetype] Move deallocation of `DeltaSetIdxMap` into own function. + + This is a preparation for handling `DeltaSetIdxMap` and `VarStore` as a + FreeType service. + + * src/truetype/ttgxvar.c (ft_var_done_delta_set_index_map): New function. + (tt_done_blend): Use it. + +2022-05-18 Werner Lemberg + + * builds/toplevel.mk (do-dist): Don't remove meson wrap files. + + Fixes #1157. + +2022-05-18 Werner Lemberg + + * subprojects/zlib.wrap: Update to zlib version 1.2.12. + +2022-05-18 Werner Lemberg + + REAMDE: Mention that gitlab's 'download' button doesn't work. + + This is because the `git archive` command doesn't preserve submodules. + + Note that currently there is no support for disabling the 'download' button + in gitlab (https://gitlab.com/gitlab-org/gitlab/-/issues/17032). + + Fixes issue #1158. + +2022-05-11 Werner Lemberg + + [truetype] Handle inner/outer index values 0xFFFF/0xFFFF. + + This was introduced in OpenType 1.8.4. + + * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping, + tt_hvadvance_adjust, ft_var_load_mvar, tt_apply_mvar): Handle special + inner/outer index values. + (ft_var_load_item_variation_store): Add test. + + Fixes #1154. + +2022-05-01 Werner Lemberg + + * Version 2.12.1 released. + ========================== + + Tag sources with `VER-2-12-1'. + + * docs/VERSION.TXT: Add entry for version 2.12.1. + * docs/CHANGES, docs/release: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.12.0/2.12.1/, s/2120/2121/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. + + * builds/unix/configure.raw (version_info): Set to 24:3:18. + * CMakeLists.txt (VERSION_PATCH): Set to 1. + +2022-04-30 Anuj Verma + + [sdf] Do not throw errors for invisible glyphs. + + * src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Return `FT_Err_Ok` if + width or height is zero, since some glyphs do not generate visible bitmaps. + + Fixes #1150. + +2022-04-30 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_load_face): Set `FT_FACE_FLAG_COLOR` for SVG fonts. + + Fixes #1151. + +2022-04-27 Brendan Shanks + + autogen.sh: Fix building when freetype is itself a git submodule. + + There are situations where .git is not a directory, like when + freetype is a submodule in another repository. + +2022-04-26 Alexei Podtelezhnikov + + [builds/windows] Simplify non-desktop UWP check. + + Fixes mingw compilation described in !159. + + * builds/windows/ftsystem.c: Do not use WINAPI_FAMILY_PARTITION macro. + +2022-04-25 Alexei Podtelezhnikov + + [truetype] Reset IUP flags in `TT_RunIns`. + + Fixes #1148 by moving the flag initialization back, partly reverting + 7809007a and fd03dcc1. Initializing these flags elsewhere skips 'cvt'. + + * src/truetype/ttinterp.c (TT_RunIns): Initialize the IUP flag here... + (TT_Run_Context): ... instead of here. + +2022-04-24 Xavier Claessens + + [meson] Remove `default_library=both` from `default_options`. + + It is inconsistent with what all other Meson projects do. + + It also prevents static linking to FreeType when it is a subproject because + `default_options` in a subproject takes precedence on values set on the main + project. For example, building 'GStreamer' with `-Ddefault_library=static` + would still dynamically link on FreeType unless the user also sets + `-Dfreetype2:default_library=static`. + + * meson.build: Updated. + + * .gitlab-ci.yml: Retain `both` option for testing. + +2022-04-19 Werner Lemberg + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46792 + +2022-04-16 Georg Brandl + + * src/cff/cffgload.c (cff_slot_load) [FT_CONFIG_OPTION_SVG]: Fix segfault. + + This can happen if the function is called with `size` being `NULL`. + + Fixes #1147. + +2022-04-14 Steve Lhomme + + .gitlab-ci.yml: Add a Universal Windows build target + + It's compiled for Windows 10 and up, ensuring UNICODE is set (default for UWP) + and selecting the proper WINAPI_FAMILY (WINAPI_FAMILY_APP). + + Do not try to run the UWP exe in the Docker as it doesn't work. + +2022-04-04 Ben Wagner + + [sfnt] Correct FT_ColorStopIterator documentation. + + * include/freetype/ftcolor.h (FT_ColorStopIterator): the user should not + set `p` to NULL before calling `FT_Get_Colorline_Stops`. `p` and + `num_color_stops` are set by `FT_Get_Paint`. `p` and + `current_color_stop` are updated by `FT_Get_Colorline_Stops`. + +2022-04-01 Werner Lemberg + + * builds/unix/configure.raw: Add option `--with-librsvg`. + + Since 'librsvg' is written in Rust, this option allows distributions to + avoid a dependency on the entire Rust toolchain to provide the FreeType demo + programs. + + Suggested by Lars Wendler in !156. + +2022-04-01 Werner Lemberg + + * src/sfnt/sfwoff.c (reconstruct_glyf): Fix gcc 10 warning. + +2022-04-01 Werner Lemberg + + [gzip] Update sources to zlib 1.2.12. + +2022-04-01 Eric Jing <@CPUcontrol> + + CMakeLists.txt: Fix `Info.plist` path. + + When building a framework using CMake with `add_subdirectory`, CMake must be + able to find `freetype-Info.plist` when configuring the framework + properties. + + Fixes #1145. + +2022-04-01 Werner Lemberg + + Whitespace. + +2022-04-01 Ben Wagner + + [truetype] Use SUB_LONG for component offset. + + * src/truetype/ttgload.c (TT_Process_Composite_Component): do it. + + Bug: https://crbug.com/1309429 + +2022-03-31 Werner Lemberg + + CMakeList.txt: Update code to handle recent changes for `freetype.pc`. + + Fixes #1144. + +2022-03-31 Werner Lemberg + + CMakeLists.txt: s/PKG_CONFIG/PKGCONFIG/, s/REQUIRED_/REQUIRES_/. + +2022-03-31 Werner Lemberg + + * Version 2.12.0 released. + ========================== + + Tag sources with `VER-2-12-0'. + + * docs/VERSION.TXT: Add entry for version 2.12.0. + * docs/CHANGES, docs/release: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.11.1/2.12.0/, s/2111/2120/. + + * include/freetype/freetype.h (FREETYPE_MINOR): Set to 12. + (FREETYPE_PATCH): Set to 0. + + * builds/unix/configure.raw (version_info): Set to 24:2:18. + * CMakeLists.txt (VERSION_MINOR): Set to 12. + (VERSION_PATCH): Set to 0. + + * builds/toplevel.mk (do-dist): Generate `ChangeLog` entries for all commits + since version 2.11.0 (when we stopped creating this file manually). + +2022-03-31 Werner Lemberg + + Fix clang++ warnings. + + * src/base/ftglyph.c (ft_svg_glyph_prepare), src/base/ftobj.c + (ft_glyphslot_init), src/cache/ftccmap.c (ftc_cmap_node_new), + src/cache/ftcimage.c (FTC_INode_New), src/lzw/ftlzw.c (FT_Stream_OpenLZW), + src/psaux/psobjs.c (ps_parser_load_field), src/pshinter/pshglob.c + (psh_globals_new), src/sfnt/ttsvg.c (tt_face_load_svg_doc): Initialize + variables used for allocation. + + * src/sdf/ftsdf.c (split_sdf_conic, split_sdf_cubic): Change type of + `max_splits` to FT_UInt. + (sdf_generate_bounding_box): Add cast. + +2022-03-30 Werner Lemberg + + Whitespace. + +2022-03-30 Werner Lemberg + + [builds] Fix creation of `freetype2.pc` for static-only builds. + + We have to help `pkg-config` since it can't recognize that there is no + shared library installed. + + Note that meson already does exactly the same. + + * builds/unix/configure.raw (REQUIRES_PRIVATE, LIBS_PRIVATE): Rename to... + (PKGCONFIG_REQUIRES_PRIVATE, PKGCONFIG_LIBS_PRIVATE): This. Adjust them + depending on `$enable_shared`. + (PKGCONFIG_REQUIRES, PKGCONFIG_LIBS): New variables. + + * builds/unix/freetype2.in, builds/unix/unix-def.in: Use new and updated + variables. + +2022-03-25 Werner Lemberg + + Add `FT_FACE_FLAG_SBIX_OVERLAY` and `FT_HAS_SBIX_OVERLAY`. + + * include/freetype/freetype.h (FT_FACE_FLAG_SBIX_OVERLAY, + FT_HAS_SBIX_OVERLAY): New macro. + + * src/sfnt/ttsbit.c (tt_face_load_sbit): Handle `FT_FACE_FLAG_SBIX_OVERLAY`. + Remove obsolete tracing message. + +2022-03-25 Werner Lemberg + + Add `FT_PARAM_TAG_IGNORE_SBIX`. + + This is another bit to handle 'sbix' tables as described in the OpenType + specification. + + * include/freetype/ftparams.h (FT_PARAM_TAG_IGNORE_SBIX): New macro. + + * src/sfnt/sfobjc.c (is_apple_sbix): Rename to... + (has_sbix): ... this. + Check for more sbit tables. + Handle `FT_PARAM_TAG_IGNORE_SBIX` to eventually control `has_sbix`. + Only call sbit table loader if an sbit table is present. + +2022-03-25 Werner Lemberg + + [truetype] Fix 'sbix' table handling. + + * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Correct calculation of + 'metrics->horiBearingY'. + Set vertical metrics. + + * src/sfnt/sfobjs.c (sfnt_load_face): Adjust setting of `FT_FACE_FLAG_SBIX`. + Handle metrics of fonts with 'sbix' table. + + * src/truetype/ttgload.c (TT_Load_Glyph): For 'sbix' embedded bitmaps, apply + bbox offset and bearing values of the corresponding glyph in the 'glyf' + table if it exists and has a contour. + + * src/truetype/ttobjs.c (tt_face_init): Handle font with 'sbix' table. + + Fixes issue #998. + +2022-03-25 Werner Lemberg + + Add `FT_FACE_FLAG_SBIX` and `FT_HAS_SBIX`. + + Fonts with 'sbix' tables need special handling by the application. + + * include/freetype/freetype.h (FT_FACE_FLAG_SBIX, FT_HAS_SBIX): New macros. + + * src/sfnt/sfobjs.c (sfnt_load_face): Set `FT_FACE_FLAG_SBIX` if 'sbix' + table is present. + +2022-03-25 Werner Lemberg + + * include/freetype/freetype.h (FT_LOAD_SBITS_ONLY): Tag macro as public. + +2022-03-24 Carlo Bramini + + [builds/windows] Fix WCE support. + + * builds/windows/ftsystem.c [_WIN32_WCE]: Include needed by + _alloca. + +2022-03-24 Steve Lhomme + + [build/windows] Improve UWP support. + + * builds/windows/ftsystem.c [UWP]: Wrap CreateFile2 into CreateFileA. + +2022-03-21 Werner Lemberg + + * src/sfnt/ttkern.c (tt_face_get_kerning): Exit early if no table. + + Fixes #1141. + +2022-03-20 Ben Wagner + + [woff2] Support overlap flag for simple glyphs. + + In the woff2 spec it has been proposed to allow the OVERLAP_SIMPLE flag + to be retained through the woff2 format [0]. + + [0] https://www.w3.org/TR/WOFF2/#glyf_table_format + + * src/sfnt/sfwoff2.h (GLYF_OVERLAP_SIMPLE): add glyf flag. + + * src/sfnt/sfwoff2.c (reconstruct_glyf): parse optionFlags and + overlapSimpleBitmap[]. (store_points): set OVERLAP_SIMPLE on first point's + flag if the overlap bit is set. + +2022-03-19 Werner Lemberg + + [cff] Synchronize `cff_slot_load` with `TT_Load_Glyph`. + + * src/cff/cffgload.c (IS_DEFAULT_INSTANCE): New macro. + (cff_slot_load): Use it. + +2022-03-19 Werner Lemberg + + * src/base/ftobjs.c (FT_Request_Size): Guard `face->size`. + + Fixes #1140. + +2022-03-19 Werner Lemberg + + * src/base/ftobjs.c (ft_open_face_internal): Thinko. + +2022-03-19 Ben Wagner + + [doc] FT_OUTLINE_OVERLAP was introduced in 2.10.3. + + * include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): Document when added. + +2022-03-19 Werner Lemberg + + * src/base/ftobjs.c (ft_open_face_internal): Properly guard `face_index`. + + We must ensure that the cast to `FT_Int` doesn't change the sign. + + Fixes #1139. + +2022-03-17 Werner Lemberg + + [sfnt] Avoid invalid face index. + + Fixes #1138. + + * src/sfnt/sfobjs.c (sfnt_init_face), src/sfnt/sfwoff2.c (woff2_open_font): + Check `face_index` before decrementing. + +2022-03-07 Werner Lemberg + + Documentation, whitespace. + +2022-03-05 Anuj Verma + + [sdf] Fix corner checks and improve performance. + + * src/sdf/ftsdf.c (sdf_generate_bounding_box): Always check for a corner if + two distances (for different curves) are very close. + + (sdf_conic_to): Check whether the conic curve can be treated as a line + (which happens if the control point coincides with any end point). + +2022-03-05 Anuj Verma + + [sdf] Implement deviation-based splitting for Bezier curves. + + * src/sdf/ftsdf.c (split_sdf_cubic, split_sdf_shape): Add checks to figure + out the deviation of Bezier curves and stop splitting if the curve is flat + enough. + + * src/sdf/ftsdfcommon.h (ONE_PIXEL): New macro. + +2022-03-05 Anuj Verma + + * include/freetype/freetype.h: Improve SDF documentation. + +2022-03-03 Ben Wagner + + [sfnt] Fix bounds check in SVG. + + The `SVG_DOCUMENT_LIST_MINIMUM_SIZE` macro is non trivial and not + protected by parentheses. As a result, the expression + `table_size - SVG_DOCUMENT_LIST_MINIMUM_SIZE` expands to + `table_size - 2U + SVG_DOCUMENT_RECORD_SIZE` instead of the expected + `table_size - (2U + SVG_DOCUMENT_RECORD_SIZE)`. This causes an incorrect + bounds check which may lead to reading past the end of the `SVG ` table. + + * src/sfnt/ttsvg.c (tt_face_load_svg): wrap macro definitions in + parentheses. + + Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=45179 + +2022-02-23 Ben Wagner + + [psaux] Full bounds check for OtherSubr 19. + + It is possible for OtherSubr 19 to be invoked when `decoder->buildchar` is + NULL (so that `decoder->len_buildchar` is 0), the `blend` is non-NULL with + `blend->num_designs` set to 2, and the user supplied `idx` to be large (for + example 0xFFFFFFFE). Since these are all `FT_UInt32` the existing bounds + check overflows in a well defined manner, allowing for an invalid call to + `memcpy`. + + In addition, it is possible to call OtherSubr 19 with + `decoder->len_buildchar`, `blend->num_designs`, and `idx` all zero (implying + that `blend->weight_vector` and `decoder->buildchar` are NULL). This passes + the bounds check (it is logically always fine to copy nothing starting at + index zero) but may invoke undefined behavior in `ft_memcpy` if it is backed + by `memcpy`. Calling `memcpy` with either the `src` or `dst` NULL is + undefined behavior (even if `count` is zero). + + * src/psaux/psintrp.c (cf2_interpT2CharString): Correctly check that + `blend->num_designs` can be copied to `decoder->buildchar[idx]`. + Also avoid passing NULL to `ft_memcpy`. + + Bug: https://crbug.com/1299259 + +2022-02-21 suzuki toshiya + + [cmake] Drop the support of CMake 2.x. + + * CMakeLists.txt: Require CMake 3.0 (released on 2014) or newer. + + The issue #1059 reports the difficulty to support both of + CMake 2.x and newer one by single CMakeLists.txt without + the inflation of cmake_policy() workarounds. + + For better maintainability, the support of CMake 2.x is + dropped. + +2022-02-19 Werner Lemberg + + * src/bdf/README: Updated. + +2022-02-19 Werner Lemberg + + * builds/mac/ftmac.c, src/base/ftmac.c: s|FT_MAC_H||. + +2022-02-19 Werner Lemberg + + src/sfnt/ttkern.c (tt_face_load_kern): Micro-optimize. + + A kerning table can be handled by binary search if it has equal entries. + + Fixes #1132. + +2022-02-17 Steve Lhomme + Alexei Podtelezhnikov + + [builds/windows] Add support for legacy UWP builds. + + * builds/windows/ftsystem.c: Add neccessary macro substitutions to + enable strict UWP builds. + + See !141. + +2022-02-16 Werner Lemberg + + ftmm.h: Minor documentation improvement. + +2022-02-13 Alexei Podtelezhnikov + + [pshinter] Tune PSH_STRONG_THRESHOLD_MAXIMUM value. + + Before the change, the hinting engine frequently confused horizontal + stem and serif hints making some stems too thin and some serifs too + thick. The value was tuned using serif fonts from the URW+ base 35 + collection. + + * src/pshinter/pshalgo.c [PSH_STRONG_THRESHOLD_MAXIMUM]: s/30/12/. + +2022-02-12 Werner Lemberg + + t1tables.h: Documentation improvements. + +2022-02-12 Werner Lemberg + + t1tables.h: Whitespace. + +2022-02-11 Werner Lemberg + + [type42] Fix `FT_Get_PS_Font_Private` for this format. + + Since Type42 fonts don't have a 'Private' dictionary, the return value + should be `FT_Err_Invalid_Argument`. + + * src/type42/t42drivr.c (t42_ps_get_font_private): Removed. + (t42_service_ps_info): Updated. + +2022-02-09 Alexei Podtelezhnikov + + [pshinter] Clear reused mask. + + In PS hinter, memory allocations persist until the module is done. + Therefore, we have to clear reused masks. + + * src/pshinter/pshrec.c (ps_mask_table_alloc): Clear reused mask. + +2022-02-09 Alexei Podtelezhnikov + + [pshinter] Use unsigned indices. + + This reduces casting and eliminates some checks. + + * src/pshinter/pshrec.c (ps_mask_test_bit, ps_mask_table_merge, + ps_dimension_add_t1stem, ps_hints_t1stem3): Updated. + (ps_dimension_add_counter): Updated, unnecessary checks removed. + +2022-02-08 Alexei Podtelezhnikov + + [pshinter] Fix mask merging. + + We forgot to update the number of bits when merging a larger mask + into a smaller one. This fix might have rendering effects. + + * src/pshinter/pshrec.c (ps_mask_table_merge): Inherit the number + of bits from a larger mask. There is no need to zero unused bits, + already zeroed during allocation. + (ps_mask_clear_bit): Removed. + (ps_mask_ensure): Minor. + +2022-02-08 Alexei Podtelezhnikov + + [pshinter] Revise the hint table handling. + + * src/pshinter/pshrec.c (ps_hint_table_ensure): Remove redundant size + check; avoid array zeroing because it is fully initialized when used. + (ps_hint_table_alloc): Fix off-by-one comparison and remove another + zeroing of the array elements. + +2022-02-06 Werner Lemberg + + Various minor doc fixes. + +2022-02-06 Alexei Podtelezhnikov + + [builds/windows] Add SVG to to project files. + + * builds/windows/vc2010/freetype.vcxproj: Updated. + * builds/windows/vc2010/freetype.vcxproj.filters: Updated. + * builds/windows/visualc/freetype.vcproj: Updated. + +2022-02-03 Alexei Podtelezhnikov + + * src/winfonts/winfnt.c (fnt_face_get_dll_font): Trace font resources. + +2022-02-02 Eric Jing <@CPUcontrol> + + [cmake] Fix build on MacOS. + + * CMakeLists.txt (CMAKE_OSX_ARCHITECTURES): Update value to fix the building + of a framework on MacOS. + + * builds/mac/freetype-Info.plist (CFBundleExecutable): Make identifier + lowercase only. + + Fixes #1127. + +2022-02-02 Alexei Podtelezhnikov + + [psaux] Revise `PS_Table` handling. + + The old impleemntation was not using `FT_REALLOC`, buing too careful + with the offset rebasing. It shoudl be safe to rely on the base + movements. + + * src/psaux/psobjs.c (reallocate_t1_table, shift_elements): Combine + into... + (ps_table_realloc): ... this function based on `FT_REALLOC`. + (ps_table_done): Simplified. + (ps_table_add): Updated. + +2022-02-02 Alexei Podtelezhnikov + + * src/cache/ftcmru.c (FTC_MruList_New): Explain zeroing. + +2022-01-31 Alexei Podtelezhnikov + + [cache] Partially revert 9870b6c07e2c. + + Fix crashes reported by Werner. + + * src/cache/ftcmru.c (FTC_MruList_New): Use `FT_ALLOC` again. + +2022-01-31 Werner Lemberg + + freetype.h: Minor documentation improvement. + +2022-01-31 Alexei Podtelezhnikov + + [cache] Fix fallouts from edd4fedc5427. + + Reported by Werner. + + * src/cache/ftcimage.c (FTC_INode_New): Always initialize FT_Glyph. + * src/cache/ftcsbits.c (FTC_SNode_New): Always initialize FT_SBit. + +2022-01-31 Alexei Podtelezhnikov + + Clean-up - do not doubt FT_FREE. + + * src/base/ftobjs.c (memory_stream_close): Do not reassign zero + after `FT_FREE`. + * src/sfnt/sfwoff.c (sfnt_stream_close): Ditto. + * src/sfnt/sfwoff2.c (stream_close): Ditto. + * src/psaux/psobjs.c (ps_parser_load_field): Ditto. + * src/truetype/ttgxvar.c (ft_var_load_avar, tt_set_mm_blend, + tt_set_mm_blend): Ditto. + +2022-01-30 Werner Lemberg + + * CMakeLists.txt: Include 'FindPkgConfig' module. + + Older cmake versions don't provide `pkg_check_modules` by default. + + Fixes #1126. + +2022-01-30 Alexei Podtelezhnikov + + * src/psaux/psobjs.c (ps_parser_load_field): Reduce `string` scope. + +2022-01-29 suzuki toshiya + + [cmake] Check the availability of `bzip2.pc'. + + (CMakeLists.txt): Check the availability of `bzip2.pc'. + + * If `bzip2.pc' is available, Requires.private should include + bzip2, but Libs.private should not include -lbz2. + + * If `bzip2.pc' is unavailable, Requires.private cannot include + bzip2, but Libs.private should include -lbz2. + + Fix #897. + +2022-01-28 Werner Lemberg + + * unix/configure.raw: We need 'librsvg' version 2.46.0 or newer. + + Older versions don't have function `rsvg_handle_get_intrinsic_dimensions`. + +2022-01-28 Alexei Podtelezhnikov + + Minor clean-ups. + + * src/base/ftrfork.c (raccess_make_file_name): Do not set error. + * src/sfnt/sfdriver.c (get_win_string, get_apple_string): Ditto. + * src/cff/cffobjs.c (cff_strcpy): Do not confuse about error. + * src/psaux/psobjs.c (ps_table_done): Ditto. + * src/truetype/ttgxvar.c (ft_var_readpacked*, ft_var_load_avar): Ditto. + +2022-01-27 Ben Wagner + + Document `FT_Outline_Decompose` degenerate segments. + + `FT_Outline_Decompose` does not filter out and can return degenerate + segments in an outline. This can be surprising when attemping to + stroke such an outline. Clarify the existing documentation on this + matter to cover all forms of degeneracy (without specifying exactly + how they will be reported), why they might arise, and better explain in + what cases they may be an issue. + + * include/freetype/ftoutlin.h (FT_Outline_Decompose): update + documentation. + + Fixes #952. + +2022-01-27 Anuj Verma + + Fix sdf computation while `USE_SQUARED_DISTANCES`. + + Function `map_fixed_to_sdf` expects spread to be absolute + and not squared. + + * src/sdf/ftbsdf.c (finalize_sdf): Pass absolute spread + while `map_fixed_to_sdf`. + + * src/sdf/ftsdf.c (sdf_generate_bounding_box): Ditto. + +2022-01-27 Tapish Ojha + + [sfnt] Improve sRGB constants. + + * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use slightly + more precise values. + + Fixes #1018. + +2022-01-27 Werner Lemberg + + docs/release: Updated. + +2022-01-26 Alexei Podtelezhnikov + + * src/pfr/pfrload.c (pfr_phy_font_load): Use FT_QNEW_ARRAY. + +2022-01-26 Alexei Podtelezhnikov + + * src/sdf/ftsdf.c (sdf_*_new): Use standard macro. + +2022-01-26 Alexei Podtelezhnikov + + [pcf] Delay encoding allocation and avoid its zeroing. + + * src/pcf/pcfread.c (pcf_get_encodings): Refactor and use FT_QNEW_ARRAY. + +2022-01-25 Werner Lemberg + + Aarg, typo. + +2022-01-25 Werner Lemberg + + freetype.h: More updates to `FT_LOAD_COLOR` description. + +2022-01-25 Werner Lemberg + + * builds/unix/configure.raw (FT_DEMO_CFLAGS): Pass `-DHAVE-LIBRSVG`. + + This helps in decoupling library support from `pkg-config` for other + platforms. + +2022-01-25 Werner Lemberg + + Update documentation for `FT_LOAD_COLOR`. + +2022-01-24 Ben Wagner + + [pshinter] Ensure all point flags are initialized. + + Only off curve point flags were fully initialized. + + * src/pshinter/pshalgo.c (psh_glyph_init): always initialize flags. + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43930 + +2022-01-24 Werner Lemberg + + .mailmap: Typo. + +2022-01-23 Werner Lemberg + + * src/svg/ftsvg.c (ft_svg_property_set): Disallow NULL pointers. + +2022-01-23 Werner Lemberg + + .mailmap: Updated. + +2022-01-23 Werner Lemberg + + More documentation on handling OT-SVG. + +2022-01-23 Werner Lemberg + + * src/svg/ftsvg.c: Rename `svg_hooks` to `svg-hooks` for consistency. + +2022-01-22 Werner Lemberg + + [sfnt] Reject malformed SVG tables. + + * src/sfnt/ttsvg.c (SVG_TABLE_HEADER_SIZE, SVG_DOCUMENT_RECORD_SIZE, + SVG_DOCUMENT_LIST_MINIMUM_SIZE, SVG_MINIMUM_SIZE): New macros. + (tt_face_load_svg): Check offsets. + Check table and record sizes. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43918 + +2022-01-22 Alexei Podtelezhnikov + + * src/psaux/psobjs.c (ps_table_new): Revert to zeroing. + +2022-01-20 Alexei Podtelezhnikov + + [psaux, type1, type42] Avoid annecessary zeroing. + + * src/psaux/psobjs.c (ps_table_new): Use FT_QNEW_ARRAY. + * src/type1/t1load.c (parse_encoding): Ditto. + * src/type42/t42parse.c (t42_parse_encoding): Ditto. + +2022-01-20 Werner Lemberg + + [builds/unix] Handle 'librsvg' for demo programs. + + * builds/unix/configure.raw: Check for 'librsvg'. + (LIB_CLOCK_GETTIME): Don't call `AC_SUBST` on this but on... + (FT_DEMO_CFLAGS, FT_DEMO_LDFLAGS): ... these two new variables. + + * builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): Replaced by... + (FT_DEMO_CFLAGS, FT_DEMO_LDFLAGS): ... these two new variables. + +2022-01-20 Moazin Khatti + + Add 'svg' module for OT-SVG rendering. + + * CMakeLists.txt (BASE_SRCS): Add svg module file. + * meson.build (ft2_public_headers): Add `otsvg.h`. + + * modules.cfg (RASTER_MODULES): Add `svg` module. + + * builds/meson/parse_modules_cfg.py: Add svg module. + + * include/freetype/config/ftmodule.h: Add `ft_svg_renderer_class`. + * include/freetype/fterrdef.h: Add `Invalid_SVG_Document` and + `Missing_SVG_Hooks` error codes. + * include/freetype/internal/fttrace.h: Add tracing for `otsvg`. + * include/freetype/internal/svginterface.h: New file. It adds an interface + to enable the presetting hook from the `base` module. + * include/freetype/otsvg.h (SVG_Lib_Init_Func, SVG_Lib_Free_Func, + SVG_Lib_Render_Func, SVG_Lib_Preset_Slot_Func): New hooks for SVG rendering. + (SVG_RendererHooks): New structure to access them. + + * src/base/ftobjs.c: Include `svginterface.h`. + (ft_glyphslot_preset_bitmap): Add code for presetting the slot for SVG + glyphs. + (ft_add_renderer): Updated. + + * src/svg/*: New files. + +2022-01-20 Moazin Khatti + + Add `FT_Glyph` support for OT-SVG glyphs. + + * include/freetype/ftglyph.h (FT_SvgGlyphRec, FT_SvgGlyph): New structure. + + * src/base/ftglyph.c: Include `otsvg.h`. + (ft_svg_glyph_init, ft_svg_glyph_done, ft_svg_glyph_copy, + ft_svg_glyph_transform, ft_svg_glyph_prepare): New function. + (ft_svg_glyph_class): New class. + (FT_New_Glyph, FT_Glyph_To_Bitmap): Updated to handle OT-SVG glyphs. + * src/base/ftglyph.h: Updated. + +2022-01-20 Moazin Khatti + + [truetype, cff] Add code to load SVG document. + + * src/cff/cffgload.c (cff_slot_load): Add code to load SVG doc. + * src/truetype/ttgload.c (TT_Load_Glyph): Add code to load SVG doc. + +2022-01-20 Moazin Khatti + + Add code to load OT-SVG glyph documents. + + * include/freetype/config/ftheader.h (FT_OTSVG_H): New macro. + * include/freetype/freetype.h (FT_FACE_FLAG_SVG, FT_HAS_SVG): New macros. + (FT_LOAD_SVG_ONLY): New internal macro. + * include/freetype/ftimage.h (FT_Glyph_Format): New enumeration value + `FT_GLYPH_FORMAT_SVG`. + * include/freetype/internal/ftobjs.h (FT_GLYPH_OWN_GZIP_SVG): New macro. + * include/freetype/internal/fttrace.h: Add `ttsvg` for `ttsvg.c`. + * include/freetype/internal/sfnt.h(load_svg, free_svg, load_svg_doc): New + functions. + * include/freetype/internal/tttypes.h (TT_FaceRec): Add `svg` for + the SVG table. + * include/freetype/otsvg.h (FT_SVG_DocumentRec): New structure to hold the + SVG document and other necessary information of an OT-SVG glyph in a glyph + slot. + * include/freetype/tttags.h (TTAG_SVG): New macro. + + * src/base/ftobjs.c: Include `otsvg.h`. + (ft_glyphslot_init): Allocate `FT_SVG_DocumentRec` in `slot->other` + if the SVG table exists. + (ft_glyphslot_clear): Free it upon clean-up if it is a GZIP compressed + glyph. + (ft_glyphslot_done): Free the document data if it is a GZIP compressed + glyph. + (FT_Load_Glyph): Don't auto-hint SVG documents. + + * src/cache/ftcbasic.c (ftc_basic_family_load_glyph): Add support for + FT_GLYPH_FORMAT_SVG. + + * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttsvg.c`. + * src/sfnt/sfdriver.c: Include `ttsvg.h`. + (sfnt_interface): Add `tt_face_load_svg`, `tt_face_free_svg` and + `tt_face_load_svg_doc`. + * src/sfnt/sfnt.c: Include `ttsvg.c`. + * src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Add code to load and + free data of the the SVG table. + * src/sfnt/ttsvg.c: New file, implementing `tt_face_load_svg`, + `tt_face_free_svg` and `tt_face_load_svg_doc`. + * src/sfnt/ttsvg.h: Declarations of the SVG functions in + `ttsvg.c`. + +2022-01-20 Moazin Khatti + + Add flag `FT_CONFIG_OPTION_SVG`. + + This flag is going to be used to conditionally compile support for OT-SVG + glyphs. FreeType will do the parsing and rely on external hooks for + rendering of OT-SVG glyphs. + + * devel/ftoption.h, include/freetype/config/ftoption.h + (FT_CONFIG_OPTION_SVG): New flag. + +2022-01-20 Alexei Podtelezhnikov + + [pshinter] Avoid unnecessary zeroing. + + * src/pshinter/pshalgo.c (psh_hint_table_init,psh_glyph_init, + psh_glyph_interpolate_normal_points): Use FT_QNEW_ARRAY. + +2022-01-20 Alexei Podtelezhnikov + + * include/freetype/freetype.h: Clarify `FT_Size` life cycle. + +2022-01-20 Alexei Podtelezhnikov + + [base] Undefined scale means no scale. + + It might be surprising that FreeType does not have default ppem and + the size has to be set explicitly or face undefined behavior with + undefined variables and errors. This offers an alternative to + missing or zero scale by simply setting FT_LOAD_NO_SCALE. Defined + behavior is bettr than undefined one. + + This is alternative to !132 and discussed in + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43708 + + * src/base/ftobjs.c (FT_Load_Glyph): Deal with zero scale. + * include/freetype/freetype.h: Document it. + +2022-01-18 Alexei Podtelezhnikov + + * src/autofit/afglobal.c (af_face_globals_new): Reduce zeroing. + + Everything in AF_FaceGlobals is initialized except metrics. Those + are zeroed here and initialized on demand later. + +2022-01-16 Alexei Podtelezhnikov + + [bdf,type1] Avoid unnecessary hash zeroing. + + * src/bdf/bdflib.c (_bdf_parse_start): Use `FT_QALLOC`. + * src/type1/t1load.c (parse_subrs): Use `FT_QNEW`. + +2022-01-16 Ozkan Sezer + + Add Watcom C/C++ calling. + + In the unlikely case the source is built with OpenWatcom's -ec? + switches to enforce a calling convention, the qsort() compare + function must still be set to __watcall. + + * include/freetype/internal/compiler-macros.h (FT_COMPARE_DEF): + Updated. + +2022-01-15 Ben Wagner + + [pshinter] Avoid accessing uninitialized zone. + + The `normal_top.count` may be 0, implying no `normal_top.zones` exist. + The code must not access these (non-existent) `normal_top.zones`. + + * src/pshinter/pshalgo.c (ps_hints_apply): Do not assume that + `normal_top.zones[0]` is initialized. Test `normal_top.count` + before using `normal_top.zones[0]`. Do not rescale if there are no + `zones`. + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43675 + +2022-01-15 Alexei Podtelezhnikov + + [cache] Avoid unnecessary zeroing. + + * src/cache/ftccmap.c (ftc_cmap_node_new): Use `FT_QNEW`. + * src/cache/ftcimage.c (FTC_INode_New): Ditto. + * src/cache/ftcsbits.c (FTC_SNode_New): Ditto. + +2022-01-15 Ozkan Sezer + + Add Watcom C/C++ support. + + * include/freetype/config/integer-types.h: Make sure `long long` is + used then available. + * include/freetype/internal/ftcalc.h (FT_MSB): Add Watcom C/C++ pragma. + +2022-01-15 Alexei Podtelezhnikov + + * src/sdf/ftbsdf.c (ED): s/near/prox/. + + This works around the Watcom C definition of `near` as restricted + __near. + +2022-01-15 Alexei Podtelezhnikov + + * include/freetype/internal/compiler-macros.h [FT_COMPARE_DEF]: Tighten. + + This works around Watcom C library using __watcall. + +2022-01-14 Alexei Podtelezhnikov + + * src/pshinter/pshglob.c (psh_globals_new): Avoid zeroing. + + This large allocation is followed by careful initialization. Whatever + is missed should be initialized manually. + +2022-01-14 Alexei Podtelezhnikov + + * src/base/fthash.c (hash_insert): Avoid unnecessary zeroing. + +2022-01-14 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (_bdf_parse_glyphs): Remove redundant assignment. + +2022-01-13 Alexei Podtelezhnikov + + * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Avoid unnecessary zeroing. + +2022-01-13 Ben Wagner + + [bzip2] Reset bzip stream on any error. + + According to the bzip documentation it is undefined what will happen if + `BZ2_bzDecompress` is called on a `bz_stream` it has previously returned an + error against. If `BZ2_bzDecompress` returns anything other than `BZ_OK` + the only valid next action is `BZ2_bzDecompressEnd`. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43564 + + * src/bzip2/ftbzip2.c (FT_BZip2FileRec_): Add `reset` to track the need to + reset the stream. + (ft_bzip2_file_init): Initialize `reset` to 0. + (ft_bzip2_file_reset): Set `reset` to 0 after resetting. + (ft_bzip2_file_fill_output): Set `reset` to 1 when `BZ2_bzDecompress` + returns anything other than `BZ_OK`. + +2022-01-12 Werner Lemberg + + .gitlab-ci.yml: Minor comment cleanups. + +2022-01-12 Azamat H. Hackimov + + .gitlab-ci.yml: Add steps to `before_script` to ensure recent CA. + + Fetch current list of valid CAs from Windows Update and manually import them + to trusted datastore. This action is required to make downloads work from + sites that need recent Let's Encrypt ISRG Root X1 certificate. + +2022-01-11 Ben Wagner + + Revert "[bzip2] Avoid use of uninitialized memory." + + This reverts commit d276bcb7f0c02c20d3585b2e5626702df6d140a6. + + The original commit did avoid the use of uninitialized memory. However, + it appears that the original commit is no longer required. The + underlying issue was resolved by a change in freetype2-testing "Build + bzip2 correctly." [0]. Prior to [0] bzip2 was built without msan, so + bzip2 writes were not tracked or considered initialized. Clearing + `buffer` in the original commit allowed msan to see the `buffer` content + initialized once in FreeType code, but msan saw no writes into buffer + from bzip2. With bzip2 now built with msan, the bzip2 writes are + properly instrumented and msan sees the bzip2 writes into the buffer. As + a result the original commit can be safely reverted to allow for better + detection of other uninitialized data scenarios. + + * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Revert to using `FT_QNEW`. + + [0] https://github.com/freetype/freetype2-testing/commit/3c052a837a3c960709227a0d6ddd256e87b88853 + +2022-01-11 Ben Wagner + + [type42] Track how much type42 ttf data is available. + + Currently `T42_Open_Face` eagerly allocates 12 bytes for the ttf header + data which it expects `t42_parse_sfnts` to fill out from /sfnts data. + However, there is no guarantee that `t42_parse_sfnts` will actually be + called while parsing the type42 data as the /sfnts array may be missing + or very short. This is also confusing behavior as it means + `T42_Open_Face` is tightly coupled to the implementation of the very + distant `t42_parse_sfnts` code which requires at least 12 bytes to + already be reserved in `face->ttf_data`. + + `t42_parse_sfnts` itself eagerly updates `face->ttf_size` to track how + much space is reserved for ttf data instead of traking how much data has + actually been written into `face->ttf_data`. It will also act strangely + in the presense of multiple /sfnts arrays. + + * src/type42/t42objs.c (T42_Open_Face): ensure `ttf_data` is initialized + to NULL. Free `ttf_data` on error. + + * src/type42/t42parse.c (t42_parse_sfnts): delay setting `ttf_size` and + set it to the actual number of bytes read. Ensure `ttf_data` is freed + if there are multiple /sfnts arrays or there are any errors. + +2022-01-11 Dominik Röttsches + + [sfnt] Fix limit checks for `COLR` v1 ClipBoxes + + * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Fix off-by-one in + limit checks. + +2022-01-11 Werner Lemberg + + Update all copyright notices. + +2022-01-11 Werner Lemberg + + * src/sfnt/ttcolr.c (read_paint): Fix undefined left-shift operation. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43151 + +2022-01-11 Werner Lemberg + + * src/type42/t42objs.c (T42_Open_Face): Avoid use of uninitialized memory. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43508 + +2022-01-11 Werner Lemberg + + .gitlab-ci.yml: Fix typo in previous commit. + +2022-01-11 Werner Lemberg + + .gitlab-ci.yml: Update Windows image. + + The old image produced errors like + + ``` + Downloading zlib patch from + https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch + A fallback URL could be specified using patch_fallback_url key in the wrap file + WrapDB connection failed to + https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch + with error + + ``` + +2022-01-11 Werner Lemberg + + * subprojects/zlib.wrap: Update from upstream. + +2022-01-10 Werner Lemberg + + * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Add limit checks. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40716 + +2022-01-10 Werner Lemberg + + [zlib] Don't typedef `ptrdiff_t`. + + While using zlib in 'solo' mode (via the `Z_SOLO` macro), we actually + include some standard header files, making the typedef fail on systems where + the native `ptrdiff_t` type differs. + + Fixes #1124. + + * src/zlib/zutil.h: Comment out definition; it doesn't work on Windows. + + * src/zlib/patches/freetype-zlib.diff: Updated. + +2022-01-10 Werner Lemberg + + [zlib] Some organizational changes. + + We now first apply zlib's `zlib2ansi` script, then FreeType's patch file. + + * src/gzip/README.freetype: Updated. + + * patches/0001-zlib-Fix-zlib-sources-to-compile-for-FreeType.patch: Renamed + to... + * patches/freetype-zlib.diff: This. + Clean up description, then regenerate it as follows: + + - Copy unmodified files from `zlib` repository. + - Run `zlib2ansi` script. + - Run `git diff -R > patches/freetype-zlib.diff.new`. + - Insert patch description of old diff file, then replace old diff with + new diff file. + +2022-01-09 David Turner + + [gzip] Update sources to zlib 1.2.11 + + This can be tested by building with the Unix development build + + make setup devel + make + + or by building the freetype-demos programs with + + meson setup build -Dfreetype2:zlib=internal + meson compile -C out + + and trying to run `ftview` with a `.pcf.gz` font file. + + * src/gzip/ftgzip.c, src/gzip/rules.mk: Update for new zlib sources. Also + remove the temporary fix introduced in commit 6a431038 to work around the + fact that the internal sources were too old. + + * src/gzip/README.freetype: New file describing the origin of the sources + and how they were modified. + + * src/gzip/patches/*: Patch files applied to original sources. + + * src/gzip/*: Updated zlib sources with the patch file(s) from + `src/gzip/patches/` applied, followed by a conversion with zlib's + `zlib2ansi` script. + +2022-01-09 David Turner + + [meson] Change Zlib configuration option. + + * meson_options.txt, meson.build: Change the format of the 'zlib' meson + build configuration option to be a combo with the following choices: + + - none: Do not support gzip-compressed streams at all. + + - internal: Support gzip-compressed streams using the copy of the gzip + sources under `src/gzip/`; this should only be used during development + to ensure these work properly. + + - external: Support gzip-compressed streams using the 'zlib' Meson + subproject, linked as a static library. + + - system: Support gzip-compressed streams using a system-installed version + of zlib. + + - auto: Support gzip-compressed streams using a system-installed version + of zlib, if available, or using the 'zlib' subproject otherwise. This + is the default. + + - disabled: Backward-compatible alias for 'none'. + + - enabled: Backward-compatible alias for 'auto'. + +2022-01-09 Werner Lemberg + + [bzip2] Avoid use of uninitialized memory. + + * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Don't use `FT_QNEW` but + `FT_NEW` for setting up `zip` to avoid uninitialized memory access while + handling malformed PCF fonts later on. + + Fixes + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42800 + +2022-01-09 Alexei Podtelezhnikov + + [sfnt] Fix off-by-one error. + + The 0-base index is equal to the number of previosly parsed entries. + It is an error to adjust it by one to get the number truncated by + a stream error. This is probably inconsequential because valid + entries are correctly accounted for. + + * src/sfnt/ttload.c (check_table_dir): Do not adjust the truncated + number of tables. + +2022-01-08 Werner Lemberg + + [sfnt, type42] Correct previous commit. + + Really fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42773. + + * src/sfnt/ttload.c (check_table_dir): Revert change. + + * src/type42/t42.parse.c (t42_parse_sfnts): Don't use `FT_QREALLOC` but + `FT_REALLOC` for setting up `ttf_data` to avoid uninitialized memory access + while handling malformed TrueType fonts later on. + +2022-01-07 Werner Lemberg + + * src/sfnt/ttload.c (check_table_dir): Initialize `table`. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42773 + +2022-01-07 Werner Lemberg + + [sfnt] Avoid 'runtime error: applying zero offset to null pointer'. + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_byte_aligned): Exit early if + `line` is NULL. + +2022-01-07 Werner Lemberg + + [autofit, pshinter] Use `FT_OFFSET`. + + This avoids + + ``` + runtime error: applying zero offset to null pointer + ``` + + warnings of clang's undefined behaviour sanitizer. + + * src/autofit/afcjk.c (af_cjk_hints_link_segments, + af_cjk_hints_compute_edges, af_cjk_hints_compute_blue_edges, + af_cjk_hint_edges, af_cjk_align_edge_points): Do it. + + * src/autofit/afhints.c (af_glyph_hints_align_edge_points, + af_glyph_hints_align_strong_points): Ditto. + + * src/autofit/aflatin.c (af_latin_metrics_init_widths, + af_latin_hints_link_segments, af_latin_hints_compute_edges, + af_latin_hints_compute_blue_edges, af_latin_hint_edges): Ditto. + + * src/pshinter/pshalgo.c (psh_hint_table_init): Ditto. + +2022-01-06 Ben Wagner + + [truetype] Reset localpoints when varying cvt. + + When iterating over the cvt tuples and reading in the points it is necessary + to set all of `localpoints`, `points`, and `point_count` in all cases. The + existing code did not reset `localpoints` to `NULL` when there were no + private point numbers. If the previous tuple did have private point numbers + and set `localpoints` to `ALL_POINTS` this would not be cleared and the + wrong branch would be taken later, leading to possible heap buffer overflow. + + * src/truetype/ttgxvar.c (tt_face_vary_cvt): Reset `localpoints` to `NULL` + when it isn't valid. + + Fixes: https://crbug.com/1284742 + +2022-01-02 Werner Lemberg + + * builds/unix/configure.raw: Restore `SYSTEM_ZLIB` variable. + + This was accidentally removed with commit 93ebcbd0 almost eight years ago. + +2021-12-27 Alexander Borsuk + + Fix warnings for CMake Unity builds. + + * src/cache/ftcbasic.c (FT_COMPONENT): Undefine macro before redefinition. + * src/smooth/ftgrays.c (TRUNC, FRACT): Ditto. + +2021-12-18 Alexander Borsuk + + Clang-Tidy warning fixes. + + * src/base/ftobjs.c (FT_Get_Paint): Operator has equivalent nested operands. + * src/bdf/bdflib.c (_bdf_add_property): Value stored to `fp` is never read. + * src/sdf/ftbsdf.c (bsdf_init_distance_map): Value stored to `pixel` is + never read. + * src/sdf/ftsdf.c (split_sdf_shape): Value stored to `error` is never read. + +2021-12-17 Eli Schwartz + + * meson.build: Optimize lookup for `python3` program. + + The python module's `find_installation` method is intended to provide + routines for compiling and installing python modules into the + `site-packages` directory. It does a couple of slow things, including run + an introspection command to scrape sysconfig info from the detected + interpreter, which are not needed for the sole use case of invoking the + found installation as an executable. + + Furthermore, when invoked without the name or path of a python binary, it is + hardcoded to always look for `python3` corresponding to the interpreter + meson itself uses to run. So using `find_installation` did not even allow + detecting `python2` as a fallback. + + Instead, switch to a simple `find_program` lookup that finishes as soon as + the program is found. + +2021-12-17 Eli Schwartz + + * builds/meson/*.py: Fix name of python executable for auxiliary scripts. + + The previous change to check the return code of `run_command` invocations + caused the CI to fail. Although most scripts used `python_exe` as the + program command, the script to determine the project version did not. + + But, all scripts used `python` as the shebang, and this is not available on + all systems. Particularly Debian does not provide a `python` command, + though `python3` does exist. This meant that formerly the version number + was lacking, and now the build simply fails. + + Instead, rely on `python3` since it is guaranteed to exist when running + meson, and `python2` is end of life anyway. + +2021-12-17 Eli Schwartz + + * meson.build: Check the return value of `run_command`. + + By default, errors are not checked and a command that is somehow broken will + just capture incorrect output (likely an empty string). Current development + versions of meson now raise a warning for this implicit behavior, and advise + explicitly setting the `check:` keyword argumend to determine whether a + failing return code should be considered an error. + + Since none of the commands in this project are expected to fail, mark them + as required to succeed. + +2021-12-13 Alexei Podtelezhnikov + + [truetype] Upstream the hdmx binary search. + + * src/truetype/ttobjs.h (TT_SizeRec): Add `widthp` for the hdmx + widths. + * src/truetype/ttobjs.c (tt_size_reset): Initialize `widthp` even + though it might never be used by the interpreter. + * src/truetype/ttgload.c (tt_loader_init): Avoid repeated searches + in the hdmx table. + +2021-12-12 Alexei Podtelezhnikov + + [truetype] Reset the IUP-called flags for each subglyph. + + This fixes fall-out from 7809007a5b88b15, where the composite + accents were no longer hinted. + + * src/truetype/ttgload.c (ttloader_init): Move the IUP-called flag + initialization from here... + * src/truetype/ttinterp.c (TT_Run_Context): ... to here. + +2021-12-12 Alexei Podtelezhnikov + + [truetype] Binary search through the `hdmx` records. + + The `hdmx` table is supposed to be sorted by ppem size, which + enables binary search. We also drop the check for the sufficient + length of the record because it is now enforced when the table + is loaded. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Store the `hdmx` + record pointers sorted by ppem instead of ppem's themselves. + * src/truetype/ttpload.c (tt_face_load_hdmx): Prudently sort records. + (tt_face_get_device_metrics): Implement binary search to retrieve + advances. + +2021-12-12 Alexei Podtelezhnikov + + [truetype] Honor FT_LOAD_ADVANCE_ONLY if `hdmx` is usable. + + This simply shortcuts the glyph loading if FT_LOAD_ADVANCE_ONLY + is specified by FT_Get_Advances and the `hdmx` data are located. + Particularly, the classic v35 interpreter or "verified" ClearType + fonts might see 100x speed up in retrieving the hdmx cache. + + * src/truetype/ttgload.c (TT_Load_Glyph): Insert the shortcut. + +2021-12-12 Alexei Podtelezhnikov + + [truetype] Initialize the loader with `hdmx` data. + + The `hdmx` matching can be done before the glyph is loaded. + + * include/freetype/internal/tttypes.h (TT_LoaderRec): Add a field. + * src/truetype/ttgload.c (compute_glyph_metrics): Relocate the `hdmx` + code from here... + (tt_loader_init): ... to here, before the glyph is loaded. + +2021-12-12 Alexei Podtelezhnikov + + [truetype] Relocate subpixel flag setting. + + `TT_RunIns` is too busy to deal with subpixel flags. It is better + to set them in `tt_loader_init`, which is executed before each + glyph program. + + * src/truetype/ttinterp.c (TT_RunIns): Move the flag setting from + here... + * src/truetype/ttgload.c (tt_loader_init): ... to here. + +2021-12-12 Alexei Podtelezhnikov + + [truetype] Limit INSTCTRL appication within specs. + + * src/truetype/ttinterp.c (Ins_INSTCTRL): Limit its global effects + to the CVT program and local effects to the glyph program. + + This also fixes an Infinality buglet. The `ignore_x_mode` should be + locally unset by the glyph program. + +2021-12-09 Ben Wagner + + [bdf] Fix use of uninitialized value. + + In _bdf_readstream if the data contained no newline then the buffer + would continue to grow and uninitialized data read until either the + uninitialized data contained a newline or the buffer reached its + maxiumum size. The assumption was that the line was always too long and + the buffer had been filled, however this case can also happen when there + is not enough data to fill the buffer. + + Correct this by properly setting the cursor to the end of the available + data, which may be different from the end of the buffer. This may still + result in one extra allocation, but only on malformed fonts. + + * src/bdf/bdflib.c (_bfd_readstream): Correctly update cursor. Remove + unread set of `avail`. + + Bug: https://lists.nongnu.org/archive/html/freetype-devel/2021-12/msg00001.html + +2021-12-07 Alexei Podtelezhnikov + + [truetype] Reduce Infinality footprint again. + + * src/truetype/ttgload.c (compute_glyph_metrics): Streamline and + prioritize the Infinality checks to use `hdmx`. + +2021-12-07 Cameron Cawley + + [builds/windows] Guard some non-ancient API. + + We can support Windows 98 and NT 4.0 in principle... + + * builds/windows/ftdebug.c, builds/windows/ftsystem.c: Check for the + ancient SDK using _WIN32_WINDOWS, _WIN32_WCE, or _WIN32_WINNT. + +2021-12-07 Cameron Cawley + + * builds/windows/visualc/freetype.vcproj: Add missing file. + +2021-12-02 Werner Lemberg + + * Version 2.11.1 released. + ========================== + + Tag sources with `VER-2-11-1'. + + * docs/VERSION.TXT: Add entry for version 2.11.1. + * docs/CHANGES, docs/release: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.11.0/2.11.1/, s/2110/2111/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. + + * builds/unix/configure.raw (version_info): Set to 24:1:18. + * CMakeLists.txt (VERSION_PATCH): Set to 1. + + * builds/toplevel.mk (version_tag, CHANGELOG_SCRIPT): New variables. + (do-dist): Generate `ChangeLog` file with all commits since last release. + +2021-11-30 Alexei Podtelezhnikov + + [builds/windows] Improve debugging. + + * builds/windows/ftdebug.c (FT_Message, FT_Panic): Buffer output + and call `OutputDebugStringA` only if `IsDebuggerPresent`. + [_WIN32_WCE] (OutputDebugStringA): Implement the missing API. + +2021-11-29 Seigo Nonaka + + * src/base/ftobjs.c (FT_Request_Metrics): Fix build warning on Android. + + Use casts since `FT_USHORT_MAX` is unsigned short in bionic (libc used in + Android). + +2021-11-28 Alexei Podtelezhnikov + + * builds/windows/vc2010/freetype.vcxproj (DlgCopy): Minor tweak. + +2021-11-26 Alexei Podtelezhnikov + + * src/truetype/ttpload.c (tt_face_load_hdmx): Added comments. + +2021-11-26 Alexei Podtelezhnikov + + [truetype] Quietly reject out-of-spec `hdmx` tables. + + The `hdmx` table is optional and can be safely rejected without + an error if it does not follow specifications. The record size + must be equal to the number of glyphs + 2 + 32-bit padding. + + * src/truetype/ttpload.c (tt_face_load_hdmx): Thoroughly check + the record size and improve tracing. + +2021-11-23 Alexei Podtelezhnikov + + [truetype] Partly revert 5b626281. + + Fixes #1118. + + * src/truetype/ttpload.c (tt_face_load_hdmx): Do not assume that + `record_size` is rounded even though the records are padded. + +2021-11-23 Alexei Podtelezhnikov + + * builds/windows/vc2010/freetype.vcxproj (DlgCopy): Use transforms. + +2021-11-22 Werner Lemberg + + Update `CHANGES` files, other minor whitespace and documentation issues. + +2021-11-21 Werner Lemberg + + formats.txt: Add info about WOFF and WOFF2. + +2021-11-21 Werner Lemberg + + meson.build: Initialize `common_ldflags`. + +2021-11-21 Lukas Oberhuber <@lukaso> + + * meson.build: Fix compatibility version on MacOS. + + Fixes #1117. + +2021-11-21 Werner Lemberg + + * src/truetype/ttinterp.c (Ins_MD): Avoid `FT_ABS`. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38562 + +2021-11-20 Alexei Podtelezhnikov + + * include/freetype/fttypes.h (FT_MAKE_TAG): Remove the same casting. + +2021-11-20 Werner Lemberg + + [gxvalid] Fix minor compilation warning. + + * src/gxvalid/gxvmort5.c (gxv_mort_subtable_type5_subtable_setup): Declare + as static. + +2021-11-20 Werner Lemberg + + [smooth] Fix stand-alone compilation. + + * src/smooth/ftgrays.c (FT_Trace_Enable, FT_Trace_Disable)[STANDALONE_]: + Define. + +2021-11-20 Werner Lemberg + + Avoid undefined left-shifts. + + We really have to use double casts to avoid issues with C's and C++'s + signedness propagation rules in implicit casts. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41178 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41182 + + * include/freetype/config/public-macros.h (FT_STATIC_CAST, + FT_REINTERPRET_CAST): Modify macro to take two arguments. + Update all callers. + (FT_STATIC_BYTE_CAST): New macro. + + * include/freetype/freetype.h (FT_ENC_TAG): Use `FT_STATIC_BYTE_CAST`. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. + * include/freetype/fttypes.h (FT_MAKE_TAG): Ditto. + Use `FT_Tag` for casting. + + * src/ftraster/ftmisc.h (FT_MAKE_TAG): Removed, no longer needed. + (FT_STATIC_BYTE_CAST): New macro. + + * src/smooth/ftgrays.c (FT_STATIC_CAST): Replace with... + (FT_STATIC_BYTE_CAST): ... this. + +2021-11-18 Werner Lemberg + + Provide C++ versions for public macros with casts. + + Many FreeType clients use C++. However `g++ -Wold-style-cast` warns for + macros with C-style casts even for system header files; this also affects + directories included with `-isystem`. While this could be seen as a problem + with g++, the problem is more a philosophical one: Over the time, C and C++ + diverged more and more, and some features of C are no longer the 'right' + solution in C++. + + * include/freetype/config/public-macros.h (FT_STATIC_CAST, + FT_REINTERPRET_CAST): New macros. + + * include/freetype/freetype.h (FT_ENC_TAG, FT_LOAD_TARGET_, + FT_LOAD_TARGET_MODE): Use `FT_STATIC_CAST`. + Correctly handle negative 'signed char' input. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. + * include/freetype/fttypes.h (FT_MAKE_TAG, FT_BOOL): Ditto. + * include/freetype/ftmodapi.h (FT_FACE_DRIVER_NAME): Use + `FT_REINTERPRET_CAST`. + + * src/smooth/ftgrays.c (FT_STATIC_CAST)[STANDALONE_]: New macro. + [!STANDALONE]: Include `FT_CONFIG_CONFIG_H`. + + Fixes #1116. + +2021-11-16 Werner Lemberg + + Fix clang++ warnings. + + * src/*: Initialize some variables to NULL. + +2021-11-16 Werner Lemberg + + [truetype] Updates for the forthcoming OpenType 1.9 standard (2/2). + + * src/truetype/ttgxvar.c (ft_var_load_item_variation_store): + s/shortDeltaCount/wordDeltaCount/ (as done in the specification, too). + Recognize new format and reject it for now. + +2021-11-16 Werner Lemberg + + [truetype] Updates for the forthcoming OpenType 1.9 standard (1/2). + + This is in preparation for implementing `DeltaSetIndexMap` format 1, which + is used by `COLR` v1 tables, and which allows 32bit indices. + + https://docs.microsoft.com/en-us/typography/opentype/otspec190/delta/otvarcommonformats_delta.html + + * src/truetype/ttgxvar.h (GX_DeltaSetIdxMapRec): Change type of `mapCount` + to `FT_ULong`. + + * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add argument + for passing the table size; update caller. + Implement new format. + +2021-11-14 Werner Lemberg + + Fix clang warnings. + + * src/gxvalid/gxvcmmn.h (GXV_SET_ERR_IF_PARANOID): Use 'do' block. + * src/gxvalid/gxvmod.c (GXV_TABLE_LOAD, GXV_TABLE_VALIDATE): Ditto. + + * src/smooth/ftgrays.c (gray_convert_glyph): Add cast. + + * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Remove cast. + * src/type1/t1load.c (read_binay_data): Use `FT_ULong` for `size` parameter. + (parse_subrs, parse_charstrings, parse_dict): Ditto; also add some casts. + +2021-11-13 Dominik Röttsches + + [sfnt] Avoid undefined shifts in `COLR` v1 paint parsing + + * src/sfnt/ttcolr.c (read_paint, tt_face_get_paint): Tighten shift + behavior by using multiplication, mostly using macros from ftcalc.h. + + Fixes: https://bugs.chromium.org/p/chromium/issues/detail?id=1269168 + +2021-11-13 Alexei Podtelezhnikov + + [builds/windows] Improve `DlgCopy` target. + + Fixes #1113. + + * builds/windows/vc2010/freetype.vcxproj: Run `DlgCopy` conditionally + and decouple it from `Build`. + +2021-11-12 Alexei Podtelezhnikov + + Explicitly define `FT_MSB` for Clang. + + * include/freetype/internal/ftcalc.h [__clang__] (FT_MSB): Updated. + +2021-11-10 Alexei Podtelezhnikov + + * src/truetype/ttgxvar.c (ft_var_to_normalized): Edge optimization. + +2021-11-10 Alexei Podtelezhnikov + + Additional `FT_MSB` macro definitions. + + Better macros for Windoes CE and ARM in general, based on !109 + from metarutaiga. + + * include/freetype/internal/ftcalc.h [_MSC_VER] (FT_MSB): Updated. + +2021-11-09 Alexei Podtelezhnikov + + [build/windows] Remove logging from default debug configurations. + + DLG is rather costly for performance and should be used judiciously. + This removes it from the default configurations but gives an example + how to enable it using the `UserDefines` property. + + * builds/windows/vc2010/freetype.vcxproj: Hide FT_DEBUG_LOGGING. + +2021-11-08 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_open_font): Fix typo. + +2021-11-08 Werner Lemberg + + * src/gxvalid.*, src/otvalid.*: Fix `-Wformat` warnings. + +2021-11-08 Werner Lemberg + + [pshinter] Fix C++ compilation. + + * src/pshinter/pshalgo.c (psh_compute_dir): Fix type of `result`. + (psh_hint_table_find_strong_points): Add cast. + +2021-11-08 Werner Lemberg + + [sfnt] Reduce footprint if WOFF and WOFF2 support is not needed. + + Based on a patch from metarutaiga (MR !106). The gist of this commit is + that it doesn't make sense to support WOFF without compression (which would + be only possible in WOFF 1.0 anyway). + + * src/sfnt/sfobjs.c (sfnt_open_font): Guard WOFF code with + `FT_CONFIG_OPTION_USE_ZLIB` block. + Guard WOFF2 code with `FT_CONFIG_OPTION_USE_BROTLI` block. + + * src/sfnt/sfwoff.c, src/sfnt/sfwoff.h: Guard files with + `FT_CONFIG_OPTION_USE_ZLIB` blocks, not parts of the code. + + * src/sfnt/sfwoff2.c, src/sfnt/sfwoff2.h, src/sfnt/woff2tags.c, + src/sfnt/woff2tags.h: Guard files with `FT_CONFIG_OPTION_USE_BROTLI` blocks, + not parts of the code. + + Fixes #1111. + +2021-11-08 Werner Lemberg + + [truetype] Make trickyness checks depend on TT_USE_BYTECODE_INTERPRETER. + + Based on a patch from metarutaiga (MR !106). + + * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag, + tt_check_trickyness_family, tt_synth_sfnt_checksum, tt_get_sfnt_checksum, + tt_check_trickyness_sfnt_ids, tt_check_trickyness): Put functions into a + `TT_USE_BYTECODE_INTERPRETER` block. + (tt_face_init): Put trickyness checks into a `TT_USE_BYTECODE_INTERPRETER` + block. + + Fixes #1111. + +2021-11-08 Alexei Podtelezhnikov + + * src/sfnt/ttload.c (tt_face_load_gasp): Fix a type mismatch warning. + +2021-11-07 Alexei Podtelezhnikov + + [dlg] Define DLG_STATIC explicitly. + + DLG_STATIC is intended to disable Windows DLL linking attributes. + It does not hurt to define it explicitly when we wrap DLG code. + This fixes tons of LNK4286 and C4273 warnings from MSVC if we + forget to define DLG_STATIC as a compiler option. + + * builds/windows/vc2010/freetype.vcxproj: Remove DLG_STATIC option. + * src/dlg/dlgwrap.c [FT_DEBUG_LOGGING]: Define DLG_STATIC. + * include/freetype/internal/ftdebug.h [FT_DEBUG_LOGGING]: Ditto. + +2021-11-07 Alexei Podtelezhnikov + + [dlg] Lighten up the inclusions. + + The DLG wrapper needs to know if FT_DEBUG_LOGGING is defined in + `ftoption.h`. It does not need entire FreeType. + + * src/dlg/dlgwrap.c: Include FT_CONFIG_OPTIONS_H directly. + +2021-11-07 Alexei Podtelezhnikov + + [truetype] Avoid some memory zeroing in variations. + + * src/truetype/ttgxvar.c (ft_var_readpackeddeltas, ft_var_load_avar, + ft_var_load_item_variation_store, ft_var_load_gvar): Use FT_QNEW_ARRAY + if memory immediately initialized or discarded otherwise. + +2021-11-05 Jany Belluz + + [truetype] Fix handling of packed deltas in Variation Fonts. + + * src/truetype/ttgxvar (ft_var_readpackeddeltas): Don't expect the number of + bytes used to encode the deltas to be higher than the number of encoded + values. The specification allows a very compact encoding; for example, a + list of 200 zeros can be encoded with just a couple of bytes. + + We now count the consumed bytes to make sure to not read more than expected. + +2021-11-04 Jany Belluz + + [truetype] Fix CVAR handling of tuples for all points. + + * src/truetype/ttgxvar (tt_face_vary_cvt): Function + `ft_var_readpackedpoints`, when it returns `ALL_POINTS`, also sets + `point_count` to value 0. However, the CVAR code was incorrectly expecting + that `point_count` would be set to match the length of the CVT table. + +2021-11-04 Jany Belluz + + * src/truetype/ttgxvar.c: Fix typos in macros that guard CVAR code. + +2021-11-04 Alexei Podtelezhnikov + + * docs/INSTALL: Mention Meson and MSBuild more prominently. + +2021-11-03 Gabor Kertesz + + [libpng] Update Meson wrap for win-arm64 + + 1.6.37-5 released patches for win-arm64 to successfully build + libpng with Meson: + https://github.com/mesonbuild/wrapdb/pull/205 + https://github.com/mesonbuild/wrapdb/pull/216 + + Updated by the following command: + meson wrap update libpng + + Tested on win-arm64 and x64. + +2021-11-03 Dominik Röttsches + + [sfnt] Clarify `COLR` v1 FT_Paint* format representations + + * include/freetype/ftcolor.h (FT_PaintLinearGradient, + FT_PaintRadialGradient, FT_PaintSweepGradient, FT_PaintTransform, + FT_PaintTranslate, FT_PaintScale, FT_PaintRotate, FT_PaintSkew): Clarify + 16.16 fixed point representation of struct fields. + * src/sfnt/ttcolr.c (read_paint): Shift coordinates for + FT_PaintLinearGradient, FT_PaintRadialGradient, FT_PaintSweepGradient + accordingly. + + Fixes: https://gitlab.freedesktop.org/freetype/freetype/-/issues/1110 + +2021-11-03 Alexei Podtelezhnikov + + [builds/windows] Let MSBuild handle DLG copy. + + * builds/windows/vc2010/freetype.vcxproj: Specify DlgCopy target. + * builds/windows/vc2010/script.bat: Deleted. + +2021-10-29 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (load_truetype_glyph): Fix MSVC warning C4312. + +2021-10-29 Alexei Podtelezhnikov + + [builds/windows] Separate MSVC linker and librarian. + + MSVC uses LIB for static and LINK for dynamic libraries. They are + related but the former has much smaller set of options. + + * builds/windows/vc2010/freetype.vcxproj: Updated. + +2021-10-29 Alexei Podtelezhnikov + + [builds/windows] Revise MSVC linking optimizations. + + * builds/windows/vc2010/freetype.vcxproj: Optimize DLL linking only. + * builds/windows/visualc/freetype.dsp: Ditto. + * builds/windows/visualc/freetype.vcproj: Ditto. + +2021-10-28 Alexei Podtelezhnikov + + [woff] Optimize table tagging. + + * include/freetype/internal/wofftypes.h (WOFF_TableRec): Use + 32-bit tag. + * src/sfnt/sfwoff.c (woff_open_font): Use 32-bit tag. + +2021-10-28 Alexei Podtelezhnikov + + [woff2] Optimize table tagging. + + Fixes #1107. + + * include/freetype/internal/wofftypes.h (WOFF2_TableRec): Use + 32-bit tag. + * src/sfnt/sfwoff2.c (compare_tags, find_table, woff2_open_font): + Use 32-bit tag. + * src/sfnt/woff2tags.[ch] (woff2_known_tags): Use static storage and + return 32-bit tag. + +2021-10-26 Werner Lemberg + + Formatting. + +2021-10-26 Ben Wagner + + [mm] Tolerate missing Blend dictionary entries + + In a Multiple Master font, the Blend dictionary must contain valid + Private, FontInfo, and FontBBox. The current code will error if any of + these are present and invalid, but will not error and will provide + uninitialized data if the Blend dictionary exists but does not contain + one of these entries. This change reverts to the older behavior of + treating any missing entries as containing all zero data and not + returning an error. + + In the future it may be best to keep track of when these are actually + initialized and error if they are not. + + * src/type1/t1load.c (t1_allocate_blend): Zero initiailize. + +2021-10-26 Alexei Podtelezhnikov + + [builds/windows] Add MSVC linker optimazations. + + We continue to build static libraries with statically linked C run- + time and add options to optimize references. + + * builds/windows/vc2010/freetype.vcxproj: Sort entries, add options. + +2021-10-23 Alexei Podtelezhnikov + + * builds/windows/vc2010/freetype.vcxproj: Use MachineARM64. + +2021-10-22 Alexei Podtelezhnikov + + [builds/windows] Prioritize x64. + + * builds/windows/vc2010/freetype.sln: Sort entries. + +2021-10-22 Gabor Kertesz + + [builds/windows] Add ARM64 platform. + + * builds/windows/vc2010/freetype.sln: Updated + * builds/windows/vc2010/freetype.vcxproj: Updated. + * builds/windows/vc2010/freetype.vcxproj.filters: Minor fix. + +2021-10-21 Ben Wagner + + [mm] Delay setting blend weight and design position. + + Previously the `blend->weight_vector`, `blend->default_weight_vector`, + and `blend->design_pos` were set early to allocated but uninitialized + memory under the assumption that the memory would eventually be + initialized. However, it is possible that some of the required + keywords may not actually be present, leaving the memory uninitialized. + This is different from a present but invalid table, which would produce + an error. + + Reported as + https://bugs.chromium.org/p/chromium/issues/detail?id=1261762 + + * src/type1/t1load.c (t1_allocate_blend): Remove early allocation and + initialization. + (parse_blend_design_positions, parse_weight_vector): Parse into local + and assign to blend if valid. + (T1_Open_Face): Check that if a blend exists that it has the weight + vector and design positions. + +2021-10-21 Ben Wagner + + [cff] Commit vstore data and regions on allocation. + + The vstore->regionCount and vstore->dataCount were read directly + from the data. However, vstore->varRegionList and vstore->varData + would still contain uninitialized entries with uninitialized + pointers in the event of an error, leading to issues when attempting + to clean up. + + Reportd as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40104 + + * src/cff/cffload.c (cff_vstore_load): Read the region and data counts + into locals and update the vstore counts immediately after each entry + becomes free-able. + +2021-10-20 Ben Wagner + + [sfnt] Delay setting gasp ranges and count until computed. + + Previously, the gasp.numRanges was set and gasp.gaspRanges was + allocated and assigned before a possible early exit if the frame could + not be entered. It is also possible that the gaspRanges allocation + could fail but the numRanges still be set to non-zero. In such cases + an error would be returned, but the face would have a gasp in an + inconsistent state which may still be accessed. + + Reported as + https://bugs.chromium.org/p/chromium/issues/detail?id=1261450 + + * src/sfnt/ttload.c (tt_face_load_gasp): Delay setting gasp.numRanges + and gasp.gaspRanges until after the ranges are initialized. + +2021-10-20 Ben Wagner + + [sfnt] Delay setting names and langTags until computed. + + Previously, the table->names and table->langTags fields were created + pointing to uninitialized memory and an early exit could happen if the + frame could not be entered. The caller would then be unable to properly + dispose of the memory as the string fields had not been initialized. + + Reported as + https://bugs.chromium.org/p/chromium/issues/detail?id=1261343 + + * src/sfnt/ttload.c (tt_face_load_name): delay setting table->langTags + and table->names until after the memory they will point to is fully + initialized. + +2021-10-20 Alexei Podtelezhnikov + + * tests/issue-1063/main.c: s/PATH_MAX/FILENAME_MAX/. + + Closes !97 for Windows by using a standard macro. + +2021-10-19 Werner Lemberg + + [bdf, cid, pfr, winfonts] Improve rejection of other font formats. + + This is mainly for better diagnostics of malformed fonts. + + * src/bdf/bdflib.c (_bfd_readstream): Stop font format testing if the first + input line is too long or doesn't end with `\r` or `\n`. + + * src/cid/cidparse.c (cid_parser_new): Don't handle too short input as an + error but as an unknown format. + + * src/pfr/pfrobjs.c (pfr_face_init): Ditto. + + * src/winfonts/winfnt.c (fnt_font_load, fnt_face_get_dll_font): Ditto. + +2021-10-19 Alexei Podtelezhnikov + + [pcf] Zero out the allocated properties. + + Fallout reported as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40033 + + * src/pcf/pcfread.c (pcf_get_properties): Use FT_NEW_ARRAY and zero + out `properties` in case of failure. + +2021-10-18 Werner Lemberg + + configure: Use string comparison for directory inodes. + + Inode values might be larger than integers supported by the shell. + + Fixes #1105. + +2021-10-17 Alexei Podtelezhnikov + + * src/sfnt/ttload.c (tt_face_load_name): NULL-initialize langTag. + + Another attempt to fix fallout reported as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40024 + +2021-10-17 Alexei Podtelezhnikov + + [bdf] Fix up user properties. + + Fallout reported as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40027 + + * src/bdf/bdflib.c (_bdf_add_property): Cosmetic NULL. + (bdf_create_property): Limit allocations to customary signed + FT_Long and NULL-initialize unused storage. + (bdf_free_font): Do not free unused storage. + +2021-10-17 Alexei Podtelezhnikov + + * src/sfnt/ttload.c (tt_face_load_name): Accounting fix. + + Fallout reported as + https://crbug.com/40024 + +2021-10-16 Ben Wagner + + Fix typos in memory macros. + + FT_QNEW_ARRAY and FT_QRENEW_ARRAY were using the non-Q + FT_MEM_NEW_ARRAY and FT_MEM_RENEW_ARRAY. Change these to use the Q + versions. Also fix the one issue discovered in tt_face_load_name + where table->names is created with FT_QNEW_ARRAY but the extra + string member is not initialized to NULL. + + * include/freetype/internal/ftmemory.h (FT_Q(RE)NEW_ARRAY): + Use FT_MEM_Q(RE)NEW_ARRAY as needed. + + * src/sfnt/ttload.c (tt_face_load_name): Initialize `entry->string`. + +2021-10-15 Ben Wagner + + [truetype] Reload context after re-executing `prep`. + + When a different hinting mode from the current is selected, the `prep` table + must be re-executed with the new mode. After this happens the context must + be re-loaded in preparation for the glyph program to be run. + + Fixes #1104. + + * truetype/ttgload.c (tt_loader_init): Add call to `TT_Load_Context`. + +2021-10-15 Werner Lemberg + + [truetype] Minor documentation improvements. + +2021-10-14 Anurag Thakur + + Add clang build to linux CI + +2021-10-12 Anurag Thakur + + CI: Add macOS CI, including a clang build + +2021-10-12 Alexei Podtelezhnikov + + * src/cid/cidload.c (parse_fd_array): Protect against trancation. + +2021-10-12 Alexei Podtelezhnikov + + [type1] Revert to signed size for binary data. + + Recently introduced and reported as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39838 + + * src/type1/t1load.c (read_binary_data): Reject negative size. + (parse_subrs, parse_charstrings): Use customary signed size. + +2021-10-11 Alexei Podtelezhnikov + + [psaux] Signedness revisions. + + Unsigned indexes are easier to check. + + * src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Updated. + * src/psaux/psintrp.c (cf2_interpT2CharString): Ditto. + * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto. + * src/type1/t1load.c (read_binary_data): Ditto. + +2021-10-11 Alexei Podtelezhnikov + + [cid] Signedness revisions. + + Unsigned checks are simpler. + + * include/freetype/t1tables.h (CID_FaceInfoRec): Change to unsignd + `num_dicts`. + * src/cid/cidparse.h (CID_Parser): Change to unsigned `num_dict`. + + * src/cid/cidgload.c (cid_load_glyph): Updated. + * src/cid/cidload.c (cid_load_keyword, parse_fd_array, + parse_expansion_factor, parse_font_name, cid_read_subrs, + cid_face_open): Updated. + * src/cid/cidobjs.c (cid_face_done): Updated. + * src/cid/cidparse.c (cid_parser_new): Updated. + +2021-10-09 Alexei Podtelezhnikov + + * src/cid/cidload.c (cid_face_open): Streamline CIDCount check. + +2021-10-08 Alexei Podtelezhnikov + + * src/cid/cidload.c (cid_face_open): Streamline SubrCount check. + +2021-10-08 Alexei Podtelezhnikov + + * src/cid/cidgload.c (cid_load_glyph): Fortify incremental loading. + +2021-10-08 Alexei Podtelezhnikov + + Signedness revisions. + + This eliminates explicit casting by switching to unsigned fields. + The revisions mostly impact the handling of CID fonts. + + * include/freetype/fttypes.h (FT_Data): Change to unsigned `length`. + * include/freetype/t1tables.h (CID_FaceDictRec): Ditto for `sd_bytes`. + (CID_FaceInfoRec): Ditto for `gd_bytes` and `gd_bytes`. + * include/freetype/internal/tttypes.h (TT_LoaderRec): Ditto for + `byte_len`. + + * src/cid/cidgload.c (cid_load_glyph): Updated. + * src/cid/cidload.h (cid_get_offset): Update argument. + * src/cid/cidload.c (cid_get_offset, cid_read_subrs, cid_face_open): + Updated. + * src/cff/cffgload.c (cff_get_glyph_data, cff_free_glyph_data): + Updated. + * src/psaux/psft.c (cf2_getT1SeacComponent): Updated. + * src/truetype/ttgload.c (TT_Process_Composite_Glyph, + load_truetype_glyph): Updated. + +2021-10-07 Jan Alexander Steffens (heftig) + + meson.build (gen_docs): Use `current_source_dir` instead of `source_root`. + + These two are not equal when FreeType is used as a subproject, such as in + `freetype-demos`. In that case, `source_root` points at the root project, + causing the docs build to fail. + +2021-10-05 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c (FT_DIV_MOD): Limit the ARM workaround. + +2021-10-05 Alexei Podtelezhnikov + + [builds/unix, builds/vms] Standardize `mmap` failure. + + * builds/unix/ftsystem.c (FT_Stream_Open): Check for MAP_FAILED. + * builds/vms/ftsystem.c (FT_Stream_Open): Ditto. + + This should cover https://savannah.nongnu.org/patch/?5909 as well. + +2021-10-05 Hugh McMaster + + autogen.sh: Only copy submodules if building from a git branch. + + `autogen.sh` fails if building from a standard source tarball. Firstly, git + expects to be called in a git repository, then `copy_submodule_files` + blindly attempts to copy files. + + Debian, Ubuntu, Linux Mint, and other derivatives all run `autogen.sh` + before compiling to regenerate build files. + + This patch ensures that various git commands are only called and 'dlg' files + are only copied if `autogen.sh` is called from a git repository. + +2021-10-05 Alexei Podtelezhnikov + + * include/freetype/internal/ftgloadr.h: Add missing header. + + Noticed by Jouk Jansen. + +2021-10-05 Alexei Podtelezhnikov + + [pshinter] Additional clean-ups. + + * src/pshinter/pshalgo.h (psh_hint_table_find_strong_points): Streamline code. + * src/pshinter/pshalgo.h (PSH_Glyph): Remove unused fields. + +2021-10-04 Alexei Podtelezhnikov + + [pshinter] More convenient direction definition. + + It is easier to check directions using flags than integer values. + + * src/pshinter/pshalgo.h (PSH_Dir): Redefine directions. + (PSH_PointRec): Use them as an enum type. + + * src/pshinter/pshalgo.c (psh_compute_dir): Modify return type. + (psh_glyph_init, psh_hint_table_find_strong_points, + psh_glyph_find_blue_points): Update users. + +2021-10-04 Alexei Podtelezhnikov + + [pshinter] Remove unnecessary check. + + * src/pshinter/pshalgo.c (psh_hint_table_find_strong_points): Do not + check if direction is defined before checking how. + +2021-10-02 AnuthaDev + + CI: Hardcode meson version to fix build failure on windows + +2021-10-01 Alexei Podtelezhnikov + + Additional `FT_MSB` macro definitions. + + * include/freetype/internal/ftcalc.h [__DECC,_CRAYC]: Use builtins + and intrinsics. + +2021-10-01 Alexei Podtelezhnikov + + * src/autofit/afhints.c (af_glyph_hints_reload): Decrease casting. + +2021-09-30 Alexei Podtelezhnikov + + * src/tools/apinames.c: Facilitate OpenVMS linker options. + +2021-09-29 Alexei Podtelezhnikov + + * src/winfonts/winfnt.c (FNT_Face_Init): Correct reallocation. + +2021-09-25 Alexei Podtelezhnikov + + [builds/unix] Do not use autoconf SIZEOF. + + * builds/unix/ftconfig.h.in [FT_USE_AUTOCONF_SIZEOF_TYPES]: Removed. + * builds/unix/configure.raw: Remove AC_CHECK_SIZEOF and update. + + After this commit, autoconf builds will fully rely on + rather than falling back on it if AC_CHECK_SIZEOF failed for some + reason. There is a risk that misconfigured cross-compilation might + have wrong headers. Note that Meson and CMake builds always relied on + for sizes and availability of integer types. + +2021-09-25 Alexei Podtelezhnikov + + Propagate sign when reading OFF3. + + Signed 24-bit values are extremely rare. FreeType only reads them in + PFR fonts with bitmap strikes conditionally. They have not been seen + in the known fonts. That is why this bug could never be discovered. + `FT_FRAME_OFF3` propagates sign correctly. + + * include/freetype/internal/ftstream.h (FT_PEEK_OFF3, FT_PEEK_OFF3_LE): + Propagate sign into 32-bit value. + (FT_GET_OFF3, FT_READ_OFF3): Needed fixing but removed as unused. + +2021-09-25 Alexei Podtelezhnikov + + [bdf] Simplify comment collection or lack thereof. + + BDF comments are neither actually collected nor retrieved. There is + no need to be fancy with delimiters. + + * src/bdf/bdflib.c (_add_bdf_comment): Delimit comments with zeros... + (bdf_load_font): ...and do not null-terminate comments additionally. + (_bdf_parse_glyphs): Check if comments are kept, which they are not. + (_bdf_parse_start): Minor clean up. + +2021-09-24 Alexei Podtelezhnikov + + Use NULL for pointers only. + + * src/bdf/bdflib.c (*): Code changes. + * include/freetype/freetype.h: Comments only. + * src/cff/cffload.c, src/cff/cffobjs.c: Ditto. + * src/winfonts/winfnt.c: Ditto. + +2021-09-23 Werner Lemberg + + Minor documentation fixes and improvements. + +2021-09-23 Alexei Podtelezhnikov + + Reference `fopen` in the docs. + +2021-09-23 Alexei Podtelezhnikov + + [bdf, pcf] Minor optimization. + + * src/pcf/pcfread.c (pcf_load_font): Do not call `FT_MulDiv` for a + small job. + * src/bdf/bdfdrivr.c (BDF_Face_Init): Ditto. + * src/bdf/bdflib.c (_bdf_parse_glyphs): Fix a comment. + +2021-09-22 Alexei Podtelezhnikov + + [base] Initialize stream memory earlier. + + With Windows memory management tracking heap, it is important to use + it during the stream opening fallback. In Unix, the argument is + unused, but it is better to set it correctly. + + * src/base/ftobjs.c (FT_Stream_New): Set memory before calling + `FT_Stream_Open`. + * builds/windows/ftsystem.c, builds/unix/ftsystem.c (FT_Stream_Open, + ft_close_stream_by_free): Call `ft_alloc` and `ft_free` with proper + memory argumment. + +2021-09-22 Alexei Podtelezhnikov + + [builds/windows] Revert back to `CreateFileA` only. + + Calling `CreateFileW` without making sure that the patname is really + `wchar_t` is a bad idea and can lead to unpredictable overreads. For + Windows CE, we impelemnt the missing API. + + Fixes #1098 and !76 again. + + * builds/windows/ftsystem.c (FT_Stream_Open): Call `CreateFileA`. + [_WIN32_WCE] (CreateFileA, FileSizeEx): Implement missing interfaces. + +2021-09-21 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (_bdf_parse_{start,glyphs}): Use appropriate scanner. + +2021-09-21 Alexei Podtelezhnikov + + Minor. + +2021-09-20 Alexei Podtelezhnikov + + * src/cff/cffdrivr.c (cff_ps_get_font_{info,extra}): Use FT_QNEW. + +2021-09-18 Alexei Podtelezhnikov + + [cache] Minor clean-ups. + + * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Remove parantheses. + * src/cache/ftccache.c (FTC_Cache_Lookup): Ditto. + (FTC_Cache_RemoveFaceID): Remove unnecessary variable. + +2021-09-17 Alexei Podtelezhnikov + + [builds/windows] Try both wide and narrow `CreateFile` + + Windows handles wchar_t* UTF-16 and char* ANSI (presently UTF-8) + filenames using alternative -A and -W API. We'll try them both + when opening a file. This means that you should not worry about + about conversions. + + Fixes #1098 and !76. + + * builds/windows/ftsystem.c (FT_Stream_Open): Call alternative + `CreateFile` in the case of failure. + +2021-09-17 Edwin Steiner + + [cff] Explicitly set StandardEncoding or ExpertEncoding offsets. + + Fixes #1097. + + * src/cff/cffload.c (cff_encoding_load): Set special offset values. + +2021-09-16 Alexei Podtelezhnikov + + [cache] Miscellaneous clean-ups. + + * src/cache/ftccache.c (ftc_get_top_node_for_hash, FTC_Cache_Clear): + Remove barely used variables. + (ftc_cache_add): Adjust casting. + * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Remove casting. + * src/cache/ftcsbits.c (ftc_snode_load): Remove casting. + +2021-09-16 Alexei Podtelezhnikov + + * src/cff/cffload.c (cff_fd_select_get): Remove casting. + +2021-09-16 Alexei Podtelezhnikov + + * src/pcf/pcfread.c (pcf_read_TOC): Remove casting. + +2021-09-15 Alexei Podtelezhnikov + + Minor type adjustments. + + * src/cff/cffobjs.c (cff_face_init): Reduce casting. + * src/truetype/ttobjs.c (tt_size_ready_bytecode): Ditto. + * src/type1/t1load.c (T1_Set_MM_Design): Ditto. + +2021-09-15 Alexei Podtelezhnikov + + Replace boolean allocation macros with MEM ones. + + * src/base/ftbitmap.c (FT_Bitmap_Copy): Use MEM-macro. + * src/base/ftobjs.c (ft_glyphslot_alloc_bitmap): Ditto. + * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Ditto. + * src/cache/ftccache.c (ftc_cache_init): Ditto + * src/gzip/ftgzip.c (ft_gzip_alloc): Ditto. + * src/psnames/psmodule.c (ps_unicodes_init): Ditto. + * src/sfnt/sfobjs.c (sfnt_load_face): Ditto. + * src/sfnt/ttload.c (tt_face_load_name): Ditto. + +2021-09-15 Alexei Podtelezhnikov + + [cache] Revert to some zeroing. + + * src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Zero + `buckets` again to fix some crashes. + +2021-09-14 Alexei Podtelezhnikov + + * src/pshinter/pshrec.c (ps_mask_table_merge_all): Tweak loops. + + Fixes fallout from 731d0b685685 reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38685 + +2021-09-13 Alexei Podtelezhnikov + + [cff, pshinter] Clean up unsigned counters. + + Loops with unsigned decrement can be reliably stopped when the counter + wraps around after reaching zero. + + * src/cff/cffload.c (cff_charset_compute_cids): Use unsigned counter. + * src/pshinter/pshalgo.c (psh_hint_table_activate_mask): Ditto. + * src/pshinter/pshrec.c (ps_mask_table_merge): Ditto. + +2021-09-13 Alexei Podtelezhnikov + + [bdf, psnames, sfnt] Avoid some memory zeroing. + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Use Q-macro. + * src/sfnt/sfobjs.c (sfnt_load_face): Ditto. + * src/psnames/psmodule.c (src/psnames/psmodule.c): Remove zero. + +2021-09-13 Alexei Podtelezhnikov + + * src/base/ftobjs.c (FT_CMap_New): Revert to zeroing. + + Fixes fallout from c1fa7aa2bc96, reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38641 + +2021-09-13 Alexei Podtelezhnikov + + [truetype] Clean up `exec` initialization. + + * src/truetype/ttinterp.c (Init_Context): Absorbed into... + (TT_New_Context): ... this function. + +2021-09-13 Alexei Podtelezhnikov + + [truetype] Avoid some memory zeroing. + + * src/truetype/ttgload.c (load_truetype_glyph): Use Q-macro. + * src/truetype/ttinterp.c (Update_Max): Ditto. + * src/truetype/ttpload.c (src/truetype/ttpload.c): Ditto. + +2021-09-13 Alexei Podtelezhnikov + + [base] Avoid some memory zeroing. + + * src/base/ftobjs.c (FT_New_Size, FT_CMap_New, FT_CMap_Done, + ft_open_face_internal, ft_open_face_internal): Use Q-macros. + +2021-09-13 Alexei Podtelezhnikov + + [cache, psaux] Remove zeros. + + * src/cache/ftcmru.c (FTC_MruList_New): Remove initialization. + * src/psaux/psstack.c (cf2_stack_init): Ditto. + +2021-09-12 Alexei Podtelezhnikov + + [cache] Avoid some memory zeroing. + + * src/cache/ftcmru.c (FTC_MruList_New): Use Q-macro. + * src/cache/ftcmanag.c (FTC_Manager_RegisterCache): Ditto. + * src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Ditto. + +2021-09-11 Alexei Podtelezhnikov + + * src/cache/ftcmanag.c (FTC_Manager_New): Add missing zero. + + Fixes fall out from a7b199d081e7. + +2021-09-10 Alexei Podtelezhnikov + + [truetype] Tweak `hdmx` checking. + + Fixes #1096. + + * src/truetype/ttpload.c (tt_face_load_hdmx): Account for padding. + +2021-09-10 Alexei Podtelezhnikov + + [truetype] Tweak `loca` clamping. + + Fixes #1095. + + * src/truetype/ttpload.c (tt_face_load_loca): Fix up clamping. + * include/freetype/internal/tttypes.h (TT_Face): Correct docs. + +2021-09-08 Alexei Podtelezhnikov + + Fortify memory debugging (cont'd). + + * src/base/ftdbgmem.c (FT_DumpMemory): Check for active debugger. + (ft_mem_table_destroy): Move `FT_DumpMemory` call from here... + (ft_mem_debug_done): ... to here. + +2021-09-08 Alexei Podtelezhnikov + + Fortify memory debugging. + + These changes are neccessary to properly recover `memory->user` that + holds the Windows heap handle now. + + * src/base/ftdbgmem.c (ft_mem_debug_init): Handle all table allocations, + initializations, and sizing instead of... + (ft_mem_table_new): ... this function removed. + (ft_mem_debug_done): Better check for the active debugger and free the + debugger table here instead of... + (ft_mem_table_destroy): ... here. + +2021-09-08 Werner Lemberg + + src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): Set to 600. + + This allows C99 compilation on Solaris. + + Problem reported by Mojca Miklavec. + +2021-09-07 Alexei Podtelezhnikov + + [builds/windows] Use native memory allocation API. + + * builds/windows/ftsystem.c (ft_alloc, ft_realloc, ft_free): + Wrap HeapAlloc, HeapReAlloc, and HeapFree. + (FT_New_Memory): Set the heap handle. + +2021-09-07 Werner Lemberg + + [dlg] Synchronize with upstream. + + * src/dlg/dlgwrap.c (_XOPEN_SOURCE): Set to 600. + + Fixes #1093. + +2021-09-04 Alexei Podtelezhnikov + + Cosmetic zeros. + +2021-09-03 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (_bdf_parse_start): Keep parser memory. + +2021-09-03 Werner Lemberg + + autogen.sh: Make it work with old Solaris 10 shell. + +2021-09-03 Alexei Podtelezhnikov + + [smooth, raster, sdf] Clean up initialization calls. + + * src/raster/ftraster.c (ft_black_init): Removed. + (ft_black_new): Clean up. + * src/sdf/ftbsdf.c (bsdf_raster_new): Ditto. + * src/sdf/ftsdf.c (sdf_raster_new): Ditto. + * src/smooth/ftgrays.c (gray_raster_new): Ditto. + +2021-09-03 Alexei Podtelezhnikov + + * src/cache/ftcmanag.c (FTC_Manager_New): Avoid some zeroing. + +2021-09-03 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_load_font): Remove memory shuffling. + +2021-09-03 Alexei Podtelezhnikov + + Cosmetic zeros. + +2021-09-02 Alexei Podtelezhnikov + + [base] Clean up stream reading. + + * src/base/ftstream.c (FT_Stream_ReadUShort, FT_Stream_ReadUOffset, + FT_Stream_ReadULong and their LE variants): Remove unnecessary + initialization and slightly refactor. + (FT_Stream_GetByte, FT_Stream_ReadByte): Rename to return unsigned + value and align with sister functions. + + * include/freetype/internal/ftstream.h (FT_Stream_GetByte, + FT_Stream_ReadByte): Update prototypes and caller macros. + +2021-09-02 Alexei Podtelezhnikov + + s/0/NULL/ where appropriate. + +2021-08-30 Alexei Podtelezhnikov + + * builds/windows/ftsystem.c (FT_Stream_Open): Fix double-close. + +2021-08-30 Alexei Podtelezhnikov + + [smooth] Reduce shift in multiply-shift optimization. + + * src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): Reduce shift. + + Smaller shifts that keep the division operands of FT_UDIVPREP within + 32 bits result in slightly faster divisions, which is noticeable in + the overall performance. The loss of precision is tolerable until the + divisors (the components dx and dy) approach 32 - PIXEL_BITS. With + PIXEL_BITS = 8, this corresponds to 65,000 pixels or the bitmap size + that we refuse to render anyway. + + Using `ftbench -p -s60 -t5 -bc timesi.ttf`, + + Before: 8.52 us/op + After: 8.32 us/op + +2021-08-28 Werner Lemberg + + [truetype] Fix compilation if !TT_CONFIG_OPTION_BYTECODE_INTERPRETER. + + * src/truetype/ttgxvar.c (tt_cvt_ready_iterator): Compile function + conditionally. + (tt_face_vary_cvt) [!TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Add code. + + Fixes #1091. + +2021-08-27 Alexei Podtelezhnikov + + [builds/windows] Revise SSE2 settings. + + * builds/windows/vc2010/freetype.vcxproj [x64]: Remove explicit SSE2. + * builds/windows/visualc/freetype.vcproj [Win32]: Add explicit SSE2. + +2021-08-27 Ben Wagner + + [smooth] Detect SSE2 with MSVC for x86 + + MSVC does not set `__SSE2__`. Instead one must check whether `_M_IX86_FP` is + defined and greater than or equal to 2. + + * src/smooth/ftgrays.c (FT_SSE2): New macro. + Use it where appropriate. + +2021-08-26 Alexei Podtelezhnikov + + Expand comment (cont'd). + +2021-08-26 Alexei Podtelezhnikov + + Expand comment. + +2021-08-24 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c (gray_render_conic): Refactor redundancy. + +2021-08-24 suzuki toshiya + + [truetype] Fix for the family name shorter than 8 characters. + + * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag): + If the family name to be checked is shorter than 8 characters, + do not check its syntax. + +2021-08-24 suzuki toshiya + + [truetype] Simplify `trick_names'. + + * src/truetype/ttobjs.c (tt_check_trickyness_family): For the case + that the beginning part of a long tricky family name is already + registered as another tricky family name, no need to double-check + the longer one. Such long tricky family names are removed from + the `trick_names'. + +2021-08-24 suzuki toshiya + + [truetype] Add 2 tricky font names. + + Additional fix for the issue #1087. + + * src/truetype/ttobjs.c (tt_check_trickyness_family): Add 2 tricky + font names reported in #1087. + +2021-08-24 suzuki toshiya + + [truetype] New function to skip the randomization tag. + + * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag): + New function to skip the randomization tag in the names of the + fonts embedded in a PDF. It is used by tt_check_trickyness_family(), + to keep from mistaking "DLC" in the randomization tag as a + tricky font name. See discussion in: + + https://lists.nongnu.org/archive/html/freetype-devel/2021-02/msg00002.html + + For technical detail about the randomization tag, please find + PDF Reference 5.5.3 "Font Subsets". Thanks to Justyna Wawrzynska + for pointing out the issue caused by the randomization tag. + +2021-08-24 suzuki toshiya + + [truetype] Add checksums for 2 tricky fonts. + + Thanks to Ting717 for providing sample PDF. Fixes #1087. + + * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): Add + checksums for 2 tricky fonts `DFHei-Bd-WIN-HK-BF' and + `DFMing-Md-WIN-HK-BF'. + +2021-08-23 Alexei Podtelezhnikov + + Whitespace formatting. + +2021-08-22 Alexei Podtelezhnikov + + Decorate const arguments. + + * src/base/ftglyph.c (FT_Glyph_Transform, FT_Glyph_To_Bitmap): Do it. + * include/freetype/ftglyph.h (FT_Glyph_Transform, FT_Glyph_To_Bitmap): + Do it. + +2021-08-21 Alexei Podtelezhnikov + + [smooth] Clean up the null cell usage. + + Put the null cell at the end of the pool and store it explicitly so that + we can use it as both the limit and the dumpster. + + * src/smooth/ftgrays.c (gray_TWorker): Store the last `cell_null` and + remove unnecesary fields. + (NULL_CELL_PTR, CELL_IS_NULL): Remove in favor of explicit `cell_null`. + (gray_dump_cells, gray_set_cell, gray_sweep{,_direct}): Update callers. + (gray_convert_glyph_inner): Trace remaining cells (oh well). + (gray_convert_glyph): Set up `cell_null` and slightly improve the pool + management. + +2021-08-20 Alexei Podtelezhnikov + + [base] Restore quiet no-op rendering of bitmap glyphs. + + Fixes #1076. + + * src/base/ftobjs.c (FT_Render_Glyph_Internal): Discard an error when + rendering a bitmap glyph. + +2021-08-20 Alexei Podtelezhnikov + + [smooth] Fortify 64-bit algorithm. + + * src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): s/long/FT_Int64/ and + s/unsigned long/FT_UInt64/. + (gray_render_line): Adjust a critical variable type. + +2021-08-20 Carlo Bramini + + * builds/windows/ftsystem.c (FT_Stream_Open): Support legacy Windows. + +2021-08-20 Alexei Podtelezhnikov + + Determine `long long` availability based on its size. + + MSVC, for example, used `long long` even without full C99 support. + + * include/freetype/config/ftstdlib.h: Check if `long long` limits are + defined in . + * include/freetype/config/integer-types.h: Check `long long` size and + use it to typedef FT_Int64. + +2021-08-19 Dominik Röttsches + + [sfnt] Fix format expectation for `COLR` v1 ClipList + + * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Change ClipList + format expectation to 1 instead of 0 to make it compliant with the + latest spec. + +2021-08-19 Alexei Podtelezhnikov + + Readily use `long long` as a 64-bit type in C99 mode. + + * include/freetype/config/integer-types.h (FT_INT64): + FT_CONFIG_OPTION_FORCE_INT64 is no longer required to use `long long`. + +2021-08-19 Alexei Podtelezhnikov + + Use FT_INT64 instead of FT_LONG64. + + * include/freetype/config/integer-types.h: Remove synonymous FT_LONG64. + * include/freetype/internal/ftcalc.h: s/FT_LONG64/FT_INT64/. + * src/base/ftcalc.c: Ditto. + * src/base/fttrigon.c: Ditto. + * src/smooth/ftgrays.c: Ditto. + +2021-08-18 Alexei Podtelezhnikov + + [builds/windows] Do not set CharacterSet for VC++. + + * builds/windows/vc2010/freetype.vcxproj: s/Unicode/NotSet/. + * builds/windows/visualc/freetype.vcproj: s/"1"/"0"/. + +2021-08-18 Werner Lemberg + + * src/sdf/ftsdf.c (get_control_box): Fix compiler warning. + +2021-08-18 Werner Lemberg + + [base] Fix ppem size overflow. + + Fixes #1086. + + * src/base/ftobjs.c (FT_Request_Metrics): Add return value. + Check whether ppem values fit into unsigned short values. + (FT_Request_Size): Updated. + + * include/freetype/internal/ftobjs.h: Updated. + + * src/cff/cffobjs.c (cff_size_request), src/cid/cidobjs.c + (cid_size_request), src/truetype/ttdriver.c (tt_size_request), + src/type1/t1objs.c (T1_Size_Request): Updated. + +2021-08-18 Alexei Podtelezhnikov + + * builds/windows/ftsystem.c (FT_Stream_Open): Cast to remove warning. + +2021-08-18 Alexei Podtelezhnikov + + * builds/windows/ftsystem.c (FT_Stream_Open): Support UNICODE compilation. + +2021-08-09 Werner Lemberg + + * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Minor fix. + +2021-08-09 Dominik Röttsches + + [sfnt] Add missing blend mode 'plus' to 'COLR' v1. + + * include/freetype/ftcolor.h (FT_Composite_Mode): Add missing blend mode + 'plus' after it was added to the spec. + +2021-08-08 Werner Lemberg + + include/freetype/freetype.h (FT_Encoding): Improve documentation. + + Based on a suggestion by Antony Lee . + +2021-08-07 Werner Lemberg + + [smooth] Avoid integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36243 + + * src/smooth/ftgrays.c(ADD_LONG, SUB_LONG, MUL_LONG, NEG_LONG) + [STANDALONE_]: Removed, unused. + (ADD_INT) [STANDALONE_]: New macro. + (FT_INTEGRATE): Use ADD_INT. + +2021-08-07 Dominik Röttsches + + [sfnt] Add API for retrieving a 'COLR' v1 'ClipBox' table. + + The optional 'COLR' v1 glyph-specific clip box helps upstream graphics + libraries allocate a sufficiently large bitmap for a glyph without having to + traverse the glyph graph for that. See + + https://github.com/googlefonts/colr-gradients-spec/issues/251 + + for background on the introduction of this specification change. + + * include/freetype/ftcolor.h (FT_ClipBox): New structure. + (FT_Get_Color_Glyph_ClipBox): New function declaration. + + * include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_ClipBox_Func): + New function type. + (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Use it. + + * src/base/ftobjs.c (FT_Get_Color_Glyph_ClipBox): New function to link API + with SFNT implementation. + + * src/sfnt/sfdriver.c (sfnt_interface): Updated. + * src/sfnt/ttcolr.c (Colr): New field `clip_list`. + (tt_face_load_colr): Parse global clip list offset. + (tt_face_get_color_glyph_clipbox): New function to find the clip box for a + glyph id from the clip list array. + * src/sfnt/ttcolr.h: Updated. + +2021-08-06 Werner Lemberg + + [smooth] Fix left shifts of negative numbers. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36241 + + * src/smooth/ftgrays.c (LEFT_SHIFT): New macro. + (gray_render_conic) [BEZIER_USE_DDA]: Use it. + +2021-08-02 Werner Lemberg + + * meson.build: Fix zlib support. + + This commit synchronizes zlib support with both autotools and cmake: If no + external zlib is found (or intentionally disabled on the command line), use + the internal zlib by undefining `FT_CONFIG_OPTION_SYSTEM_ZLIB` without + modifying `FT_CONFIG_OPTION_USE_ZLIB`. + + Also improve summary output. + + Problem reported by Moazin. + +2021-08-02 Anuj Verma + + [sdf] Fix out-of-range-access. + + * src/sdf/ftbsdf.c (first_pass, second_pass): Fix range during forward pass. + Otherwise the index goes out of range for the last column. + + Fixes issue #1077. + +2021-08-02 Anuj Verma + + Fix invalid memory access in `bsdf` rasterizer. + + Do not generate SDF from bitmap if the `FT_GLYPH_OWN_BITMAP` flag is not + set. In some cases the bitmap buffer is freed but still points to a valid + address; to handle those cases check the flag before accessing the memory. + + * src/sdf/ftsdfrend.c (ft_bsdf_render): Handle the above case. + Also, return an error message if the bitmap's rows/pitch is invalid, + otherwise `slot->buffer` might be assigned to some invalid memory location. + (ft_sdf_render): Same as above. + Plus, move the outline back to original state after rasterization and not if + any error occurs. + +2021-07-29 Heiko Becker + + * meson.build: Honor `--includedir` instead of hard-coding 'include'. + +2021-07-29 Werner Lemberg + + src/sfnt/ttcolr.c: Minor formatting. + +2021-07-29 Dominik Röttsches + + [sfnt] 'COLR' v1 PaintSweepGradient spec update + + * src/sfnt/ttcolr.c (read_paint): PaintSweepGradient follows other + spec changes and now has the angles specified as F2DOT14, reflect + that in the implementation. + * include/freetype/ftcolor.h (FT_PaintSweepGradient): Update + documentation. + +2021-07-29 Dominik Röttsches + + [sfnt] Retrieve affine matrix from offset in 'COLR' v1 parsing. + + * src/sfnt/ttcolr.c (read_paint): Implement spec change where + affine transform matrix is now referenced by offset instead of + being placed inline in the PaintTransform table. + +2021-07-29 Dominik Röttsches + + [sfnt] 'COLR' v1 PaintSkew related spec updates + + * src/sfnt/ttcolr.c (read_paint): Implement spec changes around + PaintSkew, PaintSkewAroundCenter. Update parsing to read shorter + values as changed in the spec. + * include/freetype/ftcolor.h (FT_PaintSkew): Update documentation. + +2021-07-29 Dominik Röttsches + + [sfnt] PaintRotate/PaintRotateAroundCenter spec updates + + * src/sfnt/ttcolr.c (read_paint): Implement spec change where + PaintRotate and PaintRotateAroundCenter were split for a more + compact format definition. Update parsing to read shorter values + as changed in the spec. + * include/freetype/ftcolor.h (FT_PaintRotate): Update documentation. + +2021-07-29 Dominik Röttsches + + [sfnt] 'COLR' v1 PaintTranslate and PaintScale precision + + * src/sfnt/ttcolr.c (read_paint): Implement spec changes in + PaintTranslate and PaintScale and friends. Update parsing to read + new shorter values. + +2021-07-29 AnuthaDev + + README.git: Add Code of Conduct. + +2021-07-25 Werner Lemberg + + ChangeLog housekeeping. + + Archive old `ChangeLog` file. + + We no longer write ChangeLog entries manually; instead, the file will be + created from commit messages (which should be formatted in GNU's ChangeLog + style) by a call to + + gitlog-to-changelog --format='%B%n' + + or something similar (this script is part of the 'gnulib' repository). + +2021-07-24 Werner Lemberg + + Fix some `cppcheck` warnings. + + * src/bzip2/ftbzip2.c (ft_bzip2_file_skip_output), src/gzip/ftgzip.c + (ft_gzip_file_skip_output): Reduce scope of `delta`. + + * src/psaux/psintrp.c, src/psaux/psintrp.h (cf2_interpT2CharString): Add + `const` to `buf` parameter. + + * src/raster/ftraster.c (DelOld): Add `const` to `profile` parameter. + (Vertical_Sweep_Span): Reduce scope of `target`. + (FT_Outline_Get_CBox): Reduce scope of `xMin`, `xMax`, `yMin`, `yMax`. + + * src/smooth/ftgrays.c (gray_render_conic): Reduce scope of `split`. + (gray_sweep, gray_sweep_direct): Reduce scope of `area`. + + * src/tools/apinames.c (names_dump) : Reduce scope of + `temp`. + +2021-07-24 AnuthaDev + + * .gitlab-ci.yml: Fixed cmake build, using correct options. + +2021-07-24 AnuthaDev + + * CMakeLists.txt: Make `cmake` handle disabled dependencies correctly. + + Include 'CMakeDependentOption'. + + Replace `FT_WITH_XXX` options with `FT_DISABLE_XXX` and `FT_REQUIRE_XXX` + pairs. Update option logic accordingly. + + Fixes #1066. + +2021-07-24 Ben Wagner + + [autofit] Split `afwrtsys.h`. + + The header file `afwrtsys.h` has two distinct functions: to include the + required writing system headers and also to generate code for each writing + system. At each current use site only one or the other is used, with + various macro trickery selecting one or the other. Split this header into + `afws-decl.h` for the required writing system declarations and `afws-iter.h` + for iterating over the writing systems to generate code. + + The motivation for this change is that the Visual C++ compiler treats the + standard include guard idiom like `#pragma once` 'if no non-comment code or + preprocessor directive comes before or after the standard form of the + idiom'. It appears to check this after macro expansion, so if + `WRITING_SYSTEM` expands to empty the bottom of `afwrtsys.h` is empty and + looks like the standard include guard idiom which is treated like `#pragma + once`, so subsequent inclusion of `afwrtsys.h` is elided. + + Fixes #1075. + + * src/autofit/afglobal.c (af_writing_system_classes), src/autofit/aftypes.h + (AF_WritingSystem), src/autofit/rules.mk (AUTOF_DRV_H): Updated. + + * src/autofit/afwrtsys.h: Split into... + * src/autofit/afws-decl.h, src/autofit/afws-iter.h: New files. diff --git a/local/recipes/libs/freetype2/source/LICENSE.TXT b/local/recipes/libs/freetype2/source/LICENSE.TXT new file mode 100644 index 0000000000..0f9df2177a --- /dev/null +++ b/local/recipes/libs/freetype2/source/LICENSE.TXT @@ -0,0 +1,47 @@ +FREETYPE LICENSES +----------------- + +The FreeType 2 font engine is copyrighted work and cannot be used +legally without a software license. In order to make this project +usable to a vast majority of developers, we distribute it under two +mutually exclusive open-source licenses. + +This means that *you* must choose *one* of the two licenses described +below, then obey all its terms and conditions when using FreeType 2 in +any of your projects or products. + + - The FreeType License, found in the file `docs/FTL.TXT`, which is + similar to the original BSD license *with* an advertising clause + that forces you to explicitly cite the FreeType project in your + product's documentation. All details are in the license file. + This license is suited to products which don't use the GNU General + Public License. + + Note that this license is compatible to the GNU General Public + License version 3, but not version 2. + + - The GNU General Public License version 2, found in + `docs/GPLv2.TXT` (any later version can be used also), for + programs which already use the GPL. Note that the FTL is + incompatible with GPLv2 due to its advertisement clause. + +The contributed BDF and PCF drivers come with a license similar to +that of the X Window System. It is compatible to the above two +licenses (see files `src/bdf/README` and `src/pcf/README`). The same +holds for the source code files `src/base/fthash.c` and +`include/freetype/internal/fthash.h`; they were part of the BDF driver +in earlier FreeType versions. + +The gzip module uses the zlib license (see `src/gzip/zlib.h`) which +too is compatible to the above two licenses. + +The files `src/autofit/ft-hb-ft.c`, `src/autofit/ft-hb-decls.h`, +`src/autofit/ft-hb-types.h`, and `src/autofit/hb-script-list.h` +contain code taken (almost) verbatim from the HarfBuzz library, which +uses the 'Old MIT' license compatible to the above two licenses. + +The MD5 checksum support (only used for debugging in development +builds) is in the public domain. + + +--- end of LICENSE.TXT --- diff --git a/local/recipes/libs/freetype2/source/MSBuild.rsp b/local/recipes/libs/freetype2/source/MSBuild.rsp new file mode 100644 index 0000000000..8401e60309 --- /dev/null +++ b/local/recipes/libs/freetype2/source/MSBuild.rsp @@ -0,0 +1,4 @@ +# MSBuild.rsp with default command-line switches +/clp:ForceConsoleColor +/p:Configuration=Release +#/p:WindowsTargetPlatformVersion=10.0.16299.0 diff --git a/local/recipes/libs/freetype2/source/MSBuild.sln b/local/recipes/libs/freetype2/source/MSBuild.sln new file mode 100644 index 0000000000..ba56ae2ef8 --- /dev/null +++ b/local/recipes/libs/freetype2/source/MSBuild.sln @@ -0,0 +1,66 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 or later +# +# You can build FreeType with MSBuild as follows +# +# MSBuild.exe -t:Rebuild +# -p:Configuration=Debug +# -p:Platform=x64 +# -p:UserDefines=FT_DEBUG_LOGGING +# MSBuild.sln +# +# or with different appropriate switches. The library file +# freetype.dll and/or freetype.lib should appear in the objs/ +# folder. A copy should be sent to ../freetype-demos/bin/ +# to be used with the demo programs. +# +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "builds\windows\vc2010\freetype.vcxproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|ARM64 = Debug|ARM64 + Debug|Win32 = Debug|Win32 + Debug Static|x64 = Debug Static|x64 + Debug Static|ARM64 = Debug Static|ARM64 + Debug Static|Win32 = Debug Static|Win32 + Release|x64 = Release|x64 + Release|ARM64 = Release|ARM64 + Release|Win32 = Release|Win32 + Release Static|x64 = Release Static|x64 + Release Static|ARM64 = Release Static|ARM64 + Release Static|Win32 = Release Static|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.ActiveCfg = Debug|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.Build.0 = Debug|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|ARM64.Build.0 = Debug|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|x64.ActiveCfg = Debug Static|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|x64.Build.0 = Debug Static|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|ARM64.ActiveCfg = Debug Static|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|ARM64.Build.0 = Debug Static|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.ActiveCfg = Debug Static|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.Build.0 = Debug Static|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.ActiveCfg = Release|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.Build.0 = Release|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|ARM64.ActiveCfg = Release|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|ARM64.Build.0 = Release|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|x64.ActiveCfg = Release Static|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|x64.Build.0 = Release Static|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|ARM64.ActiveCfg = Release Static|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|ARM64.Build.0 = Release Static|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.ActiveCfg = Release Static|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.Build.0 = Release Static|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {90811697-0889-4381-80BC-C3FE8FA4931F} + EndGlobalSection +EndGlobal diff --git a/local/recipes/libs/freetype2/source/Makefile b/local/recipes/libs/freetype2/source/Makefile new file mode 100644 index 0000000000..03c0429837 --- /dev/null +++ b/local/recipes/libs/freetype2/source/Makefile @@ -0,0 +1,34 @@ +# +# FreeType 2 build system -- top-level Makefile +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Project names +# +PROJECT := freetype +PROJECT_TITLE := FreeType + +# The variable TOP_DIR holds the path to the topmost directory in the project +# engine source hierarchy. If it is not defined, default it to `.'. +# +TOP_DIR ?= . + +# The variable OBJ_DIR gives the location where object files and the +# FreeType library are built. +# +OBJ_DIR ?= $(TOP_DIR)/objs + + +include $(TOP_DIR)/builds/toplevel.mk + +# EOF diff --git a/local/recipes/libs/freetype2/source/README b/local/recipes/libs/freetype2/source/README new file mode 100644 index 0000000000..9e85fc8070 --- /dev/null +++ b/local/recipes/libs/freetype2/source/README @@ -0,0 +1,110 @@ +FreeType 2.14.3 +=============== + +Homepage: https://freetype.org + +FreeType is a freely available software library to render fonts. + +It is written in C, designed to be small, efficient, highly +customizable, and portable while capable of producing high-quality +output (glyph images) of most vector and bitmap font formats. + +Please read the `docs/CHANGES` file, it contains IMPORTANT +INFORMATION. + +Read the files `docs/INSTALL*` for installation instructions; see the +file `LICENSE.TXT` for the available licenses. + +For using FreeType's git repository instead of a distribution bundle, +please read file `README.git`. Note that you have to actually clone +the repository; using a snapshot will not work (in other words, don't +use gitlab's 'Download' button). + +The FreeType 2 API reference is located in directory `docs/reference`; +use the file `index.html` as the top entry point. [Please note that +currently the search function for locally installed documentation +doesn't work due to cross-site scripting issues.] + +Additional documentation is available as a separate package from our +sites. Go to + + https://download.savannah.gnu.org/releases/freetype/ + +and download one of the following files. + + freetype-doc-2.14.3.tar.xz + freetype-doc-2.14.3.tar.gz + ftdoc2143.zip + +To view the documentation online, go to + + https://freetype.org/freetype2/docs/ + + +Mailing Lists +------------- + +The preferred way of communication with the FreeType team is using +e-mail lists. + + general use and discussion: freetype@nongnu.org + engine internals, porting, etc.: freetype-devel@nongnu.org + announcements: freetype-announce@nongnu.org + git repository tracker: freetype-commit@nongnu.org + +The lists are moderated; see + + https://freetype.org/contact.html + +how to subscribe. + + +Bugs +---- + +Please submit bug reports at + + https://gitlab.freedesktop.org/freetype/freetype/-/issues + +This gitlab instance also supports confidential reports. + +Alternatively, but less preferable, you might report bugs by sending +an e-mail to the public mailing list `freetype-devel@nongnu.org`. +Don't forget to submit a detailed explanation of the problem -- there +is nothing worse than receiving a terse message that only says 'it +doesn't work'. + + +Patches +------- + +For larger changes please provide merge requests at + + https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests + +Alternatively, you can send patches to the `freetype-devel@nongnu.org` +mailing list -- and thank you in advance for your work on improving +FreeType! + +Details on the process can be found here: + + https://freetype.org/developer.html#patches + + +Enjoy! + + The FreeType Team + +---------------------------------------------------------------------- + +Copyright (C) 2006-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute +this file you indicate that you have read the license and understand +and accept it fully. + + +--- end of README --- diff --git a/local/recipes/libs/freetype2/source/README.git b/local/recipes/libs/freetype2/source/README.git new file mode 100644 index 0000000000..16cf434dbf --- /dev/null +++ b/local/recipes/libs/freetype2/source/README.git @@ -0,0 +1,102 @@ +README.git +========== + + +repository issues +----------------- + +FreeType's official repository site is + + https://gitlab.freedesktop.org/freetype , + +from which the 'freetype.git' and 'freetype-demos.git' repositories +can be cloned in the usual way. + + git clone https://gitlab.freedesktop.org/freetype/freetype.git + git clone https://gitlab.freedesktop.org/freetype/freetype-demos.git + +If you want to use the Savannah mirror instead, you have to do a +slightly different incantation because the repository names contain +digit '2' for historical reasons. + + git clone \ + https://git.savannah.nongnu.org/git/freetype/freetype2.git \ + freetype + git clone \ + https://git.savannah.nongnu.org/git/freetype/freetype2-demos.git \ + freetype-demos + + +standard builds with `configure` +-------------------------------- + +The git repository doesn't contain pre-built configuration scripts for +UNIXish platforms. To generate them say + + sh autogen.sh + +which in turn depends on the following packages: + + automake (1.10.1) + libtool (2.2.4) + autoconf (2.62) + +The versions given in parentheses are known to work. Newer versions +should work too, of course. Note that `autogen.sh` also sets up +proper file permissions for the `configure` and auxiliary scripts. + +The `autogen.sh` script checks whether the versions of the above three +tools match the numbers above. Otherwise it will complain and suggest +either upgrading or using environment variables to point to more +recent versions of the required tools. + +Note that `aclocal` is provided by the 'automake' package on Linux, +and that `libtoolize` is called `glibtoolize` on Darwin (OS X). + + +alternative build methods +------------------------- + +For static builds that don't use platform-specific optimizations, no +configure script is necessary at all; saying + + make setup ansi + make + +should work on all platforms that have GNU `make` (or `makepp`). + +A build with `cmake` or `meson` can be done directly from the git +repository. However, if you want to use the `FT_DEBUG_LOGGING` macro +(see file `docs/DEBUG` for more information) it is currently mandatory +to execute `autogen.sh` in advance; this script clones the 'dlg' git +submodule and copies some files into FreeType's source tree. + + +Code of Conduct +--------------- + +Please note that this project is released with a Contributor Code of +Conduct (CoC). By participating in this project you agree to abide by +its terms, which you can find in the following link: + + https://www.freedesktop.org/wiki/CodeOfConduct + +CoC issues may be raised to the project maintainers at the following +address: + + wl@gnu.org + apodtele@gmail.com + +---------------------------------------------------------------------- + +Copyright (C) 2005-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute +this file you indicate that you have read the license and understand +and accept it fully. + + +--- end of README.git --- diff --git a/local/recipes/libs/freetype2/source/autogen.sh b/local/recipes/libs/freetype2/source/autogen.sh new file mode 100755 index 0000000000..e6f1ebf234 --- /dev/null +++ b/local/recipes/libs/freetype2/source/autogen.sh @@ -0,0 +1,199 @@ +#!/bin/sh + +# Copyright (C) 2005-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +run () +{ + echo "running \`$*'" + eval $* + + if test $? != 0 ; then + echo "error while running \`$*'" + exit 1 + fi +} + +get_major_version () +{ + echo $1 | sed -e 's/\([0-9][0-9]*\)\..*/\1/g' +} + +get_minor_version () +{ + echo $1 | sed -e 's/[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g' +} + +get_patch_version () +{ + # tricky: some version numbers don't include a patch + # separated with a point, but something like 1.4-p6 + patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g'` + if test "$patch" = "$1"; then + patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\-p\([0-9][0-9]*\).*/\1/g'` + # if there isn't any patch number, default to 0 + if test "$patch" = "$1"; then + patch=0 + fi + fi + echo $patch +} + +# $1: version to check +# $2: minimum version + +compare_to_minimum_version () +{ + MAJOR1=`get_major_version $1` + MAJOR2=`get_major_version $2` + if test $MAJOR1 -lt $MAJOR2; then + echo 0 + return + else + if test $MAJOR1 -gt $MAJOR2; then + echo 1 + return + fi + fi + + MINOR1=`get_minor_version $1` + MINOR2=`get_minor_version $2` + if test $MINOR1 -lt $MINOR2; then + echo 0 + return + else + if test $MINOR1 -gt $MINOR2; then + echo 1 + return + fi + fi + + PATCH1=`get_patch_version $1` + PATCH2=`get_patch_version $2` + if test $PATCH1 -lt $PATCH2; then + echo 0 + else + echo 1 + fi +} + +# check the version of a given tool against a minimum version number +# +# $1: tool path +# $2: tool usual name (e.g. `aclocal') +# $3: tool variable (e.g. `ACLOCAL') +# $4: minimum version to check against +# $5: option field index used to extract the tool version from the +# output of --version + +check_tool_version () +{ + field=$5 + # assume the output of "[TOOL] --version" is "toolname (GNU toolname foo bar) version" + if test "$field"x = x; then + field=3 # default to 3 for all GNU autotools, after filtering enclosed string + fi + version=`$1 --version | sed -n '1s/([^)]*)/()/gp' | cut -d ' ' -f $field` + version_check=`compare_to_minimum_version $version $4` + if test "$version_check"x = 0x; then + echo "ERROR: Your version of the \`$2' tool is too old." + echo " Minimum version $4 is required (yours is version $version)." + echo " Please upgrade or use the $3 variable to point to a more recent one." + echo "" + exit 1 + fi +} + +# Solaris 10's shell doesn't like the `!` operator to negate the exit status. +if test -f ./builds/unix/configure.raw; then + : +else + echo "You must be in the same directory as \`autogen.sh'." + echo "Bootstrapping doesn't work if srcdir != builddir." + exit 1 +fi + +# On MacOS X, the GNU libtool is named `glibtool'. +HOSTOS=`uname` +if test "$LIBTOOLIZE"x != x; then + : +elif test "$HOSTOS"x = Darwinx; then + LIBTOOLIZE=glibtoolize +else + LIBTOOLIZE=libtoolize +fi + +if test "$ACLOCAL"x = x; then + ACLOCAL=aclocal +fi + +if test "$AUTOCONF"x = x; then + AUTOCONF=autoconf +fi + +check_tool_version $ACLOCAL aclocal ACLOCAL 1.10.1 +check_tool_version $LIBTOOLIZE libtoolize LIBTOOLIZE 2.2.4 +check_tool_version $AUTOCONF autoconf AUTOCONF 2.62 + +# This sets FREETYPE version. +eval `sed -n \ +-e 's/^#define *\(FREETYPE_MAJOR\) *\([0-9][0-9]*\).*/\1=\2/p' \ +-e 's/^#define *\(FREETYPE_MINOR\) *\([0-9][0-9]*\).*/\1=\2/p' \ +-e 's/^#define *\(FREETYPE_PATCH\) *\([0-9][0-9]*\).*/\1=\2/p' \ +include/freetype/freetype.h` + +if test "$FREETYPE_PATCH" = "0"; then + FREETYPE=$FREETYPE_MAJOR.$FREETYPE_MINOR +else + FREETYPE=$FREETYPE_MAJOR.$FREETYPE_MINOR.$FREETYPE_PATCH +fi + +echo "FreeType $FREETYPE:" + +cd builds/unix + +echo "generating \`configure.ac'" +sed -e "s;@VERSION@;$FREETYPE;" \ + < configure.raw > configure.ac + +run aclocal -I . --force +run $LIBTOOLIZE --force --copy --install +run autoconf --force + +chmod +x install-sh + +cd ../.. + +chmod +x ./configure + +# Copy all necessary 'dlg' files. +copy_submodule_files () +{ + echo "Copying files from \`subprojects/dlg' to \`src/dlg' and \`include/dlg'" + mkdir include/dlg 2> /dev/null + cp $DLG_INC_DIR/output.h include/dlg + cp $DLG_INC_DIR/dlg.h include/dlg + cp $DLG_SRC_DIR/* src/dlg +} + +if test -d ".git" -o -h ".git"; then + DLG_INC_DIR=subprojects/dlg/include/dlg + DLG_SRC_DIR=subprojects/dlg/src/dlg + + if test -d "$DLG_INC_DIR"; then + : + else + echo "Checking out submodule in \`subprojects/dlg':" + git submodule update --init + fi + + copy_submodule_files +fi + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/amiga/README b/local/recipes/libs/freetype2/source/builds/amiga/README new file mode 100644 index 0000000000..afb06c3708 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/README @@ -0,0 +1,110 @@ + +README for the builds/amiga subdirectory. + +Copyright (C) 2005-2026 by +Werner Lemberg and Detlef Würkner. + +This file is part of the FreeType project, and may only be used, modified, +and distributed under the terms of the FreeType project license, +LICENSE.TXT. By continuing to use, modify, or distribute this file you +indicate that you have read the license and understand and accept it +fully. + + +The makefile.os4 is for the AmigaOS4 SDK. To use it, type +"make -f makefile.os4", it produces a link library libft2_ppc.a. + +The makefile is for ppc-morphos-gcc-2.95.3-bin.tgz (gcc 2.95.3 hosted on +68k-Amiga producing MorphOS-PPC-binaries from http://www.morphos.de). +To use it, type "make assign", then "make"; it produces a link library +libft2_ppc.a. + +The smakefile is a makefile for Amiga SAS/C 6.58 (no longer available, +latest sold version was 6.50, updates can be found in Aminet). It is +based on the version found in the sourcecode of ttf.library 0.83b for +FreeType 1.3.1 from Richard Griffith (ragriffi@sprynet.com, +http://ragriffi.home.sprynet.com). + +You will also need the latest include files and amiga.lib from the +Amiga web site (https://os.amigaworld.de/download.php?id=3) for +AmigaOS 3.9; the generated code should work under AmigaOS 2.04 and up. + +To use it, call "smake assign" and then "smake" from the builds/amiga +directory. The results are: + +- A link library "ft2_680x0.lib" (where x depends on the setting of + the CPU entry in the smakefile) containing all FreeType2 parts + except of the init code, debugging code, and the system interface + code. + +- ftsystem.o, an object module containing the standard version of the + system interface code which uses fopen() fclose() fread() fseek() + ftell() malloc() realloc() and free() from lib:sc.lib (not pure). + +- ftsystempure.o, an object module containing the pure version of the + system interface code which uses Open() Close() Read() Seek() + ExamineFH() AsmAllocPooled() AsmFreePooled() etc. This version can + be used in both normal programs and in Amiga run-time shared system + librarys (can be linked with lib:libinit.o, no copying of DATA and + BSS hunks for each OpenLibrary() necessary). Source code is in + src/base/ftsystem.c. + +- ftdebug.o, an object module containing the standard version of the + debugging code which uses vprintf() and exit() (not pure). + Debugging can be turned on in FT:include/freetype/config/ftoption.h + and with FT_SetTraceLevel(). + +- ftdebugpure.o, an object module containing the pure version of the + debugging code which uses KVPrintf() from lib:debug.lib and no + exit(). For debugging of Amiga run-time shared system libraries. + Source code is in src/base/ftdebug.c. + +- NO ftinit.o. Because linking with a link library should result in + linking only the needed object modules in it, but standard + ftsystem.o would force ALL FreeType2 modules to be linked to your + program, I decided to use a different scheme: You must #include + FT:src/base/ftinit.c in your sourcecode and specify with #define + statements which modules you need. See + include/freetype/config/ftmodule.h. + + +To use in your own programs: + +- Insert the #define and #include statements from top of + include/freetype/config/ftmodule.h in your source code and + uncomment the #define statements for the FreeType2 modules you need. + +- You can use either PARAMETERS=REGISTER or PARAMETERS=STACK for + calling the FreeType2 functions, because the link library and the + object files are compiled with PARAMETERS=BOTH. + +- "smake assign" (assign "FT:" to the FreeType2 main directory). + +- Compile your program. + +- Link with either ftsystem.o or ftsystempure.o, if debugging enabled + with either ftdebug.o or (ftdebugpure.o and lib:debug.lib), and with + ft2_680x0.lib as link library. + + +To adapt to other compilers: + +- The standard ANSI C maximum length of 31 significant characters in + identifiers is not enough for FreeType2. Check if your compiler has + a minimum length of 40 significant characters or can be switched to + it. "idlen=40" is the option for SAS/C. Setting #define + HAVE_LIMIT_ON_IDENTS in an include file may also work (not tested). + +- Make sure that the include directory in builds/amiga is searched + before the normal FreeType2 include directory, so you are able to + replace problematic include files with your own version (same may be + useful for the src directory). + +- An example of how to replace/workaround a problematic include file + is include/freetype/config/ftconfig.h; it changes a #define that + would prevent SAS/C from generating XDEF's where it should do that and + then includes the standard FreeType2 include file. + +Local Variables: +coding: latin-1 +End: diff --git a/local/recipes/libs/freetype2/source/builds/amiga/include/config/ftconfig.h b/local/recipes/libs/freetype2/source/builds/amiga/include/config/ftconfig.h new file mode 100644 index 0000000000..90ad5c853a --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/include/config/ftconfig.h @@ -0,0 +1,55 @@ +/***************************************************************************/ +/* */ +/* ftconfig.h */ +/* */ +/* Amiga-specific configuration file (specification only). */ +/* */ +/* Copyright (C) 2005-2026 by */ +/* Werner Lemberg and Detlef Würkner. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/* + * This is an example how to override the default FreeType2 header files + * with Amiga-specific changes. When the compiler searches this directory + * before the default directory, we can do some modifications. + * + * Here we must change FT_EXPORT_DEF so that SAS/C does + * generate the needed XDEFs. + */ + +#if 0 +#define FT_EXPORT_DEF( x ) extern x +#endif + +#undef FT_EXPORT_DEF +#define FT_EXPORT_DEF( x ) x + +/* Now include the original file */ +#ifndef __MORPHOS__ +#ifdef __SASC +#include "FT:include/freetype/config/ftconfig.h" +#else +#include "/FT/include/freetype/config/ftconfig.h" +#endif +#else +/* We must define that, it seems that + * lib/gcc-lib/ppc-morphos/2.95.3/include/syslimits.h is missing in + * ppc-morphos-gcc-2.95.3-bin.tgz (gcc for 68k producing MorphOS PPC elf + * binaries from http://www.morphos.de) + */ +#define _LIBC_LIMITS_H_ +#include "/FT/include/freetype/config/ftconfig.h" +#endif + +/* +Local Variables: +coding: latin-1 +End: +*/ diff --git a/local/recipes/libs/freetype2/source/builds/amiga/include/config/ftmodule.h b/local/recipes/libs/freetype2/source/builds/amiga/include/config/ftmodule.h new file mode 100644 index 0000000000..9f76b17a01 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/include/config/ftmodule.h @@ -0,0 +1,158 @@ +/***************************************************************************/ +/* */ +/* ftmodule.h */ +/* */ +/* Amiga-specific FreeType module selection. */ +/* */ +/* Copyright (C) 2005-2026 by */ +/* Werner Lemberg and Detlef Würkner. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/* + * To avoid that all your programs include all FreeType modules, + * you copy the following piece of source code into your own + * source file and specify which modules you really need in your + * application by uncommenting the appropriate lines. + */ +/* +//#define FT_USE_AUTOFIT // autofitter +//#define FT_USE_RASTER // monochrome rasterizer +//#define FT_USE_SMOOTH // anti-aliasing rasterizer +//#define FT_USE_TT // truetype font driver +//#define FT_USE_T1 // type1 font driver +//#define FT_USE_T42 // type42 font driver +//#define FT_USE_T1CID // cid-keyed type1 font driver // no cmap support +//#define FT_USE_CFF // opentype font driver +//#define FT_USE_BDF // bdf bitmap font driver +//#define FT_USE_PCF // pcf bitmap font driver +//#define FT_USE_PFR // pfr font driver +//#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver +//#define FT_USE_OTV // opentype validator +//#define FT_USE_GXV // truetype gx validator +#include "FT:src/base/ftinit.c" +*/ + +/* Make sure that the needed support modules are built in. + * Dependencies can be found by searching for FT_Get_Module. + */ + +#ifdef FT_USE_T42 +#define FT_USE_TT +#endif + +#ifdef FT_USE_TT +#define FT_USE_SFNT +#endif + +#ifdef FT_USE_CFF +#define FT_USE_SFNT +#define FT_USE_PSHINT +#define FT_USE_PSNAMES +#endif + +#ifdef FT_USE_T1 +#define FT_USE_PSAUX +#define FT_USE_PSHINT +#define FT_USE_PSNAMES +#endif + +#ifdef FT_USE_T1CID +#define FT_USE_PSAUX +#define FT_USE_PSHINT +#define FT_USE_PSNAMES +#endif + +#ifdef FT_USE_PSAUX +#define FT_USE_PSNAMES +#endif + +#ifdef FT_USE_SFNT +#define FT_USE_PSNAMES +#endif + +/* Now include the modules */ + +#ifdef FT_USE_AUTOFIT +FT_USE_MODULE( FT_Module_Class, autofit_module_class ) +#endif + +#ifdef FT_USE_TT +FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) +#endif + +#ifdef FT_USE_T1 +FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) +#endif + +#ifdef FT_USE_CFF +FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) +#endif + +#ifdef FT_USE_T1CID +FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) +#endif + +#ifdef FT_USE_PFR +FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) +#endif + +#ifdef FT_USE_T42 +FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) +#endif + +#ifdef FT_USE_WINFNT +FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) +#endif + +#ifdef FT_USE_PCF +FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) +#endif + +#ifdef FT_USE_PSAUX +FT_USE_MODULE( FT_Module_Class, psaux_module_class ) +#endif + +#ifdef FT_USE_PSNAMES +FT_USE_MODULE( FT_Module_Class, psnames_module_class ) +#endif + +#ifdef FT_USE_PSHINT +FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) +#endif + +#ifdef FT_USE_RASTER +FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) +#endif + +#ifdef FT_USE_SFNT +FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) +#endif + +#ifdef FT_USE_SMOOTH +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) +#endif + +#ifdef FT_USE_OTV +FT_USE_MODULE( FT_Module_Class, otv_module_class ) +#endif + +#ifdef FT_USE_BDF +FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) +#endif + +#ifdef FT_USE_GXV +FT_USE_MODULE( FT_Module_Class, gxv_module_class ) +#endif + +/* +Local Variables: +coding: latin-1 +End: +*/ diff --git a/local/recipes/libs/freetype2/source/builds/amiga/makefile b/local/recipes/libs/freetype2/source/builds/amiga/makefile new file mode 100644 index 0000000000..8b5a5c0b99 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/makefile @@ -0,0 +1,293 @@ +# +# Makefile for FreeType2 link library using ppc-morphos-gcc-2.95.3-bin.tgz +# (gcc 2.95.3 hosted on 68k-Amiga producing MorphOS-PPC-binaries from +# http://www.morphos.de) +# + + +# Copyright (C) 2005-2026 by +# Werner Lemberg and Detlef Würkner. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# +# to build from the builds/amiga directory call +# +# make assign +# make +# +# Your programs source code should start with this +# (uncomment the parts you do not need to keep the program small): +# ---8<--- +#define FT_USE_AUTOFIT // autofitter +#define FT_USE_RASTER // monochrome rasterizer +#define FT_USE_SMOOTH // anti-aliasing rasterizer +#define FT_USE_TT // truetype font driver +#define FT_USE_T1 // type1 font driver +#define FT_USE_T42 // type42 font driver +#define FT_USE_T1CID // cid-keyed type1 font driver +#define FT_USE_CFF // opentype font driver +#define FT_USE_BDF // bdf bitmap font driver +#define FT_USE_PCF // pcf bitmap font driver +#define FT_USE_PFR // pfr font driver +#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver +#define FT_USE_OTV // opentype validator +#define FT_USE_GXV // truetype gx validator +#include "FT:src/base/ftinit.c" +# ---8<--- +# +# link your programs with libft2_ppc.a and either ftsystem.ppc.o or ftsystempure.ppc.o +# (and either ftdebug.ppc.o or ftdebugpure.ppc.o if you enabled FT_DEBUG_LEVEL_ERROR or +# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). + +all: libft2_ppc.a ftsystem.ppc.o ftsystempure.ppc.o + +assign: + assign FT: // + +FTSRC = /FT/src + +CC = ppc-morphos-gcc +AR = ppc-morphos-ar rc +RANLIB = ppc-morphos-ranlib +LD = ppc-morphos-ld +CFLAGS = -DFT2_BUILD_LIBRARY -O2 -I/emu/emulinclude/includegcc -I/emu/include -Iinclude -I$(FTSRC) -I/FT/include + +# +# FreeType2 library base +# +ftbase.ppc.o: $(FTSRC)/base/ftbase.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftinit.ppc.o: $(FTSRC)/base/ftinit.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftsystem.ppc.o: $(FTSRC)/base/ftsystem.c + $(CC) -c $(CFLAGS) -o $@ $< + +# pure version for use in run-time library etc +ftsystempure.ppc.o: src/base/ftsystem.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftdebug.ppc.o: $(FTSRC)/base/ftdebug.c + $(CC) -c $(CFLAGS) -o $@ $< + +# pure version for use in run-time library etc +ftdebugpure.ppc.o: src/base/ftdebug.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library base extensions +# +ftbbox.ppc.o: $(FTSRC)/base/ftbbox.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftbdf.ppc.o: $(FTSRC)/base/ftbdf.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftbitmap.ppc.o: $(FTSRC)/base/ftbitmap.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftcid.ppc.o: $(FTSRC)/base/ftcid.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftfstype.ppc.o: $(FTSRC)/base/ftfstype.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftgasp.ppc.o: $(FTSRC)/base/ftgasp.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftglyph.ppc.o: $(FTSRC)/base/ftglyph.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftgxval.ppc.o: $(FTSRC)/base/ftgxval.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftmm.ppc.o: $(FTSRC)/base/ftmm.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftotval.ppc.o: $(FTSRC)/base/ftotval.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftpatent.ppc.o: $(FTSRC)/base/ftpatent.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftpfr.ppc.o: $(FTSRC)/base/ftpfr.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftstroke.ppc.o: $(FTSRC)/base/ftstroke.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftsynth.ppc.o: $(FTSRC)/base/ftsynth.c + $(CC) -c $(CFLAGS) -o $@ $< + +fttype1.ppc.o: $(FTSRC)/base/fttype1.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftwinfnt.ppc.o: $(FTSRC)/base/ftwinfnt.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library autofitting module +# +autofit.ppc.o: $(FTSRC)/autofit/autofit.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library postscript hinting module +# +pshinter.ppc.o: $(FTSRC)/pshinter/pshinter.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library PS support module +# +psaux.ppc.o: $(FTSRC)/psaux/psaux.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library PS glyph names module +# +psnames.ppc.o: $(FTSRC)/psnames/psnames.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library monochrome raster module +# +raster.ppc.o: $(FTSRC)/raster/raster.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library anti-aliasing raster module +# +smooth.ppc.o: $(FTSRC)/smooth/smooth.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library 'sfnt' module +# +sfnt.ppc.o: $(FTSRC)/sfnt/sfnt.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library glyph and image caching system +# +ftcache.ppc.o: $(FTSRC)/cache/ftcache.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library OpenType font driver +# +cff.ppc.o: $(FTSRC)/cff/cff.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library TrueType font driver +# +truetype.ppc.o: $(FTSRC)/truetype/truetype.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library Type1 font driver +# +type1.ppc.o: $(FTSRC)/type1/type1.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library Type42 font driver +# +type42.ppc.o: $(FTSRC)/type42/type42.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library CID-keyed Type1 font driver +# +type1cid.ppc.o: $(FTSRC)/cid/type1cid.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library BDF bitmap font driver +# +bdf.ppc.o: $(FTSRC)/bdf/bdf.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library PCF bitmap font driver +# +pcf.ppc.o: $(FTSRC)/pcf/pcf.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library gzip support for compressed PCF bitmap fonts +# +gzip.ppc.o: $(FTSRC)/gzip/ftgzip.c + $(CC) -c $(CFLAGS) -o $@ $< + +# FreeType2 library bzip2 support for compressed PCF bitmap fonts +# +bzip2.ppc.o: $(FTSRC)/bzip2/ftbzip2.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library compress support for compressed PCF bitmap fonts +# +lzw.ppc.o: $(FTSRC)/lzw/ftlzw.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library PFR font driver +# +pfr.ppc.o: $(FTSRC)/pfr/pfr.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library Windows FNT/FON bitmap font driver +# +winfnt.ppc.o: $(FTSRC)/winfonts/winfnt.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library TrueTypeGX Validator +# +gxvalid.ppc.o: $(FTSRC)/gxvalid/gxvalid.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library OpenType validator +# +otvalid.ppc.o: $(FTSRC)/otvalid/otvalid.c + $(CC) -c $(CFLAGS) -o $@ $< + +BASEPPC = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \ + oftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o \ + ftgxval.ppc.o ftmm.ppc.o ftotval.ppc.o \ + ftpatent.ppc.o ftpfr.ppc.o ftstroke.ppc.o ftsynth.ppc.o \ + fttype1.ppc.o ftwinfnt.ppc.o + +DEBUGPPC = ftdebug.ppc.o ftdebugpure.ppc.o + +AFITPPC = autofit.ppc.o + +GXVPPC = gxvalid.ppc.o + +OTVPPC = otvalid.ppc.o + +PSPPC = psaux.ppc.o psnames.ppc.o pshinter.ppc.o + +RASTERPPC = raster.ppc.o smooth.ppc.o + +FONTDPPC = cff.ppc.o type1.ppc.o type42.ppc.o type1cid.ppc.o truetype.ppc.o\ + bdf.ppc.o pcf.ppc.o pfr.ppc.o winfnt.ppc.o + +libft2_ppc.a: $(BASEPPC) $(AFITPPC) $(GXVPPC) $(OTVPPC) $(PSPPC) $(RASTERPPC) sfnt.ppc.o ftcache.ppc.o $(FONTDPPC) gzip.ppc.o bzip2.ppc.o lzw.ppc.o + $(AR) $@ $(BASEPPC) $(AFITPPC) $(GXVPPC) $(OTVPPC) $(PSPPC) $(RASTERPPC) sfnt.ppc.o ftcache.ppc.o $(FONTDPPC) gzip.ppc.o bzip2.ppc.o lzw.ppc.o + -@ ($(RANLIB) $@ || true) >/dev/null 2>&1 + +#Local Variables: +#coding: latin-1 +#End: diff --git a/local/recipes/libs/freetype2/source/builds/amiga/makefile.os4 b/local/recipes/libs/freetype2/source/builds/amiga/makefile.os4 new file mode 100644 index 0000000000..88fe16f195 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/makefile.os4 @@ -0,0 +1,297 @@ +# +# Makefile for FreeType2 link library using gcc 4.0.3 from the +# AmigaOS4 SDK +# + + +# Copyright (C) 2005-2026 by +# Werner Lemberg and Detlef Würkner. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# to build from the builds/amiga directory call +# +# make -f makefile.os4 +# +# Your programs source code should start with this +# (uncomment the parts you do not need to keep the program small): +# ---8<--- +#define FT_USE_AUTOFIT // autofitter +#define FT_USE_RASTER // monochrome rasterizer +#define FT_USE_SMOOTH // anti-aliasing rasterizer +#define FT_USE_TT // truetype font driver +#define FT_USE_T1 // type1 font driver +#define FT_USE_T42 // type42 font driver +#define FT_USE_T1CID // cid-keyed type1 font driver +#define FT_USE_CFF // opentype font driver +#define FT_USE_BDF // bdf bitmap font driver +#define FT_USE_PCF // pcf bitmap font driver +#define FT_USE_PFR // pfr font driver +#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver +#define FT_USE_OTV // opentype validator +#define FT_USE_GXV // truetype gx validator +#include "FT:src/base/ftinit.c" +# ---8<--- +# +# link your programs with libft2_ppc.a and either ftsystem.ppc.o or ftsystempure.ppc.o +# (and either ftdebug.ppc.o or ftdebugpure.ppc.o if you enabled FT_DEBUG_LEVEL_ERROR or +# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). + +all: assign libft2_ppc.a ftsystem.ppc.o ftsystempure.ppc.o + +assign: + assign FT: // + +CC = ppc-amigaos-gcc +AR = ppc-amigaos-ar +RANLIB = ppc-amigaos-ranlib + +DIRFLAGS = -Iinclude -I/FT/src -I/FT/include -I/SDK/include + +WARNINGS = -Wall -W -Wundef -Wpointer-arith -Wbad-function-cast \ + -Waggregate-return -Wwrite-strings -Wshadow + +OPTIONS = -DFT2_BUILD_LIBRARY -DNDEBUG -fno-builtin +OPTIMIZE = -O2 -fomit-frame-pointer -fstrength-reduce -finline-functions + +CFLAGS = -mcrt=clib2 $(DIRFLAGS) $(WARNINGS) $(FT2FLAGS) $(OPTIONS) $(OPTIMIZE) + +# +# FreeType2 library base +# +ftbase.ppc.o: FT:src/base/ftbase.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbase.c + +ftinit.ppc.o: FT:src/base/ftinit.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftinit.c + +ftsystem.ppc.o: FT:src/base/ftsystem.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftsystem.c + +# pure version for use in run-time library etc +ftsystempure.ppc.o: src/base/ftsystem.c + $(CC) -c $(CFLAGS) -o $@ src/base/ftsystem.c + +# +# FreeType2 library base extensions +# +ftbbox.ppc.o: FT:src/base/ftbbox.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbbox.c + +ftbdf.ppc.o: FT:src/base/ftbdf.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbdf.c + +ftbitmap.ppc.o: FT:src/base/ftbitmap.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbitmap.c + +ftcid.ppc.o: FT:src/base/ftcid.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftcid.c + +ftdebug.ppc.o: FT:src/base/ftdebug.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftdebug.c + +# pure version for use in run-time library etc +ftdebugpure.ppc.o: src/base/ftdebug.c + $(CC) -c $(CFLAGS) -o $@ src/base/ftdebug.c + +ftfstype.ppc.o: FT:src/base/ftfstype.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftfstype.c + +ftgasp.ppc.o: FT:src/base/ftgasp.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftgasp.c + +ftglyph.ppc.o: FT:src/base/ftglyph.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftglyph.c + +ftgxval.ppc.o: FT:src/base/ftgxval.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftgxval.c + +ftmm.ppc.o: FT:src/base/ftmm.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftmm.c + +ftotval.ppc.o: FT:src/base/ftotval.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftotval.c + +ftpatent.ppc.o: FT:src/base/ftpatent.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftpatent.c + +ftpfr.ppc.o: FT:src/base/ftpfr.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftpfr.c + +ftstroke.ppc.o: FT:src/base/ftstroke.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftstroke.c + +ftsynth.ppc.o: FT:src/base/ftsynth.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftsynth.c + +fttype1.ppc.o: FT:src/base/fttype1.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/fttype1.c + +ftwinfnt.ppc.o: FT:src/base/ftwinfnt.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftwinfnt.c + +# +# FreeType2 library autofitting module +# +autofit.ppc.o: FT:src/autofit/autofit.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/autofit/autofit.c + +# +# FreeType2 library postscript hinting module +# +pshinter.ppc.o: FT:src/pshinter/pshinter.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/pshinter/pshinter.c + +# +# FreeType2 library PS support module +# +psaux.ppc.o: FT:src/psaux/psaux.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/psaux/psaux.c + +# +# FreeType2 library PS glyph names module +# +psnames.ppc.o: FT:src/psnames/psnames.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/psnames/psnames.c + +# +# FreeType2 library monochrome raster module +# +raster.ppc.o: FT:src/raster/raster.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/raster/raster.c + +# +# FreeType2 library anti-aliasing raster module +# +smooth.ppc.o: FT:src/smooth/smooth.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/smooth/smooth.c + +# +# FreeType2 library 'sfnt' module +# +sfnt.ppc.o: FT:src/sfnt/sfnt.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/sfnt/sfnt.c + +# +# FreeType2 library glyph and image caching system +# +ftcache.ppc.o: FT:src/cache/ftcache.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/cache/ftcache.c + +# +# FreeType2 library OpenType font driver +# +cff.ppc.o: FT:src/cff/cff.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/cff/cff.c + +# +# FreeType2 library TrueType font driver +# +truetype.ppc.o: FT:src/truetype/truetype.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/truetype/truetype.c + +# +# FreeType2 library Type1 font driver +# +type1.ppc.o: FT:src/type1/type1.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/type1/type1.c + +# +# FreeType2 library Type42 font driver +# +type42.ppc.o: FT:src/type42/type42.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/type42/type42.c + +# +# FreeType2 library CID-keyed Type1 font driver +# +type1cid.ppc.o: FT:src/cid/type1cid.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/cid/type1cid.c + +# +# FreeType2 library BDF bitmap font driver +# +bdf.ppc.o: FT:src/bdf/bdf.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/bdf/bdf.c + +# +# FreeType2 library PCF bitmap font driver +# +pcf.ppc.o: FT:src/pcf/pcf.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/pcf/pcf.c + +# +# FreeType2 library gzip support for compressed PCF bitmap fonts +# +gzip.ppc.o: FT:src/gzip/ftgzip.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/gzip/ftgzip.c + +# +# FreeType2 library bzip2 support for compressed PCF bitmap fonts +# +bzip2.ppc.o: FT:src/bzip2/ftbzip2.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/bzip2/ftbzip2.c + +# +# FreeType2 library compress support for compressed PCF bitmap fonts +# +lzw.ppc.o: FT:src/lzw/ftlzw.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/lzw/ftlzw.c + +# +# FreeType2 library PFR font driver +# +pfr.ppc.o: FT:src/pfr/pfr.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/pfr/pfr.c + +# +# FreeType2 library Windows FNT/FON bitmap font driver +# +winfnt.ppc.o: FT:src/winfonts/winfnt.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/winfonts/winfnt.c + +# +# FreeType2 library TrueTypeGX Validator +# +gxvalid.ppc.o: FT:src/gxvalid/gxvalid.c + $(CC) -c $(CFLAGS) -Wno-aggregate-return -o $@ /FT/src/gxvalid/gxvalid.c + +# +# FreeType2 library OpenType validator +# +otvalid.ppc.o: FT:src/otvalid/otvalid.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/otvalid/otvalid.c + +BASE = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \ + ftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o \ + ftgxval.ppc.o ftmm.ppc.o ftotval.ppc.o \ + ftpatent.ppc.o ftpfr.ppc.o ftstroke.ppc.o ftsynth.ppc.o \ + fttype1.ppc.o ftwinfnt.ppc.o + +DEBUG = ftdebug.ppc.o ftdebugpure.ppc.o + +AFIT = autofit.ppc.o + +GXV = gxvalid.ppc.o + +OTV = otvalid.ppc.o + +PS = psaux.ppc.o psnames.ppc.o pshinter.ppc.o + +RASTER = raster.ppc.o smooth.ppc.o + +FONTD = cff.ppc.o type1.ppc.o type42.ppc.o type1cid.ppc.o truetype.ppc.o\ + bdf.ppc.o pcf.ppc.o pfr.ppc.o winfnt.ppc.o + +libft2_ppc.a: $(BASE) $(AFIT) $(GXV) $(OTV) $(PS) $(RASTER) sfnt.ppc.o ftcache.ppc.o $(FONTD) gzip.ppc.o lzw.ppc.o + $(AR) r $@ $(BASE) $(AFIT) $(GXV) $(OTV) $(PS) $(RASTER) sfnt.ppc.o ftcache.ppc.o $(FONTD) gzip.ppc.o lzw.ppc.o + $(RANLIB) $@ + +#Local Variables: +#coding: latin-1 +#End: diff --git a/local/recipes/libs/freetype2/source/builds/amiga/smakefile b/local/recipes/libs/freetype2/source/builds/amiga/smakefile new file mode 100644 index 0000000000..5edf4bec04 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/smakefile @@ -0,0 +1,299 @@ +# +# Makefile for FreeType2 link library using Amiga SAS/C 6.58 +# + + +# Copyright (C) 2005-2026 by +# Werner Lemberg and Detlef Würkner. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# to build from the builds/amiga directory call +# +# smake assign +# smake +# +# Your programs source code should start with this +# (uncomment the parts you do not need to keep the program small): +# ---8<--- +#define FT_USE_AUTOFIT // autofitter +#define FT_USE_RASTER // monochrome rasterizer +#define FT_USE_SMOOTH // anti-aliasing rasterizer +#define FT_USE_TT // truetype font driver +#define FT_USE_T1 // type1 font driver +#define FT_USE_T42 // type42 font driver +#define FT_USE_T1CID // cid-keyed type1 font driver +#define FT_USE_CFF // opentype font driver +#define FT_USE_BDF // bdf bitmap font driver +#define FT_USE_PCF // pcf bitmap font driver +#define FT_USE_PFR // pfr font driver +#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver +#define FT_USE_OTV // opentype validator +#define FT_USE_GXV // truetype gx validator +#include "FT:src/base/ftinit.c" +# ---8<--- +# +# link your programs with ft2_680x0.lib and either ftsystem.o or ftsystempure.o +# (and either ftdebug.o or ftdebugpure.o if you enabled FT_DEBUG_LEVEL_ERROR or +# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). + +OBJBASE = ftbase.o ftbbox.o ftbdf.o ftbitmap.o ftcid.o ftfstype.o \ + ftgasp.o ftglyph.o ftgxval.o ftmm.o ftotval.o \ + ftpatent.o ftpfr.o ftstroke.o ftsynth.o fttype1.o ftwinfnt.o + +OBJSYSTEM = ftsystem.o ftsystempure.o + +OBJDEBUG = ftdebug.o ftdebugpure.o + +OBJAFIT = autofit.o + +OBJGXV = gxvalid.o + +OBJOTV = otvalid.o + +OBJPS = psaux.o psnames.o pshinter.o + +OBJRASTER = raster.o smooth.o + +OBJSFNT = sfnt.o + +OBJCACHE = ftcache.o + +OBJFONTD = cff.o type1.o type42.o type1cid.o\ + truetype.o winfnt.o bdf.o pcf.o pfr.o + +CORE = FT:src/ + +CPU = 68000 +#CPU = 68020 +#CPU = 68030 +#CPU = 68040 +#CPU = 68060 + +OPTIMIZER = optinlocal + +SCFLAGS = optimize opttime optsched strmerge data=faronly idlen=50 cpu=$(CPU)\ + idir=include/ idir=$(CORE) idir=FT:include/ nostackcheck nochkabort\ + noicons ignore=79,85,110,306 parameters=both define=FT2_BUILD_LIBRARY + +LIB = ft2_$(CPU).lib + +# sample linker options +OPTS = link lib=$(LIB),lib:sc.lib,lib:amiga.lib,lib:debug.lib\ + smallcode smalldata noicons utillib + +# sample program entry +#myprog: myprog.c ftsystem.o $(LIB) +# sc $< programname=$@ ftsystem.o $(SCFLAGS) $(OPTS) + +all: $(LIB) $(OBJSYSTEM) $(OBJDEBUG) + +assign: + assign FT: // + +# uses separate object modules in lib to make for easier debugging +# also, can make smaller programs if entire engine is not used +ft2_$(CPU).lib: $(OBJBASE) $(OBJAFIT) $(OBJOTV) $(OBJPS) $(OBJRASTER) $(OBJSFNT) $(OBJCACHE) $(OBJFONTD) lzw.o gzip.o bzip2.o + oml $@ r $(OBJBASE) $(OBJAFIT) $(OBJOTV) $(OBJPS) $(OBJRASTER) $(OBJSFNT) $(OBJCACHE) $(OBJFONTD) lzw.o gzip.o bzip2.o + +clean: + -delete \#?.o + +realclean: clean + -delete ft2$(CPU).lib + +# +# freetype library base +# +ftbase.o: $(CORE)base/ftbase.c + sc $(SCFLAGS) objname=$@ $< +ftinit.o: $(CORE)base/ftinit.c + sc $(SCFLAGS) objname=$@ $< +ftsystem.o: $(CORE)base/ftsystem.c + sc $(SCFLAGS) objname=$@ $< +ftsystempure.o: src/base/ftsystem.c ## pure version for use in run-time library etc + sc $(SCFLAGS) objname=$@ $< +ftdebug.o: $(CORE)base/ftdebug.c + sc $(SCFLAGS) objname=$@ $< +ftdebugpure.o: src/base/ftdebug.c ## pure version for use in run-time library etc + sc $(SCFLAGS) objname=$@ $< +# +# freetype library base extensions +# +ftbbox.o: $(CORE)base/ftbbox.c + sc $(SCFLAGS) objname=$@ $< +ftbdf.o: $(CORE)base/ftbdf.c + sc $(SCFLAGS) objname=$@ $< +ftbitmap.o: $(CORE)base/ftbitmap.c + sc $(SCFLAGS) objname=$@ $< +ftcid.o: $(CORE)base/ftcid.c + sc $(SCFLAGS) objname=$@ $< +ftfstype.o: $(CORE)base/ftfstype.c + sc $(SCFLAGS) objname=$@ $< +ftgasp.o: $(CORE)base/ftgasp.c + sc $(SCFLAGS) objname=$@ $< +ftglyph.o: $(CORE)base/ftglyph.c + sc $(SCFLAGS) objname=$@ $< +ftgxval.o: $(CORE)base/ftgxval.c + sc $(SCFLAGS) objname=$@ $< +ftmm.o: $(CORE)base/ftmm.c + sc $(SCFLAGS) objname=$@ $< +ftotval.o: $(CORE)base/ftotval.c + sc $(SCFLAGS) objname=$@ $< +ftpatent.o: $(CORE)base/ftpatent.c + sc $(SCFLAGS) objname=$@ $< +ftpfr.o: $(CORE)base/ftpfr.c + sc $(SCFLAGS) objname=$@ $< +ftstroke.o: $(CORE)base/ftstroke.c + sc $(SCFLAGS) objname=$@ $< +ftsynth.o: $(CORE)base/ftsynth.c + sc $(SCFLAGS) objname=$@ $< +fttype1.o: $(CORE)base/fttype1.c + sc $(SCFLAGS) objname=$@ $< +ftwinfnt.o: $(CORE)base/ftwinfnt.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library autofitter module +# +autofit.o: $(CORE)autofit/autofit.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library PS hinting module +# +pshinter.o: $(CORE)pshinter/pshinter.c + sc $(SCFLAGS) objname=$@ $< +# +# freetype library PS support module +# +psaux.o: $(CORE)psaux/psaux.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library PS glyph names module +# +psnames.o: $(CORE)psnames/psnames.c + sc $(SCFLAGS) code=far objname=$@ $< + +# +# freetype library monochrome raster module +# +raster.o: $(CORE)raster/raster.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library anti-aliasing raster module +# +smooth.o: $(CORE)smooth/smooth.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library 'sfnt' module +# +sfnt.o: $(CORE)sfnt/sfnt.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library glyph and image caching system (still experimental) +# +ftcache.o: $(CORE)cache/ftcache.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library OpenType font driver +# +cff.o: $(CORE)cff/cff.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library TrueType font driver +# +truetype.o: $(CORE)truetype/truetype.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library Type1 font driver +# +type1.o: $(CORE)type1/type1.c + sc $(SCFLAGS) objname=$@ $< + +# +# FreeType2 library Type42 font driver +# +type42.o: $(CORE)type42/type42.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library CID-keyed Type1 font driver +# +type1cid.o: $(CORE)cid/type1cid.c + sc $(SCFLAGS) objname=$@ $< +# +# freetype library CID-keyed Type1 font driver extensions +# +#cidafm.o: $(CORE)cid/cidafm.c +# sc $(SCFLAGS) objname=$@ $< + +# +# freetype library BDF bitmap font driver +# +bdf.o: $(CORE)bdf/bdf.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library PCF bitmap font driver +# +pcf.o: $(CORE)pcf/pcf.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library gzip support for compressed PCF bitmap fonts +# +gzip.o: $(CORE)gzip/ftgzip.c + sc $(SCFLAGS) define FAR objname=$@ $< + +# +# freetype library bzip2 support for compressed PCF bitmap fonts +# +bzip2.o: $(CORE)bzip2/ftbzip2.c + sc $(SCFLAGS) define FAR objname=$@ $< + +# +# freetype library compress support for compressed PCF bitmap fonts +# +lzw.o: $(CORE)lzw/ftlzw.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library PFR font driver +# +pfr.o: $(CORE)pfr/pfr.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library Windows FNT/FON bitmap font driver +# +winfnt.o: $(CORE)winfonts/winfnt.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library TrueTypeGX validator +# +gxvalid.o: $(CORE)gxvalid/gxvalid.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library OpenType validator +# +otvalid.o: $(CORE)otvalid/otvalid.c + sc $(SCFLAGS) objname=$@ $< + +#Local Variables: +#coding: latin-1 +#End: diff --git a/local/recipes/libs/freetype2/source/builds/amiga/src/base/ftdebug.c b/local/recipes/libs/freetype2/source/builds/amiga/src/base/ftdebug.c new file mode 100644 index 0000000000..a458bbad1a --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/src/base/ftdebug.c @@ -0,0 +1,348 @@ +/**************************************************************************** + * + * ftdebug.c + * + * Debugging and logging component for amiga (body). + * + * Copyright (C) 1996-2026 by + * David Turner, Robert Wilhelm, Werner Lemberg, and Detlef Wuerkner. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This component contains various macros and functions used to ease the + * debugging of the FreeType engine. Its main purpose is in assertion + * checking, tracing, and error detection. + * + * There are now three debugging modes: + * + * - trace mode + * + * Error and trace messages are sent to the log file (which can be the + * standard error output). + * + * - error mode + * + * Only error messages are generated. + * + * - release mode: + * + * No error message is sent or generated. The code is free from any + * debugging parts. + * + */ + + + /* + * Based on the default `ftdebug.c' file, + * replaced `vprintf' with `KVPrintF', + * commented out `exit', + * replaced `getenv' with `GetVar'. + */ + +#include +#include +#include +#include + +#define __NOLIBBASE__ +#define __NOLOBALIFACE__ +#define __USE_INLINE__ + +#include +#include + +#ifndef __amigaos4__ + extern struct Library* DOSBase; +#else + extern struct DOSIFace* IDOS; +#endif + + +#include +#include +#include + + +#ifdef FT_DEBUG_LEVEL_ERROR + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Message( const char* fmt, + ... ) + { + va_list ap; + + + va_start( ap, fmt ); + KVPrintF( fmt, ap ); + va_end( ap ); + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Panic( const char* fmt, + ... ) + { + va_list ap; + + + va_start( ap, fmt ); + KVPrintF( fmt, ap ); + va_end( ap ); + + /* exit( EXIT_FAILURE ); */ + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( int ) + FT_Throw( FT_Error error, + int line, + const char* file ) + { +#if 0 + /* activating the code in this block makes FreeType very chatty */ + fprintf( stderr, + "%s:%d: error 0x%02x: %s\n", + file, + line, + error, + FT_Error_String( error ) ); +#else + FT_UNUSED( error ); + FT_UNUSED( line ); + FT_UNUSED( file ); +#endif + + return 0; + } + +#endif /* FT_DEBUG_LEVEL_ERROR */ + + + +#ifdef FT_DEBUG_LEVEL_TRACE + + /* array of trace levels, initialized to 0; */ + /* this gets adjusted at run-time */ + static int ft_trace_levels_enabled[trace_count]; + + /* array of trace levels, always initialized to 0 */ + static int ft_trace_levels_disabled[trace_count]; + + /* a pointer to either `ft_trace_levels_enabled' */ + /* or `ft_trace_levels_disabled' */ + int* ft_trace_levels; + + /* define array of trace toggle names */ +#define FT_TRACE_DEF( x ) #x , + + static const char* ft_trace_toggles[trace_count + 1] = + { +#include + NULL + }; + +#undef FT_TRACE_DEF + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( FT_Int ) + FT_Trace_Get_Count( void ) + { + return trace_count; + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( const char * ) + FT_Trace_Get_Name( FT_Int idx ) + { + int max = FT_Trace_Get_Count(); + + + if ( idx < max ) + return ft_trace_toggles[idx]; + else + return NULL; + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Trace_Disable( void ) + { + ft_trace_levels = ft_trace_levels_disabled; + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Trace_Enable( void ) + { + ft_trace_levels = ft_trace_levels_enabled; + } + + + /************************************************************************** + * + * Initialize the tracing sub-system. This is done by retrieving the + * value of the `FT2_DEBUG' environment variable. It must be a list of + * toggles, separated by spaces, `;', or `,'. Example: + * + * export FT2_DEBUG="any:3 memory:7 stream:5" + * + * This requests that all levels be set to 3, except the trace level for + * the memory and stream components which are set to 7 and 5, + * respectively. + * + * See the file `include/freetype/internal/fttrace.h' for details of + * the available toggle names. + * + * The level must be between 0 and 7; 0 means quiet (except for serious + * runtime errors), and 7 means _very_ verbose. + */ + FT_BASE_DEF( void ) + ft_debug_init( void ) + { + /* const char* ft2_debug = ft_getenv( "FT2_DEBUG" ); */ + char buf[256]; + const char* ft2_debug = &buf[0]; + + + /* if ( ft2_debug ) */ + if ( GetVar( "FT2_DEBUG", (STRPTR)ft2_debug, 256, LV_VAR ) > 0 ) + { + const char* p = ft2_debug; + const char* q; + + + for ( ; *p; p++ ) + { + /* skip leading whitespace and separators */ + if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' ) + continue; + + /* read toggle name, followed by ':' */ + q = p; + while ( *p && *p != ':' ) + p++; + + if ( !*p ) + break; + + if ( *p == ':' && p > q ) + { + FT_Int n, i, len = (FT_Int)( p - q ); + FT_Int level = -1, found = -1; + + + for ( n = 0; n < trace_count; n++ ) + { + const char* toggle = ft_trace_toggles[n]; + + + for ( i = 0; i < len; i++ ) + { + if ( toggle[i] != q[i] ) + break; + } + + if ( i == len && toggle[i] == 0 ) + { + found = n; + break; + } + } + + /* read level */ + p++; + if ( *p ) + { + level = *p - '0'; + if ( level < 0 || level > 7 ) + level = -1; + } + + if ( found >= 0 && level >= 0 ) + { + if ( found == trace_any ) + { + /* special case for `any' */ + for ( n = 0; n < trace_count; n++ ) + ft_trace_levels_enabled[n] = level; + } + else + ft_trace_levels_enabled[found] = level; + } + } + } + } + + ft_trace_levels = ft_trace_levels_enabled; + } + + +#else /* !FT_DEBUG_LEVEL_TRACE */ + + + FT_BASE_DEF( void ) + ft_debug_init( void ) + { + /* nothing */ + } + + + FT_BASE_DEF( FT_Int ) + FT_Trace_Get_Count( void ) + { + return 0; + } + + + FT_BASE_DEF( const char * ) + FT_Trace_Get_Name( FT_Int idx ) + { + FT_UNUSED( idx ); + + return NULL; + } + + + FT_BASE_DEF( void ) + FT_Trace_Disable( void ) + { + /* nothing */ + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Trace_Enable( void ) + { + /* nothing */ + } + + +#endif /* !FT_DEBUG_LEVEL_TRACE */ + + +/* END */ diff --git a/local/recipes/libs/freetype2/source/builds/amiga/src/base/ftsystem.c b/local/recipes/libs/freetype2/source/builds/amiga/src/base/ftsystem.c new file mode 100644 index 0000000000..201ef0bde3 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/src/base/ftsystem.c @@ -0,0 +1,530 @@ +/***************************************************************************/ +/* */ +/* ftsystem.c */ +/* */ +/* Amiga-specific FreeType low-level system interface (body). */ +/* */ +/* Copyright (C) 1996-2026 by */ +/* David Turner, Robert Wilhelm, Werner Lemberg and Detlef Würkner. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* This file contains the Amiga interface used by FreeType to access */ + /* low-level, i.e. memory management, i/o access as well as thread */ + /* synchronisation. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Maintained by Detlef Würkner */ + /* */ + /* Based on the original ftsystem.c, */ + /* modified to avoid fopen(), fclose(), fread(), fseek(), ftell(), */ + /* malloc(), realloc(), and free(). */ + /* */ + /* Those C library functions are often not thread-safe or cant be */ + /* used in a shared Amiga library. If that's not a problem for you, */ + /* you can of course use the default ftsystem.c with C library calls */ + /* instead. */ + /* */ + /* This implementation needs exec V39+ because it uses AllocPooled() etc */ + /* */ + /*************************************************************************/ + +#define __NOLIBBASE__ +#define __NOGLOBALIFACE__ +#define __USE_INLINE__ +#include +#include +#include +#ifdef __amigaos4__ +extern struct ExecIFace *IExec; +extern struct DOSIFace *IDOS; +#else +extern struct Library *SysBase; +extern struct Library *DOSBase; +#endif + +#define IOBUF_SIZE 512 + +/* structure that helps us to avoid + * useless calls of Seek() and Read() + */ +struct SysFile +{ + BPTR file; + ULONG iobuf_start; + ULONG iobuf_end; + UBYTE iobuf[IOBUF_SIZE]; +}; + +#ifndef __amigaos4__ +/* C implementation of AllocVecPooled (see autodoc exec/AllocPooled) */ +APTR +Alloc_VecPooled( APTR poolHeader, + ULONG memSize ) +{ + ULONG newSize = memSize + sizeof ( ULONG ); + ULONG *mem = AllocPooled( poolHeader, newSize ); + + if ( !mem ) + return NULL; + *mem = newSize; + return mem + 1; +} + +/* C implementation of FreeVecPooled (see autodoc exec/AllocPooled) */ +void +Free_VecPooled( APTR poolHeader, + APTR memory ) +{ + ULONG *realmem = (ULONG *)memory - 1; + + FreePooled( poolHeader, realmem, *realmem ); +} +#endif + +#include +#include FT_CONFIG_CONFIG_H +#include +#include +#include +#include + +#include +#include +#include + + + /*************************************************************************/ + /* */ + /* MEMORY MANAGEMENT INTERFACE */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* It is not necessary to do any error checking for the */ + /* allocation-related functions. This is done by the higher level */ + /* routines like ft_mem_alloc() or ft_mem_realloc(). */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* */ + /* ft_alloc */ + /* */ + /* */ + /* The memory allocation function. */ + /* */ + /* */ + /* memory :: A pointer to the memory object. */ + /* */ + /* size :: The requested size in bytes. */ + /* */ + /* */ + /* The address of newly allocated block. */ + /* */ + FT_CALLBACK_DEF( void* ) + ft_alloc( FT_Memory memory, + long size ) + { +#ifdef __amigaos4__ + return AllocVecPooled( memory->user, size ); +#else + return Alloc_VecPooled( memory->user, size ); +#endif + } + + + /*************************************************************************/ + /* */ + /* */ + /* ft_realloc */ + /* */ + /* */ + /* The memory reallocation function. */ + /* */ + /* */ + /* memory :: A pointer to the memory object. */ + /* */ + /* cur_size :: The current size of the allocated memory block. */ + /* */ + /* new_size :: The newly requested size in bytes. */ + /* */ + /* block :: The current address of the block in memory. */ + /* */ + /* */ + /* The address of the reallocated memory block. */ + /* */ + FT_CALLBACK_DEF( void* ) + ft_realloc( FT_Memory memory, + long cur_size, + long new_size, + void* block ) + { + void* new_block; + +#ifdef __amigaos4__ + new_block = AllocVecPooled ( memory->user, new_size ); +#else + new_block = Alloc_VecPooled ( memory->user, new_size ); +#endif + if ( new_block != NULL ) + { + CopyMem ( block, new_block, + ( new_size > cur_size ) ? cur_size : new_size ); +#ifdef __amigaos4__ + FreeVecPooled ( memory->user, block ); +#else + Free_VecPooled ( memory->user, block ); +#endif + } + return new_block; + } + + + /*************************************************************************/ + /* */ + /* */ + /* ft_free */ + /* */ + /* */ + /* The memory release function. */ + /* */ + /* */ + /* memory :: A pointer to the memory object. */ + /* */ + /* block :: The address of block in memory to be freed. */ + /* */ + FT_CALLBACK_DEF( void ) + ft_free( FT_Memory memory, + void* block ) + { +#ifdef __amigaos4__ + FreeVecPooled( memory->user, block ); +#else + Free_VecPooled( memory->user, block ); +#endif + } + + + /*************************************************************************/ + /* */ + /* RESOURCE MANAGEMENT INTERFACE */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ + /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ + /* messages during execution. */ + /* */ +#undef FT_COMPONENT +#define FT_COMPONENT io + + /* We use the macro STREAM_FILE for convenience to extract the */ + /* system-specific stream handle from a given FreeType stream object */ +#define STREAM_FILE( stream ) ( (struct SysFile *)stream->descriptor.pointer ) + + + /*************************************************************************/ + /* */ + /* */ + /* ft_amiga_stream_close */ + /* */ + /* */ + /* The function to close a stream. */ + /* */ + /* */ + /* stream :: A pointer to the stream object. */ + /* */ + FT_CALLBACK_DEF( void ) + ft_amiga_stream_close( FT_Stream stream ) + { + struct SysFile* sysfile; + + sysfile = STREAM_FILE( stream ); + Close ( sysfile->file ); + FreeMem ( sysfile, sizeof ( struct SysFile )); + + stream->descriptor.pointer = NULL; + stream->size = 0; + stream->base = NULL; + } + + + /*************************************************************************/ + /* */ + /* */ + /* ft_amiga_stream_io */ + /* */ + /* */ + /* The function to open a stream. */ + /* */ + /* */ + /* stream :: A pointer to the stream object. */ + /* */ + /* offset :: The position in the data stream to start reading. */ + /* */ + /* buffer :: The address of buffer to store the read data. */ + /* */ + /* count :: The number of bytes to read from the stream. */ + /* */ + /* */ + /* The number of bytes actually read. */ + /* */ + FT_CALLBACK_DEF( unsigned long ) + ft_amiga_stream_io( FT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count ) + { + struct SysFile* sysfile; + unsigned long read_bytes; + + if ( count != 0 ) + { + sysfile = STREAM_FILE( stream ); + + /* handle the seek */ + if ( (offset < sysfile->iobuf_start) || (offset + count > sysfile->iobuf_end) ) + { + /* requested offset implies we need a buffer refill */ + if ( !sysfile->iobuf_end || offset != sysfile->iobuf_end ) + { + /* a physical seek is necessary */ + Seek( sysfile->file, offset, OFFSET_BEGINNING ); + } + sysfile->iobuf_start = offset; + sysfile->iobuf_end = 0; /* trigger a buffer refill */ + } + + /* handle the read */ + if ( offset + count <= sysfile->iobuf_end ) + { + /* we have buffer and requested bytes are all inside our buffer */ + CopyMem( &sysfile->iobuf[offset - sysfile->iobuf_start], buffer, count ); + read_bytes = count; + } + else + { + /* (re)fill buffer */ + if ( count <= IOBUF_SIZE ) + { + /* requested bytes is a subset of the buffer */ + read_bytes = Read( sysfile->file, sysfile->iobuf, IOBUF_SIZE ); + if ( read_bytes == -1UL ) + { + /* error */ + read_bytes = 0; + } + else + { + sysfile->iobuf_end = offset + read_bytes; + CopyMem( sysfile->iobuf, buffer, count ); + if ( read_bytes > count ) + { + read_bytes = count; + } + } + } + else + { + /* we actually need more than our buffer can hold, so we decide + ** to do a single big read, and then copy the last IOBUF_SIZE + ** bytes of that to our internal buffer for later use */ + read_bytes = Read( sysfile->file, buffer, count ); + if ( read_bytes == -1UL ) + { + /* error */ + read_bytes = 0; + } + else + { + ULONG bufsize; + + bufsize = ( read_bytes > IOBUF_SIZE ) ? IOBUF_SIZE : read_bytes; + sysfile->iobuf_end = offset + read_bytes; + sysfile->iobuf_start = sysfile->iobuf_end - bufsize; + CopyMem( &buffer[read_bytes - bufsize] , sysfile->iobuf, bufsize ); + } + } + } + } + else + { + read_bytes = 0; + } + + return read_bytes; + } + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( FT_Error ) + FT_Stream_Open( FT_Stream stream, + const char* filepathname ) + { + struct FileInfoBlock* fib; + struct SysFile* sysfile; + + + if ( !stream ) + return FT_THROW( Invalid_Stream_Handle ); + +#ifdef __amigaos4__ + sysfile = AllocMem ( sizeof (struct SysFile ), MEMF_SHARED ); +#else + sysfile = AllocMem ( sizeof (struct SysFile ), MEMF_PUBLIC ); +#endif + if ( !sysfile ) + { + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + + return FT_THROW( Cannot_Open_Resource ); + } + sysfile->file = Open( (STRPTR)filepathname, MODE_OLDFILE ); + if ( !sysfile->file ) + { + FreeMem ( sysfile, sizeof ( struct SysFile )); + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + + return FT_THROW( Cannot_Open_Resource ); + } + + fib = AllocDosObject( DOS_FIB, NULL ); + if ( !fib ) + { + Close ( sysfile->file ); + FreeMem ( sysfile, sizeof ( struct SysFile )); + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + + return FT_THROW( Cannot_Open_Resource ); + } + if ( !( ExamineFH( sysfile->file, fib ) ) ) + { + FreeDosObject( DOS_FIB, fib ); + Close ( sysfile->file ); + FreeMem ( sysfile, sizeof ( struct SysFile )); + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + + return FT_THROW( Cannot_Open_Resource ); + } + stream->size = fib->fib_Size; + FreeDosObject( DOS_FIB, fib ); + + stream->descriptor.pointer = (void *)sysfile; + stream->pathname.pointer = (char*)filepathname; + sysfile->iobuf_start = 0; + sysfile->iobuf_end = 0; + stream->pos = 0; + + stream->read = ft_amiga_stream_io; + stream->close = ft_amiga_stream_close; + + if ( !stream->size ) + { + ft_amiga_stream_close( stream ); + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " opened `%s' but zero-sized\n", filepathname )); + return FT_THROW( Cannot_Open_Stream ); + } + + FT_TRACE1(( "FT_Stream_Open:" )); + FT_TRACE1(( " opened `%s' (%ld bytes) successfully\n", + filepathname, stream->size )); + + return FT_Err_Ok; + } + + +#ifdef FT_DEBUG_MEMORY + + extern FT_Int + ft_mem_debug_init( FT_Memory memory ); + + extern void + ft_mem_debug_done( FT_Memory memory ); + +#endif + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( FT_Memory ) + FT_New_Memory( void ) + { + FT_Memory memory; + + +#ifdef __amigaos4__ + memory = (FT_Memory)AllocVec( sizeof ( *memory ), MEMF_SHARED ); +#else + memory = (FT_Memory)AllocVec( sizeof ( *memory ), MEMF_PUBLIC ); +#endif + if ( memory ) + { +#ifdef __amigaos4__ + memory->user = CreatePool( MEMF_SHARED, 16384, 16384 ); +#else + memory->user = CreatePool( MEMF_PUBLIC, 16384, 16384 ); +#endif + if ( memory->user == NULL ) + { + FreeVec( memory ); + memory = NULL; + } + else + { + memory->alloc = ft_alloc; + memory->realloc = ft_realloc; + memory->free = ft_free; +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_init( memory ); +#endif + } + } + + return memory; + } + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( void ) + FT_Done_Memory( FT_Memory memory ) + { +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_done( memory ); +#endif + + DeletePool( memory->user ); + FreeVec( memory ); + } + +/* +Local Variables: +coding: latin-1 +End: +*/ +/* END */ diff --git a/local/recipes/libs/freetype2/source/builds/ansi/ansi-def.mk b/local/recipes/libs/freetype2/source/builds/ansi/ansi-def.mk new file mode 100644 index 0000000000..7b4564a667 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/ansi/ansi-def.mk @@ -0,0 +1,77 @@ +# +# FreeType 2 configuration rules for a `normal' ANSI system +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +DELETE := rm -f +CAT := cat +SEP := / +PLATFORM_DIR := $(TOP_DIR)/builds/ansi +PLATFORM := ansi + +# This is used for `make refdoc' and `make refdoc-venv' +# +BIN := bin + +# The directory where all library files are placed. +# +# By default, this is the same as $(OBJ_DIR); however, this can be changed +# to suit particular needs. +# +LIB_DIR := $(OBJ_DIR) + + +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. +# +LIBRARY := lib$(PROJECT) + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/ansi/ansi.mk b/local/recipes/libs/freetype2/source/builds/ansi/ansi.mk new file mode 100644 index 0000000000..31a60469d8 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/ansi/ansi.mk @@ -0,0 +1,21 @@ +# +# FreeType 2 configuration rules for a `normal' pseudo ANSI compiler/system +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +include $(TOP_DIR)/builds/ansi/ansi-def.mk +include $(TOP_DIR)/builds/compiler/ansi-cc.mk +include $(TOP_DIR)/builds/link_std.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/atari/ATARI.H b/local/recipes/libs/freetype2/source/builds/atari/ATARI.H new file mode 100644 index 0000000000..4ddd2eb2eb --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/atari/ATARI.H @@ -0,0 +1,20 @@ +#if defined( GXVALID_H_ ) +#pragma warn -aus /* too many unevaluated variables in gxvalid */ +#endif + +#ifndef ATARI_H +#define ATARI_H + +#pragma warn -stu + +/* PureC doesn't like 32bit enumerations */ + +#ifndef FT_IMAGE_TAG +#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value +#endif /* FT_IMAGE_TAG */ + +#ifndef FT_ENC_TAG +#define FT_ENC_TAG( value, a, b, c, d ) value +#endif /* FT_ENC_TAG */ + +#endif /* ATARI_H */ diff --git a/local/recipes/libs/freetype2/source/builds/atari/FNames.SIC b/local/recipes/libs/freetype2/source/builds/atari/FNames.SIC new file mode 100644 index 0000000000..f3657179d9 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/atari/FNames.SIC @@ -0,0 +1,37 @@ +/* the following changes file names for PureC projects */ + +if (argc > 0) +{ + ordner = argv[0]; + if (basename(ordner) == "") /* ist Ordner */ + { + ChangeFilenames(ordner); + } +} + +proc ChangeFilenames(folder) +local i,entries,directory,file; +{ + entries = filelist(directory,folder); + for (i = 0; i < entries; ++i) + { + file = directory[i,0]; + if ((directory[i,3]&16) > 0) /* subdirectory */ + { + ChangeFilenames(folder+file+"\\"); + } + else + { + if ((stricmp(suffix(file),".h")==0)|(stricmp(suffix(file),".c")==0)) + ChangeFilename(folder,file); + } + } +} + +proc ChangeFilename(path,datei) +local newfile,err; +{ + newfile=datei; + newfile[0]=(newfile[0] | 32) ^ 32; + err=files.rename("-q",path+datei,newfile); +} diff --git a/local/recipes/libs/freetype2/source/builds/atari/FREETYPE.PRJ b/local/recipes/libs/freetype2/source/builds/atari/FREETYPE.PRJ new file mode 100644 index 0000000000..4776a5bc69 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/atari/FREETYPE.PRJ @@ -0,0 +1,32 @@ +;FreeType project file + +FREETYPE.LIB + +.C [-K -P -R -A] +.L [-J -V] +.S + += + +..\..\src\base\ftsystem.c +..\..\src\base\ftdebug.c + +..\..\src\base\ftinit.c +..\..\src\base\ftglyph.c +..\..\src\base\ftmm +..\..\src\base\ftbbox + +..\..\src\base\ftbase.c +..\..\src\autohint\autohint.c +;..\..\src\cache\ftcache.c +..\..\src\cff\cff.c +..\..\src\cid\type1cid.c +..\..\src\psaux\psaux.c +..\..\src\pshinter\pshinter.c +..\..\src\psnames\psnames.c +..\..\src\raster\raster.c +..\..\src\sfnt\sfnt.c +..\..\src\smooth\smooth.c +..\..\src\truetype\truetype.c +..\..\src\type1\type1.c +..\..\src\type42\type42.c diff --git a/local/recipes/libs/freetype2/source/builds/atari/README.TXT b/local/recipes/libs/freetype2/source/builds/atari/README.TXT new file mode 100644 index 0000000000..1300817b26 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/atari/README.TXT @@ -0,0 +1,51 @@ +Compiling FreeType 2 with PureC compiler +======================================== + +[See below for a German version.] + +To compile FreeType 2 as a library the following changes must be applied: + +- All *.c files must start with an uppercase letter. + (In case GEMSCRIPT is available: + Simply drag the whole FreeType 2 directory to the file `FNames.SIC'.) + +- You have to change the INCLUDE directory in PureC's compiler options + to contain both the `INCLUDE' and `freetype2\include' directory. + Example: + + INCLUDE;E:\freetype2\include + +- The file `freetype/include/Ft2build.h' must be patched as follows to + include ATARI.H: + + #ifndef FT2_BUILD_GENERIC_H_ + #define FT2_BUILD_GENERIC_H_ + + #include "ATARI.H" + + + +Compilieren von FreeType 2 mit PureC +==================================== + +Um FreeType 2 als eine Bibliothek (library) zu compilieren, muss folgendes +ge„ndert werden: + +- Alle *.c-files mssen mit einem GROSSBUCHSTABEN beginnen. + (Falls GEMSCRIPT zur Verfgung steht: + Den kompletten Ordner freetype2 auf die Datei `FNames.SIC' draggen.) + +- In den Compiler-Optionen von PureC muss das INCLUDE directory auf INCLUDE + und freetype2\include verweisen. Z.B.: + + INCLUDE;E:\freetype2\include + +- In der Datei freetype/include/Ft2build.h muss zu Beginn + ein #include "ATARI.H" wie folgt eingefgt werden: + + #ifndef FT2_BUILD_GENERIC_H_ + #define FT2_BUILD_GENERIC_H_ + + #include "ATARI.H" + +--- end of README.TXT --- diff --git a/local/recipes/libs/freetype2/source/builds/atari/deflinejoiner.awk b/local/recipes/libs/freetype2/source/builds/atari/deflinejoiner.awk new file mode 100644 index 0000000000..16d9e6dd93 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/atari/deflinejoiner.awk @@ -0,0 +1,181 @@ +#!/usr/bin/env awk + + +function shift( array, \ + junk, elm0, l ) +{ + elm0 = array[0] + for ( l = 0; l < asorti( array, junk ) - 1; l++ ) + array[l] = array[l+1]; + delete array[l] + return elm0 +} + + +function init_cpp_src_line() +{ + logical_line = "" + delete break_pos +} + + +function shift_valid_bp( array, \ + junk, elm ) +{ + elm = -1 + + if ( 0 < asorti( array, junk ) ) + do { + elm = shift( array ) + } while ( 0 > elm ); + + return elm +} + + +function check_cpp_src_line_break_pos( \ + i, junk ) +{ + printf( "break_pos:" ) + for ( i = 0; i < asorti( break_pos, junk ); i++ ) + printf( " %d", break_pos[i] ); + printf( "\n" ) +} + + +function check_cpp_src_line() +{ + printf( "logical_line[%s]\n", logical_line ) + check_cpp_src_line_break_pos() +} + + +function append_line( phys_line, \ + filt_line, bp_len ) +{ + filt_line = phys_line + sub( /\\$/, " ", filt_line ) + logical_line = logical_line filt_line + bp_len = asorti( break_pos, junk ) + break_pos[bp_len] = length( logical_line ) - 1 +} + + +function print_line( \ + c0, c1, i, junk, part_str ) +{ + c0 = 0 + + while( asorti( break_pos, junk ) > 1 ) + { + if ( ( c1 = shift_valid_bp( break_pos ) ) < 1 ) + { + part_str = substr( logical_line, c0 + 1 ) + printf( "%s\n", part_str ) + return + } + + part_str = substr( logical_line, c0 + 1, c1 - c0 + 1 ) + gsub( / $/, "\\", part_str ) + printf( "%s\n", part_str ) + c0 = c1 + 1 + } + + part_str = substr( logical_line, c0 + 1 ) + printf( "%s\n", part_str ) +} + + +function shrink_spaces( pos, \ + tail, removed_length, k ) +{ + tail = substr( logical_line, pos ) + sub( /^[ \t]+/, " ", tail ) + removed_length = length( logical_line ) - pos - length( tail ) + 1 + logical_line = substr( logical_line, 0, pos - 1 ) tail + + + for ( k = 0; k < asorti( break_pos, junk ); k++ ) + if ( ( pos + removed_length ) <= break_pos[k] ) + break_pos[k] = break_pos[k] - removed_length; + else if ( pos <= break_pos[k] ) + break_pos[k] = -1; + + return removed_length +} + + +function shrink_spaces_to_linebreak( pos, \ + junk, part_str, removed_length, i ) +{ + for ( i = 0; i < asorti( break_pos, junk ) && break_pos[i] < pos ; i++ ) + ; + + if ( break_pos[i] < 1 ) + return; + + part_str = substr( logical_line, pos, break_pos[i] - pos + 1 ) + sub( /^[ \t]+/, " ", part_str ) + removed_length = ( break_pos[i] - pos + 1 ) - length( part_str ) + + tail = substr( logical_line, pos + removed_length ) + logical_line = substr( logical_line, 0, pos - 1 ) tail + + for ( ; i < asorti( break_pos, junk ); i++ ) + break_pos[i] -= removed_length; + + return removed_length +} + + +function delete_linebreaks_in_2nd_token( \ + tail, paren_depth, junk, i, j, k, l ) +{ + if ( logical_line ~ /^[ \t]*#[ \t]*define[ \t]+[0-9A-Za-z_]+\(/ ) + { + tail = logical_line + sub( /^[ \t]*#[ \t]*define[ \t]+[0-9A-Za-z_]+/, "", tail ) + + paren_depth = 0 + l = 0 + i = length( logical_line ) - length( tail ) + 1 # seek to the 1st op paren + j = i + do { + if ( substr( logical_line, j, 2 ) ~ /[ \t][ \t]/ ) + l = shrink_spaces( j ); + else if ( substr( logical_line, j, 1 ) == "(" ) + paren_depth += 1; + else if ( substr( logical_line, j, 1 ) == ")" ) + paren_depth -= 1; + j += 1 + } while ( j < length( logical_line ) && paren_depth != 0 ) + + for ( k = 0; k < asorti( break_pos, junk ); k++ ) + if ( i <= break_pos[k] && break_pos[k] < j ) + break_pos[k] = -1; + + if ( l > 0 ) + shrink_spaces_to_linebreak( j ); + } +} + + +BEGIN{ + init_cpp_src_line() +} +{ + append_line( $0 ) + if ( $0 !~ /\\$/ ) + { + delete_linebreaks_in_2nd_token() + print_line() + init_cpp_src_line() + } +} +END{ + if ( 0 < length( logical_line ) ) + { + delete_linebreaks_in_2nd_token() + print_line() + } +} diff --git a/local/recipes/libs/freetype2/source/builds/atari/gen-purec-patch.sh b/local/recipes/libs/freetype2/source/builds/atari/gen-purec-patch.sh new file mode 100755 index 0000000000..1ec050c11f --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/atari/gen-purec-patch.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +TOP_DIR=. +OBJ_DIR=. + +for x in "$@" +do + case x"$x" in + x--srcdir=* | x--topdir=* ) + TOP_DIR=`echo $x | sed 's/^--[a-z]*dir=//'` + ;; + x--builddir=* | x--objdir=* ) + OBJ_DIR=`echo $x | sed 's/^--[a-z]*dir=//'` + ;; + esac +done + +mkdir -p ${OBJ_DIR}/builds/atari/tmp/orig + +( cd ${TOP_DIR} && find . -name '*.[CHch]' -type f | fgrep -v builds/atari/tmp | cpio -o ) | \ +( cd ${OBJ_DIR}/builds/atari/tmp/orig && cpio -idum ) +cp ${TOP_DIR}/builds/atari/deflinejoiner.awk ${OBJ_DIR}/builds/atari/tmp + +pushd ${OBJ_DIR}/builds/atari/tmp + + cp -pr orig purec + for f in `cd orig && find . -type f` + do + echo filter $f + env LANG=C awk -f deflinejoiner.awk < orig/$f > purec/$f + done + + echo '#define FT2_BUILD_LIBRARY' > purec/include/ft2build.h + echo '#include "ATARI.H"' >> purec/include/ft2build.h + env LANG=C awk -f deflinejoiner.awk < orig/include/ft2build.h >> purec/include/ft2build.h + + env LANG=C diff -ur orig purec > ../purec.diff + +popd +rm -rf ${OBJ_DIR}/builds/atari/tmp diff --git a/local/recipes/libs/freetype2/source/builds/beos/beos-def.mk b/local/recipes/libs/freetype2/source/builds/beos/beos-def.mk new file mode 100644 index 0000000000..55e61eb88c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/beos/beos-def.mk @@ -0,0 +1,79 @@ +# +# FreeType 2 configuration rules for a BeOS system +# +# this is similar to the "ansi-def.mk" file, except for BUILD and PLATFORM +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +DELETE := rm -f +CAT := cat +SEP := / +PLATFORM_DIR := $(TOP_DIR)/builds/beos +PLATFORM := beos + +# This is used for `make refdoc' and `make refdoc-venv' +# +BIN := bin + +# The directory where all library files are placed. +# +# By default, this is the same as $(OBJ_DIR); however, this can be changed +# to suit particular needs. +# +LIB_DIR := $(OBJ_DIR) + + +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. +# +LIBRARY := lib$(PROJECT) + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/beos/beos.mk b/local/recipes/libs/freetype2/source/builds/beos/beos.mk new file mode 100644 index 0000000000..7579b187d7 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/beos/beos.mk @@ -0,0 +1,19 @@ +# +# FreeType 2 configuration rules for a BeOS system +# + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +include $(TOP_DIR)/builds/beos/beos-def.mk +include $(TOP_DIR)/builds/compiler/ansi-cc.mk +include $(TOP_DIR)/builds/link_std.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/beos/detect.mk b/local/recipes/libs/freetype2/source/builds/beos/detect.mk new file mode 100644 index 0000000000..a045e5ffe0 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/beos/detect.mk @@ -0,0 +1,41 @@ +# +# FreeType 2 configuration file to detect an BeOS host platform. +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +.PHONY: setup + + +ifeq ($(PLATFORM),ansi) + + ifdef BE_HOST_CPU + + PLATFORM := beos + + endif # test MACHTYPE beos +endif + +ifeq ($(PLATFORM),beos) + + DELETE := rm -f + CAT := cat + SEP := / + PLATFORM_DIR := $(TOP_DIR)/builds/beos + CONFIG_FILE := beos.mk + + setup: std_setup + +endif # test PLATFORM beos + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/cmake/FindBrotliDec.cmake b/local/recipes/libs/freetype2/source/builds/cmake/FindBrotliDec.cmake new file mode 100644 index 0000000000..97efb8867c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/cmake/FindBrotliDec.cmake @@ -0,0 +1,52 @@ +# FindBrotliDec.cmake +# +# Copyright (C) 2019-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# Written by Werner Lemberg +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. +# +# +# Try to find libbrotlidec include and library directories. +# +# If found, the following variables are set. +# +# BROTLIDEC_INCLUDE_DIRS +# BROTLIDEC_LIBRARIES + +find_package(PkgConfig QUIET) + +pkg_check_modules(PC_BROTLIDEC QUIET libbrotlidec) + +if (PC_BROTLIDEC_VERSION) + set(BROTLIDEC_VERSION "${PC_BROTLIDEC_VERSION}") +endif () + + +find_path(BROTLIDEC_INCLUDE_DIRS + NAMES brotli/decode.h + HINTS ${PC_BROTLIDEC_INCLUDEDIR} + ${PC_BROTLIDEC_INCLUDE_DIRS} + PATH_SUFFIXES brotli) + +find_library(BROTLIDEC_LIBRARIES + NAMES brotlidec + HINTS ${PC_BROTLIDEC_LIBDIR} + ${PC_BROTLIDEC_LIBRARY_DIRS}) + + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args( + BrotliDec + REQUIRED_VARS BROTLIDEC_INCLUDE_DIRS BROTLIDEC_LIBRARIES + FOUND_VAR BROTLIDEC_FOUND + VERSION_VAR BROTLIDEC_VERSION) + +mark_as_advanced( + BROTLIDEC_INCLUDE_DIRS + BROTLIDEC_LIBRARIES) diff --git a/local/recipes/libs/freetype2/source/builds/cmake/FindHarfBuzz.cmake b/local/recipes/libs/freetype2/source/builds/cmake/FindHarfBuzz.cmake new file mode 100644 index 0000000000..0f0e33a1a1 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/cmake/FindHarfBuzz.cmake @@ -0,0 +1,203 @@ +# Copyright (c) 2012, Intel Corporation +# Copyright (c) 2019 Sony Interactive Entertainment Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of Intel Corporation nor the names of its contributors may +# be used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +# Try to find Harfbuzz include and library directories. +# +# After successful discovery, this will set for inclusion where needed: +# HarfBuzz_INCLUDE_DIRS - containing the HarfBuzz headers +# HarfBuzz_LIBRARIES - containing the HarfBuzz library + +#[=======================================================================[.rst: +FindHarfBuzz +-------------- + +Find HarfBuzz headers and libraries. + +Imported Targets +^^^^^^^^^^^^^^^^ + +``HarfBuzz::HarfBuzz`` + The HarfBuzz library, if found. + +``HarfBuzz::ICU`` + The HarfBuzz ICU library, if found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This will define the following variables in your project: + +``HarfBuzz_FOUND`` + true if (the requested version of) HarfBuzz is available. +``HarfBuzz_VERSION`` + the version of HarfBuzz. +``HarfBuzz_LIBRARIES`` + the libraries to link against to use HarfBuzz. +``HarfBuzz_INCLUDE_DIRS`` + where to find the HarfBuzz headers. +``HarfBuzz_COMPILE_OPTIONS`` + this should be passed to target_compile_options(), if the + target is not used for linking + +#]=======================================================================] + +find_package(PkgConfig QUIET) +pkg_check_modules(PC_HARFBUZZ QUIET harfbuzz) +set(HarfBuzz_COMPILE_OPTIONS ${PC_HARFBUZZ_CFLAGS_OTHER}) +set(HarfBuzz_VERSION ${PC_HARFBUZZ_CFLAGS_VERSION}) + +find_path(HarfBuzz_INCLUDE_DIR + NAMES hb.h + HINTS ${PC_HARFBUZZ_INCLUDEDIR} ${PC_HARFBUZZ_INCLUDE_DIRS} + PATH_SUFFIXES harfbuzz +) + +find_library(HarfBuzz_LIBRARY + NAMES ${HarfBuzz_NAMES} harfbuzz + HINTS ${PC_HARFBUZZ_LIBDIR} ${PC_HARFBUZZ_LIBRARY_DIRS} +) + +if (HarfBuzz_INCLUDE_DIR AND NOT HarfBuzz_VERSION) + if (EXISTS "${HarfBuzz_INCLUDE_DIR}/hb-version.h") + file(READ "${HarfBuzz_INCLUDE_DIR}/hb-version.h" _harfbuzz_version_content) + + string(REGEX MATCH "#define +HB_VERSION_STRING +\"([0-9]+\\.[0-9]+\\.[0-9]+)\"" _dummy "${_harfbuzz_version_content}") + set(HarfBuzz_VERSION "${CMAKE_MATCH_1}") + endif () +endif () + +if ("${HarfBuzz_FIND_VERSION}" VERSION_GREATER "${HarfBuzz_VERSION}") + if (HarfBuzz_FIND_REQUIRED) + message(FATAL_ERROR + "Required version (" ${HarfBuzz_FIND_VERSION} ")" + " is higher than found version (" ${HarfBuzz_VERSION} ")") + else () + message(WARNING + "Required version (" ${HarfBuzz_FIND_VERSION} ")" + " is higher than found version (" ${HarfBuzz_VERSION} ")") + unset(HarfBuzz_VERSION) + unset(HarfBuzz_INCLUDE_DIRS) + unset(HarfBuzz_LIBRARIES) + return () + endif () +endif () + +# Find components +if (HarfBuzz_INCLUDE_DIR AND HarfBuzz_LIBRARY) + set(_HarfBuzz_REQUIRED_LIBS_FOUND ON) + set(HarfBuzz_LIBS_FOUND "HarfBuzz (required): ${HarfBuzz_LIBRARY}") +else () + set(_HarfBuzz_REQUIRED_LIBS_FOUND OFF) + set(HarfBuzz_LIBS_NOT_FOUND "HarfBuzz (required)") +endif () + +if (NOT CMAKE_VERSION VERSION_LESS 3.3) + if ("ICU" IN_LIST HarfBuzz_FIND_COMPONENTS) + pkg_check_modules(PC_HARFBUZZ_ICU QUIET harfbuzz-icu) + set(HarfBuzz_ICU_COMPILE_OPTIONS ${PC_HARFBUZZ_ICU_CFLAGS_OTHER}) + + find_path(HarfBuzz_ICU_INCLUDE_DIR + NAMES hb-icu.h + HINTS ${PC_HARFBUZZ_ICU_INCLUDEDIR} ${PC_HARFBUZZ_ICU_INCLUDE_DIRS} + PATH_SUFFIXES harfbuzz + ) + + find_library(HarfBuzz_ICU_LIBRARY + NAMES ${HarfBuzz_ICU_NAMES} harfbuzz-icu + HINTS ${PC_HARFBUZZ_ICU_LIBDIR} ${PC_HARFBUZZ_ICU_LIBRARY_DIRS} + ) + + if (HarfBuzz_ICU_LIBRARY) + if (HarfBuzz_FIND_REQUIRED_ICU) + list(APPEND HarfBuzz_LIBS_FOUND "ICU (required): ${HarfBuzz_ICU_LIBRARY}") + else () + list(APPEND HarfBuzz_LIBS_FOUND "ICU (optional): ${HarfBuzz_ICU_LIBRARY}") + endif () + else () + if (HarfBuzz_FIND_REQUIRED_ICU) + set(_HarfBuzz_REQUIRED_LIBS_FOUND OFF) + list(APPEND HarfBuzz_LIBS_NOT_FOUND "ICU (required)") + else () + list(APPEND HarfBuzz_LIBS_NOT_FOUND "ICU (optional)") + endif () + endif () + endif () +endif () + +if (NOT HarfBuzz_FIND_QUIETLY) + if (HarfBuzz_LIBS_FOUND) + message(STATUS "Found the following HarfBuzz libraries:") + foreach (found ${HarfBuzz_LIBS_FOUND}) + message(STATUS " ${found}") + endforeach () + endif () + if (HarfBuzz_LIBS_NOT_FOUND) + message(STATUS "The following HarfBuzz libraries were not found:") + foreach (found ${HarfBuzz_LIBS_NOT_FOUND}) + message(STATUS " ${found}") + endforeach () + endif () +endif () + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(HarfBuzz + FOUND_VAR HarfBuzz_FOUND + REQUIRED_VARS HarfBuzz_INCLUDE_DIR HarfBuzz_LIBRARY _HarfBuzz_REQUIRED_LIBS_FOUND + VERSION_VAR HarfBuzz_VERSION +) + +if (NOT CMAKE_VERSION VERSION_LESS 3.1) + if (HarfBuzz_LIBRARY AND NOT TARGET HarfBuzz::HarfBuzz) + add_library(HarfBuzz::HarfBuzz UNKNOWN IMPORTED GLOBAL) + set_target_properties(HarfBuzz::HarfBuzz PROPERTIES + IMPORTED_LOCATION "${HarfBuzz_LIBRARY}" + INTERFACE_COMPILE_OPTIONS "${HarfBuzz_COMPILE_OPTIONS}" + INTERFACE_INCLUDE_DIRECTORIES "${HarfBuzz_INCLUDE_DIR}" + ) + endif () + + if (HarfBuzz_ICU_LIBRARY AND NOT TARGET HarfBuzz::ICU) + add_library(HarfBuzz::ICU UNKNOWN IMPORTED GLOBAL) + set_target_properties(HarfBuzz::ICU PROPERTIES + IMPORTED_LOCATION "${HarfBuzz_ICU_LIBRARY}" + INTERFACE_COMPILE_OPTIONS "${HarfBuzz_ICU_COMPILE_OPTIONS}" + INTERFACE_INCLUDE_DIRECTORIES "${HarfBuzz_ICU_INCLUDE_DIR}" + ) + endif () +endif () + +mark_as_advanced( + HarfBuzz_INCLUDE_DIR + HarfBuzz_ICU_INCLUDE_DIR + HarfBuzz_LIBRARY + HarfBuzz_ICU_LIBRARY +) + +if (HarfBuzz_FOUND) + set(HarfBuzz_LIBRARIES ${HarfBuzz_LIBRARY} ${HarfBuzz_ICU_LIBRARY}) + set(HarfBuzz_INCLUDE_DIRS ${HarfBuzz_INCLUDE_DIR} ${HarfBuzz_ICU_INCLUDE_DIR}) +endif () diff --git a/local/recipes/libs/freetype2/source/builds/cmake/iOS.cmake b/local/recipes/libs/freetype2/source/builds/cmake/iOS.cmake new file mode 100644 index 0000000000..8f82d61d34 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/cmake/iOS.cmake @@ -0,0 +1,270 @@ +# iOS.cmake +# +# Copyright (C) 2014-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# Written by David Wimsey +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. +# +# +# This file is derived from the files `Platform/Darwin.cmake' and +# `Platform/UnixPaths.cmake', which are part of CMake 2.8.4. It has been +# altered for iOS development. + + +# Options +# ------- +# +# IOS_PLATFORM = OS | SIMULATOR +# +# This decides whether SDKS are selected from the `iPhoneOS.platform' or +# `iPhoneSimulator.platform' folders. +# +# OS - the default, used to build for iPhone and iPad physical devices, +# which have an ARM architecture. +# SIMULATOR - used to build for the Simulator platforms, which have an +# x86 architecture. +# +# CMAKE_IOS_DEVELOPER_ROOT = /path/to/platform/Developer folder +# +# By default, this location is automatically chosen based on the +# IOS_PLATFORM value above. If you manually set this variable, it +# overrides the default location and forces the use of a particular +# Developer Platform. +# +# CMAKE_IOS_SDK_ROOT = /path/to/platform/Developer/SDKs/SDK folder +# +# By default, this location is automatically chosen based on the +# CMAKE_IOS_DEVELOPER_ROOT value. In this case it is always the most +# up-to-date SDK found in the CMAKE_IOS_DEVELOPER_ROOT path. If you +# manually set this variable, it forces the use of a specific SDK +# version. +# +# +# Macros +# ------ +# +# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE) +# +# A convenience macro for setting Xcode specific properties on targets. +# +# Example: +# +# set_xcode_property(myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1") +# +# find_host_package (PROGRAM ARGS) +# +# A macro to find executable programs on the host system, not within the +# iOS environment. Thanks to the `android-cmake' project for providing +# the command. + + +# standard settings +set(CMAKE_SYSTEM_NAME Darwin) +set(CMAKE_SYSTEM_VERSION 1) +set(UNIX True) +set(APPLE True) +set(IOS True) + +# required as of cmake 2.8.10 +set(CMAKE_OSX_DEPLOYMENT_TARGET "" + CACHE STRING "Force unset of the deployment target for iOS" FORCE +) + +# determine the cmake host system version so we know where to find the iOS +# SDKs +find_program(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin) +if (CMAKE_UNAME) + exec_program(uname ARGS -r OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION) + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\1" + DARWIN_MAJOR_VERSION "${CMAKE_HOST_SYSTEM_VERSION}") +endif (CMAKE_UNAME) + +# skip the platform compiler checks for cross compiling +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_C_COMPILER_WORKS TRUE) + +# all iOS/Darwin specific settings - some may be redundant +set(CMAKE_SHARED_LIBRARY_PREFIX "lib") +set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib") +set(CMAKE_SHARED_MODULE_PREFIX "lib") +set(CMAKE_SHARED_MODULE_SUFFIX ".so") +set(CMAKE_MODULE_EXISTS 1) +set(CMAKE_DL_LIBS "") + +set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG + "-compatibility_version ") +set(CMAKE_C_OSX_CURRENT_VERSION_FLAG + "-current_version ") +set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG + "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}") +set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG + "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}") + +# hidden visibility is required for cxx on iOS +set(CMAKE_C_FLAGS_INIT "") +set(CMAKE_CXX_FLAGS_INIT + "-headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden") + +set(CMAKE_C_LINK_FLAGS + "-Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}") +set(CMAKE_CXX_LINK_FLAGS + "-Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}") + +set(CMAKE_PLATFORM_HAS_INSTALLNAME 1) +set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS + "-dynamiclib -headerpad_max_install_names") +set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS + "-bundle -headerpad_max_install_names") +set(CMAKE_SHARED_MODULE_LOADER_C_FLAG + "-Wl,-bundle_loader,") +set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG + "-Wl,-bundle_loader,") +set(CMAKE_FIND_LIBRARY_SUFFIXES + ".dylib" ".so" ".a") + +# hack: If a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old +# build tree (where `install_name_tool' was hardcoded), and where +# CMAKE_INSTALL_NAME_TOOL isn't in the cache and still cmake didn't +# fail in `CMakeFindBinUtils.cmake' (because it isn't rerun), hardcode +# CMAKE_INSTALL_NAME_TOOL here to `install_name_tool' so it behaves as +# it did before. +if (NOT DEFINED CMAKE_INSTALL_NAME_TOOL) + find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool) +endif (NOT DEFINED CMAKE_INSTALL_NAME_TOOL) + +# set up iOS platform unless specified manually with IOS_PLATFORM +if (NOT DEFINED IOS_PLATFORM) + set(IOS_PLATFORM "OS") +endif (NOT DEFINED IOS_PLATFORM) + +set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform") + +# check the platform selection and setup for developer root +if (${IOS_PLATFORM} STREQUAL "OS") + set(IOS_PLATFORM_LOCATION "iPhoneOS.platform") + + # this causes the installers to properly locate the output libraries + set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphoneos") + +elseif (${IOS_PLATFORM} STREQUAL "SIMULATOR") + set(IOS_PLATFORM_LOCATION "iPhoneSimulator.platform") + + # this causes the installers to properly locate the output libraries + set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphonesimulator") + +else (${IOS_PLATFORM} STREQUAL "OS") + message(FATAL_ERROR + "Unsupported IOS_PLATFORM value selected. Please choose OS or SIMULATOR.") + +endif (${IOS_PLATFORM} STREQUAL "OS") + +# set up iOS developer location unless specified manually with +# CMAKE_IOS_DEVELOPER_ROOT -- +# note that Xcode 4.3 changed the installation location; choose the most +# recent one available +set(XCODE_POST_43_ROOT + "/Applications/Xcode.app/Contents/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer") +set(XCODE_PRE_43_ROOT + "/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer") + +if (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT) + if (EXISTS ${XCODE_POST_43_ROOT}) + set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_POST_43_ROOT}) + elseif (EXISTS ${XCODE_PRE_43_ROOT}) + set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_PRE_43_ROOT}) + endif (EXISTS ${XCODE_POST_43_ROOT}) +endif (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT) + +set(CMAKE_IOS_DEVELOPER_ROOT ${CMAKE_IOS_DEVELOPER_ROOT} + CACHE PATH "Location of iOS Platform" +) + +# find and use the most recent iOS SDK unless specified manually with +# CMAKE_IOS_SDK_ROOT +if (NOT DEFINED CMAKE_IOS_SDK_ROOT) + file(GLOB _CMAKE_IOS_SDKS "${CMAKE_IOS_DEVELOPER_ROOT}/SDKs/*") + if (_CMAKE_IOS_SDKS) + list(SORT _CMAKE_IOS_SDKS) + list(REVERSE _CMAKE_IOS_SDKS) + list(GET _CMAKE_IOS_SDKS 0 CMAKE_IOS_SDK_ROOT) + else (_CMAKE_IOS_SDKS) + message(FATAL_ERROR + "No iOS SDK's found in default search path ${CMAKE_IOS_DEVELOPER_ROOT}. Manually set CMAKE_IOS_SDK_ROOT or install the iOS SDK.") + endif (_CMAKE_IOS_SDKS) + + message(STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}") +endif (NOT DEFINED CMAKE_IOS_SDK_ROOT) + +set(CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} + CACHE PATH "Location of the selected iOS SDK" +) + +# set the sysroot default to the most recent SDK +set(CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} + CACHE PATH "Sysroot used for iOS support" +) + +# set the architecture for iOS -- +# note that currently both ARCHS_STANDARD_32_BIT and +# ARCHS_UNIVERSAL_IPHONE_OS set armv7 only, so set both manually +if (${IOS_PLATFORM} STREQUAL "OS") + set(IOS_ARCH $(ARCHS_STANDARD_32_64_BIT)) +else (${IOS_PLATFORM} STREQUAL "OS") + set(IOS_ARCH i386) +endif (${IOS_PLATFORM} STREQUAL "OS") + +set(CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} + CACHE string "Build architecture for iOS" +) + +# set the find root to the iOS developer roots and to user defined paths +set(CMAKE_FIND_ROOT_PATH + ${CMAKE_IOS_DEVELOPER_ROOT} + ${CMAKE_IOS_SDK_ROOT} + ${CMAKE_PREFIX_PATH} + CACHE string "iOS find search path root" +) + +# default to searching for frameworks first +set(CMAKE_FIND_FRAMEWORK FIRST) + +# set up the default search directories for frameworks +set(CMAKE_SYSTEM_FRAMEWORK_PATH + ${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks + ${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks + ${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks +) + +# only search the iOS SDKs, not the remainder of the host filesystem +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +# this little macro lets you set any Xcode specific property +macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE) + set_property(TARGET ${TARGET} + PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} ${XCODE_VALUE}) +endmacro(set_xcode_property) + +# this macro lets you find executable programs on the host system +macro(find_host_package) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) + set(IOS FALSE) + + find_package(${ARGN}) + + set(IOS TRUE) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endmacro(find_host_package) + +# eof diff --git a/local/recipes/libs/freetype2/source/builds/cmake/testbuild.sh b/local/recipes/libs/freetype2/source/builds/cmake/testbuild.sh new file mode 100755 index 0000000000..6d1661386b --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/cmake/testbuild.sh @@ -0,0 +1,157 @@ +#!/bin/sh -e + +# Copyright (C) 2015-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +# This script tests the CMake build. Simply run +# +# builds/cmake/testbuild.sh +# +# or +# +# BUILD_SHARED_LIBS=1 builds/cmake/testbuild.sh +# +# The script: +# +# - builds the main CMakeLists.txt +# - builds and runs a small test app in a separate build tree so +# the config-module is tested, too +# +# Options (environment variables): +# +# - The variable BUILD_SHARED_LIBS will be forwarded to the CMake project +# that builds the library. +# + + +# prepare temporary dir + +cd `dirname $0`/../.. +ftdir=`pwd` +tmpdir=/tmp/freetype-cmake-testbuild +rm -rf $tmpdir +mkdir -p $tmpdir + + +# build and install freetype + +if test -n "$BUILD_SHARED_LIBS"; then + bsl=-DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS +else + bsl=-UBUILD_SHARED_LIBS +fi + +build_opts="-DWITH_ZLIB=0 \ + -DWITH_BZip2=0 \ + -DWITH_PNG=0 \ + -DWITH_HarfBuzz=0 \ + $bsl \ + -DCMAKE_INSTALL_PREFIX=$tmpdir/out" + +(set -x; cmake -H$ftdir \ + -B$tmpdir/ftb \ + -DCMAKE_BUILD_TYPE=Debug \ + $build_opts) +(set -x; cmake --build $tmpdir/ftb \ + --config Debug \ + --target install) + +(set -x; cmake $tmpdir/ftb \ + -DCMAKE_BUILD_TYPE=Release) +(set -x; cmake --build $tmpdir/ftb \ + --config Release \ + --target install \ + --clean-first) + + +# create test project CMakeLists.txt + +cat >$tmpdir/CMakeLists.txt << END +cmake_minimum_required(VERSION 2.6) +project(freetype-cmake-testbuild) + +find_package(Freetype REQUIRED CONFIG) + +add_executable(freetype-cmake-test main.c) +target_link_libraries(freetype-cmake-test freetype) + +enable_testing() +add_test(freetype-cmake-test freetype-cmake-test) +END + + +# create test project main.c + +cat >$tmpdir/main.c << END +#include +#include + +#include +#include + + +FT_Library library; + + +int main(int argc, + char*argv[]) +{ + FT_Error error; + FT_Int major = 0; + FT_Int minor = 0; + FT_Int patch = 0; + + error = FT_Init_FreeType(&library); + if (error) + return EXIT_FAILURE; + + FT_Library_Version(library, &major, &minor, &patch); + if (major != FREETYPE_MAJOR + || minor != FREETYPE_MINOR + || patch != FREETYPE_PATCH) + return EXIT_FAILURE; + + printf("FT_Library_Version: %d.%d.%d\n", major, minor, patch); + + error = FT_Done_FreeType(library); + if (error) + return EXIT_FAILURE; + + return EXIT_SUCCESS; +} +END + + +# build and test + +mkdir -p $tmpdir/tb +cd $tmpdir/tb + +LD_LIBRARY_PATH=$tmpdir/out/lib:$LD_LIBRARY_PATH +DYLD_LIBRARY_PATH=$tmpdir/out/lib:$DYLD_LIBRARY_PATH +export LD_LIBRARY_PATH +export DYLD_LIBRARY_PATH + +(set -x; cmake $tmpdir \ + -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_PREFIX_PATH=$tmpdir/out) +(set -x; cmake --build . \ + --config Debug) +(set -x; ctest -V -C Debug) + +(set -x; cmake . \ + -DCMAKE_BUILD_TYPE=Release) +(set -x; cmake --build . \ + --config Release \ + --clean-first) +(set -x; ctest -V -C Release) + +rm -rf $tmpdir + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/ansi-cc.mk b/local/recipes/libs/freetype2/source/builds/compiler/ansi-cc.mk new file mode 100644 index 0000000000..9fd5b0eb2a --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/ansi-cc.mk @@ -0,0 +1,80 @@ +# +# FreeType 2 generic pseudo ANSI compiler +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := cc +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := o +SO := o + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := a +SA := a + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +# we assume the compiler is already strictly ANSI +# +ANSIFLAGS ?= + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = $(AR) -r $@ $(subst /,$(COMPILER_SEP),$(OBJECTS_LIST)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/bcc-dev.mk b/local/recipes/libs/freetype2/source/builds/compiler/bcc-dev.mk new file mode 100644 index 0000000000..f03d16c779 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/bcc-dev.mk @@ -0,0 +1,86 @@ +# +# FreeType 2 Borland C++-specific with NO OPTIMIZATIONS + DEBUGGING +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := bcc32 +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := + + +# Target flag -- no trailing space. +# +T := -o +TE := -e + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -q -c -y -d -v -Od -w-par -w-ccc -w-rch -w-pro -w-aus + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= -A + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = tlib /u /P128 $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%)) + + +# Borland C++ specific temporary files +# +CLEAN += \ + $(subst /,$(SEP),$(TOP_DIR)/apinames.$(O)) \ + $(subst /,$(SEP),$(OBJ_DIR)/apinames.tds) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/bcc.mk b/local/recipes/libs/freetype2/source/builds/compiler/bcc.mk new file mode 100644 index 0000000000..24d56e0267 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/bcc.mk @@ -0,0 +1,86 @@ +# +# FreeType 2 Borland C++-specific rules +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := bcc32 +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := + + +# Target flag -- no trailing space. +# +T := -o +TE := -e + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c -q -y -d -v -Od -w-par -w-ccc -w-rch -w-pro -w-aus + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= -A + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = tlib /u /P128 $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%)) + + +# Borland C++ specific temporary files +# +CLEAN += \ + $(subst /,$(SEP),$(TOP_DIR)/apinames.$(O)) \ + $(subst /,$(SEP),$(OBJ_DIR)/apinames.tds) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/emx.mk b/local/recipes/libs/freetype2/source/builds/compiler/emx.mk new file mode 100644 index 0000000000..e5c3fdc70d --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/emx.mk @@ -0,0 +1,77 @@ +# +# FreeType 2 emx-specific definitions +# + + +# Copyright (C) 2003-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := set GCCOPT="-ansi -pedantic"; gcc +COMPILER_SEP := / + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := o +SO := o + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := a +SA := a + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c -g -O6 -Wall + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = $(foreach m,$(OBJECTS_LIST),$(AR) -r $@ $(m);) echo > nul + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/gcc-dev.mk b/local/recipes/libs/freetype2/source/builds/compiler/gcc-dev.mk new file mode 100644 index 0000000000..691bceb29e --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/gcc-dev.mk @@ -0,0 +1,97 @@ +# +# FreeType 2 gcc-specific with NO OPTIMIZATIONS + DEBUGGING +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := gcc +COMPILER_SEP := / + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := o +SO := o + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := a +SA := a + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +ifndef CFLAGS + ifeq ($(findstring g++,$(CC)),) + nested_externs := -Wnested-externs + strict_prototypes := -Wstrict-prototypes + endif + + CFLAGS := -c -g -O0 \ + -Wall \ + -W \ + -Wundef \ + -Wshadow \ + -Wpointer-arith \ + -Wwrite-strings \ + -Wredundant-decls \ + -Wno-format-extra-args \ + -Wno-long-long \ + $(nested_externs) \ + $(strict_prototypes) +endif + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# You can override this on the command line. +# +ANSIFLAGS ?= -std=c99 -pedantic + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/gcc.mk b/local/recipes/libs/freetype2/source/builds/compiler/gcc.mk new file mode 100644 index 0000000000..ab8c55ffab --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/gcc.mk @@ -0,0 +1,77 @@ +# +# FreeType 2 gcc-specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := gcc +COMPILER_SEP := / + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := o +SO := o + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := a +SA := a + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c -g -O3 -Wall + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= -std=c99 -pedantic + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/intelc.mk b/local/recipes/libs/freetype2/source/builds/compiler/intelc.mk new file mode 100644 index 0000000000..1fd53c2d88 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/intelc.mk @@ -0,0 +1,85 @@ +# +# FreeType 2 Intel C/C++ definitions (VC++ compatibility mode) +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# compiler command line name +# +CC := icl +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := /I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := /D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := /Fl + + +# Target flag. +# +T := /Fo +TE := /Fe + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +# Note that the Intel C/C++ compiler version 4.5 complains about +# the use of FT_FIELD_OFFSET with "value must be arithmetic type"! +# This really looks like a bug in the compiler because the macro +# _does_ compute an arithmetic value, so we disable this warning +# with "/Qwd32". +# +CFLAGS ?= /nologo /c /Ox /G5 /W3 /Qwd32 + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= /Qansi_alias /Za + +# Library linking +# +#CLEAN_LIBRARY = +LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/unix-lcc.mk b/local/recipes/libs/freetype2/source/builds/compiler/unix-lcc.mk new file mode 100644 index 0000000000..b8b1fbc063 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/unix-lcc.mk @@ -0,0 +1,83 @@ +# +# FreeType 2 Unix LCC specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Command line name +# +CC := lcc +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := o +SO := o + + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := a +SA := a + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c -g + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +# LCC is pure ANSI anyway! +# +# the "-A" flag simply increments verbosity about non ANSI code +# +ANSIFLAGS ?= -A + + +# library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(PROJECT_LIBRARY) +LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/visualage.mk b/local/recipes/libs/freetype2/source/builds/compiler/visualage.mk new file mode 100644 index 0000000000..8c1dcdb65c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/visualage.mk @@ -0,0 +1,76 @@ +# +# FreeType 2 Visual Age C++ specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# command line compiler name +# +CC := icc +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := /I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := /D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := /Fl + + +# Target flag. +# +T := /Fo + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +CFLAGS ?= /Q- /Gd+ /O2 /G5 /W3 /C + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSI_FLAGS := /Sa + + +# Library linking +# +#CLEAN_LIBRARY := +LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/visualc.mk b/local/recipes/libs/freetype2/source/builds/compiler/visualc.mk new file mode 100644 index 0000000000..4754c0e97c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/visualc.mk @@ -0,0 +1,82 @@ +# +# FreeType 2 Visual C++ definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# compiler command line name +# +CC := cl +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := /I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := /D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := /Fl + + +# Target flag. +# +T := /Fo + +# Target executable flag +# +TE := /Fe + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= /nologo /c /Ox /W3 /WX + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= /Za /D_CRT_SECURE_NO_DEPRECATE + + +# Library linking +# +#CLEAN_LIBRARY = +LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/watcom.mk b/local/recipes/libs/freetype2/source/builds/compiler/watcom.mk new file mode 100644 index 0000000000..d6d24a49f1 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/watcom.mk @@ -0,0 +1,81 @@ +# +# FreeType 2 Watcom-specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := wcc386 +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I= + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -FO= + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -zq + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= -za + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = $(subst /,$(COMPILER_SEP), \ + wlib -q -n $@; \ + $(foreach m, $(OBJECTS_LIST), wlib -q $@ +$(m);) \ + echo > nul) + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/win-lcc.mk b/local/recipes/libs/freetype2/source/builds/compiler/win-lcc.mk new file mode 100644 index 0000000000..06b1644a66 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/win-lcc.mk @@ -0,0 +1,81 @@ +# +# FreeType 2 Win32-LCC specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Command line name +# +CC := lcc +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -Fl + + +# Target flag. +# +T := -Fo + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c -g2 -O + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +# LCC is pure ANSI anyway! +# +ANSIFLAGS ?= + + +# library linking +# +#CLEAN_LIBRARY := +LINK_LIBRARY = lcclib /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/detect.mk b/local/recipes/libs/freetype2/source/builds/detect.mk new file mode 100644 index 0000000000..7c5b97389b --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/detect.mk @@ -0,0 +1,128 @@ +# +# FreeType 2 host platform detection rules +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# This sub-Makefile is in charge of detecting the current platform. It sets +# the following variables: +# +# PLATFORM_DIR The configuration and system-specific directory. Usually +# `builds/$(PLATFORM)' but can be different for custom builds +# of the library. +# +# The following variables must be defined in system specific `detect.mk' +# files: +# +# PLATFORM The detected platform. This will default to `ansi' if +# auto-detection fails. +# CONFIG_FILE The configuration sub-makefile to use. This usually depends +# on the compiler defined in the `CC' environment variable. +# DELETE The shell command used to remove a given file. +# COPY The shell command used to copy one file. +# SEP The platform-specific directory separator. +# COMPILER_SEP The separator used in arguments of the compilation tools. +# CC The compiler to use. +# +# You need to set the following variable(s) before calling it: +# +# TOP_DIR The top-most directory in the FreeType library source +# hierarchy. If not defined, it will default to `.'. + +# Set auto-detection default to `ansi' resp. UNIX-like operating systems. +# +PLATFORM := ansi +DELETE := $(RM) +COPY := cp +CAT := cat +SEP := / + +BUILD_CONFIG := $(TOP_DIR)/builds + +# These two assignments must be delayed. +PLATFORM_DIR = $(BUILD_CONFIG)/$(PLATFORM) +CONFIG_RULES = $(PLATFORM_DIR)/$(CONFIG_FILE) + +# We define the BACKSLASH variable to hold a single back-slash character. +# This is needed because a line like +# +# SEP := \ +# +# does not work with GNU Make (the backslash is interpreted as a line +# continuation). While a line like +# +# SEP := \\ +# +# really defines $(SEP) as `\' on Unix, and `\\' on Dos and Windows! +# +BACKSLASH := $(strip \ ) + +# Find all auto-detectable platforms. +# +PLATFORMS := $(notdir $(subst /detect.mk,,$(wildcard $(BUILD_CONFIG)/*/detect.mk))) +.PHONY: $(PLATFORMS) ansi + +# Filter out platform specified as setup target. +# +PLATFORM := $(firstword $(filter $(MAKECMDGOALS),$(PLATFORMS))) + +# If no setup target platform was specified, enable auto-detection/ +# default platform. +# +ifeq ($(PLATFORM),) + PLATFORM := ansi +endif + +# If the user has explicitly asked for `ansi' on the command line, +# disable auto-detection. +# +ifeq ($(findstring ansi,$(MAKECMDGOALS)),) + # Now, include all detection rule files found in the `builds/' + # directories. Note that the calling order of the various `detect.mk' + # files isn't predictable. + # + include $(wildcard $(BUILD_CONFIG)/*/detect.mk) +endif + +# In case no detection rule file was successful, use the default. +# +ifndef CONFIG_FILE + CONFIG_FILE := ansi.mk + setup: std_setup + .PHONY: setup +endif + +# Flash out and copy rules. +# +.PHONY: std_setup + +std_setup: + $(info ) + $(info $(PROJECT_TITLE) build system -- automatic system detection) + $(info ) + $(info The following settings are used:) + $(info ) + $(info $(empty) platform $(PLATFORM)) + $(info $(empty) compiler $(CC)) + $(info $(empty) configuration directory $(subst /,$(SEP),$(PLATFORM_DIR))) + $(info $(empty) configuration rules $(subst /,$(SEP),$(CONFIG_RULES))) + $(info ) + $(info If this does not correspond to your system or settings please remove the file) + $(info `$(CONFIG_MK)' from this directory then read the INSTALL file for help.) + $(info ) + $(info Otherwise, simply type `$(MAKE)' again to build the library,) + $(info or `$(MAKE) refdoc' to build the API reference (this needs Python >= 3.5).) + $(info ) + @$(COPY) $(subst /,$(SEP),$(CONFIG_RULES) $(CONFIG_MK)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/dos/detect.mk b/local/recipes/libs/freetype2/source/builds/dos/detect.mk new file mode 100644 index 0000000000..1d181240aa --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/dos/detect.mk @@ -0,0 +1,152 @@ +# +# FreeType 2 configuration file to detect a DOS host platform. +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +.PHONY: setup + + +ifeq ($(PLATFORM),ansi) + + # Test for DJGPP by checking the DJGPP environment variable, which must be + # set in order to use the system (ie. it will always be present when the + # `make' utility is run). + # + # We test for the COMSPEC environment variable, then run the `ver' + # command-line program to see if its output contains the word `Dos' or + # `DOS'. + # + # If this is true, we are running a Dos-ish platform (or an emulation). + # + ifdef DJGPP + PLATFORM := dos + else + ifdef COMSPEC + is_dos := $(findstring DOS,$(subst Dos,DOS,$(shell ver))) + + # We try to recognize a Dos session under OS/2. The `ver' command + # returns `Operating System/2 ...' there, so `is_dos' should be empty. + # + # To recognize a Dos session under OS/2, we check COMSPEC for the + # substring `MDOS\COMMAND' + # + ifeq ($(is_dos),) + is_dos := $(findstring MDOS\COMMAND,$(COMSPEC)) + endif + + # We also try to recognize Dos 7.x without Windows 9X launched. + # See builds/windows/detect.mk for explanations about the logic. + # + ifeq ($(is_dos),) + ifdef winbootdir +#ifneq ($(OS),Windows_NT) + # If windows is available, do not trigger this test. + ifndef windir + is_dos := $(findstring Windows,$(strip $(shell ver))) + endif +#endif + endif + endif + + endif # test COMSPEC + + ifneq ($(is_dos),) + + PLATFORM := dos + + endif # test Dos + endif # test DJGPP +endif # test PLATFORM ansi + +ifeq ($(PLATFORM),dos) + + # Use DJGPP (i.e. gcc) by default. + # + CONFIG_FILE := dos-gcc.mk + CC ?= gcc + + # additionally, we provide hooks for various other compilers + # + ifneq ($(findstring emx,$(MAKECMDGOALS)),) # EMX gcc + CONFIG_FILE := dos-emx.mk + CC := gcc + + .PHONY: emx + emx: setup + @cd . + endif + + ifneq ($(findstring turboc,$(MAKECMDGOALS)),) # Turbo C + CONFIG_FILE := dos-tcc.mk + CC := tcc + + .PHONY: turboc + turboc: setup + @cd . + endif + + ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ + CONFIG_FILE := dos-wat.mk + CC := wcc386 + + .PHONY: watcom + watcom: setup + @cd . + endif + + ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C/C++ 32-bit + CONFIG_FILE := dos-bcc.mk + CC := bcc32 + + .PHONY: borlandc + borlandc: setup + @cd . + endif + + ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16-bit + CONFIG_FILE := dos-bcc.mk + CC := bcc + + .PHONY: borlandc16 + borlandc16: setup + @cd . + endif + + ifneq ($(findstring bash,$(SHELL)),) # check for bash + SEP := / + DELETE := rm + COPY := cp + CAT := cat + setup: std_setup + else + SEP := $(BACKSLASH) + DELETE := del + CAT := type + + # Setting COPY is a bit trickier. We can be running DJGPP on some + # Windows NT derivatives, like XP. See builds/windows/detect.mk for + # explanations why we need hacking here. + # + ifeq ($(OS),Windows_NT) + COPY := cmd.exe /c copy + else + COPY := copy + endif # test NT + + setup: std_setup + endif + +endif # test PLATFORM dos + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/dos/dos-def.mk b/local/recipes/libs/freetype2/source/builds/dos/dos-def.mk new file mode 100644 index 0000000000..88f70167fc --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/dos/dos-def.mk @@ -0,0 +1,48 @@ +# +# FreeType 2 DOS specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +DELETE := del +CAT := type +SEP := $(strip \ ) +PLATFORM_DIR := $(TOP_DIR)/builds/dos +PLATFORM := dos + +# This is used for `make refdoc' and `make refdoc-venv' +# +BIN := Scripts + +# The executable file extension (for tools), *with* leading dot. +# +E := .exe + +# The directory where all library files are placed. +# +# By default, this is the same as $(OBJ_DIR); however, this can be changed +# to suit particular needs. +# +LIB_DIR := $(OBJ_DIR) + +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. +# +LIBRARY := $(PROJECT) + + +# The NO_OUTPUT macro is used to ignore the output of commands. +# +NO_OUTPUT = > nul + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/dos/dos-emx.mk b/local/recipes/libs/freetype2/source/builds/dos/dos-emx.mk new file mode 100644 index 0000000000..f1bc35954c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/dos/dos-emx.mk @@ -0,0 +1,21 @@ +# +# FreeType 2 configuration rules for the EMX gcc compiler +# + + +# Copyright (C) 2003-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +include $(TOP_DIR)/builds/dos/dos-def.mk +include $(TOP_DIR)/builds/compiler/emx.mk +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/dos/dos-gcc.mk b/local/recipes/libs/freetype2/source/builds/dos/dos-gcc.mk new file mode 100644 index 0000000000..f7bc5551e3 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/dos/dos-gcc.mk @@ -0,0 +1,21 @@ +# +# FreeType 2 configuration rules for the DJGPP compiler +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +include $(TOP_DIR)/builds/dos/dos-def.mk +include $(TOP_DIR)/builds/compiler/gcc.mk +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/dos/dos-wat.mk b/local/recipes/libs/freetype2/source/builds/dos/dos-wat.mk new file mode 100644 index 0000000000..6e096e6493 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/dos/dos-wat.mk @@ -0,0 +1,20 @@ +# +# FreeType 2 configuration rules for the Watcom C/C++ compiler +# + + +# Copyright (C) 2003-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +include $(TOP_DIR)/builds/dos/dos-def.mk +include $(TOP_DIR)/builds/compiler/watcom.mk +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/exports.mk b/local/recipes/libs/freetype2/source/builds/exports.mk new file mode 100644 index 0000000000..1df4010d28 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/exports.mk @@ -0,0 +1,80 @@ +# +# FreeType 2 exports sub-Makefile +# + + +# Copyright (C) 2005-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY +# OTHER MAKEFILES. + + +# This sub-Makefile is used to compute the list of exported symbols whenever +# the EXPORTS_LIST variable is defined by one of the platform or compiler +# specific build files. +# +# EXPORTS_LIST contains the name of the `list' file, for example a Windows +# .DEF file. +# +ifneq ($(EXPORTS_LIST),) + + # CCexe is the compiler used to compile the `apinames' tool program + # on the host machine. This isn't necessarily the same as the compiler + # which can be a cross-compiler for a different architecture, for example. + # + ifeq ($(CCexe),) + CCexe := $(CC) + endif + + # TE acts like T, but for executables instead of object files. + ifeq ($(TE),) + TE := $T + endif + + # The list of public headers we're going to parse. + PUBLIC_HEADERS := $(filter-out $(PUBLIC_DIR)/ftmac.h, \ + $(wildcard $(PUBLIC_DIR)/*.h)) + ifneq ($(ftmac_c),) + PUBLIC_HEADERS += $(PUBLIC_DIR)/ftmac.h + endif + + # The `apinames' source and executable. We use $E_BUILD as the host + # executable suffix, which *includes* the final dot. + # + # Note that $(APINAMES_OPTIONS) is empty, except for Windows compilers. + # + APINAMES_SRC := $(subst /,$(SEP),$(TOP_DIR)/src/tools/apinames.c) + APINAMES_EXE := $(subst /,$(SEP),$(OBJ_DIR)/apinames$(E_BUILD)) + + $(APINAMES_EXE): $(APINAMES_SRC) + $(CCexe) $(CCexe_CFLAGS) $(TE)$@ $< $(CCexe_LDFLAGS) + + .PHONY: symbols_list + + symbols_list: $(EXPORTS_LIST) + + # We manually add TT_New_Context and TT_RunIns, which are needed by TT + # debuggers, to the EXPORTS_LIST. + # + $(EXPORTS_LIST): $(APINAMES_EXE) $(PUBLIC_HEADERS) + $(subst /,$(SEP),$(APINAMES_EXE)) -o$@ $(APINAMES_OPTIONS) $(PUBLIC_HEADERS) + @echo TT_New_Context >> $(EXPORTS_LIST) + @echo TT_RunIns >> $(EXPORTS_LIST) + + $(PROJECT_LIBRARY): $(EXPORTS_LIST) + + CLEAN += $(EXPORTS_LIST) \ + $(APINAMES_EXE) + +endif + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/freetype.mk b/local/recipes/libs/freetype2/source/builds/freetype.mk new file mode 100644 index 0000000000..b6ff865b74 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/freetype.mk @@ -0,0 +1,385 @@ +# +# FreeType 2 library sub-Makefile +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY +# OTHER MAKEFILES. + + +# The following variables (set by other Makefile components, in the +# environment, or on the command line) are used: +# +# PLATFORM_DIR The architecture-dependent directory, +# e.g., `$(TOP_DIR)/builds/unix'. Added to INCLUDES also. +# +# OBJ_DIR The directory in which object files are created. +# +# LIB_DIR The directory in which the library is created. +# +# DOC_DIR The directory in which the API reference is created. +# +# INCLUDES A list of directories to be included additionally. +# +# DEVEL_DIR Development directory which is added to the INCLUDES +# variable before the standard include directories. +# +# CFLAGS Compilation flags. This overrides the default settings +# in the platform-specific configuration files. +# +# FTSYS_SRC If set, its value is used as the name of a replacement +# file for `src/base/ftsystem.c'. +# +# FTDEBUG_SRC If set, its value is used as the name of a replacement +# file for `src/base/ftdebug.c'. [For a normal build, this +# file does nothing.] +# +# FTMODULE_H The file which contains the list of module classes for +# the current build. Usually, this is automatically +# created by `modules.mk'. +# +# BASE_OBJ_S +# BASE_OBJ_M A list of base objects (for single object and multiple +# object builds, respectively). Set up in +# `src/base/rules.mk'. +# +# BASE_EXT_OBJ A list of base extension objects. Set up in +# `src/base/rules.mk'. +# +# DRV_OBJ_S +# DRV_OBJ_M A list of driver objects (for single object and multiple +# object builds, respectively). Set up cumulatively in +# `src//rules.mk'. +# +# CLEAN +# DISTCLEAN The sub-makefiles can append additional stuff to these two +# variables which is to be removed for the `clean' resp. +# `distclean' target. +# +# TOP_DIR, SEP, +# COMPILER_SEP, +# LIBRARY, CC, +# A, I, O, T Check `config.mk' for details. + + +# The targets `objects' and `library' are defined at the end of this +# Makefile after all other rules have been included. +# +.PHONY: single multi objects library refdoc refdoc-venv + +# default target -- build single objects and library +# +single: objects library + +# `multi' target -- build multiple objects and library +# +multi: objects library + + +# The FreeType source directory, usually `./src'. +# +SRC_DIR := $(TOP_DIR)/src + +# The directory where the base layer components are placed, usually +# `./src/base'. +# +BASE_DIR := $(SRC_DIR)/base + +# Other derived directories. +# +PUBLIC_DIR := $(TOP_DIR)/include/freetype +INTERNAL_DIR := $(PUBLIC_DIR)/internal +SERVICES_DIR := $(INTERNAL_DIR)/services +CONFIG_DIR := $(PUBLIC_DIR)/config + +# The documentation directory. +# +DOC_DIR ?= $(TOP_DIR)/docs + +# The final name of the library file. +# +PROJECT_LIBRARY := $(LIB_DIR)/$(LIBRARY).$A + + +# include paths +# +# IMPORTANT NOTE: The architecture-dependent directory must ALWAYS be placed +# before the standard include list. Porters are then able to +# put their own version of some of the FreeType components +# in the `builds/' directory, as these files will +# override the default sources. +# +INCLUDES := $(subst /,$(COMPILER_SEP),$(OBJ_DIR) \ + $(DEVEL_DIR) \ + $(PLATFORM_DIR) \ + $(TOP_DIR)/include) + +INCLUDE_FLAGS := $(INCLUDES:%=$I%) + +# For a development build, we assume that the external library dependencies +# defined in `ftoption.h' are fulfilled, so we directly access the necessary +# include directory information using `pkg-config'. +# +ifdef DEVEL_DIR + INCLUDE_FLAGS += $(shell pkg-config --cflags libpng) + INCLUDE_FLAGS += $(shell pkg-config --cflags harfbuzz) + INCLUDE_FLAGS += $(shell pkg-config --cflags libbrotlidec) +endif + + +# C flags used for the compilation of an object file. This must include at +# least the paths for the `base' and `builds/' directories; +# debug/optimization/warning flags + ansi compliance if needed. +# +# $(INCLUDE_FLAGS) should come before $(CFLAGS) to avoid problems with +# old FreeType versions. +# +# Note what we also define the macro FT2_BUILD_LIBRARY when building +# FreeType. This is required to let our sources include the internal +# headers (something forbidden by clients). +# +# `CPPFLAGS' might be specified by the user in the environment. +# +FT_CFLAGS = $(CPPFLAGS) \ + $(CFLAGS) \ + $DFT2_BUILD_LIBRARY + +FT_COMPILE := $(CC) $(ANSIFLAGS) $(INCLUDE_FLAGS) $(FT_CFLAGS) + + +# Include the `exports' rules file. +# +include $(TOP_DIR)/builds/exports.mk + + +# Initialize the list of objects. +# +OBJECTS_LIST := + + +# Define $(PUBLIC_H) as the list of all public header files located in +# `$(TOP_DIR)/include/freetype'. $(INTERNAL_H), and $(CONFIG_H) are defined +# similarly. $(FTOPTION_H) is the option file used in the compilation. +# +# This is used to simplify the dependency rules -- if one of these files +# changes, the whole library is recompiled. +# +ifneq ($(wildcard $(OBJ_DIR)/ftoption.h),) + FTOPTION_H := $(OBJ_DIR)/ftoption.h +else ifneq ($(wildcard $(PLATFORM_DIR)/ftoption.h),) + FTOPTION_H := $(PLATFORM_DIR)/ftoption.h +endif + +PUBLIC_H := $(wildcard $(PUBLIC_DIR)/*.h) +INTERNAL_H := $(wildcard $(INTERNAL_DIR)/*.h) \ + $(wildcard $(SERVICES_DIR)/*.h) +CONFIG_H := $(wildcard $(CONFIG_DIR)/*.h) \ + $(wildcard $(PLATFORM_DIR)/config/*.h) \ + $(FTMODULE_H) \ + $(FTOPTION_H) +DEVEL_H := $(wildcard $(TOP_DIR)/devel/*.h) + +FREETYPE_H := $(PUBLIC_H) $(INTERNAL_H) $(CONFIG_H) $(DEVEL_H) + + +# ftsystem component +# +FTSYS_SRC ?= $(BASE_DIR)/ftsystem.c + +FTSYS_OBJ := $(OBJ_DIR)/ftsystem.$O + +OBJECTS_LIST += $(FTSYS_OBJ) + +$(FTSYS_OBJ): $(FTSYS_SRC) $(FREETYPE_H) + $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) + + +# ftdebug component +# +FTDEBUG_SRC ?= $(BASE_DIR)/ftdebug.c + +FTDEBUG_OBJ := $(OBJ_DIR)/ftdebug.$O + +OBJECTS_LIST += $(FTDEBUG_OBJ) + +$(FTDEBUG_OBJ): $(FTDEBUG_SRC) $(FREETYPE_H) + $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) + + +# Include all rule files from FreeType components. +# +include $(SRC_DIR)/base/rules.mk +include $(patsubst %,$(SRC_DIR)/%/rules.mk,$(MODULES)) +include $(SRC_DIR)/dlg/rules.mk + + +# ftinit component +# +# The C source `ftinit.c' contains the FreeType initialization routines. +# It is able to automatically register one or more drivers when the API +# function FT_Init_FreeType() is called. +# +# The set of initial drivers is determined by the driver Makefiles +# includes above. Each driver Makefile updates the FTINIT_xxx lists +# which contain additional include paths and macros used to compile the +# single `ftinit.c' source. +# +FTINIT_SRC := $(BASE_DIR)/ftinit.c +FTINIT_OBJ := $(OBJ_DIR)/ftinit.$O + +OBJECTS_LIST += $(FTINIT_OBJ) + +$(FTINIT_OBJ): $(FTINIT_SRC) $(FREETYPE_H) + $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) + + +# ftver component +# +# The VERSIONINFO resource `ftver.rc' contains version and copyright +# to be compiled by windres and tagged into DLL usually. +# +ifneq ($(RC),) + FTVER_SRC := $(BASE_DIR)/ftver.rc + FTVER_OBJ := $(OBJ_DIR)/ftver.$O + + OBJECTS_LIST += $(FTVER_OBJ) + + $(FTVER_OBJ): $(FTVER_SRC) + $(RC) -o $@ $< +endif + + +# All FreeType library objects. +# +OBJ_M := $(BASE_OBJ_M) $(BASE_EXT_OBJ) $(DRV_OBJS_M) $(DLG_OBJS_M) +OBJ_S := $(BASE_OBJ_S) $(BASE_EXT_OBJ) $(DRV_OBJS_S) $(DLG_OBJS_S) + + +# The target `multi' on the Make command line indicates that we want to +# compile each source file independently. +# +# Otherwise, each module/driver is compiled in a single object file through +# source file inclusion (see `src/base/ftbase.c' or +# `src/truetype/truetype.c' for examples). +# +BASE_OBJECTS := $(OBJECTS_LIST) + +ifneq ($(findstring multi,$(MAKECMDGOALS)),) + OBJECTS_LIST += $(OBJ_M) +else + OBJECTS_LIST += $(OBJ_S) +endif + +objects: $(OBJECTS_LIST) + +library: $(PROJECT_LIBRARY) + +# Run `docwriter' in the current Python environment. +# +PYTHON ?= python + +refdoc: + @echo Running docwriter... + $(PYTHON) -m docwriter \ + --prefix=ft2 \ + --title=FreeType-$(version) \ + --site=reference \ + --output=$(DOC_DIR) \ + $(PUBLIC_DIR)/*.h \ + $(PUBLIC_DIR)/config/*.h \ + $(PUBLIC_DIR)/cache/*.h + @echo Building static site... + cd $(DOC_DIR) && $(PYTHON) -m mkdocs build + @echo Done. + +# Variables for running `refdoc' with Python's `virtualenv'. The +# environment is created in `DOC_DIR/env' and is gitignored. +# +# We still need to cd into `DOC_DIR' to build `mkdocs' because paths in +# `mkdocs.yml' are relative to the current working directory. +# +VENV_NAME := env +VENV_DIR := $(DOC_DIR)$(SEP)$(VENV_NAME) +ENV_PYTHON := $(VENV_DIR)$(SEP)$(BIN)$(SEP)$(PYTHON) + +refdoc-venv: + @echo Setting up virtualenv for Python... + virtualenv --python=$(PYTHON) $(VENV_DIR) + @echo Installing docwriter... + $(ENV_PYTHON) -m pip install docwriter + @echo Running docwriter... + $(ENV_PYTHON) -m docwriter \ + --prefix=ft2 \ + --title=FreeType-$(version) \ + --site=reference \ + --output=$(DOC_DIR) \ + $(PUBLIC_DIR)/*.h \ + $(PUBLIC_DIR)/config/*.h \ + $(PUBLIC_DIR)/cache/*.h + @echo Building static site... + cd $(DOC_DIR) && $(VENV_NAME)$(SEP)$(BIN)$(SEP)python -m mkdocs build + @echo Done. + +.PHONY: clean_project_std distclean_project_std + +# Standard cleaning and distclean rules. These are not accepted +# on all systems though. +# +clean_project_std: + -$(DELETE) $(BASE_OBJECTS) $(OBJ_M) $(OBJ_S) $(CLEAN) + +distclean_project_std: clean_project_std + -$(DELETE) $(PROJECT_LIBRARY) + -$(DELETE) *.orig *~ core *.core $(DISTCLEAN) + + +.PHONY: clean_project_dos distclean_project_dos + +# The Dos command shell does not support very long list of arguments, so +# we are stuck with wildcards. +# +# Don't break the command lines with \; this prevents the "del" command from +# working correctly on Win9x. +# +clean_project_dos: + -$(DELETE) $(subst /,$(SEP),$(OBJ_DIR)/*.$O $(CLEAN) $(NO_OUTPUT)) + +distclean_project_dos: clean_project_dos + -$(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY) $(DISTCLEAN) $(NO_OUTPUT)) + + +.PHONY: remove_config_mk remove_ftmodule_h + +# Remove configuration file (used for distclean). +# +remove_config_mk: + -$(DELETE) $(subst /,$(SEP),$(CONFIG_MK) $(NO_OUTPUT)) + +# Remove module list (used for distclean). +# +remove_ftmodule_h: + -$(DELETE) $(subst /,$(SEP),$(FTMODULE_H) $(NO_OUTPUT)) + + +.PHONY: clean distclean + +# The `config.mk' file must define `clean_project' and `distclean_project'. +# Implementations may use to relay these to either the `std' or `dos' +# versions from above, or simply provide their own implementation. +# +clean: clean_project +distclean: distclean_project remove_config_mk remove_ftmodule_h + -$(DELETE) $(subst /,$(SEP),$(DOC_DIR)/*.html $(NO_OUTPUT)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/link_dos.mk b/local/recipes/libs/freetype2/source/builds/link_dos.mk new file mode 100644 index 0000000000..923639d489 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/link_dos.mk @@ -0,0 +1,42 @@ +# +# Link instructions for Dos-like systems (Dos, Win32, OS/2) +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +ifdef BUILD_PROJECT + + .PHONY: clean_project distclean_project + + # Now include the main sub-makefile. It contains all the rules used to + # build the library with the previous variables defined. + # + include $(TOP_DIR)/builds/$(PROJECT).mk + + # The cleanup targets. + # + clean_project: clean_project_dos + distclean_project: distclean_project_dos + + # This final rule is used to link all object files into a single library. + # this is compiler-specific + # + $(PROJECT_LIBRARY): $(OBJECTS_LIST) + ifdef CLEAN_LIBRARY + -$(CLEAN_LIBRARY) $(NO_OUTPUT) + endif + $(LINK_LIBRARY) + +endif + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/link_std.mk b/local/recipes/libs/freetype2/source/builds/link_std.mk new file mode 100644 index 0000000000..008de5170c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/link_std.mk @@ -0,0 +1,42 @@ +# +# Link instructions for standard systems +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +ifdef BUILD_PROJECT + + .PHONY: clean_project distclean_project + + # Now include the main sub-makefile. It contains all the rules used to + # build the library with the previous variables defined. + # + include $(TOP_DIR)/builds/$(PROJECT).mk + + # The cleanup targets. + # + clean_project: clean_project_std + distclean_project: distclean_project_std + + # This final rule is used to link all object files into a single library. + # this is compiler-specific + # + $(PROJECT_LIBRARY): $(OBJECTS_LIST) + ifdef CLEAN_LIBRARY + -$(CLEAN_LIBRARY) $(NO_OUTPUT) + endif + $(LINK_LIBRARY) + +endif + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_cfm.make.txt b/local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_cfm.make.txt new file mode 100644 index 0000000000..b74565f107 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_cfm.make.txt @@ -0,0 +1,209 @@ +# File: FreeType.m68k_cfm.make +# Target: FreeType.m68k_cfm +# Created: Thursday, October 27, 2005 09:23:25 PM + + +MAKEFILE = FreeType.m68k_cfm.make +\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified + +ObjDir = :objs: +Includes = \xB6 + -ansi strict \xB6 + -includes unix \xB6 + -i :include: \xB6 + -i :src: \xB6 + -i :include:freetype:config: + +Sym-68K = -sym off + +COptions = \xB6 + -d FT_MACINTOSH=1 \xB6 + -d HAVE_FSSPEC=1 \xB6 + -d HAVE_FSREF=0 \xB6 + -d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 + -d HAVE_QUICKDRAW_CARBON=0 \xB6 + -d HAVE_ATS=0 \xB6 + -d FT2_BUILD_LIBRARY \xB6 + -d FT_CONFIG_CONFIG_H="" \xB6 + -d FT_CONFIG_MODULES_H="" \xB6 + {Includes} {Sym-68K} -model cfmseg + + +### Source Files ### + +SrcFiles = \xB6 + :src:autofit:autofit.c \xB6 + :builds:mac:ftbase.c \xB6 + :src:base:ftbbox.c \xB6 + :src:base:ftbdf.c \xB6 + :src:base:ftbitmap.c \xB6 + :src:base:ftdebug.c \xB6 + :src:base:ftfstype.c \xB6 + :src:base:ftglyph.c \xB6 + :src:base:ftgxval.c \xB6 + :src:base:ftinit.c \xB6 + :src:base:ftmm.c \xB6 + :src:base:ftotval.c \xB6 + :src:base:ftpfr.c \xB6 + :src:base:ftstroke.c \xB6 + :src:base:ftsynth.c \xB6 + :src:base:ftsystem.c \xB6 + :src:base:fttype1.c \xB6 + :src:base:ftwinfnt.c \xB6 + :src:cache:ftcache.c \xB6 + :src:bdf:bdf.c \xB6 + :src:cff:cff.c \xB6 + :src:cid:type1cid.c \xB6 +# :src:gxvalid:gxvalid.c \xB6 + :src:gzip:ftgzip.c \xB6 + :src:bzip2:ftbzip2.c \xB6 + :src:lzw:ftlzw.c \xB6 + :src:otvalid:otvalid.c \xB6 + :src:pcf:pcf.c \xB6 + :src:pfr:pfr.c \xB6 + :src:psaux:psaux.c \xB6 + :src:pshinter:pshinter.c \xB6 + :src:psnames:psmodule.c \xB6 + :src:raster:raster.c \xB6 + :src:sfnt:sfnt.c \xB6 + :src:smooth:smooth.c \xB6 + :src:truetype:truetype.c \xB6 + :src:type1:type1.c \xB6 + :src:type42:type42.c \xB6 + :src:winfonts:winfnt.c + + +### Object Files ### + +ObjFiles-68K = \xB6 + "{ObjDir}autofit.c.o" \xB6 + "{ObjDir}ftbase.c.o" \xB6 + "{ObjDir}ftbbox.c.o" \xB6 + "{ObjDir}ftbdf.c.o" \xB6 + "{ObjDir}ftbitmap.c.o" \xB6 + "{ObjDir}ftdebug.c.o" \xB6 + "{ObjDir}ftfstype.c.o" \xB6 + "{ObjDir}ftglyph.c.o" \xB6 + "{ObjDir}ftgxval.c.o" \xB6 + "{ObjDir}ftinit.c.o" \xB6 + "{ObjDir}ftmm.c.o" \xB6 + "{ObjDir}ftotval.c.o" \xB6 + "{ObjDir}ftpfr.c.o" \xB6 + "{ObjDir}ftstroke.c.o" \xB6 + "{ObjDir}ftsynth.c.o" \xB6 + "{ObjDir}ftsystem.c.o" \xB6 + "{ObjDir}fttype1.c.o" \xB6 + "{ObjDir}ftwinfnt.c.o" \xB6 + "{ObjDir}ftcache.c.o" \xB6 + "{ObjDir}bdf.c.o" \xB6 + "{ObjDir}cff.c.o" \xB6 + "{ObjDir}type1cid.c.o" \xB6 +# "{ObjDir}gxvalid.c.o" \xB6 + "{ObjDir}ftgzip.c.o" \xB6 + "{ObjDir}ftbzip2.c.o" \xB6 + "{ObjDir}ftlzw.c.o" \xB6 + "{ObjDir}otvalid.c.o" \xB6 + "{ObjDir}pcf.c.o" \xB6 + "{ObjDir}pfr.c.o" \xB6 + "{ObjDir}psaux.c.o" \xB6 + "{ObjDir}pshinter.c.o" \xB6 + "{ObjDir}psmodule.c.o" \xB6 + "{ObjDir}raster.c.o" \xB6 + "{ObjDir}sfnt.c.o" \xB6 + "{ObjDir}smooth.c.o" \xB6 + "{ObjDir}truetype.c.o" \xB6 + "{ObjDir}type1.c.o" \xB6 + "{ObjDir}type42.c.o" \xB6 + "{ObjDir}winfnt.c.o" + + +### Libraries ### + +LibFiles-68K = + + +### Default Rules ### + +.c.o \xC4 .c {\xA5MondoBuild\xA5} + {C} {depDir}{default}.c -o {targDir}{default}.c.o {COptions} + + +### Build Rules ### + +:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c + Duplicate :src:base:ftbase.c :builds:mac:ftbase.c + +"{ObjDir}ftbase.c.o" \xC4\xC4 :builds:mac:ftbase.c + {C} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.o" \xB6 + -i :builds:mac: \xB6 + -i :src:base: \xB6 + {COptions} + +FreeType.m68k_cfm \xC4\xC4 FreeType.m68k_cfm.o + +FreeType.m68k_cfm.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5} + Lib \xB6 + -o {Targ} \xB6 + {ObjFiles-68K} \xB6 + {LibFiles-68K} \xB6 + {Sym-68K} \xB6 + -mf -d + + + +### Required Dependencies ### + +"{ObjDir}autofit.c.o" \xC4 :src:autofit:autofit.c +# "{ObjDir}ftbase.c.o" \xC4 :src:base:ftbase.c +"{ObjDir}ftbbox.c.o" \xC4 :src:base:ftbbox.c +"{ObjDir}ftbdf.c.o" \xC4 :src:base:ftbdf.c +"{ObjDir}ftbitmap.c.o" \xC4 :src:base:ftbitmap.c +"{ObjDir}ftdebug.c.o" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfstype.c.o" \xC4 :src:base:ftfstype.c +"{ObjDir}ftglyph.c.o" \xC4 :src:base:ftglyph.c +"{ObjDir}ftgxval.c.o" \xC4 :src:base:ftgxval.c +"{ObjDir}ftinit.c.o" \xC4 :src:base:ftinit.c +"{ObjDir}ftmm.c.o" \xC4 :src:base:ftmm.c +"{ObjDir}ftotval.c.o" \xC4 :src:base:ftotval.c +"{ObjDir}ftpfr.c.o" \xC4 :src:base:ftpfr.c +"{ObjDir}ftstroke.c.o" \xC4 :src:base:ftstroke.c +"{ObjDir}ftsynth.c.o" \xC4 :src:base:ftsynth.c +"{ObjDir}ftsystem.c.o" \xC4 :src:base:ftsystem.c +"{ObjDir}fttype1.c.o" \xC4 :src:base:fttype1.c +"{ObjDir}ftwinfnt.c.o" \xC4 :src:base:ftwinfnt.c +"{ObjDir}ftcache.c.o" \xC4 :src:cache:ftcache.c +"{ObjDir}bdf.c.o" \xC4 :src:bdf:bdf.c +"{ObjDir}cff.c.o" \xC4 :src:cff:cff.c +"{ObjDir}type1cid.c.o" \xC4 :src:cid:type1cid.c +# "{ObjDir}gxvalid.c.o" \xC4 :src:gxvalid:gxvalid.c +"{ObjDir}ftgzip.c.o" \xC4 :src:gzip:ftgzip.c +"{ObjDir}ftbzip2.c.o" \xC4 :src:bzip2:ftbzip2.c +"{ObjDir}ftlzw.c.o" \xC4 :src:lzw:ftlzw.c +"{ObjDir}otvalid.c.o" \xC4 :src:otvalid:otvalid.c +"{ObjDir}pcf.c.o" \xC4 :src:pcf:pcf.c +"{ObjDir}pfr.c.o" \xC4 :src:pfr:pfr.c +"{ObjDir}psaux.c.o" \xC4 :src:psaux:psaux.c +"{ObjDir}pshinter.c.o" \xC4 :src:pshinter:pshinter.c +"{ObjDir}psmodule.c.o" \xC4 :src:psnames:psmodule.c +"{ObjDir}raster.c.o" \xC4 :src:raster:raster.c +"{ObjDir}sfnt.c.o" \xC4 :src:sfnt:sfnt.c +"{ObjDir}smooth.c.o" \xC4 :src:smooth:smooth.c +"{ObjDir}truetype.c.o" \xC4 :src:truetype:truetype.c +"{ObjDir}type1.c.o" \xC4 :src:type1:type1.c +"{ObjDir}type42.c.o" \xC4 :src:type42:type42.c +"{ObjDir}winfnt.c.o" \xC4 :src:winfonts:winfnt.c + + +### Optional Dependencies ### +### Build this target to generate "include file" dependencies. ### + +Dependencies \xC4 $OutOfDate + MakeDepend \xB6 + -append {MAKEFILE} \xB6 + -ignore "{CIncludes}" \xB6 + -objdir "{ObjDir}" \xB6 + -objext .o \xB6 + {Includes} \xB6 + {SrcFiles} + + diff --git a/local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_far.make.txt b/local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_far.make.txt new file mode 100644 index 0000000000..d880ddbb7c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_far.make.txt @@ -0,0 +1,208 @@ +# File: FreeType.m68k_far.make +# Target: FreeType.m68k_far +# Created: Tuesday, October 25, 2005 03:34:05 PM + + +MAKEFILE = FreeType.m68k_far.make +\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified + +ObjDir = :objs: +Includes = \xB6 + -includes unix \xB6 + -i :include: \xB6 + -i :src: \xB6 + -i :include:freetype:config: + +Sym-68K = -sym off + +COptions = \xB6 + -d FT_MACINTOSH=1 \xB6 + -d HAVE_FSSPEC=1 \xB6 + -d HAVE_FSREF=0 \xB6 + -d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 + -d HAVE_QUICKDRAW_CARBON=0 \xB6 + -d HAVE_ATS=0 \xB6 + -d FT2_BUILD_LIBRARY \xB6 + -d FT_CONFIG_CONFIG_H="" \xB6 + -d FT_CONFIG_MODULES_H="" \xB6 + {Includes} {Sym-68K} -model far + + +### Source Files ### + +SrcFiles = \xB6 + :src:autofit:autofit.c \xB6 + :builds:mac:ftbase.c \xB6 + :src:base:ftbbox.c \xB6 + :src:base:ftbdf.c \xB6 + :src:base:ftbitmap.c \xB6 + :src:base:ftdebug.c \xB6 + :src:base:ftfstype.c \xB6 + :src:base:ftglyph.c \xB6 + :src:base:ftgxval.c \xB6 + :src:base:ftinit.c \xB6 + :src:base:ftmm.c \xB6 + :src:base:ftotval.c \xB6 + :src:base:ftpfr.c \xB6 + :src:base:ftstroke.c \xB6 + :src:base:ftsynth.c \xB6 + :src:base:ftsystem.c \xB6 + :src:base:fttype1.c \xB6 + :src:base:ftwinfnt.c \xB6 + :src:cache:ftcache.c \xB6 + :src:bdf:bdf.c \xB6 + :src:cff:cff.c \xB6 + :src:cid:type1cid.c \xB6 + :src:gxvalid:gxvalid.c \xB6 + :src:gzip:ftgzip.c \xB6 + :src:bzip2:ftbzip2.c \xB6 + :src:lzw:ftlzw.c \xB6 + :src:otvalid:otvalid.c \xB6 + :src:pcf:pcf.c \xB6 + :src:pfr:pfr.c \xB6 + :src:psaux:psaux.c \xB6 + :src:pshinter:pshinter.c \xB6 + :src:psnames:psmodule.c \xB6 + :src:raster:raster.c \xB6 + :src:sfnt:sfnt.c \xB6 + :src:smooth:smooth.c \xB6 + :src:truetype:truetype.c \xB6 + :src:type1:type1.c \xB6 + :src:type42:type42.c \xB6 + :src:winfonts:winfnt.c + + +### Object Files ### + +ObjFiles-68K = \xB6 + "{ObjDir}autofit.c.o" \xB6 + "{ObjDir}ftbase.c.o" \xB6 + "{ObjDir}ftbbox.c.o" \xB6 + "{ObjDir}ftbdf.c.o" \xB6 + "{ObjDir}ftbitmap.c.o" \xB6 + "{ObjDir}ftdebug.c.o" \xB6 + "{ObjDir}ftfstype.c.o" \xB6 + "{ObjDir}ftglyph.c.o" \xB6 + "{ObjDir}ftgxval.c.o" \xB6 + "{ObjDir}ftinit.c.o" \xB6 + "{ObjDir}ftmm.c.o" \xB6 + "{ObjDir}ftotval.c.o" \xB6 + "{ObjDir}ftpfr.c.o" \xB6 + "{ObjDir}ftstroke.c.o" \xB6 + "{ObjDir}ftsynth.c.o" \xB6 + "{ObjDir}ftsystem.c.o" \xB6 + "{ObjDir}fttype1.c.o" \xB6 + "{ObjDir}ftwinfnt.c.o" \xB6 + "{ObjDir}ftcache.c.o" \xB6 + "{ObjDir}bdf.c.o" \xB6 + "{ObjDir}cff.c.o" \xB6 + "{ObjDir}type1cid.c.o" \xB6 + "{ObjDir}gxvalid.c.o" \xB6 + "{ObjDir}ftgzip.c.o" \xB6 + "{ObjDir}ftbzip2.c.o" \xB6 + "{ObjDir}ftlzw.c.o" \xB6 + "{ObjDir}otvalid.c.o" \xB6 + "{ObjDir}pcf.c.o" \xB6 + "{ObjDir}pfr.c.o" \xB6 + "{ObjDir}psaux.c.o" \xB6 + "{ObjDir}pshinter.c.o" \xB6 + "{ObjDir}psmodule.c.o" \xB6 + "{ObjDir}raster.c.o" \xB6 + "{ObjDir}sfnt.c.o" \xB6 + "{ObjDir}smooth.c.o" \xB6 + "{ObjDir}truetype.c.o" \xB6 + "{ObjDir}type1.c.o" \xB6 + "{ObjDir}type42.c.o" \xB6 + "{ObjDir}winfnt.c.o" + + +### Libraries ### + +LibFiles-68K = + + +### Default Rules ### + +.c.o \xC4 .c {\xA5MondoBuild\xA5} + {C} {depDir}{default}.c -o {targDir}{default}.c.o {COptions} \xB6 + -ansi strict + +### Build Rules ### + +:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c + Duplicate :src:base:ftbase.c :builds:mac:ftbase.c + +"{ObjDir}ftbase.c.o" \xC4\xC4 :builds:mac:ftbase.c + {C} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.o" \xB6 + -i :builds:mac: \xB6 + -i :src:base: \xB6 + {COptions} + +FreeType.m68k_far \xC4\xC4 FreeType.m68k_far.o + +FreeType.m68k_far.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5} + Lib \xB6 + -o {Targ} \xB6 + {ObjFiles-68K} \xB6 + {LibFiles-68K} \xB6 + {Sym-68K} \xB6 + -mf -d + + + +### Required Dependencies ### + +"{ObjDir}autofit.c.o" \xC4 :src:autofit:autofit.c +# "{ObjDir}ftbase.c.o" \xC4 :src:base:ftbase.c +"{ObjDir}ftbbox.c.o" \xC4 :src:base:ftbbox.c +"{ObjDir}ftbdf.c.o" \xC4 :src:base:ftbdf.c +"{ObjDir}ftbitmap.c.o" \xC4 :src:base:ftbitmap.c +"{ObjDir}ftdebug.c.o" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfstype.c.o" \xC4 :src:base:ftfstype.c +"{ObjDir}ftglyph.c.o" \xC4 :src:base:ftglyph.c +"{ObjDir}ftgxval.c.o" \xC4 :src:base:ftgxval.c +"{ObjDir}ftinit.c.o" \xC4 :src:base:ftinit.c +"{ObjDir}ftmm.c.o" \xC4 :src:base:ftmm.c +"{ObjDir}ftotval.c.o" \xC4 :src:base:ftotval.c +"{ObjDir}ftpfr.c.o" \xC4 :src:base:ftpfr.c +"{ObjDir}ftstroke.c.o" \xC4 :src:base:ftstroke.c +"{ObjDir}ftsynth.c.o" \xC4 :src:base:ftsynth.c +"{ObjDir}ftsystem.c.o" \xC4 :src:base:ftsystem.c +"{ObjDir}fttype1.c.o" \xC4 :src:base:fttype1.c +"{ObjDir}ftwinfnt.c.o" \xC4 :src:base:ftwinfnt.c +"{ObjDir}ftcache.c.o" \xC4 :src:cache:ftcache.c +"{ObjDir}bdf.c.o" \xC4 :src:bdf:bdf.c +"{ObjDir}cff.c.o" \xC4 :src:cff:cff.c +"{ObjDir}type1cid.c.o" \xC4 :src:cid:type1cid.c +"{ObjDir}gxvalid.c.o" \xC4 :src:gxvalid:gxvalid.c +"{ObjDir}ftgzip.c.o" \xC4 :src:gzip:ftgzip.c +"{ObjDir}ftbzip2.c.o" \xC4 :src:bzip2:ftbzip2.c +"{ObjDir}ftlzw.c.o" \xC4 :src:lzw:ftlzw.c +"{ObjDir}otvalid.c.o" \xC4 :src:otvalid:otvalid.c +"{ObjDir}pcf.c.o" \xC4 :src:pcf:pcf.c +"{ObjDir}pfr.c.o" \xC4 :src:pfr:pfr.c +"{ObjDir}psaux.c.o" \xC4 :src:psaux:psaux.c +"{ObjDir}pshinter.c.o" \xC4 :src:pshinter:pshinter.c +"{ObjDir}psmodule.c.o" \xC4 :src:psnames:psmodule.c +"{ObjDir}raster.c.o" \xC4 :src:raster:raster.c +"{ObjDir}sfnt.c.o" \xC4 :src:sfnt:sfnt.c +"{ObjDir}smooth.c.o" \xC4 :src:smooth:smooth.c +"{ObjDir}truetype.c.o" \xC4 :src:truetype:truetype.c +"{ObjDir}type1.c.o" \xC4 :src:type1:type1.c +"{ObjDir}type42.c.o" \xC4 :src:type42:type42.c +"{ObjDir}winfnt.c.o" \xC4 :src:winfonts:winfnt.c + + +### Optional Dependencies ### +### Build this target to generate "include file" dependencies. ### + +Dependencies \xC4 $OutOfDate + MakeDepend \xB6 + -append {MAKEFILE} \xB6 + -ignore "{CIncludes}" \xB6 + -objdir "{ObjDir}" \xB6 + -objext .o \xB6 + {Includes} \xB6 + {SrcFiles} + + diff --git a/local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_carbon.make.txt b/local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_carbon.make.txt new file mode 100644 index 0000000000..1fa8c30760 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_carbon.make.txt @@ -0,0 +1,212 @@ +# File: FreeType.ppc_carbon.make +# Target: FreeType.ppc_carbon +# Created: Friday, October 28, 2005 03:40:06 PM + + +MAKEFILE = FreeType.ppc_carbon.make +\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified + +ObjDir = :objs: +Includes = \xB6 + -ansi strict \xB6 + -includes unix \xB6 + -i :include: \xB6 + -i :src: \xB6 + -i :include:freetype:config: + +Sym-PPC = -sym off + +PPCCOptions = \xB6 + -d FT_MACINTOSH=1 \xB6 + -d HAVE_FSSPEC=1 \xB6 + -d HAVE_FSREF=1 \xB6 + -d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 + -d HAVE_QUICKDRAW_CARBON=1 \xB6 + -d HAVE_ATS=0 \xB6 + -d FT2_BUILD_LIBRARY \xB6 + -d FT_CONFIG_CONFIG_H="" \xB6 + -d FT_CONFIG_MODULES_H="" \xB6 + {Includes} {Sym-PPC} -d TARGET_API_MAC_CARBON=1 + + +### Source Files ### + +SrcFiles = \xB6 + :src:autofit:autofit.c \xB6 + :builds:mac:ftbase.c \xB6 + :src:base:ftbbox.c \xB6 + :src:base:ftbdf.c \xB6 + :src:base:ftbitmap.c \xB6 + :src:base:ftdebug.c \xB6 + :src:base:ftfstype.c \xB6 + :src:base:ftglyph.c \xB6 + :src:base:ftgxval.c \xB6 + :src:base:ftinit.c \xB6 + :src:base:ftmm.c \xB6 + :src:base:ftotval.c \xB6 + :src:base:ftpfr.c \xB6 + :src:base:ftstroke.c \xB6 + :src:base:ftsynth.c \xB6 + :src:base:ftsystem.c \xB6 + :src:base:fttype1.c \xB6 + :src:base:ftwinfnt.c \xB6 + :src:cache:ftcache.c \xB6 + :src:bdf:bdf.c \xB6 + :src:cff:cff.c \xB6 + :src:cid:type1cid.c \xB6 + :src:gxvalid:gxvalid.c \xB6 + :src:gzip:ftgzip.c \xB6 + :src:bzip2:ftbzip2.c \xB6 + :src:lzw:ftlzw.c \xB6 + :src:otvalid:otvalid.c \xB6 + :src:pcf:pcf.c \xB6 + :src:pfr:pfr.c \xB6 + :src:psaux:psaux.c \xB6 + :src:pshinter:pshinter.c \xB6 + :src:psnames:psmodule.c \xB6 + :src:raster:raster.c \xB6 + :src:sfnt:sfnt.c \xB6 + :src:smooth:smooth.c \xB6 + :src:truetype:truetype.c \xB6 + :src:type1:type1.c \xB6 + :src:type42:type42.c \xB6 + :src:winfonts:winfnt.c + + +### Object Files ### + +ObjFiles-PPC = \xB6 + "{ObjDir}autofit.c.x" \xB6 + "{ObjDir}ftbase.c.x" \xB6 + "{ObjDir}ftbbox.c.x" \xB6 + "{ObjDir}ftbdf.c.x" \xB6 + "{ObjDir}ftbitmap.c.x" \xB6 + "{ObjDir}ftdebug.c.x" \xB6 + "{ObjDir}ftfstype.c.x" \xB6 + "{ObjDir}ftglyph.c.x" \xB6 + "{ObjDir}ftgxval.c.x" \xB6 + "{ObjDir}ftinit.c.x" \xB6 + "{ObjDir}ftmm.c.x" \xB6 + "{ObjDir}ftotval.c.x" \xB6 + "{ObjDir}ftpfr.c.x" \xB6 + "{ObjDir}ftstroke.c.x" \xB6 + "{ObjDir}ftsynth.c.x" \xB6 + "{ObjDir}ftsystem.c.x" \xB6 + "{ObjDir}fttype1.c.x" \xB6 + "{ObjDir}ftwinfnt.c.x" \xB6 + "{ObjDir}ftcache.c.x" \xB6 + "{ObjDir}bdf.c.x" \xB6 + "{ObjDir}cff.c.x" \xB6 + "{ObjDir}type1cid.c.x" \xB6 + "{ObjDir}gxvalid.c.x" \xB6 + "{ObjDir}ftgzip.c.x" \xB6 + "{ObjDir}ftbzip2.c.x" \xB6 + "{ObjDir}ftlzw.c.x" \xB6 + "{ObjDir}otvalid.c.x" \xB6 + "{ObjDir}pcf.c.x" \xB6 + "{ObjDir}pfr.c.x" \xB6 + "{ObjDir}psaux.c.x" \xB6 + "{ObjDir}pshinter.c.x" \xB6 + "{ObjDir}psmodule.c.x" \xB6 + "{ObjDir}raster.c.x" \xB6 + "{ObjDir}sfnt.c.x" \xB6 + "{ObjDir}smooth.c.x" \xB6 + "{ObjDir}truetype.c.x" \xB6 + "{ObjDir}type1.c.x" \xB6 + "{ObjDir}type42.c.x" \xB6 + "{ObjDir}winfnt.c.x" + + +### Libraries ### + +LibFiles-PPC = + + +### Default Rules ### + +.c.x \xC4 .c {\xA5MondoBuild\xA5} + {PPCC} {depDir}{default}.c -o {targDir}{default}.c.x {PPCCOptions} + + +### Build Rules ### + +:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c + Duplicate :src:base:ftbase.c :builds:mac:ftbase.c + +"{ObjDir}ftbase.c.x" \xC4\xC4 :builds:mac:ftbase.c + {PPCC} :builds:mac:ftbase.c -o {ObjDir}ftbase.c.x \xB6 + -i :builds:mac: \xB6 + -i :src:base: \xB6 + {PPCCOptions} + +FreeType.ppc_carbon \xC4\xC4 FreeType.ppc_carbon.o + +FreeType.ppc_carbon.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\xA5} + PPCLink \xB6 + -o {Targ} \xB6 + {ObjFiles-PPC} \xB6 + {LibFiles-PPC} \xB6 + {Sym-PPC} \xB6 + -mf -d \xB6 + -t 'XCOF' \xB6 + -c 'MPS ' \xB6 + -xm l + + + +### Required Dependencies ### + +"{ObjDir}autofit.c.x" \xC4 :src:autofit:autofit.c +# "{ObjDir}ftbase.c.x" \xC4 :builds:mac:ftbase.c +"{ObjDir}ftbbox.c.x" \xC4 :src:base:ftbbox.c +"{ObjDir}ftbdf.c.x" \xC4 :src:base:ftbdf.c +"{ObjDir}ftbitmap.c.x" \xC4 :src:base:ftbitmap.c +"{ObjDir}ftdebug.c.x" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfstype.c.x" \xC4 :src:base:ftfstype.c +"{ObjDir}ftglyph.c.x" \xC4 :src:base:ftglyph.c +"{ObjDir}ftgxval.c.x" \xC4 :src:base:ftgxval.c +"{ObjDir}ftinit.c.x" \xC4 :src:base:ftinit.c +"{ObjDir}ftmm.c.x" \xC4 :src:base:ftmm.c +"{ObjDir}ftotval.c.x" \xC4 :src:base:ftotval.c +"{ObjDir}ftpfr.c.x" \xC4 :src:base:ftpfr.c +"{ObjDir}ftstroke.c.x" \xC4 :src:base:ftstroke.c +"{ObjDir}ftsynth.c.x" \xC4 :src:base:ftsynth.c +"{ObjDir}ftsystem.c.x" \xC4 :src:base:ftsystem.c +"{ObjDir}fttype1.c.x" \xC4 :src:base:fttype1.c +"{ObjDir}ftwinfnt.c.x" \xC4 :src:base:ftwinfnt.c +"{ObjDir}ftcache.c.x" \xC4 :src:cache:ftcache.c +"{ObjDir}bdf.c.x" \xC4 :src:bdf:bdf.c +"{ObjDir}cff.c.x" \xC4 :src:cff:cff.c +"{ObjDir}type1cid.c.x" \xC4 :src:cid:type1cid.c +"{ObjDir}gxvalid.c.x" \xC4 :src:gxvalid:gxvalid.c +"{ObjDir}ftgzip.c.x" \xC4 :src:gzip:ftgzip.c +"{ObjDir}ftbzip2.c.x" \xC4 :src:bzip2:ftbzip2.c +"{ObjDir}ftlzw.c.x" \xC4 :src:lzw:ftlzw.c +"{ObjDir}otvalid.c.x" \xC4 :src:otvalid:otvalid.c +"{ObjDir}pcf.c.x" \xC4 :src:pcf:pcf.c +"{ObjDir}pfr.c.x" \xC4 :src:pfr:pfr.c +"{ObjDir}psaux.c.x" \xC4 :src:psaux:psaux.c +"{ObjDir}pshinter.c.x" \xC4 :src:pshinter:pshinter.c +"{ObjDir}psmodule.c.x" \xC4 :src:psnames:psmodule.c +"{ObjDir}raster.c.x" \xC4 :src:raster:raster.c +"{ObjDir}sfnt.c.x" \xC4 :src:sfnt:sfnt.c +"{ObjDir}smooth.c.x" \xC4 :src:smooth:smooth.c +"{ObjDir}truetype.c.x" \xC4 :src:truetype:truetype.c +"{ObjDir}type1.c.x" \xC4 :src:type1:type1.c +"{ObjDir}type42.c.x" \xC4 :src:type42:type42.c +"{ObjDir}winfnt.c.x" \xC4 :src:winfonts:winfnt.c + + +### Optional Dependencies ### +### Build this target to generate "include file" dependencies. ### + +Dependencies \xC4 $OutOfDate + MakeDepend \xB6 + -append {MAKEFILE} \xB6 + -ignore "{CIncludes}" \xB6 + -objdir "{ObjDir}" \xB6 + -objext .x \xB6 + {Includes} \xB6 + {SrcFiles} + + diff --git a/local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_classic.make.txt b/local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_classic.make.txt new file mode 100644 index 0000000000..2550190cbf --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_classic.make.txt @@ -0,0 +1,213 @@ +# File: FreeType.ppc_classic.make +# Target: FreeType.ppc_classic +# Created: Thursday, October 27, 2005 07:42:43 PM + + +MAKEFILE = FreeType.ppc_classic.make +\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified + +ObjDir = :objs: +Includes = \xB6 + -ansi strict \xB6 + -includes unix \xB6 + -i :include: \xB6 + -i :src: \xB6 + -i :include:freetype:config: + +Sym-PPC = -sym off + +PPCCOptions = \xB6 + -d FT_MACINTOSH=1 \xB6 + -d HAVE_FSSPEC=1 \xB6 + -d HAVE_FSREF=0 \xB6 + -d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 + -d HAVE_QUICKDRAW_CARBON=0 \xB6 + -d HAVE_ATS=0 \xB6 + -d FT2_BUILD_LIBRARY \xB6 + -d FT_CONFIG_CONFIG_H="" \xB6 + -d FT_CONFIG_MODULES_H="" \xB6 + {Includes} {Sym-PPC} + + +### Source Files ### + +SrcFiles = \xB6 + :src:autofit:autofit.c \xB6 + :builds:mac:ftbase.c \xB6 + :src:base:ftbbox.c \xB6 + :src:base:ftbdf.c \xB6 + :src:base:ftbitmap.c \xB6 + :src:base:ftdebug.c \xB6 + :src:base:ftfstype.c \xB6 + :src:base:ftglyph.c \xB6 + :src:base:ftgxval.c \xB6 + :src:base:ftinit.c \xB6 + :src:base:ftmm.c \xB6 + :src:base:ftotval.c \xB6 + :src:base:ftpfr.c \xB6 + :src:base:ftstroke.c \xB6 + :src:base:ftsynth.c \xB6 + :src:base:ftsystem.c \xB6 + :src:base:fttype1.c \xB6 + :src:base:ftwinfnt.c \xB6 + :src:cache:ftcache.c \xB6 + :src:bdf:bdf.c \xB6 + :src:cff:cff.c \xB6 + :src:cid:type1cid.c \xB6 + :src:gxvalid:gxvalid.c \xB6 + :src:gzip:ftgzip.c \xB6 + :src:bzip2:ftbzip2.c \xB6 + :src:lzw:ftlzw.c \xB6 + :src:otvalid:otvalid.c \xB6 + :src:pcf:pcf.c \xB6 + :src:pfr:pfr.c \xB6 + :src:psaux:psaux.c \xB6 + :src:pshinter:pshinter.c \xB6 + :src:psnames:psmodule.c \xB6 + :src:raster:raster.c \xB6 + :src:sfnt:sfnt.c \xB6 + :src:smooth:smooth.c \xB6 + :src:truetype:truetype.c \xB6 + :src:type1:type1.c \xB6 + :src:type42:type42.c \xB6 + :src:winfonts:winfnt.c + + +### Object Files ### + +ObjFiles-PPC = \xB6 + "{ObjDir}autofit.c.x" \xB6 + "{ObjDir}ftbase.c.x" \xB6 + "{ObjDir}ftbbox.c.x" \xB6 + "{ObjDir}ftbdf.c.x" \xB6 + "{ObjDir}ftbitmap.c.x" \xB6 + "{ObjDir}ftdebug.c.x" \xB6 + "{ObjDir}ftfstype.c.x" \xB6 + "{ObjDir}ftglyph.c.x" \xB6 + "{ObjDir}ftgxval.c.x" \xB6 + "{ObjDir}ftinit.c.x" \xB6 + "{ObjDir}ftmm.c.x" \xB6 + "{ObjDir}ftotval.c.x" \xB6 + "{ObjDir}ftpfr.c.x" \xB6 + "{ObjDir}ftstroke.c.x" \xB6 + "{ObjDir}ftsynth.c.x" \xB6 + "{ObjDir}ftsystem.c.x" \xB6 + "{ObjDir}fttype1.c.x" \xB6 + "{ObjDir}ftwinfnt.c.x" \xB6 + "{ObjDir}ftcache.c.x" \xB6 + "{ObjDir}bdf.c.x" \xB6 + "{ObjDir}cff.c.x" \xB6 + "{ObjDir}type1cid.c.x" \xB6 + "{ObjDir}gxvalid.c.x" \xB6 + "{ObjDir}ftgzip.c.x" \xB6 + "{ObjDir}ftbzip2.c.x" \xB6 + "{ObjDir}ftlzw.c.x" \xB6 + "{ObjDir}otvalid.c.x" \xB6 + "{ObjDir}pcf.c.x" \xB6 + "{ObjDir}pfr.c.x" \xB6 + "{ObjDir}psaux.c.x" \xB6 + "{ObjDir}pshinter.c.x" \xB6 + "{ObjDir}psmodule.c.x" \xB6 + "{ObjDir}raster.c.x" \xB6 + "{ObjDir}sfnt.c.x" \xB6 + "{ObjDir}smooth.c.x" \xB6 + "{ObjDir}truetype.c.x" \xB6 + "{ObjDir}type1.c.x" \xB6 + "{ObjDir}type42.c.x" \xB6 + "{ObjDir}winfnt.c.x" + + +### Libraries ### + +LibFiles-PPC = + + +### Default Rules ### + +.c.x \xC4 .c {\xA5MondoBuild\xA5} + {PPCC} {depDir}{default}.c -o {targDir}{default}.c.x {PPCCOptions} + + +### Build Rules ### + +:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c + Duplicate :src:base:ftbase.c :builds:mac:ftbase.c + +"{ObjDir}ftbase.c.x" \xC4\xC4 :builds:mac:ftbase.c + {PPCC} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.x" \xB6 + -i :builds:mac: \xB6 + -i :src:base: \xB6 + {PPCCOptions} + +FreeType.ppc_classic \xC4\xC4 FreeType.ppc_classic.o + +FreeType.ppc_classic.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\xA5} + PPCLink \xB6 + -o {Targ} \xB6 + {ObjFiles-PPC} \xB6 + {LibFiles-PPC} \xB6 + {Sym-PPC} \xB6 + -mf -d \xB6 + -t 'XCOF' \xB6 + -c 'MPS ' \xB6 + -xm l + + + +### Required Dependencies ### + +"{ObjDir}autofit.c.x" \xC4 :src:autofit:autofit.c +# "{ObjDir}ftbase.c.x" \xC4 :builds:mac:ftbase.c +"{ObjDir}ftbbox.c.x" \xC4 :src:base:ftbbox.c +"{ObjDir}ftbdf.c.x" \xC4 :src:base:ftbdf.c +"{ObjDir}ftbitmap.c.x" \xC4 :src:base:ftbitmap.c +"{ObjDir}ftdebug.c.x" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfstype.c.x" \xC4 :src:base:ftfstype.c +"{ObjDir}ftglyph.c.x" \xC4 :src:base:ftglyph.c +"{ObjDir}ftgxval.c.x" \xC4 :src:base:ftgxval.c +"{ObjDir}ftinit.c.x" \xC4 :src:base:ftinit.c +"{ObjDir}ftmm.c.x" \xC4 :src:base:ftmm.c +"{ObjDir}ftotval.c.x" \xC4 :src:base:ftotval.c +"{ObjDir}ftpfr.c.x" \xC4 :src:base:ftpfr.c +"{ObjDir}ftstroke.c.x" \xC4 :src:base:ftstroke.c +"{ObjDir}ftsynth.c.x" \xC4 :src:base:ftsynth.c +"{ObjDir}ftsystem.c.x" \xC4 :src:base:ftsystem.c +"{ObjDir}fttype1.c.x" \xC4 :src:base:fttype1.c +"{ObjDir}ftwinfnt.c.x" \xC4 :src:base:ftwinfnt.c +"{ObjDir}ftcache.c.x" \xC4 :src:cache:ftcache.c +"{ObjDir}bdf.c.x" \xC4 :src:bdf:bdf.c +"{ObjDir}cff.c.x" \xC4 :src:cff:cff.c +"{ObjDir}type1cid.c.x" \xC4 :src:cid:type1cid.c +"{ObjDir}gxvalid.c.x" \xC4 :src:gxvalid:gxvalid.c +"{ObjDir}ftgzip.c.x" \xC4 :src:gzip:ftgzip.c +"{ObjDir}ftbzip2.c.x" \xC4 :src:bzip2:ftbzip2.c +"{ObjDir}ftlzw.c.x" \xC4 :src:lzw:ftlzw.c +"{ObjDir}otvalid.c.x" \xC4 :src:otvalid:otvalid.c +"{ObjDir}pcf.c.x" \xC4 :src:pcf:pcf.c +"{ObjDir}pfr.c.x" \xC4 :src:pfr:pfr.c +"{ObjDir}psaux.c.x" \xC4 :src:psaux:psaux.c +"{ObjDir}pshinter.c.x" \xC4 :src:pshinter:pshinter.c +"{ObjDir}psmodule.c.x" \xC4 :src:psnames:psmodule.c +"{ObjDir}raster.c.x" \xC4 :src:raster:raster.c +"{ObjDir}sfnt.c.x" \xC4 :src:sfnt:sfnt.c +"{ObjDir}smooth.c.x" \xC4 :src:smooth:smooth.c +"{ObjDir}truetype.c.x" \xC4 :src:truetype:truetype.c +"{ObjDir}type1.c.x" \xC4 :src:type1:type1.c +"{ObjDir}type42.c.x" \xC4 :src:type42:type42.c +"{ObjDir}winfnt.c.x" \xC4 :src:winfonts:winfnt.c + + + +### Optional Dependencies ### +### Build this target to generate "include file" dependencies. ### + +Dependencies \xC4 $OutOfDate + MakeDepend \xB6 + -append {MAKEFILE} \xB6 + -ignore "{CIncludes}" \xB6 + -objdir "{ObjDir}" \xB6 + -objext .x \xB6 + {Includes} \xB6 + {SrcFiles} + + diff --git a/local/recipes/libs/freetype2/source/builds/mac/README b/local/recipes/libs/freetype2/source/builds/mac/README new file mode 100644 index 0000000000..06e3d51da8 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/README @@ -0,0 +1,393 @@ +This folder contains + + * Makefile skeletons for Apple MPW (Macintosh's Programmer's Workshop) + + * Python script to generate MPW makefile from skeleton + + * Metrowerks CodeWarrior 9.0 project file in XML format + +------------------------------------------------------------ + +1. What is this +--------------- + +Files in this directory are designed to build FreeType +running on classic MacOS. To build FreeType running on +Mac OS X, build as the system is UNIX. + +However, Mac OS X is most useful to manipulate files in +vanilla FreeType to fit classic MacOS. + +The information about MacOS specific API is written in +appendix of this document. + +2. Requirement +-------------- + +You can use MPW: a free-charged developer environment +by Apple, or CodeWarrior: a commercial developer +environment by Metrowerks. GCC for MPW and Symantec +"Think C" are not tested at present. + + + 2-1. Apple MPW + -------------- + + Following C compilers are tested: + + m68k target: Apple SC 8.9.0d3e1 + ppc target: Apple MrC 5.0.0d3c1 + + The final MPW-GM (official release on 1999/Dec) is too + old and cannot compile FreeType, because bundled C + compilers cannot search header files in sub directories. + Updating by the final MPW-PR (pre-release on 2001/Feb) + is required. + + Required files are downloadable from: + + http://macintoshgarden.org/apps/macintosh-programmers-workshop + + Also you can find documents how to update by MPW-PR. + + Python is required to restore MPW makefiles from the + skeletons. Python bundled to Mac OS X is enough. For + classic MacOS, MacPython is available: + + https://homepages.cwi.nl/~jack/macpython/ + + MPW requires all files are typed by resource fork. + ResEdit bundled to MPW is enough. In Mac OS X, + /Developer/Tools/SetFile of DevTool is useful to + manipulate from commandline. + + 2-2. Metrowerks CodeWarrior + --------------------------- + + XML project file is generated and tested by + CodeWarrior 9.0. Older versions are not tested + at all. At present, static library for ppc target + is available in the project file. + + +3. How to build +--------------- + + 3-1. Apple MPW + -------------- + Detailed building procedure by Apple MPW is + described in following. + + 3-1-1. Generate MPW makefiles from the skeletons + ------------------------------------------------ + + Here are 4 skeletons for following targets are + included. + + - FreeType.m68k_far.make.txt + Ancient 32bit binary executable format for + m68k MacOS: System 6, with 32bit addressing + mode (far-pointer-model) So-called "Toolbox" + API is used. + + - FreeType.m68k_cfm.make.txt + CFM binary executable format for m68k MacOS: + System 7. So-called "Toolbox" API is used. + + - FreeType.ppc_classic.make.txt + CFM binary executable format for ppc MacOS: + System 7, MacOS 8, MacOS 9. So-called "Toolbox" + API is used. + + - FreeType.ppc_carbon.make.txt + CFM binary executable format for ppc MacOS: + MacOS 9. Carbon API is used. + + At present, static library is only supported, + although targets except of m68k_far are capable + to use shared library. + + MPW makefile syntax uses 8bit characters. To keep + from violating them during version control, here + we store skeletons in pure ASCII format. You must + generate MPW makefile by Python script ascii2mpw.py. + + In Mac OS X terminal, you can convert as: + + python builds/mac/ascii2mpw.py \ + < builds/mac/FreeType.m68k_far.make.txt \ + > FreeType.m68k_far.make + + The skeletons are designed to use in the top + directory where there are builds, include, src etc. + You must name the generated MPW makefile by removing + ".txt" from source skeleton name. + + 3-1-2. Add resource forks to related files + ------------------------------------------ + + MPW's Make and C compilers cannot recognize files + without resource fork. You have to add resource + fork to the files that MPW uses. In Mac OS X + terminal of the system, you can do as: + + find . -name '*.[ch]' -exec \ + /Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \; + + find . -name '*.make' -exec \ + /Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \; + + + 3-1-3. Open MPW shell and build + ------------------------------- + + Open MPW shell and go to the top directory that + FreeType sources are extracted (MPW makefile must + be located in there), from "Set Directory" in + "Directory" menu. + + Choose "Build" from "Build" menu, and type the + name of project by removing ".make" from MPW + makefile, as: FreeType.m68k_far + + If building is successfully finished, you can find + built library in objs/ directory. + + + 3-2. Metrowerks CodeWarrior + --------------------------- + + Detailed building procedure by Metrowerks + CodeWarrior (CW) 9.0 is described in following. + + 3-2-1. Import XML project file + ------------------------------ + + CW XML project file is not ready for double- + click. Start CodeWarrior IDE, and choose + "Import project" in "File" menu. Choose XML + project file: builds/mac/ftlib.prj.xml. + In next, you will be asked where to save CW + native project file: you must choose + "builds/mac/ftlib.prj". The project file is + designed with relative path from there. After + CW native project file is generated, it is + automatically loaded, small project window + titled "ftlib.prj" is displayed. + + 3-2-2. Building + --------------- + Choose "Make" from "Project" menu. If building + is successfully finished, you can find built + library at objs/FreeTypeLib. + +4. TODO +------- + + 4-1. All modules should be included + ----------------------------------- + + At present, MPW makefiles and CW project file are + just updated versions of these by Leonard. Some + modules are added after the last maintenance, they + are not included. + + 4-2. Working test with ftdemos + ------------------------------ + + At present, MPW makefiles and CW project file can + build FreeType for classic MacOS. But their working + behaviours are not tested at all. Building ftdemos + for classic MacOS and working test is required. + + +APPENDIX I +---------- + + A-1. Framework dependencies + --------------------------- + + src/base/ftmac.c adds two Mac-specific features to + FreeType. These features are based on MacOS libraries. + + * accessing resource-fork font + The fonts for classic MacOS store their graphical data + in resource forks which cannot be accessed via ANSI C + functions. FreeType2 provides functions to handle such + resource fork fonts, they are based on File Manager + framework of MacOS. In addition, HFS and HFS+ file + system driver of Linux is supported. Following + functions are for this purpose. + + FT_New_Face_From_Resource() + FT_New_Face_From_FSSpec() + FT_New_Face_From_FSRef() + + * resolving font name to font file + The font menu of MacOS application prefers font name + written in FOND resource than sfnt resource. FreeType2 + provides functions to find font file by name in MacOS + application, they are based on QuickDraw Font Manager + and Apple Type Service framework of MacOS. + + FT_GetFile_From_Mac_Name() + FT_GetFile_From_Mac_ATS_Name() + + Working functions for each MacOS are summarized as + following. + + upto MacOS 6: + not tested (you have to obtain MPW 2.x) + + MacOS 7.x, 8.x, 9.x (without CarbonLib): + FT_GetFile_From_Mac_Name() + FT_New_Face_From_Resource() + FT_New_Face_From_FSSpec() + + MacOS 9.x (with CarbonLib): + FT_GetFile_From_Mac_Name() + FT_New_Face_From_Resource() + FT_New_Face_From_FSSpec() + FT_New_Face_From_FSRef() + + Mac OS X upto 10.4.x: + FT_GetFile_From_Mac_Name() deprecated + FT_New_Face_From_FSSpec() deprecated + FT_GetFile_From_Mac_ATS_Name() deprecated? + FT_New_Face_From_FSRef() + + A-2. Deprecated Functions + ------------------------- + + A-2-1. FileManager + ------------------ + + For convenience to write MacOS application, ftmac.c + provides functions to specify a file by FSSpec and FSRef, + because the file identification pathname had ever been + unrecommended method in MacOS programming. + + Toward to MacOS X 10.4 & 5, Carbon functions using FSSpec + datatype is noticed as deprecated, and recommended to + migrate to FSRef datatype. The big differences of FSRef + against FSSpec are explained in Apple TechNotes 2078. + + https://developer.apple.com/library/archive/technotes/tn2078/ + + - filename length: the max length of file + name of FSRef is 255 chars (it is limit of HFS+), + that of FSSpec is 31 chars (it is limit of HFS). + + - filename encoding: FSSpec is localized by + legacy encoding for each language system, + FSRef is Unicode enabled. + + A-2-2. FontManager + ------------------ + + Following functions receive QuickDraw fontname: + + FT_GetFile_From_Mac_Name() + + QuickDraw is deprecated and replaced by Quartz + since Mac OS X 10.4. They are still kept for + backward compatibility. By undefinition of + HAVE_QUICKDRAW in building, you can change these + functions to return FT_Err_Unimplemented always. + + Replacement functions are added for migration. + + FT_GetFile_From_Mac_ATS_Name() + + They are usable on Mac OS X only. On older systems, + these functions return FT_Err_Unimplemented always. + + The detailed incompatibilities and possibility + of FontManager emulation without QuickDraw is + explained in + + http://gyvern.ipc.hiroshima-u.ac.jp/~mpsuzuki/ats_benchmark.html + + A-3. Framework Availabilities + ----------------------------- + + The framework of MacOS are often revised, especially + when new format of binary executable is introduced. + Following table is the minimum version of frameworks + to use functions used in FreeType2. The table is + extracted from MPW header files for assembly language. + + *** NOTE *** + The conditional definition of available data type + in MPW compiler is insufficient. You can compile + program using FSRef data type for older systems + (MacOS 7, 8) that don't know FSRef data type. + + + +-------------------+-----------------------------+ + CPU | mc680x0 | PowerPC | + +---------+---------+---------+---------+---------+ + Binary Executable Format | Classic | 68K-CFM | CFM | CFM | Mach-O | + +---------+---------+---------+---------+---------+ + Framework API | Toolbox | Toolbox | Toolbox | Carbon | Carbon | + +---------+---------+---------+---------+---------+ + + +---------+---------+---------+---------+---------+ + | ?(*) |Interface|Interface|CarbonLib|Mac OS X | + | |Lib |Lib | | | +* Files.h +---------+---------+---------+---------+---------+ +PBGetFCBInfoSync() | o | 7.1- | 7.1- | 1.0- | o | +FSMakeFSSpec() | o | 7.1- | 7.1- | 1.0- | o | +FSGetForkCBInfo() | o | (**) | 9.0- | 1.0- | o | +FSpMakeFSRef() | o | (**) | 9.0- | 1.0- | o | +FSGetCatalogInfo() | o | (**) | 9.0- | 1.0- | -10.3 | +FSPathMakeRef() | x | x | x | 1.1- | -10.3 | + +---------+---------+---------+---------+---------+ + + +---------+---------+---------+---------+---------+ + | ?(*) |Font |Font |CarbonLib|Mac OS X | + | |Manager |Manager | | | +* Fonts.h +---------+---------+---------+---------+---------+ +FMCreateFontFamilyIterator() | x | x | 9.0- | 1.0- | -10.3 | +FMDisposeFontFamilyIterator() | x | x | 9.0- | 1.0- | -10.3 | +FMGetNextFontFamily() | x | x | 9.0- | 1.0- | -10.3 | +FMGetFontFamilyName() | x | x | 9.0- | 1.0- | -10.3 | +FMCreateFontFamilyInstanceIterator() | x | x | 9.0- | 1.0- | -10.3 | +FMDisposeFontFamilyInstanceIterator() | x | x | 9.0- | 1.0- | -10.3 | +FMGetNextFontFamilyInstance() | x | x | 9.0- | 1.0- | -10.3 | + +---------+---------+---------+---------+---------+ + + +---------+---------+---------+---------+---------+ + | - | - | - |CarbonLib|Mac OS X | +* ATSFont.h (***) +---------+---------+---------+---------+---------+ +ATSFontFindFromName() | x | x | x | x | o | +ATSFontGetFileSpecification() | x | x | x | x | o | + +---------+---------+---------+---------+---------+ + + (*) + In the "Classic": the original binary executable + format, these framework functions are directly + transformed to MacOS system call. Therefore, the + exact availability should be checked by running + system. + + (**) + InterfaceLib is bundled to MacOS and its version + is usually equal to MacOS. There's no separate + update for InterfaceLib. It is supposed that + there's no InterfaceLib 9.x for m68k platforms. + In fact, these functions are FSRef dependent. + + (***) + ATSUI framework is available on ATSUnicode 8.5 on + ppc Toolbox CFM, CarbonLib 1.0 too. But its base: + ATS font manager is not published in these versions. + +------------------------------------------------------------ +Last update: 2013-Nov-03. + +Currently maintained by + suzuki toshiya, +Originally prepared by + Leonard Rosenthol, + Just van Rossum, diff --git a/local/recipes/libs/freetype2/source/builds/mac/ascii2mpw.py b/local/recipes/libs/freetype2/source/builds/mac/ascii2mpw.py new file mode 100755 index 0000000000..ad32b21977 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/ascii2mpw.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +import sys +import string + +if len( sys.argv ) == 1 : + for asc_line in sys.stdin.readlines(): + mpw_line = string.replace(asc_line, "\\xA5", "\245") + mpw_line = string.replace(mpw_line, "\\xB6", "\266") + mpw_line = string.replace(mpw_line, "\\xC4", "\304") + mpw_line = string.replace(mpw_line, "\\xC5", "\305") + mpw_line = string.replace(mpw_line, "\\xFF", "\377") + mpw_line = string.replace(mpw_line, "\n", "\r") + mpw_line = string.replace(mpw_line, "\\n", "\n") + sys.stdout.write(mpw_line) +elif sys.argv[1] == "-r" : + for mpw_line in sys.stdin.readlines(): + asc_line = string.replace(mpw_line, "\n", "\\n") + asc_line = string.replace(asc_line, "\r", "\n") + asc_line = string.replace(asc_line, "\245", "\\xA5") + asc_line = string.replace(asc_line, "\266", "\\xB6") + asc_line = string.replace(asc_line, "\304", "\\xC4") + asc_line = string.replace(asc_line, "\305", "\\xC5") + asc_line = string.replace(asc_line, "\377", "\\xFF") + sys.stdout.write(asc_line) diff --git a/local/recipes/libs/freetype2/source/builds/mac/freetype-Info.plist b/local/recipes/libs/freetype2/source/builds/mac/freetype-Info.plist new file mode 100644 index 0000000000..344e5ac0b3 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/freetype-Info.plist @@ -0,0 +1,36 @@ + + + + + + + CFBundleDevelopmentRegion + English + + CFBundleExecutable + freetype + + CFBundleGetInfoString + FreeType ${PROJECT_VERSION} + + CFBundleInfoDictionaryVersion + 6.0 + + CFBundleName + FreeType + + CFBundlePackageType + FMWK + + CFBundleShortVersionString + ${PROJECT_VERSION} + + CFBundleSignature + ???? + + CFBundleVersion + ${PROJECT_VERSION} + + + diff --git a/local/recipes/libs/freetype2/source/builds/mac/ftlib.prj.xml b/local/recipes/libs/freetype2/source/builds/mac/ftlib.prj.xml new file mode 100644 index 0000000000..cbbc45ee55 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/ftlib.prj.xml @@ -0,0 +1,1194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + + FreeTypeLib + + + + UserSourceTrees + + + AlwaysSearchUserPathstrue + InterpretDOSAndUnixPathstrue + RequireFrameworkStyleIncludesfalse + SourceRelativeIncludesfalse + UserSearchPaths + + SearchPath + Path: + PathFormatMacOS + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path:::include: + PathFormatMacOS + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path:::src: + PathFormatMacOS + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path:: + PathFormatMacOS + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SystemSearchPaths + + SearchPath + Path: + PathFormatMacOS + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + + + MWRuntimeSettings_WorkingDirectory + MWRuntimeSettings_CommandLine + MWRuntimeSettings_HostApplication + Path + PathFormatGeneric + PathRootAbsolute + + MWRuntimeSettings_EnvVars + + + LinkerMacOS PPC Linker + PreLinker + PostLinker + TargetnameFreeTypeLib + OutputDirectory + Path:::objs: + PathFormatMacOS + PathRootProject + + SaveEntriesUsingRelativePathsfalse + + + FileMappings + + FileTypeAPPL + FileExtension + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileTypeAppl + FileExtension + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileTypeMMLB + FileExtension + CompilerLib Import PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeMPLF + FileExtension + CompilerLib Import PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeMWCD + FileExtension + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileTypeRSRC + FileExtension + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.bh + CompilerBalloon Help + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.c + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.c++ + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cc + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cp + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cpp + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.exp + Compiler + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.h + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMaketrue + + + FileTypeTEXT + FileExtension.p + CompilerMW Pascal PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pas + CompilerMW Pascal PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pch + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pch++ + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.ppu + CompilerMW Pascal PPC + EditLanguage + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.r + CompilerRez + EditLanguageRez + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.s + CompilerPPCAsm + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeXCOF + FileExtension + CompilerXCOFF Import PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypedocu + FileExtension + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileTypersrc + FileExtension + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileTypeshlb + FileExtension + CompilerPEF Import PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypestub + FileExtension + CompilerPEF Import PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.doc + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFilefalse + IgnoredByMaketrue + + + FileExtension.o + CompilerXCOFF Import PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.ppob + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileExtension.rsrc + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + + + CacheModDatestrue + DumpBrowserInfofalse + CacheSubprojectstrue + UseThirdPartyDebuggerfalse + BrowserGenerator1 + DebuggerAppPath + Path + PathFormatGeneric + PathRootAbsolute + + DebuggerCmdLineArgs + DebuggerWorkingDir + Path + PathFormatGeneric + PathRootAbsolute + + CodeCompletionPrefixFileNameMacHeaders.c + CodeCompletionMacroFileNameMacOS_Carbon_C++_Macros.h + + + ConsoleEncoding0 + LogSystemMessagestrue + AutoTargetDLLsfalse + StopAtWatchpointstrue + PauseWhileRunningfalse + PauseInterval5 + PauseUIFlags0 + AltExePath + Path + PathFormatGeneric + PathRootAbsolute + + StopAtTempBPOnLaunchtrue + CacheSymbolicstrue + TempBPFunctionNamemain + TempBPType0 + + + Enabledfalse + ConnectionName + DownloadPath + LaunchRemoteAppfalse + RemoteAppPath + CoreID0 + JTAGClockSpeed8000 + IsMultiCorefalse + OSDownloadfalse + UseGlobalOSDownloadfalse + OSDownloadConnectionName + OSDownloadPath + AltDownloadfalse + AltDownloadConnectionName + + + OtherExecutables + + + AnalyzerConnectionName + + + CustomColor1 + Red0 + Green32767 + Blue0 + + CustomColor2 + Red0 + Green32767 + Blue0 + + CustomColor3 + Red0 + Green32767 + Blue0 + + CustomColor4 + Red0 + Green32767 + Blue0 + + + + MWFrontEnd_C_cplusplus0 + MWFrontEnd_C_checkprotos1 + MWFrontEnd_C_arm0 + MWFrontEnd_C_trigraphs0 + MWFrontEnd_C_onlystdkeywords0 + MWFrontEnd_C_enumsalwaysint0 + MWFrontEnd_C_ansistrict1 + MWFrontEnd_C_wchar_type1 + MWFrontEnd_C_enableexceptions1 + MWFrontEnd_C_dontreusestrings0 + MWFrontEnd_C_poolstrings0 + MWFrontEnd_C_dontinline0 + MWFrontEnd_C_useRTTI1 + MWFrontEnd_C_unsignedchars0 + MWFrontEnd_C_autoinline0 + MWFrontEnd_C_booltruefalse1 + MWFrontEnd_C_inlinelevel0 + MWFrontEnd_C_ecplusplus0 + MWFrontEnd_C_defer_codegen0 + MWFrontEnd_C_templateparser0 + MWFrontEnd_C_c990 + MWFrontEnd_C_bottomupinline1 + MWFrontEnd_C_gcc_extensions0 + MWFrontEnd_C_instance_manager0 + + + C_CPP_Preprocessor_EmitFiletrue + C_CPP_Preprocessor_EmitLinefalse + C_CPP_Preprocessor_EmitFullPathfalse + C_CPP_Preprocessor_KeepCommentsfalse + C_CPP_Preprocessor_PCHUsesPrefixTextfalse + C_CPP_Preprocessor_EmitPragmastrue + C_CPP_Preprocessor_KeepWhiteSpacefalse + C_CPP_Preprocessor_MultiByteEncodingencASCII_Unicode + C_CPP_Preprocessor_PrefixText/* settings imported from old "C/C++ Language" panel */ + +#if !__option(precompile) +#include "ftoption.h" /* was "Prefix file" */ +#endif + + + + MWWarning_C_warn_illpragma0 + MWWarning_C_warn_emptydecl0 + MWWarning_C_warn_possunwant0 + MWWarning_C_warn_unusedvar1 + MWWarning_C_warn_unusedarg1 + MWWarning_C_warn_extracomma0 + MWWarning_C_pedantic0 + MWWarning_C_warningerrors0 + MWWarning_C_warn_hidevirtual0 + MWWarning_C_warn_implicitconv0 + MWWarning_C_warn_notinlined0 + MWWarning_C_warn_structclass0 + MWWarning_C_warn_missingreturn0 + MWWarning_C_warn_no_side_effect0 + MWWarning_C_warn_resultnotused0 + MWWarning_C_warn_padding0 + MWWarning_C_warn_impl_i2f_conv0 + MWWarning_C_warn_impl_f2i_conv0 + MWWarning_C_warn_impl_s2u_conv0 + MWWarning_C_warn_illtokenpasting0 + MWWarning_C_warn_filenamecaps0 + MWWarning_C_warn_filenamecapssystem0 + MWWarning_C_warn_undefmacro0 + MWWarning_C_warn_ptrintconv0 + + + MWMerge_MacOS_projectTypeApplication + MWMerge_MacOS_outputNameMerge Out + MWMerge_MacOS_outputCreator???? + MWMerge_MacOS_outputTypeAPPL + MWMerge_MacOS_suppressWarning0 + MWMerge_MacOS_copyFragments1 + MWMerge_MacOS_copyResources1 + MWMerge_MacOS_flattenResource0 + MWMerge_MacOS_flatFileNamea.rsrc + MWMerge_MacOS_flatFileOutputPath + Path: + PathFormatMacOS + PathRootProject + + MWMerge_MacOS_skipResources + DLGX + ckid + Proj + WSPC + + + + FileLockedfalse + ResourcesMapIsReadOnlyfalse + PrinterDriverIsMultiFinderCompatiblefalse + Invisiblefalse + HasBundlefalse + NameLockedfalse + Stationeryfalse + HasCustomIconfalse + Sharedfalse + HasBeenInitedfalse + Label0 + Comments + HasCustomBadgefalse + HasRoutingInfofalse + + + MWCodeGen_PPC_structalignmentPPC_mw + MWCodeGen_PPC_tracebacktablesNone + MWCodeGen_PPC_processorGeneric + MWCodeGen_PPC_function_align4 + MWCodeGen_PPC_tocdata1 + MWCodeGen_PPC_largetoc0 + MWCodeGen_PPC_profiler0 + MWCodeGen_PPC_vectortocdata0 + MWCodeGen_PPC_poolconst0 + MWCodeGen_PPC_peephole0 + MWCodeGen_PPC_readonlystrings0 + MWCodeGen_PPC_linkerpoolsstrings0 + MWCodeGen_PPC_volatileasm0 + MWCodeGen_PPC_schedule0 + MWCodeGen_PPC_altivec0 + MWCodeGen_PPC_altivec_move_block0 + MWCodeGen_PPC_strictIEEEfp0 + MWCodeGen_PPC_fpcontract1 + MWCodeGen_PPC_genfsel0 + MWCodeGen_PPC_orderedfpcmp0 + + + MWCodeGen_MachO_structalignmentPPC_mw + MWCodeGen_MachO_profiler_enumOff + MWCodeGen_MachO_processorGeneric + MWCodeGen_MachO_function_align4 + MWCodeGen_MachO_common0 + MWCodeGen_MachO_boolisint0 + MWCodeGen_MachO_peephole1 + MWCodeGen_MachO_readonlystrings0 + MWCodeGen_MachO_linkerpoolsstrings1 + MWCodeGen_MachO_volatileasm0 + MWCodeGen_MachO_schedule0 + MWCodeGen_MachO_altivec0 + MWCodeGen_MachO_vecmove0 + MWCodeGen_MachO_fp_ieee_strict0 + MWCodeGen_MachO_fpcontract1 + MWCodeGen_MachO_genfsel0 + MWCodeGen_MachO_fp_cmps_ordered0 + + + MWDisassembler_PPC_showcode1 + MWDisassembler_PPC_extended1 + MWDisassembler_PPC_mix0 + MWDisassembler_PPC_nohex0 + MWDisassembler_PPC_showdata1 + MWDisassembler_PPC_showexceptions1 + MWDisassembler_PPC_showsym0 + MWDisassembler_PPC_shownames1 + + + GlobalOptimizer_PPC_optimizationlevelLevel0 + GlobalOptimizer_PPC_optforSpeed + + + MWLinker_PPC_linksym1 + MWLinker_PPC_symfullpath1 + MWLinker_PPC_linkmap0 + MWLinker_PPC_nolinkwarnings0 + MWLinker_PPC_dontdeadstripinitcode0 + MWLinker_PPC_permitmultdefs0 + MWLinker_PPC_linkmodeFast + MWLinker_PPC_code_foldingNone + MWLinker_PPC_initname + MWLinker_PPC_mainname + MWLinker_PPC_termname + + + MWLinker_MacOSX_linksym1 + MWLinker_MacOSX_symfullpath0 + MWLinker_MacOSX_nolinkwarnings0 + MWLinker_MacOSX_linkmap0 + MWLinker_MacOSX_dontdeadstripinitcode0 + MWLinker_MacOSX_permitmultdefs0 + MWLinker_MacOSX_use_objectivec_semantics0 + MWLinker_MacOSX_strip_debug_symbols0 + MWLinker_MacOSX_split_segs0 + MWLinker_MacOSX_report_msl_overloads0 + MWLinker_MacOSX_objects_follow_linkorder0 + MWLinker_MacOSX_linkmodeNormal + MWLinker_MacOSX_exportsReferencedGlobals + MWLinker_MacOSX_sortcodeNone + MWLinker_MacOSX_mainname + MWLinker_MacOSX_initname + MWLinker_MacOSX_code_foldingNone + MWLinker_MacOSX_stabsgenNone + + + MWProject_MacOSX_typeExecutable + MWProject_MacOSX_outfile + MWProject_MacOSX_filecreator???? + MWProject_MacOSX_filetypeMEXE + MWProject_MacOSX_vmaddress4096 + MWProject_MacOSX_usedefaultvmaddr1 + MWProject_MacOSX_flatrsrc0 + MWProject_MacOSX_flatrsrcfilename + MWProject_MacOSX_flatrsrcoutputdir + Path: + PathFormatMacOS + PathRootProject + + MWProject_MacOSX_installpath./ + MWProject_MacOSX_dont_prebind0 + MWProject_MacOSX_flat_namespace0 + MWProject_MacOSX_frameworkversionA + MWProject_MacOSX_currentversion0 + MWProject_MacOSX_flat_oldimpversion0 + MWProject_MacOSX_AddrMode1 + + + MWPEF_exportsNone + MWPEF_libfolder0 + MWPEF_sortcodeNone + MWPEF_expandbss0 + MWPEF_sharedata0 + MWPEF_olddefversion0 + MWPEF_oldimpversion0 + MWPEF_currentversion0 + MWPEF_fragmentname + MWPEF_collapsereloads0 + + + MWProject_PPC_typeLibrary + MWProject_PPC_outfileFreeTypeLib + MWProject_PPC_filecreator???? + MWProject_PPC_filetype???? + MWProject_PPC_size0 + MWProject_PPC_minsize0 + MWProject_PPC_stacksize0 + MWProject_PPC_flags0 + MWProject_PPC_symfilename + MWProject_PPC_rsrcname + MWProject_PPC_rsrcheaderNative + MWProject_PPC_rsrctype???? + MWProject_PPC_rsrcid0 + MWProject_PPC_rsrcflags0 + MWProject_PPC_rsrcstore0 + MWProject_PPC_rsrcmerge0 + MWProject_PPC_flatrsrc0 + MWProject_PPC_flatrsrcoutputdir + Path: + PathFormatMacOS + PathRootProject + + MWProject_PPC_flatrsrcfilename + + + MWAssembler_PPC_auxheader0 + MWAssembler_PPC_symmodeMac + MWAssembler_PPC_dialectPPC + MWAssembler_PPC_prefixfile + MWAssembler_PPC_typecheck0 + MWAssembler_PPC_warnings0 + MWAssembler_PPC_casesensitive0 + + + PList_OutputTypeFile + PList_OutputEncodingUTF-8 + PList_PListVersion1.0 + PList_Prefix + PList_FileFilenameInfo.plist + PList_FileDirectory + Path: + PathFormatMacOS + PathRootProject + + PList_ResourceTypeplst + PList_ResourceID0 + PList_ResourceName + + + MWRez_Language_maxwidth80 + MWRez_Language_scriptRoman + MWRez_Language_alignmentAlign1 + MWRez_Language_filtermodeFilterSkip + MWRez_Language_suppresswarnings0 + MWRez_Language_escapecontrolchars1 + MWRez_Language_prefixname + MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' + + + + Name + ftsystem.c + MacOS + Text + Debug + + + Name + ftbase.c + MacOS + Text + Debug + + + Name + ftinit.c + MacOS + Text + Debug + + + Name + sfnt.c + MacOS + Text + Debug + + + Name + psnames.c + MacOS + Text + Debug + + + Name + ftdebug.c + MacOS + Text + Debug + + + Name + type1cid.c + MacOS + Text + Debug + + + Name + cff.c + MacOS + Text + Debug + + + Name + smooth.c + MacOS + Text + Debug + + + Name + winfnt.c + MacOS + Text + Debug + + + Name + truetype.c + MacOS + Text + Debug + + + Name + ftmac.c + MacOS + Text + Debug + + + Name + psaux.c + MacOS + Text + + + + Name + ftcache.c + MacOS + Text + + + + Name + ftglyph.c + MacOS + Text + + + + Name + type1.c + MacOS + Text + Debug + + + Name + pshinter.c + MacOS + Text + Debug + + + Name + pcf.c + MacOS + Text + Debug + + + Name + ftraster.c + MacOS + Text + Debug + + + Name + ftrend1.c + MacOS + Text + Debug + + + + + Name + ftsystem.c + MacOS + + + Name + ftbase.c + MacOS + + + Name + ftinit.c + MacOS + + + Name + sfnt.c + MacOS + + + Name + psnames.c + MacOS + + + Name + ftdebug.c + MacOS + + + Name + type1cid.c + MacOS + + + Name + cff.c + MacOS + + + Name + smooth.c + MacOS + + + Name + winfnt.c + MacOS + + + Name + truetype.c + MacOS + + + Name + ftmac.c + MacOS + + + Name + psaux.c + MacOS + + + Name + ftcache.c + MacOS + + + Name + ftglyph.c + MacOS + + + Name + type1.c + MacOS + + + Name + pshinter.c + MacOS + + + Name + pcf.c + MacOS + + + Name + ftraster.c + MacOS + + + Name + ftrend1.c + MacOS + + + + + + + FreeTypeLib + + + + base + + FreeTypeLib + Name + ftbase.c + MacOS + + + FreeTypeLib + Name + ftdebug.c + MacOS + + + FreeTypeLib + Name + ftglyph.c + MacOS + + + FreeTypeLib + Name + ftinit.c + MacOS + + + FreeTypeLib + Name + ftsystem.c + MacOS + + + FreeTypeLib + Name + ftmac.c + MacOS + + + ftmodules + + FreeTypeLib + Name + cff.c + MacOS + + + FreeTypeLib + Name + ftcache.c + MacOS + + + FreeTypeLib + Name + psaux.c + MacOS + + + FreeTypeLib + Name + psnames.c + MacOS + + + FreeTypeLib + Name + sfnt.c + MacOS + + + FreeTypeLib + Name + smooth.c + MacOS + + + FreeTypeLib + Name + truetype.c + MacOS + + + FreeTypeLib + Name + type1cid.c + MacOS + + + FreeTypeLib + Name + winfnt.c + MacOS + + + FreeTypeLib + Name + type1.c + MacOS + + + FreeTypeLib + Name + pshinter.c + MacOS + + + FreeTypeLib + Name + pcf.c + MacOS + + + FreeTypeLib + Name + ftraster.c + MacOS + + + FreeTypeLib + Name + ftrend1.c + MacOS + + + + + diff --git a/local/recipes/libs/freetype2/source/builds/mac/ftmac.c b/local/recipes/libs/freetype2/source/builds/mac/ftmac.c new file mode 100644 index 0000000000..77eb874389 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/ftmac.c @@ -0,0 +1,1542 @@ +/***************************************************************************/ +/* */ +/* ftmac.c */ +/* */ +/* Mac FOND support. Written by just@letterror.com. */ +/* Heavily Fixed by mpsuzuki, George Williams and Sean McBride */ +/* */ +/* Copyright (C) 1996-2026 by */ +/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /* + Notes + + Mac suitcase files can (and often do!) contain multiple fonts. To + support this I use the face_index argument of FT_(Open|New)_Face() + functions, and pretend the suitcase file is a collection. + + Warning: fbit and NFNT bitmap resources are not supported yet. In old + sfnt fonts, bitmap glyph data for each size is stored in each `NFNT' + resources instead of the `bdat' table in the sfnt resource. Therefore, + face->num_fixed_sizes is set to 0, because bitmap data in `NFNT' + resource is unavailable at present. + + The Mac FOND support works roughly like this: + + - Check whether the offered stream points to a Mac suitcase file. This + is done by checking the file type: it has to be 'FFIL' or 'tfil'. The + stream that gets passed to our init_face() routine is a stdio stream, + which isn't usable for us, since the FOND resources live in the + resource fork. So we just grab the stream->pathname field. + + - Read the FOND resource into memory, then check whether there is a + TrueType font and/or(!) a Type 1 font available. + + - If there is a Type 1 font available (as a separate `LWFN' file), read + its data into memory, massage it slightly so it becomes PFB data, wrap + it into a memory stream, load the Type 1 driver and delegate the rest + of the work to it by calling FT_Open_Face(). (XXX TODO: after this + has been done, the kerning data from the FOND resource should be + appended to the face: On the Mac there are usually no AFM files + available. However, this is tricky since we need to map Mac char + codes to ps glyph names to glyph ID's...) + + - If there is a TrueType font (an `sfnt' resource), read it into memory, + wrap it into a memory stream, load the TrueType driver and delegate + the rest of the work to it, by calling FT_Open_Face(). + + - Some suitcase fonts (notably Onyx) might point the `LWFN' file to + itself, even though it doesn't contains `POST' resources. To handle + this special case without opening the file an extra time, we just + ignore errors from the `LWFN' and fallback to the `sfnt' if both are + available. + */ + + +#include +#include +#include +#include "ftbase.h" + +#if defined( __GNUC__ ) || defined( __IBMC__ ) + /* This is for Mac OS X. Without redefinition, OS_INLINE */ + /* expands to `static inline' which doesn't survive the */ + /* -ansi compilation flag of GCC. */ +#if !HAVE_ANSI_OS_INLINE +#undef OS_INLINE +#define OS_INLINE static __inline__ +#endif +#include +#include +#include /* PATH_MAX */ +#else +#include +#include +#include +#include +#include +#include +#endif + +#ifndef PATH_MAX +#define PATH_MAX 1024 /* same with Mac OS X's syslimits.h */ +#endif + +#if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO +#include +#endif + +#define FT_DEPRECATED_ATTRIBUTE + +#include + + /* undefine blocking-macros in ftmac.h */ +#undef FT_GetFile_From_Mac_Name +#undef FT_GetFile_From_Mac_ATS_Name +#undef FT_New_Face_From_FOND +#undef FT_New_Face_From_FSSpec +#undef FT_New_Face_From_FSRef + + + /* FSSpec functions are deprecated since Mac OS X 10.4 */ +#ifndef HAVE_FSSPEC +#if TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON +#define HAVE_FSSPEC 1 +#else +#define HAVE_FSSPEC 0 +#endif +#endif + + /* most FSRef functions were introduced since Mac OS 9 */ +#ifndef HAVE_FSREF +#if TARGET_API_MAC_OSX +#define HAVE_FSREF 1 +#else +#define HAVE_FSREF 0 +#endif +#endif + + /* QuickDraw is deprecated since Mac OS X 10.4 */ +#ifndef HAVE_QUICKDRAW_CARBON +#if TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON +#define HAVE_QUICKDRAW_CARBON 1 +#else +#define HAVE_QUICKDRAW_CARBON 0 +#endif +#endif + + /* AppleTypeService is available since Mac OS X */ +#ifndef HAVE_ATS +#if TARGET_API_MAC_OSX +#define HAVE_ATS 1 +#ifndef kATSOptionFlagsUnRestrictedScope /* since Mac OS X 10.1 */ +#define kATSOptionFlagsUnRestrictedScope kATSOptionFlagsDefault +#endif +#else +#define HAVE_ATS 0 +#endif +#endif + + /* `configure' checks the availability of `ResourceIndex' strictly */ + /* and sets HAVE_TYPE_RESOURCE_INDEX to 1 or 0 always. If it is */ + /* not set (e.g., a build without `configure'), the availability */ + /* is guessed from the SDK version. */ +#ifndef HAVE_TYPE_RESOURCE_INDEX +#if !defined( MAC_OS_X_VERSION_10_5 ) || \ + ( MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5 ) +#define HAVE_TYPE_RESOURCE_INDEX 0 +#else +#define HAVE_TYPE_RESOURCE_INDEX 1 +#endif +#endif /* !HAVE_TYPE_RESOURCE_INDEX */ + +#if ( HAVE_TYPE_RESOURCE_INDEX == 0 ) +typedef short ResourceIndex; +#endif + + /* Set PREFER_LWFN to 1 if LWFN (Type 1) is preferred over + TrueType in case *both* are available (this is not common, + but it *is* possible). */ +#ifndef PREFER_LWFN +#define PREFER_LWFN 1 +#endif + +#ifdef FT_MACINTOSH + +#if !HAVE_QUICKDRAW_CARBON /* QuickDraw is deprecated since Mac OS X 10.4 */ + + FT_EXPORT_DEF( FT_Error ) + FT_GetFile_From_Mac_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + { + FT_UNUSED( fontName ); + FT_UNUSED( pathSpec ); + FT_UNUSED( face_index ); + + return FT_THROW( Unimplemented_Feature ); + } + +#else + + FT_EXPORT_DEF( FT_Error ) + FT_GetFile_From_Mac_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + { + OptionBits options = kFMUseGlobalScopeOption; + + FMFontFamilyIterator famIter; + OSStatus status = FMCreateFontFamilyIterator( NULL, NULL, + options, + &famIter ); + FMFont the_font = 0; + FMFontFamily family = 0; + + + if ( !fontName || !face_index ) + return FT_THROW( Invalid_Argument ); + + *face_index = 0; + while ( status == 0 && !the_font ) + { + status = FMGetNextFontFamily( &famIter, &family ); + if ( status == 0 ) + { + int stat2; + FMFontFamilyInstanceIterator instIter; + Str255 famNameStr; + char famName[256]; + + + /* get the family name */ + FMGetFontFamilyName( family, famNameStr ); + CopyPascalStringToC( famNameStr, famName ); + + /* iterate through the styles */ + FMCreateFontFamilyInstanceIterator( family, &instIter ); + + *face_index = 0; + stat2 = 0; + + while ( stat2 == 0 && !the_font ) + { + FMFontStyle style; + FMFontSize size; + FMFont font; + + + stat2 = FMGetNextFontFamilyInstance( &instIter, &font, + &style, &size ); + if ( stat2 == 0 && size == 0 ) + { + char fullName[256]; + + + /* build up a complete face name */ + ft_strcpy( fullName, famName ); + if ( style & bold ) + ft_strcat( fullName, " Bold" ); + if ( style & italic ) + ft_strcat( fullName, " Italic" ); + + /* compare with the name we are looking for */ + if ( ft_strcmp( fullName, fontName ) == 0 ) + { + /* found it! */ + the_font = font; + } + else + ++(*face_index); + } + } + + FMDisposeFontFamilyInstanceIterator( &instIter ); + } + } + + FMDisposeFontFamilyIterator( &famIter ); + + if ( the_font ) + { + FMGetFontContainer( the_font, pathSpec ); + return FT_Err_Ok; + } + else + return FT_THROW( Unknown_File_Format ); + } + +#endif /* HAVE_QUICKDRAW_CARBON */ + + +#if HAVE_ATS + + /* Private function. */ + /* The FSSpec type has been discouraged for a long time, */ + /* unfortunately an FSRef replacement API for */ + /* ATSFontGetFileSpecification() is only available in */ + /* Mac OS X 10.5 and later. */ + static OSStatus + FT_ATSFontGetFileReference( ATSFontRef ats_font_id, + FSRef* ats_font_ref ) + { + OSStatus err; + +#if !defined( MAC_OS_X_VERSION_10_5 ) || \ + MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 + FSSpec spec; + + + err = ATSFontGetFileSpecification( ats_font_id, &spec ); + if ( noErr == err ) + err = FSpMakeFSRef( &spec, ats_font_ref ); +#else + err = ATSFontGetFileReference( ats_font_id, ats_font_ref ); +#endif + + return err; + } + + + static FT_Error + FT_GetFileRef_From_Mac_ATS_Name( const char* fontName, + FSRef* ats_font_ref, + FT_Long* face_index ) + { + CFStringRef cf_fontName; + ATSFontRef ats_font_id; + + + *face_index = 0; + + cf_fontName = CFStringCreateWithCString( NULL, fontName, + kCFStringEncodingMacRoman ); + ats_font_id = ATSFontFindFromName( cf_fontName, + kATSOptionFlagsUnRestrictedScope ); + CFRelease( cf_fontName ); + + if ( ats_font_id == 0 || ats_font_id == 0xFFFFFFFFUL ) + return FT_THROW( Unknown_File_Format ); + + if ( noErr != FT_ATSFontGetFileReference( ats_font_id, ats_font_ref ) ) + return FT_THROW( Unknown_File_Format ); + + /* face_index calculation by searching preceding fontIDs */ + /* with same FSRef */ + { + ATSFontRef id2 = ats_font_id - 1; + FSRef ref2; + + + while ( id2 > 0 ) + { + if ( noErr != FT_ATSFontGetFileReference( id2, &ref2 ) ) + break; + if ( noErr != FSCompareFSRefs( ats_font_ref, &ref2 ) ) + break; + + id2--; + } + *face_index = ats_font_id - ( id2 + 1 ); + } + + return FT_Err_Ok; + } + +#endif + +#if !HAVE_ATS + + FT_EXPORT_DEF( FT_Error ) + FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, + UInt8* path, + UInt32 maxPathSize, + FT_Long* face_index ) + { + FT_UNUSED( fontName ); + FT_UNUSED( path ); + FT_UNUSED( maxPathSize ); + FT_UNUSED( face_index ); + + return FT_THROW( Unimplemented_Feature ); + } + +#else + + FT_EXPORT_DEF( FT_Error ) + FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, + UInt8* path, + UInt32 maxPathSize, + FT_Long* face_index ) + { + FSRef ref; + FT_Error err; + + + err = FT_GetFileRef_From_Mac_ATS_Name( fontName, &ref, face_index ); + if ( err ) + return err; + + if ( noErr != FSRefMakePath( &ref, path, maxPathSize ) ) + return FT_THROW( Unknown_File_Format ); + + return FT_Err_Ok; + } + +#endif /* HAVE_ATS */ + + +#if !HAVE_FSSPEC || !HAVE_ATS + + FT_EXPORT_DEF( FT_Error ) + FT_GetFile_From_Mac_ATS_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + { + FT_UNUSED( fontName ); + FT_UNUSED( pathSpec ); + FT_UNUSED( face_index ); + + return FT_THROW( Unimplemented_Feature ); + } + +#else + + /* This function is deprecated because FSSpec is deprecated in Mac OS X. */ + FT_EXPORT_DEF( FT_Error ) + FT_GetFile_From_Mac_ATS_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + { + FSRef ref; + FT_Error err; + + + err = FT_GetFileRef_From_Mac_ATS_Name( fontName, &ref, face_index ); + if ( err ) + return err; + + if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone, NULL, NULL, + pathSpec, NULL ) ) + return FT_THROW( Unknown_File_Format ); + + return FT_Err_Ok; + } + +#endif + + +#if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO + +#define STREAM_FILE( stream ) ( (FT_FILE*)stream->descriptor.pointer ) + + + FT_CALLBACK_DEF( void ) + ft_FSp_stream_close( FT_Stream stream ) + { + ft_fclose( STREAM_FILE( stream ) ); + + stream->descriptor.pointer = NULL; + stream->size = 0; + stream->base = NULL; + } + + + FT_CALLBACK_DEF( unsigned long ) + ft_FSp_stream_io( FT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count ) + { + FT_FILE* file; + + + file = STREAM_FILE( stream ); + + ft_fseek( file, offset, SEEK_SET ); + + return (unsigned long)ft_fread( buffer, 1, count, file ); + } + +#endif /* __MWERKS__ && !TARGET_RT_MAC_MACHO */ + + +#if HAVE_FSSPEC && !HAVE_FSREF + + /* isDirectory is a dummy to synchronize API with FSPathMakeRef() */ + static OSErr + FT_FSPathMakeSpec( const UInt8* pathname, + FSSpec* spec_p, + Boolean isDirectory ) + { + const char *p, *q; + short vRefNum; + long dirID; + Str255 nodeName; + OSErr err; + FT_UNUSED( isDirectory ); + + + p = q = (const char *)pathname; + dirID = 0; + vRefNum = 0; + + while ( 1 ) + { + int len = ft_strlen( p ); + + + if ( len > 255 ) + len = 255; + + q = p + len; + + if ( q == p ) + return 0; + + if ( 255 < ft_strlen( (char *)pathname ) ) + { + while ( p < q && *q != ':' ) + q--; + } + + if ( p < q ) + *(char *)nodeName = q - p; + else if ( ft_strlen( p ) < 256 ) + *(char *)nodeName = ft_strlen( p ); + else + return errFSNameTooLong; + + ft_strncpy( (char *)nodeName + 1, (char *)p, *(char *)nodeName ); + err = FSMakeFSSpec( vRefNum, dirID, nodeName, spec_p ); + if ( err || '\0' == *q ) + return err; + + vRefNum = spec_p->vRefNum; + dirID = spec_p->parID; + + p = q; + } + } + + + static OSErr + FT_FSpMakePath( const FSSpec* spec_p, + UInt8* path, + UInt32 maxPathSize ) + { + OSErr err; + FSSpec spec = *spec_p; + short vRefNum; + long dirID; + Str255 parDir_name; + + + FT_MEM_SET( path, 0, maxPathSize ); + while ( 1 ) + { + int child_namelen = ft_strlen( (char *)path ); + unsigned char node_namelen = spec.name[0]; + unsigned char* node_name = spec.name + 1; + + + if ( node_namelen + child_namelen > maxPathSize ) + return errFSNameTooLong; + + FT_MEM_MOVE( path + node_namelen + 1, path, child_namelen ); + FT_MEM_COPY( path, node_name, node_namelen ); + if ( child_namelen > 0 ) + path[node_namelen] = ':'; + + vRefNum = spec.vRefNum; + dirID = spec.parID; + parDir_name[0] = '\0'; + err = FSMakeFSSpec( vRefNum, dirID, parDir_name, &spec ); + if ( noErr != err || dirID == spec.parID ) + break; + } + return noErr; + } + +#endif /* HAVE_FSSPEC && !HAVE_FSREF */ + + + static OSErr + FT_FSPathMakeRes( const UInt8* pathname, + ResFileRefNum* res ) + { + +#if HAVE_FSREF + + OSErr err; + FSRef ref; + + + if ( noErr != FSPathMakeRef( pathname, &ref, FALSE ) ) + return FT_THROW( Cannot_Open_Resource ); + + /* at present, no support for dfont format */ + err = FSOpenResourceFile( &ref, 0, NULL, fsRdPerm, res ); + if ( noErr == err ) + return err; + + /* fallback to original resource-fork font */ + *res = FSOpenResFile( &ref, fsRdPerm ); + err = ResError(); + +#else + + OSErr err; + FSSpec spec; + + + if ( noErr != FT_FSPathMakeSpec( pathname, &spec, FALSE ) ) + return FT_THROW( Cannot_Open_Resource ); + + /* at present, no support for dfont format without FSRef */ + /* (see above), try original resource-fork font */ + *res = FSpOpenResFile( &spec, fsRdPerm ); + err = ResError(); + +#endif /* HAVE_FSREF */ + + return err; + } + + + /* Return the file type for given pathname */ + static OSType + get_file_type_from_path( const UInt8* pathname ) + { + +#if HAVE_FSREF + + FSRef ref; + FSCatalogInfo info; + + + if ( noErr != FSPathMakeRef( pathname, &ref, FALSE ) ) + return ( OSType ) 0; + + if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoFinderInfo, &info, + NULL, NULL, NULL ) ) + return ( OSType ) 0; + + return ((FInfo *)(info.finderInfo))->fdType; + +#else + + FSSpec spec; + FInfo finfo; + + + if ( noErr != FT_FSPathMakeSpec( pathname, &spec, FALSE ) ) + return ( OSType ) 0; + + if ( noErr != FSpGetFInfo( &spec, &finfo ) ) + return ( OSType ) 0; + + return finfo.fdType; + +#endif /* HAVE_FSREF */ + + } + + + /* Given a PostScript font name, create the Macintosh LWFN file name. */ + static void + create_lwfn_name( char* ps_name, + Str255 lwfn_file_name ) + { + int max = 5, count = 0; + FT_Byte* p = lwfn_file_name; + FT_Byte* q = (FT_Byte*)ps_name; + + + lwfn_file_name[0] = 0; + + while ( *q ) + { + if ( ft_isupper( *q ) ) + { + if ( count ) + max = 3; + count = 0; + } + if ( count < max && ( ft_isalnum( *q ) || *q == '_' ) ) + { + *++p = *q; + lwfn_file_name[0]++; + count++; + } + q++; + } + } + + + static short + count_faces_sfnt( char* fond_data ) + { + /* The count is 1 greater than the value in the FOND. */ + /* Isn't that cute? :-) */ + + return EndianS16_BtoN( *( (short*)( fond_data + + sizeof ( FamRec ) ) ) ) + 1; + } + + + static short + count_faces_scalable( char* fond_data ) + { + AsscEntry* assoc; + short i, face, face_all; + + + face_all = EndianS16_BtoN( *( (short *)( fond_data + + sizeof ( FamRec ) ) ) ) + 1; + assoc = (AsscEntry*)( fond_data + sizeof ( FamRec ) + 2 ); + face = 0; + + for ( i = 0; i < face_all; i++ ) + { + if ( 0 == EndianS16_BtoN( assoc[i].fontSize ) ) + face++; + } + return face; + } + + + /* Look inside the FOND data, answer whether there should be an SFNT + resource, and answer the name of a possible LWFN Type 1 file. + + Thanks to Paul Miller (paulm@profoundeffects.com) for the fix + to load a face OTHER than the first one in the FOND! + */ + + static void + parse_fond( char* fond_data, + short* have_sfnt, + ResID* sfnt_id, + Str255 lwfn_file_name, + short face_index ) + { + AsscEntry* assoc; + AsscEntry* base_assoc; + FamRec* fond; + + + *sfnt_id = 0; + *have_sfnt = 0; + lwfn_file_name[0] = 0; + + fond = (FamRec*)fond_data; + assoc = (AsscEntry*)( fond_data + sizeof ( FamRec ) + 2 ); + base_assoc = assoc; + + /* the maximum faces in a FOND is 48, size of StyleTable.indexes[] */ + if ( 47 < face_index ) + return; + + /* Let's do a little range checking before we get too excited here */ + if ( face_index < count_faces_sfnt( fond_data ) ) + { + assoc += face_index; /* add on the face_index! */ + + /* if the face at this index is not scalable, + fall back to the first one (old behavior) */ + if ( EndianS16_BtoN( assoc->fontSize ) == 0 ) + { + *have_sfnt = 1; + *sfnt_id = EndianS16_BtoN( assoc->fontID ); + } + else if ( base_assoc->fontSize == 0 ) + { + *have_sfnt = 1; + *sfnt_id = EndianS16_BtoN( base_assoc->fontID ); + } + } + + if ( EndianS32_BtoN( fond->ffStylOff ) ) + { + unsigned char* p = (unsigned char*)fond_data; + StyleTable* style; + unsigned short string_count; + char ps_name[256]; + unsigned char* names[64]; + int i; + + + p += EndianS32_BtoN( fond->ffStylOff ); + style = (StyleTable*)p; + p += sizeof ( StyleTable ); + string_count = EndianS16_BtoN( *(short*)(p) ); + string_count = FT_MIN( 64, string_count ); + p += sizeof ( short ); + + for ( i = 0; i < string_count; i++ ) + { + names[i] = p; + p += names[i][0]; + p++; + } + + { + size_t ps_name_len = (size_t)names[0][0]; + + + if ( ps_name_len != 0 ) + { + ft_memcpy(ps_name, names[0] + 1, ps_name_len); + ps_name[ps_name_len] = 0; + } + if ( style->indexes[face_index] > 1 && + style->indexes[face_index] <= string_count ) + { + unsigned char* suffixes = names[style->indexes[face_index] - 1]; + + + for ( i = 1; i <= suffixes[0]; i++ ) + { + unsigned char* s; + size_t j = suffixes[i] - 1; + + + if ( j < string_count && ( s = names[j] ) != NULL ) + { + size_t s_len = (size_t)s[0]; + + + if ( s_len != 0 && ps_name_len + s_len < sizeof ( ps_name ) ) + { + ft_memcpy( ps_name + ps_name_len, s + 1, s_len ); + ps_name_len += s_len; + ps_name[ps_name_len] = 0; + } + } + } + } + } + + create_lwfn_name( ps_name, lwfn_file_name ); + } + } + + + static FT_Error + lookup_lwfn_by_fond( const UInt8* path_fond, + ConstStr255Param base_lwfn, + UInt8* path_lwfn, + int path_size ) + { + +#if HAVE_FSREF + + FSRef ref, par_ref; + int dirname_len; + + + /* Pathname for FSRef can be in various formats: HFS, HFS+, and POSIX. */ + /* We should not extract parent directory by string manipulation. */ + + if ( noErr != FSPathMakeRef( path_fond, &ref, FALSE ) ) + return FT_THROW( Invalid_Argument ); + + if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone, + NULL, NULL, NULL, &par_ref ) ) + return FT_THROW( Invalid_Argument ); + + if ( noErr != FSRefMakePath( &par_ref, path_lwfn, path_size ) ) + return FT_THROW( Invalid_Argument ); + + if ( ft_strlen( (char *)path_lwfn ) + 1 + base_lwfn[0] > path_size ) + return FT_THROW( Invalid_Argument ); + + /* now we have absolute dirname in path_lwfn */ + if ( path_lwfn[0] == '/' ) + ft_strcat( (char *)path_lwfn, "/" ); + else + ft_strcat( (char *)path_lwfn, ":" ); + + dirname_len = ft_strlen( (char *)path_lwfn ); + ft_strcat( (char *)path_lwfn, (char *)base_lwfn + 1 ); + path_lwfn[dirname_len + base_lwfn[0]] = '\0'; + + if ( noErr != FSPathMakeRef( path_lwfn, &ref, FALSE ) ) + return FT_THROW( Cannot_Open_Resource ); + + if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone, + NULL, NULL, NULL, NULL ) ) + return FT_THROW( Cannot_Open_Resource ); + + return FT_Err_Ok; + +#else + + int i; + FSSpec spec; + + + /* pathname for FSSpec is always HFS format */ + if ( ft_strlen( (char *)path_fond ) > path_size ) + return FT_THROW( Invalid_Argument ); + + ft_strcpy( (char *)path_lwfn, (char *)path_fond ); + + i = ft_strlen( (char *)path_lwfn ) - 1; + while ( i > 0 && ':' != path_lwfn[i] ) + i--; + + if ( i + 1 + base_lwfn[0] > path_size ) + return FT_THROW( Invalid_Argument ); + + if ( ':' == path_lwfn[i] ) + { + ft_strcpy( (char *)path_lwfn + i + 1, (char *)base_lwfn + 1 ); + path_lwfn[i + 1 + base_lwfn[0]] = '\0'; + } + else + { + ft_strcpy( (char *)path_lwfn, (char *)base_lwfn + 1 ); + path_lwfn[base_lwfn[0]] = '\0'; + } + + if ( noErr != FT_FSPathMakeSpec( path_lwfn, &spec, FALSE ) ) + return FT_THROW( Cannot_Open_Resource ); + + return FT_Err_Ok; + +#endif /* HAVE_FSREF */ + + } + + + static short + count_faces( Handle fond, + const UInt8* pathname ) + { + ResID sfnt_id; + short have_sfnt, have_lwfn; + Str255 lwfn_file_name; + UInt8 buff[PATH_MAX]; + FT_Error err; + short num_faces; + + + have_sfnt = have_lwfn = 0; + + HLock( fond ); + parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, 0 ); + + if ( lwfn_file_name[0] ) + { + err = lookup_lwfn_by_fond( pathname, lwfn_file_name, + buff, sizeof ( buff ) ); + if ( !err ) + have_lwfn = 1; + } + + if ( have_lwfn && ( !have_sfnt || PREFER_LWFN ) ) + num_faces = 1; + else + num_faces = count_faces_scalable( *fond ); + + HUnlock( fond ); + return num_faces; + } + + + /* Read Type 1 data from the POST resources inside the LWFN file, + return a PFB buffer. This is somewhat convoluted because the FT2 + PFB parser wants the ASCII header as one chunk, and the LWFN + chunks are often not organized that way, so we glue chunks + of the same type together. */ + static FT_Error + read_lwfn( FT_Memory memory, + ResFileRefNum res, + FT_Byte** pfb_data, + FT_ULong* size ) + { + FT_Error error = FT_Err_Ok; + ResID res_id; + unsigned char *buffer, *p, *size_p = NULL; + FT_ULong total_size = 0; + FT_ULong old_total_size = 0; + FT_ULong post_size, pfb_chunk_size; + Handle post_data; + char code, last_code; + + + UseResFile( res ); + + /* First pass: load all POST resources, and determine the size of */ + /* the output buffer. */ + res_id = 501; + last_code = -1; + + for (;;) + { + post_data = Get1Resource( TTAG_POST, res_id++ ); + if ( post_data == NULL ) + break; /* we are done */ + + code = (*post_data)[0]; + + if ( code != last_code ) + { + if ( code == 5 ) + total_size += 2; /* just the end code */ + else + total_size += 6; /* code + 4 bytes chunk length */ + } + + total_size += GetHandleSize( post_data ) - 2; + last_code = code; + + /* detect integer overflows */ + if ( total_size < old_total_size ) + { + error = FT_ERR( Array_Too_Large ); + goto Error; + } + + old_total_size = total_size; + } + + if ( FT_QALLOC( buffer, (FT_Long)total_size ) ) + goto Error; + + /* Second pass: append all POST data to the buffer, add PFB fields. */ + /* Glue all consecutive chunks of the same type together. */ + p = buffer; + res_id = 501; + last_code = -1; + pfb_chunk_size = 0; + + for (;;) + { + post_data = Get1Resource( TTAG_POST, res_id++ ); + if ( post_data == NULL ) + break; /* we are done */ + + post_size = (FT_ULong)GetHandleSize( post_data ) - 2; + code = (*post_data)[0]; + + if ( code != last_code ) + { + if ( last_code != -1 ) + { + /* we are done adding a chunk, fill in the size field */ + if ( size_p != NULL ) + { + *size_p++ = (FT_Byte)( pfb_chunk_size & 0xFF ); + *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 8 ) & 0xFF ); + *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 16 ) & 0xFF ); + *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 24 ) & 0xFF ); + } + pfb_chunk_size = 0; + } + + *p++ = 0x80; + if ( code == 5 ) + *p++ = 0x03; /* the end */ + else if ( code == 2 ) + *p++ = 0x02; /* binary segment */ + else + *p++ = 0x01; /* ASCII segment */ + + if ( code != 5 ) + { + size_p = p; /* save for later */ + p += 4; /* make space for size field */ + } + } + + ft_memcpy( p, *post_data + 2, post_size ); + pfb_chunk_size += post_size; + p += post_size; + last_code = code; + } + + *pfb_data = buffer; + *size = total_size; + + Error: + CloseResFile( res ); + return error; + } + + + /* Create a new FT_Face from a file spec to an LWFN file. */ + static FT_Error + FT_New_Face_From_LWFN( FT_Library library, + const UInt8* pathname, + FT_Long face_index, + FT_Face* aface ) + { + FT_Byte* pfb_data; + FT_ULong pfb_size; + FT_Error error; + ResFileRefNum res; + + + if ( noErr != FT_FSPathMakeRes( pathname, &res ) ) + return FT_THROW( Cannot_Open_Resource ); + + pfb_data = NULL; + pfb_size = 0; + error = read_lwfn( library->memory, res, &pfb_data, &pfb_size ); + CloseResFile( res ); /* PFB is already loaded, useless anymore */ + if ( error ) + return error; + + return open_face_from_buffer( library, + pfb_data, + pfb_size, + face_index, + "type1", + aface ); + } + + + /* Create a new FT_Face from an SFNT resource, specified by res ID. */ + static FT_Error + FT_New_Face_From_SFNT( FT_Library library, + ResID sfnt_id, + FT_Long face_index, + FT_Face* aface ) + { + Handle sfnt = NULL; + FT_Byte* sfnt_data; + size_t sfnt_size; + FT_Error error = FT_Err_Ok; + FT_Memory memory = library->memory; + int is_cff, is_sfnt_ps; + + + sfnt = GetResource( TTAG_sfnt, sfnt_id ); + if ( sfnt == NULL ) + return FT_THROW( Invalid_Handle ); + + sfnt_size = (FT_ULong)GetHandleSize( sfnt ); + if ( FT_QALLOC( sfnt_data, (FT_Long)sfnt_size ) ) + { + ReleaseResource( sfnt ); + return error; + } + + HLock( sfnt ); + ft_memcpy( sfnt_data, *sfnt, sfnt_size ); + HUnlock( sfnt ); + ReleaseResource( sfnt ); + + is_cff = sfnt_size > 4 && !ft_memcmp( sfnt_data, "OTTO", 4 ); + is_sfnt_ps = sfnt_size > 4 && !ft_memcmp( sfnt_data, "typ1", 4 ); + + if ( is_sfnt_ps ) + { + FT_Stream stream; + + + if ( FT_NEW( stream ) ) + goto Try_OpenType; + + FT_Stream_OpenMemory( stream, sfnt_data, sfnt_size ); + if ( !open_face_PS_from_sfnt_stream( library, + stream, + face_index, + 0, NULL, + aface ) ) + { + FT_Stream_Close( stream ); + FT_FREE( stream ); + FT_FREE( sfnt_data ); + goto Exit; + } + + FT_FREE( stream ); + } + Try_OpenType: + error = open_face_from_buffer( library, + sfnt_data, + sfnt_size, + face_index, + is_cff ? "cff" : "truetype", + aface ); + Exit: + return error; + } + + + /* Create a new FT_Face from a file spec to a suitcase file. */ + static FT_Error + FT_New_Face_From_Suitcase( FT_Library library, + const UInt8* pathname, + FT_Long face_index, + FT_Face* aface ) + { + FT_Error error = FT_ERR( Cannot_Open_Resource ); + ResFileRefNum res_ref; + ResourceIndex res_index; + Handle fond; + short num_faces_in_res; + + + if ( noErr != FT_FSPathMakeRes( pathname, &res_ref ) ) + return FT_THROW( Cannot_Open_Resource ); + + UseResFile( res_ref ); + if ( ResError() ) + return FT_THROW( Cannot_Open_Resource ); + + num_faces_in_res = 0; + for ( res_index = 1; ; ++res_index ) + { + short num_faces_in_fond; + + + fond = Get1IndResource( TTAG_FOND, res_index ); + if ( ResError() ) + break; + + num_faces_in_fond = count_faces( fond, pathname ); + num_faces_in_res += num_faces_in_fond; + + if ( 0 <= face_index && face_index < num_faces_in_fond && error ) + error = FT_New_Face_From_FOND( library, fond, face_index, aface ); + + face_index -= num_faces_in_fond; + } + + CloseResFile( res_ref ); + if ( !error && aface ) + (*aface)->num_faces = num_faces_in_res; + return error; + } + + + /* documentation is in ftmac.h */ + + FT_EXPORT_DEF( FT_Error ) + FT_New_Face_From_FOND( FT_Library library, + Handle fond, + FT_Long face_index, + FT_Face* aface ) + { + short have_sfnt, have_lwfn = 0; + ResID sfnt_id, fond_id; + OSType fond_type; + Str255 fond_name; + Str255 lwfn_file_name; + UInt8 path_lwfn[PATH_MAX]; + OSErr err; + FT_Error error = FT_Err_Ok; + + + /* test for valid `aface' and `library' delayed to */ + /* `FT_New_Face_From_XXX' */ + + GetResInfo( fond, &fond_id, &fond_type, fond_name ); + if ( ResError() != noErr || fond_type != TTAG_FOND ) + return FT_THROW( Invalid_File_Format ); + + HLock( fond ); + parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, face_index ); + HUnlock( fond ); + + if ( lwfn_file_name[0] ) + { + ResFileRefNum res; + + + res = HomeResFile( fond ); + if ( noErr != ResError() ) + goto found_no_lwfn_file; + +#if HAVE_FSREF + + { + UInt8 path_fond[PATH_MAX]; + FSRef ref; + + + err = FSGetForkCBInfo( res, kFSInvalidVolumeRefNum, + NULL, NULL, NULL, &ref, NULL ); + if ( noErr != err ) + goto found_no_lwfn_file; + + err = FSRefMakePath( &ref, path_fond, sizeof ( path_fond ) ); + if ( noErr != err ) + goto found_no_lwfn_file; + + error = lookup_lwfn_by_fond( path_fond, lwfn_file_name, + path_lwfn, sizeof ( path_lwfn ) ); + if ( !error ) + have_lwfn = 1; + } + +#elif HAVE_FSSPEC + + { + UInt8 path_fond[PATH_MAX]; + FCBPBRec pb; + Str255 fond_file_name; + FSSpec spec; + + + FT_MEM_SET( &spec, 0, sizeof ( FSSpec ) ); + FT_MEM_SET( &pb, 0, sizeof ( FCBPBRec ) ); + + pb.ioNamePtr = fond_file_name; + pb.ioVRefNum = 0; + pb.ioRefNum = res; + pb.ioFCBIndx = 0; + + err = PBGetFCBInfoSync( &pb ); + if ( noErr != err ) + goto found_no_lwfn_file; + + err = FSMakeFSSpec( pb.ioFCBVRefNum, pb.ioFCBParID, + fond_file_name, &spec ); + if ( noErr != err ) + goto found_no_lwfn_file; + + err = FT_FSpMakePath( &spec, path_fond, sizeof ( path_fond ) ); + if ( noErr != err ) + goto found_no_lwfn_file; + + error = lookup_lwfn_by_fond( path_fond, lwfn_file_name, + path_lwfn, sizeof ( path_lwfn ) ); + if ( !error ) + have_lwfn = 1; + } + +#endif /* HAVE_FSREF, HAVE_FSSPEC */ + + } + + if ( have_lwfn && ( !have_sfnt || PREFER_LWFN ) ) + error = FT_New_Face_From_LWFN( library, + path_lwfn, + face_index, + aface ); + else + error = FT_ERR( Unknown_File_Format ); + + found_no_lwfn_file: + if ( have_sfnt && error ) + error = FT_New_Face_From_SFNT( library, + sfnt_id, + face_index, + aface ); + + return error; + } + + + /* Common function to load a new FT_Face from a resource file. */ + static FT_Error + FT_New_Face_From_Resource( FT_Library library, + const UInt8* pathname, + FT_Long face_index, + FT_Face* aface ) + { + OSType file_type; + FT_Error error; + + + /* LWFN is a (very) specific file format, check for it explicitly */ + file_type = get_file_type_from_path( pathname ); + if ( file_type == TTAG_LWFN ) + return FT_New_Face_From_LWFN( library, pathname, face_index, aface ); + + /* Otherwise the file type doesn't matter (there are more than */ + /* `FFIL' and `tfil'). Just try opening it as a font suitcase; */ + /* if it works, fine. */ + + error = FT_New_Face_From_Suitcase( library, pathname, face_index, aface ); + if ( !error ) + return error; + + /* let it fall through to normal loader (.ttf, .otf, etc.); */ + /* we signal this by returning no error and no FT_Face */ + *aface = NULL; + return 0; + } + + + /*************************************************************************/ + /* */ + /* */ + /* FT_New_Face */ + /* */ + /* */ + /* This is the Mac-specific implementation of FT_New_Face. In */ + /* addition to the standard FT_New_Face() functionality, it also */ + /* accepts pathnames to Mac suitcase files. For further */ + /* documentation see the original FT_New_Face() in freetype.h. */ + /* */ + FT_EXPORT_DEF( FT_Error ) + FT_New_Face( FT_Library library, + const char* pathname, + FT_Long face_index, + FT_Face* aface ) + { + FT_Open_Args args; + FT_Error error; + + + /* test for valid `library' and `aface' delayed to FT_Open_Face() */ + if ( !pathname ) + return FT_THROW( Invalid_Argument ); + + *aface = NULL; + + /* try resourcefork based font: LWFN, FFIL */ + error = FT_New_Face_From_Resource( library, (UInt8 *)pathname, + face_index, aface ); + if ( error || *aface ) + return error; + + /* let it fall through to normal loader (.ttf, .otf, etc.) */ + args.flags = FT_OPEN_PATHNAME; + args.pathname = (char*)pathname; + return FT_Open_Face( library, &args, face_index, aface ); + } + + + /*************************************************************************/ + /* */ + /* */ + /* FT_New_Face_From_FSRef */ + /* */ + /* */ + /* FT_New_Face_From_FSRef is identical to FT_New_Face except it */ + /* accepts an FSRef instead of a path. */ + /* */ + /* This function is deprecated because Carbon data types (FSRef) */ + /* are not cross-platform, and thus not suitable for the FreeType API. */ + FT_EXPORT_DEF( FT_Error ) + FT_New_Face_From_FSRef( FT_Library library, + const FSRef* ref, + FT_Long face_index, + FT_Face* aface ) + { + +#if !HAVE_FSREF + + FT_UNUSED( library ); + FT_UNUSED( ref ); + FT_UNUSED( face_index ); + FT_UNUSED( aface ); + + return FT_THROW( Unimplemented_Feature ); + +#else + + FT_Error error; + FT_Open_Args args; + OSErr err; + UInt8 pathname[PATH_MAX]; + + + /* test for valid `library' and `aface' delayed to `FT_Open_Face' */ + + if ( !ref ) + return FT_THROW( Invalid_Argument ); + + err = FSRefMakePath( ref, pathname, sizeof ( pathname ) ); + if ( err ) + error = FT_ERR( Cannot_Open_Resource ); + + error = FT_New_Face_From_Resource( library, pathname, face_index, aface ); + if ( error || *aface ) + return error; + + /* fallback to datafork font */ + args.flags = FT_OPEN_PATHNAME; + args.pathname = (char*)pathname; + return FT_Open_Face( library, &args, face_index, aface ); + +#endif /* HAVE_FSREF */ + + } + + + /*************************************************************************/ + /* */ + /* */ + /* FT_New_Face_From_FSSpec */ + /* */ + /* */ + /* FT_New_Face_From_FSSpec is identical to FT_New_Face except it */ + /* accepts an FSSpec instead of a path. */ + /* */ + /* This function is deprecated because Carbon data types (FSSpec) */ + /* are not cross-platform, and thus not suitable for the FreeType API. */ + FT_EXPORT_DEF( FT_Error ) + FT_New_Face_From_FSSpec( FT_Library library, + const FSSpec* spec, + FT_Long face_index, + FT_Face* aface ) + { + +#if HAVE_FSREF + + FSRef ref; + + + if ( !spec || FSpMakeFSRef( spec, &ref ) != noErr ) + return FT_THROW( Invalid_Argument ); + else + return FT_New_Face_From_FSRef( library, &ref, face_index, aface ); + +#elif HAVE_FSSPEC + + FT_Error error; + FT_Open_Args args; + OSErr err; + UInt8 pathname[PATH_MAX]; + + + if ( !spec ) + return FT_THROW( Invalid_Argument ); + + err = FT_FSpMakePath( spec, pathname, sizeof ( pathname ) ); + if ( err ) + error = FT_ERR( Cannot_Open_Resource ); + + error = FT_New_Face_From_Resource( library, pathname, face_index, aface ); + if ( error || *aface ) + return error; + + /* fallback to datafork font */ + args.flags = FT_OPEN_PATHNAME; + args.pathname = (char*)pathname; + return FT_Open_Face( library, &args, face_index, aface ); + +#else + + FT_UNUSED( library ); + FT_UNUSED( spec ); + FT_UNUSED( face_index ); + FT_UNUSED( aface ); + + return FT_THROW( Unimplemented_Feature ); + +#endif /* HAVE_FSREF, HAVE_FSSPEC */ + + } + +#endif /* FT_MACINTOSH */ + + +/* END */ diff --git a/local/recipes/libs/freetype2/source/builds/meson/extract_freetype_version.py b/local/recipes/libs/freetype2/source/builds/meson/extract_freetype_version.py new file mode 100644 index 0000000000..2388962039 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/meson/extract_freetype_version.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +"""Extract the FreeType version numbers from ``. + +This script parses the header to extract the version number defined there. +By default, the full dotted version number is printed, but `--major`, +`--minor` or `--patch` can be used to only print one of these values +instead. +""" + +from __future__ import print_function + +import argparse +import os +import re +import sys + +# Expected input: +# +# ... +# #define FREETYPE_MAJOR 2 +# #define FREETYPE_MINOR 10 +# #define FREETYPE_PATCH 2 +# ... + +RE_MAJOR = re.compile(r"^ \#define \s+ FREETYPE_MAJOR \s+ (.*) $", re.X) +RE_MINOR = re.compile(r"^ \#define \s+ FREETYPE_MINOR \s+ (.*) $", re.X) +RE_PATCH = re.compile(r"^ \#define \s+ FREETYPE_PATCH \s+ (.*) $", re.X) + + +def parse_freetype_header(header): + major = None + minor = None + patch = None + + for line in header.splitlines(): + line = line.rstrip() + m = RE_MAJOR.match(line) + if m: + assert major == None, "FREETYPE_MAJOR appears more than once!" + major = m.group(1) + continue + + m = RE_MINOR.match(line) + if m: + assert minor == None, "FREETYPE_MINOR appears more than once!" + minor = m.group(1) + continue + + m = RE_PATCH.match(line) + if m: + assert patch == None, "FREETYPE_PATCH appears more than once!" + patch = m.group(1) + continue + + assert ( + major and minor and patch + ), "This header is missing one of FREETYPE_MAJOR, FREETYPE_MINOR or FREETYPE_PATCH!" + + return (major, minor, patch) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + + group = parser.add_mutually_exclusive_group() + group.add_argument( + "--major", + action="store_true", + help="Only print the major version number.", + ) + group.add_argument( + "--minor", + action="store_true", + help="Only print the minor version number.", + ) + group.add_argument( + "--patch", + action="store_true", + help="Only print the patch version number.", + ) + + parser.add_argument( + "input", + metavar="FREETYPE_H", + help="The input freetype.h header to parse.", + ) + + args = parser.parse_args() + with open(args.input) as f: + header = f.read() + + version = parse_freetype_header(header) + + if args.major: + print(version[0]) + elif args.minor: + print(version[1]) + elif args.patch: + print(version[2]) + else: + print("%s.%s.%s" % version) + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/local/recipes/libs/freetype2/source/builds/meson/extract_libtool_version.py b/local/recipes/libs/freetype2/source/builds/meson/extract_libtool_version.py new file mode 100644 index 0000000000..4ffdb1a0b6 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/meson/extract_libtool_version.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +"""Extract the libtool version from `configure.raw`. + +This script parses the `configure.raw` file to extract the libtool version +number. By default, the full dotted version number is printed, but +`--major`, `--minor` or `--patch` can be used to only print one of these +values instead. +""" + +from __future__ import print_function + +import argparse +import os +import re +import sys + +# Expected input: +# +# ... +# version_info='23:2:17' +# ... + +RE_VERSION_INFO = re.compile(r"^version_info='(\d+):(\d+):(\d+)'") + + +def parse_configure_raw(header): + major = None + minor = None + patch = None + + for line in header.splitlines(): + line = line.rstrip() + m = RE_VERSION_INFO.match(line) + if m: + assert major == None, "version_info appears more than once!" + major = m.group(1) + minor = m.group(2) + patch = m.group(3) + continue + + assert ( + major and minor and patch + ), "This input file is missing a version_info definition!" + + return (major, minor, patch) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + + group = parser.add_mutually_exclusive_group() + group.add_argument( + "--major", + action="store_true", + help="Only print the major version number.", + ) + group.add_argument( + "--minor", + action="store_true", + help="Only print the minor version number.", + ) + group.add_argument( + "--patch", + action="store_true", + help="Only print the patch version number.", + ) + group.add_argument( + "--soversion", + action="store_true", + help="Only print the libtool library suffix.", + ) + + parser.add_argument( + "input", + metavar="CONFIGURE_RAW", + help="The input configure.raw file to parse.", + ) + + args = parser.parse_args() + with open(args.input) as f: + raw_file = f.read() + + version = parse_configure_raw(raw_file) + + if args.major: + print(version[0]) + elif args.minor: + print(version[1]) + elif args.patch: + print(version[2]) + elif args.soversion: + # Convert libtool version_info to the library suffix. + # (current,revision, age) -> (current - age, age, revision) + print( + "%d.%s.%s" + % (int(version[0]) - int(version[2]), version[2], version[1]) + ) + else: + print("%s.%s.%s" % version) + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/local/recipes/libs/freetype2/source/builds/meson/generate_reference_docs.py b/local/recipes/libs/freetype2/source/builds/meson/generate_reference_docs.py new file mode 100644 index 0000000000..3022e0758c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/meson/generate_reference_docs.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +"""Generate FreeType reference documentation.""" + +from __future__ import print_function + +import argparse +import glob +import os +import subprocess +import sys + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + + parser.add_argument( + "--input-dir", + required=True, + help="Top-level FreeType source directory.", + ) + + parser.add_argument( + "--version", required=True, help='FreeType version (e.g. "2.x.y").' + ) + + parser.add_argument( + "--output-dir", required=True, help="Output directory." + ) + + args = parser.parse_args() + + # Get the list of input files of interest. + include_dir = os.path.join(args.input_dir, "include") + include_config_dir = os.path.join(include_dir, "config") + include_cache_dir = os.path.join(include_dir, "cache") + + all_headers = ( + glob.glob(os.path.join(args.input_dir, "include", "freetype", "*.h")) + + glob.glob( + os.path.join( + args.input_dir, "include", "freetype", "config", "*.h" + ) + ) + + glob.glob( + os.path.join( + args.input_dir, "include", "freetype", "cache", "*.h" + ) + ) + ) + + if not os.path.exists(args.output_dir): + os.makedirs(args.output_dir) + else: + assert os.path.isdir(args.output_dir), ( + "Not a directory: " + args.output_dir + ) + + cmds = [ + sys.executable, + "-m", + "docwriter", + "--prefix=ft2", + "--title=FreeType-" + args.version, + "--site=reference", + "--output=" + args.output_dir, + ] + all_headers + + print("Running docwriter...") + subprocess.check_call(cmds) + + print("Building static site...") + subprocess.check_call( + [sys.executable, "-m", "mkdocs", "build"], cwd=args.output_dir + ) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/local/recipes/libs/freetype2/source/builds/meson/parse_modules_cfg.py b/local/recipes/libs/freetype2/source/builds/meson/parse_modules_cfg.py new file mode 100644 index 0000000000..40d30323ba --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/meson/parse_modules_cfg.py @@ -0,0 +1,177 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +"""Parse modules.cfg and dump its output either as ftmodule.h or a list of +base extensions. +""" + +from __future__ import print_function + +import argparse +import os +import re +import sys + +# Expected input: +# +# ... +# FONT_MODULES += +# HINTING_MODULES += +# RASTER_MODULES += +# AUX_MODULES += +# BASE_EXTENSIONS += +# ... + + +def parse_modules_cfg(input_file): + + lists = { + "FONT_MODULES": [], + "HINTING_MODULES": [], + "RASTER_MODULES": [], + "AUX_MODULES": [], + "BASE_EXTENSIONS": [], + } + + for line in input_file.splitlines(): + line = line.rstrip() + # Ignore empty lines and those that start with a comment. + if not line or line[0] == "#": + continue + + items = line.split() + assert len(items) == 3 and items[1] == "+=", ( + "Unexpected input line [%s]" % line + ) + assert items[0] in lists, ( + "Unexpected configuration variable name " + items[0] + ) + + lists[items[0]].append(items[2]) + + return lists + + +def generate_ftmodule(lists): + result = "/* This is a generated file. */\n" + for driver in lists["FONT_MODULES"]: + if driver == "sfnt": # Special case for the sfnt 'driver'. + result += "FT_USE_MODULE( FT_Module_Class, sfnt_module_class )\n" + continue + + name = { + "truetype": "tt", + "type1": "t1", + "cid": "t1cid", + "type42": "t42", + "winfonts": "winfnt", + }.get(driver, driver) + result += ( + "FT_USE_MODULE( FT_Driver_ClassRec, %s_driver_class )\n" % name + ) + + for module in lists["HINTING_MODULES"]: + result += ( + "FT_USE_MODULE( FT_Module_Class, %s_module_class )\n" % module + ) + + for module in lists["RASTER_MODULES"]: + names = { + "raster": ("ft_raster1",), + "smooth": ("ft_smooth",), + "svg": ("ft_svg",), + "sdf": ("ft_sdf", "ft_bitmap_sdf"), + }.get(module) + for name in names: + result += ( + "FT_USE_MODULE( FT_Renderer_Class, %s_renderer_class )\n" % name + ) + + for module in lists["AUX_MODULES"]: + if module in ("psaux", "psnames", "otvalid", "gxvalid"): + name = { + "gxvalid": "gxv", + "otvalid": "otv", + }.get(module, module) + result += ( + "FT_USE_MODULE( FT_Module_Class, %s_module_class )\n" % name + ) + + result += "/* EOF */\n" + return result + + +def generate_main_modules(lists): + return "\n".join( + lists["FONT_MODULES"] + + lists["HINTING_MODULES"] + + lists["RASTER_MODULES"] + ) + + +def generate_aux_modules(lists): + return "\n".join(lists["AUX_MODULES"]) + + +def generate_base_extensions(lists): + return "\n".join(lists["BASE_EXTENSIONS"]) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + + parser.add_argument( + "--format", + required=True, + choices=( + "ftmodule.h", + "main-modules", + "aux-modules", + "base-extensions-list", + ), + help="Select output format.", + ) + + parser.add_argument( + "input", + metavar="CONFIGURE_RAW", + help="The input configure.raw file to parse.", + ) + + parser.add_argument("--output", help="Output file (default is stdout).") + + args = parser.parse_args() + with open(args.input) as f: + input_data = f.read() + + lists = parse_modules_cfg(input_data) + + if args.format == "ftmodule.h": + result = generate_ftmodule(lists) + elif args.format == "main-modules": + result = generate_main_modules(lists) + elif args.format == "aux-modules": + result = generate_aux_modules(lists) + elif args.format == "base-extensions-list": + result = generate_base_extensions(lists) + else: + assert False, "Invalid output format!" + + if args.output: + with open(args.output, "w") as f: + f.write(result) + else: + print(result) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/local/recipes/libs/freetype2/source/builds/meson/process_ftoption_h.py b/local/recipes/libs/freetype2/source/builds/meson/process_ftoption_h.py new file mode 100644 index 0000000000..d5a217268f --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/meson/process_ftoption_h.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +"""Toggle settings in `ftoption.h` file based on command-line arguments. + +This script takes an `ftoption.h` file as input and rewrites +`#define`/`#undef` lines in it based on `--enable=CONFIG_VARNAME` or +`--disable=CONFIG_VARNAME` arguments passed to it, where `CONFIG_VARNAME` is +configuration variable name, such as `FT_CONFIG_OPTION_USE_LZW`, that may +appear in the file. + +Note that if one of `CONFIG_VARNAME` is not found in the input file, this +script exits with an error message listing the missing variable names. +""" + +import argparse +import os +import re +import sys + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + + parser.add_argument( + "input", metavar="FTOPTION_H", help="Path to input ftoption.h file." + ) + + parser.add_argument("--output", help="Output to file instead of stdout.") + + parser.add_argument( + "--enable", + action="append", + default=[], + help="Enable a given build option (e.g. FT_CONFIG_OPTION_USE_LZW).", + ) + + parser.add_argument( + "--disable", + action="append", + default=[], + help="Disable a given build option.", + ) + + args = parser.parse_args() + + common_options = set(args.enable) & set(args.disable) + if common_options: + parser.error( + "Options cannot be both enabled and disabled: %s" + % sorted(common_options) + ) + return 1 + + with open(args.input) as f: + input_file = f.read() + + options_seen = set() + + new_lines = [] + for line in input_file.splitlines(): + # Expected formats: + # #define + # /* #define */ + # #undef + line = line.rstrip() + if line.startswith("/* #define ") and line.endswith(" */"): + option_name = line[11:-3].strip() + option_enabled = False + elif line.startswith("#define "): + option_name = line[8:].strip() + option_enabled = True + elif line.startswith("#undef "): + option_name = line[7:].strip() + option_enabled = False + else: + new_lines.append(line) + continue + + options_seen.add(option_name) + if option_enabled and option_name in args.disable: + line = "#undef " + option_name + elif not option_enabled and option_name in args.enable: + line = "#define " + option_name + new_lines.append(line) + + result = "\n".join(new_lines) + "\n" + + # Sanity check that all command-line options were actually processed. + cmdline_options = set(args.enable) | set(args.disable) + assert cmdline_options.issubset( + options_seen + ), "Could not find options in input file: " + ", ".join( + sorted(cmdline_options - options_seen) + ) + + if args.output: + with open(args.output, "w") as f: + f.write(result) + else: + print(result) + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/local/recipes/libs/freetype2/source/builds/modules.mk b/local/recipes/libs/freetype2/source/builds/modules.mk new file mode 100644 index 0000000000..bcc61f09f9 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/modules.mk @@ -0,0 +1,79 @@ +# +# FreeType 2 modules sub-Makefile +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY +# OTHER MAKEFILES. + + +# This file is in charge of handling the generation of the modules list +# file. + + +# Build the modules list. +# +$(FTMODULE_H): $(MODULES_CFG) + $(FTMODULE_H_INIT) + $(FTMODULE_H_CREATE) + $(FTMODULE_H_DONE) + +ifneq ($(findstring $(PLATFORM),dos windows os2),) + OPEN_MODULE := @echo$(space) + CLOSE_MODULE := >> $(subst /,$(SEP),$(FTMODULE_H)) + REMOVE_MODULE := @-$(DELETE) $(subst /,$(SEP),$(FTMODULE_H)) +else + OPEN_MODULE := @echo " + CLOSE_MODULE := " >> $(FTMODULE_H) + REMOVE_MODULE := @-$(DELETE) $(FTMODULE_H) +endif + + +define FTMODULE_H_INIT +$(REMOVE_MODULE) +$(info Generating modules list in $(FTMODULE_H)...) +$(OPEN_MODULE)/* This is a generated file. */$(CLOSE_MODULE) +endef + +# It is no mistake that the final closing parenthesis is on the +# next line -- it produces proper newlines during the expansion +# of `foreach'. +# +define FTMODULE_H_CREATE +$(foreach COMMAND,$(FTMODULE_H_COMMANDS),$($(COMMAND)) +) +endef + +define FTMODULE_H_DONE +$(OPEN_MODULE)/* EOF */$(CLOSE_MODULE) +$(info done.) +endef + + +# $(OPEN_DRIVER) & $(CLOSE_DRIVER) are used to specify a given font driver +# in the `module.mk' rules file. +# +OPEN_DRIVER := $(OPEN_MODULE)FT_USE_MODULE( +CLOSE_DRIVER := )$(CLOSE_MODULE) + +ECHO_DRIVER := @echo "* module:$(space) +ECHO_DRIVER_DESC := ( +ECHO_DRIVER_DONE := )" + +# Each `module.mk' in the `src/*' subdirectories adds a variable with +# commands to $(FTMODULE_H_COMMANDS). Note that we can't use SRC_DIR here. +# +-include $(patsubst %,$(TOP_DIR)/src/%/module.mk,$(MODULES)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/os2/detect.mk b/local/recipes/libs/freetype2/source/builds/os2/detect.mk new file mode 100644 index 0000000000..dfd1534456 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/os2/detect.mk @@ -0,0 +1,81 @@ +# +# FreeType 2 configuration file to detect an OS/2 host platform. +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +.PHONY: setup + + +ifeq ($(PLATFORM),ansi) + + ifdef OS2_SHELL + + PLATFORM := os2 + + endif # test OS2_SHELL +endif + +ifeq ($(PLATFORM),os2) + + COPY := copy + DELETE := del + CAT := type + SEP := $(BACKSLASH) + + # gcc-emx by default + CONFIG_FILE := os2-gcc.mk + + # additionally, we provide hooks for various other compilers + # + ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ + CONFIG_FILE := os2-icc.mk + CC := icc + + .PHONY: visualage + visualage: setup + @cd . + endif + + ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ + CONFIG_FILE := os2-wat.mk + CC := wcc386 + + .PHONY: watcom + watcom: setup + @cd . + endif + + ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C++ 32-bit + CONFIG_FILE := os2-bcc.mk + CC := bcc32 + + .PHONY: borlandc + borlandc: setup + @cd . + endif + + ifneq ($(findstring devel,$(MAKECMDGOALS)),) # development target + CONFIG_FILE := os2-dev.mk + CC := gcc + + .PHONY: devel + devel: setup + @cd . + endif + + setup: std_setup + +endif # test PLATFORM os2 + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/os2/os2-def.mk b/local/recipes/libs/freetype2/source/builds/os2/os2-def.mk new file mode 100644 index 0000000000..8f7b7d49d9 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/os2/os2-def.mk @@ -0,0 +1,48 @@ +# +# FreeType 2 OS/2 specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +DELETE := del +CAT := type +SEP := $(strip \ ) +PLATFORM_DIR := $(TOP_DIR)/builds/os2 +PLATFORM := os2 + +# This is used for `make refdoc' and `make refdoc-venv' +# +BIN := Scripts + +# The executable file extension (for tools), *with* leading dot. +# +E := .exe + +# The directory where all library files are placed. +# +# By default, this is the same as $(OBJ_DIR); however, this can be changed +# to suit particular needs. +# +LIB_DIR := $(OBJ_DIR) + +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. +# +LIBRARY := $(PROJECT) + + +# The NO_OUTPUT macro is used to ignore the output of commands. +# +NO_OUTPUT = 2> nul + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/os2/os2-dev.mk b/local/recipes/libs/freetype2/source/builds/os2/os2-dev.mk new file mode 100644 index 0000000000..de5d4c9067 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/os2/os2-dev.mk @@ -0,0 +1,30 @@ +# +# FreeType 2 configuration rules for OS/2 + GCC +# +# Development version without optimizations. +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +DEVEL_DIR := $(TOP_DIR)/devel + +# include OS/2-specific definitions +include $(TOP_DIR)/builds/os2/os2-def.mk + +# include gcc-specific definitions +include $(TOP_DIR)/builds/compiler/gcc-dev.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/os2/os2-gcc.mk b/local/recipes/libs/freetype2/source/builds/os2/os2-gcc.mk new file mode 100644 index 0000000000..db681adbfe --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/os2/os2-gcc.mk @@ -0,0 +1,26 @@ +# +# FreeType 2 configuration rules for the OS/2 + gcc +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# include OS/2-specific definitions +include $(TOP_DIR)/builds/os2/os2-def.mk + +# include gcc-specific definitions +include $(TOP_DIR)/builds/compiler/gcc.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/symbian/bld.inf b/local/recipes/libs/freetype2/source/builds/symbian/bld.inf new file mode 100644 index 0000000000..2f28097e4c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/symbian/bld.inf @@ -0,0 +1,72 @@ +// +// FreeType 2 project for the symbian platform +// + +// Copyright (C) 2008-2026 by +// David Turner, Robert Wilhelm, and Werner Lemberg. +// +// This file is part of the FreeType project, and may only be used, modified, +// and distributed under the terms of the FreeType project license, +// LICENSE.TXT. By continuing to use, modify, or distribute this file you +// indicate that you have read the license and understand and accept it +// fully. + +PRJ_PLATFORMS +DEFAULT + +PRJ_MMPFILES +freetype.mmp + +PRJ_EXPORTS +../../include/freetype/ft2build.h +../../include/freetype/config/ftconfig.h config/ftconfig.h +../../include/freetype/config/ftheader.h config/ftheader.h +../../include/freetype/config/ftmodule.h config/ftmodule.h +../../include/freetype/config/ftoption.h config/ftoption.h +../../include/freetype/config/ftstdlib.h config/ftstdlib.h +../../include/freetype/freetype.h freetype.h +../../include/freetype/ftadvanc.h ftadvanc.h +../../include/freetype/ftautoh.h ftautoh.h +../../include/freetype/ftbbox.h ftbbox.h +../../include/freetype/ftbdf.h ftbdf.h +../../include/freetype/ftbitmap.h ftbitmap.h +../../include/freetype/ftbzip2.h ftbzip2.h +../../include/freetype/ftcache.h ftcache.h +../../include/freetype/ftcffdrv.h ftcffdrv.h +../../include/freetype/ftcid.h ftcid.h +../../include/freetype/fterrdef.h fterrdef.h +../../include/freetype/fterrors.h fterrors.h +../../include/freetype/ftfntfmt.h ftfntfmt.h +../../include/freetype/ftgasp.h ftgasp.h +../../include/freetype/ftglyph.h ftglyph.h +../../include/freetype/ftgxval.h ftgxval.h +../../include/freetype/ftgzip.h ftgzip.h +../../include/freetype/ftimage.h ftimage.h +../../include/freetype/ftincrem.h ftincrem.h +../../include/freetype/ftlcdfil.h ftlcdfil.h +../../include/freetype/ftlist.h ftlist.h +../../include/freetype/ftlzw.h ftlzw.h +../../include/freetype/ftmac.h ftmac.h +../../include/freetype/ftmm.h ftmm.h +../../include/freetype/ftmodapi.h ftmodapi.h +../../include/freetype/ftmoderr.h ftmoderr.h +../../include/freetype/ftotval.h ftotval.h +../../include/freetype/ftoutln.h ftoutln.h +../../include/freetype/ftparams.h ftparams.h +../../include/freetype/ftpcfdrv.h ftpcfdrv.h +../../include/freetype/ftpfr.h ftpfr.h +../../include/freetype/ftrender.h ftrender.h +../../include/freetype/ftsizes.h ftsizes.h +../../include/freetype/ftsnames.h ftsnames.h +../../include/freetype/ftstroke.h ftstroke.h +../../include/freetype/ftsynth.h ftsynth.h +../../include/freetype/ftsystem.h ftsystem.h +../../include/freetype/ftt1drv.h ftt1drv.h +../../include/freetype/fttrigon.h fttrigon.h +../../include/freetype/ftttdrv.h ftttdrv.h +../../include/freetype/fttypes.h fttypes.h +../../include/freetype/ftwinfnt.h ftwinfnt.h +../../include/freetype/t1tables.h t1tables.h +../../include/freetype/ttnameid.h ttnameid.h +../../include/freetype/tttables.h tttables.h +../../include/freetype/tttags.h tttags.h diff --git a/local/recipes/libs/freetype2/source/builds/symbian/freetype.mmp b/local/recipes/libs/freetype2/source/builds/symbian/freetype.mmp new file mode 100644 index 0000000000..03490acada --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/symbian/freetype.mmp @@ -0,0 +1,146 @@ +// +// FreeType 2 makefile for the symbian platform +// + +// Copyright (C) 2008-2026 by +// David Turner, Robert Wilhelm, and Werner Lemberg. +// +// This file is part of the FreeType project, and may only be used, modified, +// and distributed under the terms of the FreeType project license, +// LICENSE.TXT. By continuing to use, modify, or distribute this file you +// indicate that you have read the license and understand and accept it +// fully. + +target freetype.lib +targettype lib + +macro NDEBUG +macro FT2_BUILD_LIBRARY + +sourcepath ..\..\src\autofit + +source autofit.c + +sourcepath ..\..\src\base + +source ftbase.c +source ftbbox.c +source ftbdf.c +source ftbitmap.c +source ftcid.c +source ftfstype.c +source ftgasp.c +source ftglyph.c +source ftgxval.c +source ftinit.c +source ftmm.c +source ftotval.c +source ftpatent.c +source ftpfr.c +source ftstroke.c +source ftsynth.c +source ftsystem.c +source fttype1.c +source ftwinfnt.c + +sourcepath ..\..\src\bdf + +source bdf.c + +sourcepath ..\..\src\bzip2 + +source ftbzip2.c + +sourcepath ..\..\src\cache + +source ftcache.c + +sourcepath ..\..\src\cff + +source cff.c + +sourcepath ..\..\src\cid + +source type1cid.c + +sourcepath ..\..\src\gzip + +source ftgzip.c + +sourcepath ..\..\src\lzw + +source ftlzw.c + +sourcepath ..\..\src\pcf + +source pcf.c + +sourcepath ..\..\src\pfr + +source pfr.c + +sourcepath ..\..\src\psaux + +source psaux.c + +sourcepath ..\..\src\pshinter + +source pshinter.c + +sourcepath ..\..\src\psnames + +source psmodule.c + +sourcepath ..\..\src\raster + +source raster.c + +sourcepath ..\..\src\sfnt + +source sfnt.c + +sourcepath ..\..\src\smooth + +source smooth.c + +sourcepath ..\..\src\truetype + +source truetype.c + +sourcepath ..\..\src\type1 + +source type1.c + +sourcepath ..\..\src\type42 + +source type42.c + +sourcepath ..\..\src\winfonts + +source winfnt.c + + +systeminclude ..\..\include +systeminclude \epoc32\include\stdapis +userinclude ..\..\src\autofit +userinclude ..\..\src\bdf +userinclude ..\..\src\bzip2 +userinclude ..\..\src\cache +userinclude ..\..\src\cff +userinclude ..\..\src\cid +userinclude ..\..\src\gxvalid +userinclude ..\..\src\gzip +userinclude ..\..\src\lzw +userinclude ..\..\src\otvalid +userinclude ..\..\src\pcf +userinclude ..\..\src\pfr +userinclude ..\..\src\psaux +userinclude ..\..\src\pshinter +userinclude ..\..\src\psnames +userinclude ..\..\src\raster +userinclude ..\..\src\sfnt +userinclude ..\..\src\smooth +userinclude ..\..\src\truetype +userinclude ..\..\src\type1 +userinclude ..\..\src\type42 +userinclude ..\..\src\winfonts diff --git a/local/recipes/libs/freetype2/source/builds/toplevel.mk b/local/recipes/libs/freetype2/source/builds/toplevel.mk new file mode 100644 index 0000000000..aaace59206 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/toplevel.mk @@ -0,0 +1,319 @@ +# +# FreeType build system -- top-level sub-Makefile +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# This file is designed for GNU Make, do not use it with another Make tool! +# +# It works as follows: +# +# - When invoked for the first time, this Makefile includes the rules found +# in `PROJECT/builds/detect.mk'. They are in charge of detecting the +# current platform. +# +# A summary of the detection is displayed, and the file `config.mk' is +# created in the current directory. +# +# - When invoked later, this Makefile includes the rules found in +# `config.mk'. This sub-Makefile defines some system-specific variables +# (like compiler, compilation flags, object suffix, etc.), then includes +# the rules found in `PROJECT/builds/PROJECT.mk', used to build the +# library. +# +# See the comments in `builds/detect.mk' and `builds/PROJECT.mk' for more +# details on host platform detection and library builds. + + +# First of all, check whether we have `$(value ...)'. We do this by testing +# for `$(eval ...)' which has been introduced in the same GNU make version. + +eval_available := +$(eval eval_available := T) +ifneq ($(eval_available),T) + $(error FreeType's build system needs a Make program which supports $$(value)) +endif + + +.PHONY: all dist distclean modules setup + + +# The `space' variable is used to avoid trailing spaces in defining the +# `T' variable later. +# +empty := +space := $(empty) $(empty) + + +# The main configuration file, defining the `XXX_MODULES' variables. We +# prefer a `modules.cfg' file in OBJ_DIR over TOP_DIR. +# +ifndef MODULES_CFG + MODULES_CFG := $(TOP_DIR)/modules.cfg + ifneq ($(wildcard $(OBJ_DIR)/modules.cfg),) + MODULES_CFG := $(OBJ_DIR)/modules.cfg + endif +endif + + +# FTMODULE_H, as its name suggests, indicates where the FreeType module +# class file resides. +# +FTMODULE_H ?= $(OBJ_DIR)/ftmodule.h + + +include $(MODULES_CFG) + + +# The list of modules we are using. +# +MODULES := $(FONT_MODULES) \ + $(HINTING_MODULES) \ + $(RASTER_MODULES) \ + $(AUX_MODULES) + + +CONFIG_MK ?= config.mk + +# If no configuration sub-makefile is present, or if `setup' is the target +# to be built, run the auto-detection rules to figure out which +# configuration rules file to use. +# +# Note that the configuration file is put in the current directory, which is +# not necessarily $(TOP_DIR). + +# If `config.mk' is not present, set `check_platform'. +# +ifeq ($(wildcard $(CONFIG_MK)),) + check_platform := 1 +endif + +# If `setup' is one of the targets requested, set `check_platform'. +# +ifneq ($(findstring setup,$(MAKECMDGOALS)),) + check_platform := 1 +endif + + +# Include the automatic host platform detection rules when we need to +# check the platform. +# +ifdef check_platform + + all modules: setup + + include $(TOP_DIR)/builds/detect.mk + + # For builds directly from the git repository we need to copy files + # from `subprojects/dlg' to `src/dlg' and `include/dlg'. + # + ifeq ($(wildcard $(TOP_DIR)/src/dlg/dlg.*),) + ifeq ($(wildcard $(TOP_DIR)/subprojects/dlg/*),) + copy_submodule: check_out_submodule + endif + + setup: copy_submodule + endif + + # This rule makes sense for Unix only to remove files created by a run of + # the configure script which hasn't been successful (so that no + # `config.mk' has been created). It uses the built-in $(RM) command of + # GNU make. Similarly, `nul' is created if e.g. `make setup windows' has + # been erroneously used. + # + # Note: This test is duplicated in `builds/unix/detect.mk'. + # + is_unix := $(strip $(wildcard /sbin/init) \ + $(wildcard /usr/sbin/init) \ + $(wildcard /dev/null) \ + $(wildcard /hurd/auth)) + ifneq ($(is_unix),) + + distclean: + $(RM) $(TOP_DIR)/builds/unix/config.cache + $(RM) $(TOP_DIR)/builds/unix/config.log + $(RM) $(TOP_DIR)/builds/unix/config.status + $(RM) $(TOP_DIR)/builds/unix/unix-def.mk + $(RM) $(TOP_DIR)/builds/unix/unix-cc.mk + $(RM) $(TOP_DIR)/builds/unix/freetype2.pc + $(RM) nul + + endif # test is_unix + + # IMPORTANT: + # + # `setup' must be defined by the host platform detection rules to create + # the `config.mk' file in the current directory. + +else + + # A configuration sub-Makefile is present -- simply run it. + # + all: single + + BUILD_PROJECT := yes + include $(CONFIG_MK) + +endif # test check_platform + + +.PHONY: check_out_submodule copy_submodule + +check_out_submodule: + $(info Checking out submodule in `subprojects/dlg') + git -C $(TOP_DIR) submodule update --init + +copy_submodule: + $(info Copying files from `subprojects/dlg' to `src/dlg' and `include/dlg') + ifeq ($(wildcard $(TOP_DIR)/include/dlg),) + mkdir $(subst /,$(SEP),$(TOP_DIR)/include/dlg) + endif + $(COPY) $(subst /,$(SEP),$(TOP_DIR)/subprojects/dlg/include/dlg/output.h $(TOP_DIR)/include/dlg) + $(COPY) $(subst /,$(SEP),$(TOP_DIR)/subprojects/dlg/include/dlg/dlg.h $(TOP_DIR)/include/dlg) + $(COPY) $(subst /,$(SEP),$(TOP_DIR)/subprojects/dlg/src/dlg/dlg.c $(TOP_DIR)/src/dlg) + + +# We always need the list of modules in ftmodule.h. +# +all setup: $(FTMODULE_H) + + +# The `modules' target unconditionally rebuilds the module list. +# +modules: + $(FTMODULE_H_INIT) + $(FTMODULE_H_CREATE) + $(FTMODULE_H_DONE) + +include $(TOP_DIR)/builds/modules.mk + + +# get FreeType version string using built-in string functions +# +hash := \# + +work := $(strip $(shell $(CAT) \ + $(subst /,$(SEP),$(TOP_DIR)/include/freetype/freetype.h))) + +work := $(subst $(hash)define$(space)FREETYPE_MAJOR$(space),MAjOR=,$(work)) +work := $(subst $(hash)define$(space)FREETYPE_MINOR$(space),MInOR=,$(work)) +work := $(subst $(hash)define$(space)FREETYPE_PATCH$(space),PAtCH=,$(work)) + +major := $(subst MAjOR=,,$(filter MAjOR=%,$(work))) +minor := $(subst MInOR=,,$(filter MInOR=%,$(work))) +patch := $(subst PAtCH=,,$(filter PAtCH=%,$(work))) + +work := + +# ifneq ($(findstring x0x,x$(patch)x),) +# version := $(major).$(minor) +# winversion := $(major)$(minor) +# else + version := $(major).$(minor).$(patch) + winversion := $(major)$(minor)$(patch) + version_tag := VER-$(major)-$(minor)-$(patch) +# endif + + +# This target builds the tarballs. +# +# Not to be run by a normal user -- there are no attempts to make it +# generic. + +dist: + -rm -rf tmp + rm -f freetype-$(version).tar.gz + rm -f freetype-$(version).tar.xz + rm -f ft$(winversion).zip + + find . -name .git -prune \ + -o -name tmp -prune \ + -o -type d -exec mkdir -p tmp/{} \; + + currdir=`pwd` ; \ + find . -name .git -prune \ + -o -name tmp -prune \ + -o -name .gitattributes \ + -o -name .gitignore \ + -o -name .gitlab-ci.yml \ + -o -name .gitmodules \ + -o -name .mailmap \ + -o -type f -exec ln -s $$currdir/{} tmp/{} \; + + cd tmp ; \ + $(MAKE) devel ; \ + $(MAKE) do-dist + + mv tmp freetype-$(version) + + tar --format=ustar -chf - freetype-$(version) \ + | gzip -9 -c > freetype-$(version).tar.gz + tar --format=ustar -chf - freetype-$(version) \ + | xz -c > freetype-$(version).tar.xz + + @# Use CR/LF for zip files. + zip -lr9 ft$(winversion).zip freetype-$(version) + + rm -fr freetype-$(version) + + +# The locations of the latest `config.guess' and `config.sub' versions (from +# GNU `config' git repository), relative to the `tmp' directory used during +# `make dist'. +# +# GNU_CONFIG_GIT_URL = git://git.savannah.gnu.org/config.git +GNU_CONFIG_GIT_URL = https://git.savannah.gnu.org/git/config.git +GNU_CONFIG_DESTDIR = $(TOP_DIR)/subprojects/gnu-config + +CONFIG_GUESS = $(GNU_CONFIG_DESTDIR)/config.guess +CONFIG_SUB = $(GNU_CONFIG_DESTDIR)/config.sub + +# We also use this repository to access the gnulib script that converts git +# commit messages to a ChangeLog file. +CHANGELOG_SCRIPT = $(GNU_CONFIG_DESTDIR)/gitlog-to-changelog + + +# Don't say `make do-dist'. Always use `make dist' instead. +# +.PHONY: do-dist + +do-dist: distclean refdoc + @# Without removing the files, `autoconf' and friends follow links. + rm -f $(TOP_DIR)/builds/unix/aclocal.m4 + rm -f $(TOP_DIR)/builds/unix/configure.ac + rm -f $(TOP_DIR)/builds/unix/configure + + sh autogen.sh + rm -rf $(TOP_DIR)/builds/unix/autom4te.cache + + rm -rf $(GNU_CONFIG_DESTDIR) + git clone --depth=1 $(GNU_CONFIG_GIT_URL) $(GNU_CONFIG_DESTDIR) + cp $(CONFIG_GUESS) $(TOP_DIR)/builds/unix + cp $(CONFIG_SUB) $(TOP_DIR)/builds/unix + + @# Generate `ChangeLog' file with commits since release 2.11.0 + @# (when we stopped creating this file manually). + $(CHANGELOG_SCRIPT) \ + --format='%B%n' \ + --no-cluster \ + -- VER-2-11-0..$(version_tag) \ + > ChangeLog + + @# Remove intermediate files created by the `refdoc' target. + rm -rf $(TOP_DIR)/docs/markdown + rm -f $(TOP_DIR)/docs/mkdocs.yml + + @# Remove more stuff related to git. + rm -rf $(TOP_DIR)/subprojects/dlg + rm -rf $(TOP_DIR)/subprojects/gnu-config + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/unix/aclocal.m4 b/local/recipes/libs/freetype2/source/builds/unix/aclocal.m4 new file mode 100644 index 0000000000..d5d09ed409 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/aclocal.m4 @@ -0,0 +1,9200 @@ +# generated automatically by aclocal 1.16.90 -*- Autoconf -*- + +# Copyright (C) 1996-2024 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996-2001, 2003-2019, 2021-2024 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# 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. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 2024 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. + +# GNU Libtool 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 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 . +]) + +# serial 63 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.64])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + +# _LT_CC_BASENAME(CC) +# ------------------- +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. +m4_defun([_LT_CC_BASENAME], +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_DECL_FILECMD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC and +# ICC, which need '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from 'configure', and 'config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain=$ac_aux_dir/ltmain.sh +])# _LT_PROG_LTMAIN + + + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the 'libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags='_LT_TAGS'dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# '#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test 0 = "$lt_write_fail" && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), in case it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2024 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +_LT_COPYING +_LT_LIBTOOL_TAGS + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + $SED '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + # Feature test to disable chained fixups since it is not + # compatible with '-undefined dynamic_lookup' + AC_CACHE_CHECK([for -no_fixup_chains linker flag], + [lt_cv_support_no_fixup_chains], + [ save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-no_fixup_chains" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([],[])], + lt_cv_support_no_fixup_chains=yes, + lt_cv_support_no_fixup_chains=no + ) + LDFLAGS=$save_LDFLAGS + ] + ) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS=$save_LDFLAGS + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main(void) { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) + case $MACOSX_DEPLOYMENT_TARGET,$host in + 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + *) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' + if test yes = "$lt_cv_support_no_fixup_chains"; then + AS_VAR_APPEND([_lt_dar_allow_undefined], [' $wl-no_fixup_chains']) + fi + ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + _lt_dar_needs_single_mod=no + case $host_os in + rhapsody* | darwin1.*) + _lt_dar_needs_single_mod=yes ;; + darwin*) + # When targeting Mac OS X 10.4 (darwin 8) or later, + # -single_module is the default and -multi_module is unsupported. + # The toolchain on macOS 10.14 (darwin 18) and later cannot + # target any OS version that needs -single_module. + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*-darwin[[567]].*|10.[[0-3]],*-darwin[[5-9]].*|10.[[0-3]],*-darwin1[[0-7]].*) + _lt_dar_needs_single_mod=yes ;; + esac + ;; + esac + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], +[ if test yes = "$_lt_dar_needs_single_mod" -a yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case $ECHO in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[m4_require([_LT_DECL_SED])dnl +AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + # Trim trailing / since we'll always append absolute paths and we want + # to avoid //, if only for less confusing output for the user. + lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `$FILECMD conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `$FILECMD conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `$FILECMD conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `$FILECMD conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*|x86_64-gnu*) + case `$FILECMD conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*|x86_64-gnu*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `$FILECMD conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +_LT_DECL([], [AR], [1], [The archiver]) + +# Use ARFLAGS variable as AR's operation code to sync the variable naming with +# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have +# higher priority because that's what people were doing historically (setting +# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS +# variable obsoleted/removed. + +test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} +lt_ar_flags=$AR_FLAGS +_LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) + +# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override +# by AR_FLAGS because that was never working and AR_FLAGS is about to die. +_LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], + [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_REQUIRE([AC_PROG_RANLIB]) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu* | ironclad*) + # Under GNU Hurd and Ironclad, this test is not required because there + # is no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | windows* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes = "$cross_compiling"; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord (void) __attribute__((visibility("default"))); +#endif + +int fnord (void) { return 42; } +int main (void) +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | windows* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + + # We can hardcode non-existent directories. + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -z "$STRIP"; then + AC_MSG_RESULT([no]) +else + if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) + else + case $host_os in + darwin*) + # FIXME - insert some real tests, host_os isn't really good enough + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + ;; + freebsd*) + if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac + fi +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --enable-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | windows* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + # If user builds GCC with multilib enabled, + # it should just install on $(libdir) + # not on $(libdir)/../bin or 32 bits dlls would override 64 bit ones. + if test xyes = x"$multilib"; then + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + $install_prog $dir/$dlname $destdir/$dlname~ + chmod a+x $destdir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib $destdir/$dlname'\'' || exit \$?; + fi' + else + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + fi + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | windows* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl* | *,icl*) + # Native MSVC or ICC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw* | windows*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC and ICC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly* | midnightbsd*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + case $host_cpu in + powerpc64) + # On FreeBSD bi-arch platforms, a different variable is used for 32-bit + # binaries. See . + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[int test_pointer_size[sizeof (void *) - 5]; + ]])], + [shlibpath_var=LD_LIBRARY_PATH], + [shlibpath_var=LD_32_LIBRARY_PATH]) + ;; + *) + shlibpath_var=LD_LIBRARY_PATH + ;; + esac + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib' + sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib' + hardcode_into_libs=no + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # -rpath works at least for libraries that are not overridden by + # libraries installed in system locations. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directories which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +*-mlibc) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='mlibc ld.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +serenity*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + dynamic_linker='SerenityOS LibELF' + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +emscripten*) + version_type=none + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + dynamic_linker="Emscripten linker" + _LT_COMPILER_PIC($1)='-fPIC' + _LT_TAGVAR(archive_cmds, $1)='$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib -s EXPORTED_FUNCTIONS=@$output_objdir/$soname.expsym' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(no_undefined_flag, $1)= + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program that can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program that can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw* | *-*-windows*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='$FILECMD -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | windows* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly* | midnightbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=$FILECMD + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +*-mlibc) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +serenity*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | windows* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw* | windows*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | windows* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_manifest_tool], + [lt_cv_path_manifest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_manifest_tool=yes + fi + rm -f conftest*]) +if test yes != "$lt_cv_path_manifest_tool"; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-mingw* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | windows* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BCDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw* | windows*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++ or ICC, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(void){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly* | midnightbsd*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *-mlibc) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + serenity*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test yes = "$GCC"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *flang* | ftn | f18* | f95*) + # Flang compiler. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *-mlibc) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + serenity*) + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + ;; + cygwin* | mingw* | windows* | cegcc*) + case $cc_basename in + cl* | icl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | windows* | pw32* | cegcc*) + # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++ or Intel C++ Compiler. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) + with_gnu_ld=yes + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | windows* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + _LT_TAGVAR(file_list_spec, $1)='@' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + *-mlibc) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | windows* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++ or Intel C++ Compiler. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl* | icl*) + # Native MSVC or ICC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -Fe$output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC and ICC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly* | midnightbsd*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + esac + ;; + + *-mlibc) + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + ;; + + osf3*) + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + serenity*) + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e. impossible to change by setting $shlibpath_var if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC=$CC +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(void){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report what library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC=$lt_save_CC +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | windows* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl* | ,icl* | no,icl*) + # Native MSVC or ICC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly* | midnightbsd*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " [[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + *-mlibc) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + serenity*) + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R,l}" and the path. + # Remove the space. + if test x-L = x"$p" || + test x-R = x"$p" || + test x-l = x"$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)=$prev$p + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)=$p + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)=$p + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test no = "$F77"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_F77"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test no = "$FC"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_FC"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_FC" + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_FILECMD +# ---------------- +# Check for a file(cmd) program that can be used to detect file type and magic +m4_defun([_LT_DECL_FILECMD], +[AC_CHECK_PROG([FILECMD], [file], [file], [:]) +_LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) +])# _LD_DECL_FILECMD + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine what file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* | *-*-windows* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* | *-*-windows* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* | *-*-windows* ) + case $build in + *-*-mingw* | *-*-windows* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS + +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2024 Free +# Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# 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 10 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option '$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) + ]) +])# _LT_SET_OPTIONS + + + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --enable-aix-soname configure option, and support the +# `aix-soname=aix' and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. +# DEFAULT is either `aix', `both', or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_ENABLE([aix-soname], + [AS_HELP_STRING([--enable-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $enableval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --enable-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$enable_aix_soname], + [_AC_ENABLE_IF([with], [aix-soname], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)]) + enable_aix_soname=$lt_cv_with_aix_soname]) + with_aix_soname=$enable_aix_soname + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --enable-pic flag, and support the 'pic-only' and 'no-pic' +# LT_INIT options. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_ENABLE([pic], + [AS_HELP_STRING([--enable-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $enableval in + yes|no) pic_mode=$enableval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [dnl Continue to support --with-pic and --without-pic, for backward + dnl compatibility. + _AC_ENABLE_IF([with], [pic], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [pic_mode=m4_default([$1], [default])])] + ) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) + +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2024 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# 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 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59, which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) + +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004, 2011-2019, 2021-2024 Free Software Foundation, +# Inc. +# Written by Scott James Remnant, 2004 +# +# 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. + +# @configure_input@ + +# serial 4441 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.5.4]) +m4_define([LT_PACKAGE_REVISION], [2.5.4]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.5.4' +macro_revision='2.5.4' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) + +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2024 Free +# Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# 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 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) + +m4_include([ax_compare_version.m4]) +m4_include([ax_prog_python_version.m4]) +m4_include([ax_pthread.m4]) +m4_include([ft-munmap.m4]) +m4_include([pkg.m4]) diff --git a/local/recipes/libs/freetype2/source/builds/unix/ax_compare_version.m4 b/local/recipes/libs/freetype2/source/builds/unix/ax_compare_version.m4 new file mode 100644 index 0000000000..ffb4997e8b --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ax_compare_version.m4 @@ -0,0 +1,177 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_compare_version.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_COMPARE_VERSION(VERSION_A, OP, VERSION_B, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +# +# DESCRIPTION +# +# This macro compares two version strings. Due to the various number of +# minor-version numbers that can exist, and the fact that string +# comparisons are not compatible with numeric comparisons, this is not +# necessarily trivial to do in a autoconf script. This macro makes doing +# these comparisons easy. +# +# The six basic comparisons are available, as well as checking equality +# limited to a certain number of minor-version levels. +# +# The operator OP determines what type of comparison to do, and can be one +# of: +# +# eq - equal (test A == B) +# ne - not equal (test A != B) +# le - less than or equal (test A <= B) +# ge - greater than or equal (test A >= B) +# lt - less than (test A < B) +# gt - greater than (test A > B) +# +# Additionally, the eq and ne operator can have a number after it to limit +# the test to that number of minor versions. +# +# eq0 - equal up to the length of the shorter version +# ne0 - not equal up to the length of the shorter version +# eqN - equal up to N sub-version levels +# neN - not equal up to N sub-version levels +# +# When the condition is true, shell commands ACTION-IF-TRUE are run, +# otherwise shell commands ACTION-IF-FALSE are run. The environment +# variable 'ax_compare_version' is always set to either 'true' or 'false' +# as well. +# +# Examples: +# +# AX_COMPARE_VERSION([3.15.7],[lt],[3.15.8]) +# AX_COMPARE_VERSION([3.15],[lt],[3.15.8]) +# +# would both be true. +# +# AX_COMPARE_VERSION([3.15.7],[eq],[3.15.8]) +# AX_COMPARE_VERSION([3.15],[gt],[3.15.8]) +# +# would both be false. +# +# AX_COMPARE_VERSION([3.15.7],[eq2],[3.15.8]) +# +# would be true because it is only comparing two minor versions. +# +# AX_COMPARE_VERSION([3.15.7],[eq0],[3.15]) +# +# would be true because it is only comparing the lesser number of minor +# versions of the two values. +# +# Note: The characters that separate the version numbers do not matter. An +# empty string is the same as version 0. OP is evaluated by autoconf, not +# configure, so must be a string, not a variable. +# +# The author would like to acknowledge Guido Draheim whose advice about +# the m4_case and m4_ifvaln functions make this macro only include the +# portions necessary to perform the specific comparison specified by the +# OP argument in the final configure script. +# +# LICENSE +# +# Copyright (c) 2008 Tim Toolan +# +# 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 any +# warranty. + +#serial 13 + +dnl ######################################################################### +AC_DEFUN([AX_COMPARE_VERSION], [ + AC_REQUIRE([AC_PROG_AWK]) + + # Used to indicate true or false condition + ax_compare_version=false + + # Convert the two version strings to be compared into a format that + # allows a simple string comparison. The end result is that a version + # string of the form 1.12.5-r617 will be converted to the form + # 0001001200050617. In other words, each number is zero padded to four + # digits, and non digits are removed. + AS_VAR_PUSHDEF([A],[ax_compare_version_A]) + A=`echo "$1" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ + -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/[[^0-9]]//g'` + + AS_VAR_PUSHDEF([B],[ax_compare_version_B]) + B=`echo "$3" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ + -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/[[^0-9]]//g'` + + dnl # In the case of le, ge, lt, and gt, the strings are sorted as necessary + dnl # then the first line is used to determine if the condition is true. + dnl # The sed right after the echo is to remove any indented white space. + m4_case(m4_tolower($2), + [lt],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/false/;s/x${B}/true/;1q"` + ], + [gt],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort | sed "s/x${A}/false/;s/x${B}/true/;1q"` + ], + [le],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort | sed "s/x${A}/true/;s/x${B}/false/;1q"` + ], + [ge],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/true/;s/x${B}/false/;1q"` + ],[ + dnl Split the operator from the subversion count if present. + m4_bmatch(m4_substr($2,2), + [0],[ + # A count of zero means use the length of the shorter version. + # Determine the number of characters in A and B. + ax_compare_version_len_A=`echo "$A" | $AWK '{print(length)}'` + ax_compare_version_len_B=`echo "$B" | $AWK '{print(length)}'` + + # Set A to no more than B's length and B to no more than A's length. + A=`echo "$A" | sed "s/\(.\{$ax_compare_version_len_B\}\).*/\1/"` + B=`echo "$B" | sed "s/\(.\{$ax_compare_version_len_A\}\).*/\1/"` + ], + [[0-9]+],[ + # A count greater than zero means use only that many subversions + A=`echo "$A" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` + B=`echo "$B" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` + ], + [.+],[ + AC_WARNING( + [invalid OP numeric parameter: $2]) + ],[]) + + # Pad zeros at end of numbers to make same length. + ax_compare_version_tmp_A="$A`echo $B | sed 's/./0/g'`" + B="$B`echo $A | sed 's/./0/g'`" + A="$ax_compare_version_tmp_A" + + # Check for equality or inequality as necessary. + m4_case(m4_tolower(m4_substr($2,0,2)), + [eq],[ + test "x$A" = "x$B" && ax_compare_version=true + ], + [ne],[ + test "x$A" != "x$B" && ax_compare_version=true + ],[ + AC_WARNING([invalid OP parameter: $2]) + ]) + ]) + + AS_VAR_POPDEF([A])dnl + AS_VAR_POPDEF([B])dnl + + dnl # Execute ACTION-IF-TRUE / ACTION-IF-FALSE. + if test "$ax_compare_version" = "true" ; then + m4_ifvaln([$4],[$4],[:])dnl + m4_ifvaln([$5],[else $5])dnl + fi +]) dnl AX_COMPARE_VERSION diff --git a/local/recipes/libs/freetype2/source/builds/unix/ax_prog_python_version.m4 b/local/recipes/libs/freetype2/source/builds/unix/ax_prog_python_version.m4 new file mode 100644 index 0000000000..dbc3dbf1da --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ax_prog_python_version.m4 @@ -0,0 +1,66 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_prog_python_version.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PROG_PYTHON_VERSION([VERSION],[ACTION-IF-TRUE],[ACTION-IF-FALSE]) +# +# DESCRIPTION +# +# Makes sure that python supports the version indicated. If true the shell +# commands in ACTION-IF-TRUE are executed. If not the shell commands in +# ACTION-IF-FALSE are run. Note if $PYTHON is not set (for example by +# running AC_CHECK_PROG or AC_PATH_PROG) the macro will fail. +# +# Example: +# +# AC_PATH_PROG([PYTHON],[python]) +# AX_PROG_PYTHON_VERSION([2.4.4],[ ... ],[ ... ]) +# +# This will check to make sure that the python you have supports at least +# version 2.4.4. +# +# NOTE: This macro uses the $PYTHON variable to perform the check. +# AX_WITH_PYTHON can be used to set that variable prior to running this +# macro. The $PYTHON_VERSION variable will be valorized with the detected +# version. +# +# LICENSE +# +# Copyright (c) 2009 Francesco Salvestrini +# +# 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 any +# warranty. + +#serial 12 + +AC_DEFUN([AX_PROG_PYTHON_VERSION],[ + AC_REQUIRE([AC_PROG_SED]) + AC_REQUIRE([AC_PROG_GREP]) + + AS_IF([test -n "$PYTHON"],[ + ax_python_version="$1" + + AC_MSG_CHECKING([for python version]) + changequote(<<,>>) + python_version=`$PYTHON -V 2>&1 | $GREP "^Python " | $SED -e 's/^.* \([0-9]*\.[0-9]*\.[0-9]*\)/\1/'` + changequote([,]) + AC_MSG_RESULT($python_version) + + AC_SUBST([PYTHON_VERSION],[$python_version]) + + AX_COMPARE_VERSION([$ax_python_version],[le],[$python_version],[ + : + $2 + ],[ + : + $3 + ]) + ],[ + AC_MSG_WARN([could not find the python interpreter]) + $3 + ]) +]) diff --git a/local/recipes/libs/freetype2/source/builds/unix/ax_pthread.m4 b/local/recipes/libs/freetype2/source/builds/unix/ax_pthread.m4 new file mode 100644 index 0000000000..e5858e50c3 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ax_pthread.m4 @@ -0,0 +1,522 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_pthread.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +# +# DESCRIPTION +# +# This macro figures out how to build C programs using POSIX threads. It +# sets the PTHREAD_LIBS output variable to the threads library and linker +# flags, and the PTHREAD_CFLAGS output variable to any special C compiler +# flags that are needed. (The user can also force certain compiler +# flags/libs to be tested by setting these environment variables.) +# +# Also sets PTHREAD_CC and PTHREAD_CXX to any special C compiler that is +# needed for multi-threaded programs (defaults to the value of CC +# respectively CXX otherwise). (This is necessary on e.g. AIX to use the +# special cc_r/CC_r compiler alias.) +# +# NOTE: You are assumed to not only compile your program with these flags, +# but also to link with them as well. For example, you might link with +# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS +# $PTHREAD_CXX $CXXFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS +# +# If you are only building threaded programs, you may wish to use these +# variables in your default LIBS, CFLAGS, and CC: +# +# LIBS="$PTHREAD_LIBS $LIBS" +# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +# CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" +# CC="$PTHREAD_CC" +# CXX="$PTHREAD_CXX" +# +# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant +# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to +# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +# +# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the +# PTHREAD_PRIO_INHERIT symbol is defined when compiling with +# PTHREAD_CFLAGS. +# +# ACTION-IF-FOUND is a list of shell commands to run if a threads library +# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it +# is not found. If ACTION-IF-FOUND is not specified, the default action +# will define HAVE_PTHREAD. +# +# Please let the authors know if this macro fails on any platform, or if +# you have any other suggestions or comments. This macro was based on work +# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help +# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by +# Alejandro Forero Cuervo to the autoconf macro repository. We are also +# grateful for the helpful feedback of numerous users. +# +# Updated for Autoconf 2.68 by Daniel Richard G. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2011 Daniel Richard G. +# Copyright (c) 2019 Marc Stevens +# +# 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 . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 30 + +AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) +AC_DEFUN([AX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_TARGET]) +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_PROG_SED]) +AC_LANG_PUSH([C]) +ax_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on Tru64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then + ax_pthread_save_CC="$CC" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) + AS_IF([test "x$PTHREAD_CXX" != "x"], [CXX="$PTHREAD_CXX"]) + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) + AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes]) + AC_MSG_RESULT([$ax_pthread_ok]) + if test "x$ax_pthread_ok" = "xno"; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + CC="$ax_pthread_save_CC" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items with a "," contain both +# C compiler flags (before ",") and linker flags (after ","). Other items +# starting with a "-" are C compiler flags, and remaining items are +# library names, except for "none" which indicates that we try without +# any flags at all, and "pthread-config" which is a program returning +# the flags for the Pth emulation library. + +ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 +# (Note: HP C rejects this with "bad form for `-t' option") +# -pthreads: Solaris/gcc (Note: HP C also rejects) +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads and +# -D_REENTRANT too), HP C (must be checked before -lpthread, which +# is present but should not be used directly; and before -mthreads, +# because the compiler interprets this as "-mt" + "-hreads") +# -mthreads: Mingw32/gcc, Lynx/gcc +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case $target_os in + + freebsd*) + + # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) + # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) + + ax_pthread_flags="-kthread lthread $ax_pthread_flags" + ;; + + hpux*) + + # From the cc(1) man page: "[-mt] Sets various -D flags to enable + # multi-threading and also sets -lpthread." + + ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" + ;; + + openedition*) + + # IBM z/OS requires a feature-test macro to be defined in order to + # enable POSIX threads at all, so give the user a hint if this is + # not set. (We don't define these ourselves, as they can affect + # other portions of the system API in unpredictable ways.) + + AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING], + [ +# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) + AX_PTHREAD_ZOS_MISSING +# endif + ], + [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])]) + ;; + + solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (N.B.: The stubs are missing + # pthread_cleanup_push, or rather a function called by this macro, + # so we could check for that, but who knows whether they'll stub + # that too in a future libc.) So we'll check first for the + # standard Solaris way of linking pthreads (-mt -lpthread). + + ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" + ;; +esac + +# Are we compiling with Clang? + +AC_CACHE_CHECK([whether $CC is Clang], + [ax_cv_PTHREAD_CLANG], + [ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], + [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + ], + [ax_cv_PTHREAD_CLANG=yes]) + fi + ]) +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + + +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) + +# Note that for GCC and Clang -pthread generally implies -lpthread, +# except when -nostdlib is passed. +# This is problematic using libtool to build C++ shared libraries with pthread: +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 +# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 +# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 +# To solve this, first try -pthread together with -lpthread for GCC + +AS_IF([test "x$GCC" = "xyes"], + [ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"]) + +# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first + +AS_IF([test "x$ax_pthread_clang" = "xyes"], + [ax_pthread_flags="-pthread,-lpthread -pthread"]) + + +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled + +case $target_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" + ;; + + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; + + *) + ax_pthread_check_macro="--" + ;; +esac +AS_IF([test "x$ax_pthread_check_macro" = "x--"], + [ax_pthread_check_cond=0], + [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) + + +if test "x$ax_pthread_ok" = "xno"; then +for ax_pthread_try_flag in $ax_pthread_flags; do + + case $ax_pthread_try_flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + *,*) + PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` + PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` + AC_MSG_CHECKING([whether pthreads work with "$PTHREAD_CFLAGS" and "$PTHREAD_LIBS"]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) + PTHREAD_CFLAGS="$ax_pthread_try_flag" + ;; + + pthread-config) + AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) + AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) + PTHREAD_LIBS="-l$ax_pthread_try_flag" + ;; + esac + + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include +# if $ax_pthread_check_cond +# error "$ax_pthread_check_macro must be defined" +# endif + static void *some_global = NULL; + static void routine(void *a) + { + /* To avoid any unused-parameter or + unused-but-set-parameter warning. */ + some_global = a; + } + static void *start_routine(void *a) { return a; }], + [pthread_t th; pthread_attr_t attr; + pthread_create(&th, 0, start_routine, 0); + pthread_join(th, 0); + pthread_attr_init(&attr); + pthread_cleanup_push(routine, 0); + pthread_cleanup_pop(0) /* ; */])], + [ax_pthread_ok=yes], + []) + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + AC_MSG_RESULT([$ax_pthread_ok]) + AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`AS_ECHO(["$ac_link"]) | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [ac_link="$ax_pthread_2step_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [break]) + ]) + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + ]) + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes + + + +# Various other checks: +if test "x$ax_pthread_ok" = "xyes"; then + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_CACHE_CHECK([for joinable pthread attribute], + [ax_cv_PTHREAD_JOINABLE_ATTR], + [ax_cv_PTHREAD_JOINABLE_ATTR=unknown + for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], + [int attr = $ax_pthread_attr; return attr /* ; */])], + [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break], + []) + done + ]) + AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ + test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ + test "x$ax_pthread_joinable_attr_defined" != "xyes"], + [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], + [$ax_cv_PTHREAD_JOINABLE_ATTR], + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + ax_pthread_joinable_attr_defined=yes + ]) + + AC_CACHE_CHECK([whether more special flags are required for pthreads], + [ax_cv_PTHREAD_SPECIAL_FLAGS], + [ax_cv_PTHREAD_SPECIAL_FLAGS=no + case $target_os in + solaris*) + ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + ]) + AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ + test "x$ax_pthread_special_flags_added" != "xyes"], + [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" + ax_pthread_special_flags_added=yes]) + + AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], + [ax_cv_PTHREAD_PRIO_INHERIT], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[int i = PTHREAD_PRIO_INHERIT; + return i;]])], + [ax_cv_PTHREAD_PRIO_INHERIT=yes], + [ax_cv_PTHREAD_PRIO_INHERIT=no]) + ]) + AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ + test "x$ax_pthread_prio_inherit_defined" != "xyes"], + [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.]) + ax_pthread_prio_inherit_defined=yes + ]) + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + # More AIX lossage: compile with *_r variant + if test "x$GCC" != "xyes"; then + case $target_os in + aix*) + AS_CASE(["x/$CC"], + [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], + [#handle absolute path differently from PATH based program lookup + AS_CASE(["x$CC"], + [x/*], + [ + AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"]) + AS_IF([test "x${CXX}" != "x"], [AS_IF([AS_EXECUTABLE_P([${CXX}_r])],[PTHREAD_CXX="${CXX}_r"])]) + ], + [ + AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC]) + AS_IF([test "x${CXX}" != "x"], [AC_CHECK_PROGS([PTHREAD_CXX],[${CXX}_r],[$CXX])]) + ] + ) + ]) + ;; + esac + fi +fi + +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" +test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" + +AC_SUBST([PTHREAD_LIBS]) +AC_SUBST([PTHREAD_CFLAGS]) +AC_SUBST([PTHREAD_CC]) +AC_SUBST([PTHREAD_CXX]) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test "x$ax_pthread_ok" = "xyes"; then + ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) + : +else + ax_pthread_ok=no + $2 +fi +AC_LANG_POP +])dnl AX_PTHREAD diff --git a/local/recipes/libs/freetype2/source/builds/unix/config.guess b/local/recipes/libs/freetype2/source/builds/unix/config.guess new file mode 100755 index 0000000000..a9d01fde46 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/config.guess @@ -0,0 +1,1818 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2025 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2025-07-10' + +# 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 +# (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 . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# 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/cgit/config.git/plain/config.guess +# +# Please send patches to . + + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system '$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2025 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." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + 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 +# headache to deal with in a portable fashion. + +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # 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 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c17 c99 c89 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +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_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case $UNAME_SYSTEM in +Linux|GNU|GNU/*) + LIBC=unknown + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif + #endif + #endif + EOF + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # 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 + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + UNAME_MACHINE_ARCH=`(uname -p 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 + aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + 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=$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 + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # 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 + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + GUESS=$machine-${os}${release}${abi-} + ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + 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\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; + *:ekkoBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; + *:SolidBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; + macppc:MirBSD:*:*) + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; + *:MirBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; + *:Sortix:*:*) + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + 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}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # 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 + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # 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. + 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:*) + GUESS=m68k-unknown-sysv4 + ;; + *:[Aa]miga[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; + *:[Mm]orph[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-morphos + ;; + *:OS/390:*:*) + GUESS=i370-ibm-openedition + ;; + *:z/VM:*:*) + GUESS=s390-ibm-zvmoe + ;; + *:OS400:*:*) + GUESS=powerpc-ibm-os400 + ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + GUESS=arm-unknown-riscos + ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + 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. + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; + NILE*:*:*:dcosx) + GUESS=pyramid-pyramid-svr4 + ;; + DRS?6000:unix:4.0:6*) + GUESS=sparc-icl-nx6 + ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; + s390x:SunOS:*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; + sun4H:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + 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 test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + 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. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; + sun4*:SunOS:*:*) + 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'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; + sun3*:SunOS:*:*) + 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 + sun3) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun4) + GUESS=sparc-sun-sunos$UNAME_RELEASE + ;; + esac + ;; + aushp:SunOS:*:*) + 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 + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; + m68k:machten:*:*) + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; + powerpc:machten:*:*) + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; + RISC*:Mach:*:*) + GUESS=mips-dec-mach_bsd4.3 + ;; + RISC*:ULTRIX:*:*) + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; + VAX*:ULTRIX*:*:*) + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; + Motorola:PowerMAX_OS:*:*) + GUESS=powerpc-motorola-powermax + ;; + Motorola:*:4.3:PL8-*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:Power_UNIX:*:*) + GUESS=powerpc-harris-powerunix + ;; + m88k:CX/UX:7*:*) + GUESS=m88k-harris-cxux7 + ;; + m88k:*:4*:R4*) + GUESS=m88k-motorola-sysv4 + ;; + m88k:*:3*:R3*) + GUESS=m88k-motorola-sysv3 + ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x + then + GUESS=m88k-dg-dgux$UNAME_RELEASE + else + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + fi + else + GUESS=i586-dg-dgux$UNAME_RELEASE + fi + ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + GUESS=m88k-dolphin-sysv3 + ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + GUESS=m88k-motorola-sysv3 + ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + GUESS=m88k-tektronix-sysv3 + ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + GUESS=m68k-tektronix-bsd + ;; + *:IRIX*:*:*) + 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. + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + GUESS=i386-ibm-aix + ;; + ia64:AIX:*:*) + if test -x /usr/bin/oslevel ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + 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 + sed 's/^ //' << EOF > "$dummy.c" + #include + + int + main () + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + GUESS=$SYSTEM_NAME + else + GUESS=rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + GUESS=rs6000-ibm-aix3.2.4 + else + GUESS=rs6000-ibm-aix3.2 + fi + ;; + *: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 + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + 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 + fi + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; + *:AIX:*:*) + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + GUESS=rs6000-bull-bosx + ;; + DPX/2?00:B.O.S.:*:*) + GUESS=m68k-bull-sysv3 + ;; + 9000/[34]??:4.3bsd:1.*:*) + GUESS=m68k-hp-bsd + ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + GUESS=m68k-hp-bsd4.4 + ;; + 9000/[34678]??:HP-UX:*:*) + 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 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 + 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 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int + main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; + ia64:HP-UX:*:*) + 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" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; + 9000/8??:4.3bsd:*:*) + GUESS=hppa1.0-hp-bsd + ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; + hp8??:OSF1:*:*) + GUESS=hppa1.0-hp-osf + ;; + i*86:OSF1:*:*) + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk + else + GUESS=$UNAME_MACHINE-unknown-osf1 + fi + ;; + parisc*:Lites*:*:*) + GUESS=hppa1.1-hp-lites + ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + GUESS=c1-convex-bsd + ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + GUESS=c34-convex-bsd + ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + GUESS=c38-convex-bsd + ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + GUESS=c4-convex-bsd + ;; + CRAY*Y-MP:*:*:*) + 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/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; + CRAY*T3E:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; + CRAY*SV1:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; + *:UNICOS/mp:*:*) + 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/ /_/'` + 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/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; + sparc*:BSD/OS:*:*) + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; + *:BSD/OS:*:*) + 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 + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; + i*:CYGWIN*:*) + GUESS=$UNAME_MACHINE-pc-cygwin + ;; + *:MINGW64*:*) + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; + *:MINGW*:*) + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; + *:MSYS*:*) + GUESS=$UNAME_MACHINE-pc-msys + ;; + i*:PW*:*) + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; + *:Interix*:*) + case $UNAME_MACHINE in + x86) + GUESS=i586-pc-interix$UNAME_RELEASE + ;; + authenticamd | genuineintel | EM64T) + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; + IA64) + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; + esac ;; + i*:UWIN*:*) + GUESS=$UNAME_MACHINE-pc-uwin + ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + GUESS=x86_64-pc-cygwin + ;; + prep*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; + *:GNU:*:*) + # the GNU system + 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 + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; + aarch64:Linux:*:*) + 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 __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #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 + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + 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 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + 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 + 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 + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + else + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + fi + fi + ;; + avr32*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + cris:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + crisv32:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + e2k:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + frv:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + hexagon:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:Linux:*:*) + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; + ia64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m32r*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m68*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + 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:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + openrisc*:Linux:*:*) + GUESS=or1k-unknown-linux-$LIBC + ;; + or32:Linux:*:* | or1k*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + padre:Linux:*:*) + GUESS=sparc-unknown-linux-$LIBC + ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + 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*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; + esac + ;; + ppc64:Linux:*:*) + GUESS=powerpc64-unknown-linux-$LIBC + ;; + ppc:Linux:*:*) + GUESS=powerpc-unknown-linux-$LIBC + ;; + ppc64le:Linux:*:*) + GUESS=powerpc64le-unknown-linux-$LIBC + ;; + ppcle:Linux:*:*) + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + s390:Linux:*:* | s390x:Linux:*:*) + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; + sh64*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sh*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + tile*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + vax:Linux:*:*) + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; + x86_64:Linux:*:*) + 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:*:*) + 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. + 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. + 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. + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; + i*86:XTS-300:*:STOP) + GUESS=$UNAME_MACHINE-unknown-stop + ;; + i*86:atheos:*:*) + GUESS=$UNAME_MACHINE-unknown-atheos + ;; + i*86:syllable:*:*) + GUESS=$UNAME_MACHINE-pc-syllable + ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; + i*86:*DOS:*:*) + 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 + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + fi + ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv32 + fi + ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # 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. + GUESS=i586-pc-msdosdjgpp + ;; + Intel:Mach:3*:*) + GUESS=i386-pc-mach3 + ;; + paragon:*:*:*) + GUESS=i860-intel-osf1 + ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + fi + ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + GUESS=m68010-convergent-sysv + ;; + mc68k:UNIX:SYSTEM5:3.51m) + GUESS=m68k-convergent-sysv + ;; + M680?0:D-NIX:5.3:*) + 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) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /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*:*) + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; + mc68030:UNIX_System_V:4.*:*) + GUESS=m68k-atari-sysv4 + ;; + TSUNAMI:LynxOS:2.*:*) + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; + rs6000:LynxOS:2.*:*) + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; + SM[BE]S:UNIX_SV:*:*) + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; + RM*:ReliantUNIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + RM*:SINIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 + else + GUESS=ns32k-sni-sysv + fi + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort + # says + GUESS=i586-unisys-sysv4 + ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + GUESS=hppa1.1-stratus-sysv4 + ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + GUESS=i860-stratus-sysv4 + ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=$UNAME_MACHINE-stratus-vos + ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=hppa1.1-stratus-vos + ;; + mc68*:A/UX:*:*) + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; + news*:NEWS-OS:6*:*) + GUESS=mips-sony-newsos6 + ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE + else + GUESS=mips-unknown-sysv$UNAME_RELEASE + fi + ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + GUESS=powerpc-be-beos + ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + GUESS=powerpc-apple-beos + ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + GUESS=i586-pc-beos + ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + 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:*:*) + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; + SX-5:SUPER-UX:*:*) + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; + SX-6:SUPER-UX:*:*) + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; + SX-7:SUPER-UX:*:*) + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; + SX-8:SUPER-UX:*:*) + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; + SX-8R:SUPER-UX:*:*) + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; + Power*:Rhapsody:*:*) + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; + *:Rhapsody:*:*) + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + 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 + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + 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 + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; + *:QNX:*:4*) + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; + NSE-*:NONSTOP_KERNEL:*:*) + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; + *:NonStop-UX:*:*) + GUESS=mips-compaq-nonstopux + ;; + BS2000:POSIX*:*:*) + GUESS=bs2000-siemens-sysv + ;; + DS/*:UNIX_System_V:*:*) + 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. + if test "${cputype-}" = 386; then + UNAME_MACHINE=i386 + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype + fi + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; + *:TOPS-10:*:*) + GUESS=pdp10-unknown-tops10 + ;; + *:TENEX:*:*) + GUESS=pdp10-unknown-tenex + ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + GUESS=pdp10-dec-tops20 + ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + GUESS=pdp10-xkl-tops20 + ;; + *:TOPS-20:*:*) + GUESS=pdp10-unknown-tops20 + ;; + *:ITS:*:*) + GUESS=pdp10-unknown-its + ;; + SEI:*:*:SEIUX) + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; + *:DragonFly:*:*) + 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*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; + esac ;; + *:XENIX:*:SysV) + GUESS=i386-pc-xenix + ;; + i*86:skyos:*:*) + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; + i*86:rdos:*:*) + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; + x86_64:VMkernel:*:*) + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + x86_64:[Ii]ronclad:*:*|i?86:[Ii]ronclad:*:*) + GUESS=$UNAME_MACHINE-pc-ironclad-mlibc + ;; + *:[Ii]ronclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad-mlibc + ;; +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" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +int +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$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. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF +fi + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%Y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/local/recipes/libs/freetype2/source/builds/unix/config.sub b/local/recipes/libs/freetype2/source/builds/unix/config.sub new file mode 100755 index 0000000000..3d35cde174 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/config.sub @@ -0,0 +1,2364 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2025 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale + +timestamp='2025-07-10' + +# 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 +# (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 . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# 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/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 +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# 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="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2025 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." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + 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 + cloudabi*-eabi* \ + | kfreebsd*-gnu* \ + | knetbsd*-gnu* \ + | kopensolaris*-gnu* \ + | ironclad-* \ + | linux-* \ + | managarm-* \ + | netbsd*-eabi* \ + | netbsd*-gnu* \ + | nto-qnx* \ + | os2-emx* \ + | rtmk-nova* \ + | storm-chaos* \ + | uclinux-gnu* \ + | uclinux-uclibc* \ + | windows-* ) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + case $field1-$field2 in + # Shorthands that happen to contain a single dash + convex-c[12] | convex-c3[248]) + basic_machine=$field2-convex + basic_os= + ;; + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Do not treat sunos as a manufacturer + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + # Manufacturers + 3100* \ + | 32* \ + | 3300* \ + | 3600* \ + | 7300* \ + | acorn \ + | altos* \ + | apollo \ + | apple \ + | atari \ + | att* \ + | axis \ + | be \ + | bull \ + | cbm \ + | ccur \ + | cisco \ + | commodore \ + | convergent* \ + | convex* \ + | cray \ + | crds \ + | dec* \ + | delta* \ + | dg \ + | digital \ + | dolphin \ + | encore* \ + | gould \ + | harris \ + | highlevel \ + | hitachi* \ + | hp \ + | ibm* \ + | intergraph \ + | isi* \ + | knuth \ + | masscomp \ + | microblaze* \ + | mips* \ + | motorola* \ + | ncr* \ + | news \ + | next \ + | ns \ + | oki \ + | omron* \ + | pc533* \ + | rebel \ + | rom68k \ + | rombug \ + | semi \ + | sequent* \ + | sgi* \ + | siemens \ + | sim \ + | sni \ + | sony* \ + | stratus \ + | sun \ + | sun[234]* \ + | tektronix \ + | tti* \ + | ultra \ + | unicom* \ + | wec \ + | winbond \ + | wrs) + basic_machine=$field1-$field2 + basic_os= + ;; + tock* | zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300) + cpu=m68k + vendor=motorola + ;; + # This used to be dpx2*, but that gets the RS6000-based + # DPX/20 and the x86-based DPX/2-100 wrong. See + # https://oldskool.silicium.org/stations/bull_dpx20.htm + # https://www.feb-patrimoine.com/english/bull_dpx2.htm + # https://www.feb-patrimoine.com/english/unix_and_bull.htm + dpx2 | dpx2[23]00 | dpx2[23]xx) + cpu=m68k + vendor=bull + ;; + dpx2100 | dpx21xx) + cpu=i386 + vendor=bull + ;; + dpx20) + cpu=rs6000 + vendor=bull + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x"$basic_os" != x +then + +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just +# set os. +obj= +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|'` + ;; + *-*) + saved_IFS=$IFS + IFS="-" read kernel os <&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; + *) + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 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-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- | linux-ohos*- ) + ;; + uclinux-uclibc*- | uclinux-gnu*- ) + ;; + ironclad-mlibc*-) + ;; + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -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 + ;; + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 + ;; + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) + ;; + rtmk-nova-) + ;; + *-eabi*- | *-gnueabi*-) + ;; + ios*-simulator- | tvos*-simulator- | watchos*-simulator- ) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) + # Blank kernel with real OS is always fine. + ;; + --*) + # Blank kernel and OS with real machine code file format 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 $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos* | *-solaris*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%Y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/local/recipes/libs/freetype2/source/builds/unix/configure b/local/recipes/libs/freetype2/source/builds/unix/configure new file mode 100755 index 0000000000..7e9e8c50dd --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/configure @@ -0,0 +1,20160 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.72 for FreeType 2.14.3. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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 case e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="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 case e in #( + e) case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in #( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +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 -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in #( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in #( + e) 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 ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and +$0: freetype@nongnu.org about your system, including any +$0: error possibly output before this message. Then install +$0: a modern shell, or manually run the script under such a +$0: shell if you do have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='FreeType' +PACKAGE_TARNAME='freetype' +PACKAGE_VERSION='2.14.3' +PACKAGE_STRING='FreeType 2.14.3' +PACKAGE_BUGREPORT='freetype@nongnu.org' +PACKAGE_URL='' + +ac_unique_file="ftconfig.h.in" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +ac_func_c_list= +enable_year2038=no +ac_subst_vars='LTLIBOBJS +LIBOBJS +build_libtool_libs +wl +hardcode_libdir_flag_spec +LIBSSTATIC_CONFIG +PKGCONFIG_LIBS_PRIVATE +PKGCONFIG_REQUIRES_PRIVATE +PKGCONFIG_LIBS +PKGCONFIG_REQUIRES +ftmac_c +PYTHON_VERSION +PYTHON +PTHREAD_CFLAGS +PTHREAD_LIBS +PTHREAD_CXX +PTHREAD_CC +ax_pthread_config +target_os +target_vendor +target_cpu +target +FT_DEMO_LDFLAGS +FT_DEMO_CFLAGS +LIBRSVG_LIBS +LIBRSVG_CFLAGS +BROTLI_LIBS +BROTLI_CFLAGS +HARFBUZZ_LIBS +HARFBUZZ_CFLAGS +have_libpng +LIBPNG_LIBS +LIBPNG_CFLAGS +BZIP2_LIBS +BZIP2_CFLAGS +SYSTEM_ZLIB +ZLIB_LIBS +ZLIB_CFLAGS +XX_ANSIFLAGS +XX_CFLAGS +FTSYS_SRC +INSTALL_FT2_CONFIG +MKDIR_P +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +EXEEXT_BUILD +LDFLAGS_BUILD +CFLAGS_BUILD +CC_BUILD +RC +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +AWK +RANLIB +STRIP +ac_ct_AR +AR +FILECMD +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +LIBTOOL +OBJDUMP +DLLTOOL +AS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +CPP +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +ft_version +version_info +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_shared +enable_static +enable_pic +with_pic +enable_fast_install +enable_aix_soname +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +enable_freetype_config +enable_largefile +enable_mmap +with_zlib +with_bzip2 +with_png +with_harfbuzz +with_brotli +with_librsvg +with_old_mac_fonts +with_fsspec +with_fsref +with_quickdraw_toolbox +with_quickdraw_carbon +with_ats +enable_year2038 +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +LT_SYS_LIBRARY_PATH +ZLIB_CFLAGS +ZLIB_LIBS +BZIP2_CFLAGS +BZIP2_LIBS +LIBPNG_CFLAGS +LIBPNG_LIBS +HARFBUZZ_CFLAGS +HARFBUZZ_LIBS +BROTLI_CFLAGS +BROTLI_LIBS +LIBRSVG_CFLAGS +LIBRSVG_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +'configure' configures FreeType 2.14.3 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print 'checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for '--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/freetype] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of FreeType 2.14.3:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --enable-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --disable-libtool-lock avoid locking (might break parallel builds) + --enable-freetype-config + install freetype-config + --disable-largefile omit support for large files + --disable-mmap do not check mmap() and do not use + --enable-year2038 support timestamps after 2038 + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-zlib=[yes|no|auto] + use system zlib instead of internal library + [default=auto] + --with-bzip2=[yes|no|auto] + support bzip2 compressed fonts [default=auto] + --with-png=[yes|no|auto] + support png compressed OpenType embedded bitmaps + [default=auto] + --with-harfbuzz=[yes|dynamic|no|auto] + improve auto-hinting of OpenType fonts + [default=auto] + --with-brotli=[yes|no|auto] + support decompression of WOFF2 streams + [default=auto] + --with-librsvg=[yes|no|auto] + support OpenType SVG fonts in FreeType demo programs + [default=auto] + --with-old-mac-fonts allow Mac resource-based fonts to be used + --with-fsspec use obsolete FSSpec API of MacOS, if available + (default=yes) + --with-fsref use Carbon FSRef API of MacOS, if available + (default=yes) + --with-quickdraw-toolbox + use MacOS QuickDraw in ToolBox, if available + (default=yes) + --with-quickdraw-carbon use MacOS QuickDraw in Carbon, if available + (default=yes) + --with-ats use AppleTypeService, if available (default=yes) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config + ZLIB_LIBS linker flags for ZLIB, overriding pkg-config + BZIP2_CFLAGS + C compiler flags for BZIP2, overriding pkg-config + BZIP2_LIBS linker flags for BZIP2, overriding pkg-config + LIBPNG_CFLAGS + C compiler flags for LIBPNG, overriding pkg-config + LIBPNG_LIBS linker flags for LIBPNG, overriding pkg-config + HARFBUZZ_CFLAGS + C compiler flags for HARFBUZZ, overriding pkg-config + HARFBUZZ_LIBS + linker flags for HARFBUZZ, overriding pkg-config + BROTLI_CFLAGS + C compiler flags for BROTLI, overriding pkg-config + BROTLI_LIBS linker flags for BROTLI, overriding pkg-config + LIBRSVG_CFLAGS + C compiler flags for LIBRSVG, overriding pkg-config + LIBRSVG_LIBS + linker flags for LIBRSVG, overriding pkg-config + +Use these variables to override the choices made by 'configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +FreeType configure 2.14.3 +generated by GNU Autoconf 2.72 + +Copyright (C) 2023 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_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 case e in #( + e) 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 case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +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_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (void); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (void); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_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 case e in #( + e) 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 ;; +esac +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_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + 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 case e in #( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +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_check_decl +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 FreeType $as_me 2.14.3, which was +generated by GNU Autoconf 2.72. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See 'config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (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; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + 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 + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// 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) +{ + // 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; + // Work around memory leak warnings. + free (ia); + + // 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 " stdio.h stdio_h HAVE_STDIO_H" +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 " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +as_fn_append ac_func_c_list " getpagesize HAVE_GETPAGESIZE" + +# Auxiliary files required by this configure script. +ac_aux_files="install-sh ltmain.sh config.guess config.sub" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." + +# 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 case e in #( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Don't forget to update `docs/VERSIONS.TXT'! + +version_info='26:6:20' + +ft_version=`echo $version_info | tr : .` + + + +# checks for system type + + + + + # 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 case e in #( + e) 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 + ;; +esac +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 case e in #( + e) 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 + ;; +esac +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 + + + + +# checks for programs + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 ;; +esac +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 case e in #( + e) 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 ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in #( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in #( + e) { { 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; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in #( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in #( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) 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 case e in #( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +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 case e in #( + e) 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 ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) 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 case e in #( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +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 case e in #( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) 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 case e in #( + e) { 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" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking 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 case e in #( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +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 case e in #( + e) { { 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; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.24 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + PKG_CONFIG="" + fi +fi + + +case `pwd` in + *\ * | *\ *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.5.4' +macro_revision='2.5.4' + + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +printf %s "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +printf "%s\n" "printf" >&6; } ;; + print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +printf "%s\n" "print -r" >&6; } ;; + *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +printf "%s\n" "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ 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 case e in #( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in #( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ 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 case e in #( + e) 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 + ;; +esac +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 case e in #( + e) if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in #( +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi ;; +esac +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" + + EGREP_TRADITIONAL=$EGREP + ac_cv_path_EGREP_TRADITIONAL=$EGREP + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +printf %s "checking for fgrep... " >&6; } +if test ${ac_cv_path_FGREP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_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 fgrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in #( +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_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" 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "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_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_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_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +printf "%s\n" "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else case e in #( + e) with_gnu_ld=no ;; +esac +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw* | *-*-windows*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${lt_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +printf "%s\n" "$LD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${lt_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if test ${lt_cv_path_NM+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw* | windows*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +printf "%s\n" "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # 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_DUMPBIN="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +printf "%s\n" "$DUMPBIN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # 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_DUMPBIN="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +printf "%s\n" "$ac_ct_DUMPBIN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + 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 + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +printf %s "checking the name lister ($NM) interface... " >&6; } +if test ${lt_cv_nm_interface+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +printf "%s\n" "$lt_cv_nm_interface" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +printf %s "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +printf "%s\n" "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +printf %s "checking the maximum length of command line arguments... " >&6; } +if test ${lt_cv_sys_max_cmd_len+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu* | ironclad*) + # Under GNU Hurd and Ironclad, this test is not required because there + # is no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | windows* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + ;; +esac +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 +printf "%s\n" "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +printf %s "checking how to convert $build file names to $host format... " >&6; } +if test ${lt_cv_to_host_file_cmd+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $host in + *-*-mingw* ) + case $build in + *-*-mingw* | *-*-windows* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* | *-*-windows* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + ;; +esac +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +printf %s "checking how to convert $build file names to toolchain format... " >&6; } +if test ${lt_cv_to_tool_file_cmd+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* | *-*-windows* ) + case $build in + *-*-mingw* | *-*-windows* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + ;; +esac +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +printf %s "checking for $LD option to reload object files... " >&6; } +if test ${lt_cv_ld_reload_flag+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_ld_reload_flag='-r' ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | windows* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +# Extract the first word of "file", so it can be a program name with args. +set dummy file; 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_FILECMD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$FILECMD"; then + ac_cv_prog_FILECMD="$FILECMD" # 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_FILECMD="file" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_FILECMD" && ac_cv_prog_FILECMD=":" +fi ;; +esac +fi +FILECMD=$ac_cv_prog_FILECMD +if test -n "$FILECMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 +printf "%s\n" "$FILECMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; 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_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_OBJDUMP="${ac_tool_prefix}objdump" + 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 ;; +esac +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +printf "%s\n" "$OBJDUMP" >&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_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; 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_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_OBJDUMP="objdump" + 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 ;; +esac +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +printf "%s\n" "$ac_ct_OBJDUMP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + 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 + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +printf %s "checking how to recognize dependent libraries... " >&6; } +if test ${lt_cv_deplibs_check_method+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='$FILECMD -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | windows* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly* | midnightbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=$FILECMD + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +*-mlibc) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +serenity*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | windows* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; 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_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_DLLTOOL="${ac_tool_prefix}dlltool" + 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 ;; +esac +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +printf "%s\n" "$DLLTOOL" >&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_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; 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_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_DLLTOOL="dlltool" + 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 ;; +esac +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +printf "%s\n" "$ac_ct_DLLTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + 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 + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +printf %s "checking how to associate runtime and link libraries... " >&6; } +if test ${lt_cv_sharedlib_from_linklib_cmd+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | windows* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} + + + + + + +# Use ARFLAGS variable as AR's operation code to sync the variable naming with +# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have +# higher priority because that's what people were doing historically (setting +# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS +# variable obsoleted/removed. + +test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} +lt_ar_flags=$AR_FLAGS + + + + + + +# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override +# by AR_FLAGS because that was never working and AR_FLAGS is about to die. + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +printf %s "checking for archiver @FILE support... " >&6; } +if test ${lt_cv_ar_at_file+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +printf "%s\n" "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AWK" && break +done + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +printf %s "checking command to parse $NM output from $compiler object... " >&6; } +if test ${lt_cv_sys_global_symbol_pipe+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | windows* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BCDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw* | windows*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++ or ICC, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(void){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + ;; +esac +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +printf "%s\n" "failed" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +printf %s "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test ${with_sysroot+y} +then : + withval=$with_sysroot; +else case e in #( + e) with_sysroot=no ;; +esac +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + # Trim trailing / since we'll always append absolute paths and we want + # to avoid //, if only for less confusing output for the user. + lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +printf "%s\n" "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +printf "%s\n" "${lt_sysroot:-no}" >&6; } + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +printf %s "checking for a working dd... " >&6; } +if test ${ac_cv_path_lt_DD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in dd + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +printf "%s\n" "$ac_cv_path_lt_DD" >&6; } + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +printf %s "checking how to truncate binary pipes... " >&6; } +if test ${lt_cv_truncate_bin+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +printf "%s\n" "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + +# Check whether --enable-libtool-lock was given. +if test ${enable_libtool_lock+y} +then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `$FILECMD conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `$FILECMD conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `$FILECMD conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `$FILECMD conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*|x86_64-gnu*) + case `$FILECMD conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*|x86_64-gnu*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +printf %s "checking whether the C compiler needs -belf... " >&6; } +if test ${lt_cv_cc_needs_belf+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_cc_needs_belf=yes +else case e in #( + e) lt_cv_cc_needs_belf=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + 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 + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `$FILECMD conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; 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_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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_MANIFEST_TOOL="${ac_tool_prefix}mt" + 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 ;; +esac +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +printf "%s\n" "$MANIFEST_TOOL" >&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_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; 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_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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_MANIFEST_TOOL="mt" + 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 ;; +esac +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + 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 + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if test ${lt_cv_path_manifest_tool+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_path_manifest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_manifest_tool=yes + fi + rm -f conftest* ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_manifest_tool" >&5 +printf "%s\n" "$lt_cv_path_manifest_tool" >&6; } +if test yes != "$lt_cv_path_manifest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; 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_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # 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_DSYMUTIL="${ac_tool_prefix}dsymutil" + 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 ;; +esac +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +printf "%s\n" "$DSYMUTIL" >&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_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; 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_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # 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_DSYMUTIL="dsymutil" + 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 ;; +esac +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + 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 + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; 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_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # 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_NMEDIT="${ac_tool_prefix}nmedit" + 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 ;; +esac +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +printf "%s\n" "$NMEDIT" >&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_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; 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_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # 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_NMEDIT="nmedit" + 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 ;; +esac +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +printf "%s\n" "$ac_ct_NMEDIT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + 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 + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; 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_LIPO+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # 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_LIPO="${ac_tool_prefix}lipo" + 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 ;; +esac +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +printf "%s\n" "$LIPO" >&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_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; 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_LIPO+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # 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_LIPO="lipo" + 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 ;; +esac +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +printf "%s\n" "$ac_ct_LIPO" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + 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 + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; 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_OTOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # 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_OTOOL="${ac_tool_prefix}otool" + 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 ;; +esac +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +printf "%s\n" "$OTOOL" >&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_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; 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_OTOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # 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_OTOOL="otool" + 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 ;; +esac +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +printf "%s\n" "$ac_ct_OTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + 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 + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; 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_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # 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_OTOOL64="${ac_tool_prefix}otool64" + 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 ;; +esac +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +printf "%s\n" "$OTOOL64" >&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_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; 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_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # 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_OTOOL64="otool64" + 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 ;; +esac +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +printf "%s\n" "$ac_ct_OTOOL64" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + 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 + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +printf %s "checking for -single_module linker flag... " >&6; } +if test ${lt_cv_apple_cc_single_mod+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } + + # Feature test to disable chained fixups since it is not + # compatible with '-undefined dynamic_lookup' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -no_fixup_chains linker flag" >&5 +printf %s "checking for -no_fixup_chains linker flag... " >&6; } +if test ${lt_cv_support_no_fixup_chains+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-no_fixup_chains" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_support_no_fixup_chains=yes +else case e in #( + e) lt_cv_support_no_fixup_chains=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_support_no_fixup_chains" >&5 +printf "%s\n" "$lt_cv_support_no_fixup_chains" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +printf %s "checking for -exported_symbols_list linker flag... " >&6; } +if test ${lt_cv_ld_exported_symbols_list+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_ld_exported_symbols_list=yes +else case e in #( + e) lt_cv_ld_exported_symbols_list=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +printf %s "checking for -force_load linker flag... " >&6; } +if test ${lt_cv_ld_force_load+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 + $AR $AR_FLAGS libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main(void) { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +printf "%s\n" "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) + case $MACOSX_DEPLOYMENT_TARGET,$host in + 10.[012],*|,*powerpc*-darwin[5-8]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + *) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' + if test yes = "$lt_cv_support_no_fixup_chains"; then + as_fn_append _lt_dar_allow_undefined ' $wl-no_fixup_chains' + fi + ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + _lt_dar_needs_single_mod=no + case $host_os in + rhapsody* | darwin1.*) + _lt_dar_needs_single_mod=yes ;; + darwin*) + # When targeting Mac OS X 10.4 (darwin 8) or later, + # -single_module is the default and -multi_module is unsupported. + # The toolchain on macOS 10.14 (darwin 18) and later cannot + # target any OS version that needs -single_module. + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*-darwin[567].*|10.[0-3],*-darwin[5-9].*|10.[0-3],*-darwin1[0-7].*) + _lt_dar_needs_single_mod=yes ;; + esac + ;; + esac + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes +then : + printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h + +fi + + + + + +# Set options +enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; 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_AS+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AS"; then + ac_cv_prog_AS="$AS" # 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_AS="${ac_tool_prefix}as" + 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 ;; +esac +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +printf "%s\n" "$AS" >&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_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; 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_AS+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # 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_AS="as" + 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 ;; +esac +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 +printf "%s\n" "$ac_ct_AS" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_AS" = x; then + AS="false" + 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 + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; 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_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_DLLTOOL="${ac_tool_prefix}dlltool" + 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 ;; +esac +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +printf "%s\n" "$DLLTOOL" >&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_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; 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_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_DLLTOOL="dlltool" + 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 ;; +esac +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +printf "%s\n" "$ac_ct_DLLTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + 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 + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; 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_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_OBJDUMP="${ac_tool_prefix}objdump" + 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 ;; +esac +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +printf "%s\n" "$OBJDUMP" >&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_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; 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_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_OBJDUMP="objdump" + 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 ;; +esac +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +printf "%s\n" "$ac_ct_OBJDUMP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + 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 + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + + ;; +esac + +test -z "$AS" && AS=as + + + + + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + enable_dlopen=no + + + + # Check whether --enable-shared was given. +if test ${enable_shared+y} +then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else case e in #( + e) enable_shared=yes ;; +esac +fi + + + + + + + + + + # Check whether --enable-static was given. +if test ${enable_static+y} +then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else case e in #( + e) enable_static=yes ;; +esac +fi + + + + + + + + + + # Check whether --enable-pic was given. +if test ${enable_pic+y} +then : + enableval=$enable_pic; lt_p=${PACKAGE-default} + case $enableval in + yes|no) pic_mode=$enableval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else case e in #( + e) # Check whether --with-pic was given. +if test ${with_pic+y} +then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else case e in #( + e) pic_mode=default ;; +esac +fi + + ;; +esac +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test ${enable_fast_install+y} +then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else case e in #( + e) enable_fast_install=yes ;; +esac +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +printf %s "checking which variant of shared library versioning to provide... " >&6; } + # Check whether --enable-aix-soname was given. +if test ${enable_aix_soname+y} +then : + enableval=$enable_aix_soname; case $enableval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --enable-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$enable_aix_soname +else case e in #( + e) # Check whether --with-aix-soname was given. +if test ${with_aix_soname+y} +then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else case e in #( + e) if test ${lt_cv_with_aix_soname+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_with_aix_soname=aix ;; +esac +fi + ;; +esac +fi + + enable_aix_soname=$lt_cv_with_aix_soname ;; +esac +fi + + with_aix_soname=$enable_aix_soname + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +printf "%s\n" "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +printf %s "checking for objdir... " >&6; } +if test ${lt_cv_objdir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +printf "%s\n" "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC and +# ICC, which need '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +printf %s "checking for ${ac_tool_prefix}file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +printf %s "checking for file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +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 + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(void){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test ${lt_cv_prog_compiler_rtti_exceptions+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + *flang* | ftn | f18* | f95*) + # Flang compiler. + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *-mlibc) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + serenity*) + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +printf %s "checking for $compiler option to produce PIC... " >&6; } +if test ${lt_cv_prog_compiler_pic+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test ${lt_cv_prog_compiler_pic_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test ${lt_cv_prog_compiler_static_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +printf %s "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +printf "%s\n" "$hard_links" >&6; } + if test no = "$hard_links"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | windows* | pw32* | cegcc*) + # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++ or Intel C++ Compiler. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) + with_gnu_ld=yes + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | windows* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + file_list_spec='@' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=no + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + file_list_spec='@' + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + *-mlibc) + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + ;; +esac +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + ;; +esac +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | windows* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++ or Intel C++ Compiler. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl* | icl*) + # Native MSVC or ICC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -Fe$output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC and ICC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly* | midnightbsd*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +printf %s "checking if $CC understands -b... " >&6; } +if test ${lt_cv_prog_compiler__b+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if test ${lt_cv_irix_exported_symbol+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_irix_exported_symbol=yes +else case e in #( + e) lt_cv_irix_exported_symbol=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + ;; + esac + ;; + + *-mlibc) + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + file_list_spec='@' + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + serenity*) + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +printf "%s\n" "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +printf %s "checking whether -lc should be explicitly linked in... " >&6; } +if test ${lt_cv_archive_cmds_need_lc+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +printf %s "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --enable-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | windows* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + # If user builds GCC with multilib enabled, + # it should just install on $(libdir) + # not on $(libdir)/../bin or 32 bits dlls would override 64 bit ones. + if test xyes = x"$multilib"; then + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + $install_prog $dir/$dlname $destdir/$dlname~ + chmod a+x $destdir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib $destdir/$dlname'\'' || exit \$?; + fi' + else + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + fi + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | windows* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl* | *,icl*) + # Native MSVC or ICC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw* | windows*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC and ICC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly* | midnightbsd*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + case $host_cpu in + powerpc64) + # On FreeBSD bi-arch platforms, a different variable is used for 32-bit + # binaries. See . + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int test_pointer_size[sizeof (void *) - 5]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + shlibpath_var=LD_LIBRARY_PATH +else case e in #( + e) shlibpath_var=LD_32_LIBRARY_PATH ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + *) + shlibpath_var=LD_LIBRARY_PATH + ;; + esac + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib' + sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib' + hardcode_into_libs=no + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # -rpath works at least for libraries that are not overridden by + # libraries installed in system locations. + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if test ${lt_cv_shlibpath_overrides_runpath+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null +then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ;; +esac +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directories which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +*-mlibc) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='mlibc ld.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +serenity*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + dynamic_linker='SerenityOS LibELF' + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +emscripten*) + version_type=none + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + dynamic_linker="Emscripten linker" + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + *flang* | ftn | f18* | f95*) + # Flang compiler. + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *-mlibc) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + serenity*) + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +printf %s "checking for $compiler option to produce PIC... " >&6; } +if test ${lt_cv_prog_compiler_pic+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test ${lt_cv_prog_compiler_pic_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test ${lt_cv_prog_compiler_static_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + +='-fPIC' + archive_cmds='$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib' + archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib -s EXPORTED_FUNCTIONS=@$output_objdir/$soname.expsym' + archive_cmds_need_lc=no + no_undefined_flag= + ;; + +*) + dynamic_linker=no + ;; +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +printf "%s\n" "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +printf %s "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +printf "%s\n" "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | windows* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dl_dlopen=yes +else case e in #( + e) ac_cv_lib_dl_dlopen=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else case e in #( + e) + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; +esac +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes +then : + lt_cv_dlopen=shl_load +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +printf %s "checking for shl_load in -ldld... " >&6; } +if test ${ac_cv_lib_dld_shl_load+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (void); +int +main (void) +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dld_shl_load=yes +else case e in #( + e) ac_cv_lib_dld_shl_load=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes +then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else case e in #( + e) ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes +then : + lt_cv_dlopen=dlopen +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dl_dlopen=yes +else case e in #( + e) ac_cv_lib_dl_dlopen=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +printf %s "checking for dlopen in -lsvld... " >&6; } +if test ${ac_cv_lib_svld_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_svld_dlopen=yes +else case e in #( + e) ac_cv_lib_svld_dlopen=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes +then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +printf %s "checking for dld_link in -ldld... " >&6; } +if test ${ac_cv_lib_dld_dld_link+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (void); +int +main (void) +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dld_dld_link=yes +else case e in #( + e) ac_cv_lib_dld_dld_link=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes +then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +printf %s "checking whether a program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord (void) __attribute__((visibility("default"))); +#endif + +int fnord (void) { return 42; } +int main (void) +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +printf "%s\n" "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +printf %s "checking whether a statically linked program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self_static+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord (void) __attribute__((visibility("default"))); +#endif + +int fnord (void) { return 42; } +int main (void) +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +printf %s "checking whether stripping libraries is possible... " >&6; } +if test -z "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +else + if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + case $host_os in + darwin*) + # FIXME - insert some real tests, host_os isn't really good enough + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + ;; + freebsd*) + if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + fi + ;; + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; + esac + fi +fi + + + + + + + + + + + + + # Report what library types will actually be built + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +printf %s "checking if libtool supports shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +printf "%s\n" "$can_build_shared" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +printf %s "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +printf "%s\n" "$enable_shared" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +printf %s "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +printf "%s\n" "$enable_static" >&6; } + + + + +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 + +CC=$lt_save_CC + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + +ac_fn_c_check_header_compile "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default" +if test "x$ac_cv_header_windows_h" = xyes +then : + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. +set dummy ${ac_tool_prefix}windres; 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_RC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$RC"; then + ac_cv_prog_RC="$RC" # 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_RC="${ac_tool_prefix}windres" + 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 ;; +esac +fi +RC=$ac_cv_prog_RC +if test -n "$RC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RC" >&5 +printf "%s\n" "$RC" >&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_RC"; then + ac_ct_RC=$RC + # Extract the first word of "windres", so it can be a program name with args. +set dummy windres; 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_RC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_RC"; then + ac_cv_prog_ac_ct_RC="$ac_ct_RC" # 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_RC="windres" + 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 ;; +esac +fi +ac_ct_RC=$ac_cv_prog_ac_ct_RC +if test -n "$ac_ct_RC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RC" >&5 +printf "%s\n" "$ac_ct_RC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_RC" = x; then + RC="" + 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 + RC=$ac_ct_RC + fi +else + RC="$ac_cv_prog_RC" +fi + + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +compiler_RC=$CC +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + +lt_cv_prog_compiler_c_o_RC=yes + +if test -n "$compiler"; then + : + + + +fi + +GCC=$lt_save_GCC +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 + +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS + +fi + + + +# checks for native programs to generate building tool + +if test ${cross_compiling} = yes; then + # Extract the first word of "${build}-gcc", so it can be a program name with args. +set dummy ${build}-gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_BUILD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC_BUILD"; then + ac_cv_prog_CC_BUILD="$CC_BUILD" # 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_BUILD="${build}-gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC_BUILD=$ac_cv_prog_CC_BUILD +if test -n "$CC_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_BUILD" >&5 +printf "%s\n" "$CC_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -z "${CC_BUILD}" && # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_BUILD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC_BUILD"; then + ac_cv_prog_CC_BUILD="$CC_BUILD" # 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_BUILD="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC_BUILD=$ac_cv_prog_CC_BUILD +if test -n "$CC_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_BUILD" >&5 +printf "%s\n" "$CC_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -z "${CC_BUILD}" && # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_BUILD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC_BUILD"; then + ac_cv_prog_CC_BUILD="$CC_BUILD" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC_BUILD="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC_BUILD + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC_BUILD to just the basename; use the full file name. + shift + ac_cv_prog_CC_BUILD="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC_BUILD=$ac_cv_prog_CC_BUILD +if test -n "$CC_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_BUILD" >&5 +printf "%s\n" "$CC_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -z "${CC_BUILD}" && # 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_CC_BUILD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC_BUILD"; then + ac_cv_prog_CC_BUILD="$CC_BUILD" # 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_BUILD="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 ;; +esac +fi +CC_BUILD=$ac_cv_prog_CC_BUILD +if test -n "$CC_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_BUILD" >&5 +printf "%s\n" "$CC_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -z "${CC_BUILD}" && as_fn_error $? "cannot find native C compiler" "$LINENO" 5 + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of native executables" >&5 +printf %s "checking for suffix of native executables... " >&6; } + rm -f a.* b.* a_out.exe conftest.* + echo > conftest.c "int main(void) { return 0;}" + ${CC_BUILD} conftest.c || as_fn_error $? "native C compiler is not working" "$LINENO" 5 + rm -f conftest.c + if test -x a.out -o -x b.out -o -x conftest; then + EXEEXT_BUILD="" + elif test -x a_out.exe -o -x conftest.exe; then + EXEEXT_BUILD=".exe" + elif test -x conftest.*; then + EXEEXT_BUILD=`echo conftest.* | sed -n '1s/^.*\././'` + fi + rm -f a.* b.* a_out.exe conftest.* + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EXEEXT_BUILD" >&5 +printf "%s\n" "$EXEEXT_BUILD" >&6; } + CFLAGS_BUILD= + LDFLAGS_BUILD= +else + CC_BUILD=${CC} + CFLAGS_BUILD=${CFLAGS} + LDFLAGS_BUILD=${LDFLAGS} + EXEEXT_BUILD=${EXEEXT} +fi + + + + + + + +# Since these files will be eventually called from another directory (namely +# from the top level) we make the path of the scripts absolute. +# +# This small code snippet has been taken from automake's `ylwrap' script. + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + ;; +esac +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +case "$INSTALL" in +[\\/]* | ?:[\\/]*) + ;; +*[\\/]*) + INSTALL="`pwd`/$INSTALL" + ;; +esac + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + +case "$MKDIR_P" in +[\\/]* | ?:[\\/]*) + ;; +*[\\/]*) + MKDIR_P="`pwd`/$MKDIR_P" + ;; +esac + + +# checks for header files + +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" "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 + + + +# checks for typedefs, structures, and compiler characteristics + +{ 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 case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else case e in #( + e) ac_cv_c_const=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf "%s\n" "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf "%s\n" "#define const /**/" >>confdefs.h + +fi + + +# Check whether --enable-freetype-config was given. +if test ${enable_freetype_config+y} +then : + enableval=$enable_freetype_config; case "${enableval}" in + yes) enable_freetype_config="TRUE" ;; + no) enable_freetype_config="FALSE" ;; + *) as_fn_error $? "unknown value '${enableval}' passed with --enable-freetype-config" "$LINENO" 5 ;; + esac +else case e in #( + e) enable_freetype_config="FALSE" ;; +esac +fi + + +INSTALL_FT2_CONFIG=$enable_freetype_config + + +# checks for library functions + +# Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi +if test "$enable_largefile,$enable_year2038" != no,no +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable large file support" >&5 +printf %s "checking for $CC option to enable large file support... " >&6; } +if test ${ac_cv_sys_largefile_opts+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_CC="$CC" + ac_opt_found=no + for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1" "-n32"; do + if test x"$ac_opt" != x"none needed" +then : + CC="$ac_save_CC $ac_opt" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifndef FTYPE +# define FTYPE off_t +#endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_opt" = x"none needed" +then : + # GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t. + CC="$CC -DFTYPE=ino_t" + if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) CC="$CC -D_FILE_OFFSET_BITS=64" + if ac_fn_c_try_compile "$LINENO" +then : + ac_opt='-D_FILE_OFFSET_BITS=64' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam +fi + ac_cv_sys_largefile_opts=$ac_opt + ac_opt_found=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + test $ac_opt_found = no || break + done + CC="$ac_save_CC" + + test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected" ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_opts" >&5 +printf "%s\n" "$ac_cv_sys_largefile_opts" >&6; } + +ac_have_largefile=yes +case $ac_cv_sys_largefile_opts in #( + "none needed") : + ;; #( + "supported through gnulib") : + ;; #( + "support not detected") : + ac_have_largefile=no ;; #( + "-D_FILE_OFFSET_BITS=64") : + +printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h + ;; #( + "-D_LARGE_FILES=1") : + +printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h + ;; #( + "-n32") : + CC="$CC -n32" ;; #( + *) : + as_fn_error $? "internal error: bad value for \$ac_cv_sys_largefile_opts" "$LINENO" 5 ;; +esac + +if test "$enable_year2038" != no +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option for timestamps after 2038" >&5 +printf %s "checking for $CC option for timestamps after 2038... " >&6; } +if test ${ac_cv_sys_year2038_opts+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_CPPFLAGS="$CPPFLAGS" + ac_opt_found=no + for ac_opt in "none needed" "-D_TIME_BITS=64" "-D__MINGW_USE_VC2005_COMPAT" "-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"; do + if test x"$ac_opt" != x"none needed" +then : + CPPFLAGS="$ac_save_CPPFLAGS $ac_opt" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_year2038_opts="$ac_opt" + ac_opt_found=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + test $ac_opt_found = no || break + done + CPPFLAGS="$ac_save_CPPFLAGS" + test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected" ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_year2038_opts" >&5 +printf "%s\n" "$ac_cv_sys_year2038_opts" >&6; } + +ac_have_year2038=yes +case $ac_cv_sys_year2038_opts in #( + "none needed") : + ;; #( + "support not detected") : + ac_have_year2038=no ;; #( + "-D_TIME_BITS=64") : + +printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h + ;; #( + "-D__MINGW_USE_VC2005_COMPAT") : + +printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h + ;; #( + "-U_USE_32_BIT_TIME_T"*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "the 'time_t' type is currently forced to be 32-bit. It +will stop working after mid-January 2038. Remove +_USE_32BIT_TIME_T from the compiler flags. +See 'config.log' for more details" "$LINENO" 5; } ;; #( + *) : + as_fn_error $? "internal error: bad value for \$ac_cv_sys_year2038_opts" "$LINENO" 5 ;; +esac + +fi + +fi + +# Here we check whether we can use our mmap file component. +# +# Note that `ftsystem.c` for Windows has its own mmap-like implementation +# not covered by `AC_FUNC_MMAP` and/or `FT_UNMAP_PARAM`. + +# Check whether --enable-mmap was given. +if test ${enable_mmap+y} +then : + enableval=$enable_mmap; enable_mmap="no" +else case e in #( + e) enable_mmap="yes" ;; +esac +fi + +if test "x${enable_mmap}" != "xno"; then + case "$host" in + *-*-mingw*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +printf %s "checking for working mmap... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using MapViewOfFile in Windows" >&5 +printf "%s\n" "using MapViewOfFile in Windows" >&6; } + FTSYS_SRC='$(TOP_DIR)/builds/windows/ftsystem.c' + ;; + *) + +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 + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +printf %s "checking for working mmap... " >&6; } +if test ${ac_cv_func_mmap_fixed_mapped+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on platforms where we know the result. + linux*) ac_cv_func_mmap_fixed_mapped=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_mmap_fixed_mapped=no ;; + esac +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. */ + +#include +#include + +#ifndef getpagesize +/* Prefer sysconf to the legacy getpagesize function, as getpagesize has + been removed from POSIX and is limited to page sizes that fit in 'int'. */ +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf (_SC_PAGESIZE) +# elif defined _SC_PAGE_SIZE +# define getpagesize() sysconf (_SC_PAGE_SIZE) +# elif HAVE_GETPAGESIZE +int getpagesize (); +# else +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif +#endif + +int +main (void) +{ + char *data, *data2, *data3; + const char *cdata2; + long i, pagesize; + int fd, fd2; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + return 2; + if (write (fd, data, pagesize) != pagesize) + return 3; + close (fd); + + /* Next, check that the tail of a page is zero-filled. File must have + non-zero length, otherwise we risk SIGBUS for entire page. */ + fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); + if (fd2 < 0) + return 4; + cdata2 = ""; + if (write (fd2, cdata2, 1) != 1) + return 5; + data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); + if (data2 == MAP_FAILED) + return 6; + for (i = 0; i < pagesize; ++i) + if (*(data2 + i)) + return 7; + close (fd2); + /* 'return 8;' not currently used. */ + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + return 9; + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + return 10; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + return 11; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + return 12; + if (read (fd, data3, pagesize) != pagesize) + return 13; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + return 14; + close (fd); + free (data); + free (data3); + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_mmap_fixed_mapped=yes +else case e in #( + e) ac_cv_func_mmap_fixed_mapped=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +printf "%s\n" "$ac_cv_func_mmap_fixed_mapped" >&6; } +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h + +fi +rm -f conftest.mmap conftest.txt + + if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then + FTSYS_SRC='$(PLATFORM_DIR)/ftsystem.c' + + { 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 case e in #( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in #( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +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 + +ac_fn_check_decl "$LINENO" "munmap" "ac_cv_have_decl_munmap" " + +#ifdef HAVE_UNISTD_H +#include +#endif +#include + + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_munmap" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_MUNMAP $ac_have_decl" >>confdefs.h + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for munmap's first parameter type" >&5 +printf %s "checking for munmap's first parameter type... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#include +#include +int munmap(void *, size_t); + + + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: void *" >&5 +printf "%s\n" "void *" >&6; } + +printf "%s\n" "#define MUNMAP_USES_VOIDP /**/" >>confdefs.h + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: char *" >&5 +printf "%s\n" "char *" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + + fi + ;; + esac +fi + +if test -z "$FTSYS_SRC"; then + FTSYS_SRC='$(BASE_DIR)/ftsystem.c' +fi + + + +# get compiler flags right +# +# We try to make the compiler work for C99-strict source. Even if the +# C compiler is gcc and C99 flags are available, some system headers +# might be broken in C99 mode. We have to check whether compilation +# finishes successfully. +# +if test "x$GCC" = xyes; then + XX_CFLAGS="-Wall" + case "$host" in + *-*-mingw*) + XX_ANSIFLAGS="-pedantic" + ;; + *-*-aix*) + XX_ANSIFLAGS="-pedantic" + ;; + *) + XX_ANSIFLAGS="" + + for a in "-pedantic" "-std=c99" + do + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking $CC compiler flag ${a} to assure ANSI C99 works correctly" >&5 +printf %s "checking $CC compiler flag ${a} to assure ANSI C99 works correctly... " >&6; } + orig_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} ${XX_ANSIFLAGS} ${a}" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#include + + +int +main (void) +{ + + + { + puts( "" ); + return 0; + } + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok, adding to XX_ANSIFLAGS" >&5 +printf "%s\n" "ok, adding to XX_ANSIFLAGS" >&6; } + XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}" + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS="${orig_CFLAGS}" + done + ;; + esac +else + case "$host" in + *-dec-osf*) + CFLAGS= + XX_CFLAGS="-std1 -g3" + XX_ANSIFLAGS= + ;; + *) + XX_CFLAGS= + XX_ANSIFLAGS= + ;; + esac +fi + + + + +# It is recommended that shared libraries hide symbols except those with +# explicit __attribute__((visibility("default"))). +# +found_visibility_flag=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -fvisibility=hidden compiler flag" >&5 +printf %s "checking for -fvisibility=hidden compiler flag... " >&6; } +orig_CFLAGS="${CFLAGS}" +CFLAGS="${CFLAGS} -fvisibility=hidden -Werror" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +__attribute__(( visibility( "default" ) )) int foo( void ); +__attribute__(( visibility( "hidden" ) )) int bar( void ); + +int foo( void ) { return 0; } +int bar( void ) { return 1; } + + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + found_visibility_flag=yes + CFLAGS="${orig_CFLAGS} -fvisibility=hidden" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +else case e in #( + e) CFLAGS="${orig_CFLAGS}" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +if test "${found_visibility_flag}" = "no"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -xldscope=hidden compiler flag" >&5 +printf %s "checking for -xldscope=hidden compiler flag... " >&6; } + orig_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} -xldscope=hidden" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + found_visibility_flag=yes + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) CFLAGS="${orig_CFLAGS}" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + +# All library tests below try `pkg-config' first. If that fails, a function +# from the library is tested in the traditional autoconf way (zlib, bzip2), +# or a config script is called (libpng). +# +# The `xxx_reqpriv' variables are for the `Requires.private' field in +# `freetype2.pc'. The `xxx_libspriv' variables are for the `Libs.private' +# field in `freetype2.pc' if pkg-config doesn't find a proper .pc file. +# +# The `xxx_libsstaticconf' variables are for the `freetype-config' script. +# +# Note that a call to PKG_CHECK_MODULES(XXX, ...) sets and creates the +# output variables `XXX_CFLAGS' and `XXX_LIBS'. In case one or both are set +# for a library by the user, no entry for this library is added to +# `Requires.private'. Instead, it gets added to `Libs.private' + + +# check for system zlib + + +# Check whether --with-zlib was given. +if test ${with_zlib+y} +then : + withval=$with_zlib; +else case e in #( + e) with_zlib=auto ;; +esac +fi + + +have_zlib=no +if test x"$with_zlib" = xyes -o x"$with_zlib" = xauto; then + zlib_pkg="zlib" + have_zlib_pkg=no + + if test x"$ZLIB_CFLAGS" = x -a x"$ZLIB_LIBS" = x; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$zlib_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$zlib_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + have_zlib_pkg=yes +fi + fi + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ZLIB" >&5 +printf %s "checking for ZLIB... " >&6; } + +if test -n "$ZLIB_CFLAGS"; then + pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$zlib_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$zlib_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "$zlib_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$ZLIB_LIBS"; then + pkg_cv_ZLIB_LIBS="$ZLIB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$zlib_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$zlib_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "$zlib_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + ZLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$zlib_pkg" 2>&1` + else + ZLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$zlib_pkg" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$ZLIB_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS + ZLIB_LIBS=$pkg_cv_ZLIB_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_zlib="yes (pkg-config)" +fi + + if test $have_zlib_pkg = yes; then + # we have zlib.pc + zlib_reqpriv="$zlib_pkg" + zlib_libspriv= + zlib_libsstaticconf=`$PKG_CONFIG --static --libs "$zlib_pkg"` + else + zlib_reqpriv= + + if test "$have_zlib" != no; then + # ZLIB_CFLAGS and ZLIB_LIBS are set by the user + zlib_libspriv="$ZLIB_LIBS" + zlib_libsstaticconf="$ZLIB_LIBS" + have_zlib="yes (ZLIB_CFLAGS and ZLIB_LIBS)" + else + # fall back to standard autoconf test + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gzsetparams in -lz" >&5 +printf %s "checking for gzsetparams in -lz... " >&6; } +if test ${ac_cv_lib_z_gzsetparams+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gzsetparams (void); +int +main (void) +{ +return gzsetparams (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_z_gzsetparams=yes +else case e in #( + e) ac_cv_lib_z_gzsetparams=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzsetparams" >&5 +printf "%s\n" "$ac_cv_lib_z_gzsetparams" >&6; } +if test "x$ac_cv_lib_z_gzsetparams" = xyes +then : + ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes +then : + have_zlib="yes (autoconf test)" + zlib_libspriv="-lz" + zlib_libsstaticconf="$zlib_libspriv" + ZLIB_LIBS="$zlib_libspriv" +fi + +fi + + fi + fi +fi + +if test x"$with_zlib" = xyes -a "$have_zlib" = no; then + as_fn_error $? "external zlib support requested but library not found" "$LINENO" 5 +fi + +SYSTEM_ZLIB= +if test "$have_zlib" != no; then + SYSTEM_ZLIB=yes +fi + + + +# check for system libbz2 + + +# Check whether --with-bzip2 was given. +if test ${with_bzip2+y} +then : + withval=$with_bzip2; +else case e in #( + e) with_bzip2=auto ;; +esac +fi + + +have_bzip2=no +if test x"$with_bzip2" = xyes -o x"$with_bzip2" = xauto; then + bzip2_pkg="bzip2" + have_bzip2_pkg=no + + if test x"$BZIP2_CFLAGS" = x -a x"$BZIP2_LIBS" = x; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$bzip2_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$bzip2_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + have_bzip2_pkg=yes +fi + fi + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZIP2" >&5 +printf %s "checking for BZIP2... " >&6; } + +if test -n "$BZIP2_CFLAGS"; then + pkg_cv_BZIP2_CFLAGS="$BZIP2_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$bzip2_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$bzip2_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_BZIP2_CFLAGS=`$PKG_CONFIG --cflags "$bzip2_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$BZIP2_LIBS"; then + pkg_cv_BZIP2_LIBS="$BZIP2_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$bzip2_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$bzip2_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_BZIP2_LIBS=`$PKG_CONFIG --libs "$bzip2_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + BZIP2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$bzip2_pkg" 2>&1` + else + BZIP2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$bzip2_pkg" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$BZIP2_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + BZIP2_CFLAGS=$pkg_cv_BZIP2_CFLAGS + BZIP2_LIBS=$pkg_cv_BZIP2_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_bzip2="yes (pkg-config)" +fi + + if test $have_bzip2_pkg = yes; then + # we have bzip2.pc + bzip2_reqpriv="$bzip2_pkg" + bzip2_libspriv= + bzip2_libsstaticconf=`$PKG_CONFIG --static --libs "$bzip2_pkg"` + else + bzip2_reqpriv= + + if test "$have_bzip2" != no; then + # BZIP2_CFLAGS and BZIP2_LIBS are set by the user + bzip2_libspriv="$BZIP2_LIBS" + bzip2_libsstaticconf="$BZIP2_LIBS" + have_bzip2="yes (BZIP2_CFLAGS and BZIP2_LIBS)" + else + # fall back to standard autoconf test + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzDecompress in -lbz2" >&5 +printf %s "checking for BZ2_bzDecompress in -lbz2... " >&6; } +if test ${ac_cv_lib_bz2_BZ2_bzDecompress+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbz2 $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char BZ2_bzDecompress (void); +int +main (void) +{ +return BZ2_bzDecompress (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bz2_BZ2_bzDecompress=yes +else case e in #( + e) ac_cv_lib_bz2_BZ2_bzDecompress=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzDecompress" >&5 +printf "%s\n" "$ac_cv_lib_bz2_BZ2_bzDecompress" >&6; } +if test "x$ac_cv_lib_bz2_BZ2_bzDecompress" = xyes +then : + ac_fn_c_check_header_compile "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default" +if test "x$ac_cv_header_bzlib_h" = xyes +then : + have_bzip2="yes (autoconf test)" + bzip2_libspriv="-lbz2" + bzip2_libsstaticconf="$bzip2_libspriv" + BZIP2_LIBS="$bzip2_libspriv" +fi + +fi + + fi + fi +fi + +if test x"$with_bzip2" = xyes -a "$have_bzip2" = no; then + as_fn_error $? "bzip2 support requested but library not found" "$LINENO" 5 +fi + + +# check for system libpng + + +# Check whether --with-png was given. +if test ${with_png+y} +then : + withval=$with_png; +else case e in #( + e) with_png=auto ;; +esac +fi + + +have_libpng=no +if test x"$with_png" = xyes -o x"$with_png" = xauto; then + libpng_pkg="libpng" + have_libpng_pkg=no + + if test x"$LIBPNG_CFLAGS" = x -a x"$LIBPNG_LIBS" = x; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$libpng_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$libpng_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + have_libpng_pkg=yes +fi + fi + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBPNG" >&5 +printf %s "checking for LIBPNG... " >&6; } + +if test -n "$LIBPNG_CFLAGS"; then + pkg_cv_LIBPNG_CFLAGS="$LIBPNG_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$libpng_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$libpng_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBPNG_CFLAGS=`$PKG_CONFIG --cflags "$libpng_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBPNG_LIBS"; then + pkg_cv_LIBPNG_LIBS="$LIBPNG_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$libpng_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$libpng_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBPNG_LIBS=`$PKG_CONFIG --libs "$libpng_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBPNG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$libpng_pkg" 2>&1` + else + LIBPNG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$libpng_pkg" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBPNG_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + LIBPNG_CFLAGS=$pkg_cv_LIBPNG_CFLAGS + LIBPNG_LIBS=$pkg_cv_LIBPNG_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_libpng="yes (pkg-config)" +fi + + if test $have_libpng_pkg = yes; then + # we have libpng.pc + libpng_reqpriv="$libpng_pkg" + libpng_libspriv= + libpng_libsstaticconf=`$PKG_CONFIG --static --libs "$libpng_pkg"` + else + libpng_reqpriv= + + if test "$have_libpng" != no; then + # LIBPNG_CFLAGS and LIBPNG_LIBS are set by the user + libpng_libspriv="$LIBPNG_LIBS" + libpng_libsstaticconf="$LIBPNG_LIBS" + have_libpng="yes (LIBPNG_CFLAGS and LIBPNG_LIBS)" + else + # fall back to config script + # Extract the first word of "libpng-config", so it can be a program name with args. +set dummy libpng-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_have_libpng+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$have_libpng"; then + ac_cv_prog_have_libpng="$have_libpng" # 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_have_libpng="yes (libpng-config)" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_have_libpng" && ac_cv_prog_have_libpng="no" +fi ;; +esac +fi +have_libpng=$ac_cv_prog_have_libpng +if test -n "$have_libpng"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_libpng" >&5 +printf "%s\n" "$have_libpng" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if test "$have_libpng" != no; then + LIBPNG_CFLAGS=`libpng-config --cflags` + LIBPNG_LIBS=`libpng-config --ldflags` + libpng_libspriv=`libpng-config --static --ldflags` + libpng_libsstaticconf="$libpng_libspriv" + fi + fi + fi +fi + +if test x"$with_png" = xyes -a "$have_libpng" = no; then + as_fn_error $? "libpng support requested but library not found" "$LINENO" 5 +fi + + +# check for system libharfbuzz + + +# Check whether --with-harfbuzz was given. +if test ${with_harfbuzz+y} +then : + withval=$with_harfbuzz; +else case e in #( + e) with_harfbuzz=auto ;; +esac +fi + + +have_harfbuzz=no +if test x"$with_harfbuzz" = xyes -o x"$with_harfbuzz" = xauto; then + harfbuzz_pkg="harfbuzz >= 2.0.0" + have_harfbuzz_pkg=no + + if test x"$HARFBUZZ_CFLAGS" = x -a x"$HARFBUZZ_LIBS" = x; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$harfbuzz_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$harfbuzz_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + have_harfbuzz_pkg=yes +fi + fi + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HARFBUZZ" >&5 +printf %s "checking for HARFBUZZ... " >&6; } + +if test -n "$HARFBUZZ_CFLAGS"; then + pkg_cv_HARFBUZZ_CFLAGS="$HARFBUZZ_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$harfbuzz_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$harfbuzz_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_HARFBUZZ_CFLAGS=`$PKG_CONFIG --cflags "$harfbuzz_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$HARFBUZZ_LIBS"; then + pkg_cv_HARFBUZZ_LIBS="$HARFBUZZ_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$harfbuzz_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$harfbuzz_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_HARFBUZZ_LIBS=`$PKG_CONFIG --libs "$harfbuzz_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + HARFBUZZ_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$harfbuzz_pkg" 2>&1` + else + HARFBUZZ_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$harfbuzz_pkg" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$HARFBUZZ_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + HARFBUZZ_CFLAGS=$pkg_cv_HARFBUZZ_CFLAGS + HARFBUZZ_LIBS=$pkg_cv_HARFBUZZ_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_harfbuzz="yes (pkg-config)" +fi + + if test $have_harfbuzz_pkg = yes; then + # we have harfbuzz.pc + harfbuzz_reqpriv="$harfbuzz_pkg" + harfbuzz_libspriv= + harfbuzz_libsstaticconf=`$PKG_CONFIG --static --libs "$harfbuzz_pkg"` + else + harfbuzz_reqpriv= + + if test "$have_harfbuzz" != no; then + # HARFBUZZ_CFLAGS and HARFBUZZ_LIBS are set by the user + harfbuzz_libspriv="$HARFBUZZ_LIBS" + harfbuzz_libsstaticconf="$HARFBUZZ_LIBS" + have_harfbuzz="yes (HARFBUZZ_CFLAGS and HARFBUZZ_LIBS)" + else + # since HarfBuzz is quite a new library we don't fall back to a + # different test; additionally, it has too many dependencies + : + fi + fi +fi + +have_harfbuzz_dynamic=no +if test x"$have_harfbuzz" = xno; then + if test x"$with_harfbuzz" = xdynamic -o x"$with_harfbuzz" = xauto; then + case "$host" in + *-*-mingw*) + # Windows uses its own LoadLibrary(), set variables to dynamic. + have_harfbuzz_dynamic=yes + have_harfbuzz="yes (dynamic)" + ;; + *) + # Check for libdl + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lc" >&5 +printf %s "checking for dlopen in -lc... " >&6; } +if test ${ac_cv_lib_c_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_c_dlopen=yes +else case e in #( + e) ac_cv_lib_c_dlopen=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_c_dlopen" >&6; } +if test "x$ac_cv_lib_c_dlopen" = xyes +then : + have_harfbuzz_dynamic=yes +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dl_dlopen=yes +else case e in #( + e) ac_cv_lib_dl_dlopen=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + have_harfbuzz_dynamic=yes + need_libdl=yes +fi + ;; +esac +fi + + if test x"$have_harfbuzz_dynamic" = xyes; then + have_harfbuzz="yes (dynamic)" + HARFBUZZ_CFLAGS= + if test x"$need_libdl" = xyes; then + HARFBUZZ_LIBS="-ldl" + fi + fi + ;; + esac + fi +fi + +if test x"$have_harfbuzz" = xno; then + if test x"$with_harfbuzz" != xno -a "$with_harfbuzz" != xauto; then + as_fn_error $? "harfbuzz support requested but library not found" "$LINENO" 5 + fi +fi + +# check for system libbrotlidec + + +# Check whether --with-brotli was given. +if test ${with_brotli+y} +then : + withval=$with_brotli; +else case e in #( + e) with_brotli=auto ;; +esac +fi + + +have_brotli=no +if test x"$with_brotli" = xyes -o x"$with_brotli" = xauto; then + brotli_pkg="libbrotlidec" + have_brotli_pkg=no + + if test x"$BROTLI_CFLAGS" = x -a x"$BROTLI_LIBS" = x; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$brotli_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$brotli_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + have_brotli_pkg=yes +fi + fi + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BROTLI" >&5 +printf %s "checking for BROTLI... " >&6; } + +if test -n "$BROTLI_CFLAGS"; then + pkg_cv_BROTLI_CFLAGS="$BROTLI_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$brotli_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$brotli_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_BROTLI_CFLAGS=`$PKG_CONFIG --cflags "$brotli_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$BROTLI_LIBS"; then + pkg_cv_BROTLI_LIBS="$BROTLI_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$brotli_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$brotli_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_BROTLI_LIBS=`$PKG_CONFIG --libs "$brotli_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + BROTLI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$brotli_pkg" 2>&1` + else + BROTLI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$brotli_pkg" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$BROTLI_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + BROTLI_CFLAGS=$pkg_cv_BROTLI_CFLAGS + BROTLI_LIBS=$pkg_cv_BROTLI_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_brotli="yes (pkg-config)" +fi + + if test $have_brotli_pkg = yes; then + # we have libbrotlidec.pc + brotli_reqpriv="$brotli_pkg" + brotli_libspriv= + brotli_libsstaticconf=`$PKG_CONFIG --static --libs "$brotli_pkg"` + else + brotli_reqpriv= + + if test "$have_brotli" != no; then + # BROTLI_CFLAGS and BROTLI_LIBS are set by the user + brotli_libspriv="$BROTLI_LIBS" + brotli_libsstaticconf="$BROTLI_LIBS" + have_brotli="yes (BROTLI_CFLAGS and BROTLI_LIBS)" + else + # since Brotli is quite a new library we don't fall back to a + # different test + : + fi + fi +fi + +if test x"$with_brotli" = xyes -a "$have_brotli" = no; then + as_fn_error $? "brotli support requested but library not found" "$LINENO" 5 +fi + + +# Checks for the demo programs. +# +# FreeType doesn't need this. However, since the demo program repository +# doesn't come with a `configure` script of its own, we integrate the tests +# here for simplicity. + +# We need `clock_gettime` from 'librt' for the `ftbench` demo program. +# +# The code is modeled after gnulib's file `clock_time.m4`, ignoring +# very old Solaris systems. +LIB_CLOCK_GETTIME= +{ 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 case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else case e in #( + e) ac_cv_search_clock_gettime=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + test "$ac_cv_search_clock_gettime" = "none required" \ + || LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime +fi + + +FT_DEMO_CFLAGS="" +FT_DEMO_LDFLAGS="$LIB_CLOCK_GETTIME" + +# 'librsvg' is needed to demonstrate SVG support. + +# Check whether --with-librsvg was given. +if test ${with_librsvg+y} +then : + withval=$with_librsvg; +else case e in #( + e) with_librsvg=auto ;; +esac +fi + + +have_librsvg=no +if test x"$with_librsvg" = xyes -o x"$with_librsvg" = xauto; then + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBRSVG" >&5 +printf %s "checking for LIBRSVG... " >&6; } + +if test -n "$LIBRSVG_CFLAGS"; then + pkg_cv_LIBRSVG_CFLAGS="$LIBRSVG_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.46.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.46.0") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBRSVG_CFLAGS=`$PKG_CONFIG --cflags "librsvg-2.0 >= 2.46.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBRSVG_LIBS"; then + pkg_cv_LIBRSVG_LIBS="$LIBRSVG_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.46.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.46.0") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBRSVG_LIBS=`$PKG_CONFIG --libs "librsvg-2.0 >= 2.46.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBRSVG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "librsvg-2.0 >= 2.46.0" 2>&1` + else + LIBRSVG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "librsvg-2.0 >= 2.46.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBRSVG_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + LIBRSVG_CFLAGS=$pkg_cv_LIBRSVG_CFLAGS + LIBRSVG_LIBS=$pkg_cv_LIBRSVG_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_librsvg="yes (pkg-config)" +fi + + if test "$have_librsvg" != no; then + FT_DEMO_CFLAGS="$FT_DEMO_CFLAGS $LIBRSVG_CFLAGS -DHAVE_LIBRSVG" + FT_DEMO_LDFLAGS="$FT_DEMO_LDFLAGS $LIBRSVG_LIBS" + fi +fi + +if test x"$with_librsvg" = xyes -a "$have_librsvg" = no; then + as_fn_error $? "librsvg support requested but library not found" "$LINENO" 5 +fi + + + + + +# Some options handling SDKs/archs in CFLAGS should be copied +# to LDFLAGS. Apple TechNote 2137 recommends to include these +# options in CFLAGS but not in LDFLAGS. + +save_config_args=$* +set dummy ${CFLAGS} +i=1 +while test $i -le $# +do + c=$1 + + case "${c}" in + -isysroot|-arch) # options taking 1 argument + a=$2 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether CFLAGS and LDFLAGS share ${c} ${a}" >&5 +printf %s "checking whether CFLAGS and LDFLAGS share ${c} ${a}... " >&6; } + if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null + then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, copy to LDFLAGS" >&5 +printf "%s\n" "no, copy to LDFLAGS" >&6; } + LDFLAGS="${LDFLAGS} ${c} ${a}" + fi + shift 1 + ;; + -m32|-m64|-march=*|-mcpu=*) # options taking no argument + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether CFLAGS and LDFLAGS share ${c}" >&5 +printf %s "checking whether CFLAGS and LDFLAGS share ${c}... " >&6; } + if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null + then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, copy to LDFLAGS" >&5 +printf "%s\n" "no, copy to LDFLAGS" >&6; } + LDFLAGS="${LDFLAGS} ${c}" + fi + ;; + # *) + # AC_MSG_RESULT([${c} is not copied to LDFLAGS]) + # ;; + esac + + shift 1 +done +set ${save_config_args} + + +# Whether to use Mac OS resource-based fonts. + +ftmac_c="" # src/base/ftmac.c should not be included in makefiles by default + + +# Check whether --with-old-mac-fonts was given. +if test ${with_old_mac_fonts+y} +then : + withval=$with_old_mac_fonts; +fi + +if test x$with_old_mac_fonts = xyes; then + orig_LDFLAGS="${LDFLAGS}" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CoreServices & ApplicationServices of Mac OS X" >&5 +printf %s "checking CoreServices & ApplicationServices of Mac OS X... " >&6; } + ft2_extra_libs="-Wl,-framework,CoreServices -Wl,-framework,ApplicationServices" + LDFLAGS="$LDFLAGS $ft2_extra_libs" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + short res = 0; + + + UseResFile( res ); + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + ftmac_c='ftmac.c' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OS_INLINE macro is ANSI compatible" >&5 +printf %s "checking whether OS_INLINE macro is ANSI compatible... " >&6; } + orig_CFLAGS="$CFLAGS -DFT_MACINTOSH" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + /* OSHostByteOrder() is typed as OS_INLINE */ + int32_t os_byte_order = OSHostByteOrder(); + + + if ( OSBigEndian != os_byte_order ) + return 1; + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_ANSI_OS_INLINE=1" + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, ANSI incompatible" >&5 +printf "%s\n" "no, ANSI incompatible" >&6; } + CFLAGS="$orig_CFLAGS" + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking type ResourceIndex" >&5 +printf %s "checking type ResourceIndex... " >&6; } + orig_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +# include +#endif + + +int +main (void) +{ + + + ResourceIndex i = 0; + return i; + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=1" + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=0" + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } + ft2_extra_libs="" + LDFLAGS="${orig_LDFLAGS}" + CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else + case x$host_os in + xdarwin*) + CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" + ;; + *) + ;; + esac +fi + + +# Whether to use FileManager, which is deprecated since Mac OS X 10.4. + + +# Check whether --with-fsspec was given. +if test ${with_fsspec+y} +then : + withval=$with_fsspec; +fi + +if test x$with_fsspec = xno; then + CFLAGS="$CFLAGS -DHAVE_FSSPEC=0" +elif test x$with_old_mac_fonts = xyes -a x$with_fsspec != x; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking FSSpec-based FileManager" >&5 +printf %s "checking FSSpec-based FileManager... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + FCBPBPtr paramBlock; + short vRefNum; + long dirID; + ConstStr255Param fileName; + FSSpec* spec; + + + /* FSSpec functions: deprecated since Mac OS X 10.4 */ + PBGetFCBInfoSync( paramBlock ); + FSMakeFSSpec( vRefNum, dirID, fileName, spec ); + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$CFLAGS -DHAVE_FSSPEC=1" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } + CFLAGS="$CFLAGS -DHAVE_FSSPEC=0" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + + +# Whether to use FileManager in Carbon since MacOS 9.x. + + +# Check whether --with-fsref was given. +if test ${with_fsref+y} +then : + withval=$with_fsref; +fi + +if test x$with_fsref = xno; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: +*** WARNING + FreeType2 built without FSRef API cannot load + data-fork fonts on MacOS, except of XXX.dfont. + " >&5 +printf "%s\n" "$as_me: WARNING: +*** WARNING + FreeType2 built without FSRef API cannot load + data-fork fonts on MacOS, except of XXX.dfont. + " >&2;} + CFLAGS="$CFLAGS -DHAVE_FSREF=0" +elif test x$with_old_mac_fonts = xyes -a x$with_fsref != x; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking FSRef-based FileManager" >&5 +printf %s "checking FSRef-based FileManager... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + short vRefNum; + long dirID; + ConstStr255Param fileName; + + Boolean* isDirectory; + UInt8* path; + SInt16 desiredRefNum; + SInt16* iterator; + SInt16* actualRefNum; + HFSUniStr255* outForkName; + FSVolumeRefNum volume; + FSCatalogInfoBitmap whichInfo; + FSCatalogInfo* catalogInfo; + FSForkInfo* forkInfo; + FSRef* ref; + +#if HAVE_FSSPEC + FSSpec* spec; +#endif + + /* FSRef functions: no need to check? */ + FSGetForkCBInfo( desiredRefNum, volume, iterator, + actualRefNum, forkInfo, ref, + outForkName ); + FSPathMakeRef( path, ref, isDirectory ); + +#if HAVE_FSSPEC + FSpMakeFSRef ( spec, ref ); + FSGetCatalogInfo( ref, whichInfo, catalogInfo, + outForkName, spec, ref ); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$CFLAGS -DHAVE_FSREF=1" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } + CFLAGS="$CFLAGS -DHAVE_FSREF=0" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + + +# Whether to use QuickDraw API in ToolBox, which is deprecated since +# Mac OS X 10.4. + + +# Check whether --with-quickdraw-toolbox was given. +if test ${with_quickdraw_toolbox+y} +then : + withval=$with_quickdraw_toolbox; +fi + +if test x$with_quickdraw_toolbox = xno; then + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0" +elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_toolbox != x; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking QuickDraw FontManager functions in ToolBox" >&5 +printf %s "checking QuickDraw FontManager functions in ToolBox... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + Str255 familyName; + SInt16 familyID = 0; + FMInput* fmIn = NULL; + FMOutput* fmOut = NULL; + + + GetFontName( familyID, familyName ); + GetFNum( familyName, &familyID ); + fmOut = FMSwapFont( fmIn ); + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=1" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + + +# Whether to use QuickDraw API in Carbon, which is deprecated since +# Mac OS X 10.4. + + +# Check whether --with-quickdraw-carbon was given. +if test ${with_quickdraw_carbon+y} +then : + withval=$with_quickdraw_carbon; +fi + +if test x$with_quickdraw_carbon = xno; then + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0" +elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_carbon != x; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking QuickDraw FontManager functions in Carbon" >&5 +printf %s "checking QuickDraw FontManager functions in Carbon... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + FMFontFamilyIterator famIter; + FMFontFamily family; + Str255 famNameStr; + FMFontFamilyInstanceIterator instIter; + FMFontStyle style; + FMFontSize size; + FMFont font; + FSSpec* pathSpec; + + + FMCreateFontFamilyIterator( NULL, NULL, kFMUseGlobalScopeOption, + &famIter ); + FMGetNextFontFamily( &famIter, &family ); + FMGetFontFamilyName( family, famNameStr ); + FMCreateFontFamilyInstanceIterator( family, &instIter ); + FMGetNextFontFamilyInstance( &instIter, &font, &style, &size ); + FMDisposeFontFamilyInstanceIterator( &instIter ); + FMDisposeFontFamilyIterator( &famIter ); + FMGetFontContainer( font, pathSpec ); + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=1" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + + +# Whether to use AppleTypeService since Mac OS X. + + +# Check whether --with-ats was given. +if test ${with_ats+y} +then : + withval=$with_ats; +fi + +if test x$with_ats = xno; then + CFLAGS="$CFLAGS -DHAVE_ATS=0" +elif test x$with_old_mac_fonts = xyes -a x$with_ats != x; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking AppleTypeService functions" >&5 +printf %s "checking AppleTypeService functions... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + FSSpec* pathSpec; + + + ATSFontFindFromName( NULL, kATSOptionFlagsUnRestrictedScope ); +#if HAVE_FSSPEC + ATSFontGetFileSpecification( 0, pathSpec ); +#endif + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$CFLAGS -DHAVE_ATS=1" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } + CFLAGS="$CFLAGS -DHAVE_ATS=0" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + +case "$CFLAGS" in + *HAVE_FSSPEC* | *HAVE_FSREF* | *HAVE_QUICKDRAW* | *HAVE_ATS* ) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: +*** WARNING + FSSpec/FSRef/QuickDraw/ATS options are explicitly given, + thus it is recommended to replace src/base/ftmac.c by builds/mac/ftmac.c. + " >&5 +printf "%s\n" "$as_me: WARNING: +*** WARNING + FSSpec/FSRef/QuickDraw/ATS options are explicitly given, + thus it is recommended to replace src/base/ftmac.c by builds/mac/ftmac.c. + " >&2;} + CFLAGS="$CFLAGS "'-I$(TOP_DIR)/builds/mac/' + ;; + *) + ;; +esac + +# Check for pthreads + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +printf %s "checking target system type... " >&6; } +if test ${ac_cv_target+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +printf "%s\n" "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_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_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "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_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + + if test "$ac_cv_path_EGREP_TRADITIONAL" +then : + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in #( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_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_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "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_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_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_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; 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_TRADITIONAL=$EGREP_TRADITIONAL +fi + ;; +esac +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL + + + + + +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 + +ax_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on Tru64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then + ax_pthread_save_CC="$CC" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + if test "x$PTHREAD_CC" != "x" +then : + CC="$PTHREAD_CC" +fi + if test "x$PTHREAD_CXX" != "x" +then : + CXX="$PTHREAD_CXX" +fi + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5 +printf %s "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; } + 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_join (void); +int +main (void) +{ +return pthread_join (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_pthread_ok=yes +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: $ax_pthread_ok" >&5 +printf "%s\n" "$ax_pthread_ok" >&6; } + if test "x$ax_pthread_ok" = "xno"; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + CC="$ax_pthread_save_CC" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items with a "," contain both +# C compiler flags (before ",") and linker flags (after ","). Other items +# starting with a "-" are C compiler flags, and remaining items are +# library names, except for "none" which indicates that we try without +# any flags at all, and "pthread-config" which is a program returning +# the flags for the Pth emulation library. + +ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 +# (Note: HP C rejects this with "bad form for `-t' option") +# -pthreads: Solaris/gcc (Note: HP C also rejects) +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads and +# -D_REENTRANT too), HP C (must be checked before -lpthread, which +# is present but should not be used directly; and before -mthreads, +# because the compiler interprets this as "-mt" + "-hreads") +# -mthreads: Mingw32/gcc, Lynx/gcc +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case $target_os in + + freebsd*) + + # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) + # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) + + ax_pthread_flags="-kthread lthread $ax_pthread_flags" + ;; + + hpux*) + + # From the cc(1) man page: "[-mt] Sets various -D flags to enable + # multi-threading and also sets -lpthread." + + ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" + ;; + + openedition*) + + # IBM z/OS requires a feature-test macro to be defined in order to + # enable POSIX threads at all, so give the user a hint if this is + # not set. (We don't define these ourselves, as they can affect + # other portions of the system API in unpredictable ways.) + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) + AX_PTHREAD_ZOS_MISSING +# endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1 +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 +printf "%s\n" "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} +fi +rm -rf conftest* + + ;; + + solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (N.B.: The stubs are missing + # pthread_cleanup_push, or rather a function called by this macro, + # so we could check for that, but who knows whether they'll stub + # that too in a future libc.) So we'll check first for the + # standard Solaris way of linking pthreads (-mt -lpthread). + + ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" + ;; +esac + +# Are we compiling with Clang? + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5 +printf %s "checking whether $CC is Clang... " >&6; } +if test ${ax_cv_PTHREAD_CLANG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 +then : + ax_cv_PTHREAD_CLANG=yes +fi +rm -rf conftest* + + fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 +printf "%s\n" "$ax_cv_PTHREAD_CLANG" >&6; } +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + + +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) + +# Note that for GCC and Clang -pthread generally implies -lpthread, +# except when -nostdlib is passed. +# This is problematic using libtool to build C++ shared libraries with pthread: +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 +# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 +# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 +# To solve this, first try -pthread together with -lpthread for GCC + +if test "x$GCC" = "xyes" +then : + ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags" +fi + +# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first + +if test "x$ax_pthread_clang" = "xyes" +then : + ax_pthread_flags="-pthread,-lpthread -pthread" +fi + + +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled + +case $target_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" + ;; + + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; + + *) + ax_pthread_check_macro="--" + ;; +esac +if test "x$ax_pthread_check_macro" = "x--" +then : + ax_pthread_check_cond=0 +else case e in #( + e) ax_pthread_check_cond="!defined($ax_pthread_check_macro)" ;; +esac +fi + + +if test "x$ax_pthread_ok" = "xno"; then +for ax_pthread_try_flag in $ax_pthread_flags; do + + case $ax_pthread_try_flag in + none) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 +printf %s "checking whether pthreads work without any flags... " >&6; } + ;; + + *,*) + PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` + PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"" >&5 +printf %s "checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"... " >&6; } + ;; + + -*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5 +printf %s "checking whether pthreads work with $ax_pthread_try_flag... " >&6; } + PTHREAD_CFLAGS="$ax_pthread_try_flag" + ;; + + pthread-config) + # Extract the first word of "pthread-config", so it can be a program name with args. +set dummy pthread-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ax_pthread_config+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ax_pthread_config"; then + ac_cv_prog_ax_pthread_config="$ax_pthread_config" # 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_ax_pthread_config="yes" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no" +fi ;; +esac +fi +ax_pthread_config=$ac_cv_prog_ax_pthread_config +if test -n "$ax_pthread_config"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 +printf "%s\n" "$ax_pthread_config" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if test "x$ax_pthread_config" = "xno" +then : + continue +fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5 +printf %s "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } + PTHREAD_LIBS="-l$ax_pthread_try_flag" + ;; + esac + + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +# if $ax_pthread_check_cond +# error "$ax_pthread_check_macro must be defined" +# endif + static void *some_global = NULL; + static void routine(void *a) + { + /* To avoid any unused-parameter or + unused-but-set-parameter warning. */ + some_global = a; + } + static void *start_routine(void *a) { return a; } +int +main (void) +{ +pthread_t th; pthread_attr_t attr; + pthread_create(&th, 0, start_routine, 0); + pthread_join(th, 0); + pthread_attr_init(&attr); + pthread_cleanup_push(routine, 0); + pthread_cleanup_pop(0) /* ; */ + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_pthread_ok=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 +printf "%s\n" "$ax_pthread_ok" >&6; } + if test "x$ax_pthread_ok" = "xyes" +then : + break +fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5 +printf %s "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; } +if test ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`printf "%s\n" "$ac_link" | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + if test "x$ax_pthread_try" = "xunknown" +then : + break +fi + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_link="$ax_pthread_2step_ac_link" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + if test "x$ax_pthread_try" = "x" +then : + ax_pthread_try=no +fi + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 +printf "%s\n" "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes + + + +# Various other checks: +if test "x$ax_pthread_ok" = "xyes"; then + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +printf %s "checking for joinable pthread attribute... " >&6; } +if test ${ax_cv_PTHREAD_JOINABLE_ATTR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ax_cv_PTHREAD_JOINABLE_ATTR=unknown + for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +int attr = $ax_pthread_attr; return attr /* ; */ + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + done + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 +printf "%s\n" "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } + if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ + test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ + test "x$ax_pthread_joinable_attr_defined" != "xyes" +then : + +printf "%s\n" "#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR" >>confdefs.h + + ax_pthread_joinable_attr_defined=yes + +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5 +printf %s "checking whether more special flags are required for pthreads... " >&6; } +if test ${ax_cv_PTHREAD_SPECIAL_FLAGS+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ax_cv_PTHREAD_SPECIAL_FLAGS=no + case $target_os in + solaris*) + ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 +printf "%s\n" "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } + if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ + test "x$ax_pthread_special_flags_added" != "xyes" +then : + PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" + ax_pthread_special_flags_added=yes +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 +printf %s "checking for PTHREAD_PRIO_INHERIT... " >&6; } +if test ${ax_cv_PTHREAD_PRIO_INHERIT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +int i = PTHREAD_PRIO_INHERIT; + return i; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_cv_PTHREAD_PRIO_INHERIT=yes +else case e in #( + e) ax_cv_PTHREAD_PRIO_INHERIT=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 +printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } + if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ + test "x$ax_pthread_prio_inherit_defined" != "xyes" +then : + +printf "%s\n" "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h + + ax_pthread_prio_inherit_defined=yes + +fi + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + # More AIX lossage: compile with *_r variant + if test "x$GCC" != "xyes"; then + case $target_os in + aix*) + case "x/$CC" in #( + x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) : + #handle absolute path differently from PATH based program lookup + case "x$CC" in #( + x/*) : + + if as_fn_executable_p ${CC}_r +then : + PTHREAD_CC="${CC}_r" +fi + if test "x${CXX}" != "x" +then : + if as_fn_executable_p ${CXX}_r +then : + PTHREAD_CXX="${CXX}_r" +fi +fi + ;; #( + *) : + + for ac_prog in ${CC}_r +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PTHREAD_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$PTHREAD_CC"; then + ac_cv_prog_PTHREAD_CC="$PTHREAD_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_PTHREAD_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +PTHREAD_CC=$ac_cv_prog_PTHREAD_CC +if test -n "$PTHREAD_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +printf "%s\n" "$PTHREAD_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$PTHREAD_CC" && break +done +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" + + if test "x${CXX}" != "x" +then : + for ac_prog in ${CXX}_r +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PTHREAD_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$PTHREAD_CXX"; then + ac_cv_prog_PTHREAD_CXX="$PTHREAD_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PTHREAD_CXX="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +PTHREAD_CXX=$ac_cv_prog_PTHREAD_CXX +if test -n "$PTHREAD_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CXX" >&5 +printf "%s\n" "$PTHREAD_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$PTHREAD_CXX" && break +done +test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" + +fi + + ;; +esac + ;; #( + *) : + ;; +esac + ;; + esac + fi +fi + +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" +test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" + + + + + + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test "x$ax_pthread_ok" = "xyes"; then + have_pthread=yes + : +else + ax_pthread_ok=no + have_pthread=no +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 + + + +# Check for Python and docwriter +PYTHON_MIN_VERSION=3.5 +have_py3=no +have_docwriter=no +PIP=pip + +for ac_prog in python3 python +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PYTHON+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$PYTHON"; then + ac_cv_prog_PYTHON="$PYTHON" # 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_PYTHON="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +PYTHON=$ac_cv_prog_PYTHON +if test -n "$PYTHON"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +printf "%s\n" "$PYTHON" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$PYTHON" && break +done +test -n "$PYTHON" || PYTHON="missing" + +if test "x$PYTHON" != "xmissing"; then + + + + + if test -n "$PYTHON" +then : + + ax_python_version="$PYTHON_MIN_VERSION" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python version" >&5 +printf %s "checking for python version... " >&6; } + + python_version=`$PYTHON -V 2>&1 | $GREP "^Python " | $SED -e 's/^.* \([0-9]*\.[0-9]*\.[0-9]*\)/\1/'` + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $python_version" >&5 +printf "%s\n" "$python_version" >&6; } + + PYTHON_VERSION=$python_version + + + + + + # Used to indicate true or false condition + ax_compare_version=false + + # Convert the two version strings to be compared into a format that + # allows a simple string comparison. The end result is that a version + # string of the form 1.12.5-r617 will be converted to the form + # 0001001200050617. In other words, each number is zero padded to four + # digits, and non digits are removed. + + ax_compare_version_A=`echo "$ax_python_version" | sed -e 's/\([0-9]*\)/Z\1Z/g' \ + -e 's/Z\([0-9]\)Z/Z0\1Z/g' \ + -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \ + -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \ + -e 's/[^0-9]//g'` + + + ax_compare_version_B=`echo "$python_version" | sed -e 's/\([0-9]*\)/Z\1Z/g' \ + -e 's/Z\([0-9]\)Z/Z0\1Z/g' \ + -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \ + -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \ + -e 's/[^0-9]//g'` + + + ax_compare_version=`echo "x$ax_compare_version_A +x$ax_compare_version_B" | sed 's/^ *//' | sort | sed "s/x${ax_compare_version_A}/true/;s/x${ax_compare_version_B}/false/;1q"` + + + + if test "$ax_compare_version" = "true" ; then + + : + have_py3=yes + + else + : + + + fi + + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: could not find the python interpreter" >&5 +printf "%s\n" "$as_me: WARNING: could not find the python interpreter" >&2;} + + ;; +esac +fi + + + if test "x$have_py3" = "xyes"; then + PIP="$PYTHON -m $PIP" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for \`docwriter' Python module" >&5 +printf %s "checking for \`docwriter' Python module... " >&6; } + $PYTHON -m docwriter -h > /dev/null 2>&1 + if test "x$?" = "x0"; then + have_docwriter=yes + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + fi + fi +fi + + +# entries in Requires.private are separated by commas +PKGCONFIG_REQUIRES_PRIVATE="$zlib_reqpriv, \ + $bzip2_reqpriv, \ + $libpng_reqpriv, \ + $harfbuzz_reqpriv, \ + $brotli_reqpriv" +# beautify +PKGCONFIG_REQUIRES_PRIVATE=`echo "$PKGCONFIG_REQUIRES_PRIVATE" \ + | sed -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/, */,/g' \ + -e 's/,,*/,/g' \ + -e 's/^,*//' \ + -e 's/,*$//' \ + -e 's/,/, /g'` + +PKGCONFIG_LIBS_PRIVATE="$zlib_libspriv \ + $bzip2_libspriv \ + $libpng_libspriv \ + $harfbuzz_libspriv \ + $brotli_libspriv \ + $ft2_extra_libs" +# beautify +PKGCONFIG_LIBS_PRIVATE=`echo "$PKGCONFIG_LIBS_PRIVATE" \ + | sed -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/ */ /g'` + +LIBSSTATIC_CONFIG="-lfreetype \ + $zlib_libsstaticconf \ + $bzip2_libsstaticconf \ + $libpng_libsstaticconf \ + $harfbuzz_libsstaticconf \ + $brotli_libsstaticconf \ + $ft2_extra_libs" +# remove -L/usr/lib and -L/usr/lib64 since `freetype-config' adds them later +# on if necessary; also beautify +LIBSSTATIC_CONFIG=`echo "$LIBSSTATIC_CONFIG" \ + | sed -e 's|-L */usr/lib64/* | |g' \ + -e 's|-L */usr/lib/* | |g' \ + -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/ */ /g'` + +# If FreeType gets installed with `--disable-shared', don't use +# 'private' fields. `pkg-config' only looks into `.pc' files and is +# completely agnostic to whether shared libraries are actually present +# or not. As a consequence, the user had to specify `--static' while +# calling `pkg-config', which configure scripts are normally not +# prepared for. + +PKGCONFIG_REQUIRES= +PKGCONFIG_LIBS='-L${libdir} -lfreetype' + +if test $enable_shared = "no"; then + PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES $PKGCONFIG_REQUIRES_PRIVATE" + PKGCONFIG_REQUIRES_PRIVATE= + PKGCONFIG_LIBS="$PKGCONFIG_LIBS $PKGCONFIG_LIBS_PRIVATE" + PKGCONFIG_LIBS_PRIVATE= +fi + + + + + + + + + + + + + +# We cannot use alternation (`\|`) in the `sed` regexp since it is not +# portable. + +ftoption_set() +{ + regexp="-e \\\"s|.*#.*def.*$1 .*|#define $1|\\\" \ + -e \\\"s|.*#.*def.*$1\$|#define $1|\\\"" + FTOPTION_H_SED="$FTOPTION_H_SED $regexp" +} + +ftoption_unset() +{ + regexp="-e \\\"s|.*#.*def.*$1 .*|/* #undef $1 */|\\\" \ + -e \\\"s|.*#.*def.*$1\$|/* #undef $1 */|\\\"" + FTOPTION_H_SED="$FTOPTION_H_SED $regexp" +} + +# Changing the `LDFLAGS` value should only be done after the +# `lt_cv_prog_compiler_static_works` test. + +if test "$have_zlib" != no; then + CFLAGS="$CFLAGS $ZLIB_CFLAGS" + LDFLAGS="$LDFLAGS $ZLIB_LIBS" + ftoption_set FT_CONFIG_OPTION_SYSTEM_ZLIB +else + ftoption_unset FT_CONFIG_OPTION_SYSTEM_ZLIB +fi +if test "$have_bzip2" != no; then + CFLAGS="$CFLAGS $BZIP2_CFLAGS" + LDFLAGS="$LDFLAGS $BZIP2_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_BZIP2 +else + ftoption_unset FT_CONFIG_OPTION_USE_BZIP2 +fi +if test "$have_libpng" != no; then + CFLAGS="$CFLAGS $LIBPNG_CFLAGS" + LDFLAGS="$LDFLAGS $LIBPNG_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_PNG +else + ftoption_unset FT_CONFIG_OPTION_USE_PNG +fi +if test "$have_harfbuzz" != no; then + CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS" + LDFLAGS="$LDFLAGS $HARFBUZZ_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ +else + ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ +fi +if test "$have_harfbuzz_dynamic" != no; then + ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC +else + ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC +fi +if test "$have_brotli" != no; then + CFLAGS="$CFLAGS $BROTLI_CFLAGS" + LDFLAGS="$LDFLAGS $BROTLI_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_BROTLI +else + ftoption_unset FT_CONFIG_OPTION_USE_BROTLI +fi + +if test "$have_pthread" != no; then + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LDFLAGS="$LDFLAGS $PTHREAD_CFLAGS $PTHREAD_LIBS" +fi + + + + +# We don't want to use a template file for `ftoption.h', since compilation +# should work without calling a configure script also. For this reason, we +# copy the `include/freetype/config/ftoption.h' file to the `unix/builds' +# directory (using a dummy `AC_CONFIG_FILES' call) and apply the just +# constructed $FTOPTION_H_SED regexp (using the post-action of +# `AC_CONFIG_FILES'); this is also the version that gets installed later on. +# +ac_config_files="$ac_config_files ftoption.h:${srcdir}/../../include/freetype/config/ftoption.h" + + +ac_config_headers="$ac_config_headers ftconfig.h" + + +# create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' +# and `builds/unix/unix-cc.mk' that will be used by the build system +# +ac_config_files="$ac_config_files unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in" + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +# Check whether --enable-year2038 was given. +if test ${enable_year2038+y} +then : + enableval=$enable_year2038; +fi + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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 case e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by FreeType $as_me 2.14.3, which was +generated by GNU Autoconf 2.72. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +FreeType config.status 2.14.3 +configured by $0, generated by GNU Autoconf 2.72, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2023 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +LD_RC='`$ECHO "$LD_RC" | $SED "$delay_single_quote_subst"`' +reload_flag_RC='`$ECHO "$reload_flag_RC" | $SED "$delay_single_quote_subst"`' +reload_cmds_RC='`$ECHO "$reload_cmds_RC" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_RC='`$ECHO "$old_archive_cmds_RC" | $SED "$delay_single_quote_subst"`' +compiler_RC='`$ECHO "$compiler_RC" | $SED "$delay_single_quote_subst"`' +GCC_RC='`$ECHO "$GCC_RC" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_RC='`$ECHO "$lt_prog_compiler_no_builtin_flag_RC" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_RC='`$ECHO "$lt_prog_compiler_pic_RC" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_RC='`$ECHO "$lt_prog_compiler_wl_RC" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_RC='`$ECHO "$lt_prog_compiler_static_RC" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_RC='`$ECHO "$lt_cv_prog_compiler_c_o_RC" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_RC='`$ECHO "$archive_cmds_need_lc_RC" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_RC='`$ECHO "$enable_shared_with_static_runtimes_RC" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_RC='`$ECHO "$export_dynamic_flag_spec_RC" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_RC='`$ECHO "$whole_archive_flag_spec_RC" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_RC='`$ECHO "$compiler_needs_object_RC" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_RC='`$ECHO "$old_archive_from_new_cmds_RC" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_RC='`$ECHO "$old_archive_from_expsyms_cmds_RC" | $SED "$delay_single_quote_subst"`' +archive_cmds_RC='`$ECHO "$archive_cmds_RC" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_RC='`$ECHO "$archive_expsym_cmds_RC" | $SED "$delay_single_quote_subst"`' +module_cmds_RC='`$ECHO "$module_cmds_RC" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_RC='`$ECHO "$module_expsym_cmds_RC" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_RC='`$ECHO "$with_gnu_ld_RC" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_RC='`$ECHO "$allow_undefined_flag_RC" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_RC='`$ECHO "$no_undefined_flag_RC" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_RC='`$ECHO "$hardcode_libdir_flag_spec_RC" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_RC='`$ECHO "$hardcode_libdir_separator_RC" | $SED "$delay_single_quote_subst"`' +hardcode_direct_RC='`$ECHO "$hardcode_direct_RC" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_RC='`$ECHO "$hardcode_direct_absolute_RC" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_RC='`$ECHO "$hardcode_minus_L_RC" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_RC='`$ECHO "$hardcode_shlibpath_var_RC" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_RC='`$ECHO "$hardcode_automatic_RC" | $SED "$delay_single_quote_subst"`' +inherit_rpath_RC='`$ECHO "$inherit_rpath_RC" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_RC='`$ECHO "$link_all_deplibs_RC" | $SED "$delay_single_quote_subst"`' +always_export_symbols_RC='`$ECHO "$always_export_symbols_RC" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_RC='`$ECHO "$export_symbols_cmds_RC" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_RC='`$ECHO "$exclude_expsyms_RC" | $SED "$delay_single_quote_subst"`' +include_expsyms_RC='`$ECHO "$include_expsyms_RC" | $SED "$delay_single_quote_subst"`' +prelink_cmds_RC='`$ECHO "$prelink_cmds_RC" | $SED "$delay_single_quote_subst"`' +postlink_cmds_RC='`$ECHO "$postlink_cmds_RC" | $SED "$delay_single_quote_subst"`' +file_list_spec_RC='`$ECHO "$file_list_spec_RC" | $SED "$delay_single_quote_subst"`' +hardcode_action_RC='`$ECHO "$hardcode_action_RC" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in AS \ +DLLTOOL \ +OBJDUMP \ +SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +FILECMD \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +sharedlib_from_linklib_cmd \ +AR \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +LD_RC \ +reload_flag_RC \ +compiler_RC \ +lt_prog_compiler_no_builtin_flag_RC \ +lt_prog_compiler_pic_RC \ +lt_prog_compiler_wl_RC \ +lt_prog_compiler_static_RC \ +lt_cv_prog_compiler_c_o_RC \ +export_dynamic_flag_spec_RC \ +whole_archive_flag_spec_RC \ +compiler_needs_object_RC \ +with_gnu_ld_RC \ +allow_undefined_flag_RC \ +no_undefined_flag_RC \ +hardcode_libdir_flag_spec_RC \ +hardcode_libdir_separator_RC \ +exclude_expsyms_RC \ +include_expsyms_RC \ +file_list_spec_RC; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path \ +reload_cmds_RC \ +old_archive_cmds_RC \ +old_archive_from_new_cmds_RC \ +old_archive_from_expsyms_cmds_RC \ +archive_cmds_RC \ +archive_expsym_cmds_RC \ +module_cmds_RC \ +module_expsym_cmds_RC \ +export_symbols_cmds_RC \ +prelink_cmds_RC \ +postlink_cmds_RC; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + + +FTOPTION_H_SED="$FTOPTION_H_SED" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "ftoption.h") CONFIG_FILES="$CONFIG_FILES ftoption.h:${srcdir}/../../include/freetype/config/ftoption.h" ;; + "ftconfig.h") CONFIG_HEADERS="$CONFIG_HEADERS ftconfig.h" ;; + "unix-cc.mk") CONFIG_FILES="$CONFIG_FILES unix-cc.mk:unix-cc.in" ;; + "unix-def.mk") CONFIG_FILES="$CONFIG_FILES unix-def.mk:unix-def.in" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2024 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. + +# GNU Libtool 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 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 . + + +# The names of the tagged configurations supported by this script. +available_tags='RC ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Assembler program. +AS=$lt_AS + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Object dumper program. +OBJDUMP=$lt_OBJDUMP + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# A file(cmd) program that detects file types. +FILECMD=$lt_FILECMD + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive (by configure). +lt_ar_flags=$lt_ar_flags + +# Flags to create an archive. +AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e. impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + $SED '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: RC + +# The linker used to build libraries. +LD=$lt_LD_RC + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_RC +reload_cmds=$lt_reload_cmds_RC + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_RC + +# A language specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU compiler? +with_gcc=$GCC_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_RC + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_RC + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e. impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_RC + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_RC + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_RC + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_RC + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_RC + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_RC + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# ### END LIBTOOL TAG CONFIG: RC +_LT_EOF + + ;; + "ftoption.h":F) mv ftoption.h ftoption.tmp + eval "sed $FTOPTION_H_SED < ftoption.tmp > ftoption.h" + rm ftoption.tmp ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: + +Library configuration: + external zlib: $have_zlib + bzip2: $have_bzip2 + libpng: $have_libpng + harfbuzz: $have_harfbuzz + brotli: $have_brotli + pthread: $have_pthread +" >&5 +printf "%s\n" "$as_me: + +Library configuration: + external zlib: $have_zlib + bzip2: $have_bzip2 + libpng: $have_libpng + harfbuzz: $have_harfbuzz + brotli: $have_brotli + pthread: $have_pthread +" >&6;} + +# Warn if docwriter is not installed + +if test $have_docwriter = no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: + \`make refdoc' will fail since pip package \`docwriter' is not installed. + To install, run \`$PIP install docwriter', or to use a Python + virtual environment, run \`make refdoc-venv' (requires pip package + \`virtualenv'). These operations require Python >= $PYTHON_MIN_VERSION. + " >&5 +printf "%s\n" "$as_me: WARNING: + \`make refdoc' will fail since pip package \`docwriter' is not installed. + To install, run \`$PIP install docwriter', or to use a Python + virtual environment, run \`make refdoc-venv' (requires pip package + \`virtualenv'). These operations require Python >= $PYTHON_MIN_VERSION. + " >&2;} +fi + +# Warn if pthread is not available + +if test $have_pthread = no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: + \`FT_DEBUG_LOGGING' will not work since the \`pthread' library is not + available. This warning can be safely ignored if you don't plan to use + this configuration macro. + " >&5 +printf "%s\n" "$as_me: WARNING: + \`FT_DEBUG_LOGGING' will not work since the \`pthread' library is not + available. This warning can be safely ignored if you don't plan to use + this configuration macro. + " >&2;} +fi + +# end of configure.raw + diff --git a/local/recipes/libs/freetype2/source/builds/unix/configure.ac b/local/recipes/libs/freetype2/source/builds/unix/configure.ac new file mode 100644 index 0000000000..01479559f2 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/configure.ac @@ -0,0 +1,1239 @@ +# This file is part of the FreeType project. +# +# Process this file with autoconf to produce a configure script. +# +# Copyright (C) 2001-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +AC_INIT([FreeType], [2.14.3], [freetype@nongnu.org], [freetype]) +AC_CONFIG_SRCDIR([ftconfig.h.in]) + + +# Don't forget to update `docs/VERSIONS.TXT'! + +version_info='26:6:20' +AC_SUBST([version_info]) +ft_version=`echo $version_info | tr : .` +AC_SUBST([ft_version]) + + +# checks for system type + +AC_CANONICAL_HOST + + +# checks for programs + +AC_PROG_CC +AC_PROG_CPP +AC_SUBST(EXEEXT) + +PKG_PROG_PKG_CONFIG([0.24]) + +LT_INIT(win32-dll) +AC_CHECK_HEADER([windows.h], [LT_PROG_RC]) + + +# checks for native programs to generate building tool + +if test ${cross_compiling} = yes; then + AC_CHECK_PROG(CC_BUILD, ${build}-gcc, ${build}-gcc) + test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, gcc, gcc) + test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, cc, cc, , , /usr/ucb/cc) + test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, clang, clang) + test -z "${CC_BUILD}" && AC_MSG_ERROR([cannot find native C compiler]) + + AC_MSG_CHECKING([for suffix of native executables]) + rm -f a.* b.* a_out.exe conftest.* + echo > conftest.c "int main(void) { return 0;}" + ${CC_BUILD} conftest.c || AC_MSG_ERROR([native C compiler is not working]) + rm -f conftest.c + if test -x a.out -o -x b.out -o -x conftest; then + EXEEXT_BUILD="" + elif test -x a_out.exe -o -x conftest.exe; then + EXEEXT_BUILD=".exe" + elif test -x conftest.*; then + EXEEXT_BUILD=`echo conftest.* | sed -n '1s/^.*\././'` + fi + rm -f a.* b.* a_out.exe conftest.* + AC_MSG_RESULT($EXEEXT_BUILD) + CFLAGS_BUILD= + LDFLAGS_BUILD= +else + CC_BUILD=${CC} + CFLAGS_BUILD=${CFLAGS} + LDFLAGS_BUILD=${LDFLAGS} + EXEEXT_BUILD=${EXEEXT} +fi + +AC_SUBST(CC_BUILD) +AC_SUBST(CFLAGS_BUILD) +AC_SUBST(LDFLAGS_BUILD) +AC_SUBST(EXEEXT_BUILD) + + +# Since these files will be eventually called from another directory (namely +# from the top level) we make the path of the scripts absolute. +# +# This small code snippet has been taken from automake's `ylwrap' script. + +AC_PROG_INSTALL +case "$INSTALL" in +[[\\/]]* | ?:[[\\/]]*) + ;; +*[[\\/]]*) + INSTALL="`pwd`/$INSTALL" + ;; +esac + +AC_PROG_MKDIR_P +case "$MKDIR_P" in +[[\\/]]* | ?:[[\\/]]*) + ;; +*[[\\/]]*) + MKDIR_P="`pwd`/$MKDIR_P" + ;; +esac + + +# checks for header files + +AC_CHECK_HEADERS([fcntl.h unistd.h]) + + +# checks for typedefs, structures, and compiler characteristics + +AC_C_CONST + +AC_ARG_ENABLE([freetype-config], + AS_HELP_STRING([--enable-freetype-config], [install freetype-config]), + [case "${enableval}" in + yes) enable_freetype_config="TRUE" ;; + no) enable_freetype_config="FALSE" ;; + *) AC_MSG_ERROR([unknown value '${enableval}' passed with --enable-freetype-config]) ;; + esac], [enable_freetype_config="FALSE"]) + +AC_SUBST(INSTALL_FT2_CONFIG, [$enable_freetype_config]) + +# checks for library functions + +AC_SYS_LARGEFILE + +# Here we check whether we can use our mmap file component. +# +# Note that `ftsystem.c` for Windows has its own mmap-like implementation +# not covered by `AC_FUNC_MMAP` and/or `FT_UNMAP_PARAM`. + +AC_ARG_ENABLE([mmap], + AS_HELP_STRING([--disable-mmap], + [do not check mmap() and do not use]), + [enable_mmap="no"], [enable_mmap="yes"]) +if test "x${enable_mmap}" != "xno"; then + case "$host" in + *-*-mingw*) + AC_MSG_CHECKING([for working mmap]) + AC_MSG_RESULT([using MapViewOfFile in Windows]) + FTSYS_SRC='$(TOP_DIR)/builds/windows/ftsystem.c' + ;; + *) + AC_FUNC_MMAP + if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then + FTSYS_SRC='$(PLATFORM_DIR)/ftsystem.c' + + AC_CHECK_DECLS([munmap], + [], + [], + [ + +#ifdef HAVE_UNISTD_H +#include +#endif +#include + + ]) + + FT_MUNMAP_PARAM + fi + ;; + esac +fi + +if test -z "$FTSYS_SRC"; then + FTSYS_SRC='$(BASE_DIR)/ftsystem.c' +fi +AC_SUBST([FTSYS_SRC]) + + +# get compiler flags right +# +# We try to make the compiler work for C99-strict source. Even if the +# C compiler is gcc and C99 flags are available, some system headers +# might be broken in C99 mode. We have to check whether compilation +# finishes successfully. +# +if test "x$GCC" = xyes; then + XX_CFLAGS="-Wall" + case "$host" in + *-*-mingw*) + XX_ANSIFLAGS="-pedantic" + ;; + *-*-aix*) + XX_ANSIFLAGS="-pedantic" + ;; + *) + XX_ANSIFLAGS="" + + for a in "-pedantic" "-std=c99" + do + AC_MSG_CHECKING([$CC compiler flag ${a} to assure ANSI C99 works correctly]) + orig_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} ${XX_ANSIFLAGS} ${a}" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#include + + ], + [ + + { + puts( "" ); + return 0; + } + + ])], + [AC_MSG_RESULT([ok, adding to XX_ANSIFLAGS]) + XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}" + ], + [AC_MSG_RESULT([no])]) + CFLAGS="${orig_CFLAGS}" + done + ;; + esac +else + case "$host" in + *-dec-osf*) + CFLAGS= + XX_CFLAGS="-std1 -g3" + XX_ANSIFLAGS= + ;; + *) + XX_CFLAGS= + XX_ANSIFLAGS= + ;; + esac +fi +AC_SUBST([XX_CFLAGS]) +AC_SUBST([XX_ANSIFLAGS]) + + +# It is recommended that shared libraries hide symbols except those with +# explicit __attribute__((visibility("default"))). +# +found_visibility_flag=no +AC_MSG_CHECKING([for -fvisibility=hidden compiler flag]) +orig_CFLAGS="${CFLAGS}" +CFLAGS="${CFLAGS} -fvisibility=hidden -Werror" +AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +__attribute__(( visibility( "default" ) )) int foo( void ); +__attribute__(( visibility( "hidden" ) )) int bar( void ); + +int foo( void ) { return 0; } +int bar( void ) { return 1; } + + ], + [])], + [found_visibility_flag=yes + CFLAGS="${orig_CFLAGS} -fvisibility=hidden" + AC_MSG_RESULT(yes) + ], + [CFLAGS="${orig_CFLAGS}" + AC_MSG_RESULT(no)]) + +if test "${found_visibility_flag}" = "no"; then + AC_MSG_CHECKING([for -xldscope=hidden compiler flag]) + orig_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} -xldscope=hidden" + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], + [found_visibility_flag=yes + AC_MSG_RESULT(yes)], + [CFLAGS="${orig_CFLAGS}" + AC_MSG_RESULT(no)]) +fi + +# All library tests below try `pkg-config' first. If that fails, a function +# from the library is tested in the traditional autoconf way (zlib, bzip2), +# or a config script is called (libpng). +# +# The `xxx_reqpriv' variables are for the `Requires.private' field in +# `freetype2.pc'. The `xxx_libspriv' variables are for the `Libs.private' +# field in `freetype2.pc' if pkg-config doesn't find a proper .pc file. +# +# The `xxx_libsstaticconf' variables are for the `freetype-config' script. +# +# Note that a call to PKG_CHECK_MODULES(XXX, ...) sets and creates the +# output variables `XXX_CFLAGS' and `XXX_LIBS'. In case one or both are set +# for a library by the user, no entry for this library is added to +# `Requires.private'. Instead, it gets added to `Libs.private' + + +# check for system zlib + +AC_ARG_WITH([zlib], + [AS_HELP_STRING([--with-zlib=@<:@yes|no|auto@:>@], + [use system zlib instead of internal library @<:@default=auto@:>@])], + [], [with_zlib=auto]) + +have_zlib=no +if test x"$with_zlib" = xyes -o x"$with_zlib" = xauto; then + zlib_pkg="zlib" + have_zlib_pkg=no + + if test x"$ZLIB_CFLAGS" = x -a x"$ZLIB_LIBS" = x; then + PKG_CHECK_EXISTS([$zlib_pkg], [have_zlib_pkg=yes]) + fi + PKG_CHECK_MODULES([ZLIB], [$zlib_pkg], + [have_zlib="yes (pkg-config)"], [:]) + + if test $have_zlib_pkg = yes; then + # we have zlib.pc + zlib_reqpriv="$zlib_pkg" + zlib_libspriv= + zlib_libsstaticconf=`$PKG_CONFIG --static --libs "$zlib_pkg"` + else + zlib_reqpriv= + + if test "$have_zlib" != no; then + # ZLIB_CFLAGS and ZLIB_LIBS are set by the user + zlib_libspriv="$ZLIB_LIBS" + zlib_libsstaticconf="$ZLIB_LIBS" + have_zlib="yes (ZLIB_CFLAGS and ZLIB_LIBS)" + else + # fall back to standard autoconf test + AC_CHECK_LIB([z], + [gzsetparams], + [AC_CHECK_HEADER([zlib.h], + [have_zlib="yes (autoconf test)" + zlib_libspriv="-lz" + zlib_libsstaticconf="$zlib_libspriv" + ZLIB_LIBS="$zlib_libspriv"])]) + fi + fi +fi + +if test x"$with_zlib" = xyes -a "$have_zlib" = no; then + AC_MSG_ERROR([external zlib support requested but library not found]) +fi + +SYSTEM_ZLIB= +if test "$have_zlib" != no; then + SYSTEM_ZLIB=yes +fi +AC_SUBST([SYSTEM_ZLIB]) + + +# check for system libbz2 + +AC_ARG_WITH([bzip2], + [AS_HELP_STRING([--with-bzip2=@<:@yes|no|auto@:>@], + [support bzip2 compressed fonts @<:@default=auto@:>@])], + [], [with_bzip2=auto]) + +have_bzip2=no +if test x"$with_bzip2" = xyes -o x"$with_bzip2" = xauto; then + bzip2_pkg="bzip2" + have_bzip2_pkg=no + + if test x"$BZIP2_CFLAGS" = x -a x"$BZIP2_LIBS" = x; then + PKG_CHECK_EXISTS([$bzip2_pkg], [have_bzip2_pkg=yes]) + fi + PKG_CHECK_MODULES([BZIP2], [$bzip2_pkg], + [have_bzip2="yes (pkg-config)"], [:]) + + if test $have_bzip2_pkg = yes; then + # we have bzip2.pc + bzip2_reqpriv="$bzip2_pkg" + bzip2_libspriv= + bzip2_libsstaticconf=`$PKG_CONFIG --static --libs "$bzip2_pkg"` + else + bzip2_reqpriv= + + if test "$have_bzip2" != no; then + # BZIP2_CFLAGS and BZIP2_LIBS are set by the user + bzip2_libspriv="$BZIP2_LIBS" + bzip2_libsstaticconf="$BZIP2_LIBS" + have_bzip2="yes (BZIP2_CFLAGS and BZIP2_LIBS)" + else + # fall back to standard autoconf test + AC_CHECK_LIB([bz2], + [BZ2_bzDecompress], + [AC_CHECK_HEADER([bzlib.h], + [have_bzip2="yes (autoconf test)" + bzip2_libspriv="-lbz2" + bzip2_libsstaticconf="$bzip2_libspriv" + BZIP2_LIBS="$bzip2_libspriv"])]) + fi + fi +fi + +if test x"$with_bzip2" = xyes -a "$have_bzip2" = no; then + AC_MSG_ERROR([bzip2 support requested but library not found]) +fi + + +# check for system libpng + +AC_ARG_WITH([png], + [AS_HELP_STRING([--with-png=@<:@yes|no|auto@:>@], + [support png compressed OpenType embedded bitmaps @<:@default=auto@:>@])], + [], [with_png=auto]) + +have_libpng=no +if test x"$with_png" = xyes -o x"$with_png" = xauto; then + libpng_pkg="libpng" + have_libpng_pkg=no + + if test x"$LIBPNG_CFLAGS" = x -a x"$LIBPNG_LIBS" = x; then + PKG_CHECK_EXISTS([$libpng_pkg], [have_libpng_pkg=yes]) + fi + PKG_CHECK_MODULES([LIBPNG], [$libpng_pkg], + [have_libpng="yes (pkg-config)"], [:]) + + if test $have_libpng_pkg = yes; then + # we have libpng.pc + libpng_reqpriv="$libpng_pkg" + libpng_libspriv= + libpng_libsstaticconf=`$PKG_CONFIG --static --libs "$libpng_pkg"` + else + libpng_reqpriv= + + if test "$have_libpng" != no; then + # LIBPNG_CFLAGS and LIBPNG_LIBS are set by the user + libpng_libspriv="$LIBPNG_LIBS" + libpng_libsstaticconf="$LIBPNG_LIBS" + have_libpng="yes (LIBPNG_CFLAGS and LIBPNG_LIBS)" + else + # fall back to config script + AC_CHECK_PROG(have_libpng, [libpng-config], [yes (libpng-config)], [no]) + if test "$have_libpng" != no; then + LIBPNG_CFLAGS=`libpng-config --cflags` + LIBPNG_LIBS=`libpng-config --ldflags` + libpng_libspriv=`libpng-config --static --ldflags` + libpng_libsstaticconf="$libpng_libspriv" + fi + fi + fi +fi + +if test x"$with_png" = xyes -a "$have_libpng" = no; then + AC_MSG_ERROR([libpng support requested but library not found]) +fi + + +# check for system libharfbuzz + +AC_ARG_WITH([harfbuzz], + [AS_HELP_STRING([--with-harfbuzz=@<:@yes|dynamic|no|auto@:>@], + [improve auto-hinting of OpenType fonts @<:@default=auto@:>@])], + [], [with_harfbuzz=auto]) + +have_harfbuzz=no +if test x"$with_harfbuzz" = xyes -o x"$with_harfbuzz" = xauto; then + harfbuzz_pkg="harfbuzz >= 2.0.0" + have_harfbuzz_pkg=no + + if test x"$HARFBUZZ_CFLAGS" = x -a x"$HARFBUZZ_LIBS" = x; then + PKG_CHECK_EXISTS([$harfbuzz_pkg], [have_harfbuzz_pkg=yes]) + fi + PKG_CHECK_MODULES([HARFBUZZ], [$harfbuzz_pkg], + [have_harfbuzz="yes (pkg-config)"], [:]) + + if test $have_harfbuzz_pkg = yes; then + # we have harfbuzz.pc + harfbuzz_reqpriv="$harfbuzz_pkg" + harfbuzz_libspriv= + harfbuzz_libsstaticconf=`$PKG_CONFIG --static --libs "$harfbuzz_pkg"` + else + harfbuzz_reqpriv= + + if test "$have_harfbuzz" != no; then + # HARFBUZZ_CFLAGS and HARFBUZZ_LIBS are set by the user + harfbuzz_libspriv="$HARFBUZZ_LIBS" + harfbuzz_libsstaticconf="$HARFBUZZ_LIBS" + have_harfbuzz="yes (HARFBUZZ_CFLAGS and HARFBUZZ_LIBS)" + else + # since HarfBuzz is quite a new library we don't fall back to a + # different test; additionally, it has too many dependencies + : + fi + fi +fi + +have_harfbuzz_dynamic=no +if test x"$have_harfbuzz" = xno; then + if test x"$with_harfbuzz" = xdynamic -o x"$with_harfbuzz" = xauto; then + case "$host" in + *-*-mingw*) + # Windows uses its own LoadLibrary(), set variables to dynamic. + have_harfbuzz_dynamic=yes + have_harfbuzz="yes (dynamic)" + ;; + *) + # Check for libdl + AC_CHECK_LIB([c], + [dlopen], + [have_harfbuzz_dynamic=yes], + AC_CHECK_LIB([dl], + [dlopen], + [have_harfbuzz_dynamic=yes + need_libdl=yes])) + if test x"$have_harfbuzz_dynamic" = xyes; then + have_harfbuzz="yes (dynamic)" + HARFBUZZ_CFLAGS= + if test x"$need_libdl" = xyes; then + HARFBUZZ_LIBS="-ldl" + fi + fi + ;; + esac + fi +fi + +if test x"$have_harfbuzz" = xno; then + if test x"$with_harfbuzz" != xno -a "$with_harfbuzz" != xauto; then + AC_MSG_ERROR([harfbuzz support requested but library not found]) + fi +fi + +# check for system libbrotlidec + +AC_ARG_WITH([brotli], + [AS_HELP_STRING([--with-brotli=@<:@yes|no|auto@:>@], + [support decompression of WOFF2 streams @<:@default=auto@:>@])], + [], [with_brotli=auto]) + +have_brotli=no +if test x"$with_brotli" = xyes -o x"$with_brotli" = xauto; then + brotli_pkg="libbrotlidec" + have_brotli_pkg=no + + if test x"$BROTLI_CFLAGS" = x -a x"$BROTLI_LIBS" = x; then + PKG_CHECK_EXISTS([$brotli_pkg], [have_brotli_pkg=yes]) + fi + PKG_CHECK_MODULES([BROTLI], [$brotli_pkg], + [have_brotli="yes (pkg-config)"], [:]) + + if test $have_brotli_pkg = yes; then + # we have libbrotlidec.pc + brotli_reqpriv="$brotli_pkg" + brotli_libspriv= + brotli_libsstaticconf=`$PKG_CONFIG --static --libs "$brotli_pkg"` + else + brotli_reqpriv= + + if test "$have_brotli" != no; then + # BROTLI_CFLAGS and BROTLI_LIBS are set by the user + brotli_libspriv="$BROTLI_LIBS" + brotli_libsstaticconf="$BROTLI_LIBS" + have_brotli="yes (BROTLI_CFLAGS and BROTLI_LIBS)" + else + # since Brotli is quite a new library we don't fall back to a + # different test + : + fi + fi +fi + +if test x"$with_brotli" = xyes -a "$have_brotli" = no; then + AC_MSG_ERROR([brotli support requested but library not found]) +fi + + +# Checks for the demo programs. +# +# FreeType doesn't need this. However, since the demo program repository +# doesn't come with a `configure` script of its own, we integrate the tests +# here for simplicity. + +# We need `clock_gettime` from 'librt' for the `ftbench` demo program. +# +# The code is modeled after gnulib's file `clock_time.m4`, ignoring +# very old Solaris systems. +LIB_CLOCK_GETTIME= +AC_SEARCH_LIBS([clock_gettime], + [rt], + [test "$ac_cv_search_clock_gettime" = "none required" \ + || LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime]) + +FT_DEMO_CFLAGS="" +FT_DEMO_LDFLAGS="$LIB_CLOCK_GETTIME" + +# 'librsvg' is needed to demonstrate SVG support. +AC_ARG_WITH([librsvg], + [AS_HELP_STRING([--with-librsvg=@<:@yes|no|auto@:>@], + [support OpenType SVG fonts in FreeType demo programs @<:@default=auto@:>@])], + [], [with_librsvg=auto]) + +have_librsvg=no +if test x"$with_librsvg" = xyes -o x"$with_librsvg" = xauto; then + PKG_CHECK_MODULES([LIBRSVG], [librsvg-2.0 >= 2.46.0], + [have_librsvg="yes (pkg-config)"], [:]) + + if test "$have_librsvg" != no; then + FT_DEMO_CFLAGS="$FT_DEMO_CFLAGS $LIBRSVG_CFLAGS -DHAVE_LIBRSVG" + FT_DEMO_LDFLAGS="$FT_DEMO_LDFLAGS $LIBRSVG_LIBS" + fi +fi + +if test x"$with_librsvg" = xyes -a "$have_librsvg" = no; then + AC_MSG_ERROR([librsvg support requested but library not found]) +fi + +AC_SUBST([FT_DEMO_CFLAGS]) +AC_SUBST([FT_DEMO_LDFLAGS]) + + +# Some options handling SDKs/archs in CFLAGS should be copied +# to LDFLAGS. Apple TechNote 2137 recommends to include these +# options in CFLAGS but not in LDFLAGS. + +save_config_args=$* +set dummy ${CFLAGS} +i=1 +while test $i -le $# +do + c=$1 + + case "${c}" in + -isysroot|-arch) # options taking 1 argument + a=$2 + AC_MSG_CHECKING([whether CFLAGS and LDFLAGS share ${c} ${a}]) + if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null + then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no, copy to LDFLAGS]) + LDFLAGS="${LDFLAGS} ${c} ${a}" + fi + shift 1 + ;; + -m32|-m64|-march=*|-mcpu=*) # options taking no argument + AC_MSG_CHECKING([whether CFLAGS and LDFLAGS share ${c}]) + if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null + then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no, copy to LDFLAGS]) + LDFLAGS="${LDFLAGS} ${c}" + fi + ;; + # *) + # AC_MSG_RESULT([${c} is not copied to LDFLAGS]) + # ;; + esac + + shift 1 +done +set ${save_config_args} + + +# Whether to use Mac OS resource-based fonts. + +ftmac_c="" # src/base/ftmac.c should not be included in makefiles by default + +AC_ARG_WITH([old-mac-fonts], + AS_HELP_STRING([--with-old-mac-fonts], + [allow Mac resource-based fonts to be used])) +if test x$with_old_mac_fonts = xyes; then + orig_LDFLAGS="${LDFLAGS}" + AC_MSG_CHECKING([CoreServices & ApplicationServices of Mac OS X]) + ft2_extra_libs="-Wl,-framework,CoreServices -Wl,-framework,ApplicationServices" + LDFLAGS="$LDFLAGS $ft2_extra_libs" + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + short res = 0; + + + UseResFile( res ); + + ])], + [AC_MSG_RESULT([ok]) + ftmac_c='ftmac.c' + AC_MSG_CHECKING([whether OS_INLINE macro is ANSI compatible]) + orig_CFLAGS="$CFLAGS -DFT_MACINTOSH" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + /* OSHostByteOrder() is typed as OS_INLINE */ + int32_t os_byte_order = OSHostByteOrder(); + + + if ( OSBigEndian != os_byte_order ) + return 1; + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_ANSI_OS_INLINE=1" + ], + [AC_MSG_RESULT([no, ANSI incompatible]) + CFLAGS="$orig_CFLAGS" + ]) + AC_MSG_CHECKING([type ResourceIndex]) + orig_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +# include +#endif + + ], + [ + + ResourceIndex i = 0; + return i; + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=1" + ], + [AC_MSG_RESULT([no]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=0" + ])], + [AC_MSG_RESULT([not found]) + ft2_extra_libs="" + LDFLAGS="${orig_LDFLAGS}" + CFLAGS="$CFLAGS -DDARWIN_NO_CARBON"]) +else + case x$host_os in + xdarwin*) + dnl AC_MSG_WARN([host system is MacOS but configured to build without Carbon]) + CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" + ;; + *) + ;; + esac +fi + + +# Whether to use FileManager, which is deprecated since Mac OS X 10.4. + +AC_ARG_WITH([fsspec], + AS_HELP_STRING([--with-fsspec], + [use obsolete FSSpec API of MacOS, if available (default=yes)])) +if test x$with_fsspec = xno; then + CFLAGS="$CFLAGS -DHAVE_FSSPEC=0" +elif test x$with_old_mac_fonts = xyes -a x$with_fsspec != x; then + AC_MSG_CHECKING([FSSpec-based FileManager]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + FCBPBPtr paramBlock; + short vRefNum; + long dirID; + ConstStr255Param fileName; + FSSpec* spec; + + + /* FSSpec functions: deprecated since Mac OS X 10.4 */ + PBGetFCBInfoSync( paramBlock ); + FSMakeFSSpec( vRefNum, dirID, fileName, spec ); + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_FSSPEC=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_FSSPEC=0"]) +fi + + +# Whether to use FileManager in Carbon since MacOS 9.x. + +AC_ARG_WITH([fsref], + AS_HELP_STRING([--with-fsref], + [use Carbon FSRef API of MacOS, if available (default=yes)])) +if test x$with_fsref = xno; then + AC_MSG_WARN([ +*** WARNING + FreeType2 built without FSRef API cannot load + data-fork fonts on MacOS, except of XXX.dfont. + ]) + CFLAGS="$CFLAGS -DHAVE_FSREF=0" +elif test x$with_old_mac_fonts = xyes -a x$with_fsref != x; then + AC_MSG_CHECKING([FSRef-based FileManager]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + short vRefNum; + long dirID; + ConstStr255Param fileName; + + Boolean* isDirectory; + UInt8* path; + SInt16 desiredRefNum; + SInt16* iterator; + SInt16* actualRefNum; + HFSUniStr255* outForkName; + FSVolumeRefNum volume; + FSCatalogInfoBitmap whichInfo; + FSCatalogInfo* catalogInfo; + FSForkInfo* forkInfo; + FSRef* ref; + +#if HAVE_FSSPEC + FSSpec* spec; +#endif + + /* FSRef functions: no need to check? */ + FSGetForkCBInfo( desiredRefNum, volume, iterator, + actualRefNum, forkInfo, ref, + outForkName ); + FSPathMakeRef( path, ref, isDirectory ); + +#if HAVE_FSSPEC + FSpMakeFSRef ( spec, ref ); + FSGetCatalogInfo( ref, whichInfo, catalogInfo, + outForkName, spec, ref ); +#endif + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_FSREF=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_FSREF=0"]) +fi + + +# Whether to use QuickDraw API in ToolBox, which is deprecated since +# Mac OS X 10.4. + +AC_ARG_WITH([quickdraw-toolbox], + AS_HELP_STRING([--with-quickdraw-toolbox], + [use MacOS QuickDraw in ToolBox, if available (default=yes)])) +if test x$with_quickdraw_toolbox = xno; then + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0" +elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_toolbox != x; then + AC_MSG_CHECKING([QuickDraw FontManager functions in ToolBox]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + Str255 familyName; + SInt16 familyID = 0; + FMInput* fmIn = NULL; + FMOutput* fmOut = NULL; + + + GetFontName( familyID, familyName ); + GetFNum( familyName, &familyID ); + fmOut = FMSwapFont( fmIn ); + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0"]) +fi + + +# Whether to use QuickDraw API in Carbon, which is deprecated since +# Mac OS X 10.4. + +AC_ARG_WITH([quickdraw-carbon], + AS_HELP_STRING([--with-quickdraw-carbon], + [use MacOS QuickDraw in Carbon, if available (default=yes)])) +if test x$with_quickdraw_carbon = xno; then + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0" +elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_carbon != x; then + AC_MSG_CHECKING([QuickDraw FontManager functions in Carbon]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + FMFontFamilyIterator famIter; + FMFontFamily family; + Str255 famNameStr; + FMFontFamilyInstanceIterator instIter; + FMFontStyle style; + FMFontSize size; + FMFont font; + FSSpec* pathSpec; + + + FMCreateFontFamilyIterator( NULL, NULL, kFMUseGlobalScopeOption, + &famIter ); + FMGetNextFontFamily( &famIter, &family ); + FMGetFontFamilyName( family, famNameStr ); + FMCreateFontFamilyInstanceIterator( family, &instIter ); + FMGetNextFontFamilyInstance( &instIter, &font, &style, &size ); + FMDisposeFontFamilyInstanceIterator( &instIter ); + FMDisposeFontFamilyIterator( &famIter ); + FMGetFontContainer( font, pathSpec ); + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0"]) +fi + + +# Whether to use AppleTypeService since Mac OS X. + +AC_ARG_WITH([ats], + AS_HELP_STRING([--with-ats], + [use AppleTypeService, if available (default=yes)])) +if test x$with_ats = xno; then + CFLAGS="$CFLAGS -DHAVE_ATS=0" +elif test x$with_old_mac_fonts = xyes -a x$with_ats != x; then + AC_MSG_CHECKING([AppleTypeService functions]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + FSSpec* pathSpec; + + + ATSFontFindFromName( NULL, kATSOptionFlagsUnRestrictedScope ); +#if HAVE_FSSPEC + ATSFontGetFileSpecification( 0, pathSpec ); +#endif + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_ATS=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_ATS=0"]) +fi + +case "$CFLAGS" in + *HAVE_FSSPEC* | *HAVE_FSREF* | *HAVE_QUICKDRAW* | *HAVE_ATS* ) + AC_MSG_WARN([ +*** WARNING + FSSpec/FSRef/QuickDraw/ATS options are explicitly given, + thus it is recommended to replace src/base/ftmac.c by builds/mac/ftmac.c. + ]) + CFLAGS="$CFLAGS "'-I$(TOP_DIR)/builds/mac/' + ;; + *) + ;; +esac + +# Check for pthreads + +AX_PTHREAD([have_pthread=yes], [have_pthread=no]) + +# Check for Python and docwriter +PYTHON_MIN_VERSION=3.5 +have_py3=no +have_docwriter=no +PIP=pip + +AC_CHECK_PROGS([PYTHON], [python3 python], [missing]) +if test "x$PYTHON" != "xmissing"; then + AX_PROG_PYTHON_VERSION([$PYTHON_MIN_VERSION], [have_py3=yes], []) + + if test "x$have_py3" = "xyes"; then + PIP="$PYTHON -m $PIP" + AC_MSG_CHECKING([for `docwriter' Python module]) + $PYTHON -m docwriter -h > /dev/null 2>&1 + if test "x$?" = "x0"; then + have_docwriter=yes + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi +fi + + +# entries in Requires.private are separated by commas +PKGCONFIG_REQUIRES_PRIVATE="$zlib_reqpriv, \ + $bzip2_reqpriv, \ + $libpng_reqpriv, \ + $harfbuzz_reqpriv, \ + $brotli_reqpriv" +# beautify +PKGCONFIG_REQUIRES_PRIVATE=`echo "$PKGCONFIG_REQUIRES_PRIVATE" \ + | sed -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/, */,/g' \ + -e 's/,,*/,/g' \ + -e 's/^,*//' \ + -e 's/,*$//' \ + -e 's/,/, /g'` + +PKGCONFIG_LIBS_PRIVATE="$zlib_libspriv \ + $bzip2_libspriv \ + $libpng_libspriv \ + $harfbuzz_libspriv \ + $brotli_libspriv \ + $ft2_extra_libs" +# beautify +PKGCONFIG_LIBS_PRIVATE=`echo "$PKGCONFIG_LIBS_PRIVATE" \ + | sed -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/ */ /g'` + +LIBSSTATIC_CONFIG="-lfreetype \ + $zlib_libsstaticconf \ + $bzip2_libsstaticconf \ + $libpng_libsstaticconf \ + $harfbuzz_libsstaticconf \ + $brotli_libsstaticconf \ + $ft2_extra_libs" +# remove -L/usr/lib and -L/usr/lib64 since `freetype-config' adds them later +# on if necessary; also beautify +LIBSSTATIC_CONFIG=`echo "$LIBSSTATIC_CONFIG" \ + | sed -e 's|-L */usr/lib64/* | |g' \ + -e 's|-L */usr/lib/* | |g' \ + -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/ */ /g'` + +# If FreeType gets installed with `--disable-shared', don't use +# 'private' fields. `pkg-config' only looks into `.pc' files and is +# completely agnostic to whether shared libraries are actually present +# or not. As a consequence, the user had to specify `--static' while +# calling `pkg-config', which configure scripts are normally not +# prepared for. + +PKGCONFIG_REQUIRES= +PKGCONFIG_LIBS='-L${libdir} -lfreetype' + +if test $enable_shared = "no"; then + PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES $PKGCONFIG_REQUIRES_PRIVATE" + PKGCONFIG_REQUIRES_PRIVATE= + PKGCONFIG_LIBS="$PKGCONFIG_LIBS $PKGCONFIG_LIBS_PRIVATE" + PKGCONFIG_LIBS_PRIVATE= +fi + +AC_SUBST([ftmac_c]) +AC_SUBST([PKGCONFIG_REQUIRES]) +AC_SUBST([PKGCONFIG_LIBS]) +AC_SUBST([PKGCONFIG_REQUIRES_PRIVATE]) +AC_SUBST([PKGCONFIG_LIBS_PRIVATE]) +AC_SUBST([LIBSSTATIC_CONFIG]) + +AC_SUBST([hardcode_libdir_flag_spec]) +AC_SUBST([wl]) +AC_SUBST([build_libtool_libs]) + + +# We cannot use alternation (`\|`) in the `sed` regexp since it is not +# portable. + +ftoption_set() +{ + regexp="-e \\\"s|.*#.*def.*$1 .*|#define $1|\\\" \ + -e \\\"s|.*#.*def.*$1\$|#define $1|\\\"" + FTOPTION_H_SED="$FTOPTION_H_SED $regexp" +} + +ftoption_unset() +{ + regexp="-e \\\"s|.*#.*def.*$1 .*|/* #undef $1 */|\\\" \ + -e \\\"s|.*#.*def.*$1\$|/* #undef $1 */|\\\"" + FTOPTION_H_SED="$FTOPTION_H_SED $regexp" +} + +# Changing the `LDFLAGS` value should only be done after the +# `lt_cv_prog_compiler_static_works` test. + +if test "$have_zlib" != no; then + CFLAGS="$CFLAGS $ZLIB_CFLAGS" + LDFLAGS="$LDFLAGS $ZLIB_LIBS" + ftoption_set FT_CONFIG_OPTION_SYSTEM_ZLIB +else + ftoption_unset FT_CONFIG_OPTION_SYSTEM_ZLIB +fi +if test "$have_bzip2" != no; then + CFLAGS="$CFLAGS $BZIP2_CFLAGS" + LDFLAGS="$LDFLAGS $BZIP2_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_BZIP2 +else + ftoption_unset FT_CONFIG_OPTION_USE_BZIP2 +fi +if test "$have_libpng" != no; then + CFLAGS="$CFLAGS $LIBPNG_CFLAGS" + LDFLAGS="$LDFLAGS $LIBPNG_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_PNG +else + ftoption_unset FT_CONFIG_OPTION_USE_PNG +fi +if test "$have_harfbuzz" != no; then + CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS" + LDFLAGS="$LDFLAGS $HARFBUZZ_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ +else + ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ +fi +if test "$have_harfbuzz_dynamic" != no; then + ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC +else + ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC +fi +if test "$have_brotli" != no; then + CFLAGS="$CFLAGS $BROTLI_CFLAGS" + LDFLAGS="$LDFLAGS $BROTLI_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_BROTLI +else + ftoption_unset FT_CONFIG_OPTION_USE_BROTLI +fi + +if test "$have_pthread" != no; then + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LDFLAGS="$LDFLAGS $PTHREAD_CFLAGS $PTHREAD_LIBS" +fi + +AC_SUBST([CFLAGS]) +AC_SUBST([LDFLAGS]) + +# We don't want to use a template file for `ftoption.h', since compilation +# should work without calling a configure script also. For this reason, we +# copy the `include/freetype/config/ftoption.h' file to the `unix/builds' +# directory (using a dummy `AC_CONFIG_FILES' call) and apply the just +# constructed $FTOPTION_H_SED regexp (using the post-action of +# `AC_CONFIG_FILES'); this is also the version that gets installed later on. +# +AC_CONFIG_FILES([ftoption.h:${srcdir}/../../include/freetype/config/ftoption.h], + [mv ftoption.h ftoption.tmp + eval "sed $FTOPTION_H_SED < ftoption.tmp > ftoption.h" + rm ftoption.tmp], + [FTOPTION_H_SED="$FTOPTION_H_SED"]) + +AC_CONFIG_HEADERS([ftconfig.h]) + +# create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' +# and `builds/unix/unix-cc.mk' that will be used by the build system +# +AC_CONFIG_FILES([unix-cc.mk:unix-cc.in + unix-def.mk:unix-def.in]) + +AC_OUTPUT + +AC_MSG_NOTICE([ + +Library configuration: + external zlib: $have_zlib + bzip2: $have_bzip2 + libpng: $have_libpng + harfbuzz: $have_harfbuzz + brotli: $have_brotli + pthread: $have_pthread +]) + +# Warn if docwriter is not installed + +if test $have_docwriter = no; then + AC_MSG_WARN([ + `make refdoc' will fail since pip package `docwriter' is not installed. + To install, run `$PIP install docwriter', or to use a Python + virtual environment, run `make refdoc-venv' (requires pip package + `virtualenv'). These operations require Python >= $PYTHON_MIN_VERSION. + ]) +fi + +# Warn if pthread is not available + +if test $have_pthread = no; then + AC_MSG_WARN([ + `FT_DEBUG_LOGGING' will not work since the `pthread' library is not + available. This warning can be safely ignored if you don't plan to use + this configuration macro. + ]) +fi + +# end of configure.raw diff --git a/local/recipes/libs/freetype2/source/builds/unix/configure.raw b/local/recipes/libs/freetype2/source/builds/unix/configure.raw new file mode 100644 index 0000000000..7d08463819 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/configure.raw @@ -0,0 +1,1239 @@ +# This file is part of the FreeType project. +# +# Process this file with autoconf to produce a configure script. +# +# Copyright (C) 2001-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +AC_INIT([FreeType], [@VERSION@], [freetype@nongnu.org], [freetype]) +AC_CONFIG_SRCDIR([ftconfig.h.in]) + + +# Don't forget to update `docs/VERSIONS.TXT'! + +version_info='26:6:20' +AC_SUBST([version_info]) +ft_version=`echo $version_info | tr : .` +AC_SUBST([ft_version]) + + +# checks for system type + +AC_CANONICAL_HOST + + +# checks for programs + +AC_PROG_CC +AC_PROG_CPP +AC_SUBST(EXEEXT) + +PKG_PROG_PKG_CONFIG([0.24]) + +LT_INIT(win32-dll) +AC_CHECK_HEADER([windows.h], [LT_PROG_RC]) + + +# checks for native programs to generate building tool + +if test ${cross_compiling} = yes; then + AC_CHECK_PROG(CC_BUILD, ${build}-gcc, ${build}-gcc) + test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, gcc, gcc) + test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, cc, cc, , , /usr/ucb/cc) + test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, clang, clang) + test -z "${CC_BUILD}" && AC_MSG_ERROR([cannot find native C compiler]) + + AC_MSG_CHECKING([for suffix of native executables]) + rm -f a.* b.* a_out.exe conftest.* + echo > conftest.c "int main(void) { return 0;}" + ${CC_BUILD} conftest.c || AC_MSG_ERROR([native C compiler is not working]) + rm -f conftest.c + if test -x a.out -o -x b.out -o -x conftest; then + EXEEXT_BUILD="" + elif test -x a_out.exe -o -x conftest.exe; then + EXEEXT_BUILD=".exe" + elif test -x conftest.*; then + EXEEXT_BUILD=`echo conftest.* | sed -n '1s/^.*\././'` + fi + rm -f a.* b.* a_out.exe conftest.* + AC_MSG_RESULT($EXEEXT_BUILD) + CFLAGS_BUILD= + LDFLAGS_BUILD= +else + CC_BUILD=${CC} + CFLAGS_BUILD=${CFLAGS} + LDFLAGS_BUILD=${LDFLAGS} + EXEEXT_BUILD=${EXEEXT} +fi + +AC_SUBST(CC_BUILD) +AC_SUBST(CFLAGS_BUILD) +AC_SUBST(LDFLAGS_BUILD) +AC_SUBST(EXEEXT_BUILD) + + +# Since these files will be eventually called from another directory (namely +# from the top level) we make the path of the scripts absolute. +# +# This small code snippet has been taken from automake's `ylwrap' script. + +AC_PROG_INSTALL +case "$INSTALL" in +[[\\/]]* | ?:[[\\/]]*) + ;; +*[[\\/]]*) + INSTALL="`pwd`/$INSTALL" + ;; +esac + +AC_PROG_MKDIR_P +case "$MKDIR_P" in +[[\\/]]* | ?:[[\\/]]*) + ;; +*[[\\/]]*) + MKDIR_P="`pwd`/$MKDIR_P" + ;; +esac + + +# checks for header files + +AC_CHECK_HEADERS([fcntl.h unistd.h]) + + +# checks for typedefs, structures, and compiler characteristics + +AC_C_CONST + +AC_ARG_ENABLE([freetype-config], + AS_HELP_STRING([--enable-freetype-config], [install freetype-config]), + [case "${enableval}" in + yes) enable_freetype_config="TRUE" ;; + no) enable_freetype_config="FALSE" ;; + *) AC_MSG_ERROR([unknown value '${enableval}' passed with --enable-freetype-config]) ;; + esac], [enable_freetype_config="FALSE"]) + +AC_SUBST(INSTALL_FT2_CONFIG, [$enable_freetype_config]) + +# checks for library functions + +AC_SYS_LARGEFILE + +# Here we check whether we can use our mmap file component. +# +# Note that `ftsystem.c` for Windows has its own mmap-like implementation +# not covered by `AC_FUNC_MMAP` and/or `FT_UNMAP_PARAM`. + +AC_ARG_ENABLE([mmap], + AS_HELP_STRING([--disable-mmap], + [do not check mmap() and do not use]), + [enable_mmap="no"], [enable_mmap="yes"]) +if test "x${enable_mmap}" != "xno"; then + case "$host" in + *-*-mingw*) + AC_MSG_CHECKING([for working mmap]) + AC_MSG_RESULT([using MapViewOfFile in Windows]) + FTSYS_SRC='$(TOP_DIR)/builds/windows/ftsystem.c' + ;; + *) + AC_FUNC_MMAP + if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then + FTSYS_SRC='$(PLATFORM_DIR)/ftsystem.c' + + AC_CHECK_DECLS([munmap], + [], + [], + [ + +#ifdef HAVE_UNISTD_H +#include +#endif +#include + + ]) + + FT_MUNMAP_PARAM + fi + ;; + esac +fi + +if test -z "$FTSYS_SRC"; then + FTSYS_SRC='$(BASE_DIR)/ftsystem.c' +fi +AC_SUBST([FTSYS_SRC]) + + +# get compiler flags right +# +# We try to make the compiler work for C99-strict source. Even if the +# C compiler is gcc and C99 flags are available, some system headers +# might be broken in C99 mode. We have to check whether compilation +# finishes successfully. +# +if test "x$GCC" = xyes; then + XX_CFLAGS="-Wall" + case "$host" in + *-*-mingw*) + XX_ANSIFLAGS="-pedantic" + ;; + *-*-aix*) + XX_ANSIFLAGS="-pedantic" + ;; + *) + XX_ANSIFLAGS="" + + for a in "-pedantic" "-std=c99" + do + AC_MSG_CHECKING([$CC compiler flag ${a} to assure ANSI C99 works correctly]) + orig_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} ${XX_ANSIFLAGS} ${a}" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#include + + ], + [ + + { + puts( "" ); + return 0; + } + + ])], + [AC_MSG_RESULT([ok, adding to XX_ANSIFLAGS]) + XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}" + ], + [AC_MSG_RESULT([no])]) + CFLAGS="${orig_CFLAGS}" + done + ;; + esac +else + case "$host" in + *-dec-osf*) + CFLAGS= + XX_CFLAGS="-std1 -g3" + XX_ANSIFLAGS= + ;; + *) + XX_CFLAGS= + XX_ANSIFLAGS= + ;; + esac +fi +AC_SUBST([XX_CFLAGS]) +AC_SUBST([XX_ANSIFLAGS]) + + +# It is recommended that shared libraries hide symbols except those with +# explicit __attribute__((visibility("default"))). +# +found_visibility_flag=no +AC_MSG_CHECKING([for -fvisibility=hidden compiler flag]) +orig_CFLAGS="${CFLAGS}" +CFLAGS="${CFLAGS} -fvisibility=hidden -Werror" +AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +__attribute__(( visibility( "default" ) )) int foo( void ); +__attribute__(( visibility( "hidden" ) )) int bar( void ); + +int foo( void ) { return 0; } +int bar( void ) { return 1; } + + ], + [])], + [found_visibility_flag=yes + CFLAGS="${orig_CFLAGS} -fvisibility=hidden" + AC_MSG_RESULT(yes) + ], + [CFLAGS="${orig_CFLAGS}" + AC_MSG_RESULT(no)]) + +if test "${found_visibility_flag}" = "no"; then + AC_MSG_CHECKING([for -xldscope=hidden compiler flag]) + orig_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} -xldscope=hidden" + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], + [found_visibility_flag=yes + AC_MSG_RESULT(yes)], + [CFLAGS="${orig_CFLAGS}" + AC_MSG_RESULT(no)]) +fi + +# All library tests below try `pkg-config' first. If that fails, a function +# from the library is tested in the traditional autoconf way (zlib, bzip2), +# or a config script is called (libpng). +# +# The `xxx_reqpriv' variables are for the `Requires.private' field in +# `freetype2.pc'. The `xxx_libspriv' variables are for the `Libs.private' +# field in `freetype2.pc' if pkg-config doesn't find a proper .pc file. +# +# The `xxx_libsstaticconf' variables are for the `freetype-config' script. +# +# Note that a call to PKG_CHECK_MODULES(XXX, ...) sets and creates the +# output variables `XXX_CFLAGS' and `XXX_LIBS'. In case one or both are set +# for a library by the user, no entry for this library is added to +# `Requires.private'. Instead, it gets added to `Libs.private' + + +# check for system zlib + +AC_ARG_WITH([zlib], + [AS_HELP_STRING([--with-zlib=@<:@yes|no|auto@:>@], + [use system zlib instead of internal library @<:@default=auto@:>@])], + [], [with_zlib=auto]) + +have_zlib=no +if test x"$with_zlib" = xyes -o x"$with_zlib" = xauto; then + zlib_pkg="zlib" + have_zlib_pkg=no + + if test x"$ZLIB_CFLAGS" = x -a x"$ZLIB_LIBS" = x; then + PKG_CHECK_EXISTS([$zlib_pkg], [have_zlib_pkg=yes]) + fi + PKG_CHECK_MODULES([ZLIB], [$zlib_pkg], + [have_zlib="yes (pkg-config)"], [:]) + + if test $have_zlib_pkg = yes; then + # we have zlib.pc + zlib_reqpriv="$zlib_pkg" + zlib_libspriv= + zlib_libsstaticconf=`$PKG_CONFIG --static --libs "$zlib_pkg"` + else + zlib_reqpriv= + + if test "$have_zlib" != no; then + # ZLIB_CFLAGS and ZLIB_LIBS are set by the user + zlib_libspriv="$ZLIB_LIBS" + zlib_libsstaticconf="$ZLIB_LIBS" + have_zlib="yes (ZLIB_CFLAGS and ZLIB_LIBS)" + else + # fall back to standard autoconf test + AC_CHECK_LIB([z], + [gzsetparams], + [AC_CHECK_HEADER([zlib.h], + [have_zlib="yes (autoconf test)" + zlib_libspriv="-lz" + zlib_libsstaticconf="$zlib_libspriv" + ZLIB_LIBS="$zlib_libspriv"])]) + fi + fi +fi + +if test x"$with_zlib" = xyes -a "$have_zlib" = no; then + AC_MSG_ERROR([external zlib support requested but library not found]) +fi + +SYSTEM_ZLIB= +if test "$have_zlib" != no; then + SYSTEM_ZLIB=yes +fi +AC_SUBST([SYSTEM_ZLIB]) + + +# check for system libbz2 + +AC_ARG_WITH([bzip2], + [AS_HELP_STRING([--with-bzip2=@<:@yes|no|auto@:>@], + [support bzip2 compressed fonts @<:@default=auto@:>@])], + [], [with_bzip2=auto]) + +have_bzip2=no +if test x"$with_bzip2" = xyes -o x"$with_bzip2" = xauto; then + bzip2_pkg="bzip2" + have_bzip2_pkg=no + + if test x"$BZIP2_CFLAGS" = x -a x"$BZIP2_LIBS" = x; then + PKG_CHECK_EXISTS([$bzip2_pkg], [have_bzip2_pkg=yes]) + fi + PKG_CHECK_MODULES([BZIP2], [$bzip2_pkg], + [have_bzip2="yes (pkg-config)"], [:]) + + if test $have_bzip2_pkg = yes; then + # we have bzip2.pc + bzip2_reqpriv="$bzip2_pkg" + bzip2_libspriv= + bzip2_libsstaticconf=`$PKG_CONFIG --static --libs "$bzip2_pkg"` + else + bzip2_reqpriv= + + if test "$have_bzip2" != no; then + # BZIP2_CFLAGS and BZIP2_LIBS are set by the user + bzip2_libspriv="$BZIP2_LIBS" + bzip2_libsstaticconf="$BZIP2_LIBS" + have_bzip2="yes (BZIP2_CFLAGS and BZIP2_LIBS)" + else + # fall back to standard autoconf test + AC_CHECK_LIB([bz2], + [BZ2_bzDecompress], + [AC_CHECK_HEADER([bzlib.h], + [have_bzip2="yes (autoconf test)" + bzip2_libspriv="-lbz2" + bzip2_libsstaticconf="$bzip2_libspriv" + BZIP2_LIBS="$bzip2_libspriv"])]) + fi + fi +fi + +if test x"$with_bzip2" = xyes -a "$have_bzip2" = no; then + AC_MSG_ERROR([bzip2 support requested but library not found]) +fi + + +# check for system libpng + +AC_ARG_WITH([png], + [AS_HELP_STRING([--with-png=@<:@yes|no|auto@:>@], + [support png compressed OpenType embedded bitmaps @<:@default=auto@:>@])], + [], [with_png=auto]) + +have_libpng=no +if test x"$with_png" = xyes -o x"$with_png" = xauto; then + libpng_pkg="libpng" + have_libpng_pkg=no + + if test x"$LIBPNG_CFLAGS" = x -a x"$LIBPNG_LIBS" = x; then + PKG_CHECK_EXISTS([$libpng_pkg], [have_libpng_pkg=yes]) + fi + PKG_CHECK_MODULES([LIBPNG], [$libpng_pkg], + [have_libpng="yes (pkg-config)"], [:]) + + if test $have_libpng_pkg = yes; then + # we have libpng.pc + libpng_reqpriv="$libpng_pkg" + libpng_libspriv= + libpng_libsstaticconf=`$PKG_CONFIG --static --libs "$libpng_pkg"` + else + libpng_reqpriv= + + if test "$have_libpng" != no; then + # LIBPNG_CFLAGS and LIBPNG_LIBS are set by the user + libpng_libspriv="$LIBPNG_LIBS" + libpng_libsstaticconf="$LIBPNG_LIBS" + have_libpng="yes (LIBPNG_CFLAGS and LIBPNG_LIBS)" + else + # fall back to config script + AC_CHECK_PROG(have_libpng, [libpng-config], [yes (libpng-config)], [no]) + if test "$have_libpng" != no; then + LIBPNG_CFLAGS=`libpng-config --cflags` + LIBPNG_LIBS=`libpng-config --ldflags` + libpng_libspriv=`libpng-config --static --ldflags` + libpng_libsstaticconf="$libpng_libspriv" + fi + fi + fi +fi + +if test x"$with_png" = xyes -a "$have_libpng" = no; then + AC_MSG_ERROR([libpng support requested but library not found]) +fi + + +# check for system libharfbuzz + +AC_ARG_WITH([harfbuzz], + [AS_HELP_STRING([--with-harfbuzz=@<:@yes|dynamic|no|auto@:>@], + [improve auto-hinting of OpenType fonts @<:@default=auto@:>@])], + [], [with_harfbuzz=auto]) + +have_harfbuzz=no +if test x"$with_harfbuzz" = xyes -o x"$with_harfbuzz" = xauto; then + harfbuzz_pkg="harfbuzz >= 2.0.0" + have_harfbuzz_pkg=no + + if test x"$HARFBUZZ_CFLAGS" = x -a x"$HARFBUZZ_LIBS" = x; then + PKG_CHECK_EXISTS([$harfbuzz_pkg], [have_harfbuzz_pkg=yes]) + fi + PKG_CHECK_MODULES([HARFBUZZ], [$harfbuzz_pkg], + [have_harfbuzz="yes (pkg-config)"], [:]) + + if test $have_harfbuzz_pkg = yes; then + # we have harfbuzz.pc + harfbuzz_reqpriv="$harfbuzz_pkg" + harfbuzz_libspriv= + harfbuzz_libsstaticconf=`$PKG_CONFIG --static --libs "$harfbuzz_pkg"` + else + harfbuzz_reqpriv= + + if test "$have_harfbuzz" != no; then + # HARFBUZZ_CFLAGS and HARFBUZZ_LIBS are set by the user + harfbuzz_libspriv="$HARFBUZZ_LIBS" + harfbuzz_libsstaticconf="$HARFBUZZ_LIBS" + have_harfbuzz="yes (HARFBUZZ_CFLAGS and HARFBUZZ_LIBS)" + else + # since HarfBuzz is quite a new library we don't fall back to a + # different test; additionally, it has too many dependencies + : + fi + fi +fi + +have_harfbuzz_dynamic=no +if test x"$have_harfbuzz" = xno; then + if test x"$with_harfbuzz" = xdynamic -o x"$with_harfbuzz" = xauto; then + case "$host" in + *-*-mingw*) + # Windows uses its own LoadLibrary(), set variables to dynamic. + have_harfbuzz_dynamic=yes + have_harfbuzz="yes (dynamic)" + ;; + *) + # Check for libdl + AC_CHECK_LIB([c], + [dlopen], + [have_harfbuzz_dynamic=yes], + AC_CHECK_LIB([dl], + [dlopen], + [have_harfbuzz_dynamic=yes + need_libdl=yes])) + if test x"$have_harfbuzz_dynamic" = xyes; then + have_harfbuzz="yes (dynamic)" + HARFBUZZ_CFLAGS= + if test x"$need_libdl" = xyes; then + HARFBUZZ_LIBS="-ldl" + fi + fi + ;; + esac + fi +fi + +if test x"$have_harfbuzz" = xno; then + if test x"$with_harfbuzz" != xno -a "$with_harfbuzz" != xauto; then + AC_MSG_ERROR([harfbuzz support requested but library not found]) + fi +fi + +# check for system libbrotlidec + +AC_ARG_WITH([brotli], + [AS_HELP_STRING([--with-brotli=@<:@yes|no|auto@:>@], + [support decompression of WOFF2 streams @<:@default=auto@:>@])], + [], [with_brotli=auto]) + +have_brotli=no +if test x"$with_brotli" = xyes -o x"$with_brotli" = xauto; then + brotli_pkg="libbrotlidec" + have_brotli_pkg=no + + if test x"$BROTLI_CFLAGS" = x -a x"$BROTLI_LIBS" = x; then + PKG_CHECK_EXISTS([$brotli_pkg], [have_brotli_pkg=yes]) + fi + PKG_CHECK_MODULES([BROTLI], [$brotli_pkg], + [have_brotli="yes (pkg-config)"], [:]) + + if test $have_brotli_pkg = yes; then + # we have libbrotlidec.pc + brotli_reqpriv="$brotli_pkg" + brotli_libspriv= + brotli_libsstaticconf=`$PKG_CONFIG --static --libs "$brotli_pkg"` + else + brotli_reqpriv= + + if test "$have_brotli" != no; then + # BROTLI_CFLAGS and BROTLI_LIBS are set by the user + brotli_libspriv="$BROTLI_LIBS" + brotli_libsstaticconf="$BROTLI_LIBS" + have_brotli="yes (BROTLI_CFLAGS and BROTLI_LIBS)" + else + # since Brotli is quite a new library we don't fall back to a + # different test + : + fi + fi +fi + +if test x"$with_brotli" = xyes -a "$have_brotli" = no; then + AC_MSG_ERROR([brotli support requested but library not found]) +fi + + +# Checks for the demo programs. +# +# FreeType doesn't need this. However, since the demo program repository +# doesn't come with a `configure` script of its own, we integrate the tests +# here for simplicity. + +# We need `clock_gettime` from 'librt' for the `ftbench` demo program. +# +# The code is modeled after gnulib's file `clock_time.m4`, ignoring +# very old Solaris systems. +LIB_CLOCK_GETTIME= +AC_SEARCH_LIBS([clock_gettime], + [rt], + [test "$ac_cv_search_clock_gettime" = "none required" \ + || LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime]) + +FT_DEMO_CFLAGS="" +FT_DEMO_LDFLAGS="$LIB_CLOCK_GETTIME" + +# 'librsvg' is needed to demonstrate SVG support. +AC_ARG_WITH([librsvg], + [AS_HELP_STRING([--with-librsvg=@<:@yes|no|auto@:>@], + [support OpenType SVG fonts in FreeType demo programs @<:@default=auto@:>@])], + [], [with_librsvg=auto]) + +have_librsvg=no +if test x"$with_librsvg" = xyes -o x"$with_librsvg" = xauto; then + PKG_CHECK_MODULES([LIBRSVG], [librsvg-2.0 >= 2.46.0], + [have_librsvg="yes (pkg-config)"], [:]) + + if test "$have_librsvg" != no; then + FT_DEMO_CFLAGS="$FT_DEMO_CFLAGS $LIBRSVG_CFLAGS -DHAVE_LIBRSVG" + FT_DEMO_LDFLAGS="$FT_DEMO_LDFLAGS $LIBRSVG_LIBS" + fi +fi + +if test x"$with_librsvg" = xyes -a "$have_librsvg" = no; then + AC_MSG_ERROR([librsvg support requested but library not found]) +fi + +AC_SUBST([FT_DEMO_CFLAGS]) +AC_SUBST([FT_DEMO_LDFLAGS]) + + +# Some options handling SDKs/archs in CFLAGS should be copied +# to LDFLAGS. Apple TechNote 2137 recommends to include these +# options in CFLAGS but not in LDFLAGS. + +save_config_args=$* +set dummy ${CFLAGS} +i=1 +while test $i -le $# +do + c=$1 + + case "${c}" in + -isysroot|-arch) # options taking 1 argument + a=$2 + AC_MSG_CHECKING([whether CFLAGS and LDFLAGS share ${c} ${a}]) + if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null + then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no, copy to LDFLAGS]) + LDFLAGS="${LDFLAGS} ${c} ${a}" + fi + shift 1 + ;; + -m32|-m64|-march=*|-mcpu=*) # options taking no argument + AC_MSG_CHECKING([whether CFLAGS and LDFLAGS share ${c}]) + if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null + then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no, copy to LDFLAGS]) + LDFLAGS="${LDFLAGS} ${c}" + fi + ;; + # *) + # AC_MSG_RESULT([${c} is not copied to LDFLAGS]) + # ;; + esac + + shift 1 +done +set ${save_config_args} + + +# Whether to use Mac OS resource-based fonts. + +ftmac_c="" # src/base/ftmac.c should not be included in makefiles by default + +AC_ARG_WITH([old-mac-fonts], + AS_HELP_STRING([--with-old-mac-fonts], + [allow Mac resource-based fonts to be used])) +if test x$with_old_mac_fonts = xyes; then + orig_LDFLAGS="${LDFLAGS}" + AC_MSG_CHECKING([CoreServices & ApplicationServices of Mac OS X]) + ft2_extra_libs="-Wl,-framework,CoreServices -Wl,-framework,ApplicationServices" + LDFLAGS="$LDFLAGS $ft2_extra_libs" + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + short res = 0; + + + UseResFile( res ); + + ])], + [AC_MSG_RESULT([ok]) + ftmac_c='ftmac.c' + AC_MSG_CHECKING([whether OS_INLINE macro is ANSI compatible]) + orig_CFLAGS="$CFLAGS -DFT_MACINTOSH" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + /* OSHostByteOrder() is typed as OS_INLINE */ + int32_t os_byte_order = OSHostByteOrder(); + + + if ( OSBigEndian != os_byte_order ) + return 1; + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_ANSI_OS_INLINE=1" + ], + [AC_MSG_RESULT([no, ANSI incompatible]) + CFLAGS="$orig_CFLAGS" + ]) + AC_MSG_CHECKING([type ResourceIndex]) + orig_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +# include +#endif + + ], + [ + + ResourceIndex i = 0; + return i; + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=1" + ], + [AC_MSG_RESULT([no]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=0" + ])], + [AC_MSG_RESULT([not found]) + ft2_extra_libs="" + LDFLAGS="${orig_LDFLAGS}" + CFLAGS="$CFLAGS -DDARWIN_NO_CARBON"]) +else + case x$host_os in + xdarwin*) + dnl AC_MSG_WARN([host system is MacOS but configured to build without Carbon]) + CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" + ;; + *) + ;; + esac +fi + + +# Whether to use FileManager, which is deprecated since Mac OS X 10.4. + +AC_ARG_WITH([fsspec], + AS_HELP_STRING([--with-fsspec], + [use obsolete FSSpec API of MacOS, if available (default=yes)])) +if test x$with_fsspec = xno; then + CFLAGS="$CFLAGS -DHAVE_FSSPEC=0" +elif test x$with_old_mac_fonts = xyes -a x$with_fsspec != x; then + AC_MSG_CHECKING([FSSpec-based FileManager]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + FCBPBPtr paramBlock; + short vRefNum; + long dirID; + ConstStr255Param fileName; + FSSpec* spec; + + + /* FSSpec functions: deprecated since Mac OS X 10.4 */ + PBGetFCBInfoSync( paramBlock ); + FSMakeFSSpec( vRefNum, dirID, fileName, spec ); + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_FSSPEC=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_FSSPEC=0"]) +fi + + +# Whether to use FileManager in Carbon since MacOS 9.x. + +AC_ARG_WITH([fsref], + AS_HELP_STRING([--with-fsref], + [use Carbon FSRef API of MacOS, if available (default=yes)])) +if test x$with_fsref = xno; then + AC_MSG_WARN([ +*** WARNING + FreeType2 built without FSRef API cannot load + data-fork fonts on MacOS, except of XXX.dfont. + ]) + CFLAGS="$CFLAGS -DHAVE_FSREF=0" +elif test x$with_old_mac_fonts = xyes -a x$with_fsref != x; then + AC_MSG_CHECKING([FSRef-based FileManager]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + short vRefNum; + long dirID; + ConstStr255Param fileName; + + Boolean* isDirectory; + UInt8* path; + SInt16 desiredRefNum; + SInt16* iterator; + SInt16* actualRefNum; + HFSUniStr255* outForkName; + FSVolumeRefNum volume; + FSCatalogInfoBitmap whichInfo; + FSCatalogInfo* catalogInfo; + FSForkInfo* forkInfo; + FSRef* ref; + +#if HAVE_FSSPEC + FSSpec* spec; +#endif + + /* FSRef functions: no need to check? */ + FSGetForkCBInfo( desiredRefNum, volume, iterator, + actualRefNum, forkInfo, ref, + outForkName ); + FSPathMakeRef( path, ref, isDirectory ); + +#if HAVE_FSSPEC + FSpMakeFSRef ( spec, ref ); + FSGetCatalogInfo( ref, whichInfo, catalogInfo, + outForkName, spec, ref ); +#endif + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_FSREF=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_FSREF=0"]) +fi + + +# Whether to use QuickDraw API in ToolBox, which is deprecated since +# Mac OS X 10.4. + +AC_ARG_WITH([quickdraw-toolbox], + AS_HELP_STRING([--with-quickdraw-toolbox], + [use MacOS QuickDraw in ToolBox, if available (default=yes)])) +if test x$with_quickdraw_toolbox = xno; then + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0" +elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_toolbox != x; then + AC_MSG_CHECKING([QuickDraw FontManager functions in ToolBox]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + Str255 familyName; + SInt16 familyID = 0; + FMInput* fmIn = NULL; + FMOutput* fmOut = NULL; + + + GetFontName( familyID, familyName ); + GetFNum( familyName, &familyID ); + fmOut = FMSwapFont( fmIn ); + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0"]) +fi + + +# Whether to use QuickDraw API in Carbon, which is deprecated since +# Mac OS X 10.4. + +AC_ARG_WITH([quickdraw-carbon], + AS_HELP_STRING([--with-quickdraw-carbon], + [use MacOS QuickDraw in Carbon, if available (default=yes)])) +if test x$with_quickdraw_carbon = xno; then + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0" +elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_carbon != x; then + AC_MSG_CHECKING([QuickDraw FontManager functions in Carbon]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + FMFontFamilyIterator famIter; + FMFontFamily family; + Str255 famNameStr; + FMFontFamilyInstanceIterator instIter; + FMFontStyle style; + FMFontSize size; + FMFont font; + FSSpec* pathSpec; + + + FMCreateFontFamilyIterator( NULL, NULL, kFMUseGlobalScopeOption, + &famIter ); + FMGetNextFontFamily( &famIter, &family ); + FMGetFontFamilyName( family, famNameStr ); + FMCreateFontFamilyInstanceIterator( family, &instIter ); + FMGetNextFontFamilyInstance( &instIter, &font, &style, &size ); + FMDisposeFontFamilyInstanceIterator( &instIter ); + FMDisposeFontFamilyIterator( &famIter ); + FMGetFontContainer( font, pathSpec ); + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0"]) +fi + + +# Whether to use AppleTypeService since Mac OS X. + +AC_ARG_WITH([ats], + AS_HELP_STRING([--with-ats], + [use AppleTypeService, if available (default=yes)])) +if test x$with_ats = xno; then + CFLAGS="$CFLAGS -DHAVE_ATS=0" +elif test x$with_old_mac_fonts = xyes -a x$with_ats != x; then + AC_MSG_CHECKING([AppleTypeService functions]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + FSSpec* pathSpec; + + + ATSFontFindFromName( NULL, kATSOptionFlagsUnRestrictedScope ); +#if HAVE_FSSPEC + ATSFontGetFileSpecification( 0, pathSpec ); +#endif + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_ATS=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_ATS=0"]) +fi + +case "$CFLAGS" in + *HAVE_FSSPEC* | *HAVE_FSREF* | *HAVE_QUICKDRAW* | *HAVE_ATS* ) + AC_MSG_WARN([ +*** WARNING + FSSpec/FSRef/QuickDraw/ATS options are explicitly given, + thus it is recommended to replace src/base/ftmac.c by builds/mac/ftmac.c. + ]) + CFLAGS="$CFLAGS "'-I$(TOP_DIR)/builds/mac/' + ;; + *) + ;; +esac + +# Check for pthreads + +AX_PTHREAD([have_pthread=yes], [have_pthread=no]) + +# Check for Python and docwriter +PYTHON_MIN_VERSION=3.5 +have_py3=no +have_docwriter=no +PIP=pip + +AC_CHECK_PROGS([PYTHON], [python3 python], [missing]) +if test "x$PYTHON" != "xmissing"; then + AX_PROG_PYTHON_VERSION([$PYTHON_MIN_VERSION], [have_py3=yes], []) + + if test "x$have_py3" = "xyes"; then + PIP="$PYTHON -m $PIP" + AC_MSG_CHECKING([for `docwriter' Python module]) + $PYTHON -m docwriter -h > /dev/null 2>&1 + if test "x$?" = "x0"; then + have_docwriter=yes + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi +fi + + +# entries in Requires.private are separated by commas +PKGCONFIG_REQUIRES_PRIVATE="$zlib_reqpriv, \ + $bzip2_reqpriv, \ + $libpng_reqpriv, \ + $harfbuzz_reqpriv, \ + $brotli_reqpriv" +# beautify +PKGCONFIG_REQUIRES_PRIVATE=`echo "$PKGCONFIG_REQUIRES_PRIVATE" \ + | sed -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/, */,/g' \ + -e 's/,,*/,/g' \ + -e 's/^,*//' \ + -e 's/,*$//' \ + -e 's/,/, /g'` + +PKGCONFIG_LIBS_PRIVATE="$zlib_libspriv \ + $bzip2_libspriv \ + $libpng_libspriv \ + $harfbuzz_libspriv \ + $brotli_libspriv \ + $ft2_extra_libs" +# beautify +PKGCONFIG_LIBS_PRIVATE=`echo "$PKGCONFIG_LIBS_PRIVATE" \ + | sed -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/ */ /g'` + +LIBSSTATIC_CONFIG="-lfreetype \ + $zlib_libsstaticconf \ + $bzip2_libsstaticconf \ + $libpng_libsstaticconf \ + $harfbuzz_libsstaticconf \ + $brotli_libsstaticconf \ + $ft2_extra_libs" +# remove -L/usr/lib and -L/usr/lib64 since `freetype-config' adds them later +# on if necessary; also beautify +LIBSSTATIC_CONFIG=`echo "$LIBSSTATIC_CONFIG" \ + | sed -e 's|-L */usr/lib64/* | |g' \ + -e 's|-L */usr/lib/* | |g' \ + -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/ */ /g'` + +# If FreeType gets installed with `--disable-shared', don't use +# 'private' fields. `pkg-config' only looks into `.pc' files and is +# completely agnostic to whether shared libraries are actually present +# or not. As a consequence, the user had to specify `--static' while +# calling `pkg-config', which configure scripts are normally not +# prepared for. + +PKGCONFIG_REQUIRES= +PKGCONFIG_LIBS='-L${libdir} -lfreetype' + +if test $enable_shared = "no"; then + PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES $PKGCONFIG_REQUIRES_PRIVATE" + PKGCONFIG_REQUIRES_PRIVATE= + PKGCONFIG_LIBS="$PKGCONFIG_LIBS $PKGCONFIG_LIBS_PRIVATE" + PKGCONFIG_LIBS_PRIVATE= +fi + +AC_SUBST([ftmac_c]) +AC_SUBST([PKGCONFIG_REQUIRES]) +AC_SUBST([PKGCONFIG_LIBS]) +AC_SUBST([PKGCONFIG_REQUIRES_PRIVATE]) +AC_SUBST([PKGCONFIG_LIBS_PRIVATE]) +AC_SUBST([LIBSSTATIC_CONFIG]) + +AC_SUBST([hardcode_libdir_flag_spec]) +AC_SUBST([wl]) +AC_SUBST([build_libtool_libs]) + + +# We cannot use alternation (`\|`) in the `sed` regexp since it is not +# portable. + +ftoption_set() +{ + regexp="-e \\\"s|.*#.*def.*$1 .*|#define $1|\\\" \ + -e \\\"s|.*#.*def.*$1\$|#define $1|\\\"" + FTOPTION_H_SED="$FTOPTION_H_SED $regexp" +} + +ftoption_unset() +{ + regexp="-e \\\"s|.*#.*def.*$1 .*|/* #undef $1 */|\\\" \ + -e \\\"s|.*#.*def.*$1\$|/* #undef $1 */|\\\"" + FTOPTION_H_SED="$FTOPTION_H_SED $regexp" +} + +# Changing the `LDFLAGS` value should only be done after the +# `lt_cv_prog_compiler_static_works` test. + +if test "$have_zlib" != no; then + CFLAGS="$CFLAGS $ZLIB_CFLAGS" + LDFLAGS="$LDFLAGS $ZLIB_LIBS" + ftoption_set FT_CONFIG_OPTION_SYSTEM_ZLIB +else + ftoption_unset FT_CONFIG_OPTION_SYSTEM_ZLIB +fi +if test "$have_bzip2" != no; then + CFLAGS="$CFLAGS $BZIP2_CFLAGS" + LDFLAGS="$LDFLAGS $BZIP2_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_BZIP2 +else + ftoption_unset FT_CONFIG_OPTION_USE_BZIP2 +fi +if test "$have_libpng" != no; then + CFLAGS="$CFLAGS $LIBPNG_CFLAGS" + LDFLAGS="$LDFLAGS $LIBPNG_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_PNG +else + ftoption_unset FT_CONFIG_OPTION_USE_PNG +fi +if test "$have_harfbuzz" != no; then + CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS" + LDFLAGS="$LDFLAGS $HARFBUZZ_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ +else + ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ +fi +if test "$have_harfbuzz_dynamic" != no; then + ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC +else + ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC +fi +if test "$have_brotli" != no; then + CFLAGS="$CFLAGS $BROTLI_CFLAGS" + LDFLAGS="$LDFLAGS $BROTLI_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_BROTLI +else + ftoption_unset FT_CONFIG_OPTION_USE_BROTLI +fi + +if test "$have_pthread" != no; then + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LDFLAGS="$LDFLAGS $PTHREAD_CFLAGS $PTHREAD_LIBS" +fi + +AC_SUBST([CFLAGS]) +AC_SUBST([LDFLAGS]) + +# We don't want to use a template file for `ftoption.h', since compilation +# should work without calling a configure script also. For this reason, we +# copy the `include/freetype/config/ftoption.h' file to the `unix/builds' +# directory (using a dummy `AC_CONFIG_FILES' call) and apply the just +# constructed $FTOPTION_H_SED regexp (using the post-action of +# `AC_CONFIG_FILES'); this is also the version that gets installed later on. +# +AC_CONFIG_FILES([ftoption.h:${srcdir}/../../include/freetype/config/ftoption.h], + [mv ftoption.h ftoption.tmp + eval "sed $FTOPTION_H_SED < ftoption.tmp > ftoption.h" + rm ftoption.tmp], + [FTOPTION_H_SED="$FTOPTION_H_SED"]) + +AC_CONFIG_HEADERS([ftconfig.h]) + +# create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' +# and `builds/unix/unix-cc.mk' that will be used by the build system +# +AC_CONFIG_FILES([unix-cc.mk:unix-cc.in + unix-def.mk:unix-def.in]) + +AC_OUTPUT + +AC_MSG_NOTICE([ + +Library configuration: + external zlib: $have_zlib + bzip2: $have_bzip2 + libpng: $have_libpng + harfbuzz: $have_harfbuzz + brotli: $have_brotli + pthread: $have_pthread +]) + +# Warn if docwriter is not installed + +if test $have_docwriter = no; then + AC_MSG_WARN([ + `make refdoc' will fail since pip package `docwriter' is not installed. + To install, run `$PIP install docwriter', or to use a Python + virtual environment, run `make refdoc-venv' (requires pip package + `virtualenv'). These operations require Python >= $PYTHON_MIN_VERSION. + ]) +fi + +# Warn if pthread is not available + +if test $have_pthread = no; then + AC_MSG_WARN([ + `FT_DEBUG_LOGGING' will not work since the `pthread' library is not + available. This warning can be safely ignored if you don't plan to use + this configuration macro. + ]) +fi + +# end of configure.raw diff --git a/local/recipes/libs/freetype2/source/builds/unix/detect.mk b/local/recipes/libs/freetype2/source/builds/unix/detect.mk new file mode 100644 index 0000000000..2facdf7581 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/detect.mk @@ -0,0 +1,99 @@ +# +# FreeType 2 configuration file to detect a UNIX host platform. +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +.PHONY: setup + +ifeq ($(PLATFORM),ansi) + + # Note: this test is duplicated in "builds/toplevel.mk". + # + is_unix := $(strip $(wildcard /sbin/init) \ + $(wildcard /usr/sbin/init) \ + $(wildcard /dev/null) \ + $(wildcard /hurd/auth)) + ifneq ($(is_unix),) + + PLATFORM := unix + + endif # test is_unix +endif # test PLATFORM ansi + +ifeq ($(PLATFORM),unix) + COPY := cp + DELETE := rm -f + CAT := cat + + # If `devel' is the requested target, we use a special configuration + # file named `unix-dev.mk'. It disables optimization and libtool. + # + ifneq ($(findstring devel,$(MAKECMDGOALS)),) + CONFIG_FILE := unix-dev.mk + CC := gcc + + .PHONY: devel + devel: setup + @: + else + + # If `lcc' is the requested target, we use a special configuration + # file named `unix-lcc.mk'. It disables libtool for LCC. + # + ifneq ($(findstring lcc,$(MAKECMDGOALS)),) + CONFIG_FILE := unix-lcc.mk + CC := lcc + + .PHONY: lcc + lcc: setup + @: + else + + # If a Unix platform is detected, the configure script is called and + # `unix-def.mk' together with `unix-cc.mk' is created. + # + # Arguments to `configure' should be in the CFG variable. Example: + # + # make CFG="--prefix=/usr --disable-static" + # + # If you need to set CFLAGS or LDFLAGS, do it here also. + # + # Feel free to add support for other platform specific compilers in + # this directory (e.g. solaris.mk + changes here to detect the + # platform). + # + CONFIG_FILE := unix.mk + must_configure := 1 + + .PHONY: unix + unix: setup + @: + endif + endif + + have_Makefile := $(wildcard $(OBJ_DIR)/Makefile) + + setup: std_setup + ifdef must_configure + ifneq ($(have_Makefile),) + # we are building FT2 not in the src tree + $(TOP_DIR)/builds/unix/configure $(value CFG) + else + cd builds/unix; \ + ./configure $(value CFG) + endif + endif + +endif # test PLATFORM unix + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/unix/freetype-config.in b/local/recipes/libs/freetype2/source/builds/unix/freetype-config.in new file mode 100644 index 0000000000..4e69a06725 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/freetype-config.in @@ -0,0 +1,211 @@ +#! /bin/sh +# +# Copyright (C) 2000-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +LC_ALL=C +export LC_ALL + + +# if `pkg-config' is available, use values from `freetype2.pc' +%PKG_CONFIG% --atleast-pkgconfig-version 0.24 >/dev/null 2>&1 +if test $? -eq 0 ; then + # note that option `--variable' is not affected by the + # PKG_CONFIG_SYSROOT_DIR environment variable + if test "x$SYSROOT" != "x" ; then + PKG_CONFIG_SYSROOT_DIR="$SYSROOT" + export PKG_CONFIG_SYSROOT_DIR + fi + + prefix=`%PKG_CONFIG% --variable prefix freetype2` + exec_prefix=`%PKG_CONFIG% --variable exec_prefix freetype2` + + includedir=`%PKG_CONFIG% --variable includedir freetype2` + libdir=`%PKG_CONFIG% --variable libdir freetype2` + + version=`%PKG_CONFIG% --modversion freetype2` + + cflags=`%PKG_CONFIG% --cflags freetype2` + dynamic_libs=`%PKG_CONFIG% --libs freetype2` + static_libs=`%PKG_CONFIG% --static --libs freetype2` +else + prefix="%prefix%" + exec_prefix="%exec_prefix%" + + includedir="%includedir%" + libdir="%libdir%" + + version=%ft_version% + + cflags="-I${SYSROOT}$includedir/freetype2" + dynamic_libs="-lfreetype" + static_libs="%LIBSSTATIC_CONFIG%" + if test "${SYSROOT}$libdir" != "/usr/lib" && + test "${SYSROOT}$libdir" != "/usr/lib64" ; then + libs_L="-L${SYSROOT}$libdir" + fi +fi + +orig_prefix=$prefix +orig_exec_prefix=$exec_prefix + +orig_includedir=$includedir +orig_libdir=$libdir + +include_suffix=`echo $includedir | sed "s|$prefix||"` +lib_suffix=`echo $libdir | sed "s|$exec_prefix||"` + + +usage() +{ + cat <&2 +fi + + +while test $# -gt 0 ; do + case "$1" in + -*=*) + optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` + ;; + *) + optarg= + ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + local_prefix=yes + ;; + --prefix) + echo_prefix=yes + ;; + --exec-prefix=*) + exec_prefix=$optarg + exec_prefix_set=yes + local_prefix=yes + ;; + --exec-prefix) + echo_exec_prefix=yes + ;; + --version) + echo_version=yes + break + ;; + --ftversion) + echo_ft_version=yes + ;; + --cflags) + echo_cflags=yes + ;; + --libs) + echo_libs=yes + ;; + --libtool) + echo_libtool=yes + ;; + --static) + show_static=yes + ;; + --help) + usage 0 + ;; + *) + usage 1 1>&2 + ;; + esac + shift +done + + +if test "$local_prefix" = "yes" ; then + if test "$exec_prefix_set" != "yes" ; then + exec_prefix=$prefix + fi +fi + +if test "$local_prefix" = "yes" ; then + includedir=${prefix}${include_suffix} + if test "$exec_prefix_set" = "yes" ; then + libdir=${exec_prefix}${lib_suffix} + else + libdir=${prefix}${lib_suffix} + fi +fi + + +if test "$echo_version" = "yes" ; then + echo $version +fi + +if test "$echo_prefix" = "yes" ; then + echo ${SYSROOT}$prefix +fi + +if test "$echo_exec_prefix" = "yes" ; then + echo ${SYSROOT}$exec_prefix +fi + +if test "$echo_ft_version" = "yes" ; then + major=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \ + | grep FREETYPE_MAJOR \ + | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` + minor=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \ + | grep FREETYPE_MINOR \ + | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` + patch=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \ + | grep FREETYPE_PATCH \ + | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` + echo $major.$minor.$patch +fi + +if test "$echo_cflags" = "yes" ; then + echo $cflags | sed "s|$orig_includedir/freetype2|$includedir/freetype2|" +fi + +if test "$echo_libs" = "yes" ; then + if test "$show_static" = "yes" ; then + libs="$libs_L $static_libs" + else + libs="$libs_L $dynamic_libs" + fi + echo $libs | sed "s|$orig_libdir|$libdir|" +fi + +if test "$echo_libtool" = "yes" ; then + echo ${SYSROOT}$libdir/libfreetype.la +fi + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/unix/freetype2.in b/local/recipes/libs/freetype2/source/builds/unix/freetype2.in new file mode 100644 index 0000000000..fe389f4b6f --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/freetype2.in @@ -0,0 +1,14 @@ +prefix=%prefix% +exec_prefix=%exec_prefix% +libdir=%libdir% +includedir=%includedir% + +Name: FreeType 2 +URL: https://freetype.org +Description: A free, high-quality, and portable font engine. +Version: %ft_version% +Requires: %PKGCONFIG_REQUIRES% +Requires.private: %PKGCONFIG_REQUIRES_PRIVATE% +Libs: %PKGCONFIG_LIBS% +Libs.private: %PKGCONFIG_LIBS_PRIVATE% +Cflags: -I${includedir}/freetype2 diff --git a/local/recipes/libs/freetype2/source/builds/unix/freetype2.m4 b/local/recipes/libs/freetype2/source/builds/unix/freetype2.m4 new file mode 100644 index 0000000000..c08ef9eac8 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/freetype2.m4 @@ -0,0 +1,194 @@ +# Configure paths for FreeType2 +# Marcelo Magallon 2001-10-26, based on `gtk.m4` by Owen Taylor +# +# Copyright (C) 2001-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. +# +# As a special exception to the FreeType project license, this file may be +# distributed as part of a program that contains a configuration script +# generated by Autoconf, under the same distribution terms as the rest of +# that program. +# +# serial 7 + +# AC_CHECK_FT2([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +# Test for FreeType 2, and define FT2_CFLAGS and FT2_LIBS. +# MINIMUM-VERSION is what libtool reports; the default is '7.0.1' (this is +# FreeType 2.0.4). +# +# To make this code work with older autoconf versions, `AS_HELP_STRING` is +# not quoted. +# +AC_DEFUN([AC_CHECK_FT2], + [# Get the cflags and libraries from the freetype-config script + # + AC_ARG_WITH([ft-prefix], + AS_HELP_STRING([--with-ft-prefix=PREFIX], + [Prefix where FreeType is installed (optional)]), + [ft_config_prefix="$withval"], + [ft_config_prefix=""]) + + AC_ARG_WITH([ft-exec-prefix], + AS_HELP_STRING([--with-ft-exec-prefix=PREFIX], + [Exec prefix where FreeType is installed (optional)]), + [ft_config_exec_prefix="$withval"], + [ft_config_exec_prefix=""]) + + AC_ARG_ENABLE([freetypetest], + AS_HELP_STRING([--disable-freetypetest], + [Do not try to compile and run a test FreeType program]), + [], + [enable_fttest=yes]) + + if test x$ft_config_exec_prefix != x ; then + ft_config_args="$ft_config_args --exec-prefix=$ft_config_exec_prefix" + if test x${FT2_CONFIG+set} != xset ; then + FT2_CONFIG=$ft_config_exec_prefix/bin/freetype-config + fi + fi + + if test x$ft_config_prefix != x ; then + ft_config_args="$ft_config_args --prefix=$ft_config_prefix" + if test x${FT2_CONFIG+set} != xset ; then + FT2_CONFIG=$ft_config_prefix/bin/freetype-config + fi + fi + + if test "x$FT2_CONFIG" = x ; then + AC_PATH_TOOL([FT2_CONFIG], [freetype-config], [no]) + fi + + min_ft_version=m4_if([$1], [], [7.0.1], [$1]) + AC_MSG_CHECKING([for FreeType -- version >= $min_ft_version]) + no_ft="" + if test "$FT2_CONFIG" = "no" ; then + no_ft=yes + else + FT2_CFLAGS=`$FT2_CONFIG $ft_config_args --cflags` + FT2_LIBS=`$FT2_CONFIG $ft_config_args --libs` + ft_config_major_version=`$FT2_CONFIG $ft_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + ft_config_minor_version=`$FT2_CONFIG $ft_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + ft_config_micro_version=`$FT2_CONFIG $ft_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + ft_min_major_version=`echo $min_ft_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + ft_min_minor_version=`echo $min_ft_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + ft_min_micro_version=`echo $min_ft_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test x$enable_fttest = xyes ; then + ft_config_is_lt="" + if test $ft_config_major_version -lt $ft_min_major_version ; then + ft_config_is_lt=yes + else + if test $ft_config_major_version -eq $ft_min_major_version ; then + if test $ft_config_minor_version -lt $ft_min_minor_version ; then + ft_config_is_lt=yes + else + if test $ft_config_minor_version -eq $ft_min_minor_version ; then + if test $ft_config_micro_version -lt $ft_min_micro_version ; then + ft_config_is_lt=yes + fi + fi + fi + fi + fi + if test x$ft_config_is_lt = xyes ; then + no_ft=yes + else + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $FT2_CFLAGS" + LIBS="$FT2_LIBS $LIBS" + + # + # Sanity checks for the results of freetype-config to some extent. + # + AC_RUN_IFELSE([ + AC_LANG_SOURCE([[ + +#include +#include +#include +#include + +int +main(void) +{ + FT_Library library; + FT_Error error; + + error = FT_Init_FreeType(&library); + + if (error) + return 1; + else + { + FT_Done_FreeType(library); + return 0; + } +} + + ]]) + ], + [], + [no_ft=yes], + [echo $ECHO_N "cross compiling; assuming OK... $ECHO_C"]) + + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi # test $ft_config_version -lt $ft_min_version + fi # test x$enable_fttest = xyes + fi # test "$FT2_CONFIG" = "no" + + if test x$no_ft = x ; then + AC_MSG_RESULT([yes]) + m4_if([$2], [], [:], [$2]) + else + AC_MSG_RESULT([no]) + if test "$FT2_CONFIG" = "no" ; then + AC_MSG_WARN([ + + The freetype-config script installed by FreeType 2 could not be found. + If FreeType 2 was installed in PREFIX, make sure PREFIX/bin is in + your path, or set the FT2_CONFIG environment variable to the + full path to freetype-config. + ]) + else + if test x$ft_config_is_lt = xyes ; then + AC_MSG_WARN([ + + Your installed version of the FreeType 2 library is too old. + If you have different versions of FreeType 2, make sure that + correct values for --with-ft-prefix or --with-ft-exec-prefix + are used, or set the FT2_CONFIG environment variable to the + full path to freetype-config. + ]) + else + AC_MSG_WARN([ + + The FreeType test program failed to run. If your system uses + shared libraries and they are installed outside the normal + system library path, make sure the variable LD_LIBRARY_PATH + (or whatever is appropriate for your system) is correctly set. + ]) + fi + fi + + FT2_CFLAGS="" + FT2_LIBS="" + m4_if([$3], [], [:], [$3]) + fi + + AC_SUBST([FT2_CFLAGS]) + AC_SUBST([FT2_LIBS])]) + +# end of freetype2.m4 diff --git a/local/recipes/libs/freetype2/source/builds/unix/ft-munmap.m4 b/local/recipes/libs/freetype2/source/builds/unix/ft-munmap.m4 new file mode 100644 index 0000000000..f4df34c5b7 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ft-munmap.m4 @@ -0,0 +1,32 @@ +## FreeType specific autoconf tests +# +# Copyright (C) 2002-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +# serial 2 + +AC_DEFUN([FT_MUNMAP_PARAM], + [AC_MSG_CHECKING([for munmap's first parameter type]) + AC_COMPILE_IFELSE([ + AC_LANG_SOURCE([[ + +#include +#include +int munmap(void *, size_t); + + ]]) + ], + [AC_MSG_RESULT([void *]) + AC_DEFINE([MUNMAP_USES_VOIDP], + [], + [Define to 1 if the first argument of munmap is of type void *])], + [AC_MSG_RESULT([char *])]) + ]) + +# end of ft-munmap.m4 diff --git a/local/recipes/libs/freetype2/source/builds/unix/ftconfig.h.in b/local/recipes/libs/freetype2/source/builds/unix/ftconfig.h.in new file mode 100644 index 0000000000..1fc1e28fb5 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ftconfig.h.in @@ -0,0 +1,52 @@ +/**************************************************************************** + * + * ftconfig.h.in + * + * UNIX-specific configuration file (specification only). + * + * Copyright (C) 1996-2026 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This header file contains a number of macro definitions that are used by + * the rest of the engine. Most of the macros here are automatically + * determined at compile time, and you should not need to change it to port + * FreeType, except to compile the library with a non-ANSI compiler. + * + * Note however that if some specific modifications are needed, we advise + * you to place a modified copy in your build directory. + * + * The build directory is usually `builds/`, and contains + * system-specific files that are always included first when building the + * library. + * + */ + +#ifndef FTCONFIG_H_ +#define FTCONFIG_H_ + +#include +#include FT_CONFIG_OPTIONS_H +#include FT_CONFIG_STANDARD_LIBRARY_H + +#undef HAVE_UNISTD_H +#undef HAVE_FCNTL_H + +#include +#include +#include + +#endif /* FTCONFIG_H_ */ + + +/* END */ diff --git a/local/recipes/libs/freetype2/source/builds/unix/ftsystem.c b/local/recipes/libs/freetype2/source/builds/unix/ftsystem.c new file mode 100644 index 0000000000..7575da328b --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ftsystem.c @@ -0,0 +1,436 @@ +/**************************************************************************** + * + * ftsystem.c + * + * Unix-specific FreeType low-level system interface (body). + * + * Copyright (C) 1996-2026 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#include + /* we use our special ftconfig.h file, not the standard one */ +#include FT_CONFIG_CONFIG_H +#include +#include +#include +#include +#include + + /* memory-mapping includes and definitions */ +#ifdef HAVE_UNISTD_H +#include +#endif + +#include +#ifndef MAP_FILE +#define MAP_FILE 0x00 +#endif + +#ifdef MUNMAP_USES_VOIDP +#define MUNMAP_ARG_CAST void * +#else +#define MUNMAP_ARG_CAST char * +#endif + +#ifdef NEED_MUNMAP_DECL + +#ifdef __cplusplus + extern "C" +#else + extern +#endif + int + munmap( char* addr, + int len ); + +#define MUNMAP_ARG_CAST char * + +#endif /* NEED_DECLARATION_MUNMAP */ + + +#include +#include + +#ifdef HAVE_FCNTL_H +#include +#endif + +#include +#include +#include +#include + + + /************************************************************************** + * + * MEMORY MANAGEMENT INTERFACE + * + */ + + + /************************************************************************** + * + * It is not necessary to do any error checking for the + * allocation-related functions. This will be done by the higher level + * routines like ft_mem_alloc() or ft_mem_realloc(). + * + */ + + + /************************************************************************** + * + * @Function: + * ft_alloc + * + * @Description: + * The memory allocation function. + * + * @Input: + * memory :: + * A pointer to the memory object. + * + * size :: + * The requested size in bytes. + * + * @Return: + * The address of newly allocated block. + */ + FT_CALLBACK_DEF( void* ) + ft_alloc( FT_Memory memory, + long size ) + { + FT_UNUSED( memory ); + + return malloc( size ); + } + + + /************************************************************************** + * + * @Function: + * ft_realloc + * + * @Description: + * The memory reallocation function. + * + * @Input: + * memory :: + * A pointer to the memory object. + * + * cur_size :: + * The current size of the allocated memory block. + * + * new_size :: + * The newly requested size in bytes. + * + * block :: + * The current address of the block in memory. + * + * @Return: + * The address of the reallocated memory block. + */ + FT_CALLBACK_DEF( void* ) + ft_realloc( FT_Memory memory, + long cur_size, + long new_size, + void* block ) + { + FT_UNUSED( memory ); + FT_UNUSED( cur_size ); + + return realloc( block, new_size ); + } + + + /************************************************************************** + * + * @Function: + * ft_free + * + * @Description: + * The memory release function. + * + * @Input: + * memory :: + * A pointer to the memory object. + * + * block :: + * The address of block in memory to be freed. + */ + FT_CALLBACK_DEF( void ) + ft_free( FT_Memory memory, + void* block ) + { + FT_UNUSED( memory ); + + free( block ); + } + + + /************************************************************************** + * + * RESOURCE MANAGEMENT INTERFACE + * + */ + + + /************************************************************************** + * + * The macro FT_COMPONENT is used in trace mode. It is an implicit + * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log + * messages during execution. + */ +#undef FT_COMPONENT +#define FT_COMPONENT io + + /* We use the macro STREAM_FILE for convenience to extract the */ + /* system-specific stream handle from a given FreeType stream object */ +#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) + + + /************************************************************************** + * + * @Function: + * ft_close_stream_by_munmap + * + * @Description: + * The function to close a stream which is opened by mmap. + * + * @Input: + * stream :: A pointer to the stream object. + */ + FT_CALLBACK_DEF( void ) + ft_close_stream_by_munmap( FT_Stream stream ) + { + munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size ); + + stream->descriptor.pointer = NULL; + stream->size = 0; + stream->base = NULL; + } + + + /************************************************************************** + * + * @Function: + * ft_close_stream_by_free + * + * @Description: + * The function to close a stream which is created by ft_alloc. + * + * @Input: + * stream :: A pointer to the stream object. + */ + FT_CALLBACK_DEF( void ) + ft_close_stream_by_free( FT_Stream stream ) + { + ft_free( stream->memory, stream->descriptor.pointer ); + + stream->descriptor.pointer = NULL; + stream->size = 0; + stream->base = NULL; + } + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( FT_Error ) + FT_Stream_Open( FT_Stream stream, + const char* filepathname ) + { + int file; + struct stat stat_buf; + + + if ( !stream ) + return FT_THROW( Invalid_Stream_Handle ); + + /* open the file */ + file = open( filepathname, O_RDONLY ); + if ( file < 0 ) + { + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + return FT_THROW( Cannot_Open_Resource ); + } + + /* Here we ensure that a "fork" will _not_ duplicate */ + /* our opened input streams on Unix. This is critical */ + /* since it avoids some (possible) access control */ + /* issues and cleans up the kernel file table a bit. */ + /* */ +#ifdef F_SETFD +#ifdef FD_CLOEXEC + (void)fcntl( file, F_SETFD, FD_CLOEXEC ); +#else + (void)fcntl( file, F_SETFD, 1 ); +#endif /* FD_CLOEXEC */ +#endif /* F_SETFD */ + + if ( fstat( file, &stat_buf ) < 0 ) + { + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not `fstat' file `%s'\n", filepathname )); + goto Fail_Map; + } + + /* XXX: TODO -- real 64bit platform support */ + /* */ + /* `stream->size' is typedef'd to unsigned long (in `ftsystem.h'); */ + /* `stat_buf.st_size', however, is usually typedef'd to off_t */ + /* (in sys/stat.h). */ + /* On some platforms, the former is 32bit and the latter is 64bit. */ + /* To avoid overflow caused by fonts in huge files larger than */ + /* 2GB, do a test. Temporary fix proposed by Sean McBride. */ + /* */ + if ( stat_buf.st_size > LONG_MAX ) + { + FT_ERROR(( "FT_Stream_Open: file is too big\n" )); + goto Fail_Map; + } + else if ( stat_buf.st_size == 0 ) + { + FT_ERROR(( "FT_Stream_Open: zero-length file\n" )); + goto Fail_Map; + } + + /* This cast potentially truncates a 64bit to 32bit! */ + stream->size = (unsigned long)stat_buf.st_size; + stream->pos = 0; + stream->base = (unsigned char *)mmap( NULL, + stream->size, + PROT_READ, + MAP_FILE | MAP_PRIVATE, + file, + 0 ); + + if ( stream->base != MAP_FAILED ) + stream->close = ft_close_stream_by_munmap; + else + { + ssize_t total_read_count; + + + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not `mmap' file `%s'\n", filepathname )); + + stream->base = (unsigned char*)ft_alloc( stream->memory, stream->size ); + + if ( !stream->base ) + { + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not `alloc' memory\n" )); + goto Fail_Map; + } + + total_read_count = 0; + do + { + ssize_t read_count; + + + read_count = read( file, + stream->base + total_read_count, + stream->size - total_read_count ); + + if ( read_count <= 0 ) + { + if ( read_count == -1 && errno == EINTR ) + continue; + + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " error while `read'ing file `%s'\n", filepathname )); + goto Fail_Read; + } + + total_read_count += read_count; + + } while ( (unsigned long)total_read_count != stream->size ); + + stream->close = ft_close_stream_by_free; + } + + close( file ); + + stream->descriptor.pointer = stream->base; + stream->pathname.pointer = (char*)filepathname; + + stream->read = NULL; + + FT_TRACE1(( "FT_Stream_Open:" )); + FT_TRACE1(( " opened `%s' (%ld bytes) successfully\n", + filepathname, stream->size )); + + return FT_Err_Ok; + + Fail_Read: + ft_free( stream->memory, stream->base ); + + Fail_Map: + close( file ); + + stream->base = NULL; + stream->size = 0; + stream->pos = 0; + + return FT_THROW( Cannot_Open_Stream ); + } + + +#ifdef FT_DEBUG_MEMORY + + extern FT_Int + ft_mem_debug_init( FT_Memory memory ); + + extern void + ft_mem_debug_done( FT_Memory memory ); + +#endif + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( FT_Memory ) + FT_New_Memory( void ) + { + FT_Memory memory; + + + memory = (FT_Memory)malloc( sizeof ( *memory ) ); + if ( memory ) + { + memory->user = NULL; + memory->alloc = ft_alloc; + memory->realloc = ft_realloc; + memory->free = ft_free; +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_init( memory ); +#endif + } + + return memory; + } + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( void ) + FT_Done_Memory( FT_Memory memory ) + { +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_done( memory ); +#endif + memory->free( memory, memory ); + } + + +/* END */ diff --git a/local/recipes/libs/freetype2/source/builds/unix/install-sh b/local/recipes/libs/freetype2/source/builds/unix/install-sh new file mode 100755 index 0000000000..b1d7a6f67f --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/install-sh @@ -0,0 +1,541 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2024-06-19.01; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +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= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -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. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: ." + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -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 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + 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 + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + # 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-writable /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 incompatibility 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 + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # 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. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (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 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + 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 || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/local/recipes/libs/freetype2/source/builds/unix/install.mk b/local/recipes/libs/freetype2/source/builds/unix/install.mk new file mode 100644 index 0000000000..1bfdd1daca --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/install.mk @@ -0,0 +1,102 @@ +# +# FreeType 2 installation instructions for Unix systems +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +# If you say +# +# make install DESTDIR=/tmp/somewhere/ +# +# don't forget the final backslash (this command is mainly for package +# maintainers). + + +.PHONY: install uninstall check + +# Unix installation and deinstallation targets. +# +# Note that we remove any data found in `$(includedir)/freetype2' before +# installing new files to avoid interferences with files installed by +# previous FreeType versions (which use slightly different locations). +# +# We also remove `$(includedir)/ft2build.h' for the same reason. +# +# Note that some header files get handled twice for simplicity; a special, +# configured version overwrites the generic one. +# +install: $(PROJECT_LIBRARY) + -$(DELDIR) $(DESTDIR)$(includedir)/freetype2 + -$(DELETE) $(DESTDIR)$(includedir)/ft2build.h + $(MKINSTALLDIRS) $(DESTDIR)$(libdir) \ + $(DESTDIR)$(libdir)/pkgconfig \ + $(DESTDIR)$(includedir)/freetype2/freetype/config \ + $(DESTDIR)$(datadir)/aclocal +ifeq ($(INSTALL_FT2_CONFIG),TRUE) + $(MKINSTALLDIRS) $(DESTDIR)$(bindir) \ + $(DESTDIR)$(mandir)/man1 +endif + $(LIBTOOL) --mode=install $(INSTALL) \ + $(PROJECT_LIBRARY) $(DESTDIR)$(libdir) + -for P in $(PUBLIC_H) ; do \ + $(INSTALL_DATA) \ + $$P $(DESTDIR)$(includedir)/freetype2/freetype ; \ + done + -for P in $(CONFIG_H) ; do \ + $(INSTALL_DATA) \ + $$P $(DESTDIR)$(includedir)/freetype2/freetype/config ; \ + done + $(INSTALL_DATA) $(TOP_DIR)/include/ft2build.h \ + $(DESTDIR)$(includedir)/freetype2/ft2build.h + $(INSTALL_DATA) $(OBJ_BUILD)/ftconfig.h \ + $(DESTDIR)$(includedir)/freetype2/freetype/config/ftconfig.h + $(INSTALL_DATA) $(OBJ_DIR)/ftmodule.h \ + $(DESTDIR)$(includedir)/freetype2/freetype/config/ftmodule.h + $(INSTALL_DATA) $(OBJ_BUILD)/ftoption.h \ + $(DESTDIR)$(includedir)/freetype2/freetype/config/ftoption.h + $(INSTALL_SCRIPT) -m 644 $(PLATFORM_DIR)/freetype2.m4 \ + $(DESTDIR)$(datadir)/aclocal/freetype2.m4 + $(INSTALL_SCRIPT) -m 644 $(OBJ_BUILD)/freetype2.pc \ + $(DESTDIR)$(libdir)/pkgconfig/freetype2.pc +ifeq ($(INSTALL_FT2_CONFIG),TRUE) + $(INSTALL_SCRIPT) -m 755 $(OBJ_BUILD)/freetype-config \ + $(DESTDIR)$(bindir)/freetype-config + $(INSTALL_DATA) $(TOP_DIR)/docs/freetype-config.1 \ + $(DESTDIR)$(mandir)/man1/freetype-config.1 +endif + + +uninstall: + -$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/$(LIBRARY).$A + -$(DELDIR) $(DESTDIR)$(includedir)/freetype2 + -$(DELETE) $(DESTDIR)$(bindir)/freetype-config + -$(DELETE) $(DESTDIR)$(datadir)/aclocal/freetype2.m4 + -$(DELETE) $(DESTDIR)$(libdir)/pkgconfig/freetype2.pc + -$(DELETE) $(DESTDIR)$(mandir)/man1/freetype-config.1 + + +check: + $(info There is no validation suite for this package.) + + +.PHONY: clean_project_unix distclean_project_unix + +# Unix cleaning and distclean rules. +# +clean_project_unix: + -$(LIBTOOL) --mode=clean $(RM) $(OBJECTS_LIST) + -$(DELETE) $(CLEAN) + +distclean_project_unix: clean_project_unix + -$(LIBTOOL) --mode=clean $(RM) $(PROJECT_LIBRARY) + -$(DELETE) *.orig *~ core *.core $(DISTCLEAN) + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/unix/ltmain.sh b/local/recipes/libs/freetype2/source/builds/unix/ltmain.sh new file mode 100644 index 0000000000..3e6a3db3a5 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ltmain.sh @@ -0,0 +1,11524 @@ +#! /usr/bin/env sh +## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +## by inline-source v2019-02-19.15 + +# libtool (GNU libtool) 2.5.4 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2019, 2021-2024 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. + +# GNU Libtool 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 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION=2.5.4 +package_revision=2.5.4 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2019-02-19.15; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# This is free software. There is NO warranty; not even for +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Copyright (C) 2004-2019, 2021, 2023-2024 Bootstrap Authors +# +# This file is dual licensed under the terms of the MIT license +# , and GPL version 2 or later +# . You must apply one of +# these licenses when using or redistributing this software or any of +# the files within it. See the URLs above, or the file `LICENSE` +# included in the Bootstrap distribution for the full license texts. + +# Please report bugs or propose patches to: +# + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (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 + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done +# These NLS vars are set unconditionally (bootstrap issue #24). Unset those +# in case the environment reset is needed later and the $save_* variant is not +# defined (see the code above). +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# func_unset VAR +# -------------- +# Portably unset VAR. +# In some shells, an 'unset VAR' statement leaves a non-zero return +# status if VAR is already unset, which might be problematic if the +# statement is used at the end of a function (thus poisoning its return +# value) or when 'set -e' is active (causing even a spurious abort of +# the script in this case). +func_unset () +{ + { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } +} + + +# Make sure CDPATH doesn't cause `cd` commands to output the target dir. +func_unset CDPATH + +# Make sure ${,E,F}GREP behave sanely. +func_unset GREP_OPTIONS + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + +# require_check_ifs_backslash +# --------------------------- +# Check if we can use backslash as IFS='\' separator, and set +# $check_ifs_backshlash_broken to ':' or 'false'. +require_check_ifs_backslash=func_require_check_ifs_backslash +func_require_check_ifs_backslash () +{ + _G_save_IFS=$IFS + IFS='\' + _G_check_ifs_backshlash='a\\b' + for _G_i in $_G_check_ifs_backshlash + do + case $_G_i in + a) + check_ifs_backshlash_broken=false + ;; + '') + break + ;; + *) + check_ifs_backshlash_broken=: + break + ;; + esac + done + IFS=$_G_save_IFS + require_check_ifs_backslash=: +} + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # usable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_arg pretty "$2" + eval "$1+=\\ \$func_quote_arg_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_arg pretty "$2" + eval "$1=\$$1\\ \$func_quote_arg_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value returned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list in case some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_portable EVAL ARG +# ---------------------------- +# Internal function to portably implement func_quote_arg. Note that we still +# keep attention to performance here so we as much as possible try to avoid +# calling sed binary (so far O(N) complexity as long as func_append is O(1)). +func_quote_portable () +{ + $debug_cmd + + $require_check_ifs_backslash + + func_quote_portable_result=$2 + + # one-time-loop (easy break) + while true + do + if $1; then + func_quote_portable_result=`$ECHO "$2" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` + break + fi + + # Quote for eval. + case $func_quote_portable_result in + *[\\\`\"\$]*) + # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string + # contains the shell wildcard characters. + case $check_ifs_backshlash_broken$func_quote_portable_result in + :*|*[\[\*\?]*) + func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ + | $SED "$sed_quote_subst"` + break + ;; + esac + + func_quote_portable_old_IFS=$IFS + for _G_char in '\' '`' '"' '$' + do + # STATE($1) PREV($2) SEPARATOR($3) + set start "" "" + func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy + IFS=$_G_char + for _G_part in $func_quote_portable_result + do + case $1 in + quote) + func_append func_quote_portable_result "$3$2" + set quote "$_G_part" "\\$_G_char" + ;; + start) + set first "" "" + func_quote_portable_result= + ;; + first) + set quote "$_G_part" "" + ;; + esac + done + done + IFS=$func_quote_portable_old_IFS + ;; + *) ;; + esac + break + done + + func_quote_portable_unquoted_result=$func_quote_portable_result + case $func_quote_portable_result in + # double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # many bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_portable_result=\"$func_quote_portable_result\" + ;; + esac +} + + +# func_quotefast_eval ARG +# ----------------------- +# Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', +# but optimized for speed. Result is stored in $func_quotefast_eval. +if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then + printf -v _GL_test_printf_tilde %q '~' + if test '\~' = "$_GL_test_printf_tilde"; then + func_quotefast_eval () + { + printf -v func_quotefast_eval_result %q "$1" + } + else + # Broken older Bash implementations. Make those faster too if possible. + func_quotefast_eval () + { + case $1 in + '~'*) + func_quote_portable false "$1" + func_quotefast_eval_result=$func_quote_portable_result + ;; + *) + printf -v func_quotefast_eval_result %q "$1" + ;; + esac + } + fi +else + func_quotefast_eval () + { + func_quote_portable false "$1" + func_quotefast_eval_result=$func_quote_portable_result + } +fi + + +# func_quote_arg MODEs ARG +# ------------------------ +# Quote one ARG to be evaled later. MODEs argument may contain zero or more +# specifiers listed below separated by ',' character. This function returns two +# values: +# i) func_quote_arg_result +# double-quoted (when needed), suitable for a subsequent eval +# ii) func_quote_arg_unquoted_result +# has all characters that are still active within double +# quotes backslashified. Available only if 'unquoted' is specified. +# +# Available modes: +# ---------------- +# 'eval' (default) +# - escape shell special characters +# 'expand' +# - the same as 'eval'; but do not quote variable references +# 'pretty' +# - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might +# be used later in func_quote to get output like: 'echo "a b"' instead +# of 'echo a\ b'. This is slower than default on some shells. +# 'unquoted' +# - produce also $func_quote_arg_unquoted_result which does not contain +# wrapping double-quotes. +# +# Examples for 'func_quote_arg pretty,unquoted string': +# +# string | *_result | *_unquoted_result +# ------------+-----------------------+------------------- +# " | \" | \" +# a b | "a b" | a b +# "a b" | "\"a b\"" | \"a b\" +# * | "*" | * +# z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" +# +# Examples for 'func_quote_arg pretty,unquoted,expand string': +# +# string | *_result | *_unquoted_result +# --------------+---------------------+-------------------- +# z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" +func_quote_arg () +{ + _G_quote_expand=false + case ,$1, in + *,expand,*) + _G_quote_expand=: + ;; + esac + + case ,$1, in + *,pretty,*|*,expand,*|*,unquoted,*) + func_quote_portable $_G_quote_expand "$2" + func_quote_arg_result=$func_quote_portable_result + func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result + ;; + *) + # Faster quote-for-eval for some shells. + func_quotefast_eval "$2" + func_quote_arg_result=$func_quotefast_eval_result + ;; + esac +} + + +# func_quote MODEs ARGs... +# ------------------------ +# Quote all ARGs to be evaled later and join them into single command. See +# func_quote_arg's description for more info. +func_quote () +{ + $debug_cmd + _G_func_quote_mode=$1 ; shift + func_quote_result= + while test 0 -lt $#; do + func_quote_arg "$_G_func_quote_mode" "$1" + if test -n "$func_quote_result"; then + func_append func_quote_result " $func_quote_arg_result" + else + func_append func_quote_result "$func_quote_arg_result" + fi + shift + done +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_arg pretty,expand "$_G_cmd" + eval "func_notquiet $func_quote_arg_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_arg expand,pretty "$_G_cmd" + eval "func_echo $func_quote_arg_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# This is free software. There is NO warranty; not even for +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Copyright (C) 2010-2019, 2021, 2023-2024 Bootstrap Authors +# +# This file is dual licensed under the terms of the MIT license +# , and GPL version 2 or later +# . You must apply one of +# these licenses when using or redistributing this software or any of +# the files within it. See the URLs above, or the file `LICENSE` +# included in the Bootstrap distribution for the full license texts. + +# Please report bugs or propose patches to: +# + +# Set a version string for this script. +scriptversion=2019-02-19.15; # UTC + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# Copyright'. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug in processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# in the main code. A hook is just a list of function names that can be +# run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of hook functions to be called by +# FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_propagate_result FUNC_NAME_A FUNC_NAME_B +# --------------------------------------------- +# If the *_result variable of FUNC_NAME_A _is set_, assign its value to +# *_result variable of FUNC_NAME_B. +func_propagate_result () +{ + $debug_cmd + + func_propagate_result_result=: + if eval "test \"\${${1}_result+set}\" = set" + then + eval "${2}_result=\$${1}_result" + else + func_propagate_result_result=false + fi +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It's assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook functions." ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + func_unset "${_G_hook}_result" + eval $_G_hook '${1+"$@"}' + func_propagate_result $_G_hook func_run_hooks + if $func_propagate_result_result; then + eval set dummy "$func_run_hooks_result"; shift + fi + done +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list from your hook function. You may remove +# or edit any options that you action, and then pass back the remaining +# unprocessed options in '_result', escaped +# suitably for 'eval'. +# +# The '_result' variable is automatically unset +# before your hook gets called; for best performance, only set the +# *_result variable when necessary (i.e. don't call the 'func_quote' +# function unnecessarily because it can be an expensive operation on some +# machines). +# +# Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# # No change in '$@' (ignored completely by this hook). Leave +# # my_options_prep_result variable intact. +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# args_changed=false +# +# # Note that, for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: +# args_changed=: +# ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# args_changed=: +# ;; +# *) # Make sure the first unrecognised option "$_G_opt" +# # is added back to "$@" in case we need it later, +# # if $args_changed was set to 'true'. +# set dummy "$_G_opt" ${1+"$@"}; shift; break ;; +# esac +# done +# +# # Only call 'func_quote' here if we processed at least one argument. +# if $args_changed; then +# func_quote eval ${1+"$@"} +# my_silent_option_result=$func_quote_result +# fi +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll also need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options_finish [ARG]... +# ---------------------------- +# Finishing the option parse loop (call 'func_options' hooks ATM). +func_options_finish () +{ + $debug_cmd + + func_run_hooks func_options ${1+"$@"} + func_propagate_result func_run_hooks func_options_finish +} + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + _G_options_quoted=false + + for my_func in options_prep parse_options validate_options options_finish + do + func_unset func_${my_func}_result + func_unset func_run_hooks_result + eval func_$my_func '${1+"$@"}' + func_propagate_result func_$my_func func_options + if $func_propagate_result_result; then + eval set dummy "$func_options_result"; shift + _G_options_quoted=: + fi + done + + $_G_options_quoted || { + # As we (func_options) are top-level options-parser function and + # nobody quoted "$@" for us yet, we need to do it explicitly for + # caller. + func_quote eval ${1+"$@"} + func_options_result=$func_quote_result + } +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propagate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before returning. +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + func_propagate_result func_run_hooks func_options_prep +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + _G_parse_options_requote=false + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + func_propagate_result func_run_hooks func_parse_options + if $func_propagate_result_result; then + eval set dummy "$func_parse_options_result"; shift + # Even though we may have changed "$@", we passed the "$@" array + # down into the hook and it quoted it for us (because we are in + # this if-branch). No need to quote it again. + _G_parse_options_requote=false + fi + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + # We expect that one of the options parsed in this function matches + # and thus we remove _G_opt from "$@" and need to re-quote. + _G_match_parse_options=: + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" >&2 + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + if test $# = 0 && func_missing_arg $_G_opt; then + _G_parse_options_requote=: + break + fi + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) _G_parse_options_requote=: ; break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift + _G_match_parse_options=false + break + ;; + esac + + if $_G_match_parse_options; then + _G_parse_options_requote=: + fi + done + + if $_G_parse_options_requote; then + # save modified positional parameters for caller + func_quote eval ${1+"$@"} + func_parse_options_result=$func_quote_result + fi +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + func_run_hooks func_validate_options ${1+"$@"} + func_propagate_result func_run_hooks func_validate_options + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables +# after splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + if test "x$func_split_equals_lhs" = "x$1"; then + func_split_equals_rhs= + fi + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs=" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +# The version message is extracted from the calling file's header +# comments, with leading '# ' stripped: +# 1. First display the progname and version +# 2. Followed by the header comment line matching /^# Written by / +# 3. Then a blank line followed by the first following line matching +# /^# Copyright / +# 4. Immediately followed by any lines between the previous matches, +# except lines preceding the intervening completely blank line. +# For example, see the header comments of this file. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /^# Written by /!b + s|^# ||; p; n + + :fwd2blnk + /./ { + n + b fwd2blnk + } + p; n + + :holdwrnt + s|^# || + s|^# *$|| + /^Copyright /!{ + /./H + n + b holdwrnt + } + + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + G + s|\(\n\)\n*|\1|g + p; q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.5.4' + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + year=`date +%Y` + + cat < +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. + +Originally written by Gordon Matzigkeit, 1996 +(See AUTHORS for complete contributor listing) +EOF + + exit $? +} + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information + --finish use operation '--mode=finish' + --mode=MODE use operation mode MODE + --no-finish don't update shared library cache + --no-quiet, --no-silent print default informational messages + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --reorder-cache=DIRS reorder shared library cache for preferred DIRS + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname $scriptversion + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_reorder_cache=false + opt_preserve_dup_deps=false + opt_quiet=false + opt_finishing=true + opt_warning= + + nonopt= + preserve_args= + + _G_rc_lt_options_prep=: + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + *) + _G_rc_lt_options_prep=false + ;; + esac + + if $_G_rc_lt_options_prep; then + # Pass back the list of options. + func_quote eval ${1+"$@"} + libtool_options_prep_result=$func_quote_result + fi +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + _G_rc_lt_parse_options=false + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_match_lt_parse_options=: + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument '$1' for $_G_opt" + exit_cmd=exit + ;; + esac + shift + ;; + + --no-finish) + opt_finishing=false + func_append preserve_args " $_G_opt" + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --reorder-cache) + opt_reorder_cache=true + shared_lib_dirs=$1 + if test -n "$shared_lib_dirs"; then + case $1 in + # Must begin with /: + /*) ;; + + # Catch anything else as an error (relative paths) + *) func_error "invalid argument '$1' for $_G_opt" + func_error "absolute paths are required for $_G_opt" + exit_cmd=exit + ;; + esac + fi + shift + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"} ; shift + _G_match_lt_parse_options=false + break + ;; + esac + $_G_match_lt_parse_options && _G_rc_lt_parse_options=: + done + + if $_G_rc_lt_parse_options; then + # save modified positional parameters for caller + func_quote eval ${1+"$@"} + libtool_parse_options_result=$func_quote_result + fi +} +func_add_hook func_parse_options libtool_parse_options + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + if $opt_warning; then + $debug_cmd + $warning_func ${1+"$@"} + fi +} + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host_os in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + cygwin* | mingw* | windows* | pw32* | cegcc* | solaris2* | os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote eval ${1+"$@"} + libtool_validate_options_result=$func_quote_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, windows, cygwin, or some other w32 environment. Relies on a +# correctly configured wine environment available, with the winepath program +# in $build's $PATH. Assumes ARG has no leading or trailing path separator +# characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +# func_convert_delimited_path PATH ORIG_DELIMITER NEW_DELIMITER +# Replaces a delimiter for a given path. +func_convert_delimited_path () +{ + converted_path=`$ECHO "$1" | $SED "s#$2#$3#g"` +} +# end func_convert_delimited_path + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_reorder_shared_lib_cache DIRS +# Reorder the shared library cache by unconfiguring previous shared library cache +# and configuring preferred search directories before previous search directories. +# Previous shared library cache: /usr/lib /usr/local/lib +# Preferred search directories: /tmp/testing +# Reordered shared library cache: /tmp/testing /usr/lib /usr/local/lib +func_reorder_shared_lib_cache () +{ + $debug_cmd + + case $host_os in + openbsd*) + get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` + func_convert_delimited_path "$get_search_directories" ':' '\ ' + save_search_directories=$converted_path + func_convert_delimited_path "$1" ':' '\ ' + + # Ensure directories exist + for dir in $converted_path; do + # Ensure each directory is an absolute path + case $dir in + /*) ;; + *) func_error "Directory '$dir' is not an absolute path" + exit $EXIT_FAILURE ;; + esac + # Ensure no trailing slashes + func_stripname '' '/' "$dir" + dir=$func_stripname_result + if test -d "$dir"; then + if test -n "$preferred_search_directories"; then + preferred_search_directories="$preferred_search_directories $dir" + else + preferred_search_directories=$dir + fi + else + func_error "Directory '$dir' does not exist" + exit $EXIT_FAILURE + fi + done + + PATH="$PATH:/sbin" ldconfig -U $save_search_directories + PATH="$PATH:/sbin" ldconfig -m $preferred_search_directories $save_search_directories + get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` + func_convert_delimited_path "$get_search_directories" ':' '\ ' + reordered_search_directories=$converted_path + + $ECHO "Original: $save_search_directories" + $ECHO "Reordered: $reordered_search_directories" + exit $EXIT_SUCCESS + ;; + *) + func_error "--reorder-cache is not supported for host_os=$host_os." + exit $EXIT_FAILURE + ;; + esac +} +# end func_reorder_shared_lib_cache + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_arg pretty "$libobj" + test "X$libobj" != "X$func_quote_arg_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | windows* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_arg pretty "$srcfile" + qsrcfile=$func_quote_arg_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG + -Xcompiler FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wa,FLAG + -Xassembler FLAG pass linker-specific FLAG directly to the assembler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# If option '--reorder-cache', reorder the shared library cache and exit. +if $opt_reorder_cache; then + func_reorder_shared_lib_cache $shared_lib_dirs +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs" && $opt_finishing; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + if test "false" = "$opt_finishing"; then + echo + echo "NOTE: finish_cmds were not executed during testing, so you must" + echo "manually run ldconfig to add a given test directory, LIBDIR, to" + echo "the search path for generated executables." + fi + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_arg pretty "$nonopt" + install_prog="$func_quote_arg_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_arg pretty "$arg" + func_append install_prog "$func_quote_arg_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_arg pretty "$arg" + func_append install_prog " $func_quote_arg_result" + if test -n "$arg2"; then + func_quote_arg pretty "$arg2" + fi + func_append install_shared_prog " $func_quote_arg_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_arg pretty "$install_override_mode" + func_append install_shared_prog " -m $func_quote_arg_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Strip any trailing slash from the destination. + func_stripname '' '/' "$libdir" + destlibdir=$func_stripname_result + + func_stripname '' '/' "$destdir" + s_destdir=$func_stripname_result + + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | windows* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw* | *windows*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_arg expand,pretty "$relink_command" + eval "func_echo $func_quote_arg_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *windows* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *windows* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *windows* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + case $host in + i[3456]86-*-mingw32*) + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + ;; + *) + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/__nm_//' >> '$nlist'" + ;; + esac + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *windows* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw/windows +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw/windows-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + func_quote_arg pretty "$ECHO" + qECHO=$func_quote_arg_result + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=$qECHO + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw* | *-*-windows* | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw/windows when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#if defined _WIN32 && !defined __GNUC__ +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +_CRTIMP int __cdecl _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw* | windows*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + compile_rpath_tail= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + temp_rpath_tail= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + rpath_arg= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_arg pretty,unquoted "$arg" + qarg=$func_quote_arg_unquoted_result + func_append libtool_args " $func_quote_arg_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "argument to -rpath is not absolute: $arg" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xassembler) + func_append compiler_flags " -Xassembler $qarg" + prev= + func_append compile_command " -Xassembler $qarg" + func_append finalize_command " -Xassembler $qarg" + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + # -q

    + + FreeType 2 Project Files for VS.NET 2005 + (Pocket PC) + + + +

    + FreeType 2 Project Files for VS.NET 2005 + (Pocket PC) +

    + +

    This directory contains project files for Visual C++, named +freetype.vcproj, and Visual Studio, called freetype.sln for +the following targets: + +

      +
    • PPC/SP 2003 (Pocket PC 2003)
    • +
    • PPC/SP WM5 (Windows Mobile 5)
    • +
    • PPC/SP WM6 (Windows Mobile 6)
    • +
    + +It compiles the following libraries from the FreeType 2.14.3 sources:

    + +
      +
      +    freetype.lib     - release build; single threaded
      +    freetype_D.lib   - debug build;   single threaded
      +    freetypeMT.lib   - release build; multi-threaded
      +    freetypeMT_D.lib - debug build;   multi-threaded
      +
    + +

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP +archives are already stored this way, so no further action is required. If +you use some .tar.*z archives, be sure to configure your extracting +tool to convert the line endings. For example, with WinZip, you should activate the TAR +file smart CR/LF Conversion option. Alternatively, you may consider +using the unix2dos or u2d utilities that are floating +around, which specifically deal with this particular problem. + +

    Build directories are placed in the top-level objs +directory.

    + + + diff --git a/local/recipes/libs/freetype2/source/builds/wince/vc2008-ce/freetype.sln b/local/recipes/libs/freetype2/source/builds/wince/vc2008-ce/freetype.sln new file mode 100644 index 0000000000..23914323c9 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/wince/vc2008-ce/freetype.sln @@ -0,0 +1,157 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + LIB Debug Multithreaded|Pocket PC 2003 (ARMV4) = LIB Debug Multithreaded|Pocket PC 2003 (ARMV4) + LIB Debug Multithreaded|Smartphone 2003 (ARMV4) = LIB Debug Multithreaded|Smartphone 2003 (ARMV4) + LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4) = LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4) + LIB Debug Singlethreaded|Smartphone 2003 (ARMV4) = LIB Debug Singlethreaded|Smartphone 2003 (ARMV4) + LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Debug|Pocket PC 2003 (ARMV4) = LIB Debug|Pocket PC 2003 (ARMV4) + LIB Debug|Smartphone 2003 (ARMV4) = LIB Debug|Smartphone 2003 (ARMV4) + LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Release Multithreaded|Pocket PC 2003 (ARMV4) = LIB Release Multithreaded|Pocket PC 2003 (ARMV4) + LIB Release Multithreaded|Smartphone 2003 (ARMV4) = LIB Release Multithreaded|Smartphone 2003 (ARMV4) + LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Release Singlethreaded|Pocket PC 2003 (ARMV4) = LIB Release Singlethreaded|Pocket PC 2003 (ARMV4) + LIB Release Singlethreaded|Smartphone 2003 (ARMV4) = LIB Release Singlethreaded|Smartphone 2003 (ARMV4) + LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Release|Pocket PC 2003 (ARMV4) = LIB Release|Pocket PC 2003 (ARMV4) + LIB Release|Smartphone 2003 (ARMV4) = LIB Release|Smartphone 2003 (ARMV4) + LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Release|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Release|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release|Windows Mobile 6 Standard SDK (ARMV4I) + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Debug Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).Build.0 = Debug Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Debug Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).ActiveCfg = Debug Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).Build.0 = Debug Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).Deploy.0 = Debug Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Debug Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).Build.0 = Debug Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Debug Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).ActiveCfg = Debug Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).Build.0 = Debug Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).Deploy.0 = Debug Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).Build.0 = Debug|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Release Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).Build.0 = Release Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Release Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).ActiveCfg = Release Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).Build.0 = Release Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).Deploy.0 = Release Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Release Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).Build.0 = Release Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Release Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).ActiveCfg = Release Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).Build.0 = Release Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).Deploy.0 = Release Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).ActiveCfg = Release|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).Build.0 = Release|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I) + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/local/recipes/libs/freetype2/source/builds/wince/vc2008-ce/freetype.vcproj b/local/recipes/libs/freetype2/source/builds/wince/vc2008-ce/freetype.vcproj new file mode 100644 index 0000000000..d01c5b59f1 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/wince/vc2008-ce/freetype.vcproj @@ -0,0 +1,3517 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/local/recipes/libs/freetype2/source/builds/wince/vc2008-ce/index.html b/local/recipes/libs/freetype2/source/builds/wince/vc2008-ce/index.html new file mode 100644 index 0000000000..91e9c117e6 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/wince/vc2008-ce/index.html @@ -0,0 +1,47 @@ + +
    + + FreeType 2 Project Files for VS.NET 2008 + (Pocket PC) + + + +

    + FreeType 2 Project Files for VS.NET 2008 + (Pocket PC) +

    + +

    This directory contains project files for Visual C++, named +freetype.dsp, and Visual Studio, called freetype.sln for +the following targets: + +

      +
    • PPC/SP 2003 (Pocket PC 2003)
    • +
    • PPC/SP WM5 (Windows Mobile 5)
    • +
    • PPC/SP WM6 (Windows Mobile 6)
    • +
    + +It compiles the following libraries from the FreeType 2.14.3 sources:

    + +
      +
      +    freetype.lib     - release build; single threaded
      +    freetype_D.lib   - debug build;   single threaded
      +    freetypeMT.lib   - release build; multi-threaded
      +    freetypeMT_D.lib - debug build;   multi-threaded
      +
    + +

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP +archives are already stored this way, so no further action is required. If +you use some .tar.*z archives, be sure to configure your extracting +tool to convert the line endings. For example, with WinZip, you should activate the TAR +file smart CR/LF Conversion option. Alternatively, you may consider +using the unix2dos or u2d utilities that are floating +around, which specifically deal with this particular problem. + +

    Build directories are placed in the top-level objs +directory.

    + + + diff --git a/local/recipes/libs/freetype2/source/builds/windows/detect.mk b/local/recipes/libs/freetype2/source/builds/windows/detect.mk new file mode 100644 index 0000000000..6ca3ca1ac5 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/detect.mk @@ -0,0 +1,202 @@ +# +# FreeType 2 configuration file to detect a Win32 host platform. +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +.PHONY: setup + + +ifeq ($(PLATFORM),ansi) + + # Detecting Windows NT is easy, as the OS variable must be defined and + # contains `Windows_NT'. This also works with Windows 2000 and XP. + # + ifeq ($(OS),Windows_NT) + + PLATFORM := windows + + else + + # Detecting Windows 9X + + # We used to run the `ver' command to see if its output contains the + # word `Windows'. If this is true, we are running Windows 95 or later: + # + # ifdef COMSPEC + # # First, check if we have the COMSPEC environment variable, which + # # indicates we can use COMMAND.COM's internal commands + # is_windows := $(findstring Windows,$(strip $(shell ver))) + # endif + # + # Unfortunately, this also detects the case when one is running + # DOS 7.x (the MS-DOS version that lies below Windows) without actually + # launching the GUI. + # + # A better test is to check whether there are both the environment + # variables `winbootdir' and `windir'. The first indicates an + # underlying DOS 7.x, while the second is set only if windows is + # available. + # + # Note that on Windows NT, such an environment variable will not be seen + # from DOS-based tools like DJGPP's make; this is not actually a problem + # since NT is detected independently above. But do not try to be clever! + # + ifdef winbootdir + ifdef windir + + PLATFORM := windows + + endif + endif + + endif # test NT + +endif # test PLATFORM ansi + +ifeq ($(PLATFORM),windows) + + DELETE := del + CAT := type + SEP := $(BACKSLASH) + + # Setting COPY is a bit trickier. Plain COPY on NT will not work + # correctly, because it will uppercase 8.3 filenames, creating a + # `CONFIG.MK' file which isn't found later on by `make'. + # Since we do not want that, we need to force execution of CMD.EXE. + # Unfortunately, CMD.EXE is not available on Windows 9X. + # So we need to hack. + # + # Kudos to Eli Zaretskii (DJGPP guru) that helped debug it. + # Details are available in threads of the FreeType mailing list + # (2004-11-11), and then in the devel mailing list (2004-11-20 to -23). + # + ifeq ($(OS),Windows_NT) + COPY := >nul cmd.exe /c copy + else + COPY := >nul copy + endif # test NT + + + # gcc Makefile by default + CONFIG_FILE := w32-gcc.mk + ifeq ($(firstword $(CC)),cc) + CC := gcc + endif + + ifneq ($(findstring list,$(MAKECMDGOALS)),) # test for the "list" target + dump_target_list: + $(info ) + $(info $(PROJECT_TITLE) build system -- supported compilers) + $(info ) + $(info Several command-line compilers are supported on Win32:) + $(info ) + $(info $(empty) make setup gcc (with Mingw)) + $(info $(empty) make setup visualc Microsoft Visual C++) + $(info $(empty) make setup bcc32 Borland C/C++) + $(info $(empty) make setup lcc Win32-LCC) + $(info $(empty) make setup intelc Intel C/C++) + $(info ) + + setup: dump_target_list + .PHONY: dump_target_list list + else + setup: std_setup + endif + + # additionally, we provide hooks for various other compilers + # + ifneq ($(findstring visualc,$(MAKECMDGOALS)),) # Visual C/C++ + CONFIG_FILE := w32-vcc.mk + CC := cl + + .PHONY: visualc + visualc: setup + @cd . + endif + + ifneq ($(findstring intelc,$(MAKECMDGOALS)),) # Intel C/C++ + CONFIG_FILE := w32-intl.mk + CC := cl + + .PHONY: intelc + visualc: setup + @cd . + endif + + ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ + CONFIG_FILE := w32-wat.mk + CC := wcc386 + + .PHONY: watcom + watcom: setup + @cd . + endif + + ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ + CONFIG_FILE := w32-icc.mk + CC := icc + + .PHONY: visualage + visualage: setup + @cd . + endif + + ifneq ($(findstring lcc,$(MAKECMDGOALS)),) # LCC-Win32 + CONFIG_FILE := w32-lcc.mk + CC := lcc + + .PHONY: lcc + lcc: setup + @cd . + endif + + ifneq ($(findstring mingw32,$(MAKECMDGOALS)),) # mingw32 + CONFIG_FILE := w32-mingw32.mk + CC := gcc + + .PHONY: mingw32 + mingw32: setup + @cd . + endif + + ifneq ($(findstring bcc32,$(MAKECMDGOALS)),) # Borland C++ + CONFIG_FILE := w32-bcc.mk + CC := bcc32 + + .PHONY: bcc32 + bcc32: setup + @cd . + endif + + ifneq ($(findstring devel-bcc,$(MAKECMDGOALS)),) # development target + CONFIG_FILE := w32-bccd.mk + CC := bcc32 + + .PHONY: devel-bcc + devel-bcc: setup + @cd . + endif + + ifneq ($(findstring devel-gcc,$(MAKECMDGOALS)),) # development target + CONFIG_FILE := w32-dev.mk + CC := gcc + + .PHONY: devel-gcc + devel-gcc: setup + @cd . + endif + +endif # test PLATFORM windows + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/windows/ftdebug.c b/local/recipes/libs/freetype2/source/builds/windows/ftdebug.c new file mode 100644 index 0000000000..96bb0688a1 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/ftdebug.c @@ -0,0 +1,698 @@ +/**************************************************************************** + * + * ftdebug.c + * + * Debugging and logging component for Win32 (body). + * + * Copyright (C) 1996-2026 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This component contains various macros and functions used to ease the + * debugging of the FreeType engine. Its main purpose is in assertion + * checking, tracing, and error detection. + * + * There are now three debugging modes: + * + * - trace mode + * + * Error and trace messages are sent to the log file (which can be the + * standard error output). + * + * - error mode + * + * Only error messages are generated. + * + * - release mode: + * + * No error message is sent or generated. The code is free from any + * debugging parts. + * + */ + + +#include +#include +#include +#include + + +#ifdef FT_DEBUG_LOGGING + + /************************************************************************** + * + * Variables used to control logging. + * + * 1. `ft_default_trace_level` stores the value of trace levels, which are + * provided to FreeType using the `FT2_DEBUG` environment variable. + * + * 2. `ft_fileptr` stores the `FILE*` handle. + * + * 3. `ft_component` is a string that holds the name of `FT_COMPONENT`. + * + * 4. The flag `ft_component_flag` prints the name of `FT_COMPONENT` along + * with the actual log message if set to true. + * + * 5. The flag `ft_timestamp_flag` prints time along with the actual log + * message if set to true. + * + * 6. `ft_have_newline_char` is used to differentiate between a log + * message with and without a trailing newline character. + * + * 7. `ft_custom_trace_level` stores the custom trace level value, which + * is provided by the user at run-time. + * + * We use `static` to avoid 'unused variable' warnings. + * + */ + static const char* ft_default_trace_level = NULL; + static FILE* ft_fileptr = NULL; + static const char* ft_component = NULL; + static FT_Bool ft_component_flag = FALSE; + static FT_Bool ft_timestamp_flag = FALSE; + static FT_Bool ft_have_newline_char = TRUE; + static const char* ft_custom_trace_level = NULL; + + /* declared in ftdebug.h */ + + dlg_handler ft_default_log_handler = NULL; + FT_Custom_Log_Handler custom_output_handler = NULL; + +#endif /* FT_DEBUG_LOGGING */ + + +#ifdef FT_DEBUG_LEVEL_ERROR + +#define WIN32_LEAN_AND_MEAN +#include + + +#ifdef _WIN32_WCE + + FT_LOACAL_DEF( void ) + OutputDebugStringA( LPCSTR lpOutputString ) + { + int len; + LPWSTR lpOutputStringW; + + + /* allocate memory space for converted string */ + len = MultiByteToWideChar( CP_ACP, MB_ERR_INVALID_CHARS, + lpOutputString, -1, NULL, 0 ); + + lpOutputStringW = (LPWSTR)_alloca( len * sizeof ( WCHAR ) ); + + if ( !len || !lpOutputStringW ) + return; + + /* now it is safe to do the translation */ + MultiByteToWideChar( CP_ACP, MB_ERR_INVALID_CHARS, + lpOutputString, -1, lpOutputStringW, len ); + + OutputDebugStringW( lpOutputStringW ); + } + +#endif /* _WIN32_WCE */ + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Message( const char* fmt, + ... ) + { + va_list ap; + + + va_start( ap, fmt ); + vfprintf( stderr, fmt, ap ); +#if ( defined( _WIN32_WINNT ) && _WIN32_WINNT >= 0x0400 ) || \ + ( defined( _WIN32_WCE ) && _WIN32_WCE >= 0x0600 ) + if ( IsDebuggerPresent() ) + { + static char buf[1024]; + + + vsnprintf( buf, sizeof buf, fmt, ap ); + OutputDebugStringA( buf ); + } +#endif + va_end( ap ); + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Panic( const char* fmt, + ... ) + { + va_list ap; + + + va_start( ap, fmt ); + vfprintf( stderr, fmt, ap ); +#if ( defined( _WIN32_WINNT ) && _WIN32_WINNT >= 0x0400 ) || \ + ( defined( _WIN32_WCE ) && _WIN32_WCE >= 0x0600 ) + if ( IsDebuggerPresent() ) + { + static char buf[1024]; + + + vsnprintf( buf, sizeof buf, fmt, ap ); + OutputDebugStringA( buf ); + } +#endif + va_end( ap ); + + exit( EXIT_FAILURE ); + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( int ) + FT_Throw( FT_Error error, + int line, + const char* file ) + { +#if 0 + /* activating the code in this block makes FreeType very chatty */ + fprintf( stderr, + "%s:%d: error 0x%02x: %s\n", + file, + line, + error, + FT_Error_String( error ) ); +#else + FT_UNUSED( error ); + FT_UNUSED( line ); + FT_UNUSED( file ); +#endif + + return 0; + } + +#endif /* FT_DEBUG_LEVEL_ERROR */ + + +#ifdef FT_DEBUG_LEVEL_TRACE + + /* array of trace levels, initialized to 0; */ + /* this gets adjusted at run-time */ + static int ft_trace_levels_enabled[trace_count]; + + /* array of trace levels, always initialized to 0 */ + static int ft_trace_levels_disabled[trace_count]; + + /* a pointer to either `ft_trace_levels_enabled' */ + /* or `ft_trace_levels_disabled' */ + int* ft_trace_levels; + + /* define array of trace toggle names */ +#define FT_TRACE_DEF( x ) #x , + + static const char* ft_trace_toggles[trace_count + 1] = + { +#include + NULL + }; + +#undef FT_TRACE_DEF + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( FT_Int ) + FT_Trace_Get_Count( void ) + { + return trace_count; + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( const char * ) + FT_Trace_Get_Name( FT_Int idx ) + { + int max = FT_Trace_Get_Count(); + + + if ( idx < max ) + return ft_trace_toggles[idx]; + else + return NULL; + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Trace_Disable( void ) + { + ft_trace_levels = ft_trace_levels_disabled; + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Trace_Enable( void ) + { + ft_trace_levels = ft_trace_levels_enabled; + } + + + /************************************************************************** + * + * Initialize the tracing sub-system. This is done by retrieving the + * value of the `FT2_DEBUG' environment variable. It must be a list of + * toggles, separated by spaces, `;', or `,'. Example: + * + * export FT2_DEBUG="any:3 memory:7 stream:5" + * + * This requests that all levels be set to 3, except the trace level for + * the memory and stream components which are set to 7 and 5, + * respectively. + * + * See the file `include/freetype/internal/fttrace.h' for details of + * the available toggle names. + * + * The level must be between 0 and 7; 0 means quiet (except for serious + * runtime errors), and 7 means _very_ verbose. + */ + FT_BASE_DEF( void ) + ft_debug_init( void ) + { + const char* ft2_debug = NULL; + + +#ifdef FT_DEBUG_LOGGING + if ( ft_custom_trace_level != NULL ) + ft2_debug = ft_custom_trace_level; + else + ft2_debug = ft_default_trace_level; +#else + ft2_debug = ft_getenv( "FT2_DEBUG" ); +#endif + + if ( ft2_debug ) + { + const char* p = ft2_debug; + const char* q; + + + for ( ; *p; p++ ) + { + /* skip leading whitespace and separators */ + if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' ) + continue; + +#ifdef FT_DEBUG_LOGGING + + /* check extra arguments for logging */ + if ( *p == '-' ) + { + const char* r = ++p; + + + if ( *r == 'v' ) + { + const char* s = ++r; + + + ft_component_flag = TRUE; + + if ( *s == 't' ) + { + ft_timestamp_flag = TRUE; + p++; + } + + p++; + } + + else if ( *r == 't' ) + { + const char* s = ++r; + + + ft_timestamp_flag = TRUE; + + if ( *s == 'v' ) + { + ft_component_flag = TRUE; + p++; + } + + p++; + } + } + +#endif /* FT_DEBUG_LOGGING */ + + /* read toggle name, followed by ':' */ + q = p; + while ( *p && *p != ':' ) + p++; + + if ( !*p ) + break; + + if ( *p == ':' && p > q ) + { + FT_Int n, i, len = (FT_Int)( p - q ); + FT_Int level = -1, found = -1; + + + for ( n = 0; n < trace_count; n++ ) + { + const char* toggle = ft_trace_toggles[n]; + + + for ( i = 0; i < len; i++ ) + { + if ( toggle[i] != q[i] ) + break; + } + + if ( i == len && toggle[i] == 0 ) + { + found = n; + break; + } + } + + /* read level */ + p++; + if ( *p ) + { + level = *p - '0'; + if ( level < 0 || level > 7 ) + level = -1; + } + + if ( found >= 0 && level >= 0 ) + { + if ( found == trace_any ) + { + /* special case for `any' */ + for ( n = 0; n < trace_count; n++ ) + ft_trace_levels_enabled[n] = level; + } + else + ft_trace_levels_enabled[found] = level; + } + } + } + } + + ft_trace_levels = ft_trace_levels_enabled; + } + + +#else /* !FT_DEBUG_LEVEL_TRACE */ + + + FT_BASE_DEF( void ) + ft_debug_init( void ) + { + /* nothing */ + } + + + FT_BASE_DEF( FT_Int ) + FT_Trace_Get_Count( void ) + { + return 0; + } + + + FT_BASE_DEF( const char * ) + FT_Trace_Get_Name( FT_Int idx ) + { + FT_UNUSED( idx ); + + return NULL; + } + + + FT_BASE_DEF( void ) + FT_Trace_Disable( void ) + { + /* nothing */ + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Trace_Enable( void ) + { + /* nothing */ + } + +#endif /* !FT_DEBUG_LEVEL_TRACE */ + + +#ifdef FT_DEBUG_LOGGING + + /************************************************************************** + * + * Initialize and de-initialize 'dlg' library. + * + */ + + FT_BASE_DEF( void ) + ft_logging_init( void ) + { + ft_default_log_handler = ft_log_handler; + ft_default_trace_level = ft_getenv( "FT2_DEBUG" ); + + if ( ft_getenv( "FT_LOGGING_FILE" ) ) + ft_fileptr = ft_fopen( ft_getenv( "FT_LOGGING_FILE" ), "w" ); + else + ft_fileptr = stderr; + + ft_debug_init(); + + /* Set the default output handler for 'dlg'. */ + dlg_set_handler( ft_default_log_handler, NULL ); + } + + + FT_BASE_DEF( void ) + ft_logging_deinit( void ) + { + if ( ft_fileptr != stderr ) + ft_fclose( ft_fileptr ); + } + + + /************************************************************************** + * + * An output log handler for FreeType. + * + */ + FT_BASE_DEF( void ) + ft_log_handler( const struct dlg_origin* origin, + const char* string, + void* data ) + { + char features_buf[128]; + char* bufp = features_buf; + + FT_UNUSED( data ); + + + if ( ft_have_newline_char ) + { + const char* features = NULL; + size_t features_length = 0; + + +#define FEATURES_TIMESTAMP "[%h:%m] " +#define FEATURES_COMPONENT "[%t] " +#define FEATURES_TIMESTAMP_COMPONENT "[%h:%m %t] " + + if ( ft_timestamp_flag && ft_component_flag ) + { + features = FEATURES_TIMESTAMP_COMPONENT; + features_length = sizeof ( FEATURES_TIMESTAMP_COMPONENT ); + } + else if ( ft_timestamp_flag ) + { + features = FEATURES_TIMESTAMP; + features_length = sizeof ( FEATURES_TIMESTAMP ); + } + else if ( ft_component_flag ) + { + features = FEATURES_COMPONENT; + features_length = sizeof ( FEATURES_COMPONENT ); + } + + if ( ft_component_flag || ft_timestamp_flag ) + { + ft_strncpy( features_buf, features, features_length ); + bufp += features_length - 1; + } + + if ( ft_component_flag ) + { + size_t tag_length = ft_strlen( *origin->tags ); + size_t i; + + + /* To vertically align tracing messages we compensate the */ + /* different FT_COMPONENT string lengths by inserting an */ + /* appropriate amount of space characters. */ + for ( i = 0; + i < FT_MAX_TRACE_LEVEL_LENGTH - tag_length; + i++ ) + *bufp++ = ' '; + } + } + + /* Finally add the format string for the tracing message. */ + *bufp++ = '%'; + *bufp++ = 'c'; + *bufp = '\0'; + + dlg_generic_outputf_stream( ft_fileptr, + (const char*)features_buf, + origin, + string, + dlg_default_output_styles, + true ); + + if ( ft_strrchr( string, '\n' ) ) + ft_have_newline_char = TRUE; + else + ft_have_newline_char = FALSE; + } + + + /* documentation is in ftdebug.h */ + FT_BASE_DEF( void ) + ft_add_tag( const char* tag ) + { + ft_component = tag; + + dlg_add_tag( tag, NULL ); + } + + + /* documentation is in ftdebug.h */ + FT_BASE_DEF( void ) + ft_remove_tag( const char* tag ) + { + dlg_remove_tag( tag, NULL ); + } + + + /* documentation is in ftlogging.h */ + + FT_EXPORT_DEF( void ) + FT_Trace_Set_Level( const char* level ) + { + ft_component_flag = FALSE; + ft_timestamp_flag = FALSE; + ft_custom_trace_level = level; + + ft_debug_init(); + } + + + /* documentation is in ftlogging.h */ + + FT_EXPORT_DEF( void ) + FT_Trace_Set_Default_Level( void ) + { + ft_component_flag = FALSE; + ft_timestamp_flag = FALSE; + ft_custom_trace_level = NULL; + + ft_debug_init(); + } + + + /************************************************************************** + * + * Functions to handle a custom log handler. + * + */ + + /* documentation is in ftlogging.h */ + + FT_EXPORT_DEF( void ) + FT_Set_Log_Handler( FT_Custom_Log_Handler handler ) + { + custom_output_handler = handler; + } + + + /* documentation is in ftlogging.h */ + + FT_EXPORT_DEF( void ) + FT_Set_Default_Log_Handler( void ) + { + custom_output_handler = NULL; + } + + + /* documentation is in ftdebug.h */ + FT_BASE_DEF( void ) + FT_Logging_Callback( const char* fmt, + ... ) + { + va_list ap; + + + va_start( ap, fmt ); + custom_output_handler( ft_component, fmt, ap ); + va_end( ap ); + } + +#else /* !FT_DEBUG_LOGGING */ + + FT_EXPORT_DEF( void ) + FT_Trace_Set_Level( const char* level ) + { + FT_UNUSED( level ); + } + + + FT_EXPORT_DEF( void ) + FT_Trace_Set_Default_Level( void ) + { + /* nothing */ + } + + + FT_EXPORT_DEF( void ) + FT_Set_Log_Handler( FT_Custom_Log_Handler handler ) + { + FT_UNUSED( handler ); + } + + + FT_EXPORT_DEF( void ) + FT_Set_Default_Log_Handler( void ) + { + /* nothing */ + } + +#endif /* !FT_DEBUG_LOGGING */ + + +/* END */ diff --git a/local/recipes/libs/freetype2/source/builds/windows/ftsystem.c b/local/recipes/libs/freetype2/source/builds/windows/ftsystem.c new file mode 100644 index 0000000000..3d20566a72 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/ftsystem.c @@ -0,0 +1,500 @@ +/**************************************************************************** + * + * ftsystem.c + * + * Windows-specific FreeType low-level system interface (body). + * + * Copyright (C) 2021-2026 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#include + /* we use our special ftconfig.h file, not the standard one */ +#include FT_CONFIG_CONFIG_H +#include +#include +#include +#include +#include + + /* memory mapping and allocation includes and definitions */ +#define WIN32_LEAN_AND_MEAN +#include + + + /************************************************************************** + * + * MEMORY MANAGEMENT INTERFACE + * + */ + + + /************************************************************************** + * + * It is not necessary to do any error checking for the + * allocation-related functions. This will be done by the higher level + * routines like ft_mem_alloc() or ft_mem_realloc(). + * + */ + + + /************************************************************************** + * + * @Function: + * ft_alloc + * + * @Description: + * The memory allocation function. + * + * @Input: + * memory :: + * A pointer to the memory object. + * + * size :: + * The requested size in bytes. + * + * @Return: + * The address of newly allocated block. + */ + FT_CALLBACK_DEF( void* ) + ft_alloc( FT_Memory memory, + long size ) + { + return HeapAlloc( memory->user, 0, size ); + } + + + /************************************************************************** + * + * @Function: + * ft_realloc + * + * @Description: + * The memory reallocation function. + * + * @Input: + * memory :: + * A pointer to the memory object. + * + * cur_size :: + * The current size of the allocated memory block. + * + * new_size :: + * The newly requested size in bytes. + * + * block :: + * The current address of the block in memory. + * + * @Return: + * The address of the reallocated memory block. + */ + FT_CALLBACK_DEF( void* ) + ft_realloc( FT_Memory memory, + long cur_size, + long new_size, + void* block ) + { + FT_UNUSED( cur_size ); + + return HeapReAlloc( memory->user, 0, block, new_size ); + } + + + /************************************************************************** + * + * @Function: + * ft_free + * + * @Description: + * The memory release function. + * + * @Input: + * memory :: + * A pointer to the memory object. + * + * block :: + * The address of block in memory to be freed. + */ + FT_CALLBACK_DEF( void ) + ft_free( FT_Memory memory, + void* block ) + { + HeapFree( memory->user, 0, block ); + } + + + /************************************************************************** + * + * RESOURCE MANAGEMENT INTERFACE + * + */ + + + /************************************************************************** + * + * The macro FT_COMPONENT is used in trace mode. It is an implicit + * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log + * messages during execution. + */ +#undef FT_COMPONENT +#define FT_COMPONENT io + + /* We use the macro STREAM_FILE for convenience to extract the */ + /* system-specific stream handle from a given FreeType stream object */ +#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) + + + /************************************************************************** + * + * @Function: + * ft_close_stream_by_munmap + * + * @Description: + * The function to close a stream which is opened by mmap. + * + * @Input: + * stream :: A pointer to the stream object. + */ + FT_CALLBACK_DEF( void ) + ft_close_stream_by_munmap( FT_Stream stream ) + { + UnmapViewOfFile( (LPCVOID)stream->descriptor.pointer ); + + stream->descriptor.pointer = NULL; + stream->size = 0; + stream->base = NULL; + } + + + /************************************************************************** + * + * @Function: + * ft_close_stream_by_free + * + * @Description: + * The function to close a stream which is created by ft_alloc. + * + * @Input: + * stream :: A pointer to the stream object. + */ + FT_CALLBACK_DEF( void ) + ft_close_stream_by_free( FT_Stream stream ) + { + ft_free( stream->memory, stream->descriptor.pointer ); + + stream->descriptor.pointer = NULL; + stream->size = 0; + stream->base = NULL; + } + + + /* support for Universal Windows Platform UWP, formerly WinRT */ +#ifdef _WINRT_DLL + +#define PACK_DWORD64( hi, lo ) ( ( (DWORD64)(hi) << 32 ) | (DWORD)(lo) ) + +#define CreateFileMapping( a, b, c, d, e, f ) \ + CreateFileMappingFromApp( a, b, c, PACK_DWORD64( d, e ), f ) +#define MapViewOfFile( a, b, c, d, e ) \ + MapViewOfFileFromApp( a, b, PACK_DWORD64( c, d ), e ) + + FT_LOCAL_DEF( HANDLE ) + CreateFileA( LPCSTR lpFileName, + DWORD dwDesiredAccess, + DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes, + HANDLE hTemplateFile ) + { + int len; + LPWSTR lpFileNameW; + + CREATEFILE2_EXTENDED_PARAMETERS createExParams = { + sizeof ( CREATEFILE2_EXTENDED_PARAMETERS ), + dwFlagsAndAttributes & 0x0000FFFF, + dwFlagsAndAttributes & 0xFFF00000, + dwFlagsAndAttributes & 0x000F0000, + lpSecurityAttributes, + hTemplateFile }; + + + /* allocate memory space for converted path name */ + len = MultiByteToWideChar( CP_ACP, MB_ERR_INVALID_CHARS, + lpFileName, -1, NULL, 0 ); + + lpFileNameW = (LPWSTR)_alloca( len * sizeof ( WCHAR ) ); + + if ( !len || !lpFileNameW ) + { + FT_ERROR(( "FT_Stream_Open: cannot convert file name to LPWSTR\n" )); + return INVALID_HANDLE_VALUE; + } + + /* now it is safe to do the translation */ + MultiByteToWideChar( CP_ACP, MB_ERR_INVALID_CHARS, + lpFileName, -1, lpFileNameW, len ); + + /* open the file */ + return CreateFile2( lpFileNameW, dwDesiredAccess, dwShareMode, + dwCreationDisposition, &createExParams ); + } + +#endif /* _WINRT_DLL */ + + + /* support for Windows CE */ +#ifdef _WIN32_WCE + + /* malloc.h provides implementation of alloca()/_alloca() */ + #include + + FT_LOCAL_DEF( HANDLE ) + CreateFileA( LPCSTR lpFileName, + DWORD dwDesiredAccess, + DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes, + HANDLE hTemplateFile ) + { + int len; + LPWSTR lpFileNameW; + + + /* allocate memory space for converted path name */ + len = MultiByteToWideChar( CP_ACP, MB_ERR_INVALID_CHARS, + lpFileName, -1, NULL, 0 ); + + lpFileNameW = (LPWSTR)_alloca( len * sizeof ( WCHAR ) ); + + if ( !len || !lpFileNameW ) + { + FT_ERROR(( "FT_Stream_Open: cannot convert file name to LPWSTR\n" )); + return INVALID_HANDLE_VALUE; + } + + /* now it is safe to do the translation */ + MultiByteToWideChar( CP_ACP, MB_ERR_INVALID_CHARS, + lpFileName, -1, lpFileNameW, len ); + + /* open the file */ + return CreateFileW( lpFileNameW, dwDesiredAccess, dwShareMode, + lpSecurityAttributes, dwCreationDisposition, + dwFlagsAndAttributes, hTemplateFile ); + } + +#endif /* _WIN32_WCE */ + + /* support for really old Windows */ +#if defined( _WIN32_WCE ) || defined ( _WIN32_WINDOWS ) || \ + ( defined( _WIN32_WINNT ) && _WIN32_WINNT <= 0x0400 ) + + FT_LOCAL_DEF( BOOL ) + GetFileSizeEx( HANDLE hFile, + PLARGE_INTEGER lpFileSize ) + { + lpFileSize->u.LowPart = GetFileSize( hFile, + (DWORD *)&lpFileSize->u.HighPart ); + + if ( lpFileSize->u.LowPart == INVALID_FILE_SIZE && + GetLastError() != NO_ERROR ) + return FALSE; + else + return TRUE; + } + +#endif /* _WIN32_WCE || _WIN32_WINDOWS || _WIN32_WINNT <= 0x0400 */ + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( FT_Error ) + FT_Stream_Open( FT_Stream stream, + const char* filepathname ) + { + HANDLE file; + HANDLE fm; + LARGE_INTEGER size; + + + if ( !stream ) + return FT_THROW( Invalid_Stream_Handle ); + + /* open the file */ + file = CreateFileA( (LPCSTR)filepathname, GENERIC_READ, FILE_SHARE_READ, + NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 ); + if ( file == INVALID_HANDLE_VALUE ) + { + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + return FT_THROW( Cannot_Open_Resource ); + } + + if ( GetFileSizeEx( file, &size ) == FALSE ) + { + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not retrieve size of file `%s'\n", filepathname )); + goto Fail_Open; + } + + /* `stream->size' is typedef'd to unsigned long (in `ftsystem.h'); */ + /* So avoid overflow caused by fonts in huge files larger than */ + /* 2GB, do a test. */ + if ( size.QuadPart > LONG_MAX ) + { + FT_ERROR(( "FT_Stream_Open: file is too big\n" )); + goto Fail_Open; + } + else if ( size.QuadPart == 0 ) + { + FT_ERROR(( "FT_Stream_Open: zero-length file\n" )); + goto Fail_Open; + } + + fm = CreateFileMapping( file, NULL, PAGE_READONLY, 0, 0, NULL ); + if ( fm == NULL ) + { + FT_ERROR(( "FT_Stream_Open: can not map file\n" )); + goto Fail_Open; + } + + /* Store only the low part of this 64 bits integer because long is */ + /* a 32 bits type. Anyway, a check has been done above to forbid */ + /* a size greater than LONG_MAX */ + stream->size = size.LowPart; + stream->pos = 0; + stream->base = (unsigned char *) + MapViewOfFile( fm, FILE_MAP_READ, 0, 0, 0 ); + + CloseHandle( fm ); + + if ( stream->base != NULL ) + stream->close = ft_close_stream_by_munmap; + else + { + DWORD total_read_count; + + + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not `mmap' file `%s'\n", filepathname )); + + stream->base = (unsigned char*)ft_alloc( stream->memory, stream->size ); + + if ( !stream->base ) + { + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not `alloc' memory\n" )); + goto Fail_Open; + } + + total_read_count = 0; + do + { + DWORD read_count; + + + if ( ReadFile( file, + stream->base + total_read_count, + stream->size - total_read_count, + &read_count, NULL ) == FALSE ) + { + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " error while `read'ing file `%s'\n", filepathname )); + goto Fail_Read; + } + + total_read_count += read_count; + + } while ( total_read_count != stream->size ); + + stream->close = ft_close_stream_by_free; + } + + CloseHandle( file ); + + stream->descriptor.pointer = stream->base; + stream->pathname.pointer = (char*)filepathname; + + stream->read = NULL; + + FT_TRACE1(( "FT_Stream_Open:" )); + FT_TRACE1(( " opened `%s' (%ld bytes) successfully\n", + filepathname, stream->size )); + + return FT_Err_Ok; + + Fail_Read: + ft_free( stream->memory, stream->base ); + + Fail_Open: + CloseHandle( file ); + + stream->base = NULL; + stream->size = 0; + stream->pos = 0; + + return FT_THROW( Cannot_Open_Stream ); + } + + +#ifdef FT_DEBUG_MEMORY + + extern FT_Int + ft_mem_debug_init( FT_Memory memory ); + + extern void + ft_mem_debug_done( FT_Memory memory ); + +#endif + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( FT_Memory ) + FT_New_Memory( void ) + { + HANDLE heap; + FT_Memory memory; + + + heap = GetProcessHeap(); + memory = heap ? (FT_Memory)HeapAlloc( heap, 0, sizeof ( *memory ) ) + : NULL; + + if ( memory ) + { + memory->user = heap; + memory->alloc = ft_alloc; + memory->realloc = ft_realloc; + memory->free = ft_free; +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_init( memory ); +#endif + } + + return memory; + } + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( void ) + FT_Done_Memory( FT_Memory memory ) + { +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_done( memory ); +#endif + memory->free( memory, memory ); + } + + +/* END */ diff --git a/local/recipes/libs/freetype2/source/builds/windows/vc2010/freetype.user.props b/local/recipes/libs/freetype2/source/builds/windows/vc2010/freetype.user.props new file mode 100644 index 0000000000..234dd5d795 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/vc2010/freetype.user.props @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/local/recipes/libs/freetype2/source/builds/windows/vc2010/freetype.vcxproj b/local/recipes/libs/freetype2/source/builds/windows/vc2010/freetype.vcxproj new file mode 100644 index 0000000000..671d124502 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/vc2010/freetype.vcxproj @@ -0,0 +1,525 @@ + + + + + + Debug + Win32 + + + Debug + ARM64 + + + Debug + x64 + + + Debug Static + Win32 + + + Debug Static + ARM64 + + + Debug Static + x64 + + + Release + Win32 + + + Release + ARM64 + + + Release + x64 + + + Release Static + Win32 + + + Release Static + ARM64 + + + Release Static + x64 + + + + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} + FreeType + + + + $(DefaultPlatformToolset) + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + + + StaticLibrary + NotSet + + + StaticLibrary + NotSet + + + StaticLibrary + NotSet + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + + + StaticLibrary + NotSet + + + StaticLibrary + NotSet + + + StaticLibrary + NotSet + + + + + + ..\..\..\objs\$(Platform)\$(Configuration)\ + ..\..\..\objs\$(Platform)\$(Configuration)\ + AllRules.ruleset + + + freetype + + + + + Disabled + $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + Level4 + ProgramDatabase + Default + 4001 + true + $(OutDir)$(TargetName).pdb + Disabled + + + _DEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX86 + $(UserLibraryDirectories);%(AdditionalLibraryDirectories) + $(UserDependencies);%(AdditionalDependencies) + + + + + Disabled + $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + Level4 + ProgramDatabase + Default + 4001;4267 + true + $(OutDir)$(TargetName).pdb + Disabled + + + _DEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) + 0x0409 + + + true + MachineARM64 + $(UserLibraryDirectories);%(AdditionalLibraryDirectories) + $(UserDependencies);%(AdditionalDependencies) + + + + + Disabled + $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + Level4 + ProgramDatabase + Default + 4001;4267 + true + $(OutDir)$(TargetName).pdb + Disabled + + + _DEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX64 + $(UserLibraryDirectories);%(AdditionalLibraryDirectories) + $(UserDependencies);%(AdditionalDependencies) + + + + + Disabled + $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + Level4 + ProgramDatabase + Default + 4001 + true + $(OutDir)$(TargetName).pdb + Disabled + + + _DEBUG;$(UserDefines);%(PreprocessorDefinitions) + 0x0409 + + + MachineX86 + $(UserLibraryDirectories);%(AdditionalLibraryDirectories) + $(UserDependencies);%(AdditionalDependencies) + + + + + Disabled + $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + Level4 + ProgramDatabase + Default + 4001;4267 + true + $(OutDir)$(TargetName).pdb + Disabled + + + _DEBUG;$(UserDefines);%(PreprocessorDefinitions) + 0x0409 + + + MachineARM64 + $(UserLibraryDirectories);%(AdditionalLibraryDirectories) + $(UserDependencies);%(AdditionalDependencies) + + + + + Disabled + $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + Level4 + ProgramDatabase + Default + 4001;4267 + true + $(OutDir)$(TargetName).pdb + Disabled + + + _DEBUG;$(UserDefines);%(PreprocessorDefinitions) + 0x0409 + + + MachineX64 + $(UserLibraryDirectories);%(AdditionalLibraryDirectories) + $(UserDependencies);%(AdditionalDependencies) + + + + + MaxSpeed + AnySuitable + $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + true + true + Level4 + Default + 4001 + true + StreamingSIMDExtensions2 + true + + + NDEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) + 0x0409 + + + true + true + MachineX86 + $(UserLibraryDirectories);%(AdditionalLibraryDirectories) + $(UserDependencies);%(AdditionalDependencies) + + + + + MaxSpeed + AnySuitable + $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + true + true + Level4 + Default + 4001;4267 + true + NotSet + true + + + NDEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) + 0x0409 + + + true + true + MachineARM64 + $(UserLibraryDirectories);%(AdditionalLibraryDirectories) + $(UserDependencies);%(AdditionalDependencies) + + + + + MaxSpeed + AnySuitable + $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + true + true + Level4 + Default + 4001;4267 + true + true + + + NDEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) + 0x0409 + + + true + true + MachineX64 + $(UserLibraryDirectories);%(AdditionalLibraryDirectories) + $(UserDependencies);%(AdditionalDependencies) + + + + + MaxSpeed + AnySuitable + $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions) + MultiThreaded + true + true + Level4 + Default + 4001 + true + StreamingSIMDExtensions2 + true + + + NDEBUG;$(UserDefines);%(PreprocessorDefinitions) + 0x0409 + + + MachineX86 + $(UserLibraryDirectories);%(AdditionalLibraryDirectories) + $(UserDependencies);%(AdditionalDependencies) + + + + + MaxSpeed + AnySuitable + $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions) + MultiThreaded + true + true + Level4 + Default + 4001;4267 + true + NotSet + true + + + NDEBUG;$(UserDefines);%(PreprocessorDefinitions) + 0x0409 + + + MachineARM64 + $(UserLibraryDirectories);%(AdditionalLibraryDirectories) + $(UserDependencies);%(AdditionalDependencies) + + + + + MaxSpeed + AnySuitable + $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions) + MultiThreaded + true + true + Level4 + Default + 4001;4267 + true + true + + + NDEBUG;$(UserDefines);%(PreprocessorDefinitions) + 0x0409 + + + MachineX64 + $(UserLibraryDirectories);%(AdditionalLibraryDirectories) + $(UserDependencies);%(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + false + + + + + + + + + ..\..\..\include\dlg\output.h + + + ..\..\..\include\dlg\dlg.h + + + ..\..\..\src\dlg\dlg.c + + + + + + + + + + + + + diff --git a/local/recipes/libs/freetype2/source/builds/windows/vc2010/freetype.vcxproj.filters b/local/recipes/libs/freetype2/source/builds/windows/vc2010/freetype.vcxproj.filters new file mode 100644 index 0000000000..4085f6c4d9 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/vc2010/freetype.vcxproj.filters @@ -0,0 +1,149 @@ + + + + + {b4c15893-ec11-491d-9507-0ac184f9cc78} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {4d3e4eff-3fbc-4b20-b413-2743b23b7109} + + + {e6cf6a0f-0404-4024-8bf8-ff5b29f35657} + h;hpp;hxx;hm;inl + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files\FT_MODULES + + + Source Files + + + Source Files + + + + + Source Files + + + diff --git a/local/recipes/libs/freetype2/source/builds/windows/vc2010/index.html b/local/recipes/libs/freetype2/source/builds/windows/vc2010/index.html new file mode 100644 index 0000000000..c50f118467 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/vc2010/index.html @@ -0,0 +1,40 @@ + +
    + + FreeType 2 Project Files for Visual C++ 2010 or newer + + + +

    + FreeType 2 Project Files for Visual C++ 2010 or newer +

    + +

    This directory contains solution and project files for +Visual C++ 2010 or newer, named freetype.sln, +and freetype.vcxproj. It compiles the following libraries +from the FreeType 2.14.3 sources:

    + +
      +
    • freetype.dll using 'Release' or 'Debug' configurations
    • +
    • freetype.lib using 'Release Static' or 'Debug Static' configurations
    • +
    + +

    Both Win32 and x64 builds are supported. Build directories and target +files are placed in the top-level objs directory.

    + +

    Customization of the FreeType library is done by editing the +ftoption.h header file in the top-level devel path. +Alternatively, you may copy the file to another directory and change the +include directory in freetype.users.props.

    + +

    To configure library dependencies like zlib and libpng, +edit the freetype.users.props file in this directory. It also +simplifies automated (command-line) builds using msbuild.

    + +

    To link your executable with FreeType DLL, you may want to define +DLL_IMPORT so that the imported functions are appropriately +attributed with dllimport.

    + + + diff --git a/local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.dsp b/local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.dsp new file mode 100644 index 0000000000..540f5b9ade --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.dsp @@ -0,0 +1,354 @@ +# Microsoft Developer Studio Project File - Name="freetype" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=freetype - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "freetype.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "freetype.mak" CFG="freetype - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "freetype - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "freetype - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "freetype - Win32 Release Static" (based on "Win32 (x86) Static Library") +!MESSAGE "freetype - Win32 Debug Static" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" + +!IF "$(CFG)" == "freetype - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\..\..\objs\Win32\Release" +# PROP Intermediate_Dir "..\..\..\objs\Win32\Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +CPP=cl.exe +# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /Za /MD /W3 /O2 /Oi /D "WIN32" /I "..\..\..\include" /D "_CRT_SECURE_NO_WARNINGS" /D "NDEBUG" /D "FT2_BUILD_LIBRARY" /D "DLL_EXPORT" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +MTL=midl.exe +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" /d "DLL_EXPORT" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 /nologo /dll /machine:I386 /opt:REF,ICF /out:"$(OutDir)\freetype.dll" + +!ELSEIF "$(CFG)" == "freetype - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\..\objs\Win32\Debug" +# PROP Intermediate_Dir "..\..\..\objs\Win32\Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +CPP=cl.exe +# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /Za /MDd /W3 /Gm /ZI /Od /I "..\..\..\include" /D "WIN32" /D "_CRT_SECURE_NO_WARNINGS" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "FT2_BUILD_LIBRARY" /D "DLL_EXPORT" /FR /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +MTL=midl.exe +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" /d "DLL_EXPORT" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 /nologo /dll /debug /machine:I386 /out:"$(OutDir)\freetype.dll" /pdbtype:sept + +!ELSEIF "$(CFG)" == "freetype - Win32 Release Static" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release Static" +# PROP BASE Intermediate_Dir "Release Static" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\..\..\objs\Win32\Release Static" +# PROP Intermediate_Dir "..\..\..\objs\Win32\Release Static" +# PROP Target_Dir "" +CPP=cl.exe +# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /Za /MD /W3 /O2 /Oi /D "WIN32" /I "..\..\..\include" /D "_CRT_SECURE_NO_WARNINGS" /D "NDEBUG" /D "FT2_BUILD_LIBRARY" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"$(OutDir)\freetype.lib" + +!ELSEIF "$(CFG)" == "freetype - Win32 Debug Static" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug Static" +# PROP BASE Intermediate_Dir "Debug Static" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\..\objs\Win32\Debug Static" +# PROP Intermediate_Dir "..\..\..\objs\Win32\Debug Static" +# PROP Target_Dir "" +CPP=cl.exe +# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /Za /MDd /W3 /Gm /ZI /Od /I "..\..\..\include" /D "WIN32" /D "_CRT_SECURE_NO_WARNINGS" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "FT2_BUILD_LIBRARY" /FR /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"$(OutDir)\freetype.lib" + +!ENDIF + +# Begin Target + +# Name "freetype - Win32 Release" +# Name "freetype - Win32 Debug" +# Name "freetype - Win32 Release Static" +# Name "freetype - Win32 Debug Static" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\..\..\src\autofit\autofit.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\bdf\bdf.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\cff\cff.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftbase.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftbbox.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftbdf.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftbitmap.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftcid.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftpatent.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftfstype.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftgasp.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\cache\ftcache.c +# End Source File +# Begin Source File + +SOURCE=..\ftdebug.c +# ADD CPP /Ze +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftglyph.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftgxval.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\gzip\ftgzip.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftinit.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\lzw\ftlzw.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftmm.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftotval.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftpfr.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftstroke.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftsynth.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftsystem.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\fttype1.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftwinfnt.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\pcf\pcf.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\pfr\pfr.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\psaux\psaux.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\pshinter\pshinter.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\psnames\psmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\raster\raster.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\sfnt\sfnt.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\smooth\smooth.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\truetype\truetype.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\type1\type1.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\cid\type1cid.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\type42\type42.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\winfonts\winfnt.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=..\..\..\include\ft2build.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\freetype\config\ftconfig.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\freetype\config\ftheader.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\freetype\config\ftmodule.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\freetype\config\ftoption.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\freetype\config\ftstdlib.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" +# Begin Source File + +SOURCE=..\..\..\src\base\ftver.rc +# End Source File +# End Group +# End Target +# End Project diff --git a/local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.dsw b/local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.dsw new file mode 100644 index 0000000000..b149e769b5 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "freetype"=.\freetype.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.sln b/local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.sln new file mode 100644 index 0000000000..9054d0abe0 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.sln @@ -0,0 +1,25 @@ +Microsoft Visual Studio Solution File, Format Version 7.00 +# Visual C++ 2002-2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug Static|Win32 = Debug Static|Win32 + Debug|Win32 = Debug|Win32 + Release Static|Win32 = Release Static|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.ActiveCfg = Debug Static|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.Build.0 = Debug Static|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.ActiveCfg = Release Static|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.Build.0 = Release Static|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.vcproj b/local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.vcproj new file mode 100644 index 0000000000..a16782c230 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/visualc/freetype.vcproj @@ -0,0 +1,587 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/local/recipes/libs/freetype2/source/builds/windows/visualc/index.html b/local/recipes/libs/freetype2/source/builds/windows/visualc/index.html new file mode 100644 index 0000000000..2be3377c65 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/visualc/index.html @@ -0,0 +1,38 @@ + +
    + + FreeType 2 Project Files for Visual C++ 6.0 and 2002-2008 + + + +

    + FreeType 2 Project Files for Visual C++ 6.0 and 2002-2008 +

    + +

    This directory contains project files freetype.dsp for +Visual C++ 6.0, and freetype.vcproj for Visual C++ 2002 +through 2008, which you might need to upgrade automatically. +It compiles the following libraries from the FreeType 2.14.3 sources:

    + +
      +
    • freetype.dll using 'Release' or 'Debug' configurations
    • +
    • freetype.lib using 'Release Static' or 'Debug Static' configurations
    • +
    + +

    Build directories and target files are placed in the top-level +objs directory.

    + +

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP +archives are already stored this way, so no further action is required. If +you use some .tar.*z archives, be sure to configure your extracting +tool to convert the line endings. For example, with WinZip, you should activate the TAR +file smart CR/LF Conversion option. Alternatively, you may consider +using the unix2dos or u2d utilities that are floating +around, which specifically deal with this particular problem. + +

    Build directories are placed in the top-level objs +directory.

    + + + diff --git a/local/recipes/libs/freetype2/source/builds/windows/visualce/freetype.dsp b/local/recipes/libs/freetype2/source/builds/windows/visualce/freetype.dsp new file mode 100644 index 0000000000..714c422574 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/visualce/freetype.dsp @@ -0,0 +1,391 @@ +# Microsoft Developer Studio Project File - Name="freetype" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=freetype - Win32 Debug Singlethreaded +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "freetype.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "freetype.mak" CFG="freetype - Win32 Debug Singlethreaded" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "freetype - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "freetype - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "freetype - Win32 Debug Multithreaded" (based on "Win32 (x86) Static Library") +!MESSAGE "freetype - Win32 Release Multithreaded" (based on "Win32 (x86) Static Library") +!MESSAGE "freetype - Win32 Release Singlethreaded" (based on "Win32 (x86) Static Library") +!MESSAGE "freetype - Win32 Debug Singlethreaded" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "freetype - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\..\..\objs\release" +# PROP Intermediate_Dir "..\..\..\objs\release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /MD /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c +# SUBTRACT CPP /nologo /Z /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype.lib" + +!ELSEIF "$(CFG)" == "freetype - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\..\objs\debug" +# PROP Intermediate_Dir "..\..\..\objs\debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /MDd /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c +# SUBTRACT CPP /nologo /X /YX +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype_D.lib" + +!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "freetype___Win32_Debug_Multithreaded" +# PROP BASE Intermediate_Dir "freetype___Win32_Debug_Multithreaded" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\..\objs\debug_mt" +# PROP Intermediate_Dir "..\..\..\objs\debug_mt" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /Za /W3 /Gm /GX /ZI /Od /I "..\include\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /GZ /c +# SUBTRACT BASE CPP /X +# ADD CPP /MTd /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c +# SUBTRACT CPP /nologo /X /YX +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"lib\freetype_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetypeMT_D.lib" + +!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "freetype___Win32_Release_Multithreaded" +# PROP BASE Intermediate_Dir "freetype___Win32_Release_Multithreaded" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\..\..\objs\release_mt" +# PROP Intermediate_Dir "..\..\..\objs\release_mt" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /Za /W3 /GX /O2 /I "..\include\\" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /c +# ADD CPP /MT /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c +# SUBTRACT CPP /nologo /Z /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"lib\freetype.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetypeMT.lib" + +!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "freetype___Win32_Release_Singlethreaded" +# PROP BASE Intermediate_Dir "freetype___Win32_Release_Singlethreaded" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\..\..\objs\release_st" +# PROP Intermediate_Dir "..\..\..\objs\release_st" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /Za /W4 /GX /Zi /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c +# SUBTRACT CPP /nologo /Z /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype.lib" +# ADD LIB32 /out:"..\..\..\objs\freetypeST.lib" +# SUBTRACT LIB32 /nologo + +!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "freetype___Win32_Debug_Singlethreaded" +# PROP BASE Intermediate_Dir "freetype___Win32_Debug_Singlethreaded" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\..\objs\debug_st" +# PROP Intermediate_Dir "..\..\..\objs\debug_st" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /Za /W4 /Gm /GX /Zi /Od /I "..\..\..\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /FD /GZ /c +# SUBTRACT BASE CPP /X /YX +# ADD CPP /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c +# SUBTRACT CPP /nologo /X /YX +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetypeST_D.lib" + +!ENDIF + +# Begin Target + +# Name "freetype - Win32 Release" +# Name "freetype - Win32 Debug" +# Name "freetype - Win32 Debug Multithreaded" +# Name "freetype - Win32 Release Multithreaded" +# Name "freetype - Win32 Release Singlethreaded" +# Name "freetype - Win32 Debug Singlethreaded" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\..\..\src\autofit\autofit.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\bdf\bdf.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\cff\cff.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftbase.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftbbox.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftbdf.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftbitmap.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftcid.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftfstype.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftgasp.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\cache\ftcache.c +# End Source File +# Begin Source File + +SOURCE=..\ftdebug.c +# ADD CPP /Ze +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftglyph.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftgxval.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\gzip\ftgzip.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftinit.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\lzw\ftlzw.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftmm.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftotval.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftpatent.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftpfr.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftstroke.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftsynth.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftsystem.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\fttype1.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\base\ftwinfnt.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\pcf\pcf.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\pfr\pfr.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\psaux\psaux.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\pshinter\pshinter.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\psnames\psmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\raster\raster.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\sfnt\sfnt.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\smooth\smooth.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\truetype\truetype.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\type1\type1.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\cid\type1cid.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\type42\type42.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\winfonts\winfnt.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=..\..\..\include\ft2build.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\freetype\config\ftconfig.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\freetype\config\ftheader.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\freetype\config\ftmodule.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\freetype\config\ftoption.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\freetype\config\ftstdlib.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" +# Begin Source File + +SOURCE=..\..\..\src\base\ftver.rc +# End Source File +# End Group +# End Target +# End Project diff --git a/local/recipes/libs/freetype2/source/builds/windows/visualce/freetype.dsw b/local/recipes/libs/freetype2/source/builds/windows/visualce/freetype.dsw new file mode 100644 index 0000000000..b149e769b5 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/visualce/freetype.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "freetype"=.\freetype.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/local/recipes/libs/freetype2/source/builds/windows/visualce/freetype.vcproj b/local/recipes/libs/freetype2/source/builds/windows/visualce/freetype.vcproj new file mode 100644 index 0000000000..e271462bd8 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/visualce/freetype.vcproj @@ -0,0 +1,3706 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/local/recipes/libs/freetype2/source/builds/windows/visualce/index.html b/local/recipes/libs/freetype2/source/builds/windows/visualce/index.html new file mode 100644 index 0000000000..39c831f12e --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/visualce/index.html @@ -0,0 +1,47 @@ + +
    + + FreeType 2 Project Files for Visual C++ and VS.NET 2005 + (Pocket PC) + + + +

    + FreeType 2 Project Files for Visual C++ and VS.NET 2005 + (Pocket PC) +

    + +

    This directory contains project files for Visual C++, named +freetype.dsp, and Visual Studio, called freetype.sln for +the following targets: + +

      +
    • PPC/SP 2003 (Pocket PC 2003)
    • +
    • PPC/SP WM5 (Windows Mobile 5)
    • +
    • PPC/SP WM6 (Windows Mobile 6)
    • +
    + +It compiles the following libraries from the FreeType 2.14.3 sources:

    + +
      +
      +    freetype.lib     - release build; single threaded
      +    freetype_D.lib   - debug build;   single threaded
      +    freetypeMT.lib   - release build; multi-threaded
      +    freetypeMT_D.lib - debug build;   multi-threaded
      +
    + +

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP +archives are already stored this way, so no further action is required. If +you use some .tar.*z archives, be sure to configure your extracting +tool to convert the line endings. For example, with WinZip, you should activate the TAR +file smart CR/LF Conversion option. Alternatively, you may consider +using the unix2dos or u2d utilities that are floating +around, which specifically deal with this particular problem. + +

    Build directories are placed in the top-level objs +directory.

    + + + diff --git a/local/recipes/libs/freetype2/source/builds/windows/w32-bcc.mk b/local/recipes/libs/freetype2/source/builds/windows/w32-bcc.mk new file mode 100644 index 0000000000..2532479f6e --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/w32-bcc.mk @@ -0,0 +1,28 @@ +# +# FreeType 2 Borland C++ on Win32 +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +# default definitions of the export list +# +EXPORTS_LIST = $(OBJ_DIR)/freetype.def +EXPORTS_OPTIONS = /DEF:$(EXPORTS_LIST) +APINAMES_OPTIONS := -dfreetype.dll -wB + +include $(TOP_DIR)/builds/windows/win32-def.mk +include $(TOP_DIR)/builds/compiler/bcc.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/windows/w32-bccd.mk b/local/recipes/libs/freetype2/source/builds/windows/w32-bccd.mk new file mode 100644 index 0000000000..d637170336 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/w32-bccd.mk @@ -0,0 +1,26 @@ +# +# FreeType 2 Borland C++ on Win32 + debugging +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +DEVEL_DIR := $(TOP_DIR)/devel + +include $(TOP_DIR)/builds/windows/win32-def.mk + +include $(TOP_DIR)/builds/compiler/bcc-dev.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/windows/w32-dev.mk b/local/recipes/libs/freetype2/source/builds/windows/w32-dev.mk new file mode 100644 index 0000000000..905779f68f --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/w32-dev.mk @@ -0,0 +1,32 @@ +# +# FreeType 2 configuration rules for Win32 + GCC +# +# Development version without optimizations. +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# NOTE: This version requires that GNU Make is invoked from the Windows +# Shell (_not_ Cygwin BASH)! +# + +DEVEL_DIR := $(TOP_DIR)/devel + +include $(TOP_DIR)/builds/windows/win32-def.mk + +include $(TOP_DIR)/builds/compiler/gcc-dev.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/windows/w32-gcc.mk b/local/recipes/libs/freetype2/source/builds/windows/w32-gcc.mk new file mode 100644 index 0000000000..32c2051a06 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/w32-gcc.mk @@ -0,0 +1,31 @@ +# +# FreeType 2 configuration rules for Win32 + GCC +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +# default definitions of the export list +# +EXPORTS_LIST = $(OBJ_DIR)/freetype.def +EXPORTS_OPTIONS = $(EXPORTS_LIST) +APINAMES_OPTIONS := -dfreetype.dll -w + +# include Win32-specific definitions +include $(TOP_DIR)/builds/windows/win32-def.mk + +# include gcc-specific definitions +include $(TOP_DIR)/builds/compiler/gcc.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/windows/w32-icc.mk b/local/recipes/libs/freetype2/source/builds/windows/w32-icc.mk new file mode 100644 index 0000000000..fa1c6ccacc --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/w32-icc.mk @@ -0,0 +1,28 @@ +# +# FreeType 2 configuration rules for Win32 + IBM Visual Age C++ +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +# default definitions of the export list +# +EXPORTS_LIST = $(OBJ_DIR)/freetype.def +EXPORTS_OPTIONS = /DEF:$(EXPORTS_LIST) +APINAMES_OPTIONS := -dfreetype.dll -w + +include $(TOP_DIR)/builds/windows/win32-def.mk +include $(TOP_DIR)/builds/compiler/visualage.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/windows/w32-intl.mk b/local/recipes/libs/freetype2/source/builds/windows/w32-intl.mk new file mode 100644 index 0000000000..6d049412be --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/w32-intl.mk @@ -0,0 +1,28 @@ +# +# FreeType 2 configuration rules for Intel C/C++ on Win32 +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +# default definitions of the export list +# +EXPORTS_LIST = $(OBJ_DIR)/freetype.def +EXPORTS_OPTIONS = /DEF:$(EXPORTS_LIST) +APINAMES_OPTIONS := -dfreetype.dll -w + +include $(TOP_DIR)/builds/windows/win32-def.mk +include $(TOP_DIR)/builds/compiler/intelc.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/windows/w32-lcc.mk b/local/recipes/libs/freetype2/source/builds/windows/w32-lcc.mk new file mode 100644 index 0000000000..994612b539 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/w32-lcc.mk @@ -0,0 +1,24 @@ +# +# FreeType 2 configuration rules for Win32 + LCC +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +SEP := / +include $(TOP_DIR)/builds/windows/win32-def.mk +include $(TOP_DIR)/builds/compiler/win-lcc.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + +# EOF + diff --git a/local/recipes/libs/freetype2/source/builds/windows/w32-mingw32.mk b/local/recipes/libs/freetype2/source/builds/windows/w32-mingw32.mk new file mode 100644 index 0000000000..d2d8a9e4e2 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/w32-mingw32.mk @@ -0,0 +1,33 @@ +# +# FreeType 2 configuration rules for mingw32 +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +# default definitions of the export list +# +EXPORTS_LIST = $(OBJ_DIR)/freetype.def +EXPORTS_OPTIONS = $(EXPORTS_LIST) +APINAMES_OPTIONS := -dfreetype.dll -w + +# include Win32-specific definitions +include $(TOP_DIR)/builds/windows/win32-def.mk + +LIBRARY := lib$(PROJECT) + +# include gcc-specific definitions +include $(TOP_DIR)/builds/compiler/gcc.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/windows/w32-vcc.mk b/local/recipes/libs/freetype2/source/builds/windows/w32-vcc.mk new file mode 100644 index 0000000000..bf4b3735f3 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/w32-vcc.mk @@ -0,0 +1,28 @@ +# +# FreeType 2 Visual C++ on Win32 +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +# definitions of the export list +# +EXPORTS_LIST = $(OBJ_DIR)/freetype.def +EXPORTS_OPTIONS = /DEF:$(EXPORTS_LIST) +APINAMES_OPTIONS := -dfreetype.dll -w + +include $(TOP_DIR)/builds/windows/win32-def.mk +include $(TOP_DIR)/builds/compiler/visualc.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/windows/w32-wat.mk b/local/recipes/libs/freetype2/source/builds/windows/w32-wat.mk new file mode 100644 index 0000000000..fe287682f6 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/w32-wat.mk @@ -0,0 +1,28 @@ +# +# FreeType 2 configuration rules for Watcom C/C++ +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +# redefine export symbol definitions +# +EXPORTS_LIST = $(OBJ_DIR)/watcom-ftexports.lbc +EXPORTS_OPTIONS = -\"export @$(EXPORTS_LIST)\"- +APINAMES_OPTIONS := -wW + +include $(TOP_DIR)/builds/windows/win32-def.mk +include $(TOP_DIR)/builds/compiler/watcom.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/windows/win32-def.mk b/local/recipes/libs/freetype2/source/builds/windows/win32-def.mk new file mode 100644 index 0000000000..741422ca78 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/windows/win32-def.mk @@ -0,0 +1,51 @@ +# +# FreeType 2 Win32 specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +DELETE := del +CAT := type +SEP := $(strip \ ) +PLATFORM_DIR := $(TOP_DIR)/builds/windows +PLATFORM := windows + +# This is used for `make refdoc' and `make refdoc-venv' +# +BIN := Scripts + +# The executable file extension (for tools). NOTE: WE INCLUDE THE DOT HERE !! +# +E := .exe +E_BUILD := .exe + + +# The directory where all library files are placed. +# +# By default, this is the same as $(OBJ_DIR); however, this can be changed +# to suit particular needs. +# +LIB_DIR := $(OBJ_DIR) + + +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. +# +LIBRARY := $(PROJECT) + + +# The NO_OUTPUT macro is used to ignore the output of commands. +# +NO_OUTPUT = 2> nul + + +# EOF diff --git a/local/recipes/libs/freetype2/source/configure b/local/recipes/libs/freetype2/source/configure new file mode 100755 index 0000000000..672bd44e4c --- /dev/null +++ b/local/recipes/libs/freetype2/source/configure @@ -0,0 +1,137 @@ +#!/bin/sh +# +# Copyright (C) 2002-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. +# +# +# Call the `configure' script located in `builds/unix'. +# + +rm -f config.mk builds/unix/unix-def.mk builds/unix/unix-cc.mk + +# respect GNUMAKE environment variable for backward compatibility +if test "x$GNUMAKE" = x; then + if test "x$MAKE" = x; then + if test "x`make -v 2>/dev/null | sed -n -e '/GNU/p' -e '/makepp/p'`" = x; then + MAKE=gmake + else + MAKE=make + fi + fi +else + MAKE=$GNUMAKE +fi + +if test "x`$MAKE -v 2>/dev/null | sed -n -e '/GNU/p' -e '/makepp/p'`" = x; then + echo "GNU make (>= 3.81) or makepp (>= 2.0) is required to build FreeType2." >&2 + echo "Please try" >&2 + echo >&2 + echo " MAKE= $0" >&2 + echo >&2 + echo "or" >&2 + echo >&2 + echo " MAKE=\"makepp --norc-substitution\" $0" >&2 + exit 1 +fi + +# Get `dirname' functionality. This is taken and adapted from autoconf's +# m4sh.m4 (_AS_EXPR_PREPARE, AS_DIRNAME_EXPR, and AS_DIRNAME_SED). + +if expr a : '\(a\)' >/dev/null 2>&1; then + ft_expr=expr +else + ft_expr=false +fi + +ft2_dir=`(dirname "$0") 2>/dev/null || + $ft_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || + echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +abs_curr_dir=`pwd` +abs_ft2_dir=`cd "$ft2_dir" && pwd` + +# `--srcdir=' option can override abs_ft2_dir + +if test $# -gt 0; then + for x in "$@"; do + case x"$x" in + x--srcdir=*) + abs_ft2_dir=`echo $x | sed 's/^--srcdir=//'` ;; + esac + done +fi + +# build a dummy Makefile if we are not building in the source tree; +# we use inodes to avoid issues with symbolic links +inode_src=`ls -id $abs_ft2_dir | awk '{print $1}'` +inode_dst=`ls -id $abs_curr_dir | awk '{print $1}'` + +if test $inode_src != $inode_dst; then + if test ! -d docs; then + mkdir docs + echo "Copying documentation assets" + cp -R $abs_ft2_dir/docs/markdown $abs_curr_dir/docs + fi + if test ! -r $abs_curr_dir/modules.cfg; then + echo "Copying \`modules.cfg'" + cp $abs_ft2_dir/modules.cfg $abs_curr_dir + fi + echo "Generating \`Makefile'" + echo "TOP_DIR := $abs_ft2_dir" > Makefile + echo "OBJ_DIR := $abs_curr_dir" >> Makefile + echo "OBJ_BUILD := \$(OBJ_DIR)" >> Makefile + echo "DOC_DIR := \$(OBJ_DIR)/docs" >> Makefile + echo "FT_LIBTOOL_DIR := \$(OBJ_DIR)" >> Makefile + echo "ifndef FT2DEMOS" >> Makefile + echo " include \$(TOP_DIR)/Makefile" >> Makefile + echo "else" >> Makefile + echo " TOP_DIR_2 := \$(TOP_DIR)/../ft2demos" >> Makefile + echo " PROJECT := freetype" >> Makefile + echo " CONFIG_MK := \$(OBJ_DIR)/config.mk" >> Makefile + echo " include \$(TOP_DIR_2)/Makefile" >> Makefile + echo "endif" >> Makefile +fi + +# call make + +CFG= +# work around zsh bug which doesn't like `${1+"$@"}' +case $# in +0) ;; +*) for x in "$@"; do + case x"$x" in + x--srcdir=* ) CFG="$CFG '$x'/builds/unix" ;; + *) CFG="$CFG '$x'" ;; + esac + done ;; +esac +CFG=$CFG $MAKE setup unix + +# eof diff --git a/local/recipes/libs/freetype2/source/devel/ft2build.h b/local/recipes/libs/freetype2/source/devel/ft2build.h new file mode 100644 index 0000000000..e94e6c52b7 --- /dev/null +++ b/local/recipes/libs/freetype2/source/devel/ft2build.h @@ -0,0 +1,41 @@ +/**************************************************************************** + * + * ft2build.h + * + * FreeType 2 build and setup macros (development version). + * + * Copyright (C) 1996-2026 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /* + * This is a development version of to build the library in + * debug mode. Its only difference to the default version is that it + * includes a local `ftoption.h' header file with different settings for + * many configuration macros. + * + * To use it, simply ensure that the directory containing this file is + * scanned by the compiler before the default FreeType header directory. + * + */ + +#ifndef FT2BUILD_H_ +#define FT2BUILD_H_ + +#define FT_CONFIG_MODULES_H +#define FT_CONFIG_OPTIONS_H + +#include + +#endif /* FT2BUILD_H_ */ + + +/* END */ diff --git a/local/recipes/libs/freetype2/source/devel/ftoption.h b/local/recipes/libs/freetype2/source/devel/ftoption.h new file mode 100644 index 0000000000..c409bd458a --- /dev/null +++ b/local/recipes/libs/freetype2/source/devel/ftoption.h @@ -0,0 +1,1061 @@ +/**************************************************************************** + * + * ftoption.h (for development) + * + * User-selectable configuration macros (specification only). + * + * Copyright (C) 1996-2026 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTOPTION_H_ +#define FTOPTION_H_ + + +#include + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * USER-SELECTABLE CONFIGURATION MACROS + * + * This file contains the default configuration macro definitions for a + * standard build of the FreeType library. There are three ways to use + * this file to build project-specific versions of the library: + * + * - You can modify this file by hand, but this is not recommended in + * cases where you would like to build several versions of the library + * from a single source directory. + * + * - You can put a copy of this file in your build directory, more + * precisely in `$BUILD/freetype/config/ftoption.h`, where `$BUILD` is + * the name of a directory that is included _before_ the FreeType include + * path during compilation. + * + * The default FreeType Makefiles use the build directory + * `builds/` by default, but you can easily change that for your + * own projects. + * + * - Copy the file to `$BUILD/ft2build.h` and modify it + * slightly to pre-define the macro `FT_CONFIG_OPTIONS_H` used to locate + * this file during the build. For example, + * + * ``` + * #define FT_CONFIG_OPTIONS_H + * #include + * ``` + * + * will use `$BUILD/myftoptions.h` instead of this file for macro + * definitions. + * + * Note also that you can similarly pre-define the macro + * `FT_CONFIG_MODULES_H` used to locate the file listing of the modules + * that are statically linked to the library at compile time. By + * default, this file is ``. + * + * We highly recommend using the third method whenever possible. + * + */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*#************************************************************************ + * + * If you enable this configuration option, FreeType recognizes an + * environment variable called `FREETYPE_PROPERTIES`, which can be used to + * control the various font drivers and modules. The controllable + * properties are listed in the section @properties. + * + * You have to undefine this configuration option on platforms that lack + * the concept of environment variables (and thus don't have the `getenv` + * function), for example Windows CE. + * + * `FREETYPE_PROPERTIES` has the following syntax form (broken here into + * multiple lines for better readability). + * + * ``` + * + * ':' + * '=' + * + * ':' + * '=' + * ... + * ``` + * + * Example: + * + * ``` + * FREETYPE_PROPERTIES=truetype:interpreter-version=35 \ + * cff:no-stem-darkening=1 + * ``` + * + */ +#define FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES + + + /************************************************************************** + * + * Uncomment the line below if you want to activate LCD rendering + * technology similar to ClearType in this build of the library. This + * technology triples the resolution in the direction color subpixels. To + * mitigate color fringes inherent to this technology, you also need to + * explicitly set up LCD filtering. + * + * When this macro is not defined, FreeType offers alternative LCD + * rendering technology that produces excellent output. + */ +/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ + + + /************************************************************************** + * + * Many compilers provide a non-ANSI 64-bit data type that can be used by + * FreeType to speed up some computations. However, this will create some + * problems when compiling the library in strict ANSI mode. + * + * For this reason, the use of 64-bit integers is normally disabled when + * the `__STDC__` macro is defined. You can however disable this by + * defining the macro `FT_CONFIG_OPTION_FORCE_INT64` here. + * + * For most compilers, this will only create compilation warnings when + * building the library. + * + * ObNote: The compiler-specific 64-bit integers are detected in the + * file `ftconfig.h` either statically or through the `configure` + * script on supported platforms. + */ +#undef FT_CONFIG_OPTION_FORCE_INT64 + + + /************************************************************************** + * + * If this macro is defined, do not try to use an assembler version of + * performance-critical functions (e.g., @FT_MulFix). You should only do + * that to verify that the assembler function works properly, or to execute + * benchmark tests of the various implementations. + */ +/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */ + + + /************************************************************************** + * + * If this macro is defined, try to use an inlined 64-bit or assembler + * version of the @FT_MulFix function, which is a 'hotspot' when loading + * and hinting glyphs, and which should be executed as fast as possible. + * + * If your compiler is not C99-compliant or CPU assembly is not supported, + * you can disable this option. + */ +#define FT_CONFIG_OPTION_INLINE_MULFIX + + + /************************************************************************** + * + * LZW-compressed file support. + * + * FreeType now handles font files that have been compressed with the + * `compress` program. This is mostly used to parse many of the PCF + * files that come with various X11 distributions. The implementation + * uses NetBSD's `zopen` to partially uncompress the file on the fly (see + * `src/lzw/ftgzip.c`). + * + * Define this macro if you want to enable this 'feature'. + */ +#define FT_CONFIG_OPTION_USE_LZW + + + /************************************************************************** + * + * Gzip-compressed file support. + * + * FreeType now handles font files that have been compressed with the + * `gzip` program. This is mostly used to parse many of the PCF files + * that come with XFree86. The implementation uses 'zlib' to partially + * uncompress the file on the fly (see `src/gzip/ftgzip.c`). + * + * Define this macro if you want to enable this 'feature'. See also the + * macro `FT_CONFIG_OPTION_SYSTEM_ZLIB` below. + */ +#define FT_CONFIG_OPTION_USE_ZLIB + + + /************************************************************************** + * + * ZLib library selection + * + * This macro is only used when `FT_CONFIG_OPTION_USE_ZLIB` is defined. + * It allows FreeType's 'ftgzip' component to link to the system's + * installation of the ZLib library. This is useful on systems like + * Unix or VMS where it generally is already available. + * + * If you let it undefined, the component will use its own copy of the + * zlib sources instead. These have been modified to be included + * directly within the component and **not** export external function + * names. This allows you to link any program with FreeType _and_ ZLib + * without linking conflicts. + * + * Do not `#undef` this macro here since the build system might define + * it for certain configurations only. + * + * If you use a build system like cmake or the `configure` script, + * options set by those programs have precedence, overwriting the value + * here with the configured one. + * + * If you use the GNU make build system directly (that is, without the + * `configure` script) and you define this macro, you also have to pass + * `SYSTEM_ZLIB=yes` as an argument to make. + */ +/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ + + + /************************************************************************** + * + * Bzip2-compressed file support. + * + * FreeType now handles font files that have been compressed with the + * `bzip2` program. This is mostly used to parse many of the PCF files + * that come with XFree86. The implementation uses `libbz2` to partially + * uncompress the file on the fly (see `src/bzip2/ftbzip2.c`). Contrary + * to gzip, bzip2 currently is not included and need to use the system + * available bzip2 implementation. + * + * Define this macro if you want to enable this 'feature'. + * + * If you use a build system like cmake or the `configure` script, + * options set by those programs have precedence, overwriting the value + * here with the configured one. + */ +#define FT_CONFIG_OPTION_USE_BZIP2 + + + /************************************************************************** + * + * Define to disable the use of file stream functions and types, `FILE`, + * `fopen`, etc. Enables the use of smaller system libraries on embedded + * systems that have multiple system libraries, some with or without file + * stream support, in the cases where file stream support is not necessary + * such as memory loading of font files. + */ +/* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */ + + + /************************************************************************** + * + * PNG bitmap support. + * + * FreeType now handles loading color bitmap glyphs in the PNG format. + * This requires help from the external libpng library. Uncompressed + * color bitmaps do not need any external libraries and will be supported + * regardless of this configuration. + * + * Define this macro if you want to enable this 'feature'. + * + * If you use a build system like cmake or the `configure` script, + * options set by those programs have precedence, overwriting the value + * here with the configured one. + */ +#define FT_CONFIG_OPTION_USE_PNG + + + /************************************************************************** + * + * HarfBuzz support. + * + * FreeType uses the HarfBuzz library to improve auto-hinting of OpenType + * fonts. If available, many glyphs not directly addressable by a font's + * character map will be hinted also. + * + * Define this macro if you want to enable this 'feature'. + * + * If you use a build system like cmake or the `configure` script, + * options set by those programs have precedence, overwriting the value + * here with the configured one. + */ +#define FT_CONFIG_OPTION_USE_HARFBUZZ + + + /************************************************************************** + * + * HarfBuzz dynamic support. + * + * Define this macro if you want the HarfBuzz library to be loaded at + * runtime instead of being linked to FreeType. + * + * This option has no effect if `FT_CONFIG_OPTION_USE_HARFBUZZ` is not + * defined. + * + * When this option is enabled, FreeType will try to load the HarfBuzz + * library at runtime, using `dlopen` or `LoadLibrary`, depending on the + * platform. On Microsoft platforms, the library name looked up is + * `libharfbuzz-0.dll`. On Apple platforms, the library name looked up + * is `libharfbuzz.0.dylib`. On all other platforms, the library name + * looked up is `libharfbuzz.so.0`. This name can be overridden by + * defining the macro `FT_LIBHARFBUZZ` at FreeType compilation time. + * + * If you use a build system like cmake or the `configure` script, + * options set by those programs have precedence, overwriting the value + * here with the configured one. + */ +#define FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC + + + /************************************************************************** + * + * Brotli support. + * + * FreeType uses the Brotli library to provide support for decompressing + * WOFF2 streams. + * + * Define this macro if you want to enable this 'feature'. + * + * If you use a build system like cmake or the `configure` script, + * options set by those programs have precedence, overwriting the value + * here with the configured one. + */ +#define FT_CONFIG_OPTION_USE_BROTLI + + + /************************************************************************** + * + * Glyph Postscript Names handling + * + * By default, FreeType 2 is compiled with the 'psnames' module. This + * module is in charge of converting a glyph name string into a Unicode + * value, or return a Macintosh standard glyph name for the use with the + * TrueType 'post' table. + * + * Undefine this macro if you do not want 'psnames' compiled in your + * build of FreeType. This has the following effects: + * + * - The TrueType driver will provide its own set of glyph names, if you + * build it to support postscript names in the TrueType 'post' table, + * but will not synthesize a missing Unicode charmap. + * + * - The Type~1 driver will not be able to synthesize a Unicode charmap + * out of the glyphs found in the fonts. + * + * You would normally undefine this configuration macro when building a + * version of FreeType that doesn't contain a Type~1 or CFF driver. + */ +#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /************************************************************************** + * + * Postscript Names to Unicode Values support + * + * By default, FreeType~2 is built with the 'psnames' module compiled in. + * Among other things, the module is used to convert a glyph name into a + * Unicode value. This is especially useful in order to synthesize on + * the fly a Unicode charmap from the CFF/Type~1 driver through a big + * table named the 'Adobe Glyph List' (AGL). + * + * Undefine this macro if you do not want the Adobe Glyph List compiled + * in your 'psnames' module. The Type~1 driver will not be able to + * synthesize a Unicode charmap out of the glyphs found in the fonts. + */ +#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST + + + /************************************************************************** + * + * Support for Mac fonts + * + * Define this macro if you want support for outline fonts in Mac format + * (mac dfont, mac resource, macbinary containing a mac resource) on + * non-Mac platforms. + * + * Note that the 'FOND' resource isn't checked. + */ +#define FT_CONFIG_OPTION_MAC_FONTS + + + /************************************************************************** + * + * Guessing methods to access embedded resource forks + * + * Enable extra Mac fonts support on non-Mac platforms (e.g., GNU/Linux). + * + * Resource forks which include fonts data are stored sometimes in + * locations which users or developers don't expected. In some cases, + * resource forks start with some offset from the head of a file. In + * other cases, the actual resource fork is stored in file different from + * what the user specifies. If this option is activated, FreeType tries + * to guess whether such offsets or different file names must be used. + * + * Note that normal, direct access of resource forks is controlled via + * the `FT_CONFIG_OPTION_MAC_FONTS` option. + */ +#ifdef FT_CONFIG_OPTION_MAC_FONTS +#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK +#endif + + + /************************************************************************** + * + * Allow the use of `FT_Incremental_Interface` to load typefaces that + * contain no glyph data, but supply it via a callback function. This is + * required by clients supporting document formats which supply font data + * incrementally as the document is parsed, such as the Ghostscript + * interpreter for the PostScript language. + */ +#define FT_CONFIG_OPTION_INCREMENTAL + + + /************************************************************************** + * + * The size in bytes of the render pool used by the scan-line converter to + * do all of its work. + */ +#define FT_RENDER_POOL_SIZE 16384L + + + /************************************************************************** + * + * FT_MAX_MODULES + * + * The maximum number of modules that can be registered in a single + * FreeType library object. 32~is the default. + */ +#define FT_MAX_MODULES 32 + + + /************************************************************************** + * + * Debug level + * + * FreeType can be compiled in debug or trace mode. In debug mode, + * errors are reported through the 'ftdebug' component. In trace mode, + * additional messages are sent to the standard output during execution. + * + * Define `FT_DEBUG_LEVEL_ERROR` to build the library in debug mode. + * Define `FT_DEBUG_LEVEL_TRACE` to build it in trace mode. + * + * Don't define any of these macros to compile in 'release' mode! + * + * Do not `#undef` these macros here since the build system might define + * them for certain configurations only. + */ +#define FT_DEBUG_LEVEL_ERROR +#define FT_DEBUG_LEVEL_TRACE + + + /************************************************************************** + * + * Logging + * + * Compiling FreeType in debug or trace mode makes FreeType write error + * and trace log messages to `stderr`. Enabling this macro + * automatically forces the `FT_DEBUG_LEVEL_ERROR` and + * `FT_DEBUG_LEVEL_TRACE` macros and allows FreeType to write error and + * trace log messages to a file instead of `stderr`. For writing logs + * to a file, FreeType uses an the external `dlg` library (the source + * code is in `src/dlg`). + * + * This option needs a C99 compiler. + */ +#define FT_DEBUG_LOGGING + + + /************************************************************************** + * + * Autofitter debugging + * + * If `FT_DEBUG_AUTOFIT` is defined, FreeType provides some means to + * control the autofitter behaviour for debugging purposes with global + * boolean variables (consequently, you should **never** enable this + * while compiling in 'release' mode): + * + * ``` + * af_debug_disable_horz_hints_ + * af_debug_disable_vert_hints_ + * af_debug_disable_blue_hints_ + * ``` + * + * Additionally, the following functions provide dumps of various + * internal autofit structures to stdout (using `printf`): + * + * ``` + * af_glyph_hints_dump_points + * af_glyph_hints_dump_segments + * af_glyph_hints_dump_edges + * af_glyph_hints_get_num_segments + * af_glyph_hints_get_segment_offset + * ``` + * + * As an argument, they use another global variable: + * + * ``` + * af_debug_hints_ + * ``` + * + * Please have a look at the `ftgrid` demo program to see how those + * variables and macros should be used. + * + * Do not `#undef` these macros here since the build system might define + * them for certain configurations only. + */ +#define FT_DEBUG_AUTOFIT + + + /************************************************************************** + * + * Memory Debugging + * + * FreeType now comes with an integrated memory debugger that is capable + * of detecting simple errors like memory leaks or double deletes. To + * compile it within your build of the library, you should define + * `FT_DEBUG_MEMORY` here. + * + * Note that the memory debugger is only activated at runtime when when + * the _environment_ variable `FT2_DEBUG_MEMORY` is defined also! + * + * Do not `#undef` this macro here since the build system might define it + * for certain configurations only. + */ +#define FT_DEBUG_MEMORY + + + /************************************************************************** + * + * Module errors + * + * If this macro is set (which is _not_ the default), the higher byte of + * an error code gives the module in which the error has occurred, while + * the lower byte is the real error code. + * + * Setting this macro makes sense for debugging purposes only, since it + * would break source compatibility of certain programs that use + * FreeType~2. + * + * More details can be found in the files `ftmoderr.h` and `fterrors.h`. + */ +#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS + + + /************************************************************************** + * + * OpenType SVG Glyph Support + * + * Setting this macro enables support for OpenType SVG glyphs. By + * default, FreeType can only fetch SVG documents. However, it can also + * render them if external rendering hook functions are plugged in at + * runtime. + * + * More details on the hooks can be found in file `otsvg.h`. + */ +#define FT_CONFIG_OPTION_SVG + + + /************************************************************************** + * + * Error Strings + * + * If this macro is set, `FT_Error_String` will return meaningful + * descriptions. This is not enabled by default to reduce the overall + * size of FreeType. + * + * More details can be found in the file `fterrors.h`. + */ +/* #define FT_CONFIG_OPTION_ERROR_STRINGS */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_EMBEDDED_BITMAPS` if you want to support + * embedded bitmaps in all formats using the 'sfnt' module (namely + * TrueType~& OpenType). + */ +#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_COLOR_LAYERS` if you want to support colored + * outlines (from the 'COLR'/'CPAL' tables) in all formats using the 'sfnt' + * module (namely TrueType~& OpenType). + */ +#define TT_CONFIG_OPTION_COLOR_LAYERS + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_POSTSCRIPT_NAMES` if you want to be able to + * load and enumerate Postscript names of glyphs in a TrueType or OpenType + * file. + * + * Note that if you do not compile the 'psnames' module by undefining the + * above `FT_CONFIG_OPTION_POSTSCRIPT_NAMES` macro, the 'sfnt' module will + * contain additional code to read the PostScript name table from a font. + * + * (By default, the module uses 'psnames' to extract glyph names.) + */ +#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_SFNT_NAMES` if your applications need to access + * the internal name table in a SFNT-based format like TrueType or + * OpenType. The name table contains various strings used to describe the + * font, like family name, copyright, version, etc. It does not contain + * any glyph name though. + * + * Accessing SFNT names is done through the functions declared in + * `ftsnames.h`. + */ +#define TT_CONFIG_OPTION_SFNT_NAMES + + + /************************************************************************** + * + * TrueType CMap support + * + * Here you can fine-tune which TrueType CMap table format shall be + * supported. + */ +#define TT_CONFIG_CMAP_FORMAT_0 +#define TT_CONFIG_CMAP_FORMAT_2 +#define TT_CONFIG_CMAP_FORMAT_4 +#define TT_CONFIG_CMAP_FORMAT_6 +#define TT_CONFIG_CMAP_FORMAT_8 +#define TT_CONFIG_CMAP_FORMAT_10 +#define TT_CONFIG_CMAP_FORMAT_12 +#define TT_CONFIG_CMAP_FORMAT_13 +#define TT_CONFIG_CMAP_FORMAT_14 + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_BYTECODE_INTERPRETER` if you want to compile a + * bytecode interpreter in the TrueType driver. + * + * By undefining this, you will only compile the code necessary to load + * TrueType glyphs without hinting. + * + * Do not `#undef` this macro here, since the build system might define it + * for certain configurations only. + */ +#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_SUBPIXEL_HINTING` if you want to compile + * subpixel hinting support into the TrueType driver. This modifies the + * TrueType hinting mechanism when anything but `FT_RENDER_MODE_MONO` is + * requested. + * + * In particular, it modifies the bytecode interpreter to interpret (or + * not) instructions in a certain way so that all TrueType fonts look like + * they do in a Windows ClearType (DirectWrite) environment. See [1] for a + * technical overview on what this means. See `ttinterp.h` for more + * details on this option. + * + * The new default mode focuses on applying a minimal set of rules to all + * fonts indiscriminately so that modern and web fonts render well while + * legacy fonts render okay. The corresponding interpreter version is v40. + * The so-called Infinality mode (v38) is no longer available in FreeType. + * + * By undefining these, you get rendering behavior like on Windows without + * ClearType, i.e., Windows XP without ClearType enabled and Win9x + * (interpreter version v35). Or not, depending on how much hinting blood + * and testing tears the font designer put into a given font. If you + * define one or both subpixel hinting options, you can switch between + * between v35 and the ones you define (using `FT_Property_Set`). + * + * This option requires `TT_CONFIG_OPTION_BYTECODE_INTERPRETER` to be + * defined. + * + * [1] + * https://learn.microsoft.com/typography/cleartype/truetypecleartype + */ +#define TT_CONFIG_OPTION_SUBPIXEL_HINTING + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED` to compile the + * TrueType glyph loader to use Apple's definition of how to handle + * component offsets in composite glyphs. + * + * Apple and MS disagree on the default behavior of component offsets in + * composites. Apple says that they should be scaled by the scaling + * factors in the transformation matrix (roughly, it's more complex) while + * MS says they should not. OpenType defines two bits in the composite + * flags array which can be used to disambiguate, but old fonts will not + * have them. + * + * https://learn.microsoft.com/typography/opentype/spec/glyf + * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html + */ +#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_GX_VAR_SUPPORT` if you want to include support + * for Apple's distortable font technology ('fvar', 'gvar', 'cvar', and + * 'avar' tables). Tagged 'Font Variations', this is now part of OpenType + * also. This has many similarities to Type~1 Multiple Masters support. + */ +#define TT_CONFIG_OPTION_GX_VAR_SUPPORT + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_NO_BORING_EXPANSION` if you want to exclude + * support for 'boring' OpenType specification expansions. + * + * https://github.com/harfbuzz/boring-expansion-spec + * + * Right now, the following features are covered: + * + * - 'avar' version 2.0 + * + * Most likely, this is a temporary configuration option to be removed in + * the near future, since it is assumed that eventually those features are + * added to the OpenType standard. + */ +/* #define TT_CONFIG_OPTION_NO_BORING_EXPANSION */ + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_BDF` if you want to include support for an + * embedded 'BDF~' table within an SFNT-based `.otb` font file. This table + * is an extension used by X11 to preserve BDF properties after conversion + * to SFNT containers. See + * + * https://fontforge.org/docs/techref/non-standard.html#non-standard-bdf + * + * for more details. + */ +#define TT_CONFIG_OPTION_BDF + + + /************************************************************************** + * + * Option `TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES` controls the maximum + * number of bytecode instructions executed for a single run of the + * bytecode interpreter, needed to prevent infinite loops. You don't want + * to change this except for very special situations (e.g., making a + * library fuzzer spend less time to handle broken fonts). + * + * It is not expected that this value is ever modified by a configuring + * script; instead, it gets surrounded with `#ifndef ... #endif` so that + * the value can be set as a preprocessor option on the compiler's command + * line. + */ +#ifndef TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES +#define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES 1000000L +#endif + + + /************************************************************************** + * + * Option `TT_CONFIG_OPTION_GPOS_KERNING` enables a basic GPOS kerning + * implementation (for TrueType and OpenType fonts only). With this + * defined, FreeType is able to get kerning pair data from the GPOS 'kern' + * feature as well as legacy 'kern' tables; without this defined, FreeType + * will only be able to use legacy 'kern' tables. + * + * Note that FreeType does not support more advanced GPOS layout features; + * even the 'kern' feature implemented here doesn't handle more + * sophisticated kerning variants. Use a higher-level library like + * HarfBuzz instead for that. + */ +#define TT_CONFIG_OPTION_GPOS_KERNING + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * `T1_MAX_DICT_DEPTH` is the maximum depth of nest dictionaries and arrays + * in the Type~1 stream (see `t1load.c`). A minimum of~4 is required. + */ +#define T1_MAX_DICT_DEPTH 5 + + + /************************************************************************** + * + * `T1_MAX_SUBRS_CALLS` details the maximum number of nested sub-routine + * calls during glyph loading. + */ +#define T1_MAX_SUBRS_CALLS 16 + + + /************************************************************************** + * + * `T1_MAX_CHARSTRING_OPERANDS` is the charstring stack's capacity. A + * minimum of~16 is required. + * + * The Chinese font 'MingTiEG-Medium' (covering the CNS 11643 character + * set) needs 256. + */ +#define T1_MAX_CHARSTRINGS_OPERANDS 256 + + + /************************************************************************** + * + * Define this configuration macro if you want to prevent the compilation + * of the 't1afm' module, which is in charge of reading Type~1 AFM files + * into an existing face. Note that if set, the Type~1 driver will be + * unable to produce kerning distances. + */ +#undef T1_CONFIG_OPTION_NO_AFM + + + /************************************************************************** + * + * Define this configuration macro if you want to prevent the compilation + * of the Multiple Masters font support in the Type~1 driver. + */ +#undef T1_CONFIG_OPTION_NO_MM_SUPPORT + + + /************************************************************************** + * + * `T1_CONFIG_OPTION_OLD_ENGINE` controls whether the pre-Adobe Type~1 + * engine gets compiled into FreeType. If defined, it is possible to + * switch between the two engines using the `hinting-engine` property of + * the 'type1' driver module. + */ +#define T1_CONFIG_OPTION_OLD_ENGINE + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** C F F D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * Using `CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4}` it is + * possible to set up the default values of the four control points that + * define the stem darkening behaviour of the (new) CFF engine. For more + * details please read the documentation of the `darkening-parameters` + * property (file `ftdriver.h`), which allows the control at run-time. + * + * Do **not** undefine these macros! + */ +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 500 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 400 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 1000 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 1667 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 2333 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 0 + + + /************************************************************************** + * + * `CFF_CONFIG_OPTION_OLD_ENGINE` controls whether the pre-Adobe CFF engine + * gets compiled into FreeType. If defined, it is possible to switch + * between the two engines using the `hinting-engine` property of the 'cff' + * driver module. + */ +#define CFF_CONFIG_OPTION_OLD_ENGINE + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** P C F D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * There are many PCF fonts just called 'Fixed' which look completely + * different, and which have nothing to do with each other. When selecting + * 'Fixed' in KDE or Gnome one gets results that appear rather random, the + * style changes often if one changes the size and one cannot select some + * fonts at all. This option makes the 'pcf' module prepend the foundry + * name (plus a space) to the family name. + * + * We also check whether we have 'wide' characters; all put together, we + * get family names like 'Sony Fixed' or 'Misc Fixed Wide'. + * + * If this option is activated, it can be controlled with the + * `no-long-family-names` property of the 'pcf' driver module. + */ +#define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * Compile 'autofit' module with CJK (Chinese, Japanese, Korean) script + * support. + */ +#define AF_CONFIG_OPTION_CJK + + + /************************************************************************** + * + * Compile 'autofit' module with fallback Indic script support, covering + * some scripts that the 'latin' submodule of the 'autofit' module doesn't + * (yet) handle. Currently, this needs option `AF_CONFIG_OPTION_CJK`. + */ +#ifdef AF_CONFIG_OPTION_CJK +#define AF_CONFIG_OPTION_INDIC +#endif + + + /************************************************************************** + * + * Use TrueType-like size metrics for 'light' auto-hinting. + * + * It is strongly recommended to avoid this option, which exists only to + * help some legacy applications retain its appearance and behaviour with + * respect to auto-hinted TrueType fonts. + * + * The very reason this option exists at all are GNU/Linux distributions + * like Fedora that did not un-patch the following change (which was + * present in FreeType between versions 2.4.6 and 2.7.1, inclusive). + * + * ``` + * 2011-07-16 Steven Chu + * + * [truetype] Fix metrics on size request for scalable fonts. + * ``` + * + * This problematic commit is now reverted (more or less). + */ +/* #define AF_CONFIG_OPTION_TT_SIZE_METRICS */ + + /* */ + + + /* + * This macro is obsolete. Support has been removed in FreeType version + * 2.5. + */ +/* #define FT_CONFIG_OPTION_OLD_INTERNALS */ + + + /* + * The next two macros are defined if native TrueType hinting is + * requested by the definitions above. Don't change this. + */ +#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER +#define TT_USE_BYTECODE_INTERPRETER +#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#define TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL +#endif +#endif + + + /* + * The TT_SUPPORT_COLRV1 macro is defined to indicate to clients that this + * version of FreeType has support for 'COLR' v1 API. This definition is + * useful to FreeType clients that want to build in support for 'COLR' v1 + * depending on a tip-of-tree checkout before it is officially released in + * FreeType, and while the feature cannot yet be tested against using + * version macros. Don't change this macro. This may be removed once the + * feature is in a FreeType release version and version macros can be used + * to test for availability. + */ +#ifdef TT_CONFIG_OPTION_COLOR_LAYERS +#define TT_SUPPORT_COLRV1 +#endif + + + /* + * Check CFF darkening parameters. The checks are the same as in function + * `cff_property_set` in file `cffdrivr.c`. + */ +#if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 > 500 +#error "Invalid CFF darkening parameters!" +#endif + + +FT_END_HEADER + +#endif /* FTOPTION_H_ */ + + +/* END */ diff --git a/local/recipes/libs/freetype2/source/docs/CHANGES b/local/recipes/libs/freetype2/source/docs/CHANGES new file mode 100644 index 0000000000..0fa1e7a445 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/CHANGES @@ -0,0 +1,5902 @@ +CHANGES BETWEEN 2.14.2 and 2.14.3 (2026-Mar-22) + + I. IMPORTANT BUG FIXES + + - A bunch of potential security problems have been found. All users + should update. + + + II. MISCELLANEOUS + + - If configuration option `TT_CONFIG_OPTION_GPOS_KERNING` is active, + GPOS-based kerning could miss some value pairs (bug introduced in + version 2.14.0). + + +====================================================================== + +CHANGES BETWEEN 2.14.1 and 2.14.2 (2026-Mar-01) + + I. IMPORTANT CHANGES + + - Several changes related to LCD filtering are implemented to + achieve better performance and encourage sound practices. + + . Instead of blanket LCD filtering over the entire bitmap, it is + now applied only to non-zero spans using direct rendering. This + speeds up the ClearType-like rendering by more than 40% at sizes + above 32 ppem. + + . Setting the filter weights with FT_Face_Properties is no longer + supported. The default and light filters are optimized to work + with any face. + + . The legacy libXft LCD filter algorithm is no longer provided. + + + II. IMPORTANT BUG FIXES + + - A bunch of potential security problems have been found. All users + should update. + + - The italic angle in `PS_FontInfo` is now stored as a fixed-point + value in degrees for all Type 1 fonts and their derivatives, + consistent with CFF fonts and common practices. The broken + underline position and thickness values are fixed for CFF fonts. + + + III. MISCELLANEOUS + + - The `x` field in the `FT_Span` structure is now unsigned. + + - Demo program `ftgrid` got an option `-m` to select a start + character to display. + + - Similarly, demo program `ftmulti` got an option `-m` to select a + text string for rendering. + + - Option `-d` in the demo program `ttdebug` is now called `-a`, + expecting a comma-separated list of axis values. The user + interface is also slightly improved. + + - The `ftinspect` demo program can now be compiled with Qt6, too. + + +====================================================================== + +CHANGES BETWEEN 2.14.0 and 2.14.1 (2025-Sep-11) + + I. IMPORTANT BUG FIXES + + - This is an emergency release that fixes a couple of severe bugs + introduced in version 2.14.0 and discovered right after the + release; see issues #1349, #1353, #1354, #1355, and #1356 in our + bug tracker at + + https://gitlab.freedesktop.org/freetype/freetype/-/issues + + +====================================================================== + +CHANGES BETWEEN 2.13.3 and 2.14.0 (2025-Sep-06) + + I. IMPORTANT CHANGES + + - A new configuration macro `FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC` + is available to load the HarfBuzz library dynamically (in addition + to the standard static and dynamic linking modes); cmake, meson, + and autotools support have been updated accordingly. Using this + new feature makes it possible to avoid the circular dependency + between HarfBuzz and FreeType. + + A side effect of this change is that FreeType no longer uses + HarfBuzz header files (if HarfBuzz support is activated). + + This code was contributed by Behdad Esfahbod. + + - The auto-hinter got new abilities. + + . It can now better separate diacritic glyphs from base glyphs at + small sizes by artificially moving diacritics up (or down) if + necessary. + + . Tilde accent glyphs get vertically stretched at small sizes so + that they don't degenerate to horizontal lines. + + . Diacritics directly attached to a base glyph (like the ogonek in + character 'Ä™') no longer distort the shape of the base glyph. + + These features use a database (which currently has entries for + Unicode characters up to U+FFFF, based on Unicode 17.0), handling + scripts like Latin, Cyrillic, or Greek, but not Arabic or Indic + scripts. FreeType needs to access a proper Unicode character map + (or must be able to construct such a cmap) of a given font to make + this work. + + The central algorithm and the foundation of this feature was Craig + White's GSoC 2023 project. + + - Bitmap-only TrueType fonts now ignore the `FT_LOAD_NO_BITMAP` flag + and proceed loading bitmaps instead of giving an error. This + behavior is documented and implemented for other bitmap-only + fonts. The flag was always meant to suppress the bitmap strikes + in favor of outlines, not to ban them completely. + + + II. IMPORTANT BUG FIXES + + - Users of the `TT_CONFIG_OPTION_GPOS_KERNING` configuration option + should update; the 'GPOS' table wasn't correctly validated before + access, which could lead to crashes with malformed font files. + + + III. MISCELLANEOUS + + - `FT_Set_Var_Design_Coordinates` and `FT_Set_MM_Blend_Coordinates` + now set the `FT_FACE_FLAG_VARIATION` bit in the `face_flag` field + of `FT_Face` (i.e., the macro `FT_IS_VARIATION` returns true) also + if any of the provided coordinates is different from the face's + default value for the corresponding axis, that is, the set up face + is not at its default position. + + - `FT_Load_Sfnt_Table` can now also load a font's table directory. + + - The TrueType instruction interpreter was optimized to produce a + 15% gain in the glyph loading speed. + + - Handling of Variation Fonts is now considerably faster, thanks to + contributions by Behdad Esfahbod. + + - TrueType and CFF glyph loading speed has been improved by 5-10% on + modern 64-bit platforms as a result of better handling of fixed- + point multiplication. + + - The BDF driver now loads fonts 75% faster. + + - 'GPOS' kern table handling (if the `TT_CONFIG_OPTION_GPOS_KERNING` + configuration option is active) is now about 3.5 times faster than + before. + + - Support for the (currently undocumented) 'flip' graphic type in + the 'sbix' SFNT table as used in the `Apple Color Emoji.ttc` font + (code provided by Andrew Murray). + + - `ftmulti` can now scroll through named instances and gracefully + show static fonts. + + - The build file on OpenVMS now also creates a 32-bit version of the + library. + + +====================================================================== + +CHANGES BETWEEN 2.13.2 and 2.13.3 (2024-Aug-11) + + I. IMPORTANT CHANGES + + - Some fields in the `FT_Outline` structure have been changed + from signed to unsigned type, which better reflects the actual + usage. It is also an additional means to protect against + malformed input. + + + II. IMPORTANT BUG FIXES + + - Rare double-free crashes in the cache subsystem have been fixed. + + - Excessive stack allocation in the autohinter has been fixed. + + + III. MISCELLANEOUS + + - The B/W rasterizer has received a major upkeep that results in + large performance improvements. The rendering speed has increased + and even doubled for very complex glyphs. + + - If the new configuration option `TT_CONFIG_OPTION_GPOS_KERNING` is + defined, `FT_Get_Kerning` understands rudimentary GPOS kerning + (for TrueType fonts only). This is not enabled by default since + its usage is very limited, mainly for legacy applications that + have to support TrueType fonts automatically converted from 'kern' + tables to GPOS kerning. If you need proper (GPOS) kerning support + please use a higher-level library like HarfBuzz. + + Code contributed by David Saltzman . + + - The internal structures `PS_DesignMap` and `PS_Blend` related to + parsing of old Multiple Masters fonts have been removed from the + public header file `t1tables.h`. + + +====================================================================== + +CHANGES BETWEEN 2.13.1 and 2.13.2 (2023-Aug-25) + + I. MISCELLANEOUS + + - Better support for CFF2 variation fonts. + + - TrueType interpreter version 38 (also known as 'Infinality') has + been removed. + + - Improved OpenVMS support. + + +====================================================================== + +CHANGES BETWEEN 2.13.0 and 2.13.1 (2023-Jun-24) + + I. MISCELLANEOUS + + - New function `FT_Get_Default_Named_Instance` to get the index of + the default named instance of an OpenType Variation Font. + + - A new load flag `FT_LOAD_NO_SVG` to make FreeType ignore glyphs in + an 'SVG ' table. + + - New function `FT_GlyphSlot_AdjustWeight` to adjust the glyph + weight either horizontally or vertically. This is part of the + `ftsynth.h` header file, which is still considered to be in alpha + stage. + + - TrueType interpreter version 38 (also known as 'Infinality') has + been deactivated; the value of `TT_INTERPRETER_VERSION_38` is now + the same as `TT_INTERPRETER_VERSION_40`. + + - Updated OpenVMS support. + + - The base API documentation has been modularized for easier + handling. + + - Switching named instances on and off in Variation Fonts was buggy + if the design coordinates didn't change. + + - `ftbench` has a new command-line option `-a` to apply design + coordinates. + + - `ftview` can now flip SVG rendering on and off using the 'Z' key. + + - In `ftmulti` it is now possible to toggle the fill rule and + overlap flag used for rendering glyphs using the 'F3' and 'F4' + keys, respectively. Toggling the anti-aliased mode has been + changed to the 'TAB' key. + + +====================================================================== + +CHANGES BETWEEN 2.12.1 and 2.13.0 (2023-Feb-09) + + I. IMPORTANT CHANGES + + - The demo program `ftinspect` has been completely updated and much + enhanced. It now combines the functionality of almost all other + graphical FreeType demo programs into a single application based + on the Qt framework. This was Charlie Jiang's GSoC 2022 project. + + - The 'COLR' v1 API is now considered as stable. + + https://learn.microsoft.com/typography/opentype/spec/colr + + + II. MISCELLANEOUS + + - For OpenType Variable Fonts, `avar` table format 2.0 is now + supported. The code was contributed by Behdad Esfahbod. + + Note that this is an extension supported on recent Apple platforms + and by HarfBuzz, but not yet in the OpenType standard! See + + https://github.com/harfbuzz/boring-expansion-spec/blob/main/avar2.md + + for the specification. To deactivate it, define the configuration + macro 'TT_CONFIG_OPTION_NO_BORING_EXPANSION'. + + - A new API `FT_GlyphSlot_Slant` to slant a glyph by a given angle + has been added. Note that this function is part of `ftsynth.h`, + which is still considered to be in alpha stage. + + - TrueType interpreter version 38 (also known as 'Infinality') that + was first introduced about 10 years ago in FreeType 2.4.11 is now + deprecated and slated to be removed in the next version. TrueType + interpreter version 40 has been FreeType's default version for six + years now and provides an excellent alternative. This is the last + FreeType version with TT_INTERPRETER_VERSION_38 and + TT_INTERPRETER_VERSION_40 treated differently. + + - The only referenced but never documented configuration macro + `FT_CONFIG_OPTION_NO_GLYPH_NAMES` has been removed. + + - The `ftbench` demo program got a new command line option `-e` to + set a charmap index. + + - Specifying a point size is now optional for the demo programs + `ftgrid`, `ftmulti`, `ftstring`, and `ftview`. If not given, a + default size is used. + + - For `ftgrid`, `ftstring`, and `ftview`, option `-e` now also + accepts a numeric value to set a charmap index. + + - In `ftstring`, it is now possible to set the displayed text + interactively by pressing the 'Enter' key. + + - `ftmulti` can now handle up to 16 design axes. + + - To avoid reserved identifiers that are globally defined, the + auto-hinter debugging macros (which are only available if + `FT_DEBUG_AUTOFIT` is defined) + + ``` + _af_debug_disable_horz_hints + _af_debug_disable_vert_hints + _af_debug_disable_blue_hints + _af_debug_hints + ``` + + have been renamed to + + ``` + af_debug_disable_horz_hints_ + af_debug_disable_vert_hints_ + af_debug_disable_blue_hints_ + af_debug_hints_ + ``` + + - The internal zlib library was updated to version 1.2.13. Note, + however, that FreeType is *not* affected by CVE-2022-37434 since + it doesn't use the `inflateGetHeader` function. + + +====================================================================== + +CHANGES BETWEEN 2.12.0 and 2.12.1 (2022-May-01) + + I. IMPORTANT BUG FIXES + + - Loading CFF fonts sometimes made FreeType crash (bug introduced in + version 2.12.0) + + - Loading a fully hinted TrueType glyph a second time (without + caching) sometimes yielded different rendering results if TrueType + hinting was active (bug introduced in version 2.12.0). + + - The generation of the pkg-config file `freetype2.pc` was broken if + the build was done with cmake (bug introduced in version 2.12.0). + + + II. MISCELLANEOUS + + - New option `--with-librsvg` for the `configure` script for better + FreeType demo support. + + - The meson build no longer enforces both static and dynamic + versions of the library by default. + + - The internal zlib library was updated to version 1.2.12. Note, + however, that FreeType is *not* affected by CVE-2018-25032 since + it only does decompression. + + +====================================================================== + +CHANGES BETWEEN 2.11.1 and 2.12.0 (2022-Mar-30) + + I. IMPORTANT CHANGES + + - FreeType now handles OT-SVG fonts, to be controlled with + `FT_CONFIG_OPTION_SVG` configuration macro. By default, it can + only load the 'SVG ' table of an OpenType font. However, by using + the `svg-hooks` property of the new 'ot-svg' module it is possible + to register an external SVG rendering engine. The FreeType demo + programs have been set up to use 'librsvg' as the rendering + library. + + This work was Moazin Khatti's GSoC 2019 project. + + + II. MISCELLANEOUS + + - The handling of fonts with an 'sbix' table has been improved. + + - Corrected bitmap offsets. + + - A new tag `FT_PARAM_TAG_IGNORE_SBIX` for `FT_Open_Face` makes + FreeType ignore an 'sbix' table in a font, allowing applications + to access the font's outline glyphs. + + - `FT_FACE_FLAG_SBIX` and `FT_FACE_FLAG_SBIX_OVERLAY` together + with their corresponding preprocessor macros `FT_HAS_SBIX` and + `FT_HAS_SBIX_OVERLAY` enable applications to treat 'sbix' tables + as described in the OpenType specification. + + - The internal 'zlib' code has been updated to be in sync with the + current 'zlib' version (1.2.11). + + - The previously internal load flag `FT_LOAD_SBITS_ONLY` is now + public. + + - Some minor improvements of the building systems, in particular + handling of the 'zlib' library (internal vs. external). + + - Support for non-desktop Universal Windows Platform. + + - Various other minor bug and documentation fixes. + + - The `ftdump` demo program shows more information for Type1 fonts + if option `-n` is given. + + - `ftgrid` can now display embedded bitmap strikes. + + +====================================================================== + +CHANGES BETWEEN 2.11.0 and 2.11.1 (2021-Dec-01) + + I. IMPORTANT CHANGES + + - Some fields in the `CID_FaceDictRec`, `CID_FaceInfoRec`, and + `FT_Data` structures have been changed from signed to unsigned + type, which better reflects the actual usage. It is also an + additional means to protect against malformed input. + + + II. MISCELLANEOUS + + - Cmake support has been further improved. To do that various + backward-incompatible changes were necessary; please see file + `CMakeLists.txt` for more details. + + - Since version 2.11.0, a C99 compiler is necessary to compile + FreeType. + + - The experimental 'COLR' v1 API has been updated to the latest + OpenType standard 1.9. + + - The `apinames` tool got a new option `-wV` to output an OpenVMS + Linker Option File. + + - VMS support was updated. + + - MS Visual Studio support was added to build the demo programs. + + +====================================================================== + +CHANGES BETWEEN 2.10.4 and 2.11.0 (2021-Jul-18) + + I. IMPORTANT CHANGES + + - A new rendering module has been added to create 8-bit Signed + Distance Field (SDF) bitmaps for both outline and bitmap glyphs. + The new rendering mode is called `FT_RENDER_MODE_SDF`, the pixel + mode is `FT_PIXEL_MODE_GRAY8`, and the corresponding raster flag + is `FT_RASTER_FLAG_SDF`. + + This work was Anuj Verma's GSoC 2020 project. + + - A new, experimental API is now available for surfacing properties + of 'COLR' v1 color fonts (as the name says, this is an extension + to the 'COLR' table for outline color fonts using the SFNT + container format). 'COLR' v1 fonts are a recently proposed + addition to OFF and OpenType; specification work currently happens + in + + https://github.com/googlefonts/colr-gradients-spec/ + + 'COLR' v1 is expected to be merged to OpenType; the ISO + standardisation process for adding 'COLR' v1 as an amendment to + OFF is underway. + + Functions similar to the already existing 'COLR' API have been + added to access the corresponding data. + + FT_Get_Color_Glyph_Paint + Retrieve the root paint for a given glyph ID. + + FT_Get_Paint_Layers + Access the layers of a `PaintColrLayers` table. + + FT_Get_Colorline_Stops + Retrieve the 'color stops' on a color line. As an input, a + color stop iterator gets used, which in turn is retrieved from + a paint. + + FT_Get_Paint + Dereference an `FT_OpaquePaint` object and retrieve the + corresponding `FT_COLR_Paint` object, which contains details + on how to draw the respective 'COLR' v1 `Paint` table. + + Please note that FreeType does *not* provide rendering support for + 'COLR' v1 but only parsing of this table. You need a dedicated + graphics library like Skia or Cairo for rendering. + + + II. MISCELLANEOUS + + - FreeType has moved its infrastructure to + + https://gitlab.freedesktop.org/freetype + + A side effect is that the git repositories are now called + `freetype.git` and `freetype-demos.git`, which by default expand + to the directories `freetype` and `freetype-demos`, respectively. + The documentation has been updated accordingly. + + FreeType's Savannah repositories will stay; they are now mirrors + of the 'freedesktop.org' repositories. + + - A new function `FT_Get_Transform` returns the values set by + `FT_Set_Transform`. + + - A new configuration macro `FT_DEBUG_LOGGING` is available. It + provides extended debugging capabilities for FreeType, for example + showing a time stamp or displaying the component a tracing message + comes from. See file `docs/DEBUG` for more information. + + This work was Priyesh Kumar's GSoC 2020 project. + + - The legacy Type 1 and CFF engines are further demoted due to lack + of CFF2 charstring support. You now need to use `FT_Property_Set` + to enable them besides the `T1_CONFIG_OPTION_OLD_ENGINE` and + `CFF_CONFIG_OPTION_OLD_ENGINE` options, respectively. + + - The experimental 'warp' mode (AF_CONFIG_OPTION_USE_WARPER) for the + auto-hinter has been removed. + + - The smooth rasterizer performance has been improved by >10%. Note + that due to necessary code changes there might be very subtle + differences in rendering. They are not visible by the eye, + however. + + - PCF bitmap fonts compressed with LZW (these are usually files with + the extension `.pcf.Z`) are now handled correctly. + + - Improved Meson build files, including support to build the + FreeType demo programs. + + - A new demo program `ftsdf` is available to display Signed Distance + Fields of glyphs. + + - The `ftlint` demo program has been extended to do more testing of + its input. In particular, it can display horizontal and vertical + acutances for quality assessment, together with computing MD5 + checksums of rendered glyphs. + + [The acutance measures how sharply the pixel coverage changes at + glyph edges. For monochrome bitmaps, it is always 2.0 in either + X or Y direction. For anti-aliased bitmaps, it depends on the + hinting and the shape of a glyph and might approach or even reach + value 2.0 for glyphs like 'I', 'L', '+', '-', or '=', while it + might be lower for glyphs like 'O', 'S', or 'W'.] + + - The `ttdebug` demo program didn't show changed point coordinates + (bug introduced in version 2.10.3). + + - It is now possible to adjust the axis increment for variable fonts + in the `ftmulti` demo program. + + - It is now possible to change the hinting engine in the `ftstring` + demo program. + + - The graphical demo programs work better now in native color depth + on win32 and x11. + + +====================================================================== + +CHANGES BETWEEN 2.10.3 and 2.10.4 (2020-Oct-20) + + I. IMPORTANT BUG FIXES + + - A heap buffer overflow has been found in the handling of embedded + PNG bitmaps, introduced in FreeType version 2.6. + + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15999 + + If you use option FT_CONFIG_OPTION_USE_PNG you should upgrade + immediately. + + +====================================================================== + +CHANGES BETWEEN 2.10.2 and 2.10.3 (2020-Oct-10) + + I. IMPORTANT CHANGES + + - New flag `FT_OUTLINE_OVERLAP'. If set, make the smooth rasterizer + do 4x4 oversampling to mitigate artifacts in pixels partially + covered by overlapping contours. Note that this at least + quadruples the rendering time. + + If a glyph in a TrueType font has the `OVERLAP_SIMPLE' or + `OVERLAP_COMPOUND' bit set, FreeType automatically selects this + rendering mode. + + + II. MISCELLANEOUS + + - Using the arcane method of including FreeType header files with + macros like `FT_FREETYPE_H' is no longer mandatory (but retained + as an optional feature for backward compatibility). + + - Support for building the library with Meson. Building the demo + programs with Meson will follow in a forthcoming release. + + - Minor improvements to the B/W rasterizer. + + - Auto-hinter support for Medefaidrin script. + + - Fix various memory leaks (mainly for CFF) and other issues that + might cause crashes in rare circumstances. + + - Jam support has been removed. + + - In `ftview', custom LCD filter values are now normalized and + balanced. Unorthodox filters are still available through the `-L' + command line option. + + - The GUI demo programs can now be resized. + + - Demo programs that accept command line option `-k' can now handle + function keys, too. The corresponding character codes start with + 0xF1. As an example, the POSIX shell syntax (accepted by bash, + ksh, and zsh) + + -k $'\xF3q' + + emulates the pressing of function key `F3' followed by key `q'. + + +====================================================================== + +CHANGES BETWEEN 2.10.1 and 2.10.2 (2020-May-09) + + I. IMPORTANT CHANGES + + - Support of WOFF2 fonts. This code contribution was Nikhil + Ramakrishnan's GSoC 2019 project. + + + II. MISCELLANEOUS + + - Function `FT_Get_Var_Axis_Flags' returned random data for Type 1 + MM fonts. + + - Type 1 fonts with non-integer metrics are now supported by the new + (CFF) engine introduced in FreeType 2.9. + + - Drop support for Python 2 in Freetype's API reference generator + `docwriter' (Python >= 3.5 is required for targets `make refdoc' + and `make refdoc-venv'). + + - Auto-hinter support for Hanifi Rohingya. + + - Document the `FT2_KEEP_ALIVE' debugging environment variable. + + - The Visual C++ (and Visual C) project files for Windows builds no + longer generate libraries that contain the FreeType version in its + filenames. Instead, a resource file gets used to make the + libraries contain the corresponding information. + + - The next release will remove Jam build support. + + - The `ftbench' demo program has a new test for testing the + `FT_Glyph_Stroke' functionality. + + +====================================================================== + +CHANGES BETWEEN 2.10.0 and 2.10.1 (2019-Jul-01) + + I. IMPORTANT BUG FIXES + + - The bytecode hinting of OpenType variation fonts was flawed, since + the data in the `CVAR' table wasn't correctly applied. + + + II. MISCELLANEOUS + + - Auto-hinter support for Mongolian. + + - For distribution, `.tar.bz2' packages are replaced with `.tar.xz' + bundles. + + - The handling of the default character in PCF fonts as introduced + in version 2.10.0 was partially broken, causing premature abortion + of charmap iteration for many fonts. + + - If `FT_Set_Named_Instance' was called with the same arguments + twice in a row, the function returned an incorrect error code the + second time. + + - Direct rendering using FT_RASTER_FLAG_DIRECT crashed (bug + introduced in version 2.10.0). + + - Increased precision while computing OpenType font variation + instances. + + - The flattening algorithm of cubic Bezier curves was slightly + changed to make it faster. This can cause very subtle rendering + changes, which aren't noticeable by the eye, however. + + - The auto-hinter now disables hinting if there are blue zones + defined for a `style' (i.e., a certain combination of a script and + its related typographic features) but the font doesn't contain any + characters needed to set up at least one blue zone. + + - The `ftmulti' demo program now supports multiple hidden axes with + the same name tag. + + - `ftview', `ftstring', and `ftgrid' got a `-k' command line option + to emulate a sequence of keystrokes at start-up. + + - `ftview', `ftstring', and `ftgrid' now support screen dumping to a + PNG file. + + - The bytecode debugger, `ttdebug', now supports variation TrueType + fonts; a variation font instance can be selected with the new `-d' + command line option. + + +====================================================================== + +CHANGES BETWEEN 2.9.1 and 2.10.0 (2019-Mar-15) + + I. IMPORTANT CHANGES + + - A bunch of new functions has been added to access and process + COLR/CPAL data of OpenType fonts with color-layered glyphs. + + FT_Palette_Data_Get + Retrieve color palette data. + FT_Palette_Select + Select and activate a color palette for color-layered + glyphs. + FT_Palette_Set_Foreground_Color + Set text foreground color for palette index 0xFFFF. + + FT_Get_Color_Glyph_Layer + Get color layers for a given glyph (using an iterator + object). + + FT_Bitmap_Blend + Blend one bitmap onto another with a given color. + + - An experimental feature is the new behaviour of the + `FT_LOAD_COLOR' load flag for color-layered glyphs: Internally + it sets a flag so that if `FT_Render_Glyph' is called with + `FT_RENDER_MODE_NORMAL' (or `FT_Load_Glyph' with + `FT_LOAD_RENDER'), a default blending of the color glyph layers + will happen automatically for convenience. + + - As a GSoC 2018 project, Nikhil Ramakrishnan completely + overhauled and modernized the API reference. + + + II. MISCELLANEOUS + + - The logic for computing the global ascender, descender, and + height of OpenType fonts has been slightly adjusted for + consistency. + + . If the `useTypoMetrics' flag (i.e., bit 7 in the `fsSelection' + field) in the `OS/2' table is set, use the `sTypo' fields in + `OS/2' unconditionally. + . Otherwise use the metrics data from the `hhea' table (if not + zero). + . Otherwise use the `sTypo' fields from the `OS/2' table (if not + zero). + . Otherwise use the `usWin' data from the `OS/2' table as a last + resort. + + Variable fonts will apply the `MVAR' deltas to whichever metrics + were picked. + + - `TT_Set_MM_Blend' could fail if call repeatedly with the same + arguments. + + - The precision of handling deltas in Variation Fonts has been + increased. The problem did only show up with multidimensional + designspaces. + + - New function `FT_Library_SetLcdGeometry' to set up the geometry + of LCD subpixels. + + - FreeType now uses the `defaultChar' property of PCF fonts to set + the glyph for the undefined character at glyph index 0 (as + FreeType already does for all other supported font formats). As + a consequence, the order of glyphs of a PCF font if accessed + with FreeType can be different now compared to previous + versions. + + This change doesn't affect PCF font access with cmaps. + + - `FT_Select_Charmap' has been changed to allow parameter value + `FT_ENCODING_NONE', which is valid for BDF, PCF, and Windows FNT + formats to access built-in cmaps that don't have a predefined + `FT_Encoding' value. + + - A previously reserved field in the `FT_GlyphSlotRec' structure + now holds the glyph index. + + - On Win32 platforms, the use of `_DLL' to build the library has + been replaced with `DLL_EXPORT' and `DLL_IMPORT'. + + - The usual round of fuzzer bug fixes to better reject malformed + fonts. + + - `FT_Outline_New_Internal' and `FT_Outline_Done_Internal' have + been removed. These two functions were public by oversight only + and were never documented. + + - A new function `FT_Error_String' returns descriptions of error + codes if configuration macro FT_CONFIG_OPTION_ERROR_STRINGS is + defined. + + - `FT_Set_MM_WeightVector' and `FT_Get_MM_WeightVector' are new + functions limited to Adobe MultiMaster fonts to directly set and + get the weight vector. + + - Support for Position Independent Code as needed by systems that + prohibit automatic address fixups, such as BREW, has been + removed. [Compilation with modern compilers that use flags like + `-fPIC' or `-fPIE' is not affected.] + + - The `ftdump' demo program has new options `-c' and `-C' to + display charmaps in compact and detailed format, respectively. + Option `-V' has been removed. + + - The `ftview', `ftstring', and `ftgrid' demo programs use a new + command line option `-d' to specify the program window's width, + height, and color depth. + + - The `ftview' demo program now displays red boxes for zero-width + glyphs. + + - `ftglyph' has limited support to display fonts with + color-layered glyphs. This will be improved later on. + + - `ftgrid' can now display bitmap fonts also. + + - The `ttdebug' demo program has a new option `-f' to select a + member of a TrueType collection (TTC). + + - Other various improvements to the demo programs. + + +====================================================================== + +CHANGES BETWEEN 2.9 and 2.9.1 (2019-May-01) + + I. IMPORTANT BUG FIXES + + - Type 1 fonts containing flex features were not rendered + correctly (bug introduced in version 2.9). + + - CVE-2018-6942: Older FreeType versions can crash with certain + malformed variation fonts. + + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6942 + + + II. MISCELLANEOUS + + - Bug fix: Multiple calls to `FT_Get_MM_Var' returned garbage. + + - The base extensions `ftlcdfil' and `ftfntfmt' are now part of + the base module (and thus no longer configurable in file + `modules.cfg'). + + - Emboldening of bitmaps didn't work correctly sometimes, showing + various artifacts (bug introduced in version 2.8.1). + + - Use of the `freetype-config' script to get compilation and + linking options is deprecated since it doesn't support + cross-compiling, among other deficiencies. Instead, you should + use the `pkg-config' interface. + + The `configure' script no longer installs `freetype-config' by + default. For backward compatibility, a new configure option + `--enable-freetype-config' is provided that reverts this + decision. + + - The auto-hinter script ranges have been updated for Unicode 11. + No support for new scripts have been added, however, with the + exception of Georgian Mtavruli. + + - Support for cmake has been improved. + + - The next release will remove support for Position Independent + Code as needed by systems that prohibit automatic address + fixups, such as BREW. [Compilation with modern compilers that + use flags like `-fPIC' or `-fPIE' is not affected.] + + +====================================================================== + +CHANGES BETWEEN 2.8.1 and 2.9 (2018-Jan-08) + + I. IMPORTANT BUG FIXES + + - Advance width values of variation fonts were often wrong. + + - More fixes for variation font support; you should update to this + version if you want to support them. + + + II. IMPORTANT CHANGES + + - As a GSoC project, Ewald Hew extended the new (Adobe) CFF engine + to handle Type 1 fonts also, thus greatly improving the + rendering of this format. This is the new default. The old + engine is still available if the configuration macro + `T1_CONFIG_OPTION_OLD_ENGINE' gets defined; using the + `hinting-engine' property of the `type1' driver module you can + then switch between the two engines. + + - A new function, `FT_Set_Named_Instance', can be used to set or + change the current named instance. + + - Starting with this FreeType version, resetting variation + coordinates will return to the currently selected named + instance. Previously, FreeType returned to the base font (i.e., + no instance set). + + + III. MISCELLANEOUS + + - The `face_flags' field of the `FT_Face' structure has a new bit, + `FT_FACE_FLAG_VARIATION', which is set if a variation font has + been altered with `FT_Set_MM_Design_Coordinates', + `FT_Set_Var_Design_Coordinates', or + `FT_Set_Var_Blend_Coordinates'. + + - If the current face is a named instance, the new macro + `FT_IS_NAMED_INSTANCE' returns true. + + - `FT_IS_VARIATION' is a new macro that returns true whenever a + face object has been altered by `FT_Set_MM_Design_Coordinates', + `FT_Set_Var_Design_Coordinates', or + `FT_Set_Var_Blend_Coordinates'. + + - Changing the design coordinates of a variation font with + `FT_Set_Var_Design_Coordinates' or + `FT_Set_Var_Blend_Coordinates' does not influence the named + instance index value (only `FT_Set_Named_Instance' does that). + + - Special PostScript names for named instances are only returned + if the named instance is set with `FT_Set_Named_Instance' (and + the font has corresponding entries in its `fvar' table). If + `FT_IS_VARIATION' returns true, the algorithmically derived + PostScript name is provided, not looking up special entries for + named instances. + + - A new function `FT_Done_MM_Var' is provided to free the memory + returned in a call to `FT_Get_MM_Var'. + + - On platforms using the `configure' script, the installed + `ftoption.h' file now correctly reflects configuration options + like `--with-harfbuzz'. + + - Better support to build FreeType as a DLL on Windows using + Visual C. + + - All data specific to driver modules is now collected in a single + file, `FT_DRIVER_H'. Consequently, the macros + `FT_AUTOHINTER_H', `FT_CFF_DRIVER_H', `FT_TRUETYPE_DRIVER_H', + and `FT_PCF_DRIVER_H' still work but are deprecated. + + - Some fuzzer fixes to better reject malformed fonts. + + - The `ftbench' demo program has a new test for opening a new face + and loading some glyphs. + + - The `ftbench' demo program has a new option `-j' to specify the + last glyph index to be used in the tests. + + - The `ftgrid' demo program has a new option `-n' to suppress + display of named instances of variation fonts. + + - The `ttdebug' demo program can now show a stack trace (key `K') + and switch between hexadecimal and decimal display of integers + (key `I'). + + +====================================================================== + +CHANGES BETWEEN 2.8 and 2.8.1 (2017-Sep-16) + + I. IMPORTANT BUG FIXES + + - B/W hinting of TrueType fonts didn't work properly if + interpreter version 38 or 40 was selected. + + - Some severe problems within the handling of TrueType Variation + Fonts were found and fixed. + + - Function `FT_Set_Var_Design_Coordinates' didn't correctly handle + the case with less input coordinates than axes. + + + II. IMPORTANT CHANGES + + - By default, FreeType now offers high quality LCD-optimized + output without resorting to ClearType techniques of resolution + tripling and filtering. In this method, called Harmony, each + color channel is generated separately after shifting the glyph + outline, capitalizing on the fact that the color grids on LCD + panels are shifted by a third of a pixel. This output is + indistinguishable from ClearType with a light 3-tap filter. + + + III. MISCELLANEOUS + + - Using the new function `FT_Get_Var_Axis_Flags', an application + can access the `flags' field of a variation axis (introduced in + OpenType version 1.8.2) + + - More sanity checks. + + - The internal representation of buffers for LCD rendering has + changed (to be more precise, the amount of padding gets computed + differently). Applications that use the FreeType API are not + affected. + + - To reset all design axis values of a variation font to its + default values you can now say + + error = FT_Set_Var_Design_Coordinates( face, 0, NULL ); + + This also works with functions `FT_Set_MM_Design_Coordinates' + and `FT_Set_MM_Blend_Coordinates'. + + - FreeType now synthesizes a missing Unicode cmap for (older) + TrueType fonts also if glyph names are available. + + - FreeType has improved handling of BDF fonts without the + `POINT_SIZE', `RESOLUTION_X', or `RESOLUTION_Y' properties; the + library now uses the values of the `SIZE' keyword if they are + missing. Previously, `SIZE' was completely ignored, and + FreeType used heuristic values instead. + + - Multiple calls to `FT_Bitmap_Convert' do work now as advertised. + Previously, they failed with an assertion error if there was an + empty bitmap between non-empty ones. + + - The warping option has moved from `light' to `normal' hinting + where it replaces the original hinting algorithm. The `light' + mode is now always void of any hinting in x-direction. + + - 16bit compiler support is now officially ended. We didn't + provide any maintenance since many years, and given that there + were no error or problem reports either it seems that it is no + longer needed. + + - The `ftgrid' demo program can now toggle the display of grid + lines with the `G' key. + + - The `ftgrid' demo program can toggle a different set of colors + (suitable to color-blind people) with the `C' key. + + - The `ftgrid' demo program now supports the `-e' command line + option to select a cmap. + + - The `ftdump' demo program has a new command line option `-t' to + output the SFNT table list. + + +====================================================================== + +CHANGES BETWEEN 2.7.1 and 2.8 (2017-May-13) + + I. IMPORTANT CHANGES + + - Support for OpenType Variation Fonts is now complete. The last + missing part was handling the `VVAR' and `MVAR' tables, which is + available with this release. + + - A new function `FT_Face_Properties' allows the control of some + module and library properties per font. Currently, the + following properties can be handled: stem darkening, LCD filter + weights, and the random seed for the `random' CFF operator. + + - The PCF change to show more `colorful' family names (introduced + in version 2.7.1) was too radical; it can now be configured with + PCF_CONFIG_OPTION_LONG_FAMILY_NAMES at compile time. If + activated, it can be switched off at run time with the new pcf + property `no-long-family-names'. If the `FREETYPE_PROPERTIES' + environment variable is available, you can say + + FREETYPE_PROPERTIES=pcf:no-long-family-names=1 + + - Support for the following scripts has been added to the + auto-hinter. + + Adlam, Avestan, Bamum, Buhid, Carian, Chakma, Coptic, Cypriot, + Deseret, Glagolitic, Gothic, Kayah, Lisu, N'Ko, Ol Chiki, Old + Turkic, Osage, Osmanya, Saurashtra, Shavian, Sundanese, Tai + Viet, Tifinagh, Unified Canadian Syllabics, Vai + + + II. IMPORTANT BUG FIXES + + - `Light' auto-hinting mode no longer uses TrueType metrics for + TrueType fonts. This bug was introduced in version 2.4.6, + causing horizontal scaling also. Almost all GNU/Linux + distributions (with Fedora as a notable exception) disabled the + corresponding patch for good reasons; chances are thus high that + you won't notice a difference. + + If optical backward compatibility for legacy applications is + necessary, you might enable the AF_CONFIG_OPTION_TT_SIZE_METRICS + configuration option. However, it is strongly recommended to + avoid that, adjusting font sizes instead. + + - Global size metrics values in the `FT_Size_Metrics' structure + can be different for TrueType fonts. Reason is that in older + FreeType versions the metrics were rounded differently to + integer pixels compared to all other font formats, yielding an + inconsistent behaviour if you used non-native hinting. Starting + with this version, global size metrics for TrueType fonts are + handled the same as other font formats: `ascender' gets rounded + up, `descender' gets rounded down, `height' gets normally + rounded, and `max_advance' gets normally rounded, too. + + If you need more precise values of (global) ascender, descender, + height, or `max_advance', please take the corresponding values + from the `FT_Face' structure and scale them manually. + + - If a TrueType font gets loaded with FT_LOAD_NO_HINTING, FreeType + now scales the font linearly again (bug introduced in version + 2.4.6). + + - CVE-2017-8105, CVE-2017-8287: Older FreeType versions have + out-of-bounds writes caused by heap-based buffer overflows + related to Type 1 fonts. + + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8105 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8287 + + + III. MISCELLANEOUS + + - A new function `FT_Set_Default_Properties' has been added to + parse the `FREETYPE_PROPERTIES' environment variable + (previously, it was internal only). `FT_Init_FreeType' always + call this function, but `FT_New_Library' does not (similar to + `FT_Add_Default_Modules'). + + - To be in sync with OpenType version 1.7 and newer, macros + + FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY, + FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY, + TT_NAME_ID_PREFERRED_FAMILY + TT_NAME_ID_PREFERRED_SUBFAMILY + + are renamed to + + FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY, + FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY, + TT_NAME_ID_TYPOGRAPHIC_FAMILY + TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY + + The old macro names are deprecated (but still available). + + - Support for SFNT `name' tables has been improved. + + . Format 1 `name' tables are now supported. Use new function + `FT_Get_Sfnt_LangTag' to access associated language tags. + + . Language, encoding, and name IDs have been updated to OpenType + version 1.8.1. + + - The new CFF engine now handles the `random' operator. All CFF + opcodes are now supported. + + - The CFF module has a new property `random-seed' to control the + pseudo-random number generation for the `random' operator. + + - The `freetype-config' script is now a wrapper of `pkg-config' if + this program is available in the path. + + - FT_LOAD_TARGET_LCD is now a variant of FT_LOAD_TARGET_LIGHT; + this should provide better rendering results. + + - A mode to display light auto-hinting with subpixel positioning + has been added to `ftdiff'. + + +====================================================================== + +CHANGES BETWEEN 2.7 and 2.7.1 (2016-Dec-30) + + I. IMPORTANT CHANGES + + - Support for the new CFF2 font format as introduced with OpenType + 1.8 has been contributed by Dave Arnolds from Adobe. + + - Preliminary support for variation fonts as specified in OpenType + 1.8 (in addition to the already existing support for Adobe's MM + and Apple's GX formats). Dave Arnolds contributed handling of + advance width change variation; more will come in the next + version. + + + II. IMPORTANT BUG FIXES + + - Handling of raw CID fonts was partially broken (bug introduced + in 2.6.4). + + - CVE-2016-10328: Older FreeType versions had an out-of-bounds + write caused by a heap-based buffer overflow related to the CFF + fonts. + + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10328 + + + III. MISCELLANEOUS + + - Some limits for TrueType bytecode execution have been tightened + to speed up FreeType's handling of malformed fonts, in + particular to quickly abort endless loops. + + - The number of twilight points can no longer be set to an + arbitrarily large value. + + - The total number of jump opcode instructions (like JMPR) with + negative arguments is dynamically restricted; the same holds + for the total number of iterations in LOOPCALL opcodes. + + The dynamic limits are based on the number of points in a glyph + and the number of CVT entries. Please report if you encounter a + font where the selected values are not adequate. + + - PCF family names are made more `colorful'; they now include the + foundry and information whether they contain wide characters. + For example, you no longer get `Fixed' but rather `Sony Fixed' + or `Misc Fixed Wide'. + + - A new function `FT_Get_Var_Blend_Coordinates' (with its alias + name `FT_Get_MM_Blend_Coordinates') to retrieve the normalized + blend coordinates of the currently selected variation instance + has been added to the Multiple Masters interface. + + - A new function `FT_Get_Var_Design_Coordinates' to retrieve the + design coordinates of the currently selected variation instance + has been added to the Multiple Masters interface. + + - A new load flag `FT_LOAD_BITMAP_METRICS_ONLY' to retrieve bitmap + information without loading the (embedded) bitmap itself. + + - Retrieving advance widths from bitmap strikes (using + `FT_Get_Advance' and `FT_Get_Advances') have been sped up. + + - The usual round of fuzzer fixes to better reject malformed + fonts. + + - The `ftmulti' demo program can now switch engines with key `H'. + + - The `ftstring' demo program can now show some built-in, + non-latin sample strings (to be selected with the TAB key). + + - The `ftview' demo program can now switch between a font's + charmaps using the TAB key. + + +====================================================================== + +CHANGES BETWEEN 2.6.5 and 2.7 (2016-Sep-08) + + I. IMPORTANT CHANGES + + - As announced earlier, the 2.7.x series now uses the new subpixel + hinting mode as the default, emulating a modern version of + ClearType. + + This change inevitably leads to different rendering results, and + you might change the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' + configuration option to adapt it to your taste (or use the new + `FREETYPE_PROPERTIES' environment variable). See the + corresponding entry below for version 2.6.4, which gives more + information. + + - A new option `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES' has been + introduced. If set (which is the default), an environment + variable `FREETYPE_PROPERTIES' can be used to control driver + properties. Example: + + FREETYPE_PROPERTIES=truetype:interpreter-version=35 \ + cff:no-stem-darkening=1 \ + autofitter:warping=1 + + This allows to select, say, the subpixel hinting mode at runtime + for a given application. See file `ftoption.h' for more. + + + II. IMPORTANT BUG FIXES + + - After loading a named instance of a GX variation font, the + `face_index' value in the returned `FT_Face' structure now + correctly holds the named instance index in the upper 16bits as + documented. + + + III. MISCELLANEOUS + + - A new macro `FT_IS_NAMED_INSTANCE' to test whether a given face + is a named instance. + + - More fixes to GX font handling. + + - Apple's `GETVARIATION' bytecode operator (needed for GX + variation font support) has been implemented. + + - Another round of fuzzer fixes, mainly to reject invalid fonts + faster. + + - Handling of raw CID fonts was broken (bug introduced in version + 2.6.4). + + - The smooth rasterizer has been streamlined to make it faster by + approx. 20%. + + - The `ftgrid' demo program now understands command line option + `-d' to give start-up design coordinates. + + - The `ftdump' demo program has a new command line option `-p' to + dump TrueType bytecode instructions. + + +====================================================================== + +CHANGES BETWEEN 2.6.4 and 2.6.5 (2016-Jul-12) + + I. IMPORTANT BUG FIXES + + - Compilation works again on Mac OS X (bug introduced in version + 2.6.4). + + + II. IMPORTANT CHANGES + + - The new subpixel hinting mode is now disabled by default; it + will be enabled by default in the forthcoming 2.7.x series. + Main reason for reverting this feature is the principle of least + surprise: a sudden change in appearance of all fonts (even if + the rendering improves for almost all recent fonts) should not + be expected in a new micro version of a series. + + +====================================================================== + +CHANGES BETWEEN 2.6.3 and 2.6.4 (2016-Jul-05) + + I. IMPORTANT CHANGES + + - A new subpixel hinting mode has been contributed by Nikolaus + Waxweiler, which is now the default rendering mode for TrueType + fonts. It implements (almost everything of) version 40 of the + bytecode engine. + + The existing code base in FreeType (the `Infinality code') was + stripped to the bare minimum and all configurability removed in + the name of speed and simplicity. The configurability was + mainly aimed at legacy fonts like Arial, Times New Roman, or + Courier. [Legacy fonts are fonts that modify vertical stems to + achieve clean black-and-white bitmaps.] The new mode focuses on + applying a minimal set of rules to all fonts indiscriminately so + that modern and web fonts render well while legacy fonts render + okay. + + Activation of the subpixel hinting support can be controlled + with the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' configuration + option at compile time: If set to value 1, you get the old + Infinality mode (which was never the default due to its + slowness). Value 2 activates the new subpixel hinting mode, and + value 3 activates both. The default is value 2. + + At run time, you can select the subpixel hinting mode with the + `interpreter-version' property (provided you have compiled in + the corresponding hinting mode); see `ftttdrv.h' for more. + + - Support for the following scripts has been added to the + auto-hinter. + + Armenian, Cherokee, Ethiopic, Georgian, Gujarati, Gurmukhi, + Malayalam, Sinhala, Tamil + + + II. MISCELLANEOUS + + - Type 42 fonts as created by LilyPond are now supported. + + - Minor rendering improvements in the auto-hinter. + + - For experimental reasons, the old CFF engine now supports all + CFF operators except `random', including the deprecated Multiple + Masters instructions. This allows the display of fonts like + `ITCGaramondMM-It.otf' (without font variations, though). + + - Another round of fixes to improve handling of invalid fonts. + + - The `ftgrid' demo program now displays the rendered pixels also; + this can be switched off with the `b' key. Selection of various + LCD filtering modes can be done with the `L' key. + + - The demo programs have been extended to allow selection of all + available TrueType bytecode engines. + + - A very early beta version of a new, Qt based demo program called + `ftinspect' is part of the source code bundle; it will + eventually supersede the other demo programs. Currently, you + have to compile it manually with `qmake; make'; note that many + features are still missing. + + +====================================================================== + +CHANGES BETWEEN 2.6.2 and 2.6.3 (2016-Feb-08) + + I. IMPORTANT CHANGES + + - Khmer, Myanmar, Bengali, and Kannada script support has been + added to the auto-hinter. + + + II. MISCELLANEOUS + + - Better support of Indic scripts like Devanagari by using a + top-to-bottom hinting flow. + + - All FreeType macros starting with two underscores have been + renamed to avoid a violation of both the C and C++ standards. + Example: Header macros of the form `__FOO_H__' are now called + `FOO_H_'. In most cases, this should be completely transparent + to the user. The exception to this is `__FTERRORS_H__', which + must be sometimes undefined by the user to get FreeType error + strings: Both this form and the new `FTERRORS_H_' macro are + accepted for backward compatibility. + + - Minor improvements mainly to the Type 1 driver. + + - The new CFF engine now supports all Type 2 operators except + `random'. + + - The macro `_STANDALONE_', used for compiling the B/W and smooth + rasterizers as stand-alone modules, has been renamed to + `STANDALONE_', since macro names starting with an underscore and + followed by an uppercase letter are reserved in both C and C++. + + - Function `FT_Library_SetLcdFilterWeights' now also activates + custom LCD filter weights (instead of just adjusting them). + + - Support for `unpatented hinting' has been completely removed: + Consequently, the two functions `FT_Face_CheckTrueTypePatents' + and `FT_Face_SetUnpatentedHinting' now return always false, + doing nothing. + + - The `ftgamma' demo program has been modernized; the gamma grid + display has been moved from `ftview' to this program. + + - In `ftview', it is now possible to cycle through the available + LCD filtering modes. + + +====================================================================== + +CHANGES BETWEEN 2.6.1 and 2.6.2 (2015-Nov-28) + + I. IMPORTANT CHANGES + + - The auto-hinter now supports stem darkening, to be controlled by + the new `no-stem-darkening' and `darkening-parameters' + properties. This is an experimental feature contributed by + Nikolaus Waxweiler, and the interface might change in a future + release. + + - By default, stem darkening is now switched off (for both the CFF + engine and the auto-hinter). The main reason is that you need + linear alpha blending and gamma correction to get correct + rendering results, and the latter is not yet available in most + freely available rendering stacks like X11. Applying stem + darkening without proper gamma correction leads to far too dark + rendering results. + + - The meaning of `FT_RENDER_MODE_LIGHT' has been slightly + modified. It now essentially means `no hinting along the + horizontal axis'; in particular, no change of glyph advance + widths. Consequently, the auto-hinter is used for all scalable + font formats except for CFF. It is planned that other + font-specific rendering engines (TrueType, Type 1) will follow. + + + II. MISCELLANEOUS + + - The default LCD filter has been changed to be normalized and + color-balanced. + + - For better compatibility with FontConfig, function + `FT_Library_SetLcdFilter' accepts a new enumeration value + `FT_LCD_FILTER_LEGACY1' (which has the same meaning as + `FT_LCD_FILTER_LEGACY'). + + - A large number of bugs have been detected by using the libFuzzer + framework, which should further improve handling of invalid + fonts. Thanks again to Kostya Serebryany and Bungeman! + + - `TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES', a new configuration + option, controls the maximum number of executed opcodes within a + bytecode program. You don't want to change this except for very + special situations (e.g., making a library fuzzer spend less + time to handle broken fonts). + + - The smooth renderer has been made faster. + + - The `ftstring' demo program now supports subpixel rendering; use + key `l' to cycle through the LCD modes. + + - The `ftstring' demo program now supports color rendering; use + the `space' key to cycle through various color combinations. + + - The graphical demo programs now use a default gamma value of 1.8 + (instead of 1.2). + + +====================================================================== + +CHANGES BETWEEN 2.6 and 2.6.1 (2015-Oct-04) + + I. IMPORTANT BUG FIXES + + - It turned out that for CFFs only the advance widths should be + taken from the `htmx' table, not the side bearings. This bug, + introduced in version 2.6.0, makes it necessary to upgrade if + you are using CFFs; otherwise, you get cropped glyphs with GUI + interfaces like GTK or Qt. + + - Accessing Type 42 fonts returned incorrect results if the glyph + order of the embedded TrueType font differs from the glyph order + of the Type 42 charstrings table. + + + II. IMPORTANT CHANGES + + - The header file layout has been changed (again), moving all + header files except `ft2build.h' into a subdirectory tree. + + Doing so reduces the possibility of header file name clashes + (e.g., FTGL's `FTGlyph.h' with FreeType's `ftglyph.h') on case + insensitive file systems like Mac OS X or Windows. + + Applications that use (a) the `freetype-config' script or + FreeType's `freetype2.pc' file for pkg-config to get the include + directory for the compiler, and (b) the documented way for + header inclusion like + + #include + #include FT_FREETYPE_H + ... + + don't need any change to the source code. + + - Simple access to named instances in GX variation fonts is now + available (in addition to the previous method via FreeType's MM + interface). In the `FT_Face' structure, bits 16-30 of the + `face_index' field hold the current named instance index for the + given face index, and bits 16-30 of `style_flags' contain the + number of instances for the given face index. `FT_Open_Face' + and friends also understand the extended bits of the face index + parameter. + + You need to enable TT_CONFIG_OPTION_GX_VAR_SUPPORT for this new + feature. Otherwise, bits 16-30 of the two fields are zero (or + are ignored). + + - Lao script support has been added to the auto-hinter. + + + III. MISCELLANEOUS + + - The auto-hinter's Arabic script support has been enhanced. + + - Superscript-like and subscript-like glyphs as used by various + phonetic alphabets like the IPA are now better supported by the + auto-hinter. + + - The TrueType bytecode interpreter now runs slightly faster. + + - Improved support for builds with cmake. + + - The function `FT_CeilFix' now always rounds towards plus + infinity. + + - The function `FT_FloorFix' now always rounds towards minus + infinity. + + - A new load flag `FT_LOAD_COMPUTE_METRICS' has been added; it + makes FreeType ignore pre-computed metrics, as needed by font + validating or font editing programs. Right now, only the + TrueType module supports it to ignore data from the `hdmx' + table. + + - Another round of bug fixes to better handle broken fonts, found + by Kostya Serebryany . + + +====================================================================== + +CHANGES BETWEEN 2.5.5 and 2.6 (2015-Jun-07) + + I. IMPORTANT CHANGES + + - Behdad Esfahbod contributed code for improved thread-safety, + which results in the following model. + + * An `FT_Face' object can only be safely used from one thread at + a time. + + * An `FT_Library' object can now be used without modification + from multiple threads at the same time. + + * `FT_Face' creation and destruction with the same `FT_Library' + object can only be done from one thread at a time. + + One can use a single `FT_Library' object across threads as long + as a mutex lock is used around `FT_New_Face' and `FT_Done_Face'. + Any calls to `FT_Load_Glyph' and similar API are safe and do not + need the lock to be held as long as the same `FT_Face' is not + used from multiple threads at the same time. + + - Thai script support has been added to the auto-hinter. + + - Arabic script support has been added to the auto-hinter. + + - Following OpenType version 1.7, advance widths and side bearing + values in CFFs (wrapped in an SFNT structure) are now always + taken from the `hmtx' table. + + - Following OpenType version 1.7, the PostScript font name of a + CFF font (wrapped in an SFNT structure) is now always taken from + the `name' table. This is also true for OpenType Collections + (i.e., TTCs using CFFs subfonts instead of TTFs), where it may + have a significant difference. + + - Fonts natively hinted for ClearType are now supported, properly + handling selector index 3 of the INSTCTRL bytecode instruction. + + - Major improvements to the GX TrueType variation font handling. + + + II. MISCELLANEOUS + + - A new auto-hinter property `warping' can switch on and off the + warping code if this experimental feature is compiled in (by + defining the AF_CONFIG_OPTION_USE_WARPER configuration option; + by default this option is now enabled but warping is switched + off). + + The AF_CONFIG_OPTION_USE_WARPER option itself is an old feature, + available since 2006. Warping only works in `light' + auto-hinting mode. The idea of the code is to slightly scale + and shift a glyph along the non-hinted dimension (which is + usually the horizontal axis) so that as much of its segments are + aligned (more or less) to the grid. To find out a glyph's + optimal scaling and shifting value, various parameter + combinations are tried and scored. + + See file `ftautoh.h' for more; the demo programs `ftdiff', + `ftview', and `ftgrid' can toggle warping with key `w'. + + - Some fields in the `FTC_ImageTypeRec' structure have been + changed from signed to unsigned type, which better reflects the + actual usage. It is also an additional means to protect against + malformed input. + + This change doesn't break the ABI; however, it might cause + compiler warnings. + + - Function `FT_Bitmap_New' has been renamed to `FT_Bitmap_Init', + since this name better reflects its function. For backward + compatibility, the old function name is still available. + + - Function `FT_Get_X11_Font_Format' has been renamed to + `FT_Get_Font_Format', since this name better reflects its + function. For backward compatibility, the old function name is + still available. + + Additionally, the header file macro for this function has been + renamed to `FT_FONT_FORMATS_H' (the old name `FT_XFREE86_H' is + retained for backward compatibility). + + - Various improvements to the `ftgrid' demo program. + + . It can now display GX and MM fonts while interactively + manipulating the axes (with keys F2, F3, and F4). + + . Anti-aliasing rendering modes can now be selected (with keys + F5 and F6). + + . The display of point numbers can be toggled with key `D'. + + - Various improvements to the `ftdump' demo program. + + . It now displays information on MM and GX variation axes. + + . New command line option `-u' makes it output data in utf-8 + encoding. + + - The `ftmulti' demo program can now handle up to six MM or GX + axes. + + +====================================================================== + +CHANGES BETWEEN 2.5.4 and 2.5.5 (2014-Dec-30) + + I. IMPORTANT BUG FIXES + + - Handling of uncompressed PCF files works again (bug introduced + in version 2.5.4). + + +====================================================================== + +CHANGES BETWEEN 2.5.3 and 2.5.4 (2014-Dec-06) + + I. IMPORTANT BUG FIXES + + - A variant of vulnerability CVE-2014-2240 was identified + (cf. https://savannah.nongnu.org/bugs/?43661) and fixed in the + new CFF driver. All users should upgrade. + + - The new auto-hinter code using HarfBuzz crashed for some invalid + fonts. + + - Many fixes to better protect against malformed input. + + + II. IMPORTANT CHANGES + + - Full auto-hinter support of the Devanagari script. + + - Experimental auto-hinter support of the Telugu script. + + - CFF stem darkening behaviour can now be controlled at build time + using the eight macros + + CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} . + + - Some fields in the `FT_Bitmap' structure have been changed from + signed to unsigned type, which better reflects the actual usage. + It is also an additional means to protect against malformed + input. + + This change doesn't break the ABI; however, it might cause + compiler warnings. + + + III. MISCELLANEOUS + + - Improvements to the auto-hinter's algorithm to recognize stems + and local extrema. + + - Function `FT_Get_SubGlyph_Info' always returned an error even in + case of success. + + - Version 2.5.1 introduced major bugs in the cjk part of the + auto-hinter, which are now fixed. + + - The `FT_Sfnt_Tag' enumeration values have been changed to + uppercase, e.g. `FT_SFNT_HEAD'. The lowercase variants are + deprecated. This is for orthogonality with all other + enumeration (and enumeration-like) values in FreeType. + + - `cmake' now supports builds of FreeType as an OS X framework and + for iOS. + + - Improved project files for vc2010, introducing a property file. + + - The documentation generator for the API reference has been + updated to produce better HTML code (with proper CSS). At the + same time, the documentation got a better structure. + + - The FT_LOAD_BITMAP_CROP flag is obsolete; it is not used by any + driver. + + - The TrueType DELTAP[123] bytecode instructions now work in + subpixel hinting mode as described in the ClearType whitepaper + (i.e., for touched points in the non-subpixel direction). + + - Many small improvements to the internal arithmetic routines. + + +====================================================================== + +CHANGES BETWEEN 2.5.2 and 2.5.3 (2014-Mar-06) + + I. IMPORTANT BUG FIXES + + - A vulnerability (CVE-2014-2240) was identified and fixed in the + new CFF driver (cf. https://savannah.nongnu.org/bugs/?41697). + All users should upgrade. + + - More bug fixes related to correct positioning of composite + glyphs. + + - Many fixes to better protect against malformed input. + + + II. IMPORTANT CHANGES + + - FreeType can now use the HarfBuzz library to greatly improve the + auto-hinting of fonts that use OpenType features: Many glyphs + that are part of such features but don't have cmap entries are + now handled properly, for example small caps or superscripts. + Define the configuration macro FT_CONFIG_OPTION_USE_HARFBUZZ to + activate HarfBuzz support. + + You need HarfBuzz version 0.9.19 or newer. + + Note that HarfBuzz depends on FreeType; this currently causes a + chicken-and-egg problem that can be solved as follows in case + HarfBuzz is not yet installed on your system. + + 1. Compile and install FreeType without the configuration + macro FT_CONFIG_OPTION_USE_HARFBUZZ. + + 2. Compile and install HarfBuzz. + + 3. Define macro FT_CONFIG_OPTION_USE_HARFBUZZ, then compile + and install FreeType again. + + With FreeType's `configure' script the procedure boils down to + configure, build, and install FreeType, then configure, compile, + and install HarfBuzz, then configure, compile, and install + FreeType again (after executing `make distclean'). + + - All libraries FreeType depends on are now checked using the + `pkg-config' configuration files first, followed by alternative + methods. + + - The new value `auto' for the various `--with-XXX' library + options (for example `--with-harfbuzz=auto') makes the + `configure' script automatically link to the libraries it finds. + This is now the default. + + - In case FreeType's `configure' script can't find a library, you + can pass environment variables to circumvent pkg-config, and + those variables have been harmonized as a consequence of the + changes mentioned above: + + LIBZ -> removed; use LIBZ_CFLAGS and LIBZ_LIBS + LIBBZ2 -> removed; use BZIP2_CFLAGS and BZIP2_LIBS + LIBPNG_LDFLAGS -> LIBPNG_LIBS + + `./configure --help' shows all available environment variables. + + - The `freetype-config' script now understands option `--static' + to emit static linking information. + + +====================================================================== + +CHANGES BETWEEN 2.5.1 and 2.5.2 (2013-Dec-08) + + I. IMPORTANT BUG FIXES + + - Improving the display of some broken TrueType fonts introduced a + bug that made FreeType crash on some popular (but not fully + conformant) fonts like `ahronbd.ttf'. + + - Another round of improvements to correct positioning and hinting + of composite glyphs in TrueType fonts. + + + II. MISCELLANEOUS + + - Version 2.5.1 introduced a bug in handling embedded bitmap + strikes of TrueType fonts, causing garbage display under some + circumstances. + + - The `ftgrid' demo program couldn't be compiled in + non-development builds. + + +====================================================================== + +CHANGES BETWEEN 2.5 and 2.5.1 (2013-Nov-25) + + I. IMPORTANT BUG FIXES + + - For some WinFNT files, the last glyph wasn't displayed but + incorrectly marked as invalid. + + - The vertical size of glyphs was incorrectly set after a call to + `FT_GlyphSlot_Embolden', resulting in clipped glyphs. + + - Many fields of the `PCLT' table in SFNT based fonts (if accessed + with `FT_Get_Sfnt_Table') were computed incorrectly. + + - In TrueType fonts, hinting of composite glyphs could sometimes + deliver incorrect positions of components or even distorted + shapes. + + + II. IMPORTANT CHANGES + + - WOFF font format support has been added. + + - The auto-hinter now supports Hebrew. Greek and Cyrillic support + has been improved. + + - Support for the forthcoming `OS/2' SFNT table version 5, as can + be found e.g. in the `Sitka' font family for Windows 8.1. + + - The header file layout has been changed. After installation, + all files are now located in `/include/freetype2'. + + Applications that use (a) `freetype-config' or FreeType's + `pkg-config' file to get the include directory for the compiler, + and (b) the documented way for header inclusion like + + #include + #include FT_FREETYPE_H + ... + + don't need any change to the source code. + + + III. MISCELLANEOUS + + - The stem darkening feature of the new CFF engine can now be + fine-tuned with the new `darkening-parameters' property. + + - `ftgrid' has been updated to toggle various engines with the `H' + key, similar to `ftview' and `ftdiff'. + + - The functionality of `ttdebug' has been greatly enhanced. + + . It now displays twilight, storage, and control value data; key + `T' shows the twilight point table, key `S' the storage data, + and key `C' the control value table. + + . Some keys have been reassigned from lowercase to their + uppercase equivalents; for example `q' to quit the program is + now `Q'. + + . Key `f' finishes the current function. + + . Key `R' restarts the debugger. + + . Keys `b' and `p' set a breakpoint. + + . Key `B' provides a function call backtrace. + + - Better support of ARMv7 and x86_64 processors. + + - Apple's `sbix' color bitmap format is now supported. + + - Improved auto-hinter rendering for many TrueType fonts, + especially in the range 20-40ppem. + + - A new face flag `FT_FACE_FLAG_COLOR' has been added (to be + accessed with the macro `FT_HAS_COLOR'). + + - `FT_Gzip_Uncompress' (modeled after zlib's `uncompress' + function) has been added; this is a by-product of the newly + added WOFF support. + + - Support for a build with `cmake' has been contributed by John + Cary . + + - Support for x64 builds with Visual C++ has been contributed by + Kenneth Miller + + - Manual pages for most demo programs have been added. + + - The GETINFO bytecode instruction for TrueType fonts was buggy if + used to retrieve subpixel hinting information. It was necessary + to set selector bit 6 to get results for selector bits 7-10, + which is wrong. + + - Improved computation of emulated vertical metrics for TrueType + fonts. + + - Fixed horizontal start-up position of vertical phantom points in + TrueType bytecode. + + +====================================================================== + +CHANGES BETWEEN 2.4.12 and 2.5 (2013-Jun-19) + + I. IMPORTANT BUG FIXES + + - The cache manager function `FTC_Manager_Reset' didn't flush the + cache. + + + II. IMPORTANT CHANGES + + - Behdad Esfahbod (on behalf of Google) contributed support for + color embedded bitmaps (eg. color emoji). + + A new load flag, FT_LOAD_COLOR, makes FreeType load color + embedded-bitmaps, following this draft specification + + https://color-emoji.googlecode.com/git/specification/v1.html + + which defines two new SFNT tables, `CBDT' and `CBLC' (named and + modeled after `EBDT' and `EBLC', respectively). The color + bitmaps are stored in the new FT_PIXEL_MODE_BGRA format to + represent BGRA pre-multiplied sRGB images. If PNG support is + available, PNG color images as defined in the same proposed + specification are supported also. + + Note that color bitmaps are converted to grayscale if client + didn't ask for color. + + - As announced in the previous release, the old FreeType CFF + engine is now disabled by default. It can be conditionally + compiled by defining the configuration macro + CFF_CONFIG_OPTION_OLD_ENGINE. + + - As announced in the previous release, all code related to macro + FT_CONFIG_OPTION_OLD_INTERNALS has been removed, thus becoming + obsolete. + + + III. MISCELLANEOUS + + - The property API (`FT_Property_Get' and `FT_Property_Set') is + now declared as stable. + + The exception, however, are the experimental auto-hinter + properties `glyph-to-script-map' and `fallback-script' which are + subject to change in a forthcoming release. + + - `ftview' has been updated to support color embedded bitmaps; it + can be toggled on and off with key `c'. The small cache toggle + is now key `K'. + + - It is now possible to control the version of the TrueType + hinting engine using the new `interpreter-version' property of + the `truetype' module: Versions 35 and 38 (the default) are + supported, which roughly corresponds to disable and enable + subpixel hinting support, respectively. + + In both `ftview' and `ftdiff', switching between the two + versions can be done with key `H'. In the `ftbench' demo + program, command line option `-H' has been extended to activate + the non-default interpreter version. + + - The `ttdebug' program has been further improved. In particular, + it accepts a new command line option `-H' to select the hinting + engine. + + - `ftdump's verbose option has been renamed to `-V'. For all demo + programs, `-v' now shows version information. + + - Another round of TrueType subpixel hinting fixes. + + - The `apinames' tool can now create an import file for NetWare. + + - 64bit compilation of the new CFF engine was buggy. + + - Some fixes to improve robustness in memory-tight situations. + + +====================================================================== + +CHANGES BETWEEN 2.4.11 and 2.4.12 (2013-May-08) + + - We have another CFF parsing and hinting engine! Written by Dave + Arnold , this work has been contributed by + Adobe in collaboration with Google. It is vastly superior to + the old CFF engine, and it will replace it in the next release. + Right now, it is still off by default, and you have to + explicitly select it using the new `hinting-engine' property of + the cff driver: + + ... + #include FT_MODULE_H + #include FT_CFF_DRIVER_H + + FT_Library library; + int engine = FT_CFF_HINTING_ADOBE; + + + ... + FT_Property_Set( library, "cff", "hinting-engine", &engine ); + + The code has a (mature) beta status; we encourage all users to + test it and report any problems. + + In case you want to activate the new CFF engine unconditionally, + apply this patch: + +--- snip --- +diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c +index ebcf189..3f2ce6b 100644 +--- a/src/cff/cffobjs.c ++++ b/src/cff/cffobjs.c +@@ -1056,7 +1056,7 @@ + + + /* set default property values */ +- driver->hinting_engine = FT_CFF_HINTING_FREETYPE; ++ driver->hinting_engine = FT_CFF_HINTING_ADOBE; + driver->no_stem_darkening = FALSE; + + return FT_Err_Ok; +--- snip --- + + - The macro FT_CONFIG_OPTION_OLD_INTERNALS is no longer set by + default. In the next release, we will completely remove the + associated code. Please update your programs in case you are + still using this macro. + + + II. MISCELLANEOUS + + - The (top-level) `configure' script now respects the MAKE + environment variable to specify a `make' binary. For backward + compatibility, GNUMAKE still overrides MAKE, though. + + - The `ftview' and `ftdiff' demo programs have been redesigned, + showing more options permanently on the screen, among other + minor improvements. + + - Using the `H' key, it is now possible to select the CFF engine + in both `ftview' and `ftdiff'. + + - The new command line option `-H' for `ftbench' selects the Adobe + CFF engine. + + - It is now possible to directly select the LCD rendering mode + with the keys `A'-`F' in `ftview'. The key mapping for cycling + through LCD modes has been changed from `K' and `L' to `k' and + `l', and toggling custom LCD filtering is no longer mapped to + key `F' but to key `L'. + + - In `ftdiff', key `x' toggles between layout modes: Either use + the advance width (this is new and now the default) or the + bounding box information to determine line breaks. + + - For all demo tools, the new command line option `-v' shows the + version. + + - For the demo tools with a GUI, the new command line options `-w' + and `-h' select the width and the height of the output window, + respectively. + + - The `ttdebug' program was broken and has been reactivated. Note + that this program is not compiled by default. + + +====================================================================== + +CHANGES BETWEEN 2.4.10 and 2.4.11 (2012-Dec-20) + + I. IMPORTANT BUG FIXES + + - Some vulnerabilities in the BDF implementation have been fixed. + Users of this font format should upgrade. + + + II. IMPORTANT CHANGES + + - Subpixel hinting support has been contributed by Infinality, + based on Greg Hitchcock's whitepaper at + + https://learn.microsoft.com/typography/cleartype/truetypecleartype + + Originally, it was a separate patch available from + + https://web.archive.org/web/20150710073951/http://www.infinality.net:80/blog/ + + and which has been integrated. + + Note that ClearType support is not completely implemented! In + particular, full support for the options `compatible_widths', + `symmetrical_smoothing, and `bgr' (via the GETINFO bytecode + instruction) is missing. + + Activation of subpixel hinting support can be controlled with + the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' configuration option; it + is switched off by default. This feature is still experimental; + we welcome test reports! + + - Support for OpenType collections (OTC) has been added. + + - Pure CFF fonts within an SFNT wrapper are now supported. + + + III. MISCELLANEOUS + + - Minor rendering improvements to the auto-hinter. + + - `FT_GlyphSlot_Oblique' now uses a shear angle of 12°. + + - Experimental support to handle `property modules', for example + to control the behaviour of the auto-hinter. The API consists + of two new functions, `FT_Property_Set' and `FT_Property_Get'. + + The code is still subject to change and should not be used for + production. + + - The `ftdiff' demo program now supports UTF-8 encoded input files + for option `-f'. + + - Using keys `r' and `R', you can now adjust the stroker radius in + the `ftview' demo program. + + - Other, minor fixes and improvements. + + +====================================================================== + +CHANGES BETWEEN 2.4.9 and 2.4.10 (2012-Jun-15) + + I. IMPORTANT BUG FIXES + + - Incremental glyph loading as needed by ghostscript was broken. + + + II. MISCELLANEOUS + + - A new function `FT_Outline_EmboldenXY', contributed by Alexei + Podtelezhnikov. + + - In the `ftview' demo program, key `e' has been replaced with `x' + and `y' to embolden in the horizontal and vertical direction, + respectively. + + - The glyph spacing computation in `FT_GlyphSlot_Embolden' (and + similar code in `ftview') has been improved. + + - Minor improvements to the TrueType bytecode interpreter and + glyph loader, the auto-hinter, and the B/W rasterizer. + + +====================================================================== + +CHANGES BETWEEN 2.4.8 and 2.4.9 (2012-Mar-08) + + I. IMPORTANT BUG FIXES + + - Another round of fixes to better handle invalid fonts. Many of + them are vulnerabilities (see CVE-2012-1126 up to CVE-2012-1144 + and SA48320) so all users should upgrade. + + + II. MISCELLANEOUS + + - The `ENCODING -1 ' format of BDF fonts is now supported. + + - For BDF fonts, support for the whole Unicode encoding range has + been added. + + - Better TTF support for x_ppem != y_ppem. + + - `FT_Get_Advances' sometimes returned bogus values. + + - The demo programs no longer recognize and handle default + suffixes; you now have to always specify the complete font name. + + - Better rendering and LCD mode cycling added to `ftview'. + + +====================================================================== + +CHANGES BETWEEN 2.4.7 and 2.4.8 (2011-Nov-14) + + I. IMPORTANT BUG FIXES + + - Some vulnerabilities in handling CID-keyed PostScript fonts have + been fixed; see CVE-2011-3439. + + + II. MISCELLANEOUS + + - Chris Liddell contributed a new API, `FT_Get_PS_Font_Value', to + retrieve most of the dictionary keys in Type 1 fonts. + + +====================================================================== + +CHANGES BETWEEN 2.4.6 and 2.4.7 (2011-Oct-18) + + I. IMPORTANT BUG FIXES + + - Some vulnerabilities in handling Type 1 fonts have been fixed; + see CVE-2011-3256. + + + II. MISCELLANEOUS + + - FreeType now properly handles ZapfDingbats glyph names while + constructing a Unicode character map (for fonts which don't have + one). + + +====================================================================== + +CHANGES BETWEEN 2.4.5 and 2.4.6 (2011-Jul-29) + + I. IMPORTANT BUG FIXES + + - For TrueType based fonts, the ascender and descender values were + incorrect sometimes (off by a pixel if the ppem value was not a + multiple of 5). Depending on the use you might now experience + a different layout; the change should result in better, more + consistent line spacing. + + - Fix CVE-2011-0226 which causes a vulnerability while handling + Type 1 fonts. + + - BDF fonts containing glyphs with negative values for ENCODING + were incorrectly rejected. This bug has been introduced in + FreeType version 2.2.0. + + - David Bevan contributed a major revision of the FreeType stroker + code: + + . The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected. + + . A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has + been introduced to support PostScript and PDF miter joins. + + . FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an + alias for FT_STROKER_LINEJOIN_MITER. + + . Various stroking glitches has been fixed. + + + II. MISCELLANEOUS + + - SFNT bitmap fonts which contain an outline glyph for `.notdef' + only no longer set the FT_FACE_FLAG_SCALABLE flag. + + +====================================================================== + +CHANGES BETWEEN 2.4.4 and 2.4.5 (2011-Jun-25) + + I. IMPORTANT BUG FIXES + + - A rendering regression for second-order Bézier curves has been + fixed, introduced in 2.4.3. + + + II. IMPORTANT CHANGES + + - If autohinting is not explicitly disabled, FreeType now uses + the autohinter if a TrueType based font doesn't contain native + hints. + + - The load flag FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH has been made + redundant and is simply ignored; this means that FreeType now + ignores the global advance width value in TrueType fonts. + + + III. MISCELLANEOUS + + - `FT_Sfnt_Table_Info' can now return the number of SFNT tables of + a font. + + - Support for PCF files compressed with bzip2 has been contributed + by Joel Klinghed. To make this work, the OS must provide a + bzip2 library. + + - Bradley Grainger contributed project and solution files in + Visual Studio 2010 format. + + - Again some fixes to better handle broken fonts. + + - Some improvements to the B/W rasterizer. + + - Fixes to the cache module to improve robustness. + + - Just Fill Bugs contributed (experimental) code to compute blue + zones for CJK Ideographs, improving the alignment of horizontal + stems at the top or bottom edges. + + - The `ftgrid' demo program can now display autohinter segments, + to be toggled on and off with key `s'. + + +====================================================================== + +CHANGES BETWEEN 2.4.3 and 2.4.4 (2010-Nov-28) + + I. IMPORTANT BUG FIXES + + - UVS support (TrueType/OpenType cmap format 14) support is fixed. + This regression has been introduced in version 2.4.0. + + + II. MISCELLANEOUS + + - Detect tricky fonts (e.g. MingLiU) by the lengths and checksums + of Type42-persistent subtables (`cvt ', `fpgm', and `prep') when + a TrueType font without family name is given. The previous fix, + introduced in 2.4.3, was too rigorous, causing many subsetted + fonts (mainly from PDF files) displayed badly because FreeType + forced rendering with the TrueType bytecode engine instead of + the autohinter. + + - Better support for 64bit platforms. + + - More fixes to improve handling of broken fonts. + + +====================================================================== + +CHANGES BETWEEN 2.4.2 and 2.4.3 (2010-Oct-03) + + I. IMPORTANT BUG FIXES + + - Fix rendering of certain cubic, S-shaped arcs. This regression + has been introduced in version 2.4.0. + + + II. MISCELLANEOUS + + - To fix the above mentioned rendering issue, a new spline + flattening algorithm has been introduced which speeds up both + conic and cubic arcs. + + - Handling of broken fonts has been further improved. + + +====================================================================== + +CHANGES BETWEEN 2.4.1 and 2.4.2 (2010-Aug-06) + + I. IMPORTANT BUG FIXES + + - A stack overflow in CFF Type2 CharStrings interpreter is fixed. + + - Handling Type 42 font deallocation was broken; additionally, the + library is now more robust against malformed Type 42 fonts. + + + II. MISCELLANEOUS + + - Two new functions, `FT_Reference_Library' (in FT_MODULE_H) and + `FT_Reference_Face' (in FT_FREETYPE_H), have been added to + simplify life-cycle management. A counter gets initialized to 1 + at the time an FT_Library (or FT_Face) structure is created. + The two new functions increment the respective counter. + `FT_Done_Library' and `FT_Done_Face' then only destroy a library + or face if the counter is 1, otherwise they simply decrement the + counter. + + +====================================================================== + +CHANGES BETWEEN 2.4.0 and 2.4.1 (2010-Jul-18) + + I. IMPORTANT CHANGES + + - A serious bug in the CFF font module prevented display of many + glyphs in CFF fonts like `MinionPro-Regular.otf'. + + +====================================================================== + +CHANGES BETWEEN 2.3.12 and 2.4.0 (2010-Jul-12) + + I. IMPORTANT CHANGES + + - Since May 2010, all patents regarding the TrueType bytecode + interpreter have expired worldwide. Consequently, we now define + TT_CONFIG_OPTION_BYTECODE_INTERPRETER by default (and undefine + TT_CONFIG_OPTION_UNPATENTED_HINTING). + + - A new function `FT_Library_SetLcdFilterWeights' is available to + adjust the filter weights set by `FT_Library_SetLcdFilter'. + + + II. MISCELLANEOUS + + - Thanks to many reports from Robert ÅšwiÄ™cki, FreeType's stability + in handling broken or damaged fonts is much improved. + + - Support for LCD filter control has been added to the demo + programs `ftdiff' and `ftview'. + + +====================================================================== + +CHANGES BETWEEN 2.3.11 and 2.3.12 + + I. IMPORTANT CHANGES + + - For `FT_Open_Face', new parameters are available to ignore + preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and + FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY. + + + II. MISCELLANEOUS + + - Support for incremental font loading (controlled with the + FT_CONFIG_OPTION_INCREMENTAL macro) is now active by default. + + - Better support for vertical metrics. + + - Various minor bug fixes. + + +====================================================================== + +CHANGES BETWEEN 2.3.10 and 2.3.11 + + I. IMPORTANT BUG FIXES + + - Version 2.3.10 broke PCF support. + + +====================================================================== + +CHANGES BETWEEN 2.3.10 and 2.3.9 + + I. IMPORTANT BUG FIXES + + - If all ASCII digits in a font have the same (unscaled) width, + the autohinter respects this and won't change it. + + - TrueType fonts are now rasterized correctly if the horizontal + and vertical resolution differ. + + - Type 1 fonts are now handled with increased precision internally + to avoid serious rounding issues if non-integral coordinates are + encountered. + + - Horizontally condensed CFF fonts (using the font matrix) were + rendered incorrectly. This bug has been introduced after + release 2.3.5. + + + II. IMPORTANT CHANGES + + - Support for the SFNT cmap 13 table format (as defined by the new + OpenType 1.6 specification) has been added. + + - B/W rasterization of well-hinted TrueType fonts at small sizes + has been greatly improved. + + - Calculation of vertical metrics in OpenType fonts has been + improved. + + + III. MISCELLANEOUS + + - It is now possible to change the emboldening factor in the + `ftview' demo program with keys `e' and `E'. + + - It is now possible to change the slant value in the `ftview' + demo program with keys `s' and `S'. + + - The 5-levels grayscale mode of the `ftraster' module (which + FreeType doesn't use by default) was broken since version 2.3.0. + + - Compilation of the `ftgrays' and `ftraster' modules was broken + in stand-alone mode. + + - Various fixes for compilation on 64bit and 16bit architectures. + + +====================================================================== + +CHANGES BETWEEN 2.3.9 and 2.3.8 + + I. IMPORTANT BUG FIXES + + - Very unfortunately, FreeType 2.3.8 contained a change that broke + its official ABI. The end result is that programs compiled + against previous versions of the library, but dynamically linked + to 2.3.8 can experience memory corruption if they call the + `FT_Get_PS_Font_Info' function. + + We recommend all users to upgrade to 2.3.9 as soon as possible, + or to downgrade to a previous release of the library if this is + not an option. + + The origin of the bug is that a new field was added to the + publicly defined `PS_FontInfoRec' structure. Unfortunately, + objects of this type can be stack or heap allocated by callers + of `FT_Get_PS_Font_Info', resulting in a memory buffer + overwrite with its implementation in 2.3.8. + + If you want to know whether your code is vulnerable to this + issue, simply search for the substrings `PS_FontInfo' and + `PS_Font_Info' in your source code. If none is found, your code + is safe and is not affected. + + The FreeType team apologizes for the problem. + + - The POSIX support of MacOS resource-fork fonts (Suitcase fonts + and LaserWriter Type1 PostScript fonts) was broken in 2.3.8. If + FreeType2 is built without Carbon framework, these fonts are not + handled correctly. Version 2.3.7 didn't have this bug. + + - `FT_Get_Advance' (and `FT_Get_Advances') returned bad values for + almost all font formats except TrueType fonts. + + - Fix a bug in the SFNT kerning table loader/parser which could + crash the engine if certain malformed tables were encountered. + + - Composite SFNT bitmaps are now handled correctly. + + + II. IMPORTANT CHANGES + + - The new functions `FT_Get_CID_Is_Internally_CID_keyed' and + `FT_Get_CID_From_Glyph_Index' can be used to access CID-keyed + CFF fonts via CID values. This code has been contributed by + Michael Toftdal. + + + III. MISCELLANEOUS + + - `FT_Outline_Get_InsideBorder' returns FT_STROKER_BORDER_RIGHT + for empty outlines. This was incorrectly documented. + + - The `ftview' demo program now supports UTF-8 encoded strings. + + +====================================================================== + +CHANGES BETWEEN 2.3.8 and 2.3.7 + + I. IMPORTANT BUG FIXES + + - CID-keyed fonts in an SFNT wrapper were not handled correctly. + + - The smooth renderer produced truncated images (on the right) for + outline parts with negative horizontal values. Most fonts don't + contain outlines left to the y coordinate axis, but the effect + was very noticeable for outlines processed with FT_Glyph_Stroke, + using thick strokes. + + - `FT_Get_TrueType_Engine_Type' returned a wrong value if both + configuration macros TT_CONFIG_OPTION_BYTECODE_INTERPRETER and + TT_CONFIG_OPTION_UNPATENTED_HINTING were defined. + + - The `face_index' field in the `FT_Face' structure wasn't + initialized properly after calling FT_Open_Face and friends with + a positive face index for CFFs, WinFNTs, and, most importantly, + for TrueType Collections (TTCs). + + + II. IMPORTANT CHANGES + + - Rudimentary support for Type 1 fonts and CID-keyed Type 1 fonts + in an SFNT wrapper has been added -- such fonts are used on the + Mac. The core SFNT tables `TYP1' and `CID ' are passed to the + PS Type 1 and CID-keyed PS font drivers; other tables (`ALMX', + `BBOX', etc.) are not supported yet. + + - A new interface to extract advance values of glyphs without + loading their outlines has been added. The functions are called + `FT_Get_Advance' and `FT_Get_Advances'; they are defined in file + `ftadvanc.h' (to be accessed as FT_ADVANCES_H). + + - A new function `FT_Get_FSType_Flags' (in FT_FREETYPE_H) has been + contributed by David Bevan to access the embedding and + subsetting restriction information of fonts. + + + III. MISCELLANEOUS + + - FT_MulFix is now an inlined function; by default, assembler code + is provided for x86 and ARM. See FT_CONFIG_OPTION_INLINE_MULFIX + and FT_CONFIG_OPTION_NO_ASSEMBLER (in ftoption.h) for more. + + - The handling of `tricky' fonts (that is, fonts which don't work + with the autohinter, needing the font format's hinting engine) + has been generalized and changed slightly: + + . A new face flag FT_FACE_FLAG_TRICKY indicates that the font + format's hinting engine is necessary for correct rendering. + The macro FT_IS_TRICKY can be used to check this flag. + + . FT_LOAD_NO_HINTING is now ignored for tricky fonts. To really + force raw loading of such fonts (without hinting), both + FT_LOAD_NO_HINTING and FT_LOAD_NO_AUTOHINT must be used -- + this is something which you probably never want to do. + + . Tricky TrueType fonts always use the bytecode interpreter, + either the patented or unpatented version. + + - The function `FT_GlyphSlot_Own_Bitmap' has been moved from + FT_SYNTHESIS_H to FT_BITMAP_H; it is now part of the `official' + API. (The functions in FT_SYNTHESIS_H are still subject to + change, however.) + + - In the `ftdiff' demo program you can now toggle the use of + FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH with key `a'. + + +====================================================================== + +CHANGES BETWEEN 2.3.7 and 2.3.6 + + I. IMPORTANT BUG FIXES + + - If the library was compiled on an i386 platform using gcc, and + compiler option -O3 was given, `FT_MulFix' sometimes returned + incorrect results which could have caused problems with + `FT_Request_Metrics' and `FT_Select_Metrics', returning an + incorrect descender size. + + - Pure CFFs without subfonts were scaled incorrectly if the font + matrix was non-standard. This bug has been introduced in + version 2.3.6. + + - The `style_name' field in the `FT_FaceRec' structure often + contained a wrong value for Type 1 fonts. This misbehaviour + has been introduced in version 2.3.6 while trying to fix + another problem. [Note, however, that this value is + informative only since the used algorithm to extract it is + very simplistic.] + + + II. IMPORTANT CHANGES + + - Two new macros, FT_OUTLINE_SMART_DROPOUTS and + FT_OUTLINE_EXCLUDE_STUBS, have been introduced. Together with + FT_OUTLINE_IGNORE_DROPOUTS (which was ignored previously) it is + now possible to control the dropout mode of the `raster' module + (for B&W rasterization), using the `flags' field in the + `FT_Outline' structure. + + - The TrueType bytecode interpreter now passes the dropout mode to + the B&W rasterizer. This greatly increases the output for small + ppem values of many fonts like `pala.ttf'. + + +====================================================================== + +CHANGES BETWEEN 2.3.6 and 2.3.5 + + I. IMPORTANT BUG FIXES + + - A bunch of potential security problems have been found. All + users should update. + + - Microsoft Unicode cmaps in TrueType fonts are now always + preferred over Apple cmaps. This is not a bug per se, but there + exist some buggy fonts created for MS which have broken Apple + cmaps. This affects only the automatic selection of FreeType; + it's always possible to manually select an Apple Unicode cmap if + desired. + + - Many bug fixes to the TrueType bytecode interpreter. + + - Improved Mac support. + + - Subsetted CID-keyed CFFs are now supported correctly. + + - CID-keyed CFFs with subfonts which are scaled in a non-standard + way are now handled correctly. + + - A call to FT_Open_Face with `face_index' < 0 crashed FreeType if + the font was a Windows (bitmap) FNT/FON. + + + II. IMPORTANT CHANGES + + - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives + access to those fields in a CID-keyed font. The code has been + contributed by Derek Clegg. + + - George Williams contributed code to validate the new `MATH' + OpenType table (within the `otvalid' module). The `ftvalid' + demo program has been extended accordingly. + + - An API for cmap 14 support (for Unicode Variant Selectors, UVS) + has been contributed by George Williams. + + - A new face flag FT_FACE_FLAG_CID_KEYED has been added, together + with a macro FT_IS_CID_KEYED which evaluates to 1 if the font is + CID-keyed. + + + III. MISCELLANEOUS + + - Build support for symbian has been contributed. + + - Better WGL4 glyph name support, contributed by Sergey Tolstov. + + - Debugging output of the various FT_TRACEX macros is now sent to + stderr. + + - The `ftview' demo program now provides artificial slanting too. + + - The `ftvalid' demo program has a new option `-f' to select the + font index. + + +====================================================================== + +CHANGES BETWEEN 2.3.5 and 2.3.4 + + I. IMPORTANT BUG FIXES + + - Some subglyphs in TrueType fonts were handled incorrectly due to + a missing graphics state reinitialization. + + - Large .Z files (as distributed with some X11 packages) weren't + handled correctly, making FreeType increase the heap stack in an + endless loop. + + - A large number of bugs have been fixed to avoid crashes and + endless loops with invalid fonts. + + + II. IMPORTANT CHANGES + + - The two new cache functions `FTC_ImageCache_LookupScaler' and + `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of + glyphs using an `FTC_Scaler' object; this makes it possible to + use fractional pixel sizes in the cache. The demo programs have + been updated accordingly to use this feature. + + - A new API `FT_Get_CMap_Format' has been added to get the cmap + format of a TrueType font. This is useful in handling PDF + files. The code has been contributed by Derek Clegg. + + - The auto-hinter now produces better output by default for + non-Latin scripts like Indic. This was done by using the CJK + hinting module as the default instead of the Latin one. Thanks + to Rahul Bhalerao for this suggestion. + + - A new API `FT_Face_CheckTrueTypePatents' has been added to find + out whether a given TrueType font uses patented bytecode + instructions. The `ft2demos' bundle contains a new program + called `ftpatchk' which demonstrates its usage. + + - A new API `FT_Face_SetUnpatentedHinting' has been added to + enable or disable the unpatented hinter. + + - Support for Windows FON files in PE format has been contributed + by Dmitry Timoshkov. + + + III. MISCELLANEOUS + + - Vincent Richomme contributed Visual C++ project files for Pocket + PCs. + + +====================================================================== + +CHANGES BETWEEN 2.3.4 and 2.3.3 + + I. IMPORTANT BUG FIXES + + - A serious bug in the handling of bitmap fonts (and bitmap + strikes of outline fonts) has been introduced in 2.3.3. + + +====================================================================== + +CHANGES BETWEEN 2.3.3 and 2.3.2 + + I. IMPORTANT BUG FIXES + + - Remove a serious regression in the TrueType bytecode interpreter + that was introduced in version 2.3.2. Note that this does not + disable the improvements introduced to the interpreter in + version 2.3.2, only some ill cases that occurred with certain + fonts (though a few popular ones). + + - The auto-hinter now ignores single-point contours for computing + blue zones. This bug created `wavy' baselines when rendering + text with various fonts that use these contours to model + mark-attach points (these are points that are never rasterized + and are placed outside of the glyph's real outline). + + - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to + zero for mono-spaced fonts. Otherwise code that uses them would + essentially ruin the fixed-advance property. + + - Fix CVE-2007-1351 which can cause an integer overflow while + parsing BDF fonts, leading to a potentially exploitable heap + overflow condition. + + + II. MISCELLANEOUS + + - Fixed compilation issues on some 64-bit platforms (see ChangeLog + for details). + + - A new demo program `ftdiff' has been added to compare TrueType + hinting, FreeType's auto hinting, and rendering without hinting + in three columns. + + +====================================================================== + +CHANGES BETWEEN 2.3.2 and 2.3.1 + + I. IMPORTANT BUG FIXES + + - FreeType returned incorrect kerning information from TrueType + fonts when the bytecode interpreter was enabled. This happened + due to a typo introduced in version 2.3.0. + + - Negative kerning values from PFM files are now reported + correctly (they were read as 16-bit unsigned values from the + file). + + - Fixed a small memory leak when `FT_Init_FreeType' failed for + some reason. + + - The Postscript hinter placed and sized very thin and ghost stems + incorrectly. + + - The TrueType bytecode interpreter has been fixed to get rid of + most of the rare differences seen in comparison to the Windows + font loader. + + + II. IMPORTANT CHANGES + + - The auto-hinter now better deals with serifs and corner cases + (e.g., glyph '9' in Arial at 9pt, 96dpi). It also improves + spacing adjustments and doesn't change widths for non-spacing + glyphs. + + - Many Mac-specific functions are deprecated (but still + available); modern replacements have been provided for them. + See the documentation in file `ftmac.h'. + + +====================================================================== + +CHANGES BETWEEN 2.3.1 and 2.3.0 + + I. IMPORTANT BUG FIXES + + - The TrueType interpreter sometimes returned incorrect horizontal + metrics due to a bug in the handling of the SHZ instruction. + + - A typo in a security check introduced after version 2.2.1 + prevented FreeType to render some glyphs in CFF fonts. + + +====================================================================== + +CHANGES BETWEEN 2.3.0 and 2.2.1 + + I. IMPORTANT BUG FIXES + + - The PCF font loader is now much more robust while loading + malformed font files. + + - Various memory leaks have been found and fixed. + + - The TrueType name loader now deals properly with some fonts that + encode their names in UTF-16 (the specification was vague, and + the code incorrectly assumed UCS-4). + + - Fixed the TrueType bytecode loader to deal properly with subtle + monochrome/gray issues when scaling the CVT. Some fonts + exhibited bad rendering artifacts otherwise. + + - `FT_GlyphSlot_Embolden' now supports vertical layouts correctly + (it mangled the vertical advance height). + + - Fixed byte endian issues of `ftmac.c' to support Mac OS X on + i386. + + - The PFR font loader no longer erroneously tags font files + without any outlines as FT_FACE_FLAG_SCALABLE. + + + II. NEW API FUNCTIONS + + - `FT_Library_SetLcdFilter' allows you to select a special filter + to be applied to the bitmaps generated by `FT_Render_Glyph' if + one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has + been selected. This filter is used to reduce color fringes; + several settings are available through the FT_LCD_FILTER_XXX + enumeration. + + Its declaration and documentation can be found in file + `include/freetype/ftlcdfil.h' (to be accessed with macro + FT_LCD_FILTER_H). + + *IMPORTANT*: This function returns an error + (FT_Err_Unimplemented_Feature) in default builds of the library + for patent reasons. See below. + + - `FT_Get_Gasp' allows you to query the flags of the TrueType + `gasp' table for a given character pixel size. This is useful + to duplicate the text rendering of MS Windows when the native + bytecode interpreter is enabled (which isn't the default for + other patent reasons). + + Its declaration and documentation can be found in file + `include/freetype/ftgasp.h' (to be accessed with macro + FT_GASP_H). + + + III. IMPORTANT CHANGES + + - The auto-hinter has been tuned a lot to improve its results with + serif fonts, resulting in much better font rendering of many web + pages. + + - The unpatented hinter is now part of the default build of the + library; we have added code to automatically support `tricky' + fonts that need it. + + This means that FreeType should `just work' with certain Asian + fonts, like MingLiU, which cannot properly be loaded without a + bytecode interpreter, but which fortunately do not use any of + the patented bytecode opcodes. We detect these fonts by name, + so please report any font file that doesn't seem to work with + FreeType, and we shall do what we can to support it in a next + release. + + Note that the API hasn't changed, so you can still force + unpatented hinting with a special parameter to `FT_Open_Face' as + well. This might be useful in same cases; for example, a PDF + reader might present a user option to activate it to deal with + certain `tricky' embedded fonts which cannot be clearly + identified. + + If you are a developer for embedded systems, you might want to + *disable* the feature to save code space by undefining + TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'. + + - LCD-optimized rendering is now *disabled* in all default builds + of the library, mainly due to patent issues. For more + information see: + + https://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html + + A new configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING + has been introduced in `ftoption.h'; manually define it in this + file if you want to re-enable the feature. + + The change only affects the implementation, not the FreeType + API. This means that clients don't need to be modified, because + the library still generates LCD decimated bitmaps, but with the + added constraint that R=G=B on each triplet. + + The displayed result should be equal to normal anti-aliased + rendering. + + Additionally, if FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not + defined, the new `FT_Library_SetLcdFilter' function returns the + FT_Err_Unimplemented_Feature error code. + + - Some computation bugs in the TrueType bytecode interpreter were + found, which allow us to get rid of very subtle and rare + differences we had experienced with the Windows renderer. + + - It is now possible to cross-compile the library easily. See the + file `docs/INSTALL.CROSS' for details. + + - The file `src/base/ftmac.c' now contains code for Mac OS X only; + its deprecated function `FT_GetFile_From_Mac_Font_Name' always + returns an error even if the QuickDraw framework is available. + The previous version has been moved to `builds/mac/ftmac.c'. + + Selecting configure option `--with-quickdraw-carbon' makes the + build process use the original `ftmac.c' file instead of the Mac + OS X-only version. + + + IV. MISCELLANEOUS + + - Various performance and memory footprint optimizations have been + performed on the TrueType and CFF font loaders, sometimes with + very drastic benefits (e.g., the TrueType loader is now about + 25% faster; FreeType should use less heap memory under nearly + all conditions). + + - The anti-aliased rasterizer has been optimized and is now 15% to + 25% percent faster than in previous versions, depending on + content. + + - The Type 1 loader has been improved; as an example, it now skips + top-level dictionaries properly. + + - Better support for Mac fonts on POSIX systems, plus compilation + fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built. + + - Configuration without `--with-old-mac-fonts' does not include + `ftmac.c' (this was the behaviour in FreeType version 2.1.10). + + - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs + in the kern table. + + +====================================================================== + +CHANGES BETWEEN 2.2.1 and 2.2 + + I. IMPORTANT BUG FIXES + + - Various integer overflows have been fixed. + + - PFB fonts with MacOS resource fork weren't handled correctly on + non-MacOS platforms. + + +====================================================================== + +CHANGES BETWEEN 2.2 and 2.1.10 + +(not released officially) + + I. IMPORTANT BUG FIXES + + - Vertical metrics for SFNT fonts were incorrect sometimes. + + - The FT_HAS_KERNING macro always returned 0. + + - CFF OpenType fonts didn't return correct vertical metrics for + glyphs with outlines. + + - If FreeType was compiled without hinters, all font formats based + on PS outlines weren't scaled correctly. + + + II. IMPORTANT CHANGES + + - Version 2.2 no longer exposes its internals, that is, the header + files located in the `include/freetype/internal' directory of + the source package are not copied anymore by the `make install' + command. Consequently, a number of rogue clients which directly + access FreeType's internal functions and structures won't + compile without modification. + + We provide patches for most of those rogue clients. See the + following page for more information: + + https://freetype.org/freetype2/patches/rogue-patches.html + + Note that, as a convenience to our Unix desktop users, version + 2.2 is *binary* compatible with FreeType 2.1.7, which means that + installing this release on an existing distribution shall not + break any working desktop. + + - FreeType's build mechanism has been redesigned. With GNU make + it is now sufficient in most cases to edit two files: + `modules.cfg', to select the library components, and the + configuration file `include/freetype/config/ftoption.h' (which + can be copied to the objects directory). Removing unused module + directories to prevent its compilation and editing + `include/freetype/config/ftmodule.h' is no longer necessary. + + - The LIGHT hinting algorithm produces more pleasant results. + Also, using the FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph + always forces auto-hinting, as a special exception. This allows + you to experiment with it even if you have enabled the TrueType + bytecode interpreter in your build. + + - The auto hinter now employs a new algorithm for CJK fonts, based + on Akito Hirai's patch. Note that this only works for fonts + with a Unicode charmap at the moment. + + - The following callback function types have changed slightly (by + adding the `const' keyword where appropriate): + + FT_Outline_MoveToFunc + FT_Outline_LineToFunc + FT_Outline_ConicToFunc + FT_Outline_CubicToFunc + FT_SpanFunc + FT_Raster_RenderFunc + + FT_Glyph_TransformFunc + FT_Renderer_RenderFunc + FT_Renderer_TransformFunc + + Note that this doesn't affect binary backward compatibility. + + - On MacOS, new APIs have been added as replacements for legacy + APIs: `FT_New_Face_From_FSRef' for `FT_New_Face_From_FSSpec', + and `FT_GetFile_From_Mac_ATS_Name' for + `FT_GetFile_From_Mac_Name'. Legacy APIs are still available, if + FreeType is built without disabling them. + + - A new API `FT_Select_Size' has been added to select a bitmap + strike by its index. Code using other functions to select + bitmap strikes should be updated to use this function. + + - A new API `FT_Get_SubGlyph_Info' has been added to retrieve + subglyph data. This can be used by rogue clients which used to + access the internal headers to get the corresponding data. + + - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for + BDF/PCF fonts, and only for them. This causes inconsistency. + In this release, we undo the change. The intent of the change + in 2.1.10 is to allow size selection through real dimensions, + which can now be done through `FT_Request_Size'. + + - Some security issues were discovered and fixed in the CFF and + Type 1 loader, causing crashes of FreeType by malformed font + files. + + + III. MISCELLANEOUS + + - The documentation for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX + values now better reflects its usage and differences: One set is + used to specify the hinting algorithm, the other to specify the + pixel rendering mode. + + - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been + changed to count supported scalable faces (sfnt, LWFN) only, and + to return the number of available faces via face->num_faces. + Unsupported bitmap faces (fbit, NFNT) are ignored. + + - builds/unix/configure has been improved for MacOS X. It now + automatically checks available functions in Carbon library, and + prepare to use newest functions by default. Options to specify + the dependencies of each Carbon APIs (FSSpec, FSRef, old/new + QuickDraw, ATS) are available too. By manual disabling of all + QuickDraw functionality, FreeType can be built without + `deprecated function' warnings on MacOS 10.4.x, but + FT_GetFile_Mac_Name in ftmac.c then is changed to a dummy + function, and returns an `unimplemented' error. For details see + builds/mac/README. + + - SFNT cmap handling has been improved, mainly to run much faster + with CJK fonts. + + - A new function `FT_Get_TrueType_Engine_Type (declared in + `FT_MODULE_H') is provided to determine the status of the + TrueType bytecode interpreter compiled into the library + (patented, unpatented, unimplemented). + + - Vertical metrics of glyphs are synthesized if the font does not + provide such information. You can tell whether the metrics are + synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of + the face. + + - The demo programs `ftview' and `ftstring' have been rewritten + for better readability. `ftview' has a new switch `-p' to test + FT_New_Memory_Face (instead of FT_New_Face). + + - FreeType now honours bit 1 in the `head' table of TrueType fonts + (meaning `left sidebearing point at x=0'). This helps with some + buggy fonts. + + - Rudimentary support for Adobe's new `SING Glyphlet' format. See + + https://www.adobe.com/content/dam/acom/en/devnet/font/pdfs/5148.SING_Tutorial.pdf + + for more information. + + - The `ftdump' program from the `ft2demos' bundle now shows some + information about charmaps. It also supports a new switch `-v' + to increase verbosity. + + - Better AFM support. This includes track kerning support. + + +====================================================================== + +CHANGES BETWEEN 2.1.10 and 2.1.9 + + I. IMPORTANT BUG FIXES + + - The size comparison for BDF and PCF files could fail sometimes. + + - Some CFF files were still not loaded correctly. Patch from + Derek Noonburg. + + - The stroker still had some serious bugs. + + - Boris Letocha fixed a bug in the TrueType interpreter: The + NPUSHW instruction wasn't skipped correctly in IF clauses. Some + fonts like `Helvetica 75 Bold' failed. + + - Another serious bug in handling TrueType hints caused many + distortions. It has been introduced in version 2.1.8, and it is + highly recommended to upgrade. + + - FreeType didn't properly parse empty Type 1 glyphs. + + - An unbound dynamic buffer growth was fixed in the PFR loader. + + - Several bugs have been fixed in the cache sub-system. + + - FreeType behaved incorrectly when resizing two distinct but very + close character pixel sizes through `FT_Set_Char_Size' (Savannah + bug #12263). + + - The auto-hinter didn't work properly for fonts without a Unicode + charmap -- it even refused to load the glyphs. + + + II. IMPORTANT CHANGES + + - Many fixes have been applied to drastically reduce the amount of + heap memory used by FreeType, especially when using + memory-mapped font files (which is the default on Unix systems + which support them). + + - The auto-hinter has been replaced with a new module, called the + `auto-fitter'. It consumes less memory than its predecessor, + and it is prepared to support non-latin scripts better in next + releases. + + - George Williams contributed code to read kerning data from PFM + files. + + - FreeType now uses the TT_NAME_ID_PREFERRED_FAMILY and + TT_NAME_ID_PREFERRED_SUBFAMILY strings (if available) for + setting family and style in SFNT fonts (patch from Kornfeld + Eliyahu Peter). + + - A new API `FT_Sfnt_Table_Info' (in FT_TRUETYPE_TABLES_H) has + been added to retrieve name and size information of SFNT tables. + + - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has + been added to validate OpenType tables (BASE, GDEF, GPOS, GSUB, + JSTF). After validation it is no longer necessary to check + for errors in those tables while accessing them. + + Note that this module might be moved to another library in the + future to avoid a tight dependency between FreeType and the + OpenType specification. + + - A new API in FT_BITMAP_H (`FT_Bitmap_New', `FT_Bitmap_Convert', + `FT_Bitmap_Copy', `FT_Bitmap_Embolden', `FT_Bitmap_Done') has + been added. Its use is to convert an FT_Bitmap structure in + 1bpp, 2bpp, 4bpp, or 8bpp format into another 8bpp FT_Bitmap, + probably using a different pitch, and to further manipulate it. + + - A new API `FT_Outline_Embolden' (in FT_OUTLINE_H) gives finer + control how outlines are emboldened. + + - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H) now handles bitmaps + also (code contributed by Chia I Wu). Note that this function + is still experimental and may be replaced with a better API. + + - The method how BDF and PCF bitmap fonts are accessed has been + refined. Formerly, FT_Set_Pixel_Sizes and FT_Set_Char_Size + were synonyms in FreeType's BDF and PCF interface. This has + changed now. FT_Set_Pixel_Sizes should be used to select the + actual font dimensions (the `strike', which is the sum of the + `FONT_ASCENT' and `FONT_DESCENT' properties), while + FT_Set_Char_Size selects the `nominal' size (the `PIXELSIZE' + property). In both functions, the width parameter is ignored. + + + III. MISCELLANEOUS + + - The BDF driver no longer converts all returned bitmaps with a + depth of 2bpp or 4bpp to a depth of 8bpp. The documentation has + not mentioned this explicitly, but implementors might have + relied on this after looking into the source files. + + - A new option `--ftversion' has been added to freetype-config to + return the FreeType version. + + - The memory debugger has been updated to dump allocation + statistics on all allocation sources in the library. This is + useful to spot greedy allocations when loading and processing + fonts. + + - We removed a huge array of constant pointers to constant strings + in the `psnames' module. The problem was that compilations in + PIC mode (i.e., when generating a Unix shared object/dll) put + the array into the non-shared writable section of the library + since absolute pointers are not relocatable by nature. + + This reduces the memory consumption by approximately 16KByte per + process linked to FreeType. We now also store the array in a + compressed form (as a trie) which saves about 20KByte of code as + well. + + - Kirill Smelkov provided patches to make src/raster/ftraster.c + compile stand-alone again. + + +====================================================================== + +CHANGES BETWEEN 2.1.9 and 2.1.8 + + I. IMPORTANT BUG FIXES + + - The function `FT_Get_CharMap_Index' was only declared, without + any real code. For consistency, it has been renamed to + `FT_Get_Charmap_Index'. (This function is needed to implement + cmap caches.) + + - `FT_Outline_Get_BBox' sometimes returned incorrect values for + conic outlines (e.g., for TrueType fonts). + + - Handling of `bhed' table has been fixed. + + - The TrueType driver with enabled byte code interpreter sometimes + returned artifacts due to incorrect rounding. This bug has been + introduced after version 2.1.4. + + - The BDF driver dropped the last glyph in the font. + + - The BDF driver now uses the DEFAULT_CHAR property (if available) + to select a glyph shape for the undefined glyph. + + - The stroker failed for closed outlines and single points. + + + II. IMPORTANT CHANGES + + - George Williams contributed code to handle Apple's font + distortion technology found in GX fonts (`avar', `cvar', `fvar', + and `gvar' tables; the Multiple Masters API has been slightly + extended to cope with the new functionality). + + - The `FT_GlyphSlotRec' structure has been extended: The elements + `lsb_delta' and `rsb_delta' give the difference between hinted + and unhinted left and right side bearings if autohinting is + active. Using those values can improve the inter-letter spacing + considerably. See the documentation of `FT_GlyphSlotRec' and + the `ftstring' demo program how to use it. + + - Loading TrueType and Type 1 fonts has been made much faster. + + - The stroker is no longer experimental (but the cache subsystem + still is). + + + III. MISCELLANEOUS + + - A new documentation file `formats.txt' describes various font + formats supported (and not supported) by FreeType. + + +====================================================================== + +CHANGES BETWEEN 2.1.8 and 2.1.7 + + I. IMPORTANT BUG FIXES + + - The native TrueType hinter contained some bugs which prevented + some fonts to be rendered correctly, most notably Legendum.otf. + + - The PostScript hinter now produces improved results. + + - The linear advance width and height values were incorrectly + rounded, making them virtually unusable if not loaded with + FT_LOAD_LINEAR_DESIGN. + + - Indexing CID-keyed CFF fonts is now working: The glyph index is + correctly treated as a CID, similar to FreeType's CID driver + module. Note that CID CMap support is still missing. + + - The FT_FACE_FLAG_GLYPH_NAMES flag is now set correctly for all + font formats. + + - Some subsetted Type 1 fonts weren't parsed correctly. This bug + has been introduced in 2.1.7. In summary, the Type 1 parser has + become more robust. + + - Non-decimal numbers weren't parsed correctly in PS fonts. + + - The WinFNT driver now correctly reports FT_ENCODING_NONE for all + but one encoding. Use the new FT_WinFNT_ID_XXX values together + with `FT_Get_WinFNT_Header' to get the WinFNT charset ID. + + - The descender metrics (face->size->metrics.descender) for WinFNT + bitmap fonts had the wrong sign. + + - The (emulated) `seac' support for CFF fonts was broken. + + - The `flex' operator didn't work for CFF fonts. + + - PS glyphs which use the `hintmask' operator haven't been + rendered correctly in some cases. + + - Metrics for BDF and PCF bitmap font formats have been fixed. + + - Autohinting is now disabled for glyphs which are vertically + distorted or mirrored (using a transformation matrix). This + fixes a bug which produced zero-height glyphs. + + - The `freetype-config' script now handles --prefix and + --exec-prefix correctly; it also returns the proper --rpath (or + -R) value if FreeType has been built as a shared library. + + + II. IMPORTANT CHANGES + + - Both PCF and BDF drivers now handle the SETWIDTH_NAME and + ADD_STYLE_NAME properties. Values are appended to + face->style_name; example: `Bold SemiCondensed'. + + - The PCF driver now handles bitmap fonts compressed with the LZW + algorithm (extension .pcf.Z, compressed with `compress'). + + - A new API function `FT_Get_CMap_Language_ID' (declared in + `tttables.h') is available to get the language ID of a + TrueType/SFNT cmap. + + - The hexadecimal format of data after the `StartData' command in + CID-keyed Type 1 fonts is now supported. While this can't occur + in file-based fonts, it can happen in document-embedded + resources of PostScript documents. + + - Embedded bitmaps in SFNT-based CFF fonts are now supported. + + - A simple API is now available to control FreeType's tracing + mechanism if compiled with FT_DEBUG_LEVEL_TRACE. See the file + `ftdebug.h' for more details. + + - YAMATO Masatake contributed improved handling of MacOS resource + forks on non-MacOS platforms (for example, Linux can mount MacOS + file systems). + + - Support for MacOS has been improved; there is now a new function + `FT_New_Face_From_FSSpec' similar to `FT_New_Face' except that + it accepts an FSSpec instead of a path. + + - The cache sub-system has been rewritten. + + - There is now support for deinstallation of faces. + + - A new API function `FTC_Manager_RemoveFaceID' has been added + to delete all `idle' nodes that correspond to a given + FTC_FaceID. All `locked' nodes (i.e., those with a reference + count > 0), will be modified to prevent them from appearing in + further lookups (they will be cleaned normally when their + reference count reaches 0). + + - There is now support for point scaling (i.e., providing + character sizes in points + dpis, instead of pixels). + + - Three abstract cache classes are now available: + + FTC_GCache: Used to store one glyph item per cache node, + with the ability to group common attributes into + `families'. This replaces the old + FTC_GlyphCache class. + + FTC_ICache: Used to store one FT_Glyph per cache node. This + extends FTC_GCache. Family definition, family + comparison, and glyph loading are however left + to sub-classes. + + FTC_SCache: Used to store up to 16 small bitmaps per cache + node. This extends FTC_GCache. Family + definition, family comparison and glyph loading + are however left to sub-classes. + + - The file `src/cache/ftcbasic.c' implements: + + FTC_ImageCache: Extends FTC_ICache; implements family + definitions and glyph loading similar to the + old API. + + FTC_SBitCache: Extends FTC_SCache, implements family + definitions and glyph loading similar to the + old API + + Client applications should be able to extend FTC_GCache, + FTC_ICache, or FTC_SCache much more easily (i.e., less code to + write, and less callbacks). For example, one could envision + caches that are capable of storing transformed (obliqued), + stroked, emboldened, or colored glyph images. Use + `ftcbasic.c' as an example. + + - All public APIs are now in `include/freetype/ftcache.h', (to + be accessed as `FT_CACHE_H'). The contents of + `include/freetype/cache/' is only needed by applications that + wish to implement their own caches. + + - There were some major performance improvements through the use + of various programming tricks. Cache hits are up to 70% + faster than in the old code. + + - The FTC_CMapCache has been simplified. Charmaps can only be + accessed by index right now. There is also a new API named + `FT_Charmap_GetIndex' for this purpose. + + - The demo programs have been updated to the new code. The + previous versions will not work with the current one. + + - Using an invalid face index in FT_Open_Face and friends now + causes an error even if the font contains a single face only. + + + III. MISCELLANEOUS + + - Wolfgang Domröse contributed support files for building FreeType + on the Atari using the PureC compiler. Note that the Atari is a + 16bit platform. + + - Vitaliy Pasternak contributed project files for VS.NET 2003. + + +====================================================================== + +CHANGES BETWEEN 2.1.7 and 2.1.6 + + I. IMPORTANT BUG FIXES + + - Updated to newest libtool version, fixing build problems on + various platforms. + + - On Unix platforms, `make install' didn't copy the correct + `ftconfig.h' file. + + Note that version 2.1.7 contains the same library C source code as + version 2.1.6. + + +====================================================================== + +CHANGES BETWEEN 2.1.6 and 2.1.5 + + I. IMPORTANT BUG FIXES + + - The PFR font driver didn't load kerning tables correctly, and + the functions in FT_PFR_H didn't work at all. + + - Type 1 font files in binary format (PFB) with an end-of-file + indicator weren't accepted by the FreeType engine. + + - Fonts which contain /PaintType and /StrokeWidth no longer cause + a segfault. This bug has been introduced in version 2.1.5. + + - Fonts loaded with FT_LOAD_RENDER no longer cause strange + results. This bug has been introduced in version 2.1.5. + + - Some Windows (bitmap) FNT/FON files couldn't be handled + correctly. + + + II. IMPORTANT CHANGES + + - The internal module API has been heavily changed in favor of + massive simplifications within the font engine. This also means + that authors of third-party modules must adapt their code to the + new scheme. + + NOTE: THE NEW SCHEME IS NOT COMPLETED YET. PLEASE WAIT UNTIL A + FINAL ANNOUNCEMENT! + + - The PostScript parser has been enhanced to handle comments and + strings correctly. Additionally, more syntax forms are + recognized. + + - Added the optional unpatented hinting system for TrueType. It + allows typefaces which need hinting to produce correct glyph + forms (e.g., Chinese typefaces from Dynalab) to work acceptably + without infringing Apple patents. This system is compiled only + if TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in + ftoption.h (activated by default). + + + III. MISCELLANEOUS + + - There is now a guard in the public header files to protect + against inclusion of freetype.h from FreeType 1. + + - Direct inclusion of freetype.h and other public header files no + longer works. You have to use the documented scheme + + #include + #include FT_FREETYPE_H + + to load freetype.h with a symbolic name. This protects against + renaming of public header files (which shouldn't happen but + actually has, avoiding two public header files with the same + name). + + +====================================================================== + +CHANGES BETWEEN 2.1.5 and 2.1.4 + + I. IMPORTANT BUG FIXES + + - Parsing the /CIDFontName field now removes the leading slash to + be in sync with other font drivers. + + - gzip support was buggy. Some fonts could not be read. + + - Fonts which have nested subglyphs more than one level deep no + longer cause a segfault. + + - Creation of synthetic cmaps for fonts in CFF format was broken + partially. + + - Numeric font dictionary entries for synthetic fonts are no + longer overwritten. + + - The font matrix wasn't applied to the advance width for Type1, + CID, and CFF fonts. This caused problems when loading certain + synthetic Type 1 fonts like `Helvetica Narrow'. + + - The test for the charset registry in BDF and PCF fonts is now + case-insensitive. + + - FT_Vector_Rotate sometimes returned strange values due to + rounding errors. + + - The PCF driver now returns the correct number of glyphs + (including an artificial `notdef' glyph at index 0). + + - FreeType now supports buggy CMaps which are contained in many + CJK fonts from Dynalab. + + - Opening an invalid font on a Mac caused a segfault due to + double-freeing memory. + + - BDF fonts with more than 32768 glyphs weren't supported + properly. + + + II. IMPORTANT CHANGES + + - Accessing bitmap font formats has been synchronized. To do that + the FT_Bitmap_Size structure has been extended to contain new + fields `size', `x_ppem', and `y_ppem'. + + - The FNT driver now returns multiple faces, not multiple strikes. + + - The `psnames' module has been updated to the Adobe Glyph List + version 2.0. + + - The `psnames' module now understands `uXXXX[X[X]]' glyph names. + + - The algorithm for guessing the font style has been improved. + + - For fonts in SFNT format, root->height is no longer increased if + the line gap is zero. There exist fonts (containing e.g. form + drawing characters) which intentionally have a zero line gap + value. + + - ft_glyph_bbox_xxx flags are now deprecated in favour of + FT_GLYPH_BBOX_XXX. + + - ft_module_xxx flags are now deprecated in favour of + FT_MODULE_XXX. + + - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now + deprecated in favour of + FT_ENCODING_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} -- those encodings + are not specific to Microsoft. + + + III. MISCELLANEOUS + + - The autohinter has been further improved; for example, `m' + glyphs now retain its vertical symmetry. + + - Partial support of Mac fonts on non-Mac platforms. + + - `make refdoc' (after first `make') builds the HTML + documentation. You need Python for this. + + - The make build system should now work more reliably on DOS-like + platforms. + + - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has + been added. + + - Better VMS build support. + + - Support for the pkg-config package by providing a `freetype.pc' + file. + + - New configure option --with-old-mac-fonts for Darwin. + + - Some source files have been renamed (mainly to fit into the 8.3 + naming scheme). + + +====================================================================== + +CHANGES BETWEEN 2.1.4 and 2.1.3 + + I. IMPORTANT BUG FIXES + + - Updated to newest libtool version, fixing build problems on + various platforms. + + - A fix in the Gzip stream reader: It couldn't read certain .gz + files properly due to a small typo. In certain cases, FreeType + could also loop endlessly when trying to load tiny gzipped + files. + + - The configure script now tries to use the system-wide zlib when + it finds one (instead of the copy found in src/gzip). And + `freetype-config' has been updated to return relevant flags in + this case when invoked with `--libs' (e.g. `-lzlib'). + + - Certain fonts couldn't be loaded by 2.1.3 because they lacked a + Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously + rejected them. + + - The CFF loader was modified to accept fonts which only contain a + subset of their reference charset. This prevented the correct + use of PDF-embedded fonts. + + - The logic to detect Unicode charmaps has been modified. This is + required to support fonts which include both 16-bit and 32-bit + charmaps (like very recent asian ones) using the new 10 and 12 + SFNT formats. + + - The TrueType loader now limits the depth of composite glyphs. + This is necessary to prevent broken fonts to break the engine by + blowing the stack with recursive glyph definitions. + + - The CMap cache is now capable of managing UCS-4 character codes + that are mapped through extended charmaps in recent + TrueType/OpenType fonts. + + - The cache sub-system now properly manages out-of-memory + conditions instead of blindly reporting them to the caller. + This means that it will try to empty the cache before restarting + its allocations to see if that can help. + + - The PFR driver didn't return the list of available embedded + bitmaps properly. + + - There was a nasty memory leak when using embedded bitmaps in + certain font formats. + + + II. IMPORTANT CHANGES + + - David Chester contributed some enhancements to the auto-hinter + that significantly increase the quality of its output. The + Postscript hinter was also improved in several ways. + + - The FT_RENDER_MODE_LIGHT render mode was implemented. + + - A new API function called `FT_Get_BDF_Property' has been added + to FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font + files. THIS IS STILL EXPERIMENTAL, since it hasn't been + properly tested yet. + + - A Windows FNT specific API has been added, mostly to access font + headers. This is used by Wine. + + - TrueType tables without an `hmtx' table are now tolerated when + an incremental interface is used. This happens for certain + Type42 fonts passed from Ghostscript to FreeType. + + - The PFR font driver is now capable of returning the font family + and style names when they are available (instead of the sole + `FontID'). This is performed by parsing an *undocumented* + portion of the font file! + + + III. MISCELLANEOUS + + - The path stroker in FT_STROKER_H has entered beta stage. It now + works very well, but its interface might change a bit in the + future. More on this in later releases. + + - The documentation for FT_Size_Metrics didn't appear properly in + the API reference. + + - The file docs/VERSION.DLL has been updated to explain versioning + with FreeType (i.e., comparing release/libtool/so numbers, and + how to use them in autoconf scripts). + + - The installation documentation has been seriously revamped. + Everything is now in the `docs' directory. + + +====================================================================== + +CHANGES BETWEEN 2.1.3 and 2.1.2 + + I. IMPORTANT BUG FIXES + + - FT_Vector_Transform had been incorrectly modified in 2.1.2, + resulting in incorrect transformations being applied (for + example, rotations were processed in opposite angles). + + - The format 8 and 12 TrueType charmap enumeration routines have + been fixed (FT_Get_Next_Char returned invalid values). + + - The PFR font driver returned incorrect advance widths if the + outline and metrics resolution defined in the font file were + different. + + - FT_Glyph_To_Bitmap now returns successfully when called with an + FT_BitmapGlyph argument (it previously returned an error). + + - A bug in the Type 1 loader that prevented valid font bounding + boxes to be loaded from multiple master fonts. + + - The SFNT validation code has been rewritten. FreeType can now + load `broken' fonts that were usable on Windows, but not with + previous versions of the library. + + - The computation of bearings in the BDF driver has been fixed. + + - The Postscript hinter crashed when trying to hint certain glyphs + (more precisely, when trying to apply hints to an empty glyph + outline). + + - The TrueType glyph loader now supports composites in `Apple + format' (they differ slightly from Microsoft/OpenType ones in + the way transformation offsets are computed). + + - FreeType was very slow at opening certain asian CID/CFF fonts, + due to fixed increment in dynamic array re-allocations. This + has been changed to exponential behaviour to get acceptable + performance. + + + + II. IMPORTANT CHANGES + + - The PCF driver now supports gzip-compressed font files natively. + This means that you will be able to use all these bitmap fonts + that come with XFree86 with FreeType (and libXft/libXft2, by + extension). + + - The automatic and postscript hinters have both been updated. + This results in a relatively important increase of rendering + quality since many nasty defaults have been suppressed. Please + visit the web page: + + https://freetype.org/hinting/smooth-hinting.html + + for additional details on this topic. + + - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32 + (instead of just being an FT_Int). This breaks source and + binary compatibility for 16bit systems only, while retaining + both of them for 32 and 64 bit ones. + + Some new flags have been added consequently: + + FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter + (but not native format hinters). + + FT_LOAD_TARGET_NORMAL :: Hint and render for normal + anti-aliased displays. + + FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays. + + FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or + BGR subpixel displays (like LCD + screens). THIS IS STILL + EXPERIMENTAL! + + FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for + vertical subpixel displays (like + rotated LCD screens). THIS IS STILL + EXPERIMENTAL! + + FT_LOAD_MONOCHROME is still supported, but only affects + rendering, not the hinting. + + Note that the `ftview' demo program available in the `ft2demos' + package has been updated to support LCD-optimized display on + non-paletted displays (under Win32 and X11). + + - The PFR driver now supports embedded bitmaps (all formats + supported), and returns correct kerning metrics for all glyphs. + + - The TrueType charmap loader now supports certain `broken' fonts + that load under Windows without problems. + + - The cache API has been slightly modified (it's still a beta!): + + - The type FTC_ImageDesc has been removed; it is now replaced + by FTC_ImageTypeRec. Note that one of its fields is a + `load_flag' parameter for FT_Load_Glyph. + + - The field `num_grays' of FT_SBitRec has been changed to + `max_grays' in order to fit within a single byte. Its + maximum value is thus 255 (instead of 256 as previously). + + + III. MISCELLANEOUS + + - Added support for the DESTDIR variable during `make install'. + This simplifies packaging of FreeType. + + - Included modified copies of the ZLib sources in `src/gzip' in + order to support gzip-compressed PCF fonts. We do not use the + system-provided zlib for now, though this is a probable + enhancement for future releases. + + - The DocMaker tool used to generate the on-line API reference has + been completely rewritten. It is now located in + `src/tools/docmaker/docmaker.py'. Features: + + - better cross-referenced output + - more polished output + - uses Python regular expressions (though it didn't speed the + program) + - much more modular structure, which allows for different + `backends' in order to generate HTML, XML, or whatever + format. + + One can regenerate the API reference by calling: + + python src/tools/docmaker/docmaker.py \ + --prefix=ft2 \ + --title=FreeType-2.1.3 \ + --output= + include/freetype/*.h \ + include/freetype/config/*.h \ + include/freetype/cache/*.h + + - A new, experimental, support for incremental font loading (i.e., + loading of fonts where the glyphs are not in the font file + itself, but provided by an external component, like a Postscript + interpreter) has been added by Graham Asher. This is still work + in progress, however. + + - A new, EXPERIMENTAL, path stroker has been added. It doesn't + suffer from severe rounding errors and treat bezier arcs + directly. Still work in progress (i.e. not part of the official + API). See the file for some of the + details. + + - The massive re-formatting of sources and internal re-design is + still under-way. Many internal functions, constants, and types + have been renamed. + + +====================================================================== + +CHANGES BETWEEN 2.1.2 and 2.1.1 + + I. IMPORTANT BUG FIXES + + - Many font drivers didn't select a Unicode charmap by default + when a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS + options enabled), causing many applications to not be able to + display text correctly with the 2.1.x releases. + + - The PFR driver had a bug in its composite loading code that + produces incorrectly placed accents with many fonts. + + - The Type42 driver crashed sometimes due to a nasty bug. + + - The Type 1 custom encoding charmap didn't handle the case where + the first glyph index wasn't 0. + + - A serious typo in the TrueType composite loader produced + incorrectly placed glyphs in fonts like `Wingdings' and a few + others. + + + II. MISCELLANEOUS + + - The Win32 Visual C++ project file has been updated to include + the PFR driver as well. + + - `freetype.m4' is now installed by default by `make install' on + Unix systems. + + - The function FT_Get_PS_Font_Info now works with CID and Type42 + fonts as well. + + +====================================================================== + +CHANGES BETWEEN 2.1.1 and 2.1.0 + + I. IMPORTANT BUG FIXES + + - The `version_info' returned by `freetype-config' in 2.1.0 + returned an invalid value. It now returns 9:1:3 (2.0.9 returned + 9:0:3). + + - Version 2.1.0 couldn't be linked against applications on Win32 + and Amiga systems due to a new debug function that wasn't + properly propagated to the system-specific directory in + `builds'. + + - Various MacOS and Mac OS X specific fixes. + + - Fixed a bug in the TrueType charmap validation routines that + made version 2.1.0 too restrictive -- many popular fonts have + been rejected. + + - There was still a very small difference between the monochrome + glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the + bytecode interpreter enabled. This was caused by an invalid + flag setting in the TrueType glyph loader, making the rasterizer + change its drop-out control mode. Now the results should + _really_ be completely identical. + + - The TrueType name table loader has been improved to support many + popular though buggy Asian fonts. It now ignores empty name + entries, invalid pointer offsets and a few other incorrect + subtleties. Moreover, name strings are now loaded on demand, + which reduces the memory load of many faces (e.g. the ARIAL.TTF + font file contains a 10kByte name table with 70 names). + + - Fixed a bug in the Postscript hinter that prevented family blues + substitution to happen correctly. + + + II. NEW FEATURES + + - Three new font drivers in this release: + + * A BDF font driver, contributed by Franco Zappa Nardelli, + heavily modified by Werner Lemberg. It also supports + anti-aliased bitmaps (using a slightly extended BDF format). + + * A Type42 font driver, contributed by Roberto Alameda. It is + still experimental but seems to work relatively well. + + * A PFR font driver, contributed by David Turner himself. It + doesn't support PFR hinting -- note that BitStream has at + least two patents on this format! + + + III. MISCELLANEOUS + + - The cache sub-system has been optimized in important ways. + Cache hits are now significantly faster. For example, using the + CMap cache is about twice faster than calling FT_Get_Char_Index + on most platforms. Similarly, using an SBit cache is about five + times faster than loading the bitmaps from a bitmap file, and + 300 to 500 times faster than generating them from a scalable + format. + + Note that you should recompile your sources if you designed a + custom cache class for the FT2 Cache subsystem, since the + changes performed are source, but not binary, compatible. + + +====================================================================== + +CHANGES BETWEEN 2.1.0 and 2.0.9 + + I. IMPORTANT BUG FIXES + + - The TrueType bytecode interpreter has been fixed to produce + _exactly_ the same output as FreeType 1.x. Previous differences + were due to slightly distinct fixed-point computation routines + used to perform dot products and vector length measurements. + + It seems that native TrueType hinting is _extremely_ sensitive + to rounding errors. The required vector computation routines + have been optimized and placed within the `ttinterp.c' file. + + - Fixed the parsing of accelerator tables in the PCF font driver. + + - Fixed the Type1 glyph loader routine used to compute the font's + maximum advance width. + + + II. NEW FEATURES + + - The `configure' script used on Unix systems has been modified to + check that GNU Make is being used to build the library. + Otherwise, it will display a message proposing to use the + GNUMAKE environment variable to name it. + + The Unix-specific file README.UNX has been modified accordingly. + + + III. MISCELLANEOUS + + - The FreeType License in `docs/FTL.TXT' has been updated to + include a proposed preferred disclaimer. If you are using + FreeType in your products, you are encouraged (but not mandated) + to use the following text in your documentation: + + """ + Portions of this software are copyright © 1996-2002 The + FreeType Project (https://freetype.org). All rights reserved. + """ + + - The default size of the render pool has been reduced to 16kByte. + This shouldn't result in any noticeable performance penalty, + unless you are using the engine as-is to render very large and + complex glyphs. + + - The FreeType 2 redesign has begun. More information can be + found at this URL: + + https://freetype.org/freetype2/redesign.html + + The following internal changes have been performed within the + sources of this release: + + - Many internal types have been renamed to increase + consistency. The following should be true, except for + public types: + + * All structure types have a name ending in `Rec' (short + for `record'). + + * A pointer-to-structure type has the same name as the + structure, _without_ the `Rec' suffix. + + Example: + + typedef struct FooRec_ + { + ... + + } FooRec, *Foo; + + - Many internal macros have been renamed to increase + consistency. The following should be true: + + * All macros have a name beginning with `FT_'. This + required a few changes like + + ALLOC => FT_ALLOC + FREE => FT_FREE + REALLOC => FT_REALLOC + + * All macros are completely UPPERCASE. This required a + few changes like: + + READ_Short => FT_READ_SHORT + NEXT_Short => FT_NEXT_SHORT + GET_ULongLE => FT_GET_ULONG_LE + MEM_Set => FT_MEM_SET + MEM_Copy => FT_MEM_COPY + etc. + + * Whenever possible, all macro names follow the + FT__ pattern. For example + + ACCESS_Frame => FT_FRAME_ENTER + FORGET_Frame => FT_FRAME_EXIT + EXTRACT_Frame => FT_FRAME_EXTRACT + RELEASE_Frame => FT_FRAME_RELEASE + + FILE_Pos => FT_STREAM_POS + FILE_Seek => FT_STREAM_SEEK + FILE_Read => FT_STREAM_READ + FILE_ReadAt => FT_STREAM_READ_AT + READ_Fields => FT_STREAM_READ_FIELDS + + - Many internal functions have been renamed to follow the + FT__ pattern. For example: + + FT_Seek_Stream => FT_Stream_Seek + FT_Read_Stream_At => FT_Stream_ReadAt + FT_Done_Stream => FT_Stream_Close + FT_New_Stream => FT_Stream_Open + FT_New_Memory_Stream => FT_Stream_OpenMemory + FT_Extract_Frame => FT_Stream_ExtractFrame + + Note that method names do not contain `_'. + + - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced + with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a + type as the fourth argument. Instead, the array element + type size is computed automatically from the type of the + target pointer used. + + - A new object class, FT_CMap, has been introduced. These + internal objects are used to model character maps. This + eases the support of additional charmap types within the + engine. + + - A new configuration file named `ftstdlib.h' has been added + to `include/freetype/config'. It is used to define aliases + for _every_ routine of the ISO C library that the font + engine uses. Each aliases has a `ft_' prefix + (e.g. `ft_strlen' is an alias for `strlen'). + + This is used to ease the porting of FreeType 2 to exotic + runtime environments where the ISO C Library isn't available + (e.g. XFree86 extension modules). + + More details are available in the `ChangeLog' file. + + +====================================================================== + +CHANGES BETWEEN 2.0.9 and 2.0.8 + + I. IMPORTANT BUG FIXES + + - Certain fonts like `foxjump.ttf' contain broken name tables with + invalid entries and wild offsets. This caused FreeType to crash + when trying to load them. + + The SFNT `name' table loader has been fixed to be able to + support these strange fonts. + + Moreover, the code in charge of processing this table has been + changed to always favour Windows-formatted entries over other + ones. Hence, a font that works on Windows but not on the Mac + will load cleanly in FreeType and report accurate values for + Family & PostScript names. + + - The CID font driver has been fixed. It unfortunately returned a + Postscript Font name with a leading slash, as in + `/MunhwaGothic-Regular'. + + - FreeType 2 should now compile fine on AIX 4.3.3 as a shared + library. + + - A bug in the Postscript hinter has been found and fixed, + removing un-even stem widths at small pixel sizes (like 14-17). + + This improves the quality of a certain number of Postscript + fonts. + + + II. NEW FEATURES + + - A new function named `FT_Library_Version' has been added to + return the current library's major, minor, and patch version + numbers. This is important since the macros FREETYPE_MAJOR, + FREETYPE_MINOR, and FREETYPE_PATCH cannot be used when the + library is dynamically linked by a program. + + - Two new APIs have been added: `FT_Get_First_Char' and + `FT_Get_Next_Char'. + + Together, these can be used to iterate efficiently over the + currently selected charmap of a given face. Read the API + reference for more details. + + + III. MISCELLANEOUS + + - The FreeType sources are under heavy internal re-factoring. As + a consequence, we have created a branch named `STABLE' on the + CVS to hold all future releases/fixes in the 2.0.x family. + + The HEAD branch now contains the re-factored sources and + shouldn't be used for testing or packaging new releases. In + case you would like to access the 2.0.9 sources from our CVS + repository, use the tag `VER-2-0-9'. + + +====================================================================== + +CHANGES BETWEEN 2.0.8 and 2.0.7 + + I. IMPORTANT BUG FIXES + + - There was a small but nasty bug in `freetype-config.in' which + caused the `freetype-config' script to fail on Unix. + + This didn't prevent the installation of the library or even its + execution, but caused problems when trying to compile many Unix + packages that depend on it. + + - Some TrueType or OpenType fonts embedded in PDF documents do not + have a 'cmap', 'post' and 'name' as is required by the + specification. FreeType no longer refuses to load such fonts. + + - Various fixes to the PCF font driver. + + +====================================================================== + +CHANGES BETWEEN 2.0.7 and 2.0.6 + + I. IMPORTANT BUG FIXES + + - Fixed two bugs in the Type 1 font driver. The first one + resulted in a memory leak in subtle cases. The other one caused + FreeType to crash when trying to load `.gsf' files (Ghostscript + so-called Postscript fonts). + + (This made _many_ KDE applications crash on certain systems. + FreeType _is_ becoming a critical system component on Linux :-) + + - Fixed a memory leak in the CFF font driver. + + - Fixed a memory leak in the PCF font driver. + + - Fixed the Visual C++ project file + `builds/win32/visualc/freetype.dsp' since it didn't include the + Postscript hinter component, causing errors at build time. + + - Fixed a small rendering bug in the anti-aliased renderer that + only occurred when trying to draw thin (less than 1 pixel) + strokes. + + - Fixed `builds/unix/freetype2.a4' which is used to generate a + valid `freetype2.m4' for use with autoconf. + + - Fixed the OpenVMS Makefiles. + + + II. MISCELLANEOUS + + - Added `configure' and `install' scripts to the top-level + directory. A GNU-style installation is thus now easily possible + with + + ./configure + make + make install + + +====================================================================== + +CHANGES BETWEEN 2.0.6 and 2.0.5 + + I. IMPORTANT BUG FIXES + + - It wasn't possible to load embedded bitmaps when the auto-hinter + was used. This is now fixed. + + - The TrueType font driver didn't load some composites properly + (the sub-glyphs were slightly shifted, and this was only + noticeable when using monochrome rendering). + + - Various fixes to the auto-hinter. They merely improve the + output of sans-serif fonts. Note that there are still problems + with serifed fonts and composites (accented characters). + + - All scalable font drivers erroneously returned un-fitted glyph + advances when hinting was requested. This created problems for + a number of layout applications. This is a very old bug that + got undetected mainly because most test/demo program perform + rounding explicitly or implicitly (through the cache). + + - `FT_Glyph_To_Bitmap' did erroneously modify the source glyph in + certain cases. + + - `glnames.py' still contained a bug that made FreeType return + invalid names for certain glyphs. + + - The library crashed when loading certain Type 1 fonts like + `sadn.pfb' (`Stalingrad Normal'), which appear to contain + pathetic font info dictionaries. + + - The TrueType glyph loader is now much more paranoid and checks + everything when loading a given glyph image. This was necessary + to avoid problems (crashes and/or memory overwrites) with broken + fonts that came from a really buggy automatic font converter. + + + II. IMPORTANT UPDATES AND NEW FEATURES + + - Important updates to the Mac-specific parts of the library. + + - The caching sub-system has been completely re-designed, and its + API has evolved (the old one is still supported for backward + compatibility). + + The documentation for it is not yet completed, sorry. For now, + you are encouraged to continue using the old API. However, the + ftview demo program in the ft2demos package has already been + updated to use the new caching functions. + + - A new charmap cache is provided too. See `FTC_CMapCache'. This + is useful to perform character code -> glyph index translations + quickly, without the need for an opened FT_Face. + + - A NEW POSTSCRIPT HINTER module has been added to support native + hints in the following formats: PostScript Type 1, PostScript + CID, and CFF/CEF. + + Please test! Note that the auto-hinter produces better results + for a number of badly-hinted fonts (mostly auto-generated ones) + though. + + - A memory debugger is now part of the standard FreeType sources. + To enable it, define FT_DEBUG_MEMORY in + , and recompile the library. + + Additionally, define the _environment_ variable FT_DEBUG_MEMORY + and run any program using FreeType. When the library is exited, + a summary of memory footprints and possible leaks will be + displayed. + + This works transparently with _any_ program that uses FreeType. + However, you will need a lot of memory to use this (allocated + blocks are never released to the heap to detect double deletes + easily). + + + III. MISCELLANEOUS + + - We are aware of subtle differences between the output of + FreeType versions 1 and 2 when it comes to monochrome + TrueType-hinted glyphs. These are most probably due to small + differences in the monochrome rasterizers and will be worked out + in an upcoming release. + + - We have decided to fork the sources in a `stable' branch, and an + `unstable' one, since FreeType is becoming a critical component + of many Unix systems. + + The next bug-fix releases of the library will be named 2.0.7, + 2.0.8, etc., while the `2.1' branch will contain a version of + the sources where we will start major reworking of the library's + internals, in order to produce FreeType 2.2.0 (or even 3.0) in a + more distant future. + + We also hope that this scheme will allow much more frequent + releases than in the past. + + +====================================================================== + +CHANGES BETWEEN 2.0.5 and 2.0.4 + + NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE + WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1) + + - Fixed a bug that made certain glyphs, like `Cacute', `cacute' and + `lslash' unavailable from Unicode charmaps of Postscript fonts. + This prevented the correct display of Polish text, for example. + + - The kerning table of Type 1 fonts was loaded by FreeType, when its + AFM file was attached to its face, but the + FT_FACE_FLAG_HAS_KERNING bit flags was not set correctly, + preventing FT_Get_Kerning to return meaningful values. + + - Improved SFNT (TrueType & OpenType) charmap support. Slightly + better performance, as well as support for the new formats defined + by the OpenType 1.3 specification (8, 10, and 12) + + - Fixed a serious typo in `src/base/ftcalc.c' which caused invalid + computations in certain rare cases, producing ugly artefacts. + + - The size of the EM square is computed with a more accurate + algorithm for Postscript fonts. The old one caused slight errors + with embedded fonts found in PDF documents. + + - Fixed a bug in the cache manager that prevented normal LRU + behaviour within the cache manager, causing unnecessary reloads + (for FT_Face and FT_Size objects only). + + - Added a new function named `FT_Get_Name_Index' to retrieve the + glyph index of a given glyph name, when found in a face. + + - Added a new function named `FT_Get_Postscript_Name' to retrieve + the `unique' Postscript font name of a given face. + + - Added a new public header size named FT_SIZES_H (or + ) providing new FT_Size-management functions: + FT_New_Size, FT_Activate_Size, FT_Done_Size. + + - Fixed a reallocation bug that generated a dangling pointer (and + possibly memory leaks) with Postscript fonts (in + src/psaux/psobjs.c). + + - Many fixes for 16-bit correctness. + + - Removed many pedantic compiler warnings from the sources. + + - Added an Amiga build directory in `builds/amiga'. + + +====================================================================== + +CHANGES BETWEEN 2.0.4 and 2.0.3 + + - Fixed a rather annoying bug that was introduced in 2.0.3. Namely, + the font transformation set through FT_Set_Transform was applied + twice to auto-hinted glyphs, resulting in incorrectly rotated text + output. + + - Fixed _many_ compiler warnings. FT2 should now compile cleanly + with Visual C++'s most pedantic warning level (/W4). It already + compiled fine with GCC and a few other compilers. + + - Fixed a bug that prevented the linear advance width of composite + TrueType glyphs to be correctly returned. + + - Fixed the Visual C++ project files located in + `builds/win32/visualc' (previous versions used older names of the + library). + + - Many 32-bit constants have an `L' appended to their value, in + order to improve the 16-bitness of the code. Someone is actually + trying to use FT2 on an Atari ST machine! + + - Updated the `builds/detect.mk' file in order to automatically + build FT2 on AIX systems. AIX uses `/usr/sbin/init' instead of + `/sbin/init' and wasn't previously detected as a Unix platform by + the FreeType build system. + + - Updated the Unix-specific portions of the build system (new + libtool version, etc.). + + - The SFNT kerning loader now ensures that the table is sorted + (since some problem fonts do not meet this requirement). + + +======================================================================= + +CHANGES BETWEEN 2.0.3 and 2.0.2 + + I. CHANGES TO THE MODULES / FONT DRIVERS + + - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix + several annoying artefacts, mainly: + + - Blue zone alignment of horizontal stems wasn't performed + correctly, resulting in artefacts like the `d' being placed + one pixel below the `b' in some fonts like Time New Roman. + + - Overshoot thresholding wasn't performed correctly, creating + unpleasant artefacts at large character pixel sizes. + + - Composite glyph loading has been simplified. This gets rid + of various artefacts where the components of a composite + glyphs were not correctly spaced. + + These are the last changes to the current auto-hinting module. + A new hinting sub-system is currently in the work in order to + support native hints in Type 1 / CFF / OpenType fonts, as well + as globally improve rendering. + + - The PCF driver has been fixed. It reported invalid glyph + dimensions for the fonts available on Solaris. + + - The Type 1, CID and CFF drivers have been modified to fix the + computation of the EM size. + + - The Type 1 driver has been fixed to avoid a dangerous bug that + crashed the library with non-conforming fonts (i.e. ones that do + not place the .notdef glyph at position 0). + + - The TrueType driver had a rather subtle bug (dangling pointer + when loading composite glyphs) that could crash the library in + rare occasions! + + + II. HIGH-LEVEL API CHANGES + + - The error code enumeration values have been changed. An error + value is decomposed in a generic error code, and a module + number. see for details. + + - A new public header file has been introduced, named + FT_TRIGONOMETRY_H (include/freetype/fttrigon.h), providing + trigonometric functions to compute sines, cosines, arctangents, + etc. with 16.16 fixed precision. The implementation is based on + the CORDIC algorithm and is very fast while being sufficiently + accurate. + + + III. INTERNALS + + - Added BeOS-specific files in the old build sub-system. Note + that no changes were required to compile the library with Jam. + + - The configuration is now capable of automatically detecting + 64-bit integers on a set of predefined compilers (GCC, Visual + C++, Borland C++) and will use them by default. This provides a + small performance boost. + + - A small memory leak that happened when opening 0-sized files + (duh!) have been fixed. + + - Fixed bezier stack depth bug in the routines provided by the + FT_BBOX_H header file. Also fixed similar bugs in the + rasterizers. + + - The outline bounding box code has been rewritten to use direct + computations, instead of bezier sub-division, to compute the + exact bounding box of glyphs. This is slightly slower but more + accurate. + + - The build system has been improved and fixed, mainly to support + `make' on Windows 2000 correctly, avoid problems with `make + distclean' on non Unix systems, etc. + + - Hexadecimal constants have been suffixed with `U' to avoid + problems with certain compilers on 64-bit platforms. + + - A new directory named `src/tools' has been created. It contains + Python scripts and simple unit test programs used to develop the + library. + + - The DocMaker tool has been moved from `docs' to `src/tools' and + has been updated with the following: + + - Now accepts the `--title=XXXX' or `-t XXXX' option from the + command line to set the project's name in the generated API + reference. + + - Now accepts the `--output=DIR' or `-o DIR' option from the + command line to set the output directory for all generated + HTML files. + + - Now accepts the `--prefix=XXXX' or `-p XXX' option from the + command line to set the file prefix to use for all + generated HTML files. + + - Now generates the current time/data on each generated page + in order to distinguish between versions. + + DocMaker can be used with other projects now, not only FT2 + (e.g. MLib, FTLayout, etc.). + + +====================================================================== + +CHANGES BETWEEN 2.0.2 and 2.0.1 + + I. CHANGES TO THE MODULES / FONT DRIVERS + + - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to + avoid legal problems with the Apple patents. It seems that we + mistakenly turned this option on in previous releases of the + build. + + Note that if you want to use the bytecode interpreter in order + to get high-quality TrueType rendering, you will need to toggle + by hand the definition of the + TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro in the file + `include/freetype/config/ftoption.h'. + + - The CFF driver has been improved by Tom Kacvinsky and Sander van + der Wal: + + * Support for `seac' emulation. + * Support for `dotsection'. + * Support for retrieving glyph names through + `FT_Get_Glyph_Name'. + + The first two items are necessary to correctly a large number of + Type 1 fonts converted to the CFF formats by Adobe Acrobat. + + - The Type 1 driver was also improved by Tom & others: + + * Better EM size computation. + * Better support for synthetic (transformed) fonts. + * The Type 1 driver returns the charstrings corresponding to + each glyph in the `glyph->control_data' field after a call to + `FT_Load_Glyph' (thanks Ha Shao). + + - Various other bugfixes, including the following: + + * Fixed a nasty memory leak in the Type 1 driver. + * The autohinter and the pcf driver used static writable data + when they shouldn't. + * Many casts were added to make the code more 64-bits safe. It + also now compiles on Windows XP 64-bits without warnings. + * Some incorrect writable statics were removed in the `autohint' + and `pcf' drivers. FreeType 2 now compiles on Epoc again. + + + II. CHANGES TO THE HIGH-LEVEL API + + - The library header files inclusion scheme has been changed. The + old scheme looked like: + + #include + #include + #include + #include + + Now you should use: + + #include + #include FT_FREETYPE_H + #include FT_GLYPH_H + #include FT_CACHE_H + #include FT_CACHE_IMAGE_H + + NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS + RELEASE. HOWEVER, WE DO NOT GUARANTEE THAT THIS WILL STILL BE + TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1). + + The file is used to define the header filename + macros. The complete and commented list of macros is available + in the API reference under the section name `Header File Macros' + in Chapter I. + + For more information, see section I of the following document: + + https://freetype.org/freetype2/docs/tutorial/step1.html + + - Many, many comments have been added to the public source file in + order to automatically generate the API Reference through the + `docmaker.py' Python script. + + The latter has been updated to support the grouping of sections + in chapters and better index sort. See: + + https://freetype.org/freetype2/docs/reference/ft2-toc.html + + + III. CHANGES TO THE BUILD PROCESS + + - If you are not building FreeType 2 with its own build system + (but with your own Makefiles or project files), you will need to + be aware that the build process has changed a little bit. + + You don't need to put the `src' directory in the include path + when compiling any FT2 component. Instead, simply put the + component's directory in the current include path. + + So, if you were doing something like: + + cc -c -Iinclude -Isrc src/base/ftbase.c + + change the line to: + + cc -c -Iinclude -Isrc/base src/base/ftbase.c + + If you were doing something like: + + cd src/base + cc -c -I../../include -I.. ftbase.c + + change it to: + + cd src/base + cc -c -I../../include ftbase.c + + +====================================================================== + +CHANGES BETWEEN 2.0.1 and 2.0 + + 2.0.1 introduces a few changes: + + - Fixed many bugs related to the support of CFF / OpenType fonts. + These formats are now much better supported though there is + still work planned to deal with charset tables and PDF-embedded + CFF files that use the old `seac' command. + + - The library could not be compiled in debug mode with a very + small number of C compilers whose pre-processors didn't + implement the `##' directive correctly (i.e. per se the ANSI C + specification!) An elegant fix was found. + + - Added support for the free Borland command-line C++ Builder + compiler. Use `make setup bcc32'. Also fixed a few source + lines that generated new warnings with BCC32. + + - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of + a conic Bezier arc. + + - Updated the INSTALL file to add IDE compilation. + + - Other minor bug fixes, from invalid Type 1 style flags to + correct support of synthetic (obliqued) fonts in the + auto-hinter, better support for embedded bitmaps in a SFNT font. + + - Fixed some problems with `freetype-config'. + + Finally, the `standard' scheme for including FreeType headers is now + gradually changing, but this will be explained in a later release + (probably 2.0.2). + + And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi + for their contributions! + + +====================================================================== + +CHANGES BETWEEN beta8 and 2.0 + + - Changed the default installation path for public headers from + `include/freetype' to `include/freetype2'. + + Also added a new `freetype-config' that is automatically generated + and installed on Unix and Cygwin systems. The script itself is + used to retrieve the current install path, C compilation flags as + well as linker flags. + + - Fixed several small bugs: + + * Incorrect max advance width for fixed-pitch Type 1 fonts. + * Incorrect glyph names for certain TrueType fonts. + * The glyph advance was not copied when FT_Glyph_To_Bitmap was + called. + * The linearHoriAdvance and linearVertAdvance fields were not + correctly returned for glyphs processed by the auto-hinter. + * `type1z' renamed back to `type1'; the old `type1' module has + been removed. + + - Revamped the build system to make it a lot more generic. This + will allow us to re-use nearly un-modified in lots of other + projects (including FreeType Layout). + + - Changed `cid' to use `psaux' too. + + - Added the cache sub-system. See as well as + the sources in `src/cache'. Note that it compiles but is still + untested for now. + + - Updated `docs/docmaker.py', a draft API reference is available at + https://web.archive.org/web/20001215173400/http://www.freetype.org:80/ft2api.html. + + - Changed `type1' to use `psaux'. + + - Created a new module named `psaux' to hold the Type 1 & Type 2 + parsing routines. It should be used by `type1', `cid', and `cff' + in the future. + + - Fixed an important bug in `FT_Glyph_Get_CBox'. + + - Fixed some compiler warnings that happened since the TrueType + bytecode decoder was deactivated by default. + + - Fixed two memory leaks: + + * The memory manager (16 bytes) isn't released in + FT_Done_FreeType! + * Using custom input streams, the copy of the original stream was + never released. + + - Fixed the auto-hinter by performing automatic computation of the + `filling direction' of each glyph. This is done through a simple + and fast approximation, and seems to work (problems spotted by + Werner though). The Arphic fonts are a lot nicer though there are + still a lot of things to do to handle Asian fonts correctly. + + +====================================================================== + +BETA-8 (RELEASE CANDIDATE) CHANGES + + - Deactivated the TrueType bytecode interpreter by default. + + - Deactivated the `src/type1' font driver. Now `src/type1z' is used + by default. + + - Updates to the build system. We now compile the library correctly + under Unix system through `configure' which is automatically + called on the first `make' invocation. + + - Added the auto-hinting module! Fixing some bugs here and there. + + - Found some bugs in the composite loader (seac) of the Type1-based + font drivers. + + - Renamed the directory `freetype2/config' to `freetype2/builds' and + updated all relevant files. + + - Found a memory leak in the `type1' driver. + + - Incorporated Tom's patches to support flex operators correctly in + OpenType/CFF fonts. Now all I need is to support pure CFF and CEF + fonts to be done with this driver :-) + + - Added the Windows FNT/FON driver in `src/winfonts'. For now, it + always `simulates' a Unicode charmap, so it shouldn't be + considered completed right now. + + It is there to be more a proof of concept than anything else + anyway. The driver is a single C source file, that compiles to 3 + Kb of code. + + I'm still working on the PCF/BDF drivers, but I'm too lazy to + finish them now. + + - CHANGES TO THE HIGH-LEVEL API + + * FT_Get_Kerning has a new parameter that allows you to select the + coordinates of the kerning vector (font units, scaled, scaled + + grid-fitted). + * The outline functions are now in and not + part of anymore. + * now contains declarations for + FT_New_Library, FT_Done_Library, FT_Add_Default_Modules. + * The so-called convenience functions have moved from `ftoutln.c' + to `ftglyph.c', and are thus available with this optional + component of the library. They are declared in + now. + * Anti-aliased rendering is now the default for FT_Render_Glyph + (i.e. corresponds to render_mode == 0 == ft_render_mode_normal). + To generate a monochrome bitmap, use ft_render_mode_mono, or the + FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char. + FT_LOAD_ANTI_ALIAS is still defined, but values to 0. + * now include , + solving a few headaches :-) + * The type FT_GlyphSlotRec has now a `library' field. + + - CHANGES TO THE `ftglyph.h' API + + This API has been severely modified in order to make it simpler, + clearer, and more efficient. It certainly now looks like a real + `glyph factory' object, and allows client applications to manage + (i.e. transform, bbox and render) glyph images without ever + knowing their original format. + + - Added support for CID-keyed fonts to the CFF driver. Maybe + support for pure CFF + CEF fonts should come in? + + - Cleaned up source code in order to avoid two functions with the + same name. Also changed the names of the files in `type1z' from + `t1XXXX' to `z1XXXX' in order to avoid any conflicts. + + `make multi' now works well :-) + + Also removed the use of `cidafm' for now, even if the source files + are still there. This functionality will certainly go into a + specific module. + + - ADDED SUPPORT FOR THE AUTO-HINTER + + It works :-) I have a demo program which simply is a copy of + `ftview' that does a `FT_Add_Module(library, + &autohinter_module_class)' after library initialization, and Type + 1 & OpenType/CFF fonts are now hinted. + + CID fonts are not hinted, as they include no charmap and the + auto-hinter doesn't include `generic' global metrics computations + yet. + + Now, I need to release this thing to the FreeType 2 source. + + - CHANGES TO THE RENDERER MODULES + + The monochrome and smooth renderers are now in two distinct + directories, namely `src/raster1' and `src/smooth'. Note that the + old `src/renderer' is now gone. + + I ditched the 5-gray-levels renderers. Basically, it involved a + simple #define toggle in 'src/raster1/ftraster.c'. + + FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now + select the best renderer available, depending on render mode. If + the current renderer for a given glyph image format isn't capable + of supporting the render mode, another one will be found in the + library's list. This means that client applications do not need + to switch or set the renderers themselves (as in the latest + change), they'll get what they want automatically. At last. + + Changed the demo programs accordingly. + + - MAJOR INTERNAL REDESIGN: + + A lot of internal modifications have been performed lately on the + source in order to provide the following enhancements: + + * More generic module support: + + The FT_Module type is now defined to represent a handle to a + given module. The file contains the + FT_Module_Class definition, as well as the module-loading public + API. + + The FT_Driver type is still defined, and still represents a + pointer to a font driver. Note that FT_Add_Driver is replaced + by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc. + + * Support for generic glyph image types: + + The FT_Renderer type is a pointer to a module used to perform + various operations on glyph image. + + Each renderer is capable of handling images in a single format + (e.g. ft_glyph_format_outline). Its functions are used to: + + - transform an glyph image + - render a glyph image into a bitmap + - return the control box (dimensions) of a given glyph image + + The scan converters `ftraster.c' and `ftgrays.c' have been moved + to the new directory `src/renderer', and are used to provide two + default renderer modules. + + One corresponds to the `standard' scan-converter, the other to + the `smooth' one. + + he current renderer can be set through the new function + FT_Set_Renderer. + + The old raster-related function FT_Set_Raster, FT_Get_Raster and + FT_Set_Raster_Mode have now disappeared, in favor of the new: + + FT_Get_Renderer + FT_Set_Renderer + + See the file for more details. + + These changes were necessary to properly support different + scalable formats in the future, like bi-color glyphs, etc. + + * Glyph loader object: + + A new internal object, called a 'glyph loader' has been + introduced in the base layer. It is used by all scalable format + font drivers to load glyphs and composites. + + This object has been created to reduce the code size of each + driver, as each one of them basically re-implemented its + functionality. + + See and the FT_GlyphLoader type for + more information. + + * FT_GlyphSlot has new fields: + + In order to support extended features (see below), the + FT_GlyphSlot structure has a few new fields: + + linearHoriAdvance: + + This field gives the linearly scaled (i.e. scaled but + unhinted) advance width for the glyph, expressed as a 16.16 + fixed pixel value. This is useful to perform WYSIWYG text. + + linearVertAdvance: + This field gives the linearly scaled advance height for the + glyph (relevant in vertical glyph layouts only). This is + useful to perform WYSIWYG text. + + Note that the two above field replace the removed `metrics2' + field in the glyph slot. + + advance: + This field is a vector that gives the transformed advance for + the glyph. By default, it corresponds to the advance width, + unless FT_LOAD_VERTICAL_LAYOUT was specified when calling + FT_Load_Glyph or FT_Load_Char. + + bitmap_left: + This field gives the distance in integer pixels from the + current pen position to the left-most pixel of a glyph image + IF IT IS A BITMAP. It is only valid when the `format' field + is set to `ft_glyph_format_bitmap', for example, after calling + the new function FT_Render_Glyph. + + bitmap_top: + This field gives the distance in integer pixels from the + current pen position (located on the baseline) to the top-most + pixel of the glyph image IF IT IS A BITMAP. Positive values + correspond to upwards Y. + + loader: + This is a new private field for the glyph slot. Client + applications should not touch it. + + + * Support for transforms and direct rendering in FT_Load_Glyph: + + Most of the functionality found in has been + moved to the core library. Hence, the following: + + - A transform can be specified for a face through + FT_Set_Transform. this transform is applied by FT_Load_Glyph + to scalable glyph images (i.e. NOT TO BITMAPS) before the + function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM + was set in the load flags. + + - Once a glyph image has been loaded, it can be directly + converted to a bitmap by using the new FT_Render_Glyph + function. Note that this function takes the glyph image from + the glyph slot, and converts it to a bitmap whose properties + are returned in `face.glyph.bitmap', `face.glyph.bitmap_left' + and `face.glyph.bitmap_top'. The original native image might + be lost after the conversion. + + - When using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph + and FT_Load_Char functions will call FT_Render_Glyph + automatically when needed. + + - Reformatted all modules source code in order to get rid of the + basic data types redefinitions (i.e. `TT_Int' instead of `FT_Int', + `T1_Fixed' instead of `FT_Fixed'). Hence the format-specific + prefixes like `TT_', `T1_', `T2_' and `CID_' are only used for + relevant structures. + + +====================================================================== + +OLD CHANGES FOR BETA 7 + + - bug-fixed the OpenType/CFF parser. It now loads and displays my + two fonts nicely, but I'm pretty certain that more testing is + needed :-) + + - fixed the crummy Type 1 hinter, it now handles accented characters + correctly (well, the accent is not always well placed, but that's + another problem..) + + - added the CID-keyed Type 1 driver in `src/cid'. Works pretty well + for only 13 Kb of code ;-) Doesn't read AFM files though, nor the + really useful CMAP files.. + + - fixed two bugs in the smooth renderer (src/base/ftgrays.c). + Thanks to Boris Letocha for spotting them and providing a fix. + + - fixed potential `divide by zero' bugs in ftcalc.c. + + - added source code for the OpenType/CFF driver (still incomplete + though..) + + - modified the SFNT driver slightly to perform more robust header + checks in TT_Load_SFNT_Header. This prevents certain font files + (e.g. some Type 1 Multiple Masters) from being incorrectly + `recognized' as TrueType font files.. + + - moved a lot of stuff from the TrueType driver to the SFNT module, + this allows greater code re-use between font drivers + (e.g. TrueType, OpenType, Compact-TrueType, etc..) + + - added a tiny segment cache to the SFNT Charmap 4 decoder, in order + to minimally speed it up.. + + - added support for Multiple Master fonts in `type1z'. There is + also a new file named which defines functions to + manage them from client applications. + + The new file `src/base/ftmm.c' is also optional to the engine.. + + - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) + + small bug fixes in FT_Load_Glyph, the `type1' driver, etc.. + + - a minor fix to the Type 1 driver to let them apply the font matrix + correctly (used for many oblique fonts..) + + - some fixes for 64-bit systems (mainly changing some FT_TRACE calls + to use %p instead of %lx). Thanks to Karl Robillard. + + - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) + + added a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be + cropped when loaded from a file (maybe I should move the bitmap + cropper to the base layer ??). + + - changed the default number of gray levels of the smooth renderer + to 256 (instead of the previous 128). Of course, the human eye + can't see any difference ;-) + + - removed TT_MAX_SUBGLYPHS, there is no static limit on the number + of subglyphs in a TrueType font now.. + + +====================================================================== + +OLD CHANGES 16 May 2000 + + - tagged `BETA-6' in the CVS tree. This one is a serious release + candidate even though it doesn't incorporate the auto-hinter yet.. + + - various obsolete files were removed, and copyright header updated + + - finally updated the standard raster to fix the monochrome + rendering bug + re-enable support for 5-gray levels anti-aliasing + (suck, suck..) + + - created new header files, and modified sources accordingly: + + + - simple FreeType types, without the API + + - definition of memory-management macros + + - added the `DSIG' (OpenType Digital Signature) tag to + + + - light update/cleaning of the build system + changes to the sources + in order to get rid of _all_ compiler warnings with three + compilers, i.e: + + gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and + LCC + + IMPORTANT NOTE FOR WIN32-LCC USERS: + | + | It seems the C pre-processor that comes with LCC is broken, it + | doesn't recognize the ANSI standard directives # and ## + | correctly when one of the argument is a macro. Also, + | something like: + | + | #define F(x) print##x + | + | F(("hello")) + | + | will get incorrectly translated to: + | + | print "hello") + | + | by its pre-processor. For this reason, you simply cannot build + | FreeType 2 in debug mode with this compiler.. + + - yet another massive grunt work. I've changed the definition of + the EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These + now take an argument, which is the function's return value type. + + This is necessary to compile FreeType as a DLL on Windows and + OS/2. Depending on the compiler used, a compiler-specific keyword + like __export or __system must be placed before (VisualC++) or + after (BorlandC++) the type.. + + Of course, this needed a lot of changes throughout the source code + to make it compile again... All cleaned up now, apparently.. + + Note also that there is a new EXPORT_VAR macro defined to allow + the _declaration_ of an exportable public (constant) + variable. This is the case of the raster interfaces (see + ftraster.h and ftgrays.h), as well as each module's interface (see + sfdriver.h, psdriver.h, etc..) + + - new feature: it is now possible to pass extra parameters to font + drivers when creating a new face object. For now, + this capability is unused. It could however prove to + be useful in a near future.. + + the FT_Open_Args structure was changes, as well as the internal + driver interface (the specific `init_face' module function has + now a different signature). + + - updated the tutorial (not finished though). + + - updated the top-level BUILD document + + - fixed a potential memory leak that could occur when loading + embedded bitmaps. + + - added the declaration of FT_New_Memory_Face in + , as it was missing from the public header + (the implementation was already in `ftobjs.c'). + + - the file has been seriously updated in order + to allow the automatic generation of error message tables. See + the comments within it for more information. + + - major directory hierarchy re-organisation. This was done for two + things: + + * first, to ease the `manual' compilation of the library by + requiring at lot less include paths :-) + + * second, to allow external programs to effectively access + internal data fields. For example, this can be extremely + useful if someone wants to write a font producer or a font + manager on top of FreeType. + + Basically, you should now use the 'freetype/' prefix for header + inclusion, as in: + + #include + #include + + Some new include sub-directories are available: + + a. the `freetype/config' directory, contains two files used to + configure the build of the library. Client applications + should not need to look at these normally, but they can if + they want. + + #include + #include + + b. the `freetype/internal' directory, contains header files that + describes library internals. These are the header files that + were previously found in the `src/base' and `src/shared' + directories. + + + As usual, the build system and the demos have been updated to + reflect the change.. + + Here's a layout of the new directory hierarchy: + + TOP_DIR + include/ + freetype/ + freetype.h + ... + config/ + ftoption.h + ftconfig.h + ftmodule.h + + internal/ + ftobjs.h + ftstream.h + ftcalc.h + ... + + src/ + base/ + ... + + sfnt/ + psnames/ + truetype/ + type1/ + type1z/ + + + Compiling a module is now much easier, for example, the following + should work when in the TOP_DIR directory on an ANSI build: + + gcc -c -I./include -I./src/base src/base/ftbase.c + gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c + etc.. + + (of course, using -Iconfig/ if you provide system-specific + configuration files). + + - updated the structure of FT_Outline_Funcs in order to allow direct + coordinate scaling within the outline decomposition routine (this + is important for virtual `on' points with TrueType outlines) + + updates to the rasters to support this.. + + - updated the OS/2 table loading code in `src/sfnt/ttload.c' in + order to support version 2 of the table (see OpenType 1.2 spec) + + - created `include/tttables.h' and `include/t1tables.h' to allow + client applications to access some of the SFNT and T1 tables of a + face with a procedural interface (see `FT_Get_Sfnt_Table') + + updates to internal source files to reflect the change.. + + - some cleanups in the source code to get rid of warnings when + compiling with the `-Wall -W -ansi -pedantic' options in gcc. + + - debugged and moved the smooth renderer to `src/base/ftgrays.c' and + its header to `include/ftgrays.h' + + - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites + with up to 80 sub-glyphs !! Thanks to Werner + + +====================================================================== + +OLD CHANGES - 14-apr-2000 + + - fixed a bug in the TrueType glyph loader that prevented the + correct loading of some CJK glyphs in mingli.ttf + + - improved the standard Type 1 hinter in `src/type1' + + - fixed two bugs in the experimental Type 1 driver in `src/type1z' + to handle the new XFree86 4.0 fonts (and a few other ones..) + + - the smooth renderer is now complete and supports sub-banding to + render large glyphs at high speed. However, it is still located + in `demos/src/ftgrays.c' and should move to the library itself in + the next beta. NOTE: The smooth renderer doesn't compile in + stand-alone mode anymore, but this should be fixed RSN.. + + - introduced convenience functions to more easily deal with glyph + images, see `include/ftglyph.h' for more details, as well as the + new demo program named `demos/src/ftstring.c' that demonstrates + its use + + - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1 + drivers (this is required by the auto-hinter to improve its + results). + + - changed the raster interface, in order to allow client + applications to provide their own span-drawing callbacks. + However, only the smooth renderer supports this. See + `FT_Raster_Params' in the file `include/ftimage.h'. + + - fixed a small bug in FT_MulFix that caused incorrect transform + computation! + + - Note: The tutorial is out-of-date. + + +====================================================================== + +OLD CHANGES - 12-mar-2000 + + - changed the layout of configuration files : now, all ANSI + configuration files are located in + `freetype2/config'. System-specific over-rides can be placed in + `freetype2/config/'. + + - moved all configuration macros to `config/ftoption.h' + + - improvements in the Type 1 driver with AFM support + + - changed the fields in the FT_Outline structure : the old `flags' + array is re-named `tags', while all ancient flags are encoded into + a single unsigned int named `flags'. + + - introduced new flags in FT_Outline.flags (see + ft_outline_.... enums in `ftimage.h'). + + - changed outline functions to `FT_Outline_' syntax + + - added a smooth anti-alias renderer to the demonstration programs + + - added Mac graphics driver (thanks Just) + + - FT_Open_Face changed in order to received a pointer to a + FT_Open_Args descriptor.. + + - various cleanups, a few more API functions implemented (see + FT_Attach_File) + + - updated some docs + + +====================================================================== + +OLD CHANGES - 22-feb-2000 + + - introduced the `psnames' module. It is used to: + + o convert a Postscript glyph name into the equivalent Unicode + character code (used by the Type 1 driver(s) to synthesize on + the fly a Unicode charmap). + + o provide an interface to retrieve the Postscript names of the + Macintosh, Adobe Standard & Adobe Expert character codes. + (the Macintosh names are used by the SFNT-module postscript + names support routines, while the other two tables are used by + the Type 1 driver(s)). + + - introduced the `type1z' alternate Type 1 driver. This is a (still + experimental) driver for the Type 1 format that will ultimately + replace the one in `src/type1'. It uses pattern matching to load + data from the font, instead of a finite state analyzer. It works + much better than the `old' driver with `broken' fonts. It is also + much smaller (under 15 Kb). + + - the Type 1 drivers (both in `src/type1' and `src/type1z') are + nearly complete. They both provide automatic Unicode charmap + synthesis through the `psnames' module. No re-encoding vector is + needed. (note that they still leak memory due to some code + missing, and I'm getting lazy). + + Trivial AFM support has been added to read kerning information but + wasn't exactly tested as it should ;-) + + - The TrueType glyph loader has been seriously rewritten (see the + file `src/truetype/ttgload.c'. It is now much, much simpler as + well as easier to read, maintain and understand :-) Preliminary + versions introduced a memory leak that has been reported by Jack + Davis, and is now fixed.. + + - introduced the new `ft_glyph_format_plotter', used to represent + stroked outlines like Windows `Vector' fonts, and certain Type 1 + fonts like `Hershey'. The corresponding raster will be written + soon. + + - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new + interface that uses a structure to describe the input stream, the + driver (if required), etc.. + + +TODO + + - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap + + - Add a function like FT_Load_Character(face, char_code, load_flags) + that would really embed a call to FT_Get_Char_Index then + FT_Load_Glyph to ease developer's work. + + - Update the tutorial! + + - consider adding support for Multiple Master fonts in the Type 1 + drivers. + + - Test the AFM routines of the Type 1 drivers to check that kerning + information is returned correctly. + + - write a decent auto-gridding component !! We need this to release + FreeType 2.0 gold ! + + +less urgent needs: + + - add a CFF/Type2 driver + - add a BDF driver + - add a FNT/PCF/HBF driver + - add a Speedo driver from the X11 sources + + +====================================================================== + +OLDER CHANGES - 27-jan-2000 + + - updated the `sfnt' module interface to allow several SFNT-based + drivers to co-exist peacefully + + - updated the `T1_Face' type to better separate Postscript font + content from the rest of the FT_Face structure. Might be used + later by the CFF/Type2 driver.. + + - added an experimental replacement Type 1 driver featuring advanced + (and speedy) pattern matching to retrieve the data from postscript + fonts. + + - very minor changes in the implementation of FT_Set_Char_Size and + FT_Set_Pixel_Sizes (they now implement default to lighten the font + driver's code). + + +====================================================================== + +OLD MESSAGE + +This file summarizes the changes that occurred since the last `beta' +of FreeType 2. Because the list is important, it has been divided into +separate sections: + +Table Of Contents: + + I High-Level Interface (easier !) + II Directory Structure + III Glyph Image Formats + IV Build System + V Portability + VI Font Drivers + + +---------------------------------------------------------------------- + +High-Level Interface: + + The high-level API has been considerably simplified. Here is how: + + - resource objects have disappeared. this means that face objects + can now be created with a single function call (see FT_New_Face + and FT_Open_Face) + + - when calling either FT_New_Face & FT_Open_Face, a size object + and a glyph slot object are automatically created for the face, + and can be accessed through `face->glyph' and `face->size' if + one really needs to. In most cases, there's no need to call + FT_New_Size or FT_New_Glyph. + + - similarly, FT_Load_Glyph now only takes a `face' argument + (instead of a glyph slot and a size). Also, its `result' + parameter is gone, as the glyph image type is returned in the + field `face->glyph.format' + + - the list of available charmaps is directly accessible through + `face->charmaps', counting `face->num_charmaps' elements. Each + charmap has an 'encoding' field which specifies which known + encoding it deals with. Valid values are, for example: + + ft_encoding_unicode (for ASCII, Latin-1 and Unicode) + ft_encoding_apple_roman + ft_encoding_sjis + ft_encoding_adobe_standard + ft_encoding_adobe_expert + + other values may be added in the future. Each charmap still + holds its `platform_id' and `encoding_id' values in case the + encoding is too exotic for the current library + + +---------------------------------------------------------------------- + +Directory Structure: + + Should seem obvious to most of you: + + freetype/ + config/ -- configuration sub-makefiles + ansi/ + unix/ -- platform-specific configuration files + win32/ + os2/ + msdos/ + + include/ -- public header files, those to be included + directly by client apps + + src/ -- sources of the library + base/ -- the base layer + sfnt/ -- the sfnt `driver' (see the drivers section + below) + truetype/ -- the truetype driver + type1/ -- the type1 driver + shared/ -- some header files shared between drivers + + demos/ -- demos/tools + + docs/ -- documentation (a bit empty for now) + + +---------------------------------------------------------------------- + +Glyph Image Formats: + + Drivers are now able to register new glyph image formats within the + library. For now, the base layer supports of course bitmaps and + vector outlines, but one could imagine something different like + colored bitmaps, bi-color vectors or whatever else (Metafonts anyone + ??). + + See the file `include/ftimage.h'. Note also that the type + FT_Raster_Map is gone, and is now replaced by FT_Bitmap, which + should encompass all known bitmap types. + + Each new image format must provide at least one `raster', i.e. a + module capable of transforming the glyph image into a bitmap. It's + also possible to change the default raster used for a given glyph + image format. + + The default outline scan-converter now uses 128 levels of grays by + default, which tends to smooth many things. Note that the demo + programs have been updated significantly in order to display these.. + + +---------------------------------------------------------------------- + +Build system: + + You still need GNU Make to build the library. The build system has + been very seriously re-vamped in order to provide things like : + + - automatic host platform detection (reverting to 'config/ansi' if + it is not detected, with pseudo-standard compilation flags) + + - the ability to compile from the Makefiles with very different and + exotic compilers. Note that linking the library can be difficult + for some platforms. + + For example, the file `config/win32/lcclib.bat' is invoked by the + build system to create the `.lib' file with LCC-Win32 because its + librarian has too many flaws to be invoked directly from the + Makefile. + + Here's how it works: + + - the first time you type `make', the build system runs a series of + sub-makefiles in order to detect your host platform. It then + dumps what it found, and creates a file called `config.mk' in the + current directory. This is a sub-Makefile used to define many + important Make variables used to build the library. + + - the second time, the build system detects the `config.mk' then use + it to build the library. All object files go into 'obj' by + default, as well as the library file, but this can easily be + changed. + + Note that you can run `make setup' to force another host platform + detection even if a `config.mk' is present in the current + directory. Another solution is simply to delete the file, then + re-run make. + + Finally, the default compiler for all platforms is gcc (for now, + this will hopefully changed in the future). You can however specify + a different compiler by specifying it after the 'setup' target as + in: + + gnumake setup lcc on Win32 to use the LCC compiler + gnumake setup visualc on Win32 to use Visual C++ + + See the file `config//detect.mk' for a list of supported + compilers for your platforms. + + It should be relatively easy to write new detection rules files and + config.mk.. + + Finally, to build the demo programs, go to `demos' and launch GNU + Make, it will use the `config.mk' in the top directory to build the + test programs.. + + +---------------------------------------------------------------------- + +Portability: + + In the previous beta, a single FT_System object was used to + encompass all low-level operations like thread synchronisation, + memory management and i/o access. This has been greatly simplified: + + - thread synchronisation has been dropped, for the simple reason + that the library is already re-entrant, and that if you really + need two threads accessing the same FT_Library, you should + really synchronize access to it yourself with a simple mutex. + + - memory management is performed through a very simple object + called `FT_Memory', which really is a table containing a table + of pointers to functions like malloc, realloc and free as well + as some user data (closure). + + - resources have disappeared (they created more problems than they + solved), and i/o management have been simplified greatly as a + result. Streams are defined through FT_Stream objects, which + can be either memory-based or disk-based. + + Note that each face has its own stream, which is closed only + when the face object is destroyed. Hence, a function like + TT_Flush_Face in 1.x cannot be directly supported. However, if + you really need something like this, you can easily tailor your + own streams to achieve the same feature at a lower level (and + use FT_Open_Face instead of FT_New_Face to create the face). + + See the file `include/ftsystem.h' for more details, as well as the + implementations found in `config/unix' and `config/ansi'. + + +---------------------------------------------------------------------- + +Font Drivers: + + The Font Driver interface has been modified in order to support + extensions & versioning. + + + The list of the font drivers that are statically linked to the + library at compile time is managed through a new configuration file + called `config//ftmodule.h'. + + This file is autogenerated when invoking `make modules'. This + target will parse all sub-directories of 'src', looking for a + `module.mk' rules file, used to describe the driver to the build + system. + + Hence, one should call `make modules' each time a font driver is + added or removed from the `src' directory. + + Finally, this version provides a `pseudo-driver' in `src/sfnt'. + This driver doesn't support font files directly, but provides + services used by all TrueType-like font drivers. Hence, its code is + shared between the TrueType & OpenType font formats, and possibly + more formats to come if we're lucky.. + + +---------------------------------------------------------------------- + +Extensions support: + + The extensions support is inspired by the one found in 1.x. + + Now, each font driver has its own `extension registry', which lists + which extensions are available for the font faces managed by the + driver. + + Extension ids are now strings, rather than 4-byte tags, as this is + usually more readable. + + Each extension has: + - some data, associated to each face object + - an interface (table of function pointers) + + An extension that is format-specific should simply register itself + to the correct font driver. Here is some example code: + + // Registering an extensions + // + FT_Error FT_Init_XXXX_Extension( FT_Library library ) + { + FT_DriverInterface* tt_driver; + + driver = FT_Get_Driver( library, "truetype" ); + if (!driver) return FT_Err_Unimplemented_Feature; + + return FT_Register_Extension( driver, &extension_class ); + } + + + // Implementing the extensions + // + FT_Error FT_Proceed_Extension_XXX( FT_Face face ) + { + FT_XXX_Extension ext; + FT_XXX_Extension_Interface ext_interface; + + ext = FT_Get_Extension( face, "extensionid", &ext_interface ); + if (!ext) return error; + + return ext_interface->do_it(ext); + } + +------------------------------------------------------------------------ + +Copyright (C) 2000-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute this +file you indicate that you have read the license and understand and +accept it fully. + + +Local Variables: +version-control: never +coding: utf-8 +End: + +--- end of CHANGES --- diff --git a/local/recipes/libs/freetype2/source/docs/CMAKE b/local/recipes/libs/freetype2/source/docs/CMAKE new file mode 100644 index 0000000000..31237ae151 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/CMAKE @@ -0,0 +1,2 @@ +Support for a cmake build has been contributed. See the remarks in the +top-level `CMakeLists.txt' file for more. diff --git a/local/recipes/libs/freetype2/source/docs/CUSTOMIZE b/local/recipes/libs/freetype2/source/docs/CUSTOMIZE new file mode 100644 index 0000000000..890c8abdd2 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/CUSTOMIZE @@ -0,0 +1,152 @@ +How to customize the compilation of the library +=============================================== + + FreeType is highly customizable to fit various needs, and this + document describes how it is possible to select options and + components at compilation time. + + +I. Configuration macros + + The file `include/freetype/config/ftoption.h' contains a list of + commented configuration macros that can be toggled by developers to + indicate which features should be active while building the library. + + These options range from debug level to availability of certain + features, like native TrueType hinting through a bytecode + interpreter. + + We invite you to read this file for more information. You can + change the file's content to suit your needs, or override it with + one of the techniques described below. + + +II. Modules list + + If you use GNU make please edit the top-level file `modules.cfg'. + It contains a list of available FreeType modules and extensions to + be compiled. Change it to suit your own preferences. Be aware that + certain modules depend on others, as described in the file. GNU + make uses `modules.cfg' to generate `ftmodule.h' (in the object + directory). + + If you build FreeType in a directory separate from the source files, + put your customized `modules.cfg' in that directory; that way you + can keep the source files `clean'. + + If you don't use GNU make you have to manually edit the file + `include/freetype/config/ftmodule.h' (which is *not* used with if + compiled with GNU make) to add or remove the drivers and components + you want to compile into the library. See `INSTALL.ANY' for more + information. + + +III. System interface + + FreeType's default interface to the system (i.e., the parts that + deal with memory management and i/o streams) is located in + `src/base/ftsystem.c'. + + The current implementation uses standard C library calls to manage + memory and to read font files. It is however possible to write + custom implementations to suit specific systems. + + To tell the GNU Make-based build system to use a custom system + interface, you have to define the environment variable FTSYS_SRC to + point to the relevant implementation: + + on Unix: + + ./configure + export FTSYS_SRC=foo/my_ftsystem.c + make + make install + + on Windows: + + make setup + set FTSYS_SRC=foo/my_ftsystem.c + make + + +IV. Overriding default configuration and module headers + + It is possible to override the default configuration and module + headers without changing the original files. There are three ways + to do that: + + + 1. With GNU make + + [This is actually a combination of method 2 and 3.] + + Just put your custom `ftoption.h' file into the objects directory + (normally `/objs' if you build in the source tree, or the + directory where you invoke configure if you build in a separate + directory), which GNU make prefers over the standard location. No + action is needed for `ftmodule.h' because it is generated + automatically in the objects directory. + + 2. Using the C include path + + Use the C include path to ensure that your own versions of the + files are used at compile time when the lines + + #include FT_CONFIG_OPTIONS_H + #include FT_CONFIG_MODULES_H + + are compiled. Their default values being + and , you + can do something like: + + custom/ + config/ + ftoption.h => custom options header + ftmodule.h => custom modules list + + include/ => normal FreeType 2 include + ... + + then change the C include path to always give the path to `custom' + before the FreeType 2 `include'. + + + 3. Redefining FT_CONFIG_OPTIONS_H and FT_CONFIG_MODULES_H + + Another way to do the same thing is to redefine the macros used to + name the configuration headers. To do so, you need a custom + `ft2build.h' whose content can be as simple as: + + #ifndef FT2_BUILD_MY_PLATFORM_H_ + #define FT2_BUILD_MY_PLATFORM_H_ + + #define FT_CONFIG_OPTIONS_H + #define FT_CONFIG_MODULES_H + + #include + + #endif /* FT2_BUILD_MY_PLATFORM_H_ */ + + Place those files in a separate directory, e.g., + + custom/ + ft2build.h => custom version described above + my-ftoption.h => custom options header + my-ftmodule.h => custom modules list header + + and change the C include path to ensure that `custom' is always + placed before the FT2 `include' during compilation. + +---------------------------------------------------------------------- + +Copyright (C) 2003-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute +this file you indicate that you have read the license and understand +and accept it fully. + + +--- end of CUSTOMIZE --- diff --git a/local/recipes/libs/freetype2/source/docs/DEBUG b/local/recipes/libs/freetype2/source/docs/DEBUG new file mode 100644 index 0000000000..408b52fbc2 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/DEBUG @@ -0,0 +1,310 @@ +Debugging within the FreeType sources +===================================== + +I. Configuration macros +----------------------- + +There are several ways to enable debugging features in a FreeType 2 +builds. This is controlled through the definition of special macros +located in the file `ftoption.h'. The macros are: + + + FT_DEBUG_LEVEL_ERROR + + #define this macro if you want to compile the `FT_ERROR' macro + calls to print error messages during program execution. This does + not stop the program. Very useful to spot invalid fonts during + development and to code workarounds for them. + + FT_DEBUG_LEVEL_TRACE + + #define this macro if you want to compile both macros `FT_ERROR' + and `FT_TRACE'. This also includes the variants `FT_TRACE0', + `FT_TRACE1', `FT_TRACE2', ..., `FT_TRACE7'. + + The trace macros are used to send debugging messages when an + appropriate `debug level' is configured at runtime through the + `FT2_DEBUG' environment variable (more on this later). + + FT_DEBUG_MEMORY + + If this macro is #defined, the FreeType engine is linked with a + small but effective debugging memory manager that tracks all + allocations and frees that are performed within the font engine. + + When the `FT2_DEBUG_MEMORY' environment variable is defined at + runtime, a call to `FT_Done_FreeType' dumps memory statistics, + including the list of leaked memory blocks and optionally with the + source locations where these were allocated. It is always a very + good idea to define this in development builds. This works with + _any_ program linked to FreeType, but requires a big deal of + memory (the debugging memory manager never frees the blocks to the + heap in order to detect double frees). + + When `FT2_DEBUG_MEMORY' isn't defined at runtime, the debugging + memory manager is ignored, and performance is unaffected. + + FT_DEBUG_LOGGING + + #define this macro for enhanced logging support; it automatically + sets `FT_DEBUG_LEVEL_TRACE' and `FT_DEBUG_LEVEL_ERROR'. + + If defined, `FT_TRACE' and `FT_ERROR' can send tracing and + debugging messages to a file. The location of the log file has to + be set with the `FT_LOGGING_FILE' environment variable (more on + this later). + + The main enhancements are the possibility of logging the time and + the name of the `FT_COMPONENT' macro together with the affected + `FT_TRACE' or `FT_ERROR' calls. See below how to activate this in + the `FT2_DEBUG' environment variable. + + +II. Debugging macros +-------------------- + +Several macros can be used within the FreeType sources to help +debugging its code: + + + 1. FT_ERROR(( ... )) + + This macro is used to send debug messages that indicate relatively + serious errors (like broken font files) without stopping the + execution of the running program. Its code is compiled only when + either `FT_DEBUG_LEVEL_ERROR' or `FT_DEBUG_LEVEL_TRACE' are + defined in `ftoption.h'. + + Note that you have to use a printf-like signature, but with double + parentheses, like in + + FT_ERROR(( "your %s is not %s\n", "foo", "bar" )); + + + 2. FT_ASSERT( condition ) + + This macro is used to check strong assertions at runtime. If its + condition isn't TRUE, the program aborts with a panic message. + Its code is compiled when either `FT_DEBUG_LEVEL_ERROR' or + `FT_DEBUG_LEVEL_TRACE' are defined. You don't need double + parentheses here. Example: + + FT_ASSERT( ptr != NULL ); + + + 3. FT_TRACE( level, (message...) ) + + The `FT_TRACE' macro is used to send general-purpose debugging + messages during program execution. This macro uses an *implicit* + macro named `FT_COMPONENT', which names the current FreeType + component being run. + + The developer should always define `FT_COMPONENT' as appropriate, + for example as in + + #undef FT_COMPONENT + #define FT_COMPONENT io + + The value of the `FT_COMPONENT' macro is one of the component + names defined in the internal file `internal/fttrace.h'. If you + modify the FreeType source code and insert a new `FT_COMPONENT' + macro, you must register it in `fttrace.h'. If you insert or + remove many trace macros, you can test for undefined or unused + trace macros with the script `src/tools/chktrcmp.py'. + + Each such component is assigned a `debug level', ranging from + value 0 to 7, through the use of the `FT2_DEBUG' environment + variable (described below) when a program linked with FreeType + starts. + + When `FT_TRACE' is called, its level is compared to the one of the + corresponding component. Messages with trace levels *higher* than + the corresponding component level are filtered out and never + printed. This means that trace messages with level 0 are always + printed, those with level 2 are only printed when the component + level is *at least* 2, etc. + + The second parameter to `FT_TRACE' must contain parentheses and + corresponds to a printf-like call, as in + + FT_TRACE( 2, ( "your %s is not %s\n", "foo", "bar" ) ) + + The shortcut macros `FT_TRACE0', `FT_TRACE1', `FT_TRACE2', ..., + `FT_TRACE7' can be used with constant level indices, and are much + cleaner to use, as in + + FT_TRACE2(( "your %s is not %s\n", "foo", "bar" )); + + +III. Environment variables +-------------------------- + +The following environment variables control debugging output and +behaviour of FreeType at runtime. + + + FT2_DEBUG + + This variable is only used when FreeType is built with + `FT_DEBUG_LEVEL_TRACE' defined. It contains a list of component + level definitions, following this format: + + component1:level1 component2:level2 component3:level3 ... + + where `componentX' is the name of a tracing component, as defined + in `fttrace.h'. `levelX' is the corresponding level to use at + runtime. + + `any' is a special component name that is interpreted as `any/all + components'. For example, the following definitions + + set FT2_DEBUG=any:2 memory:5 io:4 (on Windows) + export FT2_DEBUG="any:2 memory:5 io:4" (on Linux with bash) + + both stipulate that all components should have level 2, except for + the memory and io components, which are set to the trace levels 5 + and 4, respectively. + + If `FT_DEBUG_LOGGING' is defined, two more options are available. + + * -v: Print also the name of FreeType's component from which the + current log is produced, together with the tracing level. + + * -t: Print also the time. + + Here are some examples how the output might look like. + + FT2_DEBUG="any:7 memory:5 -vt" + + => [20:32:02:44969 ttload:2] table directory loaded + + FT2_DEBUG="any:7 memory:5 -t" + + => [20:32:02:44969] table directory loaded + + FT2_DEBUG="any:7 memory:5 -v" + + => [ttload:2] table directory loaded + + + FT_LOGGING_FILE + + This variable is only used if FreeType is built with the + `FT_DEBUG_LOGGING' macro defined. It contains the path to the + file where the user wants to put his log file. If it is not set, + FreeType uses stderr. + + Examples: + + On UNIX-like systems with bash: + export FT_LOGGING_FILE="/tmp/freetype2.log" + + On Windows: + set FT_LOGGING_FILE=C:\Users\AppData\Local\Temp\freetype2.log + + + FT2_DEBUG_MEMORY + + This environment variable, when defined, tells FreeType to use a + debugging memory manager that tracks leaking memory blocks as well + as other common errors like double frees. It is also capable of + reporting _where_ the leaking blocks were allocated, which + considerably saves time when debugging new additions to the + library. + + This code is only compiled when FreeType is built with the + `FT_DEBUG_MEMORY' macro #defined in `ftoption.h' though, it is + ignored in other builds. + + + FT2_ALLOC_TOTAL_MAX + + This variable is ignored if `FT2_DEBUG_MEMORY' is not defined. It + allows you to specify a maximum heap size for all memory + allocations performed by FreeType. This is very useful to test + the robustness of the font engine and programs that use it in + tight memory conditions. + + If it is undefined, or if its value is not strictly positive, no + allocation bounds are checked at runtime. + + + FT2_ALLOC_COUNT_MAX + + This variable is ignored if `FT2_DEBUG_MEMORY' is not defined. It + allows you to specify a maximum number of memory allocations + performed by FreeType before returning the error + `FT_Err_Out_Of_Memory'. This is useful for debugging and testing + the engine's robustness. + + If it is undefined, or if its value is not strictly positive, no + allocation bounds are checked at runtime. + + + FT2_KEEP_ALIVE + + This variable is ignored if `FT2_DEBUG_MEMORY' is not defined. + `Keep alive' means that freed blocks aren't released to the heap. + This is useful to detect double-frees or weird heap corruption, + reporting the source code location of the original allocation and + deallocation in case of a problem. It uses large amounts of + memory, however. + + If it is undefined, or if its value is not strictly positive, + freed blocks are released at runtime. + + +IV. Additional Capabilities with `FT_DEBUG_LOGGING' +--------------------------------------------------- + +If `FT_DEBUG_LOGGING' is defined, four APIs are available to provide +additional debugging support. Use + + #include + +to access them. + + FT_Trace_Set_Level( const char* level ) + + By default, FreeType uses the tracing levels set in the + `FT2_DEBUG' environment variable. Use this function to override + the value with `level'. Use value `NULL' to disable tracing. + + FT_Trace_Set_Default_Level( void ) + + Reset the tracing levels to the default value, i.e., the value of + the `FT2_DEBUG' environment variable or no tracing if not set. + + FT_Set_Log_Handler( ft_custom_log_handler handler ) + + Use `handler' as a custom handler for formatting tracing and error + messages. The `ft_custom_log_handler' typedef has the following + prototype. + + void + (*ft_custom_log_handler)( const char* ft_component, + const char* fmt, + va_list args ); + + `ft_component' is the current component like `ttload', `fmt' is the + first argument of `FT_TRACE' or `FT_ERROR', and `args' holds the + remaining arguments. + + FT_Set_Default_Log_Handler( void ) + + Reset the log handler to the default version. + + +------------------------------------------------------------------------ + +Copyright (C) 2002-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute this +file you indicate that you have read the license and understand and +accept it fully. + + +--- end of DEBUG --- diff --git a/local/recipes/libs/freetype2/source/docs/DOCGUIDE b/local/recipes/libs/freetype2/source/docs/DOCGUIDE new file mode 100644 index 0000000000..d031185267 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/DOCGUIDE @@ -0,0 +1,298 @@ +Introduction +------------ + +Documentation is an extremely important part of any project, and it +helps a lot if it uses consistent syntax and layout. + +The documentation for the FreeType library is maintained in header +files in the `include/` directory in the form of code comments. These +comments are extracted and organized by 'docwriter' (previously +'docmaker'). The generated docs can be viewed in the +`docs/reference/site/` directory after running `make refdoc`. + +Documentation comments follow a specific structure and format as +described below. + + +Documentation Structure +----------------------- + +The documentation is divided into multiple chapters, which contain +sections relevant to it. The chapter details and sections contained +in them are listed in `include/freetype/ftchapters.h`. Any unlisted +section is added to the 'Miscellaneous' chapter. + +Sections may contain sub-sections which consist of properties, +enumerations, and other data types. + + +Comment Blocks +-------------- + +Documentation blocks follow a specific format: + + /***************************** (should end on column 77) + * + * (1 asterisk, 1 space, then content) + * + */ (end of block) + +To make 'docwriter' recognize a comment block, there must be at least +two asterisks in the first line. As a consequence, you should change +the second asterisk to something else if you want to prevent a comment +block being handled by 'docwriter' (for example, change `/****/` to +`/*#**/`). + + +Markup Tags +----------- + +Markup tags are used to indicate what comes next. The syntax for a +tag is: + + @foo: + +An `@`, followed by the tag, and then `:`. + + +Reserved Tags +------------- + +There are some keywords that have a special meaning to docwriter. +As a convention, all keywords are written in lowercase. + +* `chapter`: Defines a chapter. Usually the title with underscores. +* `sections`: List of sections in the chapter, in order. +* `section`: Defines the start or continuation of a section. +* `title`: Title for a chapter or section. May contain spaces. +* `abstract`: The abstract for a section, visible in the Table of + Contents (TOC). +* `description`: Detailed description of a tag (except chapters), + shown as synopsis. +* `values`: A list of 'values' for the tag. These values are used for + cross-referencing. + + +Other Tags +---------- + +Except the ones given above, any other tags will be added as a part of +a subsection. All tags are lowercase by convention. + + +Public Header Definitions +------------------------- + +The public headers for FreeType have their names defined in +`include/freetype/config/ftheader.h`. Any new public header file must +be defined in this file, in the following format: + + #define FT_NEWNAME_H + +Where `newname` is the name of the header file. + +This macro is combined with the file location of a sub-section and +printed with the object. + + +Note on code blocks captured after comments +------------------------------------------- + +All non-documentation lines after a documentation comment block are +captured to be displayed as the code for the sub-section. To stop +collection, a line with `/* */` should be added. + + +General Formatting Conventions +------------------------------ + +* Use two spaces after a full stop ending a sentence. +* Use appropriate uppercasing in titles. Refer + + https://english.stackexchange.com/a/34 + + for more information. +* Do not add trailing parentheses when citing a C function. + + +Markdown Usage +-------------- + +All tags, except the ones that define the name and title for a block +support markdown in them. Docwriter uses a markdown parser that +follows rules given in John Gruber's markdown guide: + + https://daringfireball.net/projects/markdown/syntax + +with a few exceptions and extensions, detailed below. This may also +be referred to as the **FreeType Flavored Markdown**. + + +Headers +------- + +Markdown headers should not be used directly, because these are added +based on section titles, sub-section names, and tags. However, if a +header needs to be added, note the following correspondence to HTML tags: + +* Section title on top of the page is `H1`. +* Sub-section titles are `H2`. +* Parts of sub-sections are `H4`. +* Any header added will be visible in the Table of Contents (TOC) of + the page. + + +Emphasis +-------- + +* Use `_underscores_` for italics. +* Use `**double asterisks**` for bold. + +Although the other notations (double underscore for bold, single +asterisk for italics) are supported, it is recommended to use the +above for consistency. + +Note that there may be cases where having two asterisks or underscores +in a line may lead to text being picked up as italics or bold. +Although unintentional, this is correct markdown behavior. + +For inline code, wrap the sequence with backticks (see below). This +renders symbols correctly without modifications. If a symbol is +absolutely required outside of an inline code block or code sequence, +escape it with a backslash (like `\*` or `\_`). + + +Lists +----- + +Unordered lists can be created with asterisks: + + * Unordered list items can use asterisks. + * Another list item. + +Ordered lists start with numbers: + + 1. This is an ordered list item. + 2. Brackets after numbers won't work. + +To continue a list over multiple paragraphs, indent them with at least +four spaces. For example: + + 1. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. + Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, + viverra nec, fringilla in, laoreet vitae, risus. + + Donec sit amet nisl. Aliquam semper ipsum sit amet velit. + Suspendisse id sem consectetuer libero luctus adipiscing. + + 2. This is the second list item. + + This paragraph is not a part of the list. + +More information on lists in markdown is available at + + https://daringfireball.net/projects/markdown/syntax#list + + +Cross-references +---------------- + +Other sub-sections can be linked with the `@` symbol: + + @description: + While FreeType's CFF driver doesn't expose API functions by + itself, it is possible to control its behaviour with + @FT_Property_Set and @FT_Property_Get. + +If a field in the `values` table of another sub-section is linked, the +link leads to its parent sub-section. + + +Links and Images +---------------- + +All URLs are converted to links in the HTML documentation. + +Markdown syntax for links and images are fully supported. + + +Inline Code +----------- + +To indicate a span of code, wrap it with backtick quotes (`` ` ``): + + Use the `printf()` function. + +Cross-references, markdown, and html styling do not work in inline code +sequences. + + +Code and Syntax Highlighting +---------------------------- + +Blocks of code are fenced by lines with three back-ticks `` ``` `` +followed by the language name, if any (used for syntax highlighting), +as demonstrated in the following example. + + ```c + x = y + z; + if ( zookoo == 2 ) + { + foobar(); + } + ``` + +Note that the indentation of the opening line and the closing line +must be exactly the same. The code sequence itself should have a +larger indentation than the surrounding back-ticks. + +Like inline code, markdown and html styling is *not* supported inside +code blocks. + + +Tables +------ + +Tables are used to list values, input, and other fields. The FreeType +Flavored Markdown adopts a simple approach to tables with two columns, +or field definition tables. + +Field definition names may contain alphanumeric, underscore, and the +`.` characters. This is followed by `::`. The following lines are +the second column of the table. A field definition ends with the +start of another field definition, or a markup tag. + + @Input: + pathname :: + A path to the font file. + + face_index :: + See @FT_Open_Face for a detailed description of this + parameter. + + +Non-breaking Space +------------------ + +A tilde can be used to create a non-breaking space. The example + + The encoding value~0 is reserved. + +is converted to + + The encoding value 0 is reserved. + + +---------------------------------------------------------------------- + +Copyright (C) 2018-2026 by +Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute +this file you indicate that you have read the license and understand +and accept it fully. + + +--- end of DOCGUIDE --- diff --git a/local/recipes/libs/freetype2/source/docs/FTL.TXT b/local/recipes/libs/freetype2/source/docs/FTL.TXT new file mode 100644 index 0000000000..b9e8cbd66f --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/FTL.TXT @@ -0,0 +1,169 @@ + The FreeType Project LICENSE + ---------------------------- + + 2006-Jan-27 + + Copyright 1996-2002, 2006 by + David Turner, Robert Wilhelm, and Werner Lemberg + + + +Introduction +============ + + The FreeType Project is distributed in several archive packages; + some of them may contain, in addition to the FreeType font engine, + various tools and contributions which rely on, or relate to, the + FreeType Project. + + This license applies to all files found in such packages, and + which do not fall under their own explicit license. The license + affects thus the FreeType font engine, the test programs, + documentation and makefiles, at the very least. + + This license was inspired by the BSD, Artistic, and IJG + (Independent JPEG Group) licenses, which all encourage inclusion + and use of free software in commercial and freeware products + alike. As a consequence, its main points are that: + + o We don't promise that this software works. However, we will be + interested in any kind of bug reports. (`as is' distribution) + + o You can use this software for whatever you want, in parts or + full form, without having to pay us. (`royalty-free' usage) + + o You may not pretend that you wrote this software. If you use + it, or only parts of it, in a program, you must acknowledge + somewhere in your documentation that you have used the + FreeType code. (`credits') + + We specifically permit and encourage the inclusion of this + software, with or without modifications, in commercial products. + We disclaim all warranties covering The FreeType Project and + assume no liability related to The FreeType Project. + + + Finally, many people asked us for a preferred form for a + credit/disclaimer to use in compliance with this license. We thus + encourage you to use the following text: + + """ + Portions of this software are copyright © The FreeType + Project (https://freetype.org). All rights reserved. + """ + + Please replace with the value from the FreeType version you + actually use. + + +Legal Terms +=========== + +0. Definitions +-------------- + + Throughout this license, the terms `package', `FreeType Project', + and `FreeType archive' refer to the set of files originally + distributed by the authors (David Turner, Robert Wilhelm, and + Werner Lemberg) as the `FreeType Project', be they named as alpha, + beta or final release. + + `You' refers to the licensee, or person using the project, where + `using' is a generic term including compiling the project's source + code as well as linking it to form a `program' or `executable'. + This program is referred to as `a program using the FreeType + engine'. + + This license applies to all files distributed in the original + FreeType Project, including all source code, binaries and + documentation, unless otherwise stated in the file in its + original, unmodified form as distributed in the original archive. + If you are unsure whether or not a particular file is covered by + this license, you must contact us to verify this. + + The FreeType Project is copyright (C) 1996-2000 by David Turner, + Robert Wilhelm, and Werner Lemberg. All rights reserved except as + specified below. + +1. No Warranty +-------------- + + THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO + USE, OF THE FREETYPE PROJECT. + +2. Redistribution +----------------- + + This license grants a worldwide, royalty-free, perpetual and + irrevocable right and license to use, execute, perform, compile, + display, copy, create derivative works of, distribute and + sublicense the FreeType Project (in both source and object code + forms) and derivative works thereof for any purpose; and to + authorize others to exercise some or all of the rights granted + herein, subject to the following conditions: + + o Redistribution of source code must retain this license file + (`FTL.TXT') unaltered; any additions, deletions or changes to + the original files must be clearly indicated in accompanying + documentation. The copyright notices of the unaltered, + original files must be preserved in all copies of source + files. + + o Redistribution in binary form must provide a disclaimer that + states that the software is based in part of the work of the + FreeType Team, in the distribution documentation. We also + encourage you to put an URL to the FreeType web page in your + documentation, though this isn't mandatory. + + These conditions apply to any software derived from or based on + the FreeType Project, not just the unmodified files. If you use + our work, you must acknowledge us. However, no fee need be paid + to us. + +3. Advertising +-------------- + + Neither the FreeType authors and contributors nor you shall use + the name of the other for commercial, advertising, or promotional + purposes without specific prior written permission. + + We suggest, but do not require, that you use one or more of the + following phrases to refer to this software in your documentation + or advertising materials: `FreeType Project', `FreeType Engine', + `FreeType library', or `FreeType Distribution'. + + As you have not signed this license, you are not required to + accept it. However, as the FreeType Project is copyrighted + material, only this license, or another one contracted with the + authors, grants you the right to use, distribute, and modify it. + Therefore, by using, distributing, or modifying the FreeType + Project, you indicate that you understand and accept all the terms + of this license. + +4. Contacts +----------- + + There are two mailing lists related to FreeType: + + o freetype@nongnu.org + + Discusses general use and applications of FreeType, as well as + future and wanted additions to the library and distribution. + If you are looking for support, start in this list if you + haven't found anything to help you in the documentation. + + o freetype-devel@nongnu.org + + Discusses bugs, as well as engine internals, design issues, + specific licenses, porting, etc. + + Our home page can be found at + + https://freetype.org + + +--- end of FTL.TXT --- diff --git a/local/recipes/libs/freetype2/source/docs/GPLv2.TXT b/local/recipes/libs/freetype2/source/docs/GPLv2.TXT new file mode 100644 index 0000000000..b2fe7b6af3 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/GPLv2.TXT @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public 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. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 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. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/local/recipes/libs/freetype2/source/docs/INSTALL b/local/recipes/libs/freetype2/source/docs/INSTALL new file mode 100644 index 0000000000..f576efec85 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/INSTALL @@ -0,0 +1,114 @@ + +There are several ways to build the FreeType library, depending on +your system and the level of customization you need. Here is a short +overview of the documentation available: + + +I. Prerequisites and dependencies +================================= + + FreeType is a low level C library that only depends on the standard + C library with very few platform-dependent optimizations utilized at + build time. Any C99-compliant compiler should be able to compile + FreeType. System libraries, such as zlib, Gzip, bzip2, Brotli, + and libpng, might be used to handle compressed fonts or decode + embedded PNG glyphs. + + FreeType auto-configuration scripts should be able to detect the + prerequisites if the necessary headers are available at the default + locations. Otherwise, modify `include/freetype/config/ftoption.h` + to control how the FreeType library gets built. Normally, you don't + need to change anything. + + Applications have very limited control over FreeType's behaviour at + run-time; look at the documentation of function `FT_Property_Set`. + + +II. Normal installation and upgrades +==================================== + + 1. Unix and Unix-like systems + + This also includes MacOS, Cygwin, MinGW + MSYS, Mingw-w64 + MSYS2, + and possibly other, similar environments. + + Please read `INSTALL.UNIX` to install or upgrade FreeType 2 on a + Unix system. Note that you *need* GNU Make for automatic + compilation, since other make tools won't work (this includes BSD + Make). + + GNU Make VERSION 3.81 OR NEWER IS NEEDED! + + + 2. Other systems using GNU Make + + On some non-Unix platforms, it is possible to build the library + using only the GNU Make utility. Note that *NO OTHER MAKE TOOL + WILL WORK*[1]! This methods supports several compilers on + Windows, OS/2, and BeOS, including MinGW* (without MSYS*), Visual + C++, Borland C++, and more. + + Instructions are provided in the file `INSTALL.GNU`. + + + 3. Other build tools and platforms. + + A few other tools can be used to build FreeType. You can find + the corresponding instruction files in the FreeType root folder + or the builds/ sub-folder. + + CMake :: see `CMakeLists.txt` for more information + Meson :: see `meson.build` for more information + MSBuild :: see `MSBuild.sln` for more information + MMS :: see `vms_make.com` and `docs/INSTALL.VMS` + + + 4. With an IDE Project File (e.g., for Visual Studio or CodeWarrior) + + We provide a small number of 'project files' for various IDEs to + automatically build the library as well. Note that these files + are not actively supported by FreeType developers, they can break + or become obsolete. + + To find them, have a look at the content of the `builds/` + directory, where stands for your OS or environment. + + + 5. From you own IDE, or own Makefiles + + If you want to create your own project file, follow the + instructions given in the `INSTALL.ANY` document of this + directory. + + +III. Custom builds of the library +================================= + + Customizing the compilation of FreeType is easy, and allows you to + select only the components of the font engine that you really need. + For more details read the file `CUSTOMIZE`. + + +---------------------------------------------------------------------- + +[1] make++, a make tool written in Perl, has sufficient support of GNU + make extensions to build FreeType. See + + https://makepp.sourceforge.net + + for more information; you need version 2.0 or newer, and you must + pass option `--norc-substitution`. + +---------------------------------------------------------------------- + +Copyright (C) 2000-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute +this file you indicate that you have read the license and understand +and accept it fully. + + +--- end of INSTALL --- diff --git a/local/recipes/libs/freetype2/source/docs/INSTALL.ANY b/local/recipes/libs/freetype2/source/docs/INSTALL.ANY new file mode 100644 index 0000000000..d92b27cb50 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/INSTALL.ANY @@ -0,0 +1,157 @@ +Instructions on how to build FreeType with your own build tool +============================================================== + +See the file `CUSTOMIZE' to learn how to customize FreeType to +specific environments. + + +I. Standard procedure +--------------------- + + * If you use macro names for FreeType header files (while mandatory + in earlier versions, this is now optional since FreeType version + 2.6.1) it is necessary to disable pre-compiled headers. This is + very important for Visual C++, because lines like + + #include FT_FREETYPE_H + + are not correctly supported by this compiler while being ISO C + compliant! + + * You need to add the directory `include' to your include path when + compiling the library. + + * FreeType 2 is made of several components; each of them is located + in a subdirectory of `freetype/src'. For example, + `freetype/src/truetype/' contains the TrueType font driver. + + * DO NOT COMPILE ALL C FILES! Rather, compile the following ones. + + -- base components (required) + + src/base/ftsystem.c + src/base/ftinit.c + src/base/ftdebug.c + + src/base/ftbase.c + + src/base/ftbbox.c -- recommended, see + src/base/ftglyph.c -- recommended, see + + src/base/ftbdf.c -- optional, see + src/base/ftbitmap.c -- optional, see + src/base/ftcid.c -- optional, see + src/base/ftfstype.c -- optional + src/base/ftgasp.c -- optional, see + src/base/ftgxval.c -- optional, see + src/base/ftmm.c -- optional, see + src/base/ftotval.c -- optional, see + src/base/ftpatent.c -- optional + src/base/ftpfr.c -- optional, see + src/base/ftstroke.c -- optional, see + src/base/ftsynth.c -- optional, see + src/base/fttype1.c -- optional, see + src/base/ftwinfnt.c -- optional, see + + src/base/ftmac.c -- only on the Macintosh + + -- font drivers (optional; at least one is needed) + + src/bdf/bdf.c -- BDF font driver + src/cff/cff.c -- CFF/OpenType font driver + src/cid/type1cid.c -- Type 1 CID-keyed font driver + src/pcf/pcf.c -- PCF font driver + src/pfr/pfr.c -- PFR/TrueDoc font driver + src/sfnt/sfnt.c -- SFNT files support + (TrueType & OpenType) + src/truetype/truetype.c -- TrueType font driver + src/type1/type1.c -- Type 1 font driver + src/type42/type42.c -- Type 42 font driver + src/winfonts/winfnt.c -- Windows FONT / FNT font driver + + -- rasterizers (optional; at least one is needed for vector + formats) + + src/smooth/smooth.c -- anti-aliasing rasterizer + src/raster/raster.c -- monochrome rasterizer + src/sdf/sdf.c -- Signed Distance Field driver + + -- auxiliary modules (optional) + + src/autofit/autofit.c -- auto hinting module + src/cache/ftcache.c -- cache sub-system (in beta) + src/gzip/ftgzip.c -- support for compressed fonts (.gz) + src/lzw/ftlzw.c -- support for compressed fonts (.Z) + src/bzip2/ftbzip2.c -- support for compressed fonts (.bz2) + src/gxvalid/gxvalid.c -- TrueTypeGX/AAT table validation + src/otvalid/otvalid.c -- OpenType table validation + src/psaux/psaux.c -- PostScript Type 1 parsing + src/pshinter/pshinter.c -- PS hinting module + src/psnames/psnames.c -- PostScript glyph names support + + + Notes: + + `ftcache.c' needs `ftglyph.c' + `ftfstype.c' needs `fttype1.c' + `ftglyph.c' needs `ftbitmap.c' + `ftstroke.c' needs `ftglyph.c' + `ftsynth.c' needs `ftbitmap.c' + + `cff.c' needs `sfnt.c', `pshinter.c', and `psnames.c' + `truetype.c' needs `sfnt.c' and `psnames.c' + `type1.c' needs `psaux.c' `pshinter.c', and `psnames.c' + `type1cid.c' needs `psaux.c', `pshinter.c', and `psnames.c' + `type42.c' needs `truetype.c' + + Please consult the central `include/freetype/config/ftoption.h' + configuration file for details on additional libraries necessary + for some optional features. + + + Read the file `CUSTOMIZE' in case you want to compile only a subset + of the drivers, renderers, and optional modules; a detailed + description of the various base extension is given in the top-level + file `modules.cfg'. + + You are done. In case of problems, see the archives of the FreeType + development mailing list. + + +II. Support for flat-directory compilation +------------------------------------------ + + It is possible to put all FreeType 2 source files into a single + directory, with the *exception* of the `include' hierarchy. + + 1. Copy all files in current directory + + cp freetype/src/base/*.[hc] . + cp freetype/src/raster/*.[hc] . + cp freetype/src/smooth/*.[hc] . + etc. + + 2. Compile sources + + cc -c -Iinclude -DFT2_BUILD_LIBRARY ftsystem.c + cc -c -Iinclude -DFT2_BUILD_LIBRARY ftinit.c + cc -c -Iinclude -DFT2_BUILD_LIBRARY ftdebug.c + cc -c -Iinclude -DFT2_BUILD_LIBRARY ftbase.c + etc. + + You don't need to define the FT_FLAT_COMPILATION macro (as this + was required in previous releases of FreeType 2). + +---------------------------------------------------------------------- + +Copyright (C) 2003-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute +this file you indicate that you have read the license and understand +and accept it fully. + + +--- end of INSTALL.ANY --- diff --git a/local/recipes/libs/freetype2/source/docs/INSTALL.CROSS b/local/recipes/libs/freetype2/source/docs/INSTALL.CROSS new file mode 100644 index 0000000000..d417fbd12f --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/INSTALL.CROSS @@ -0,0 +1,177 @@ +This document contains instructions on how to cross-build the FreeType +library on Unix systems, for example, building binaries for Linux/MIPS +on FreeBSD/i386. Before reading this document, please consult the +file `INSTALL.UNIX' for required tools and the basic self-building +procedure. + + + 1. Required Tools + ----------------- + + For self-building the FreeType library on a Unix system, GNU Make + 3.81 or newer is required. `INSTALL.UNIX' contains hints how to + check the installed `make'. + + The GNU C compiler to cross-build the target system is required. + Currently, using a non-GNU cross compiler is untested. The cross + compiler is expected to be installed with a system prefix. For + example, if your building system is FreeBSD/i386 and the target + system is Linux/MIPS, the cross compiler should be installed with + the name `mips-ip22-linuxelf-gcc'. + + A C compiler for a self-build is required also, to build a tool + (`apinames') that is executed during the build procedure. Non-GNU + self compilers are acceptable, but such a setup is untested. + + + 2. Configuration + ---------------- + + 2.1. Building and target system + + To configure a cross-build, the options `--host=' and + `--build=' must be passed to the `configure' script. + For example, if your build system is FreeBSD/i386 and the target + system is Linux/MIPS, say + + ./configure \ + --build=i386-unknown-freebsd \ + --host=mips-ip22-linuxelf \ + [other options] + + It should be noted that `--host=' specifies the system + where the built binaries will be executed, not the system where + the build actually happens. Older versions of GNU autoconf use + the option pair `--host=' and `--target='. This is broken and + doesn't work. Similarly, an explicit CC specification like + + env CC=mips-ip22-linux-gcc ./configure # BAD + + or + + env CC=/usr/local/mips-ip22-linux/bin/gcc ./configure # BAD + + doesn't work either; such a configuration confuses the + `configure' script while trying to find the cross and native C + compilers. + + + 2.2. The prefix to install FreeType2 + + Setting `--prefix=' properly is important. The prefix + to install FreeType2 is written into the `freetype-config' + script and `freetype2.pc' configuration file. + + If the built FreeType 2 library is used as a part of the + cross-building system, the prefix is expected to be different + from the self-building system. For example, a configuration + with `--prefix=/usr/local' installs binaries into the + system-wide `/usr/local' directory, which then can't be executed + due to the incorrect architecture. This causes confusion in + configuration of all applications that use FreeType2. Instead, + use a prefix to install the cross-build into a separate system + tree, for example, `--prefix=/usr/local/mips-ip22-linux/'. + + On the other hand, if the built FreeType 2 library is used as a + part of the target system, the prefix to install should reflect + the file system structure of the target system. + + + 2.3. Library dependencies + + FreeType normally depends on external libraries like `libpng' or + `libharfbuzz'. The easiest case is to deactivate all such + dependencies using the `--without-XXX' configuration options. + However, if you want to use those libraries, you should ensure + that they are available both on the target system and as + (cross-compiled) libraries on the build system. + + FreeType uses `pkg-config' to find most of the libraries; the + other libraries it links to are expected in the standard system + directories. Since the default pkg-config's meta-information + files (like `harfbuzz.pc') of the build platform don't work, use + one of the two possible solutions below. + + o Use pkg-config's meta-information files that are adjusted to + cross-compile and cross-link with the target platform's + libraries. Make sure those files are found before the build + system's default files. Example: + + ./configure \ + --build=i386-unknown-freebsd \ + --host=mips-ip22-linuxelf \ + PKG_CONFIG_LIBDIR="/usr/local/mips-ip22-linux/lib/pkgconfig" \ + [other options] + + See the manpage of `pkg-config' for more details. + + o Set variables like LIBPNG_LIBS as additional options to the + `configure' script, overriding the values `pkg-config' would + provide. `configure --help' shows the available environment + variables. Example: + + ./configure \ + --build=i386-unknown-freebsd \ + --host=mips-ip22-linuxelf \ + LIBPNG_CFLAGS="-I/usr/local/mips-ip22-linux/include" \ + LIBPNG_LIBS="-L/usr/local/mips-ip22-linux/lib -lpng12" \ + [other options] + + + 3. Building command + ------------------- + + If the configuration finishes successfully, invoking GNU make + builds FreeType2. Just say + + make + + or + + gmake + + depending on the name the GNU make binary actually has. + + + 4. Installation + --------------- + + Saying + + make install + + as usual to install FreeType2 into the directory tree specified by + the argument of the `--prefix' option. + + As noted in section 2.2, FreeType2 is sometimes configured to be + installed into the system directory of the target system, and + should not be installed in the cross-building system. In such + cases, the make variable `DESTDIR' is useful to change the root + directory in the installation. For example, after + + make DESTDIR=/mnt/target_system_root/ install + + the built FreeType2 library files are installed into the directory + `/mnt/target_system_root//lib'. + + + 5. TODO + ------- + + Cross building between Cygwin (or MSys) and Unix must be tested. + + +---------------------------------------------------------------------- + +Copyright (C) 2006-2026 by +suzuki toshiya, David Turner, Robert Wilhelm, and Werner Lemberg. + + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute +this file you indicate that you have read the license and understand +and accept it fully. + + +--- end of INSTALL.CROSS --- diff --git a/local/recipes/libs/freetype2/source/docs/INSTALL.GNU b/local/recipes/libs/freetype2/source/docs/INSTALL.GNU new file mode 100644 index 0000000000..766f6f8a1c --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/INSTALL.GNU @@ -0,0 +1,181 @@ +This document contains instructions how to build the FreeType library +on non-Unix systems with the help of GNU Make. Note that if you are +running Cygwin or MinGW/MSYS in Windows, you should follow the +instructions in the file `INSTALL.UNIX' instead. + + + FreeType 2 includes a powerful and flexible build system that allows + you to easily compile it on a great variety of platforms from the + command line. To do so, just follow these simple instructions. + + 1. Install GNU Make + ------------------- + + The FreeType 2 build system relies on many features special to GNU + Make. + + NEARLY ALL OTHER MAKE TOOLS FAIL, INCLUDING `BSD MAKE', SO REALLY + INSTALL A RECENT VERSION OF GNU MAKE ON YOUR SYSTEM! + + Note that make++, a make tool written in Perl, supports enough + features of GNU make to compile FreeType. See + + https://makepp.sourceforge.net + + for more information; you need version 2.0 or newer, and you must + pass option `--norc-substitution'. + + Make sure that you are invoking GNU Make from the command line, by + typing something like: + + make -v + + to display its version number. + + VERSION 3.81 OR NEWER IS NEEDED! + + + 2. Invoke `make' + ---------------- + + Go to the root directory of FreeType 2, then simply invoke GNU + Make from the command line. This will launch the FreeType 2 host + platform detection routines. A summary will be displayed, for + example, on Win32. + + + ============================================================== + FreeType build system -- automatic system detection + + The following settings are used: + + platform windows + compiler gcc + configuration directory .\builds\windows + configuration rules .\builds\windows\w32-gcc.mk + + If this does not correspond to your system or settings please + remove the file 'config.mk' from this directory then read the + INSTALL file for help. + + Otherwise, simply type 'make' again to build the library + or 'make refdoc' to build the API reference (the latter needs + Python >= 3.5). + ============================================================= + + + If the detected settings correspond to your platform and compiler, + skip to step 5. Note that if your platform is completely alien to + the build system, the detected platform will be `ansi'. + + + 3. Configure the build system for a different compiler + ------------------------------------------------------ + + If the build system correctly detected your platform, but you want + to use a different compiler than the one specified in the summary + (for most platforms, gcc is the default compiler), invoke GNU Make + with + + make setup + + Examples: + + to use Visual C++ on Win32, type: `make setup visualc' + to use Borland C++ on Win32, type `make setup bcc32' + to use Watcom C++ on Win32, type `make setup watcom' + to use Intel C++ on Win32, type `make setup intelc' + to use LCC-Win32 on Win32, type: `make setup lcc' + to use Watcom C++ on OS/2, type `make setup watcom' + to use VisualAge C++ on OS/2, type `make setup visualage' + + The name to use is platform-dependent. The list of + available compilers for your system is available in the file + `builds//detect.mk'. + + If you are satisfied by the new configuration summary, skip to + step 5. + + + 3a. Use clang instead of gcc + ---------------------------- + + The `clang' compiler can use FreeType's setup for `gcc'; it is + sufficient to set the `CC' variable, for example + + make CC=clang + + + 3b. Compiling with a C++ compiler + --------------------------------- + + FreeType can be built with a C++ compiler, for example + + make CC="g++" + + If `clang++' should be used it is necessary to also override the + `ANSIFLAGS' variable: + + make CC="clang++" ANSIFLAGS="" + + + 4. Configure the build system for an unknown platform/compiler + -------------------------------------------------------------- + + The auto-detection/setup phase of the build system copies a file + to the current directory under the name `config.mk'. + + For example, on OS/2+gcc, it would simply copy + `builds/os2/os2-gcc.mk' to `./config.mk'. + + If for some reason your platform isn't correctly detected, copy + manually the configuration sub-makefile to `./config.mk' and go to + step 5. + + Note that this file is a sub-Makefile used to specify Make + variables for compiler and linker invocation during the build. + You can easily create your own version from one of the existing + configuration files, then copy it to the current directory under + the name `./config.mk'. + + + 5. Build the library + -------------------- + + The auto-detection/setup phase should have copied a file in the + current directory, called `./config.mk'. This file contains + definitions of various Make variables used to invoke the compiler + and linker during the build. [It has also generated a file called + `ftmodule.h' in the objects directory (which is normally + `/objs/'); please read the file `docs/CUSTOMIZE' for + customization of FreeType.] + + To launch the build, simply invoke GNU Make again: The top + Makefile will detect the configuration file and run the build with + it. If you have used variables in step 3, you must use the same + variables here, too. + + + Final note + + The above instructions build a _statically_ linked library of the + font engine in the `objs' directory. On Windows, you can build a + DLL either with MinGW (within an MSYS shell, following the + instructions in `INSTALL.UNIX'), or you use one of the Visual C++ + project files; see the subdirectories of `builds/windows'. For + everything else, you are on your own, and you might follow the + instructions in `INSTALL.ANY' to create your own Makefiles. + +---------------------------------------------------------------------- + +Copyright (C) 2003-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute +this file you indicate that you have read the license and understand +and accept it fully. + + +--- end of INSTALL.GNU --- diff --git a/local/recipes/libs/freetype2/source/docs/INSTALL.MAC b/local/recipes/libs/freetype2/source/docs/INSTALL.MAC new file mode 100644 index 0000000000..2587e24a65 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/INSTALL.MAC @@ -0,0 +1,32 @@ +Please follow the instructions in INSTALL.UNIX to install FreeType on +Mac OS X. + +Currently FreeType2 functions based on some deprecated Carbon APIs +return `FT_Err_Unimplemented_Feature' always, even if FreeType2 is +configured and built on the system that deprecated Carbon APIs are +available. To enable deprecated FreeType2 functions as far as +possible, replace `src/base/ftmac.c' by `builds/mac/ftmac.c'. + +Starting with Mac OS X 10.5, gcc defaults the deployment target to +10.5. In previous versions of Mac OS X, this defaulted to 10.1. If +you want your built binaries to run only on 10.5, this change does not +concern you. If you want them to also run on older versions of Mac +OS X, then you must either set the MACOSX_DEPLOYMENT_TARGET +environment variable or pass `-mmacosx-version-min' to gcc. You +should specify the oldest version of Mac OS you want the code to run +on. For example, if you use Bourne shell: + + export MACOSX_DEPLOYMENT_TARGET=10.2 + +or, if you use C shell: + + setenv MACOSX_DEPLOYMENT_TARGET 10.2 + +Alternatively, you could pass `-mmacosx-version-min=10.2' to gcc. + +Here the number 10.2 is the lowest version that the built binaries can +run on. In the above cases, the built binaries will run on Mac OS X +10.2 and later, but _not_ earlier. If you want to run on earlier, you +have to set lower version, e.g., 10.0. + +For classic Mac OS (Mac OS 7, 8, 9) please refer to builds/mac/README. diff --git a/local/recipes/libs/freetype2/source/docs/INSTALL.UNIX b/local/recipes/libs/freetype2/source/docs/INSTALL.UNIX new file mode 100644 index 0000000000..acbd11e6ed --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/INSTALL.UNIX @@ -0,0 +1,139 @@ +This document contains instructions on how to build the FreeType +library on Unix systems. This also works for emulations like Cygwin +or MSys on Win32: + + + 1. Ensure that you are using GNU Make + ------------------------------------- + + The FreeType build system _exclusively_ works with GNU Make. You + will not be able to compile the library with the instructions + below using any other alternative (including BSD Make). + + Check that you have GNU make by running the command: + + make -v + + This should dump some text that begins with: + + GNU Make + Copyright (C) Free Software Foundation Inc. + + Note that version 3.81 or higher is *required* or the build will + fail. + + It is also fine to have GNU Make under another name (e.g. 'gmake') + if you use the MAKE variable as described below. + + As a special exception, 'makepp' can also be used to build + FreeType 2. See the file docs/MAKEPP for details. + + For builds with `cmake' please check file `CMakeLists.txt'; this + is a contributed file not directly supported by the FreeType team. + + + 2. Regenerate the configure script if needed + -------------------------------------------- + + This only applies if you are building a git snapshot or checkout, + *not* if you grabbed the sources of an official release. + + You need to invoke the `autogen.sh' script in the top-level + directory in order to create the `configure' script for your + platform. Normally, this simply means typing: + + sh autogen.sh + + In case of problems, you may need to install or upgrade Automake, + Autoconf or Libtool. See `README.git' in the top-level directory + for more information. + + + 3. Build and install the library + -------------------------------- + + Say + + ./configure --help + + to see the list of possible configuration options and important + environment variables. The ./configure script will detect some + prerequisite system libraries (libpng, brotli, etc.) if their + headers are available at the default locations. + + The following should work on all Unix systems where the `make' + command invokes GNU Make: + + ./configure [options] + make + make install (as root) + + The default installation path is `/usr/local'. It can be changed + with the `--prefix=' option. Example: + + ./configure --prefix=/usr + + When using a different command to invoke GNU Make, use the MAKE + variable. For example, if `gmake' is the command to use on your + system, do something like: + + MAKE=gmake ./configure [options] + gmake + gmake install (as root) + + If this still doesn't work, there must be a problem with your + system (e.g., you are using a very old version of GNU Make). + + For library identification, FreeType's `configure' script uses the + `pkg-config' interface: Assuming it needs library `foo', it calls + the `pkg-config' program to find information on library `foo', + which in turn looks for a `foo.pc' file installed at the system. + Some platforms, however, don't come with `pkg-support'; you then + have to use environment variables as described by `configure + --help'. Example: + + LIBPNG_CFLAGS="-I/path/to/libpng/include/directory" \ + LIBPNG_LIBS="-L/path/to/libpng/lib/directory" \ + configure ... + + It is possible to compile FreeType in a different directory. + Assuming the FreeType source files in directory `/src/freetype' a + compilation in directory `foo' works as follows: + + cd foo + /src/freetype/configure [options] + make + make install + + + 3.1 Interdependency with HarfBuzz + ................................. + + Note that there is a chicken-and-egg problem currently since the + HarfBuzz library (used by the auto-hinter to improve support of + OpenType fonts) depends on FreeType, which can be solved as + follows in case HarfBuzz is not yet installed on your system. + + 1. Call FreeType's `configure' script with option + `--without-harfbuzz', then compile and install FreeType. + + 2. Compile and install HarfBuzz. + + 3. Call FreeType's `configure' script without option + `--without-harfbuzz' (after executing `make distclean'), then + compile and install FreeType again. + + +---------------------------------------------------------------------- + +Copyright (C) 2003-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute +this file you indicate that you have read the license and understand +and accept it fully. + + +--- end of INSTALL.UNIX --- diff --git a/local/recipes/libs/freetype2/source/docs/INSTALL.VMS b/local/recipes/libs/freetype2/source/docs/INSTALL.VMS new file mode 100644 index 0000000000..4c9a97de0b --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/INSTALL.VMS @@ -0,0 +1,69 @@ +How to build the FreeType library on VMS +---------------------------------------- + +It is actually very straightforward to install the FreeType library. +Just execute `vms_make.com from` the toplevel directory to build the +library. This procedure currently accepts the following options: + +* `DEBUG` + Build the library with debug information and without optimization. + +* `lopts=` + Options to pass to the link command, e.g., `lopts=/traceback`. + +* `ccopt=` + Options to pass to the C compiler, e.g., `ccopt=/float=ieee`. + +In case you did download the demos, place them in a separate directory +sharing the same top level as the directory of FreeType and follow the +same instructions as above for the demos from there. The build +process relies on this to figure out the location of the FreeType +include files. + + +To rebuild the sources it is necessary to have MMS/MMK installed on +the system. + +The library is available in the directory + + [.LIB] + +To compile applications using FreeType you have to define the logical +`FREETYPE` pointing to the directory + + [.INCLUDE.FREETYPE] + +i.e., if the directory in which this `INSTALL.VMS` file is located is +`$disk:[freetype.docs]`, then define the logical with + + define freetype $disk:[freetype.include.freetype] + +See http://nchrem.tnw.tudelft.nl/openvms/software2.html#Freetype for +the packages FreeType depends on. + +The latest versions were tested using + - VSI C V7.4-002 and DECWindows V1.7-F on OpenVMS Alpha V8.4-2L1 + - VSI C V7.4-001 and DECWindows V1.7-E on OpenVMS IA64 V8.4-2L3 + + +Any problems can be reported to + + Jouk Jansen or + +Orginal version of the build procedures was created by + + Martin P.J. Zinser + +------------------------------------------------------------------------ + +Copyright (C) 2000-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute this +file you indicate that you have read the license and understand and +accept it fully. + + +--- end of INSTALL.VMS --- diff --git a/local/recipes/libs/freetype2/source/docs/MAKEPP b/local/recipes/libs/freetype2/source/docs/MAKEPP new file mode 100644 index 0000000000..4450e47700 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/MAKEPP @@ -0,0 +1,5 @@ +As a special exception, FreeType can also be built with the 'makepp' +build tool, available from https://makepp.sourceforge.net. + +Note, however, that you will need at least version 2.0 and pass the +option --norc-substitution to have it work correctly. diff --git a/local/recipes/libs/freetype2/source/docs/PROBLEMS b/local/recipes/libs/freetype2/source/docs/PROBLEMS new file mode 100644 index 0000000000..40bdc35a67 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/PROBLEMS @@ -0,0 +1,90 @@ +This file describes various problems that have been encountered in +compiling, installing and running FreeType 2. Suggestions for +additions or other improvements to this file are welcome. + +---------------------------------------------------------------------- + +Running Problems +================ + + +* Some Type 1, Multiple Masters, and CID-keyed PostScript fonts aren't + handled correctly. + +----- + +Of course, there might be bugs in FreeType, but some fonts based on +the PostScript format can't be handled indeed. The reason is that +FreeType doesn't contain a full PostScript interpreter but applies +pattern matching instead. In case a font doesn't follow the standard +structure of the given font format, FreeType fails. A typical example +is Adobe's `Optima' font family which contains extra code to switch +between low and high resolution versions of the glyphs. + +It might be possible to patch FreeType in some situations, though. +Please report failing fonts so that we investigate the problem and set +up a list of such problematic fonts. + + +* Why do identical FreeType versions render differently on different + platforms? + +----- + +Different distributions compile FreeType with different options. The +developer version of a distribution's FreeType package, which is +needed to compile your program against FreeType, includes the file +ftoption.h. Compare each platform's copy of ftoption.h to find the +differences. + + +---------------------------------------------------------------------- + + +Compilation Problems +==================== + + +* I get an `internal compilation error' (ICE) while compiling FreeType + 2.2.1 with Intel C++. + + This has been reported for the following compiler version: + + Intel(R) C++ Compiler for 32-bit applications, + Version 9.0 Build 20050430Z Package ID: W_CC_P_9.0.019 + +----- + +The best solution is to update the compiler to version + + Intel(R) C++ Compiler for 32-bit applications, + Version 9.1 Build 20060323Z Package ID: W_CC_P_9.1.022 + +or newer. If this isn't feasible, apply the following patch. + + +--- src/cache/ftcbasic.c 20 Mar 2006 12:10:24 -0000 1.20 ++++ src/cache/ftcbasic.c.patched 15 May 2006 02:51:02 -0000 +@@ -252,7 +252,7 @@ + */ + + FT_CALLBACK_TABLE_DEF +- const FTC_IFamilyClassRec ftc_basic_image_family_class = ++ FTC_IFamilyClassRec ftc_basic_image_family_class = + { + { + sizeof ( FTC_BasicFamilyRec ), +@@ -266,7 +266,7 @@ + + + FT_CALLBACK_TABLE_DEF +- const FTC_GCacheClassRec ftc_basic_image_cache_class = ++ FTC_GCacheClassRec ftc_basic_image_cache_class = + { + { + ftc_inode_new, + + +---------------------------------------------------------------------- + +--- end of PROBLEMS --- diff --git a/local/recipes/libs/freetype2/source/docs/README b/local/recipes/libs/freetype2/source/docs/README new file mode 100644 index 0000000000..c2b5af8650 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/README @@ -0,0 +1,33 @@ +After saying `make refdoc' or `make refdoc-venv' the `reference/' directory +contains the FreeType API reference. You need Python >= 3.5 and pip to make +this target. + +There are two ways to generate the documentation: + +1. Using `make refdoc': + + - Ensure `python' and `pip' are available. + - Install pip package `docwriter' with `pip install --user docwriter'. + - Make target with `make refdoc'. + - This target can be run offline once required packages are installed. + +2. Using `make refdoc-venv' (requires internet access): + + - Ensure `python', `pip' and Python package `virtualenv' are available. + - Make target with `make refdoc-venv'. + - This may or may not require internet access every time depending on + pip and system caching. + +Some troubleshooting tips: + +* Regularly run `pip install --upgrade docwriter' to check for updates which +may include bug fixes. + +* `Docwriter' does not support Python 2. Ensure that Python >= 3.5 is +installed and available as `python3'/`python'. + +* Ensure that `docwriter' is installed in the same Python target that +`make refdoc' uses (python3/python). + +* If none of this works, send a mail to `freetype-devel@nongnu.org' or file +an issue at `https://github.com/freetype/docwriter/issues'. diff --git a/local/recipes/libs/freetype2/source/docs/TODO b/local/recipes/libs/freetype2/source/docs/TODO new file mode 100644 index 0000000000..7c7987d1dc --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/TODO @@ -0,0 +1,40 @@ +Here is a list of items that need to be addressed in FreeType 2 +--------------------------------------------------------------- + +* Implement stem3/counter hints properly in the Postscript hinter. + +* Add CIDCMap support to the CID driver. + +* Add track kerning support to the PFR driver. + +* Add kerning (AFM file) support to the CID driver. + + +Here is a list of bugs which should be handled +---------------------------------------------- + +Other bugs have been registered at the savannah bugzilla of FreeType. + +* CID driver: + Handle the case where a CID font has a top-level font matrix also + (see PLRM, 5.11.3, Type 0 CIDFonts). Since CID_FaceInfoRec lacks + a font_matrix entry we have to directly apply it to all subfont + matrices. + +* CID driver: + Use top-level font matrix entry for setting the upem value, not the + entries in the FDarray. If absent, use 1000. + +------------------------------------------------------------------------ + +Copyright (C) 2001-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute this +file you indicate that you have read the license and understand and +accept it fully. + + +--- end of TODO --- diff --git a/local/recipes/libs/freetype2/source/docs/VERSIONS.TXT b/local/recipes/libs/freetype2/source/docs/VERSIONS.TXT new file mode 100644 index 0000000000..566e4c7d76 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/VERSIONS.TXT @@ -0,0 +1,142 @@ +Due to our use of `libtool' to generate and install the FreeType 2 +libraries on Unix systems, as well as other historical events, it is +generally very difficult to know precisely which release of the font +engine is installed on a given system. + +This file tries to explain why and to document ways to properly detect +FreeType on Unix. + + +1. Version and Release numbers +------------------------------ + +For each new public release of FreeType 2, there are generally *three* +distinct `version' numbers to consider: + + * The official FreeType 2 release number, like 2.7.0 or 2.10.2. + + * The libtool (and Unix) specific version number, like 23.2.17. + This is what + + pkg-config freetype2 --modversion + + or + + freetype-config --version + + returns. + + * The platform-specific shared object number, used for example when + the library is installed as `/usr/lib/libfreetype.so.6.17.2'. + +The platform-specific number is, unsurprisingly, platform-specific and +varies with the operating system you are using (several variants of +Linux, FreeBSD, Solaris, etc.). You should thus _never_ use it, even +for simple tests. + +The libtool-specific number does not equal the release number but is +tied to it. + +The release number is available at *compile* time through the +following macros defined in `freetype.h': + + - FREETYPE_MAJOR: major release number + - FREETYPE_MINOR: minor release number + - FREETYPE_PATCH: patch release number + +See below for a small autoconf fragment. + +The release number is also available at *runtime* through the +`FT_Library_Version' API. + + +2. History +---------- + +The following table gives, for all releases since 2.5.0, the +corresponding libtool number, as well as the shared object number +found on _most_ systems, but not all of them: + + + release libtool so + ------------------------------- + 2.14.3 26.6.20 6.20.6 + 2.14.2 26.5.20 6.20.5 + 2.14.1 26.4.20 6.20.4 + 2.14.0 26.3.20 6.20.3 + 2.13.3 26.2.20 6.20.2 + 2.13.2 26.1.20 6.20.1 + 2.13.1 26.0.20 6.20.0 + 2.13.0 25.0.19 6.19.0 + 2.12.1 24.3.18 6.18.3 + 2.12.0 24.2.18 6.18.2 + 2.11.1 24.1.18 6.18.1 + 2.11.0 24.0.18 6.18.0 + 2.10.4 23.4.17 6.17.4 + 2.10.3 23.3.17 6.17.3 + 2.10.2 23.2.17 6.17.2 + 2.10.1 23.1.17 6.17.1 + 2.10.0 23.0.17 6.17.0 + 2.9.1 22.1.16 6.16.1 + 2.9.0 22.0.16 6.16.0 + 2.8.1 21.0.15 6.15.0 + 2.8.0 20.0.14 6.14.0 + 2.7.1 19.0.13 6.13.0 + 2.7.0 18.6.12 6.12.6 + 2.6.5 18.5.12 6.12.5 + 2.6.4 18.4.12 6.12.4 + 2.6.3 18.3.12 6.12.3 + 2.6.2 18.2.12 6.12.2 + 2.6.1 18.1.12 6.12.1 + 2.6.0 18.0.12 6.12.0 + 2.5.5 17.4.11 6.11.4 + 2.5.4 17.3.11 6.11.3 + 2.5.3 17.2.11 6.11.2 + 2.5.2 17.1.11 6.11.1 + 2.5.1 17.0.11 6.11.0 + 2.5.0 16.2.10 6.10.2 + + +3. Autoconf Code Fragment +------------------------- + +Lars Clausen contributed the following autoconf fragment to check +which version of FreeType is installed on a system (now updated to use +`pkg-config' instead of `freetype-config'). This one tests for a +version that is at least 2.10.2; you should change it to check against +other release numbers. + + + AC_MSG_CHECKING([whether FreeType version is 2.10.2 or higher]) + old_CPPFLAGS="$CPPFLAGS" + CPPFLAGS=`pkg-config freetype2 --cflags` + AC_TRY_CPP([ + +#include +#include + +#if FREETYPE_MAJOR*10000 + FREETYPE_MINOR*100 + FREETYPE_PATCH < 21002 +# error FreeType version too low. +#endif + + ], + [AC_MSG_RESULT(yes) + FREETYPE_LIBS=`pkg-config freetype2 --libs` + AC_SUBST(FREETYPE_LIBS) + AC_DEFINE(HAVE_FREETYPE,1,[Define if you have the FreeType2 library]) + CPPFLAGS="$old_CPPFLAGS"], + [AC_MSG_ERROR([Need FreeType library version 2.10.2 or higher])]) + +---------------------------------------------------------------------- + +Copyright (C) 2002-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute +this file you indicate that you have read the license and understand +and accept it fully. + + +--- end of VERSIONS.TXT --- diff --git a/local/recipes/libs/freetype2/source/docs/formats.txt b/local/recipes/libs/freetype2/source/docs/formats.txt new file mode 100644 index 0000000000..13b3eb2a29 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/formats.txt @@ -0,0 +1,227 @@ +This file contains a list of various font formats. It gives the +reference document and whether it is supported in FreeType 2. + +Table fields +------------ + + wrapper format + The format used to represent the font data. In the table below it + is used only if the font format differs. Possible values are + + SFNT binary + PFB binary + PS a text header, followed by binary or text data + LZW compressed with either `gzip' or `compress' + BZ2 compressed with `bzip2'. + + font format + How the font is to be accessed, possibly after converting the file + type and wrapper format into a generic form. Bitmap formats are + `BDF', `PCF', and one form of `WINFNT'; all others are vector + formats. `PS' indicates third-order, `TT' second-order Bézier + curves. + + font type + Sub-formats of the font format. `SBIT' and `MACSBIT' are bitmap + formats, `MM' and `VAR' support optical axes. `CFF2' supports + optical axes also. + + glyph access + If not specified, the glyph access is `standard' to the font + format. Values are `CID' for CID-keyed fonts, `SYNTHETIC' for + fonts that are modified versions of other fonts by means of a + transformation matrix, and `TYPE_0' for PS fonts which are to be + accessed in a tree-like structure. + + FreeType driver + The module in the FreeType library which handles the specific font + format. A missing entry means that FreeType doesn't support the + font format (yet). + + +Notes +----- + + The SFNT container format also provides `collections' (usually + having the file extension `.ttc' or `.otc'). A collection contains + multiple font faces that share some tables to avoid redundancy, thus + reducing the file size. In FreeType, elements of a collection can + be accessed with a proper face index. + + Both the GX and the OpenType 1.8 variation fonts provide `named + instances'. FreeType maps them to face indices (they can also be + accessed with the standard MM interface). + + Other font formats (not using the SFNT wrapper) also provide + multiple faces within one file; they are marked with an asterisk + (`*') in the table below. + + FreeType can be configured to support Mac files (on older Mac OS + versions, a `file' is stored as a data and a resource fork, that is, + within two separate data chunks). If a file can't be opened as a + font, FreeType then checks whether it is a resource fork, trying to + extract the contained font data from either a `POST' or `sfnt' + resource. + + +Please send additions and/or corrections to wl@gnu.org or to the +FreeType developer's list at freetype-devel@nongnu.org (for +subscribers only). If you can provide a font example for a format +which isn't supported yet please send a mail too. + + + wrapper font font glyph FreeType reference + format format type access driver documents + ----------------------------------------------------------------------------- + + --- BDF --- --- bdf 5005.BDF_Spec.pdf, X11 + + + SFNT PS TYPE_1 --- type1 Type 1 GX Font Format [7] + (for the Mac; not supported) + SFNT PS TYPE_1 CID cid 5180.sfnt.pdf (for the Mac) [3] + SFNT PS CFF --- cff OT spec, 5176.CFF.pdf + (`OTTO' format) + SFNT PS CFF CID cff OT spec, 5176.CFF.pdf + SFNT PS CFF SYNTHETIC --- OT spec, 5176.CFF.pdf + SFNT PS CFF2 --- cff OT spec 1.8 + + SFNT TT SBIT --- sfnt X11 (bitmaps only; + with `head' table) [8] + SFNT TT MACSBIT --- sfnt OT spec (for the Mac; + bitmaps only; `bhed' table) + SFNT TT --- --- truetype OT spec (`normal' TT font) + SFNT TT VAR --- truetype GX spec (`?var' tables) + SFNT TT VAR --- truetype OT spec 1.8 + (`?var' + `?VAR' tables) + + + WOFF --- --- --- cff, Compressed SFNT, ver. 1.0 [6] + truetype + WOFF2 --- --- --- cff, Compressed SFNT, ver. 2.0 [6] + truetype + + + --- PS TYPE_1 --- type1 T1_SPEC.pdf + (PFA, Type 1 font resource) + PFB PS TYPE_1 --- type1 T1_SPEC.pdf, + 5040.Download_Fonts.pdf + (`normal' Type 1 font) + --- PS TYPE_1 CID cid PLRM.pdf (CID Font Type 0; + Type 9 font) + --- PS MM --- type1 5015.Type1_Supp.pdf + (Multiple Masters) + --- PS CFF --- cff 5176.CFF.pdf (`pure' CFF) + --- PS* CFF CID cff 5176.CFF.pdf (`pure' CFF) + --- PS CFF SYNTHETIC --- 5176.CFF.pdf (`pure' CFF) + --- PS CFF/MM --- cff old 5167.CFF.pdf (`pure' CFF) + [3] + --- PS* CFF/MM CID cff old 5167.CFF.pdf (`pure' CFF) + [3] + --- PS CFF/MM SYNTHETIC --- old 5167.CFF.pdf (`pure' CFF) + [3] + PS PS CFF --- --- PLRM.pdf (Type 2) [1] + PS PS* CFF CID --- PLRM.pdf (Type 2) [1] + PS PS CFF SYNTHETIC --- PLRM.pdf (Type 2) [1] + PS PS CFF/MM --- --- PLRM.pdf (Type 2) [1] + PS PS* CFF/MM CID --- PLRM.pdf (Type 2) [1] + PS PS CFF/MM SYNTHETIC --- PLRM.pdf (Type 2) [1] + --- PS --- TYPE_0 --- PLRM.pdf + --- PS TYPE_3 --- --- PLRM.pdf (never supported) + --- PS TYPE_3 CID --- PLRM.pdf (CID Font Type 1; + Type 10 font; never supported) + PS PS TYPE_14 --- --- PLRM.pdf (Chameleon font; + Type 14 font; never supported?) + --- PS TYPE_32 CID --- PLRM.pdf (CID Font Type 4; + Type 32 font; never supported?) + PS TT --- --- type42 5012.Type42_Spec.pdf + (Type 42 font) + PS TT --- CID --- PLRM.pdf (CID Font Type 2; + Type 11 font) + + + ? ? CEF ? cff ? + + + --- PCF --- --- pcf X11 [4] + LZW PCF --- --- pcf X11 [4] + BZ2 PCF --- --- pcf X11 [4] + + + --- PFR* PFR0 --- pfr [2] + --- PFR PFR1 --- --- (undocumented, proprietary; + probably never supported) + + + --- WINFNT* --- --- winfonts Windows developer's notes [5] + --- WINFNT VECTOR --- --- Windows developer's notes [5] + + +[1] Support should be rather simple since this is identical to `CFF' + but in a PS wrapper. + +[2] The official PFR specification is no longer available, but + archive.org has archived it: + + https://web.archive.org/web/20091014062300/http://www.bitstream.com/font_rendering/products/truedoc/pfrspec.html + https://web.archive.org/web/20081115152605/http://www.bitstream.com/font_rendering/pdfs/pfrspec1.3.pdf + + The syntax of the auxiliary data is not defined there, but is + partially defined in MHP 1.0.3 (also called ETSI TS 101812 V1.3.1) + section 7.4. + + https://www.etsi.org/ + https://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=18799 + +[3] Support is rudimentary currently; some tables or data are not + loaded yet. + +[4] See + + THE X WINDOW SYSTEM SERVER: X VERSION 11, RELEASE 5 + Elias Israel, Erik Fortune, Digital Press, 1992 + ISBN 1-55558-096-3 + + for a specification given in Appendix D on pgs. 436-450. However, + this information might be out of date; unfortunately, there is no + PCF specification available online, and this book is out of print. + George Williams deduced the font format from the X11 sources and + documented it for his FontForge font editor: + + https://fontforge.github.io/pcf-format.html + +[5] This is from MS Windows 3; see Microsoft's Knowledge Base article + at + + https://support.microsoft.com/kb/65123 + +[6] Supported font formats are TrueType and OpenType fonts as + defined in the OpenType specification 1.6 and newer. + +[7] `The Type 1 GX Font Format' (dated 1995-09-27) was distributed in + Apple Developer CD-ROM in those days. The content of `TYP1' table + is a PostScript Type 1 font without the eexec encryption. Current + versions of FreeType don't not support this format, but FontForge + can load it. + +[8] Such fonts also contain a 'BDF ' table to hold BDF properties; see + + https://fontforge.org/docs/techref/non-standard.html#non-standard-bdf + +------------------------------------------------------------------------ + +Copyright (C) 2004-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute this +file you indicate that you have read the license and understand and +accept it fully. + + +--- end of formats.txt --- + +Local Variables: +coding: utf-8 +End: diff --git a/local/recipes/libs/freetype2/source/docs/freetype-config.1 b/local/recipes/libs/freetype2/source/docs/freetype-config.1 new file mode 100644 index 0000000000..f1a32cff4c --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/freetype-config.1 @@ -0,0 +1,146 @@ +.TH FREETYPE-CONFIG 1 "March 2026" "FreeType 2.14.3" +. +. +.SH NAME +. +freetype-config \- Get information about a libfreetype installation +. +. +.SH SYNOPSIS +. +.B freetype-config +.RI [ options ] +. +. +.SH DESCRIPTION +. +.B freetype-config +returns information needed for compiling and linking programs with the +FreeType library, such as linker flags and compilation parameters. +. +Alternatively, it can be used to query information about the +FreeType library version installed on the system, such as the +installation (directory path) prefix or the FreeType version number. +. +.PP +If +.BR pkg-config (1) +is found in the path, +.B freetype-config +acts as a wrapper for +.BR pkg-config . +. +.PP +This program is part of the FreeType package. +. +. +.SH OPTIONS +. +There are two types of options: output/display selection options, and +path override options. +. +. +.SS Output selection options +. +Only one of the output selection options should be given at each program +invocation. +. +.TP +.B \-\-prefix +Return the prefix value of the installed FreeType library (the default +prefix will be `/usr' in most cases for distribution-installed +packages). +. +.TP +.B \-\-exec-prefix +Return the executable prefix value of the installed FreeType library +(will often be the same as the prefix value). +. +.TP +.B \-\-ftversion +Return the FreeType version number, directly derived from file +`freetype.h'. +. +.TP +.B \-\-version +Return the `libtool version' of the FreeType library. +. +.TP +.B \-\-libtool +Return the library name for linking with libtool. +. +.TP +.B \-\-libs +Return compiler flags for linking with the installed FreeType library. +. +.TP +.B \-\-cflags +Return compiler flags for compiling against the installed FreeType library. +. +.TP +.B \-\-static +Make command line options display flags for static linking. +. +.TP +.B \-\-help +Show help and exit. +. +. +.SS Path override options +. +These affect any selected output option, except the libtool version +returned by +.BR \-\-version . +. +.TP +.BI \-\-prefix= PREFIX +Override +.B \-\-prefix +value with +.IR PREFIX . +. +This also sets +.BI \-\-exec-prefix= PREFIX +if option +.B \-\-exec-prefix +is not explicitly given. +. +.TP +.BI \-\-exec-prefix= EPREFIX +Override +.B \-\-exec-prefix +value with +.IR EPREFIX . +. +. +.SH BUGS +In case the libraries FreeType links to are located in non-standard +directories, and +.BR pkg-config (1) +is not available, the output from option +.B \-\-libs +might be incomplete. +. +It is thus recommended to use the +.BR pkg-config (1) +interface instead, which is able to correctly resolve all dependencies. +. +.PP +Setting +.B \-\-exec-prefix +(either explicitly or implicitly) might return incorrect results if +combined with option +.BR \-\-static . +. +The same problem can occur if you set the +.B SYSROOT +environment variable. +. +. +.SH AUTHOR +. +This manual page was contributed by Nis Martensen , +with further refinements from the FreeType team. +. +. +.\" eof diff --git a/local/recipes/libs/freetype2/source/docs/freetype-web.txt b/local/recipes/libs/freetype2/source/docs/freetype-web.txt new file mode 100644 index 0000000000..0c9140c50b --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/freetype-web.txt @@ -0,0 +1,42 @@ +How to update the FreeType web pages +------------------------------------ + +The 'freetype.org' website is hosted via the 'freetype-web' repo +located at + + https://gitlab.com/freetype/freetype-web , + +which in turn is a mirror from the master 'freetype-web' repository +located at + + https://gitlab.freedesktop.org/freetype/freetype-web . + +Due to Cloudflare caching, changes take time to appear on +'freetype.org', so visit + + https://freetype.gitlab.io/freetype-web + +for instant feedback. + +All the commits should *only* be done to the 'freetype-web' repo at + + https://gitlab.freedesktop.org/freetype/freetype-web + +When a commit is done to this repo, the CI pipeline runs and the +website is deployed via gitlab pages at + + https://freetype.pages.freedesktop.org/freetype-web . + +The pull mirror automatically updates the repository in 'gitlab.com', +and the CI pipeline deploys the website at: + + https://freetype.gitlab.io/freetype-web + +Since the 'freetype.org' website uses Cloudflare caching, it will take +a while for the changes to show up in 'freetype.org'. + +If you have access to the Cloudflare dashboard you can purge the +cache from there; this will cause the cache to be fetched again +resulting in the website being updated instantly. + +--- end of freetype-web.txt --- diff --git a/local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.20 b/local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.20 new file mode 100644 index 0000000000..52142ccb21 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.20 @@ -0,0 +1,2613 @@ +2002-02-09 Werner Lemberg + + * README: Fix typo. + * docs/CHANGES: Minor fixes. + + + * Version 2.0.8 released. + ========================= + + +2002-02-08 David Turner + + * docs/CHANGES: Updating for 2.0.8. + + * include/freetype/freetype.h: Setting `PATCH_LEVEL' to 8 and + removing `FT_Get_Next_Char' from the API (temporarily). + + * include/freetype/freetype.h: Adding comments to FT_Get_Next_Char; + note that this function might temporarily be removed for the 2.0.8 + release. + +2002-02-07 David Turner + + * src/pcf/pcfread.c (pcf_load_font): Removed immature support of + the AVERAGE_WIDTH property. + +2002-02-06 David Turner + + * src/sfnt/sfobjs.c (SFNT_Load_Face): Since many fonts embedded in + PDF documents do not include 'cmap', 'post' and 'name' tables, the + SFNT face loader has been changed to not immediately report an + error if these are not present. + + Note that the specification _requires_ these tables, but Adobe + seems to ignore it completely. + + * src/sfnt/ttcmap.c: Removing compiler warnings. + + * src/pcf/pcfread.c (pcf_read_TOC): Use FT_UInt. + (pcf_parse_metric, pcf_parse_compressed_metric): Removed. Code + is now in ... + (pcf_get_metric): Here. + (pcfSeekToType): Renamed to ... + (pcf_seek_to_table_type): This. + Use FT_Int. + (pcfHasType): Renamed to ... + (pcf_has_table_type): This. + Use FT_Int. + (find_property): Renamed to ... + (pcf_find_property): This. + Use FT_Int. + (pcf_get_bitmaps, pcf_get_encodings): Handle invalid PCF fonts + better (delaying format checks out of FT_Access_Frame .. + FT_Forget_Frame blocks to avoid leaving the stream in an incorrect + state when encountering an invalid PCF font). + + * src/pcf/pcfdriver.c (PCF_Done_Face): Renamed to ... + (PCF_Face_Done): This. + (PCF_Init_Face): Renamed to ... + (PCF_Face_Init): This. + (PCF_Get_Char_Index): Renamed to ... + (PCF_Char_Get_Index): This. + (PCF_Get_Next_Char): Renamed to ... + (PCF_Char_Get_Next): This. + (pcf_driver_class): Updated. + + * src/pcf/pcf.h (PCF_Done_Face): Removed. + +2002-02-06 Detlef Würkner + + * src/pcf/pcfdriver.c (FT_Done_Face): Fixed small memory leak. + + * src/pcf/pcfread.c (pcf_load_font): Now handles the `AVERAGE_WIDTH' + property to return correct character pixel (width/height) pairs for + embedded bitmaps. + +2002-02-04 Keith Packard + + Adding the function `FT_Get_Next_Char', doing the obvious thing + w.r.t. the selected charmap. + + * include/freetype/freetype.h: Add prototype. + * include/freetype/internal/ftdriver.h: Add `FTDriver_getNextChar' + typedef. + (FT_Driver_Class): Use it. + * include/freetype/internal/psnames.h: Add `PS_Next_Unicode_Func' + typedef. + (PSNames_Interface): Use it. + * include/freetype/internal/tttypes.h: Add `TT_CharNext_Func' + typedef. + (TT_CMapTable): Use it. + + * src/base/ftobjs.c (FT_Get_Next_Char): New function, implementing + high-level API. + * src/cff/cffdrivr.c (cff_get_next_char): New function. + (cff_driver_class): Add it. + * src/cid/cidriver.c (Cid_Get_Next_Char): New function. + (t1cid_driver_class): Add it. + * src/pcf/pcfdriver.c (PCF_Get_Next_Char): New function. + (pcf_driver_class): Add it. + * src/psnames/psmodule.c (PS_Next_Unicode): New function. + (psnames_interface): Add it. + * src/sfnt/ttcmap.c (code_to_next0, code_to_next2, code_to_next4, + code_to_next6, code_to_next_8_12, code_to_next_10): New auxiliary + functions. + (TT_CharMap_Load): Use them. + * src/truetype/ttdriver.c (Get_Next_Char): New function. + (tt_driver_class): Add it. + * src/type1/t1driver.c (Get_Next_Char): New function. + (t1_driver_class): Add it. + * src/winfonts/winfnt.c (FNT_Get_Next_Char): New function. + (winfnt_driver_class): Add it. + + * src/pcf/pcfread.c (pcf_load_font): For now, report Unicode for + Unicode and Latin 1 encodings. + +2002-02-02 Keith Packard + + * builds/unix/freetype-config.in: Add missing `fi'. + + + * Version 2.0.7 released. + ========================= + + +2002-02-01 David Turner + + * include/freetype/freetype.h: Increasing FREETYPE_PATCH to 7 + for the new release. + +2002-01-31 David Turner + + * README, README.UNX, docs/CHANGES: Updating documentation for the + 2.0.7 release. + +2002-01-30 David Turner + + * INSTALL: Moved to ... + * docs/INSTALL: Here to avoid conflicts with the `install' script on + Windows, where the filesystem doesn't preserve case. + +2002-01-29 David Turner + + * configure: Fixed the script. It previously didn't accept more + than one argument correctly. For example, when typing: + + ./configure --disable-shared --disable-nls + + the `--disable-nls' was incorrectly sent to the `make' program. + +2002-01-29 Werner Lemberg + + * README.UNX: Fix typo. + * builds/unix/install.mk (uninstall): Fix library name for libtool. + +2002-01-28 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Done_Face): Fix incorrect destruction of + the face object (face->toc.tables, face->root.family_name, + face->root.available_size, face->charset_encoding, + face->charset_registry are now freed). Thanks to Niels Moseley. + +2002-01-28 Roberto Alameda + + * src/type1/t1load.c (parse_encoding): Set `loader->num_chars'. + +2002-01-28 Werner Lemberg + + * src/type1/t1load.c (parse_subrs, parse_charstrings): Use copy + of `base' string for decrypting to not modify the original data. + Based on a patch by Jakub Bogusz . + +2002-01-27 Giuliano Pochini + + * src/smooth/ftgrays.c (gray_render_scanline): Fix bug which caused + bad rendering of thin lines (less than one pixel thick). + +2002-01-25 Werner Lemberg + + * src/cff/cffdrivr.c (cff_get_name_index): Make last patch work + actually. + +2002-01-25 Martin Zinser + + * src/cache/ftccache.c (ftc_node_done, ftc_node_destroy): Fix + compilation warnings. + * src/base/descrip.mms (OBJS): Add `ftmm.obj'. + * src/cache/descrip.mms (ftcache.obj): Dependencies added. + +2002-01-25 WANG Yi + + * src/cff/cffdrivr.c (cff_get_name_index): Fix deallocation bug. + +2002-01-21 Antoine Leca + + * docs/PATENTS: Typo fixed (thanks to Detlef `Hawkeye' Würkner) in + the URL for the online resource. + +2002-01-18 Ian Brown + + * builds/win32/ftdebug.c: New file. + * builds/win32/visualc/freetype.dsp: Updated. + +2002-01-18 Detlef Würkner + + * builds/amiga/src/base/ftsystem.c: Updated for AmigaOS 3.9. + * builds/amiga/README: Updated. + +2002-01-18 Ian Brown + + * builds/win32/visualc/freetype.dsp: Updated. + +2002-01-13 Werner Lemberg + + * builds/unix/freetype2.a4: The script was still buggy. + * builds/unix/freetype-config.in: Make it really work for any install + prefix. + +2002-01-10 Werner Lemberg + + * builds/unix/freetype2.a4: Fix some serious bugs. + +2002-01-09 David Turner + + * builds/unix/configure.ac: Build top-level Jamfile. + +2002-01-09 Maxim Shemanarev + + * src/smooth/ftgrays.c (gray_render_line): Small optimization to + the smooth anti-aliased renderer that deals with vertical segments. + This results in a 5-7% speedup in rendering speed. + +2002-01-08 David Turner + + Added some wrapper scripts to make the installation more + Unix-friendly. + + * configure, install: New files. + + * INSTALL, README.UNX: Updated installation documentation to use the + new 'configure' and 'install' scripts. + +2002-01-07 David Turner + + + * Version 2.0.6 released. + ========================= + + + * docs/BUGS, docs/CHANGES: Updating documentation for 2.0.6 release. + + * src/tools/docmaker.py: Fixed HTML quoting in sources. + (html_format): Replaced with ... + (html_quote): New function. + (html_quote0): New function. + (DocCode::dump_html): Small improvement. + (DocParagraph::dump, DocBlock::html): Use html_quote0 and html_quote. + + * include/freetype/config/ftoption.h: Setting default options for + a release build (debugging off, bytecode interpreter off). + + * src/base/ftobjs.c, src/base/ftoutln.c, src/cache/ftccmap.c, + src/cff/cffload.c, src/cff/cffobjs.c, src/pshinter/pshalgo2.c, + src/sfnt/ttload.c, src/sfnt/ttsbit.c: Removing small compiler + warnings (in pedantic compilation modes). + +2002-01-05 David Turner + + * src/autohint/ahhint.c (ah_align_linked_edge): Modified computation + of auto-hinted stem widths; this avoids color fringes in + `ClearType-like' rendering. + + * src/truetype/ttgload.c (TT_Load_Glyph_Header, + TT_Load_Simple_Glyph, TT_Load_Composite_Glyph, load_truetype_glyph): + Modified the TrueType loader to make it more paranoid; this avoids + nasty buffer overflows in the case of invalid glyph data (as + encountered in the output of some buggy font converters). + +2002-01-04 David Turner + + * README.UNX: Added special README file for Unix users. + + * builds/unix/ftsystem.c (FT_New_Stream): Fixed typo. + + * src/base/ftobjs.c: Added #include FT_OUTLINE_H to get rid + of compiler warnings. + + * src/base/ftoutln.c (FT_Outline_Check): Remove compiler warning. + +2002-01-03 Werner Lemberg + + * src/type1/t1objs.c (T1_Face_Init): Add cast to avoid compiler + warning. + +2002-01-03 Keith Packard + + * builds/unix/ftsystem.c (FT_New_Stream): Added a fix to ensure that + all FreeType input streams are closed in child processes of a `fork' + on Unix systems. This is important to avoid (potential) access + control issues. + +2002-01-03 David Turner + + * src/type1/t1objs.c (T1_Face_Init): Fixed a bug that crashed the + library when dealing with certain weird fonts like `Stalingrad', in + `sadn.pfb' (this font has no full font name entry). + + * src/base/ftoutln.c, include/freetype/ftoutln.h (FT_Outline_Check): + New function to check the consistency of outline data. + + * src/base/ftobjs.c (FT_Load_Glyph): Use `FT_Outline_Check' to + ensure that loaded glyphs are valid. This allows certain fonts like + `tt1095m_.ttf' to be loaded even though it appears they contain + really funky glyphs. + + There still is a bug there, though. + + * src/truetype/ttgload.c (load_truetype_glyph): Fix error condition. + +2001-12-30 David Turner + + * src/autohint/ahhint.c (ah_hinter_load): Fix advance width + computation of auto-hinted glyphs. This noticeably improves the + spacing of letters in KDE and Gnome. + +2001-12-25 Antoine Leca + + * builds/dos/detect.mk: Correcting the order for Borland compilers: + 16-bit bcc was never selected, always overridden by 32-bit bcc32. + +2001-12-22 Francesco Zappa Nardelli + + * src/pcf/pcfread.c (pcf_load_font): Handle property `POINT_SIZE' + and fix incorrect computation of `available_sizes'. + +2001-12-22 David Turner + + * src/autohint/ahhint.c (ah_hinter_load): Auto-hinted glyphs had an + incorrect glyph advance in the case of mono-width fonts (like + Courier, Andale Mono, and others). + +2001-12-22 Detlef Würkner + + * builds/amiga/*: Adaptations to latest changes. + Support added for MorphOS. + +2001-12-22 Werner Lemberg + + * src/pshinter/pshrec.c (FT_COMPONENT): Redefine to `trace_pshrec'. + (ps_mask_table_merge, ps_hints_open, ps_hints_stem, + ps_hints_t1stem3, ps_hints_t2mask, ps_hints_t2counter): Fix + FT_ERROR messages. + * src/pshinter/pshalgo1.c (FT_COMPONENT): Define as + `trace_pshalgo1'. + * src/pshinter/pshalgo2.c (FT_COMPONENT): Define as + `trace_pshalgo2'. + * include/freetype/internal/ftdebug.h (FT_Trace): Updated. + + * docs/modules.txt: New file. + +2001-12-21 David Turner + + * src/pshinter/pshrec.c (ps_hints_t2mask, ps_hints_t2counter): + Ignore invalid `hintmask' and `cntrmask' operators (instead of + returning an error). Glyph 2028 of the CFF font `MSung-Light-Acro' + couldn't be rendered otherwise (it seems its charstring is buggy, + though this requires more analysis). + (FT_COMPONENT): Define. + + * src/cff/cffgload.c (CFF_Parse_CharStrings), src/psaux/t1decode.c + (T1_Decoder_Parse_Charstrings), src/pshinter/pshalgo2.c (*), Fixed a + bug where the X and Y axis where inverted in the postscript hinter. + This caused problem when displaying on non-square surfaces. + + * src/pshinter/pshalgo2.c: s/vertical/dimension/. + + * src/pshinter/pshglob.c (psh_globals_new): Replaced a floating + point constant with a fixed-float equivalent. For some reasons not + all compilers are capable of directly computing a floating pointer + constant casted to FT_Fixed, and will link a math library instead. + +2001-12-20 Werner Lemberg + + * src/cache/ftccache.c (ftc_node_destroy, ftc_cache_lookup): Fix + tracing strings. + * src/cache/ftccmap.c (ftc_cmap_family_init): Ditto. + * src/cache/ftcmanag.c (ftc_family_table_alloc, + ftc_family_table_free, FTC_Manager_Check): Ditto. + * src/cache/ftcsbits.c (ftc_sbit_node_load): Ditto. + + * src/base/ftobjs.c (FT_Done_Library): Remove compiler warning. + +2001-12-20 David Turner + + Added PostScript hinter support to the CFF and CID drivers. + + * include/freetype/internal/cfftypes.h (CFF_Font): New member + `pshinter'. + * src/cff/cffload.c (CFF_Get_Standard_Encoding): New function. + * src/cff/cffload.h: Updated. + * src/cff/cffgload.c (CFF_Init_Builder): Renamed to ... + (CFF_Builder_Init): This. + Added new argument `hinting'. + (CFF_Done_Builder): Renamed to ... + (CFF_Builder_Done): This. + (CFF_Init_Decoder): Added new argument `hinting'. + (CFF_Parse_CharStrings): Implement vstem support. + (CFF_Load_Glyph): Updated. + Add hinting support. + (cff_lookup_glyph_by_stdcharcode): Use CFF_Get_Standard_Encoding(). + (cff_argument_counts): Updated. + * src/cff/cffgload.h: Updated. + * src/cff/cffobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CFF_Size_Get_Globals_Funcs, CFF_Size_Done, CFF_Size_Init, + CFF_Size_Reset, CFF_GlyphSlot_Done, CFF_GlyphSlot_Init): New + functions. + (CFF_Init_Face): Renamed to ... + (CFF_Face_Init): This. + Add hinter support. + (CFF_Done_Face): Renamed to ... + (CFF_Face_Done): This. + (CFF_Init_Driver): Renamed to ... + (CFF_Driver_Init): This. + (CFF_Done_Driver): Renamed to ... + (CFF_Driver_Done): This. + * src/cff/cffobjs.h: Updated. + * src/cff/cffdrivr.c (cff_driver_class): Updated. + + * include/freetype/internal/t1types.h (CID_FaceRec): New member + `pshinter'. + * src/cid/cidgload.c (CID_Load_Glyph): Add hinter support. + * src/cid/cidobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CID_GlyphSlot_Done, CID_GlyphSlot_Init, CID_Size_Get_Globals_Funcs, + CID_Size_Done, CID_Size_Init, CID_Size_Reset): New functions. + (CID_Done_Face): Renamed to ... + (CID_Face_Done): This. + (CID_Init_Face): Renamed to ... + (CID_Face_Init): This. + Add hinting support. + (CID_Init_Driver): Renamed to ... + (CID_Driver_Init): This. + (CID_Done_Driver): Renamed to ... + (CID_Driver_Done): This. + * src/cid/cidobjs.h: Updated. + * src/cidriver.c: Updated. + + * src/pshinter/pshrec.c (t2_hint_stems): Fixed. + + * src/base/ftobjs.c (FT_Done_Library): Fixed a stupid bug that + crashed the library on exit. + + * src/type1/t1gload.c (T1_Load_Glyph): Enable font matrix + transformation of hinted glyphs. + + * src/cid/cidload.c (cid_read_subrs): Fix error condition. + + * src/cid/cidobjs.c (CID_Face_Done): Fixed a memory leak; the subrs + routines were never released when CID faces were destroyed. + + * src/cff/cffload.h, src/cff/cffload.c, src/cff/cffgload.c: Updated + to move the definition of encoding tables back within `cffload.c' + instead of making them part of a shared header (causing problems in + `multi' builds). This reverts change 2001-08-08. + + * docs/CHANGES: Updated for 2.0.6 release. + * docs/TODO: Added `stem3 and counter hints support' to the TODO + list for the Postscript hinter. + * docs/BUGS: Closed the AUTOHINT-NO-SBITS bug. + +2001-12-19 David Turner + + * include/freetype/cache/ftcache.h: Added comments to indicate that + some of the exported functions should only be used by applications + that need to implement custom cache types. + + * src/truetype/ttgload.c (cur_to_org, org_to_cur): Fixed a nasty bug + that prevented composites from loading correctly, due to missing + parentheses around macro parameters. + + * src/sfnt/sfobjs.c (SFNT_Load_Face): Make the `post' and `name' + tables optional to load PCL fonts properly. + + * src/truetype/ttgload.c (TT_Load_Glyph), src/base/ftobjs.c + (FT_Load_Glyph), include/freetype/freetype.h (FT_LOAD_SBITS_ONLY): + `Fixed' the bug that prevented embedded bitmaps to be loaded when + the auto-hinter is used. This actually is a hack but will be enough + until the internal re-design scheduled for FreeType 2.1. + + * src/raster/ftrend1.c (ft_raster1_render): Fixed a nasty outline + shifting bug in the monochrome renderer. + + * README: Updated version numbers to 2.0.6. + +2001-12-17 Werner Lemberg + + * src/truetype/ttgload.c (load_truetype_glyph): Fix test for invalid + glyph header. + +2001-12-15 Werner Lemberg + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Remove compiler warning. + * include/freetype/ftcache.h (FTC_Node_Unref): Removed. It is + already in ftcmanag.h. + * src/cache/ftcsbits.c (ftc_sbit_node_load): Remove unused variable + `gfam'. + * src/cache/ftcmanag.c (ftc_family_table_alloc, + * ftc_family_table_free): Use FT_EXPORT_DEF. + * include/freetype/cache/ftcmanag.h: Updated. + * src/cache/ftccache.c (ftc_node_destroy): Use FT_EXPORT_DEF. + * src/cache/ftccmap.c (ftc_cmap_node_init): Remove unused variable + `cfam'. + Remove compiler warning. + (FTC_CMapCache_Lookup): Remove compiler warnings. + (ftc_cmap_family_init): Ditto. + (FTC_CMapCache_Lookup): Ditto. + + * builds/unix/configure.ac: Increase `version_info' to 8:0:2. + * builds/unix/configure: Regenerated. + +2001-12-14 Werner Lemberg + + * builds/mac/README: Updated. + +2001-12-14 Scott Long + + * src/truetype/ttgload.c (load_truetype_glyph): Fixing crash when + dealing with invalid fonts (i.e. glyph size < 10 bytes). + +2001-12-14 Sam Latinga + + * builds/mac/freetype.make: A new Makefile to build with MPW on + MacOS classic. + +2001-12-14 David Turner + + * src/truetype/ttgload.c (TT_Load_Glyph), src/type1/t1gload.c + (T1_Load_Glyph), src/cid/cidgload.c (CID_Load_Glyph), + src/cff/cffgload.c (CFF_Load_Glyph): Fixed a serious bug common to + all font drivers (the advance width was never hinted when it + should). + + * include/freetype/freetype.h (FREETYPE_PATCH): New macro. + * src/base/ftdbgmem.c (debug_mem_dummy) [!FT_DEBUG_MEMORY]: Don't + use `extern' keyword. + +2001-12-12 David Turner + + * src/pshinter/pshglob.c (psh_blues_scale_zones, psh_blues_snap_stem + psh_globals_new): Adding correct BlueScale/BlueShift support, plus + family blues processing. + * src/pshinter/pshglob.h (PSH_BluesRec): Updated. + + Started adding support for the Postscript hinter in the CFF module. + + * src/cff/cffgload.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CFF_Parse_CharStrings): Implement it. + * src/cff/cffgload.h: Updated. + +2001-12-12 Werner Lemberg + + * builds/unix/freetype2.m4: Some portability fixes. + +2001-12-11 Jouk Jansen + + * src/base/descrip.mms (OBJS): Add ftdebug.obj. + +2001-12-11 Werner Lemberg + + * src/sfnt/ttload.c (TT_Load_Generic_Header): Typos. + +2001-12-11 David Turner + + * builds/unix/freetype-config.in: Modified the script to prevent + passing `-L/usr/lib' to gcc. + + * docs/FTL.TXT: Simple fix (change `LICENSE.TXT' to `FTL.TXT'). + + * builds/unix/freetype2.m4: New file for checking configure paths. + We need to install it in $(prefix)/share/aclocal/freetype2.m4 but I + didn't modify builds/unix/install.mk yet. + + * INSTALL: Updated the instructions to build shared libraries with + Jam. They were simply wrong. + + * src/base/fttrigon.c (FT_Cos): Fixed a small bug that caused + slightly improper results for `FT_Cos' and `FT_Sin' (example: + FT_Sin(0) == -1!). + +2001-12-11 Detlef Würkner + + * include/freetype/internal/ftstream.h (GET_LongLE, GET_ULongLE): + Fixed incorrect argument types. + +2001-12-10 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Init_Face): Allow Xft to use PCF fonts + by setting the `face->metrics.max_advance' correctly. + +2001-12-07 David Turner + + * include/freetype/cache/ftccmap.h, src/cache/ftccmap.c: Added new + charmap cache. + * src/cache/ftcache.c: Updated. + + * src/autohint/ahhint.c (ah_hinter_hint_edges): s/UNUSED/FT_UNUSED/. + +2001-12-06 Leonard Rosenthol + + Added support for reading .dfont files on Mac OS X. Also added a + new routine which looks up a given font by name in the Mac OS and + returns the disk file where it resides. + + * src/base/ftmac.c: Include and . + (is_dfont): New auxiliary function. + (FT_New_Face_From_dfont): New function. + (FT_GetFile_From_Mac_Name): New exported function. + (FT_New_Face): Updated. + * include/freetype/ftmac.h: Updated. + +2001-12-06 David Turner + + * src/cache/Jamfile, src/cache/rules.mk: Updated. + +2001-12-06 Werner Lemberg + + * INSTALL: Small update. + +2001-12-05 David Turner + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Re-ordered code for + debugging purposes. + Comment out use of `origin'. + + * src/smooth/ftsmooth.c (ft_smooth_render): Fixed a nasty hidden bug + where outline shifting wasn't correctly undone after bitmap + rasterization. This created problems with certain glyphs (like '"' + of certain fonts) and the cache system. + + * src/pshinter/pshalgo1.c (psh1_hint_table_init): Fix typo. + * src/pshinter/pshalgo2.c (psh2_hint_table_init): Fix typo. + (ps2_hints_apply): Small fix. + +2001-12-05 David Turner + + * src/pshinter/pshalgo2.c (psh2_hint_table_init), + src/pshinter/pshalgo1.c (psh1_hint_table_init): Removed compiler + warnings. + + * include/freetype/ftcache.h, include/freetype/cache/*, src/cache/*: + Yet another massive rewrite of the caching sub-system in order to + both increase performance and allow simpler cache sub-classing. As + an example, the code for the image and sbit caches is now much + simpler. + + I still need to update the documentation in + www/freetype2/docs/cache.html to reflect the new design though. + + * include/freetype/config/ftheader.h (FT_CACHE_CHARMAP_H): New + macro. + (FT_CACHE_INTERNAL_CACHE_H): Updated. + +2001-12-05 David Krause + + * docs/license.txt: s/X Windows/X Window System/. + +2001-12-04 Werner Lemberg + + * src/raster/ftraster.c: Fix definition condition of MEM_Set(). + * src/smooth/ftgrays.c (M_Y): Change value to 192. + * src/base/ftdbgmem.c (ft_mem_table_destroy): Fix printf() parameter. + Remove unused variable. + * src/cache/ftcimage.c (ftc_image_node_init, + ftc_image_node_compare): Remove unused variables. + * src/cache/ftcsbits.c (ftc_sbit_node_weight): Remove unused + variable. + * src/raster/ftraster.c (MEM_Set): Move definition down to avoid + compiler warning. + * src/autohint/ahhint.c (ah_hinter_hint_edges): Use UNUSED() to + avoid compiler warnings. + * src/pcf/pcfread.c (tableNames): Use `const'. + (pcf_read_TOC): Change counter name to avoid compiler warning. + Use `const'. + * src/pshinter/pshrec.c (ps_hints_close): Remove redundant + declaration. + * src/pshinter/pshalgo1.c (psh1_hint_table_init): Rename variables + to avoid shadowing. + * src/pshinter/pshalgo2.c (psh2_hint_table_activate_mask): Ditto. + * src/type1/t1objs.h: Remove double declarations of `T1_Size_Init()' + and `T1_Size_Done()'. + +2001-11-20 Antoine Leca + + * include/freetype/ttnameid.h: Added some new Microsoft language + codes and LCIDs as found in MSDN (Passport SDK). Also added + comments about the meaning of bit 57 of the `OS/2' table + (TT_UCR_SURROGATES) which (with OpenType v.1.3) now means `there is + a character beyond 0xFFFF in this font'. Thanks to Detlef Würkner + for noticing this. + +2001-11-20 David Turner + + * src/pshinter/{pshalgo2.c, pshalgo1.c}: Fixed stupid bug in sorting + routine that created nasty alignment artefacts. + + * src/pshinter/pshrec.c, tests/gview.c: Debugging updates. + + * src/smooth/ftgrays.c: De-activated experimental gamma support. + Apparently, `optimal' gamma tables depend on the monitor type, + resolution and general karma, so it's better to compute them outside + of the rasterizer itself. + (gray_convert_glyph): Use `volatile' keyword. + +2001-10-29 David Turner + + Adding experimental `gamma' support. This produces smoother glyphs + at small sizes for very little cost. + + * src/smooth/ftgrays.c (grays_init_gamma): New function. + (gray_raster_new): Use it. + + Various fixes to the auto-hinter. They merely improve the output of + sans-serif fonts. Note that there are still problems with serifed + fonts and composites (accented characters). + + * src/autohint/ahglyph.c (ah_outline_load, + ah_outline_link_segments): Implement it. + Fix typos. + (ah_outline_save, ah_outline_compute_segments): Fix typos. + * src/autohint/ahhint.c (ah_align_serif_edge): New argument + `vertical'. Implement improvement. + (ah_hint_edges_3, ah_hinter_hint_edges): Implement it. + Fix typos. + (ah_hinter_align_strong_points, ah_hinter_align_weak_points): Fix + typos. + (ah_hinter_load): Set `ah_debug_hinter' if DEBUG_HINTER is defined. + * src/autohint/ahmodule.c: Implement support for DEBUG_HINTER macro. + * src/autohint/ahtypes.h: Ditto. + (AH_Hinter): Remove `disable_horz_edges' and `disable_vert_edges' + (making them global as `ah_debug_disable_horz' and + `ah_debug_disable_vert'). + Fix typos. + + * tests/gview.c: Updated the debugging glyph viewer to show the + hints generated by the `autohint' module. + +2001-10-27 David Turner + + * src/cache/ftcchunk.c (ftc_chunk_cache_lookup): Fixed a bug that + considerably lowered the performance of the abstract chunk cache. + +2001-10-26 David Turner + + * include/freetype/ftcache.h, include/freetype/cache/*.h, + src/cache/*.c: Major re-design of the cache sub-system to provide + better performance as well as an `Acquire'/`Release' API. Seems to + work well here, but probably needs a bit more testing. + +2001-10-26 Leonard Rosenthol + + * builds/mac/README: Updated to reflect my taking over the project + and that is now being actively maintained. + + * src/base/ftmac.c (parse_fond): Applied patches from Paul Miller + to support loading a face other than the + first from a FOND resource. + (FT_New_Face_From_FOND): Updated. + +2001-10-25 Leonard Rosenthol + + * builds/mac/ftlib.prj: Update of CodeWarrior project file for Mac + OS for latest version (7) of CWPro and for recent changes to the FT + source tree. + +2001-10-25 David Turner + + * include/freetype/config/ftoption.h: Updated comments to explain + precisely how to use project-specific macro definitions without + modifying this file manually. + + (FT_CONFIG_FORCE_INT64): Define. + + (FT_DEBUG_MEMORY): New macro. + +2001-10-24 Tom Kacvinsky + + * builds/unix/ftsystem.c (FT_New_Memory): Added a missing `{'. + +2001-10-23 David Turner + + * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: + Improvements to the memory debugger to report more information in + case of errors. Also, some allocations that occurred through REALLOC + couldn't be previously caught correctly. + + * src/autohint/ahglyph.c (ah_outline_compute_segments, + ah_outline_compute_edges), src/raster/ftraster.c (ft_black_new), + src/smooth/ftgrays.c (gray_render_span, gray_raster_new): Replaced + liberal uses of memset() by the MEM_Set() macro. + +2001-10-23 David Turner + + * src/raster/ftraster.c (Update): Removed to be inlined in ... + (Sort): Updated. + +2001-10-22 David Turner + + * builds/unix/ftsystem.c (FT_New_Memory, FT_Done_Memory), + builds/vms/ftsystem.c (FT_New_Memory, FT_Done_Memory), + builds/amiga/ftsystem.c (FT_New_Memory, FT_Done_Memory), + src/base/ftdbgmem.c: Updated the memory debugger and + platform-specific implementations of `ftsystem' in order to be able + to debug memory allocations on Unix, VMS and Amiga too! + + * src/pshinter/pshalgo2.c (psh2_hint_table_record_mask): Removed + some bogus warnings. + + * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: + Modified the debugging memory manager to report the location (source + file name + line number) where leaked memory blocks are allocated in + the source file. + + * src/base/ftdbgmem.c: New debugging memory manager. You must + define the FT_DEBUG_MEMORY macro in `ftoption.h' to enable it. It + will record every memory block allocated and report simple errors + like memory leaks and double deletes. + + * src/base/Jamfile: Include ftdbgmem. + * src/base/rules.mk: Ditto. + * src/base/ftbase.c: Include ftdbgmem.c. + + * include/freetype/config/ftoption.h: Added the FT_DEBUG_MEMORY + macro definition. + + * src/base/ftsystem.c (FT_New_Memory, FT_Done_Memory): Modified the + base component to use the debugging memory manager when the macro + FT_DEBUG_MEMORY is defined. + +2001-10-21 Tom Kacvinsky + + * src/cff/cffload.c (CFF_Done_Font): Free subfonts array only if + we are working with a CID keyed CFF font. Otherwise, a variable + that was never allocated memory might freed. This is a correction + to the previous patch for freeing subfonts. + +2001-10-21 Tom Kacvinsky + + * src/cff/cffload.c (CFF_Done_Font): Free the subfonts array to + avoid a memory leak. + +2001-10-21 David Turner + + * src/pshinter/pshalgo2.c, src/pshinter/pshalgo1.c, + src/pshinter/pshglob.c: Removing compiler warnings in pedantic modes + (in multi-object compilation mode, mainly). + +2001-10-20 Tom Kacvinsky + + * src/type1/t1load.c (parse_encoding): Add a test to make sure + that custom encodings (i.e., neither StandardEncoding nor + ExpertEncoding) are not loaded twice when the Type 1 font is + synthetic. + + * src/type1/t1load.c (parse_font_name, parse_subrs): Added a test + for when loading synthetic fonts to make sure that the font name + and subroutines are not loaded twice. This is to remove a memory + leak that occurred because the original memory blocks for these + objects were not deallocated when the objects were parsed the + second time. + +2001-10-19 David Turner + + * src/smooth/ftgrays.c, src/pshinter/pshglob.h, + src/pshinter/pshrec.c, src/pshinter/pshalgo2.c: Getting rid of + compiler warnings. + + * src/pshinter/module.mk, src/pshinter/rules.mk: Adding control + files to build the PostScript hinter with the `old' build system. + +2001-10-19 Jacob Jansen + + * descrip.mms, src/pshinter/descrip.mms: Updates to the VMS build + files. + +2001-10-18 David Turner + + * src/psnames/pstables.h, src/tools/glnames.py: Rewrote the + `glnames.py' script used to generate the `pstables.h' header file. + The old one contained a serious bug that made FreeType return + incorrect glyph names for certain glyphs. + + * src/truetype/ttdriver.c (Set_Char_Sizes): Changing computation of + pixel size from character size to use rounding. This is an + experiment to see whether this gives values similar to Windows for + scaled ascent/descent/etc. + + * src/base/ftcalc.c (FT_Div64by32): Changed the implementation + slightly since the original code was mis-compiled on Mac machines + using the MPW C compiler. + + * src/base/ftobjs.c (FT_Realloc): When a memory block was grown + through FT_Realloc(), the new bytes were not set to 0, which created + some strange bugs in the PostScript hinter. + (destroy_face): Don't deallocate unconditionally. + + * src/cid/cidgload.c (CID_Compute_Max_Advance, CID_Load_Glyph): + Adding support to new PostScript hinter. + + * include/freetype/internal/psglobal.h, + include/freetype/internal/pshints.h, + include/freetype/config/ftmodule.h, src/pshinter/Jamfile, + src/pshinter/pshalgo.h, src/pshinter/pshalgo1.h, + src/pshinter/pshalgo1.c, src/pshinter/pshalgo2.h, + src/pshinter/pshalgo2.c, src/pshinter/pshglob.h, + src/pshinter/pshglob.c, src/pshinter/pshinter.c, + src/pshinter/pshmod.c, src/pshinter/pshmod.h, src/pshinter/pshrec.c, + src/pshinter/pshrec.h: Adding new PostScript hinter module. + + * include/freetype/internal/ftobjs.h, + include/freetype/internal/internal.h, + include/freetype/internal/psaux.h, + include/freetype/internal/t1types.h, src/psaux/psobjs.c, + src/psaux/psobjs.h, src/psaux/t1decode.h, src/psaux/t1decode.c, + src/type1/t1driver.c, src/type1/t1gload.c, src/type1/t1objs.c, + src/type1/t1objs.h: Updates to use the new PostScript hinter. + + * tests/Jamfile, tests/gview.c: Adding a new glyph hinting + viewer/debugger to the source tree. Note that you will _not_ be + able to compile it since it depends on an unavailable graphics + library named `Nirvana' to render vector images. + +2001-10-17 David Turner + + + * Version 2.0.5 released. + ========================= + + + * include/freetype/freetype.h, include/internal/ftobjs.h, + src/base/ftobjs.c, src/type1/t1driver.c: Adding a new function named + 'FT_Get_Postscript_Name' to retrieve the PostScript name of a given + font. Should work with all formats except pure CFF/CEF fonts (this + will be added soon). + + * src/cid/cidriver (cid_get_postscript_name): New function. + (CID_Get_Interface): Handle `postscript_name' interface. + + * src/sfnt/sfdriver.c (get_sfnt_postscript_name): New function. + (SFNT_Get_Interface): Handle `postscript_name' interface. + + * src/type1/t1driver.c (t1_get_ps_name): New function. + (Get_Interface): Handle `postscript_name' interface. + + * README, docs/CHANGES: Updated for 2.0.5 release. + +2001-10-08 David Turner + + Fixed a bug in `glnames.py' that prevented it from generating + correct glyph names tables. This resulted in the unavailability of + certain glyphs like `Cacute', `cacute' and `lslash' in Unicode + charmaps, even if these were present in the font (causing problems + for Polish users). + + * src/tools/glnames.py (mac_standard_names): Fixed. + (t1_standard_strings): Some fixes and renamed to ... + (sid_standard_names): This. + (t1_expert_encoding): Fixed. + (the_adobe_glyph_list): Renamed to ... + (adobe_glyph_names): This. + (the_adobe_glyphs): Renamed to ... + (adobe_glyph_values): This. + (dump_mac_indices, dump_glyph_list, dump_unicode_values, main): + Updated. + * src/psnames/pstables.h: Regenerated. + * src/psnames/psmodule.c (PS_Unicode_Value): Fix offset. + Fix return value. + Use `sid_standard_table' and `ps_names_to_unicode' instead of + `t1_standard_glyphs' and `names_to_unicode'. + (PS_Macintosh_Name): Use `ps_glyph_names' instead of + `standard_glyph_names'. + (PS_Standard_Strings): Use `sid_standard_names' instead of + `t1_standard_glyphs'. + + * doc/BUGS, doc/TODO: New documents. + +2001-10-07 Richard Barber + + * src/cache/ftlru.c (FT_Lru_Lookup_Node): Fixed a bug that prevented + correct LRU behaviour. + +2001-10-07 David Turner + + setjmp() and longjmp() are now used for rollback (i.e. when memory + pool overflow occurs). + + Function names are now all uniformly prefixed with `gray_'. + + * src/smooth/ftgrays.c: Include . + (ErrRaster_MemoryOverflow): New macro. + (TArea): New type to store area values in each cell (using `int' was + too small on 16-bit systems). is included to properly + get the needed data type. + (TCell, TRaster): Use it. + (TRaster): New element `jump_buffer'. + (gray_compute_cbox): Use `RAS_ARG' as the only parameter and get + `outline' from it. + (gray_record_cell): Use longjmp(). + (gray_set_cell): Use gray_record_cell() for error handling. + (gray_render_line, gray_render_conic, gray_render_cubic): Simplify. + (gray_convert_glyph_inner): New function, using setjmp(). + (gray_convert_glyph): Use it. + +2001-10-07 David Turner + + Provide a public API to manage multiple size objects for a given + FT_Face in the new header file `ftsizes.h'. + + * include/freetype/ftsizes.h: New header file, + * include/freetype/internal/ftobjs.h: Use it. + Remove declarations of FT_New_Size and FT_Done_Size (moved to + ftsizes.h). + * include/freetype/config/ftheader.h (FT_SIZES_H): New macro. + * src/base/ftobjs.c (FT_Activate_Size): New function. + * src/cache/ftcmanag.c: Include ftsizes.h. + (ftc_manager_init_size, ftc_manager_flush_size): Use + FT_Activate_Size. + +2001-09-20 Detlef Würkner + + * builds/amiga/*: Added port to Amiga with the SAS/C compiler. + +2001-09-15 Detlef Würkner + + * src/type1/t1afm.c (T1_Done_AFM): Free `afm'. + +2001-09-10 Yao Zhang + + * src/sfnt/ttcmap.c (code_to_index2): Handle code values with + hi-byte == 0 correctly. + +2001-09-10 Werner Lemberg + + * builds/link-std.mk ($(PROJECT_LIBRARY)): Fix typo. + +2001-08-30 Martin Muskens + + * src/type1/t1load.c (parse_font_matrix): A new way to compute the + units per EM with greater accuracy (important for embedded T1 fonts + in PDF documents that were automatically generated from TrueType + ones). + + * src/type1/t1load.c (is_alpha): Now supports `+' in font names; + this is used in embedded fonts. + + * src/psaux/psobjs.c (PS_Table_Add): Fixed a reallocation bug that + generated a dangling pointer reference. + +2001-08-30 Anthony Feik + + * src/type1/t1afm.c (T1_Read_AFM): Now correctly sets the flag + FT_FACE_FLAG_KERNING when appropriate for Type1 + AFM files. + +2001-08-25 Werner Lemberg + + * src/sfnt/ttload.c (TT_Load_CMap): Fix frame length of + `cmap_rec_fields'. + + * include/freetype/fterrors.h [!FT_CONFIG_OPTION_USE_MODULE_ERRORS]: + Undefine FT_ERR_BASE before defining again. + +2001-08-22 Werner Lemberg + + * src/truetype/ttinterp.h: Fix prototype of TT_Move_Func. + +2001-08-21 Werner Lemberg + + * builds/dos/dos-def.mk (NO_OUTPUT): Don't use `&>' but `>'. + +2001-08-21 David Turner + + * include/freetype/config/ftoption.h: Changed the default setting + for FT_CONFIG_OPTION_USE_MODULE_ERRORS to undefined, since it breaks + source compatibility in a few cases. Updated the comment to explain + that too. + +2001-08-17 Martin Muskens + + * src/base/ftcalc.c (FT_MulDiv): Fixed serious typo. + +2001-08-12 Werner Lemberg + + Updating to OpenType 1.3. + + * include/freetype/internal/tttypes.h (TT_CMap0, TT_CMap2, TT_CMap4, + TT_CMap6): Adding field `language'. + (TT_CMapTable): Removing field `language'. + Type of `length' field changed to FT_ULong. + Adding fields for cmaps format 8, 10, and 12. + (TT_CMapGroup): New auxiliary structure. + (TT_CMap8_12, TT_CMap10): New structures. + * include/freetype/tttables.h (TT_HoriHeader, TT_VertHeader): + Removed last element of `Reserved' array. + * include/freetype/ttnameid.h (TT_PLATFORM_CUSTOM, TT_MS_ID_UCS_4, + TT_NAME_ID_CID_FINDFONT_NAME): New macros. + + * src/sfnt/ttcmap.c (TT_CharMap_Load): Updated loading of `language' + field to the new structures. + Fixed freeing of arrays in case of unsuccessful loads. + Added support for loading format 8, 10, and 12 cmaps. + (TT_CharMap_Free): Added support for freeing format 8, 10, and 12 + cmaps. + (code_to_index4): Small improvement. + (code_to_index6): Ditto. + (code_to_index8_12, code_to_index10): New functions. + * src/sfnt/ttload.c (TT_Load_Metrics_Header): Updated to new + structure. + (TT_Load_CMap): Ditto. + + * src/sfnt/sfobjs.c (tt_encodings): Add MS UCS4 table (before MS + Unicode). + +2001-08-11 Werner Lemberg + + * src/type1/t1driver.c (t1_get_name_index): Fix compiler warning. + +2001-08-09 Tom Kacvinsky + + * src/cff/cffdrivr.c (get_cff_glyph_name): Renamed to + cff_get_glyph_name for consistency. + + (cff_get_glyph_index): Minor documentation change. + + * src/type1/t1driver.c (t1_get_name_index): New function used in + Get_Interface as the function returned when the `name_index' + function is requested. + + (get_t1_glyph_name): Renamed to t1_get_glyph_name for consistency. + +2001-08-08 Tom Kacvinsky + + * src/cff/cffload.c: Removed definitions of cff_isoadobe_charset, + cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, + and cff_expert_encoding arrays to cffload.h. + + * src/cff/cffload.h: Added definitions of cff_isoadobe_charset, + cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, + and cff_expert_encoding arrays. + + * src/cff/cffdrivr.c (cff_get_name_index): New function, returned + when `cff_get_interface' is called with a request for the + `name_index' function. + + (cff_get_interface): Modified so that it returns the function + `cff_get_name_index' when the `name_index' function is requested. + + * src/base/ftobjs.c (FT_Get_Name_Index): New function, used to + return a glyph index for a given glyph name only if the driver + supports glyph names. + + * include/freetype/internal/ftobjs.h (FT_Name_Index_Requester): + New function pointer type definition used in the function + FT_Get_Name_Index. + + * include/freetype/freetype.h (FT_Get_Name_Index): Added + documentation and prototype. + +2001-07-26 Werner Lemberg + + * builds/cygwin/*: Removed. Use the unix stuff instead. + +2001-07-26 Jouk Jansen + + * builds/vms/ftconfig.h (FT_CALLBACK_DEF): Updated to change dated + 2001-06-27. + +2001-07-17 Werner Lemberg + + * include/freetype/internal/psaux.h (PS_Table): Use FT_Offset for + `cursor' and `capacity'. + * src/psaux/psobjs.c (reallocate_t1_table): Use FT_Long for second + parameter. + (PS_Table_Add): Use FT_Offset for `new_size'. + + Add support for version 0.5 maxp tables. + + * src/sfnt/ttload.c (TT_Load_MaxProfile): Implement it. + (TT_Load_OS2): Initialize some values. + +2001-07-13 Werner Lemberg + + * src/base/ftsynth.c: Include ftcalc.h unconditionally. + +2001-07-07 David Turner + + * src/truetype/ttgload.c, src/truetype/ttinterp.c, src/pcf/pcfread: + Removed pedantic compiler warnings when the bytecode interpreter is + compiled in. + +2001-07-03 Werner Lemberg + + * src/autohint/ahhint.c (ah_hinter_align_weak_points): Remove + unused variable `edges'. + (ah_hinter_load): Remove unused variables `old_width' and + `new_width'. + * src/cid/cidload.c (cid_decrypt): Use `U' for constant (again). + * src/psaux/psobjs.c (T1_Decrypt): Ditto. + * src/type1/t1parse.c (T1_Get_Private_Dict): Ditto. + +2001-06-28 David Turner + + * include/internal/ftstream.h: Modified the definitions + of the FT_GET_XXXX and NEXT_XXXX macros for 16-bit correctness. + +2001-06-26 Werner Lemberg + + * src/cid/cidload.c, src/cid/cidload.h (cid_decrypt): Use FT_Offset + instead of FT_Int as type for `length' parameter. + * include/freetype/internal/psaux.h (PSAux_Interface): Updated. + +2001-06-27 Wolfgang Domröse + + * src/psaux/psobjs.c, src/psaux/psobjs.h (T1_Decrypt): Use FT_Offset + instead of FT_Int as type for `length' parameter. + + + * Version 2.0.4 released. + ========================= + + +2001-06-27 David Turner + + * builds/unix/ftconfig.in: Changed the definition of the + FT_CALLBACK_DEF macro. + + * include/freetype/ftconfig.h, src/*/*.c: Changed the definition and + use of the FT_CALLBACK_DEF macro in order to support 16-bit + compilers. + + * builds/unix/ftconfig.in: Changed the definition of the + FT_CALLBACK_DEF macro. + + * src/sfnt/ttload.c (TT_Load_Kern): The kern table loader now ensures + that the kerning table is correctly sorted (some problem fonts don't + have a correct kern table). + +2001-06-26 Wolfgang Domröse + + * include/freetype/internal/ftstream.h (FT_GET_OFF3_LE): Fix typo. + +2001-06-24 David Turner + + * src/base/ftcalc.c (ft_div64by32): Fixed the source to work + correctly on 16-bit systems. + +2001-06-23 Anthony Fok + + * debian/*: Added Debian package build directory for 2.0.4. + +2001-06-22 David Turner + + * docs/PATENTS: Added patents disclaimer. This one was missing! + + * docs/CHANGES, docs/todo: Updated for the upcoming 2.0.4 release. + +2001-06-20 Werner Lemberg + + * include/freetype/config/ftconfig.h: Add two more `L's to + constants. + Add missing semicolons. + + * builds/toplevel.mk: Do similar change as for + builds/unix/detect.mk. + + * include/freetype/freetype.h (FT_ENC_TAG): New version to make it + easier to redefine. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. + + * src/pcf/pcfread.c (pcf_get_encodings): Add cast. + +2001-06-19 David Turner + + * builds/win32/visualc/freetype.dsp, builds/win32/visualc/index.html: + Updated the Visual C++ project (for the 2.0.4 release). + + * builds/unix/detect.mk: Added rule for AIX detection (which uses + /usr/sbin/init instead of /sbin/init). + + * include/freetype/fterrors.h, src/*/*err*.h: Updated some of the + error macros to simplify handling of new error scheme. + +2001-06-19 Werner Lemberg + + * include/freetype/fttypes.h (FT_ERROR_MODULE): New macro. + +2001-06-19 David Turner + + Removing _lots_ of compiler warnings when the most pedantic warning + levels of Visual C++ and Borland C++ are used. Too many files to be + listed here, but FT2 now compiles without warnings with VC++ and the + `/W4' warning level (lint-style). + + * include/freetype/freetype.h (FT_New_Memory_Face): Updated + documentation. + * include/freetype/fttypes.h (FT_BOOL): New macro. + * include/freetype/internal/ftdebug.h: Add #pragma for Visual C++ + to suppress warning. + * include/freetype/internal/ftstream.h (FT_GET_SHORT_{BE,LE}, + FT_GET_OFF3_{BE,LE}, FT_GET_LONG_{BE,LE}): New macros. + (NEXT_*): Use them. + * src/autohint/ahglobal.c: Include FT_INTERNAL_DEBUG_H. + (FT_New_Memory_Face): Add `const' to function declaration. + +2001-06-18 Werner Lemberg + + Minor cleanups to remove compiler warnings. + + * include/freetype/cache/ftcmanag.h (FTC_MAX_BYTES_DEFAULT): Use + `L' for constant. + * include/freetype/config/ftoption.h (FT_RENDER_POOL_SIZE): Ditto. + * src/base/ftcalc.c (FT_MulDiv): Use `L' for constant. + * src/base/ftglyph.c (FT_Glyph_Get_CBox): Remove `error' variable. + * src/base/fttrigon.c (ft_trig_arctan_table): Use `L' for constants. + * src/base/ftobjs.c (FT_Done_Size): Fix return value. + (FT_Set_Char_Size, FT_Set_Pixel_Sizes, FT_Get_Kerning): Remove + unused `memory' variable. + * src/autohint/ahglyph.c (ah_get_orientation): Use `L' for constant. + * src/autohint/ahhint.c (ah_hint_edges_3, + ah_hinter_align_edge_points): Remove unused `before' and `after' + variables. + (ah_hinter_align_weak_points): Remove unused `edge_limit' variable. + (ah_hinter_load): Remove unused `new_advance', `start_contour', + and `metrics' variables. + * src/cff/cffload.c (CFF_Load_Encoding): Remove dead code to avoid + compiler warning. + * src/cff/cffobjs.c (CFF_Init_Face): Remove unused `base_offset' + variable. + * src/cff/cffgload.c (CFF_Parse_CharStrings): Remove unused + `outline' variable. + (cff_compute_bias): Use `U' for constant. + * src/cid/cidload.c (cid_decrypt): Ditto. + * src/psaux/psobjs.c (T1_Decrypt): Ditto. + * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Ditto. + * src/sfnt/ttload.c (TT_Load_Kern): Remove unused `version' + variable. + * src/sfnt/ttsbit.c (TT_Load_SBit_Image): Remove unused `top' + variable. + * src/truetype/ttgload.c (load_truetype_glyph): Remove unused + `num_contours' and `ins_offset' variables. + (compute_glyph_metrics): Remove unused `Top' and `x_scale' + variables. + (TT_Load_Glyph): Remove unused `memory' variable. + * src/smooth/ftgrays.c (grays_raster_render): Use `L' for constants. + +2001-06-18 Werner Lemberg + + Make the new error scheme source compatible with older FT versions + by introducing another layer. + + * include/freetype/fterrors.h (FT_ERRORDEF_, FT_NOERRORDEF_): New + macros. + (FT_NOERRORDEF): Removed. + * include/*/*err*.h: Use FT_ERRORDEF_ and FT_NOERRORDEF_. + +2001-06-16 Werner Lemberg + + * include/freetype/freetype.h (FT_ENC_TAG): New macro. + (FT_Encoding_): Use it. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Define it + conditionally. + +2001-06-14 David Turner + + Modified the TrueType interpreter to let it use the new + trigonometric functions provided in `fttrigon.h'. This gets rid of + some old 64-bit computation routines, as well as many warnings when + compiling the library with the `long long' 64-bit integer type. + + * include/freetype/config/ftoption.h: Undefine + FT_CONFIG_OPTION_OLD_CALCS. + * include/freetype/internal/ftcalc.h: Rearrange use of + FT_CONFIG_OPTION_OLD_CALCS. + * src/base/ftcalc.c: Add declaration of FT_Int64 if + FT_CONFIG_OPTION_OLD_CALCS isn't defined. + * src/truetype/ttinterp.c: Use FT_TRIGONOMETRY_H. + (Norm): Add a special version if FT_CONFIG_OPTION_OLD_CALCS isn't + defined. + (Current_Ratio, Normalize): Simplify code. + +2001-06-11 Mike Owens + + * src/base/ftcalc.c (FT_MulDiv, FT_DivFix, FT_Sqrt64): Remove + compiler warnings. + +2001-06-08 Werner Lemberg + + * builds/unix/configure.in: Renamed to ... + * builds/unix/configure.ac: This to make sure that autoconf 2.50 is + needed. + Run `autoupdate' on it. + Increase `version_info' to 7:0:1. + * builds/unix/configure: Regenerated. + +2001-06-08 David Turner + + * src/autohint/ahhint.c (ah_hinter_load_glyph): Fixed a bug that + corrupted transformed glyphs that were auto-hinted (the transform + was applied twice). + + Fixed a bug that returned an invalid linear width for composite + TrueType glyphs. + + * include/internal/tttypes.h (TT_Loader_): Two new elements `linear' + and `linear_def'. + * src/truetype/ttgload.c (load_truetype_glyph, + compute_glyph_metrics): Use it. + + * include/fttypes.h (FT_ERROR_BASE): New macro. + * src/base/ftobjs.c (FT_Open_Face, FT_Render_Glyph_Internal): Use it + to make source code work with the new error scheme implemented by + Werner. + * src/base/ftoutln.c (FT_Outline_Render): Ditto. + +2001-06-07 Werner Lemberg + + Updating to libtool 1.4.0 and autoconf 2.50. + + * builds/unix/ltconfig: Removed. + * builds/unix/ltmain.sh, builds/unix/configure.in, + builds/unix/aclocal.m4: Updated. + * builds/unix/configure: Regenerated. + +2001-06-06 Werner Lemberg + + Complete redesign of error codes. Please check ftmoderr.h for more + details. + + * include/freetype/internal/cfferrs.h, + include/freetype/internal/tterrors.h, + include/freetype/internal/t1errors.h: Removed. Replaced with files + local to the module. All extra error codes have been moved to + `fterrors.h'. + + * src/sfnt/ttpost.h: Move error codes to `fterrors.h'. + + * src/autohint/aherrors.h, src/cache/ftcerror.h, src/cff/cfferrs.h, + src/cid/ciderrs.h, src/pcf/pcferror.h, src/psaux/psauxerr.h, + src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h, + src/smooth/ftsmerrs.h, src/truetype/tterrors.h, + src/type1/t1errors.h, src/winfonts/fnterrs.h: New files defining the + error names for the module it belongs to. + + * include/freetype/ftmoderr.h: New file, defining the module error + offsets. Its structure is similar to `fterrors.h'. + + * include/freetype/fterrors.h (FT_NOERRORDEF): New macro. + (FT_ERRORDEF): Redefined to use module error offsets. + All internal error codes are now public; unused error codes have + been removed, some are new. + + * include/freetype/config/ftheader.h (FT_MODULE_ERRORS_H): New + macro. + * include/freetype/config/ftoption.h + (FT_CONFIG_OPTION_USE_MODULE_ERRORS): New macro. + + All other source files have been updated to use the new error codes; + some already existing (internal) error codes local to a module have + been renamed to give them the same name as in the base module. + + All make files have been updated to include the local error files. + +2001-06-06 Werner Lemberg + + * src/cid/cidtokens.h: Replaced with... + * src/cid/cidtoken.h: This file for 8+3 consistency. + + * src/raster/ftraster.c: Use macros for header file names. + + * src/include/freetype/tttables.h (TT_HoriHeader_, TT_VertHeader_): + Fix length of `Reserved' array. Note that this isn't the real fix + since recent OpenType specs have introduced a `CaretOffset' field + instead of the first reserved byte. + +2001-05-29 Werner Lemberg + + * INSTALL: Minor fixes. + + + * Version 2.0.3 released. + ========================= + + +2001-05-29 David Turner + + * INSTALL, docs/CHANGES: Updated. + +2001-05-25 David Turner + + Moved several documents from the top-level to the `docs' directory. + + * src/base/ftcalc.c (FT_DivFix): Small fix to return value. + +2001-05-16 David Turner + + * src/truetype/ttgload.c (load_truetype_glyph): Fixed a bug in the + composite loader. Spotted by Keith Packard. + * src/base/ftobjs.c (FT_GlyphLoader_Check_Points, + FT_GlyphLoader_Check_Subglyphs): Ditto. + +2001-05-14 David Turner + + Fixed the incorrect blue zone computations, and improved the + composite support. Note that these changes result in improved + rendering, while sometimes introducing their own artefacts. This is + probably the last big change to the autohinter before the + introduction of a complete replacement. + + * src/autohint/ahglobal.c (sort_values): Fix loop. + * src/autohint/ahglyph.c: Removed some obsolete code. + (ah_outline_compute_edges): Modify code to set the ah_edge_round + flag. + (ah_outline_compute_blue_edges): Add code to compute active blue + zones. + * src/autohint/ahhint.c (ah_hinter_glyph_load): Change load_flags + value. + + * src/base/ftcalc.c (FT_DivFix): Fixed a bug in the 64-bit code that + created incorrect scale factors! + (FT_RoundFix, FT_CeilFix, FT_FloorFix): Minor improvements. + +2001-05-12 Werner Lemberg + + * include/freetype/ftbbox.h: FTBBOX_H -> __FTBBOX_H__. + * include/freetype/fttrigon.h: __FT_TRIGONOMETRY_H__ -> + __FTTRIGON_H__. + Include FT_FREETYPE_H. + Beautified; added copyright. + * src/base/fttrigon.c: Beautified; added copyright. + +2001-05-11 David Turner + + * src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c + (parse_font_matrix), src/type1/t1load.c (parse_font_matrix): Fixed + the incorrect EM size computation. + + * include/freetype/fttrigon.h, src/base/fttrigon.c: New files, + adding trigonometric functions to the core API (using Cordic + algorithms). + * src/base/ftbase.c, src/base/Jamfile, src/base/rules.mk: Use them. + + * builds/newline: New file. + * builds/top_level.mk, builds/detect.mk: Use it. This fixes + problems with Make on Windows 2000, as well as problems when `make + distclean' is invoked on a non-Unix platform when there is no + `config.mk' in the current directory. + + * builds/freetype.mk: Fixed a problem with object deletions under + Dos/Windows/OS/2 systems. + + Added new directory to hold tools and test programs. + + * docs/docmaker.py, docs/glnames.py: Moved to... + * src/tools/docmaker.py, src/tools/glnames.py: This place. + * src/tools/cordic.py: New file used to compute arctangent table + needed by fttrigon.c. + * src/tools/test_bbox.c, src/tools/test_trig.c: New test files. + + * src/tools/docmaker.py: Improved the script to add the current date + at the footer of each web page (useful to distinguish between + versions). + + * Jamfile: Fixed incorrect HDRMACRO argument. + + * TODO: Removed the cubic arc bbox computation note, since it has been + fixed recently. + * src/base/ftbbox.c (test_cubic_zero): Renamed to... + (test_cubic_extrema): This function. Use `UL' for unsigned long + constants. + + * include/freetype/t1tables.h, include/freetype/config/ftoption.h: + Formatting. + +2001-05-10 David Turner + + * src/base/ftobjs.c (FT_Open_Face): Fixed a small memory leak + which happened when trying to open 0-size font files! + +2001-05-09 Werner Lemberg + + * include/freetype/internal/ftcalc.h: Move declaration of + FT_SqrtFixed() out of `#ifdef FT_LONG64'. + +2001-05-08 Francesco Zappa Nardelli + + * src/pcfdriver.c (PCF_Load_Glyph): Fixed incorrect bitmap width + computation. + +2001-05-08 David Turner + + * docs/docmaker.py: Updated the DocMaker script in order to add + command line options (--output,--prefix,--title), fix the erroneous + line numbers reported during errors and warnings, and other + formatting issues. + + * src/base/ftcalc.c (FT_MulDiv, FT_MulFix, FT_DivFix): Various tiny + fixes related to rounding in 64-bits routines and + pseudo-`optimizations'. + +2001-04-27 David Turner + + * src/base/ftbbox.c (BBox_Cubic_Check): Fixed the coefficient + normalization algorithm (invalid final bit position, and invalid + shift computation). + +2001-04-26 Werner Lemberg + + * builds/unix/config.guess, builds/unix/config.sub: Updated to + latest versions from gnu.org. + + * builds/compiler/gcc-dev.mk: Add `-Wno-long-long' flag. + + * include/freetype/internal/ftcalc.h: Define FT_SqrtFixed() + unconditionally. + * src/base/ftbbox.c: Include FT_INTERNAL_CALC_H. + Fix compiler warnings. + * src/base/ftcalc.c: Fix (potential) compiler warnings. + +2001-04-26 David Turner + + * src/base/ftcalc.c (FT_SqrtFixed): Corrected/optimized the 32-bit + fixed-point square root computation. It is now used even with + 64-bits integers, as it is _much_ faster than calling FT_Sqrt64 :-) + + * src/base/ftbbox.c: Removed invalid `#include FT_BEZIER_H' line. + +2001-04-25 David Turner + + * src/base/ftbbox.c (BBox_Cubic_Check): Rewrote function to use + direct computations with 16.16 values instead of sub-divisions. It + is now slower, but proves a point :-) + + * src/raster/ftraster.c, src/smooth/ftgrays.c, src/base/ftbbox.c: + Fixed the Bézier stack depths. + + * src/base/ftcalc.c (FT_MulFix): Minor rounding fix. + + * builds/beos: Added BeOS-specific files to the old build system + (no changes were necessary to support BeOS in the Jamfile though). + +2001-04-20 David Turner + + * ftconfig.h, ftoption.h: Updated `ftconfig.h' to detect 64-bit int + types on platforms where Autoconf is not available). Also removed + FTCALC_USE_LONG_LONG and replaced it with + FT_CONFIG_OPTION_FORCE_INT64. + + * builds/win32/freetype.dsp: Updated the Visual C++ project file. + Doesn't create a DLL yet. + + * cffgload.c: Removed a compilation warning. + +2001-04-10 Tom Kacvinsky + + * t1load.c (parse_charstrings): Changed code for placing .notdef + glyph into slot 0 so that we no longer have a memory access + violation. + + * t1load.h: In structure T1_Loader, added swap_table (of type + PS_Table) to facilitate placing the .notdef glyph into slot 0. + +2001-04-10 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Get_Char_Index): Fix return value. + +2001-04-09 Laurence Withers + + * builds/dos/detect.mk: Add support for bash. + +2001-04-05 Werner Lemberg + + * builds/os2/*.mk: These files have been forgotten to update to + the structure of similar makefiles. + * builds/dos/*.mk: Ditto. + * builds/ansi/*.mk: Ditto. + + * builds/win32/win32-def.mk (BUILD): Fix typo. + + * builds/compiler/*.mk (CLEAN_LIBRARY): Don't use NO_OUTPUT. + This is already used in the link_*.mk files. + +2001-04-03 Werner Lemberg + + * src/*/Jamfile: Slight changes to make files more cryptic. + +2001-04-03 Werner Lemberg + + * Jamfile, src/Jamfile, src/*/Jamfile: Formatted. Slight changes + to give files identical structure. + +2001-04-02 Werner Lemberg + + * CHANGES: Reformatted, minor fixes. + * TODO: Updated. + * README: Formatting. + * include/freetype/freetype.h: Formatting. + + * Jamfile: Fix typo. + + * src/cff/cffparse.c: Move error code #defines to... + * include/freetype/internal/cfferrs.h: This file. + * src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffload.c: Replaced + `FT_Err_*' with `CFF_Err_*'. + * src/cid/cidparse.c: Replaced `FT_Err_*' with `T1_Err_*'. + * src/psaux/psobjs.c, src/psaux/t1decode.c: Ditto. + * src/sfnt/sfobjs.c, src/sfnt/ttload.c: Replaced `FT_Err_*' with + `TT_Err_*'. + * src/truetype/ttgload.c, src/truetype/ttobjs.c: Ditto. + * src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1objs.c, + src/type1/t1parse.c: Replaced `FT_Err_*' with `T1_Err_*'. + + * include/freetype/internal/cfferrs.h: Add + `CFF_Err_Unknown_File_Format'. + * include/freetype/internal/t1errors.h: Add + `T1_Err_Unknown_File_Format'. + * include/freetype/internal/tterrors.h: Add + `TT_Err_Unknown_File_Format'. + + * src/cff/cffload.h: Add `cff_*_encoding' and `cff_*_charset' + references. + * src/psaux/psobjs.c: Include `FT_INTERNAL_TYPE1_ERRORS_H'. + + * src/cff/cffobjs.c (CFF_Init_Face, CFF_Done_Face): Use + FT_LOCAL_DEF. + * src/cid/cidobjs.c (CID_Done_Driver): Ditto. + * src/truetype/ttobjs.c (TT_Init_Face, TT_Done_Face, TT_Init_Size): + Ditto. + * src/type1/t1objs.c (T1_Done_Driver): Ditto. + * src/pcf/pcfdriver.c (PCF_Done_Face): Ditto. + * src/pcf/pcf.h: Use FT_LOCAL for `PCF_Done_Face'. + +2001-04-02 Tom Kacvinsky + + * src/sfnt/ttload.c (TT_Load_Metrics): Fix an improper pointer + dereference. Submitted by Herbert Duerr . + +2001-03-26 Tom Kacvinsky + + * include/freetype/config/ftconfig.h: Changed hexadecimal + constants to use suffix U to avoid problems with HP-UX's c89 + compiler. Submitted by G.W. Lucas . + +2001-03-24 David Turner + + * Jamrules, Jamfile, src/Jamfile, src/*/Jamfile: Adding jamfiles to + the source tree. See www.freetype.org/jam/index.html for details. + + + * Version 2.0.2 released. + ========================= + + +2001-03-20 Werner Lemberg + + * builds/win32/detect.mk: Fix .PHONY target for Intel compiler. + +2001-03-20 David Turner + + * include/freetype/config/ftheader.h, include/freetype/ftsnames.h: + Renamed `ftnames.h' to `ftsnames.h', and FT_NAMES_H to + FT_SFNT_NAMES_H. + + * docs/docmaker.py: Added generation of INDEX link in table of + contents. + + * INSTALL, docs/BUILD: Updated documentation to indicate that the + compilation process has changed slightly (no more `src' required in + the include path). + + * builds/*/*-def.mk: Changed the objects directory from `obj' to + `objs'. + + * include/freetype/config/ftheader.h: Removed obsolete macros like + FT_SOURCE_FILE, etc. and added cache-specific macro definitions that + were previously defined in . Added comments to + be included in a new API Reference section. + + * src/*/*: Removed the use of FT_SOURCE_FILE, etc. Now, each + component needs to add its own directory to the include path at + compile time. Modified all `rules.mk' and `descrip.mms' + accordingly. + +2001-03-20 Werner Lemberg + + * builds/unix/configure.in: Add $ft_version. + * builds/unix/freetype-config.in: Use it. + * builds/unix/configure: Updated. + +2001-03-19 Tom Kacvinsky + + * src/type1/t1load.c (parse_font_matrix): Assign the units per em + value an unsigned short value, first by shifting right 16 bits, + then by casting the results to FT_UShort. + + * src/cff/cffparse.c (cff_parse_font_bbox): Assign the units per em + value an unsigned short value, first by shifting right 16 bits, + then by casting the results to FT_UShort. + +2001-03-17 David Turner + + * src/cid/cidobjs.c, src/cid/cidload.c, src/pcf/pcfread.c, + src/type1/t1load.c, src/type1/t1objs.c: Added a few casts to remove + compiler warnings in pedantic modes. + + * include/config/ft2build.h, include/config/ftheader.h: The file + `ft2build.h' was renamed to `ftheader.h' to avoid conflicts with the + top-level . + + * include/config/ftheader.h: Added new section describing the #include + macros. + +2001-03-17 Tom Kacvinsky + + * src/cff/cffparse.c (cff_parse_font_bbox): Obtain rounded FT_Fixed + values for the bounding box numbers. + + * src/cff/cffobjs.c (CFF_Init_Face): When processing a CFF/CEF font, + set `root->ascender' (`root->descender') to the integer part of + `root->bbox.yMax' (`root->bbox.yMin', respectively). + +2001-03-16 Tom Kacvinsky + + * src/cff/cffdrivr.c (get_cff_glyph_name): New function. Used in + cff_get_interface to facilitate getting a glyph name for glyph index + via FT_Get_Glyph_Name(). + + (cff_get_interface): Added support for getting a glyph name via the + `glyph_name' module interface. Uses the new function + get_cff_glyph_name(). + Submitted by Sander van der Wal . + + * src/cff/cffobjs.c (CFF_Init_Face): Logical or the face flags with + FT_FACE_FLAG_GLYPH_NAMES only if FT_CONFIG_OPTION_NO_GLYPH_NAMES is + not defined. This is to add support for getting a glyph name from a + glyph index via FT_Get_Glyph_Name(). + Submitted by Sander van der Wal . + + * src/cff/cffgload.c (CFF_Parse_CharStrings): Added support for + deprecated operator `dotsection'. + Submitted by Sander van der Wal . + +2001-03-12 Werner Lemberg + + * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Fix error + messages. + + * INSTALL, docs/BUILD: We need GNU make 3.78.1 or newer. + +2001-03-12 Tom Kacvinsky + + * include/freetype/internal/psaux.h: Changed the lenIV member of + the T1_Decoder_ struct to be an FT_Int instead of an FT_UInt. + + * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Adjust + for lenIV seed bytes at the start of a decrypted subroutine. + + * src/cid/cidload.c (cid_read_subrs): Decrypt subroutines only + if lenIV >= 0. + + * src/cid/cidgload.c (cid_load_glyph): Decrypt charstrings only + if lenIV >= 0. + +2001-03-11 Werner Lemberg + + * TODO: Updated. + + * src/pcf/pcfread.c: Put READ_Fields() always in a conditional to + avoid compiler warnings. + +2001-03-10 Tom Kacvinsky + + * TODO: New file. + + * include/freetype/freetype.h: Added prototypes and notes for + three new functions: FT_RoundFix, FT_CeilFix, and FT_FloorFix. + * src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_FloorFix): Added + implementation code. + + * src/cid/cidobjs.c (CID_Init_Face): Use calculated units_per_EM, + and if that is not available, default to 1000 units per EM. Changed + assignment code for ascender and descender values. + * src/cid/cidload.c (parse_font_matrix): Added units_per_EM + processing. + (parse_font_bbox): Changed to use FT_Fixed number handling. + + * src/type1/t1objs.c (T1_Init_Face): Changed the assignment code + for ascender, descender, and max_advance_width. + * src/type1/t1load.c (parse_font_bbox): Changed to use FT_Fixed + number handling. + +2001-03-10 Henrik Grubbström + + * src/*/*.c: Added many casts to make code more 64bit-safe. + +2001-03-07 Werner Lemberg + + * INSTALL, docs/BUILD: We need GNU make 3.78 or newer. + +2001-03-07 Tom Kacvinsky + + * src/type1/t1objs.c (T1_Init_Face): Minor correction: We must wait + until parse_font_bbox is changed before we use logical shift rights + in the assignments of `root->ascender', `root->descender', and + `root->max_advance_width'. + + (T1_Done_Face): Free `char_name' table to avoid a memory leak. + Submitted by Sander van der Wal . + +2001-03-05 Tom Kacvinsky + + * src/cff/cffgload.c (CFF_Load_Glyph): Set glyph control data to the + the Type 2 glyph charstring (used by conversion programs). + Submitted by Ha Shao . + +2001-03-04 Antoine Leca + + * include/freetype/ttnameid.h: Correct a stupid typo which prevented + correct compilation (TT_MS_LANGID_TIGRIGNA_ETHIOPIA appeared twice). + +2001-03-04 Werner Lemberg + + * src/autohint/ahtypes.h (AH_Hinter): Add elements + `disable_horz_edges', `disable_vert_edges'. + * src/autohint/ahhint.c (ah_hint_edges_3, ah_hinter_hint_edges): Use + them (and remove static variables with the same names). + * src/pcf/pcfutil.c (BitOrderInvert): Add `const'. + * docs/glnames.py: Updated to latest pstables.h changes. + + * builds/unix/detect.mk: Add test for Hurd. + * builds/hurd/detect.mk: Removed. + +2001-03-04 Sander van der Wal + + * src/psnames/pstables.h: Add more `const'. + * src/pcf/pcfutil.c: Ditto. + +2001-03-04 Werner Lemberg + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fixing typo + (FT_Glyph_Done -> FT_Done_Glyph). + +2001-03-01 Antoine Leca + + * include/freetype/ttnameid.h: Added some new Microsoft language + codes and LCIDs as found in Office Xp. + +2001-02-28 David Turner + + * builds/hurd/detect.mk: New file. Added support to detect the GNU + Hurd operating system as Unix-like. Fix submitted by Anthony Fok + . + + * src/type1/t1gload.c (T1_Load_Glyph): Set glyph control data to the + the Type 1 glyph charstring (used by conversion programs). + Submitted by Ha Shao . + +2001-02-22 David Turner + + * src/base/ftgrays.c (grays_sweep): The function didn't exit + immediately if `num_cells' was 0 as it should. Thanks to Boris for + finding this out. + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fixed memory leak when + bitmap rendering fails (thanks to Graham Asher). + +2001-02-13 Werner Lemberg + + * docs/docmaker.py (DocSection::add_element): Use + `self.print_error()'. + + * builds/unix/config.{guess,sub}: Updated (from ftp.gnu.org). + +2001-02-13 David Turner + + * docs/docmaker.py, include/freetype/*.h: Updated the DocMaker + script to support chapters and section block ordering. Updated the + public header files accordingly. + + * src/base/ftglyph.c (FT_Glyph_Copy): Advance width and glyph format + were not correctly copied. + +2001-02-08 Tom Kacvinsky + + * src/cff/cffparse.c (cff_parse_font_matrix): Removed an + unnecessary fprintf( stderr, ... ). + +2001-02-07 Tom Kacvinsky + + * src/type1/t1objs.c (T1_Init_Face): Added code to get the + units_per_EM from the value assigned in parse_font_matrix, if + available. Default to 1000 if not available. + + * src/cff/cffparse.c (cff_parse_font_matrix): Added logic to get + the units_per_EM from the FontMatrix. + + (cff_parse_fixed_thousand): New function. Gets a real number from + the CFF font, but multiplies by 1000 (this is to avoid rounding + errors when placing this real number into a 16.16 fixed number). + + (cff_parse_real): Added code so that the integer part is moved + into the high sixteen bits of the 16.16 fixed number. + + * src/cff/cffobjs.c (CFF_Init_Face): Added logic to get the units + per EM from the CFF dictionary, if available. + + * include/freetype/internal/cfftypes.h: In struct CFF_Font_Dict_, + added a units_per_em member to facilitate passing of units_per_em + from function cff_parse_font_matrix. + + * src/type1/t1load.c (is_alpha): Make `-' a legal alphanumeric + character. This is so that font names with `-' are fully parsed, + etc... + +2001-02-02 Werner Lemberg + + * src/psaux/psobjs.c (shift_elements): Remove if clause (which is + obsolete now). + + (reallocate_t1_table, PS_Table_Done): Replace REALLOC() with ALLOC() + + MEM_Copy() to avoid a memory bug. + +2001-02-01 David Turner + + * docs/docmaker.py: Improved the index sorting routine to place + capital letters before small ones. Added the `' marker to + section blocks in order to give the order of blocks. + +2001-01-30 Antoine Leca + + * include/freetype/ttnameid.h: Latest updates to Microsoft language + ID codes. + +2001-01-24 Tom Kacvinsky + + * src/cff/t1load.c (parse_font_matrix): Added heuristic to get + units_per_EM from the font matrix. + + (parse_dict): Deleted test to see whether the FontInfo keyword has + been seen. Deletion of this test allows fonts without FontInfo + dictionaries to be parsed by the Type 1 driver. + + (T1_Open_Face): Deleted empty subroutines array test to make sure + fonts with no subroutines still are parsed. + +2001-01-17 Francesco Zappa Nardelli + + * src/pcfread.c (pcf_get_properties, pcf_get_metrics, + pcf_get_bitmaps): Fix compiler errors. + +2001-01-11 David Turner + + * src/pcf/pcfread.c: Removed some compilation warnings related + to comparison of signed vs. unsigned integers. + + * include/freetype/internal/ftdebug.h: Changed the debug trace + constants from trace_t2xxxx to trace_cffxxxx to be able to compile + the CFF driver in debug mode. + +2001-01-11 Matthew Crosby + + * builds/unix/freetype-config.in: Fix problems with separate + --prefix and --exec-prefix. + +2001-01-11 David Turner + + * docs/docmaker.py: Added cross-references generation as well as + more robust handling of pathname wildcard matching. + +2001-01-10 Werner Lemberg + + * docs/docmaker.py: Minor improvements to reduce unwanted spaces + and empty lines in output. + +2001-01-09 David Turner + + * docs/docmaker.py: Improved script to generate table of contents + and index pages. It also supports wildcards on non Unix systems. + + * include/freetype/*.h, include/freetype/cache/*.h: Updated comments + to include section definitions/delimitations for the API Reference + generator. + + * include/freetype/freetype.h: Moved declaration of + `FT_Generic_Finalizer' and the `FT_Generic' structure to... + * include/freetype/fttypes.h: here. + +2001-01-04 Werner Lemberg + + * include/freetype/ttnameid.h: Updated Unicode code range comments. + +2001-01-03 Tom Kacvinsky + + * src/cff/rules.mk: Use cffgload.{c,h} instead of t2gload.{c,h}. + + * include/freetype/internal/internal.h: Changed to use cfftypes.h + (cfferrs.h) instead of t2types.h (t2errors.h, respectively). + + * include/freetype/internal/cfftypes.h: Merged in changes from + t2types.h and made this the canonical `types' header for the CFF + driver. + + * include/freetype/internal/t2types.h: This file was merged with + cfftypes.h and is no longer necessary. + + * include/freetype/internal/t2errors.h: Renamed to cfferrs.h. + + * src/cff/cffobjs.c, src/cff/cffobjs.h, src/cff/cffparse.c, + src/cff/cffdrivr.c, src/cff/cff.c, src/cff/cffload.c, + src/cff/cffgload.c, src/cff/cffgload.h: Changed to use + cffgload.{c,h} instead of t2gload.{c,h}. All occurrences of t2_ + (T2_) were replaced with cff_ (CFF_, respectively). + + * src/cff/t2gload.h: Renamed cffgload.h. + + * src/cff/t2gload.c: Renamed cffgload.c + +2000-01-02 Jouk Jansen + + * builds/vms: Support files for VMS architecture added. + * descrip.mms, src/*/descrip.mms: VMS makefiles added. + * README.VMS: New file. + +2000-01-01 Werner Lemberg + + * LICENSE.TXT: Added info about PCF driver license. + +2001-01-01 Francesco Zappa Nardelli + + * src/pcf/*: New driver module for PCF font format (used in + X Window System). + * include/freetype/internal/ftdebug.h (FT_Trace): Added values for + PCF driver. + * include/freetype/internal/pcftypes.h: New file. + * include/freetype/config/ftmodule.h: Added PCF driver module. + +2001-01-01 Werner Lemberg + + * src/winfonts/winfnt.c (FNT_Get_Char_Index): Fix parameter type. + +2000-12-31 Werner Lemberg + + * builds/modules.mk (clean_module_list): Fixed deletion of module + file in case `make make_module_list' is called before `make setup'. + +2000-12-30 Werner Lemberg + + * src/cff/cffload.c (CFF_Load_Charset): Improved error messages. + (CFF_Load_Charset, CFF_Load_Encoding): Remove unnecessary variable + definition. + +2000-12-30 Tom Kacvinsky + + * include/freetype/internal/t2types.h, + include/freetype/internal/cfftypes.h: Changed the structures for + CFF_Charset and CFF_Encoding for the new implementations of the + charset and encoding parsers in the CFF driver. + + * src/cff/t2gload.c (t2_lookup_glyph_by_stdcharcode, + t2_operator_seac): Added these functions for use in implementing the + seac emulation provided by the Type 2 endchar operator. + (T2_Parse_CharStrings): Added seac emulation for the endchar + operator. + + * src/cff/cffload.c (CFF_Load_Encoding, CFF_Load_Charset, + CFF_Done_Encoding, CFF_Done_Charset): Extended to load and parse the + charset/encoding tables, and free the memory used by them when the + CFF driver is finished with them. Added tables + + cff_isoadobe_charset + cff_expert_charset + cff_expertsubset_charset + cff_standard_encoding + cff_expert_encoding + + so that the encoding/charset parser can handle predefined encodings and + charsets. + +2000-12-24 Tom Kacvinsky + + * src/cff/t2gload.c (T2_Load_Glyph): Added code so that the font + transform is applied. + + * src/cff/cffparse.c (cff_parse_font_matrix): Added code so that + the font matrix numbers are scaled by 1/(matrix->yy). Also, the + offset vector now contains integer values instead of 16.16 fixed + numbers. + +2000-12-22 Tom Kacvinsky + + * src/autohint/ahhint.c (ah_hinter_load_glyph): + Removed unnecessary comments and commented-out code. + +2000-12-21 David Turner + + * src/cid/cidafm.c, src/cid/cidafm.h: removed un-needed files, + we'll work on supporting CID AFM files later I guess :-) + +2000-12-21 Tom Kacvinsky + + * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): + Changed so that fonts with a non-standard FontMatrix render + correctly. Previously, the first glyph rendered from such a + font did not have the transformation matrix applied. + +2000-12-17 Werner Lemberg + + * *.mk: Added lots of `.PHONY' targets. + +2000-12-17 Karsten Fleischer + + * *.mk: Implemented `platform' target to disable auto-detection. + +2000-12-14 Werner Lemberg + + * docs/design/modules.html: Removed. Covered by design-*.html. + + * INSTALL: Added info about makepp. + +2000-12-14 David Turner + + Added support for clipped direct rendering in the smooth renderer. + This should not break binary compatibility of existing applications. + + * include/freetype/fttypes.h, include/freetype/ftimage.h: Move + definition of the FT_BBox structure from the former to the latter. + * include/freetype/ftimage.h: Add `ft_raster_flag_clip' value to + FT_Raster_Flag enumeration. + Add `clip_box' element to FT_Raster_Params structure. + * src/smooth/ftgrays.c (grays_convert_glyph): Implement it. + + * INSTALL: Updated installation instructions on Win32, listing the + new `make setup list' target used to list supported + compilers/targets. + + * src/raster/ftraster.c (ft_black_render): Test for unsupported + direct rendering before testing arguments. + +2000-12-13 David Turner + + * include/freetype/config/ft2build.h, + include/freetype/internal/internal.h: Fixed header inclusion macros + to use direct definitions. This is the only way to do these things + in a portable way :-( The rest of the code should follow shortly + though everything compiles now. + + * builds/compiler/intelc.mk, builds/compiler/watcom.mk: New files. + + * builds/win32/detect.mk: Added support for the Intel C/C++ + compiler, as well as _preliminary_ (read: doesn't work!) support for + Watcom. Also added a new setup target. Type `make setup list' for + a list of supported command-line compilers on Win32. + + * src/base/ftdebug.c: Added dummy symbol to avoid empty file if + conditionals are off. + +2000-12-13 Werner Lemberg + + * builds/unix/ftsystem.c: Fixed typos. Fixed inclusion of wrong + ftconfig.h file. + +2000-12-12 Werner Lemberg + + * include/freetype/config/ft2build.h (FT2_ROOT, FT2_CONFIG_ROOT): + Removed. ANSI C doesn't (explicitly) allow macro expansion in + arguments using `##'. + (FT2_PUBLIC_FILE, FT2_CONFIG_FILE, FT2_INTERNAL_FILE): Use directory + names directly. Make them configurable. Use `##' to strip leading + and trailing spaces from arguments. + + * builds/unix/ft2unix.h: Adapted. + + * src/base/ftsystem.c (ft_alloc, ft_realloc, ft_free, ft_io_stream, + ft_close_stream): Use FT_CALLBACK_DEF. + + * builds/unix/ftsystem.c: Use new header scheme. + (FT_Done_Memory): Use free() from FT_Memory structure. + + * src/base/ftinit.c, src/base/ftmac.c: Header scheme fixes. + +2000-12-11 Werner Lemberg + + * include/freetype/config/ft2build.h (FT2_CONFIG_ROOT, + FT2_PUBLIC_FILE, FT2_CONFIG_FILE, FT2_INTERNAL_FILE, + FT_SOURCE_FILE): Use `##' operator to be really ANSI C compliant. + +2000-12-09 Werner Lemberg + + * builds/unix/detect.mk: Remove unused USE_CFLAGS variable. + +2000-12-08 Werner Lemberg + + * */*.h: Changed body inclusion macro names to start and end with + `__' (those which haven't converted yet). Fixed minor conversion + issues. + + * src/winfonts/winfnt.c: Updated to new header inclusion scheme. + + * src/truetype/ttinterp.c: Remove unused CALC_Length() macro. + +2000-12-07 David Turner + + * */*.[ch]: Changed source files to adhere to the new + header inclusion scheme. Not completely tested but works for now + here. + + * src/cff/t2driver.c: Renamed and updated to... + * src/cff/cffdrivr.c: New file. + * src/cff/t2driver.h: Renamed and updated to... + * src/cff/cffdrivr.h: New file. + * src/cff/t2load.c: Renamed and updated to... + * src/cff/cffload.c: New file. + * src/cff/t2load.h: Renamed and updated to... + * src/cff/cffload.h: New file. + * src/cff/t2objs.c: Renamed and updated to... + * src/cff/cffobjs.c: New file. + * src/cff/t2objs.h: Renamed and updated to... + * src/cff/cffobjs.h: New file. + * src/cff/t2parse.c: Renamed and updated to... + * src/cff/cffparse.c: New file. + * src/cff/t2parse.h: Renamed and updated to... + * src/cff/cffparse.h: New file. + * src/cff/t2tokens.h: Renamed and updated to... + * src/cff/cfftoken.h: New file. + + * src/cff/cff.c, src/cff/rules.mk: Updated. + +2000-12-06 David Turner + + * src/cache/ftlru.c (FT_Lru_Done): Fixed memory leak. + +2000-12-06 Werner Lemberg + + * builds/module.mk: Replaced `xxx #' with `xxx$(space). + * builds/os2/detect.mk, builds/win32/detect.mk: Moved comment to + avoid trailing spaces in variable. + * builds/freetype.mk: Use $(D) instead of $D to make statement more + readable. + + * docs/docmaker.py: Formatting. + +2000-12-05 David Turner + + * src/psaux/psauxmod.c: Fixed a broken inclusion of component + header files (an FT_FLAT_COMPILE test was missing). + + * src/cache/ftcmanag.c (FTC_Manager_Done): Fixed a bug that caused + an occasional crash when the function was called (due to a dangling + pointer). + + * src/base/ftsystem.c (FT_Done_Memory): Fixed an obvious bug: + The ANSI `free()' function was called instead of `memory->free()'. + + * docs/docmaker.py: Added section filtering, multi-page generation + (index page generation is still missing though). + +2000-12-04 David Turner + + * builds/unix/install.mk, builds/unix/ft2unix.h: The file `ft2unix.h' + is now installed as for Unix systems. Note that we + still use the `freetype2/freetype' installation path for now. + + * */*.[ch]: Now using as the default build and setup + configuration file in all public headers. Internal source files + still need some changes though. + + * builds/devel/ft2build.h, builds/devel/ftoption.h: Created a new + directory to hold all development options for both the Unix and + Win32 developer builds. + + * builds/win32/detect.mk, builds/win32/w32-bccd.mk, + builds/win32/w32-dev.mk: Changed the developer build targets to + `devel-gcc' and `devel-bcc' in order to be able to develop with the + Borland C++ compiler. + +2000-12-01 David Turner + + + * Version 2.0.1 released. + ========================= + + + * builds/unix/configure.in, builds/unix/configure, + builds/cygwin/configure.in, builds/cygwin/configure: Setting + `version_info' to 6:1:0 for the 2.0.1 release. + + * CHANGES: Added a summary of changes between 2.0.1 and 2.0. + + * builds/unix/ftconfig.in, builds/cygwin/ftconfig.in: Changes + to allow compilation under Unix with the Unix-specific config + files. + +2000-12-01 Werner Lemberg + + * INSTALL: Revised. + * builds/compiler/bcc-dev.mk, builds/compiler/visualage.mk, + builds/compiler/bcc.mk, builds/win32/w32-bcc.mk, + builds/win32/w32-bccd.mk: Revised. + * include/freetype/config/ftbuild.h, + include/freetype/internal/internal.h: Revised. + * include/freetype/ftimage.h: Updated to new header inclusion scheme. + +2000-11-30 Werner Lemberg + + * builds/toplevel.mk (.PHONY): Adding `distclean'. + * builds/unix/detect.mk (.PHONY): Adding `devel', `unix', `lcc', + `setup'. + +2000-11-30 David Turner + + * INSTALL: Slightly updated the quick starter documentation to + include IDE compilation, prevent against BSD Make, and specify `make + setup' instead of a single `make' for build configuration. + + * include/config/ftbuild.h, include/internal/internal.h: Added new + configuration files used to determine the location of all public, + configuration, and internal header files for FreeType 2. Modified + all headers under `include/freetype' to reflect this change. Note + that we still need to change the library source files themselves + though. + + * builds/compiler/bcc.mk, builds/compiler/bcc-dev.mk, + builds/win32/w32-bcc.mk, builds/win32/w32-bccd.mk, + builds/win32/detect.mk: Added new files to support compilation with + the free Borland C++ command-line compiler. Modified the detection + rules to recognize the new `bcc32' target in `make setup bcc32'. + + * src/sfnt/ttcmap.c, src/sfnt/ttpost.c, src/sfnt/ttsbit.c, + src/truetype/ttobjs.c, src/truetype/ttgload.c, + src/truetype/ttinterp.c: Fixed a few comparisons that Borland C++ + didn't really like. Basically, this compiler complains when FT_UInt + is compared to FT_UShort (apparently, it promotes `UShort' to `Int' + in these cases). + +2000-11-30 Tom Kacvinsky + + * t2objs.c (T2_Init_Face): Added calculation of `face->height' for + pure CFF fonts. + + * t1objs.c (T1_Init_Face): Fixed computation of `face->height'. + +2000-11-29 David Turner + + * src/base/ftbbox.c (BBox_Conic_Check): Fixed a really stupid + bug in the formula used to compute the conic Bézier extrema + of non-monotonous arcs. + +2000-11-29 Werner Lemberg + + * src/base/ftcalc.c (FT_SqrtFixed), src/base/ftobjs.c + (FT_Set_Renderer): Use FT_EXPORT_DEF. + * src/cache/ftcimage.c (FTC_Image_Cache_Lookup), + src/cache/ftcmanag.c (FTC_Manager_Done, FTC_Manager_Reset, + FTC_Manager_Lookup_Face, FTC_Manager_Lookup_Size, + FTC_Manager_Register_Cache), src/cache/ftcsbits.c + (FTC_SBit_Cache_Lookup): Ditto. + + * src/include/freetype/cache/ftcglyph.h (FTC_GlyphNode_Init), + src/include/freetype/ftmac.h (FT_New_Face_From_FOND): Use FT_EXPORT. + +2000-11-29 Werner Lemberg + + * src/sfnt/sfdriver.c: Include ttsbit.h and ttpost.h only + conditionally. + + * src/truetype/ttdriver.c (Set_Char_Sizes, Set_Pixel_Sizes): Set + `size->strike_index' only conditionally. + + * src/type1/t1driver.c, src/type1/t1objs.c: Include t1afm.h only + conditionally. + + * src/winfonts/winfnt.h: Move all type definitions to... + * src/include/freetype/internal/fnttypes.h: New file. + * src/winfonts/winfnt.c: Use it. + +2000-11-29 ??? ??? + + * include/freetype/internal/ftdebug.h: Replaced FT_CAT and FT_XCAT + with a direct solution (which also satisfies picky compilers). + +2000-11-28 YAMANO-UCHI Hidetoshi + + * src/truetype/ttobjs.c (TT_Init_Size): Fix #ifdef's to work with + disabled interpreter also. + + * src/base/ftnames.c (FT_Get_Sfnt_Name_Count): Fix incorrect + parentheses. + +2000-11-26 Tom Kacvinsky + + * src/cff/t2gload.c (T2_Parse_CharStrings): Added logic to glyph + width setting code to take into account even/odd argument counts + and glyph width operand before endchar/hmoveto/vmoveto. + +2000-11-26 Werner Lemberg + + * builds/ansi/ansi.mk: Fix inclusion order of files. + +2000-11-26 Keith Packard + + * src/type1/t1objs.c (T1_Init_Face): Compute style flags. + +2000-11-26 Werner Lemberg + + * builds/compiler/ansi-cc.mk (CLEAN_LIBRARY): Fix rule and + conditional. + +2000-11-23 Werner Lemberg + + * src/type1/t1load.c (parse_subrs, parse_charstrings): Use decrypt + function from PSAux module. + + * src/type1/t1parse.c (T1_Done_Parse): Renamed to... + (T1_Finalize_Parser): New function (to avoid name clash with a + function in the PSAux module). + (T1_Decrypt): Removed since it is duplicated in the PSAux module. + (T1_Get_Private_Dict): Added `psaux' as new parameter; use decrypt + function from PSAux module. + + * src/type1/t1parse.h: Adapted. + +2000-11-22 Tom Kacvinsky + + * src/cff/t2objs.c (T2_Init_Face): For pure CFF fonts, set + `root->num_faces' to `cff->num_faces' and set `units_per_EM' + to 1000. + + * src/cff/t2parse.c (parse_t2_real): Fixed real number parsing + loop. + + * src/cff/t2load.c (T2_Get_String): Called T2_Get_Name with a + sid that was off by one. + +2000-11-16 David Turner + + * src/autohint/ahtypes.h (AH_Hinter): Added new fields to control + auto-hinting of synthetic Type 1 fonts. + + * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): + Added auto-hinting support of synthetic Type 1 fonts. + +2000-11-12 Tom Kacvinsky + + * src/sfnt/ttload.c (TT_LookUp_Table, TT_Load_Generic_Table): Change + tracing output. + + * src/sfnt/sfobjs.c (SFNT_Load_Face): Set boolean variable + `has-outline' to true only if the font has a `glyf' or `CFF ' table. + +2000-11-11 Werner Lemberg + + * builds/win32/visualc/freetype.dsp: Fix raster1->raster and + type1z->type1. + +2000-11-11 Tom Kacvinsky + + * builds/unix/freetype-config.in, builds/cygwin/freetype-config.in: + Added a --libtool option. When freetype-config --libtool is + invoked, the absolute path to the libtool convenience library + is returned. + +2000-11-11 Werner Lemberg + + * builds/cygwin/cygwin-def.in: Same fix as previous. + +2000-11-10 Tom Kacvinsky + + * builds/unix/unix-def.in: Add + + INSTALL_PROGRAM := @INSTALL_PROGRAM@ + INSTALL_SCRIPT := @INSTALL_SCRIPT@ + + so that installation of freetype-config does not fail. + +2000-11-10 Werner Lemberg + + * builds/cygwin/freetype-config.in, builds/unix/freetype-config.in: + Move test down for empty --exec-prefix. + Fix --version. + + * builds/cygwin/install.mk, builds/unix/install.mk: Use + $(INSTALL_SCRIPT) for installation of freetype-config. + + * builds/cygwin/install.mk: Fix clean target names. + +2000-11-09 David Turner + + + * Version 2.0 released. + ======================= + +---------------------------------------------------------------------------- + +Copyright (C) 2000-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, modified, +and distributed under the terms of the FreeType project license, +LICENSE.TXT. By continuing to use, modify, or distribute this file you +indicate that you have read the license and understand and accept it +fully. + + +Local Variables: +version-control: never +coding: utf-8 +End: diff --git a/local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.21 b/local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.21 new file mode 100644 index 0000000000..f2c1877739 --- /dev/null +++ b/local/recipes/libs/freetype2/source/docs/oldlogs/ChangeLog.21 @@ -0,0 +1,9438 @@ +2005-06-08 Werner Lemberg + + + * Version 2.1.10 released. + ========================== + + + * src/pcf/readme: Renamed to... + * src/pcf/README: This. + +2005-06-07 Detlef Würkner + + * builds/amiga/*: Added copyright notes, reworked some comments. + +2005-06-05 Werner Lemberg + + * Add copyright notices to all files which don't have one. + + * docs/license.txt: Renamed to... + * docs/LICENSE.TXT: This. + * docs/FTL.txt: Renamed to... + * docs/FTL.TXT: This. + * docs/GPL.txt: Renamed to... + * docs/GPL.TXT: This. + + * docs/PATENTS: Slightly reworded. Suggested by Sylvain Beucler + . + +2005-06-04 Werner Lemberg + + * include/freetype/ftimage.h (FT_Outline_MoveToFunc, + FT_Outline_LineToFunc, FT_Outline_ConicToFunc, + FT_Outline_CubicToFunc, FT_Raster_RenderFunc), + include/freetype/ftrender.h (FT_Glyph_TransformFunc, + FT_Renderer_RenderFunc, FT_Renderer_TransformFunc): Don't use + `const' to stay compatible with FreeType 2.1.9. + +2005-06-01 Adam D. Moss + + * src/base/ftstroke.c (ft_stroker_inside): Revert `sigma' patch from + 2004-07-11; this gives much better results under normal + circumstances. + +2005-05-30 Chia I Wu + + * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Minor + documentation improvements. + + * include/freetype/ftoutln.h (FT_Outline_Embolden): Fix typos. + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Add support for bitmap + of pixel_mode FT_PIXEL_MODE_GRAY2 or FT_PIXEL_MODE_GRAY4. + If xstr is larger than 8 and bitmap is of pixel_mode + FT_PIXEL_MODE_MONO, set xstr to 8 instead of returning error. + +2005-05-29 Chia I Wu + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Fix emboldening bitmap + of mode FT_PIXEL_MODE_GRAY. Also add support for mode + FT_PIXEL_MODE_LCD and FT_PIXEL_MODE_LCD_V. + (ft_bitmap_assure_buffer): FT_PIXEL_MODE_LCD and FT_PIXEL_MODE_LCD_V + should have ppb (pixel per byte) 1. + Zero the padding when there's no need to allocate memory. + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Handle slot->advance + too. + More suited emboldening strength. + +2005-05-28 Chia I Wu + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Handle negative pitch. + Handle FT_PIXEL_MODE_GRAY with num_gray != 256. + Improve speed for FT_PIXEL_MODE_GRAY. + (ft_bitmap_assure_buffer): Accept FT_PIXEL_MODE_LCD and + FT_PIXEL_MODE_LCD_V. + +2005-05-27 Chia I Wu + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Initialize `error'. + + * src/base/ftobjs.c (ft_cmap_done_internal): New function. + (FT_CMap_Done): Remove cmap from cmap list. + (destroy_charmaps, FT_CMap_New): Don't call FT_CMap_Done but + ft_cmap_done_internal. + +2005-05-26 Werner Lemberg + + * docs/GPL.txt: Update postal address of FSF. + +2005-05-26 Chia I Wu + + * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Improve + documentation. + + * src/base/ftsynth.c (FT_BOLD_THRESHOLD): Removed. + (FT_GlyphSlot_Embolden): Check whether slot is bitmap owner. + Always modify the metrics. + +2005-05-24 Werner Lemberg + + * docs/CHANGES: Updated. + +2005-05-24 Chia I Wu + + * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): New declaration. + + * include/freetype/ftoutln.h (FT_Outline_Embolden): New declaration. + + * src/base/ftbitmap.c (ft_bitmap_assure_buffer): New auxiliary + function. + (FT_Bitmap_Embolden): New function. + + * src/base/ftoutln.c (FT_Outline_Embolden): New function. + + * src/base/ftsynth.c: Don't include FT_INTERNAL_CALC_H and + FT_TRIGONOMETRY_H but FT_BITMAP_H. + (FT_GlyphSlot_Embolden): Use FT_Outline_Embolden or + FT_Bitmap_Embolden. + +2005-05-24 Werner Lemberg + + * configure: Always remove config.mk, builds/unix/unix-def.mk, and + builds/unix/unix-cc.mk. This fixes repeated calls of the script. + Reported by Nelson Beebe and Behdad Esfahbod. + + * README.CVS: Mention file permissions. + +2005-05-23 Werner Lemberg + + * builds/amiga/makefile.os4 (WARNINGS), builds/compiler/gcc-dev.mk + (CFLAGS), builds/compiler/gcc.mk (CFLAGS): Remove + -fno-strict-aliasing. + + * src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttsbit0.c -- + it is currently loaded from ttsbit.c. + +2005-05-23 Behdad Esfahbod + + Say you have `(Foo*)x' and want to assign, pass, or return it as + `(Bar*)'. If you simply say `x' or `(Bar*)x', then the C compiler + would warn you that type casting incompatible pointer types breaks + strict-aliasing. The solution is to cast to `(void*)' instead which + is the generic pointer type, so the compiler knows that it should + make no strict-aliasing assumption on `x'. But the problem with + `(void*)x' is that seems like in C++, unlike C, `void*' is not a + generic pointer type and assigning `void*' to `Bar*' without a cast + causes an error. The solution is to cast to `Bar*' too, with + `(Bar*)(void*)x' as the result -- this is what the patch does. + + * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP), + include/freetype/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): Remove + cast on lvalue, use a temporary pointer instead. + Cast temporarily to (void*) to not break strict aliasing. + + * include/freetype/internal/ftmemory.h (FT_MEM_ALLOC, + FT_MEM_REALLOC, FT_MEM_QALLOC, FT_MEM_QREALLOC, FT_MEM_FREE), + src/base/ftglyph.c (FT_Glyph_To_Bitmap): Cast temporarily to (void*) + to not break strict aliasing. + + * src/base/ftinit.c (FT_USE_MODULE): Fix wrong type information. + + * builds/unix/configure.ac (XX_CFLAGS): Remove -fno-strict-aliasing. + +2005-05-23 David Turner + + Fix Savannah bug #12213 (incorrect behaviour of the cache sub-system + in low-memory conditions). + + * include/freetype/cache/ftccache.h (FTC_CACHE_TRYLOOP, + FTC_CACHE_TRYLOOP_END): New macros. + + * src/cache/ftccache.c (FTC_Cache_NewNode), src/cache/ftcsbits.c + (ftc_snode_compare): Use FT_CACHE_TRYLOOP and FTC_CACHE_TRYLOOP_END. + +2005-05-23 Werner Lemberg + + * src/base/rules.mk (BASE_SRC): Don't add ftsynth.c here but... + (BASE_EXT_SRC): Here. + +2005-05-22 Werner Lemberg + + * src/base/ftrfork.c (raccess_guess_apple_generic): Mark + `version_number' and `entry_length' as unused. + (raccess_guess_linux_double_from_file_name): Remove `memory'. + (raccess_make_file_name): Mark `error' as unused. + + * src/bdf/bdflib.c (_bdf_parse_properties): Remove `memory'. + + * src/cid/cidobjs.c (cid_face_init): Remove `psnames'. + + * src/sfnt/sfobjs.c (sfnt_load_face): Remove `memory'. + + * src/truetype/ttgxvar.c (ft_var_readpackedpoints, + ft_var_readpackeddeltas, ft_var_load_avar): Mark `error' as unused. + + * src/base/rules.mk (BASE_SRC): Add ftsynth.c. + +2005-05-21 David Turner + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Fix a bug that + produced unpleasant artefacts when trying to embolden very sharp + corners. + +2005-05-20 Werner Lemberg + + * docs/CHANGES: Updated. + +2005-05-20 Chia I Wu + + * src/base/ftbitmap.c: Don't include FT_FREETYPE_H and FT_IMAGE_H + but FT_BITMAP_H. + (FT_Bitmap_Copy): New function (from ftglyph.c). + + * include/freetype/ftbitmap.h (FT_Bitmap_Copy): New public + definition. + + * src/base/ftglyph.c: Include FT_BITMAP_H. + (ft_bitmap_copy): Move to ftbitmap.c. + (ft_bitmap_glyph_init): Remove `memory' variable. + Create new bitmap object if FT_GLYPH_OWN_BITMAP isn't set. + (ft_bitmap_glyph_copy): Use FT_Bitmap_Copy. + (ft_bitmap_glyph_done): Use FT_Bitmap_Done. + (ft_outline_glyph_init): Use FT_Outline_Copy. + + * src/base/ftoutln.c (FT_Outline_Copy): Handle source == target. + (FT_Outline_Done_Internal): Check for valid `memory' pointer. + (FT_Outline_Translate, FT_Outline_Reverse, FT_Outline_Render, + FT_Outline_Transform): Check for valid `outline' pointer. + + * src/base/ftobjs.c (FT_New_GlyphSlot): Prepend glyph slot to + face->glyph, otherwise a new second glyph slot cannot be created. + (FT_Done_GlyphSlot): Fix memory leak. + (FT_Open_Face): Updated -- face->glyph is already managed by + FT_New_GlyphSlot. + + * src/type42/t42objs.c (T42_GlyphSlot_Done): Updated. + +2005-05-20 Kirill Smelkov + + * include/freetype/ftimage.h (FT_Raster_Params), + include/freetype/ftoutln.h (FT_Outline_Translate, + FT_Outline_Transform), src/base/ftoutln.c (FT_Outline_Translate, + FT_Outline_Transform): Decorate parameters with `const' where + appropriate. + Update all callers. + + * src/raster/ftraster.c (ft_black_reset), src/smooth/ftgrays.c + (gray_raster_reset): Remove `const' from `pool_base' argument. + +2005-05-18 Kirill Smelkov + + * src/raster/ftmisc.h: New file. Only needed if ftraster.c is + compiled as stand-alone. + + * src/raster/ftraster.c: Add comment how to compile as stand-alone. + s/FT_CONFIG_OPTION_STATIC_RASTER/FT_STATIC_RASTER/. + s/TT_STATIC_RASTER/FT_STATIC_RASTER/. + [_STANDALONE_]: Include ftimage.h and ftmisc.h. + (FT_TRACE1, FT_TRACE6, ft_memset, FT_MEM_ZERO): Define + conditionally. + (Render_Glyph, Render_Gray_Glyph): Return Raster_Err_None (or + Raster_Err_Unsupported). + (ft_black_new) [_STANDALONE_]: Fix type of `the_raster'. + (ft_black_init, ft_black_reset, ft_black_set_mode, ft_black_render): + Use `ras', not `raster'. + (ft_black_done): Use FT_UNUSED_RASTER. + (Horizontal_Sweep_Init, Horizontal_Sweep_Step, + Horizontal_Gray_Sweep_Span): Use FT_UNUSED_RASTER. + +2005-05-18 Werner Lemberg + + * docs/announce: Start updating. + + * docs/CHANGES: Updated. + +2005-05-16 Vitaliy Pasternak + + * builds/win32/visualc/freetype.vcproj: Updated. + Exclude debug info for `Release' versions to reduce library size. + +2005-05-16 Werner Lemberg + + * src/base/ftobjs.c (FT_Open_Face): Make it work as documented, this + is, ignore `aface' completely if face_index < 0. Reported by David + Osborn . + +2005-05-16 Kirill Smelkov + + * include/freetype/ftimage.h (FT_Outline_MoveToFunc, + FT_Outline_LineTo_Func, FT_Outline_ConicToFunc, + FT_Outline_CubicToFunc), src/smooth/ftgrays.c (gray_render_conic, + gray_render_cubic, gray_move_to, gray_line_to, gray_conic_to, + gray_cubic_to, gray_render_span, gray_sweep): Decorate parameters + with `const' where appropriate. + +2005-05-11 Kirill Smelkov + + * include/freetype/ftimage.h (FT_Raster_RenderFunc), + include/freetype/ftrender.h (FT_Glyph_TransformFunc, + FT_Renderer_Render_Func, FT_Renderer_TransformFunc), + src/base/ftglyph.c (ft_outline_glyph_transform), + src/raster/ftrend1.c (ft_raster1_transform, ft_raster1_render), + src/smooth/ftgrays.c (FT_Outline_Decompose, gray_raster_render), + src/smooth/ftsmooth.c (ft_smooth_transform, + ft_smooth_render_generic, ft_smooth_render, ft_smooth_render_lcd, + ft_smooth_render_lcd_v): Decorate parameters with `const' where + appropriate. + + * src/raster/ftraster.c (RASTER_RENDER_POOL): Removed. Obsolete. + (ft_black_render): Decorate parameters with `const' where + appropriate. + +2005-05-11 Werner Lemberg + + * src/sfnt/ttcmap.c (tt_cmap4_set_range): Fix typo (FT_PEEK_SHORT -> + FT_PEEK_USHORT) which caused crashes. Reported by Ismail Donmez + . + +2005-05-08 Werner Lemberg + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE) + [__cplusplus]: Fix typo. + +2005-05-07 Werner Lemberg + + Handle unsorted SFNT type 4 cmaps correctly (reported by Dirck + Blaskey ). + + * src/sfnt/ttcmap.h (TT_CMap): Add member `unsorted'. + * src/sfnt/ttcmap.c: Use SFNT_Err_Ok where appropriate. + + (tt_cmap0_validate, tt_cmap2_validate, tt_cmap6_validate, + tt_cmap8_validate, tt_cmap10_validate, tt_cmap12_validate): Use + `FT_Error' as return type. + (tt_cmap4_validate): Use `FT_Error' as return type. + Return error code for unsorted cmap. + (tt_cmap4_char_index, tt_cmap4_char_next): Use old code for unsorted + cmaps. + (tt_face_build_cmaps): Set `unsorted' variable in cmap. + +2005-05-07 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_get_location): Fix typo. + +2005-05-06 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Set ppem value in top + dictionary for SFNT-based CFF. + +2005-05-05 Werner Lemberg + + Handle malformed `loca' table entries. + + * docs/TODO: Add some bugs which should be fixed. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Add `glyf_len' + element. + + * src/truetype/ttpload.c (tt_face_load_loca): Get length of `glyf' + table. + (tt_face_get_location): Fix computation of `asize' for malformed + `loca' entries. + +2005-05-01 David Turner + + * Jamfile: Remove `otvalid' from the list of compiled modules. + + * include/freetype/internal/ftserv.h: Add compiler pragmas to get + rid of annoying warnings with Visual C++ compiler in maximum warning + mode. + + * src/autofit/afhints.c, src/autofit/aflatin.c, src/base/ftstroke.c, + src/bdf/bdfdrivr.c, src/cache/ftcbasic.c, src/cache/ftccmap.c, + src/cache/ftcmanag.c, src/cff/cffload.c, src/cid/cidload.c, + src/lzw/zopen.c, src/otvalid/otvgdef.c, src/pcf/pcfread.c, + src/sfnt/sfobjs.c, src/truetype/ttgxvar.c: Remove compiler warnings. + +2005-04-28 Werner Lemberg + + * docs/TODO: Updated. + +2005-04-24 Werner Lemberg + + * src/otvalid/otvcommn.c + (otv_GSUBGPOS_have_MarkAttachmentType_flag): Handle table == 0. + +2005-04-16 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Set default upem value in top + font dict also. + Handle font matrix settings in subfonts. + + * src/cff/cffgload.c (cff_slot_load): Use the correct font matrix + for CID-keyed fonts with subfonts. + + * docs/formats.txt: Updated. + +2005-04-14 Kirill Smelkov + + * include/freetype/freetype.h (FT_Vector_Transform), + include/freetype/ftimage.h (FT_Raster_Params), + include/freetype/ftoutln.h, src/base/ftoutln.c (FT_Outline_Get_CBox, + FT_Outline_Copy, FT_Outline_Transform, FT_Vector_Transform, + FT_Outline_Get_Bitmap), src/raster/ftraster.c (ft_black_render), + src/smooth/ftgrays.c (gray_raster_render): Decorate parameters with + `const' where appropriate. + +2005-04-14 Werner Lemberg + + * src/type1/t1load.c (parse_charstrings): Catch this non-standard + beginning of the /CharStrings dictionary: + + /CharStrings 118 dict def + Private begin + CharStrings begin + + * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Fix arguments + to call of tt_sbit_decoder_load_bitmap. + +2005-04-13 Werner Lemberg + + * docs/TODO: Updated. + + * autogen.sh: Use `--force' for all commands. + +2005-04-09 Werner Lemberg + + * src/pshinter/pshalgo.c (ps_hints_apply): Change scaling values + only if `fitted' is not zero. + +2005-04-06 Werner Lemberg + + * src/truetype/ttgload.c (tt_face_get_metrics) [FT_OPTIMIZE_MEMORY]: + Fix typo which sometimes causes wrong metrics for the last glyph. + +2005-04-04 David Turner + + * devel/ftoption.h, include/freetype/config/ftoption.h + (FT_OPTIMIZE_MEMORY): Comment out this macro for the upcoming 2.1.10 + release. + (*_CHESTER_*): Removed. No longer used. + + * src/autofit/afhints.c (af_axis_hints_new_segment, + af_axis_hints_new_edge): Small tweak to use less heap memory. + +2005-04-03 Werner Lemberg + + * src/type1/t1parse.c (T1_New_Parser): Relax the check for a valid + first line in the font. + +2005-04-03 Werner Lemberg + + * docs/CHANGES, include/freetype/freetype.h: Improve documentation + of FT_Set_Pixel_Sizes and FT_Set_Char_Size. + +2005-03-26 Detlef Würkner + + * builds/amiga/src/base/ftsystem.c (ft_amiga_stream_io): Fix buffer + offsets after a large read. + +2005-03-26 Werner Lemberg + + * src/autofit/afglobal.c (af_face_globals_get_metrics): + s/index/gidx/. + + * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Fix compiler + warnings. + + * src/sfnt/rules.mk (SFNT_DRV_SRC): Add ttsbit0.c. + + * src/sfnt/ttsbit0.h: Dummy file for build with `make'. + +2005-03-26 Detlef Würkner + + Update of the Amiga port. + + * builds/amiga/makefile, builds/amiga/makefile.os4, + builds/amiga/smakefile: Included the base extension files + (ftbitmap.c, ftotval.c, ftpfr.c, ftstroke.c, ftxf86.c). + +2005-03-25 Detlef Würkner + + Update of the Amiga port. + + * builds/amiga/makefile, builds/amiga/smakefile: Handle new modules. + + * builds/amiga/makefile.os4: Makefile for AmigaOS4 SDK. + + * builds/amiga/README: Updated. + + * builds/amiga/include/freetype/config/ftconfig.h: Handle gcc for + AmigaOS4. + + * builds/amiga/include/freetype/config/ftmodule.h: Handle new + modules. + + * builds/amiga/src/base/ftdebug.c: Updated to current version of + default ftdebug.c. + Add various include files and macros to have proper support for + both AmigaOS4 and older AmigaOS versions. + Don't declare KVPrintF explicitly. + Replace getenv with GetVar. + Actually enable debugging code. + + * builds/amiga/src/base/ftsystem.c: Major rewrite. + +2005-03-23 Werner Lemberg + + * tests/*: Removed. + +2005-03-23 Werner Lemberg + + * docs/CHANGES, docs/INSTALL.ANY: Updated. + + * include/freetype/ftmoderr.h: Replace `Autohint' with `Autofit'. + Add `OTvalid'. + + * src/autofit/aferrors.h: New file. + + * src/autofit/afglobal.c, src/autofit/afhints.c, + src/autofit/aflatin.c, src/autofit/afloader.c: s/FT_Err_/AF_Err_/. + Include aferrors.h. + + * src/autofit/rules.mk (AUTOF_DRV_H): Include aferrors.h. + + * src/otvalid/otverror.h: s/FT_Mod_Err_OTV/FT_Mod_Err_OTvalid/. + +2005-03-22 David Turner + + * src/autohint/*: Removed. + * Jamfile: Updated. + +2005-03-15 David Turner + + * src/bdf/bdflib.c: Remove compiler warnings. + (hash_rehash, hash_init): Don't call FT_MEM_ZERO. + (_bdf_list_t): Add `memory' field. + (_bdf_list_init, _bdf_list_done, _bdf_list_ensure): New functions. + (_bdf_shift, _bdf_join): Rename to... + (_bdf_list_shift, _bdf_list_join): This. + (_bdf_split): Renamed to... + (_bdf_list_split): This. Use new functions. + (bdf_internal_readstream): Removed. + (NO_SKIP): New macro. + (_bdf_readstream): Rewritten. + (bdf_create_property, _bdf_add_comment): Improve allocation. + (_bdf_set_default_spacing, _bdf_parse_glyphs): Updated. Improve + allocation. + (_bdf_parse_properties, _bdf_parse_start): Updated. + (bdf_load_font): Updated to use new functions. + + * src/type1/t1parse.c (check_type1_format): New function. + (T1_New_Parser): Use it to check font header before allocating + anything on the heap. + + * src/type42/t42parse.c (t42_parser_init): Modify functions to check + the font header before allocating anything on the heap. + + * include/freetype/internal/ftmemory.h (FT_ARRAY_MAX, + FT_ARRAY_CHECK): New macros. + + * src/base/ftstream.c (FT_Stream_TryRead): New function. + * include/freetype/internal/ftstream.h: Updated. + + * src/pcf/pcfread.c (pcf_read_TOC), src/pcf/pcfutil.c + (BitOrderInvert, TwoByteSwap, FourByteSwap): Minor fixes and + simplifications. Try to protect the PCF driver from doing stupid + things with broken fonts. + + * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Check the LZW header before + doing anything else. This avoids unnecessary heap allocations + (400KByte of heap memory for the LZW decoder). + + * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Ditto for the gzip + decoder, although the code savings are smaller. + + * docs/CHANGES: Updated. + +2005-03-10 David Turner + + * src/tools/glnames.py: Add comment to explain the compression + being used for the Adobe Glyph List. + +2005-03-10 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_load_cvt, tt_face_load_fpgm): + Fix serious typo which prevented correct TT rendering. + + * include/freetype/internal/ftmemory.h: Undo change from 2005-03-03. + To suppress warnings it is sufficient to use `-fno-strict-aliasing'. + +2005-03-10 Werner Lemberg + + * src/tools/glnames.py: Formatted. + Format output to be in sync with other FreeType code. + Import `re' and `os.path'. + (StringTable) <__init__>: Add parameter to initialize master table + name. + (StringTable) : Don't pass master table name. + (StringTable) : Emit explanatory comment. + Simplify and make output more human readable. + (t1_bias, glyph_list, adobe_glyph_names): Removed. Unused. + (main): Use `basename' for file name in header. + + * src/psnames/pstables.h: Regenerated. + +2005-03-09 David Turner + + * src/tools/glnames.py: Rewrite the generator for the `pstables.h' + header file which contains various constant tables related to glyph + names. It now uses a different, more compact storage scheme that + saves about 20KB. This also closes Savannah bug #12262. + + * src/psnames/pstables.h: Regenerated. + + * src/psnames/psmodule.c (ps_unicode_value): Use + `ft_get_adobe_glyph_index', a new function defined in `pstables.h'. + (ps_get_macintosh_name, ps_get_standard_strings): Updated. + + * src/base/ftobjs.c (FT_Set_Char_Size): Handle fractional sizes + more carefully. This fixes Savannah bug #12263. + +2005-03-06 David Turner + + * src/otvalid/otvgsub.c, src/otvalid/otvgpos.c: Make static tables + constant. + + * src/autofit/aflatin.c (af_latin_metrics_init): Fix Savannah bug + #12212 (auto-hinter refuses to work if no Unicode charmap in font). + +2005-03-05 Werner Lemberg + + * autogen.sh: New script for bootstrapping. + + * README.CVS: New file which documents bootstrapping. + + * builds/unix/aclocal.m4, builds/unix/config.guess, + builds/unix/config.sub, builds/unix/configure, + builds/unix/ltmain.sh: Removed. + +2005-03-04 Werner Lemberg + + * src/base/ftutil.c: Include FT_INTERNAL_OBJECTS_H. + +2005-03-03 Werner Lemberg + + Various fixes for C and C++ compiling. + + * src/autofit/*: Add copyright messages. + + * src/autofit/afhints.c (af_glyph_hints_done): Don't use + `AF_Dimension' but `int' for loop counter. + + * src/autofit/aflatin.c (af_latin_metrics_init_widths): Don't use + `AF_Dimension' but `int' for loop counter. + Use proper enumeration value for `render_mode'. + (af_latin_metrics_scale_dim): Don't shadow variables. + (af_latin_hints_compute_segments): Use proper cast for `major_dir' + and `segment_dir'. + (af_latin_align_linked_edge, af_latin_hint_edges): Fix arguments of call to + `af_latin_compute_stem_width'. + (af_latin_hints_apply): Don't use `AF_Dimension' but `int' for loop + counter. + + * src/base/ftdbgmem.c (ft_mem_table_get_source, FT_DumpMemory): Use + proper cast for memory allocation. + + * src/cff/cffdrivr.c (cff_get_kerning): Use proper cast for + initialization of `sfnt'. + + * src/sfnt/sfdriver.c: Include `ttkern.h'. + + * src/sfnt/ttkern.c (tt_face_get_kerning): Don't shadow variables. + + * src/truetype/ttgload.c: Include `ttpload.h'. + +2005-03-03 David Turner + + * include/freetype/internal/ftmemory.h (FT_ALLOC, FT_REALLOC, + FT_QALLOC, FT_QREALLOC) [gcc >= 3.3]: Provide macro versions which + avoid compiler warnings. + (FT_NEW, FT_NEW_ARRAY, FT_RENEW_ARRAY, FT_QNEW, FT_QNEW_ARRAY, + FT_QRENEW_ARRAY, FT_ALLOC_ARRAY, FT_REALLOC_ARRAY): Updated. + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, + FT_FACE_FIND_GLOBAL_SERVICE, FT_FACE_LOOKUP_SERVICE) [__cplusplus]: + Provide macro versions which avoid compiler warnings. + + * src/base/ftutil.c (ft_highpow2): New utility function. + + * include/freetype/internal/ftobjs.h: Updated. + + * src/pfr/pfrload.c (pfr_get_gindex, pfr_compare_kern_pairs, + pfr_sort_kerning_pairs): Don't define if FT_OPTIMIZE_MEMORY is set. + (pfr_phy_font_done): Don't handle `kern_pairs' if FT_OPTIMIZE_MEMORY + is set. + (pfr_phy_font_load): Don't call `pfr_sort_kerning_pairs' if + FT_OPTIMIZE_MEMORY is set. + + * src/pfr/pfrobjs.c (pfr_slot_load): Comment out some code which + doesn't work with broken fonts. + (pfr_face_get_kerning) [FT_OPTIMIZE_MEMORY]: Implement. + + * src/pfr/pfrtypes.h (PFR_KernItemRec): Optimize member types. + (PFR_NEXT_KPAIR): New macro. + (PFR_PhyFontRec): Don't define `kern_pairs' if FT_OPTIMIZE_MEMORY is + set. + + * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Introduce + temporary variable to avoid gcc warning. + (tt_face_load_sbit_image): Mark unused variables with FT_UNUSED. + + * src/truetype/ttpload.c (tt_face_load_loca) [FT_OPTIMIZE_MEMORY]: + Remove redundant variable. + + * include/freetype/config/ftmodule.h: Moving the order of drivers to + speed up font loading. The PCF and BDF loaders are still slow and + consume far too much memory. + +2005-03-03 Werner Lemberg + + * devel/ftoption.h: Updated to recent changes. + +2005-03-02 Werner Lemberg + + * src/autofit/afdummy.c, src/autofit/afdummy.h + (af_dummy_script_class): Fix type. + + * src/autofit/aflatin.c, src/autofit/aflatin.h + (af_latin_script_class): Fix type. + + * src/autofit/rules.mk (AUTOF_DRV_SRC): Fix typo. + +2005-03-01 David Turner + + * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning), + src/sfnt/ttsbit0.c (tt_face_load_sbit_strikes, + tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_compound, + tt_sbit_decoder_load_image), src/sfnt/ttload.c + (tt_face_load_metrics): Remove compiler warnings + -- redundant variables, missing initializations, etc. + + * src/sfnt/ttsbit.h: Handle FT_OPTIMIZE_MEMORY. + + * src/autofit/rules.mk, src/autofit/module.mk, + src/autofit/afangles.h: New files. + + * src/autofit/afhints.c (af_axis_hints_new_segment, + af_axis_hints_new_edge): New functions. + (af_glyph_hints_done): Do proper deallocation. + (af_glyph_hints_reload): Only reallocate points array. This + drastically reduces heap usage. + + * src/autofit/afhints.h (AF_PointRec, AF_SegmentRec): Optimize + member types and positions. + (AF_AxisHintsRec): Add `max_segments' and `max_edges'. + (af_axis_hints_new_segment, af_axis_hints_new_edge): New prototypes. + + * src/autofit/aflatin.c (af_latin_metrics_scale): Don't call + AF_SCALER_EQUAL_SCALES. + (af_latin_hints_compute_segments): Change return type to FT_Error. + Update all callers. + Improve segment allocation. + (af_latin_hints_compute_edges): Change return type to FT_Error. + Update all callers. + Improve edge allocation and link handling. + (af_latin_hints_detect_features): Change return type to FT_Error. + Update all callers. + + * src/autofit/aflatin.h: Updated. + + * src/autofit/afloader.c (af_loader_load_g) + : Assure axis->num_edges > 1. This fixes + a bug with certain fonts. + + * include/freetype/config/ftmodule.h: The auto-fitter is now the + only supported auto-hinting module. + + * include/freetype/config/ftstdlib.h (FT_INT_MAX): New macro. + +2005-02-28 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_load_loca): Fix typo. + + * src/sfnt/ttkern.c: Include `ttkern.h'. + (FT_COMPONENT): Updated. + + * include/freetype/internal/fttrace.h: Add entry for `ttkern'. + + * src/sfnt/ttsbit0.c: s/FT_Err_/SFNT_Err_/. + Decorate constants with `U' and `L' where necessary. + + * src/sfnt/ttcmap.c (tt_cmap4_next): Remove unused variable. + +2005-02-28 David Turner + + * src/base/ftdbgmem.c (FT_DumpMemory): Added sorting of memory + sources according to decreasing maximum cumulative allocations. + (ft_mem_source_compare): New auxiliary function. + + * src/sfnt/ttsbit0.c: New file, implementing a heap-optimized + embedded bitmap loader. + + * src/sfnt/ttsbit.c: Include `ft2build.h', FT_INTERNAL_DEBUG_H, + FT_INTERNAL_STREAM_H, FT_TRUETYPE_TAGS_H. + Load `ttsbit0.c' if FT_OPTIMIZE_MEMORY is set, otherwise use + file contents. + (tt_face_load_sbit_strikes): Set up root fields to indicate the + strikes. This fixes Savannah bug #12107. + Use `static' keyword for `sbit_line_metrics_field', + `strike_start_fields', `strike_end_fields'. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Define + `sbit_table', `sbit_table_size', `sbit_num_strikes' if + FT_OPTIMIZE_MEMORY is set. + Don't define `num_sbit_strikes' and `sbit_strikes' if + FT_OPTIMIZE_MEMORY is set. + + * src/cff/cffobjs.c (sbit_size_reset): Handle FT_OPTIMIZE_MEMORY. + + * src/sfnt/sfobjs.c (sfnt_load_face): Fixed bug that prevented + loading SFNT fonts without a `kern' table. + Properly pass root->face_flags. + Remove code for TT_CONFIG_OPTION_EMBEDDED_BITMAPS. + + * src/sfnt/sfdriver.c (sfnt_interface) + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Don't use `tt_find_sbit_image' + and `tt_load_sbit_metrics'. + + * src/sfnt/ttcmap.c: Optimize linear charmap scanning for Format 4. + (OPT_CMAP4): New macro. + (TT_CMap4Rec) [OPT_CMAP4]: New structure. + (tt_cmap4_init, tt_cmap4_set_range, tt_cmap4_next, tt_cmap4_reset) + [OPT_CMAP4]: New functions. + (tt_cmap4_char_next) [OPT_CMAP4]: Use `tt_cmap4_next' and + `tt_cmap4_reset'. + (tt_cmap4_class_rec) [OPT_CMAP4]: Use `TT_CMap4Rec' and + `tt_cmap4_init'. + + * src/truetype/ttobjs.c (Reset_SBit_Size): Handle + FT_OPTIMIZE_MEMORY. + + * src/autofit/afhints.h (AF_PointRec, AF_SegmentRec, AF_EdgeRec): + Optimize member types. + + * src/autofit/afloader.c (af_loader_done): Call + `af_glyph_hints_done'. + +2005-02-27 David Turner + + * src/sfnt/ttkern.c (tt_face_load_kern): Fix a small bug which + caused invalid (random) return values for the horizontal kerning. + +2005-02-25 David Turner + + Implement several memory optimizations to drastically reduce the + heap usage of FreeType, especially in the case of memory-mapped + files. The idea is to avoid loading and decoding tables in the + heap, and instead access the raw data whenever possible (i.e., when + it doesn't compromise performance). + + This has several benefits: For example, opening vera.ttf now uses + just a small amount of memory (even when the FT_Library footprint is + accounted for), until you start loading glyphs. Even then, you save + at least 20KB compared to the non-optimized case. Performance of + various operations, including open and close, has also been + dramatically improved. + + More optimizations to come, especially for the auto-hinter. + + * include/freetype/internal/sfnt.h (TT_Face_GetKerningFunc): New + function type. + (SFNT_Interface): Add it. + + * include/freetype/internal/tttypes.h (TT_HdmxEntryRec, TT_HdmxRec, + TT_Kern0_PairRec): Don't define if FT_OPTIMIZE_MEMORY is set. + (TT_FaceRec): Define `horz_metrics', `horz_metrics_size', + `vert_metrics', `vert_metrics_size', `hdmx_table', + `hdmx_table_size', `hdmx_record_count', `hdmx_record_size', + `hdmx_record_sizes', `kern_table', `kern_table_size, + `num_kern_tables', `kern_avail_bits', `kern_order_bits' if + FT_OPTIMIZE_MEMORY is set. + Don't define `hdmx', `num_kern_pairs', `kern_table_index', + `kern_pairs' if FT_OPTIMIZE_MEMORY is set. + + * src/base/ftdbgmem.c (ft_mem_table_set): Don't shadow variable. + Fix compiler warning. + + * src/cff/cffdrivr.c (Get_Kerning): Renamed to... + (cff_get_kerning): This. Simplify. + (cff_driver_class): Updated. + + * src/sfnt/Jamfile (_sources): Add `ttkern'. + * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttkern.c'. + + * src/sfnt/sfdriver.c (sfnt_interface): Add `tt_face_get_kerning'. + + * src/sfnt/sfnt.c: Include `ttkern.c'. + + * src/sfnt/sfobjs.c: Include `ttkern.h'. + (sfnt_load_face): Consider the `kern' and `gasp' table as optional. + (sfnt_done_face): Call `tt_face_done_kern'. + Handle horizontal metrics for FT_OPTIMIZE_MEMORY. + + * src/sfnt/ttkern.c, src/sfnt/ttkern.h: New files. Code has been + taken from `ttload.c' and `ttload.h'. + Provide special versions of `tt_face_load_kern', + `tt_face_get_kerning', and `tt_face_done_kern' for + FT_OPTIMIZE_MEMORY. + + * src/sfnt/ttload.c (tt_face_load_metrics, tt_face_load_hdmx, + tt_face_free_hdmx): Provide version for FT_OPTIMIZE_MEMORY. + (tt_face_load_kern, tt_kern_pair_compare, TT_KERN_INDEX): Moved to + `ttkern.c'. + + * src/sfnt/ttload.h: Updated. + + * src/sfnt/ttsbit.c (sbit_metrics_field): Add `static' keyword. + + * src/truetype/ttdriver.c (Get_Kerning): Renamed to... + (tt_get_kerning): This. Simplify. + (tt_driver_class): Updated. + + * src/truetype/ttgload.c (TT_Get_Metrics): Renamed to... + (tt_face_get_metrics): This. Provide version for FT_OPTIMIZE_MEMORY. + Update all callers. + (Get_Advance_Widths): Replaced with... + (Get_Advance_WidthPtr): This. Provide version for + FT_OPTIMIZE_MEMORY. + Update all callers. + + * src/truetype/ttgload.h: Updated. + +2005-02-22 David Turner + + * src/base/ftdbgmem.c: Partly rewritten. Added the ability to list + all allocation sites in the memory debugger. Also a new function + FT_DumpMemory() was added. It is only available in builds with + FT_DEBUG_MEMORY defined, and you must declare it in your own code to + use it, i.e., with something like: + + extern void FT_DumpMemory( FT_Memory ); + + ... + + FT_DumpMemory( memory ); + + * include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Comment out definition -- + again. + (FT_OPTIMIZE_MEMORY): New configuration macro to control various + optimizations for reducing the heap footprint of memory-mapped + TrueType files. + + * include/freetype/internal/ftmemory.h (FT_ARRAY_ZERO): New + convenience macro. + + * include/freetype/internal/tttypes.h (TT_FaceRec) + [FT_OPTIMIZE_MEMORY]: Use optimized types for `num_locations' and + `glyph_locations'. + + * src/truetype/ttgload.c (load_truetype_glyph): Call + `tt_face_get_location'. + + * src/truetype/ttobjs.c (tt_face_init) + [FT_CONFIG_OPTION_INCREMENTAL]: Improve error handling. + (tt_face_done): Call `tt_face_done_loca'. + + * src/truetype/ttpload.c (tt_face_get_location, tt_face_done_loca): + New functions. If FT_OPTIMIZE_MEMORY is set, the locations table is + read directly from memory-mapped streams, instead of being decoded + into the heap. + (tt_face_load_loca) [FT_OPTIMIZE_MEMORY]: New implementation. + (tt_face_load_cvt, tt_face_load_fpgm): Only load table if the + bytecode interpreter is compiled in. + + * src/truetype/ttpload.h: Updated. + + * src/autohint/ahglyph.c (ah_outline_load): Improve allocation + logic. + +2005-02-20 Werner Lemberg + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.14. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.9.4. + + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + + * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from + `texinfo' CVS module at subversions.gnu.org. + +2005-02-14 Werner Lemberg + + * src/cff/cffcmap.c (cff_cmap_unicode_init): Don't try to build + a cmap for a CID-keyed font which doesn't have SIDs. + +2005-02-13 Werner Lemberg + + * src/type1/t1load.c (read_binary_data): Return more meaningful + value. + (parse_encoding, parse_subrs, parse_charstrings, parse_dict): Check + parser error value after call to T1_Skip_PS_Token (where necessary). + + * src/type1/t1parse.c (T1_Get_Private_Dict): Check parser error + value after call to T1_Skip_PS_Token. + + * src/cid/cidparse.c (cid_parser_new): Check parser error value + after call to cid_parser_skip_PS_token. + + * src/type42/t42parse.c (t42_parse_encoding, t42_parse_sfnts, + t42_parse_charstrings, t42_parse_dict): Check parser error value + after call to T1_Skip_PS_Token (where necessary). + + * src/psaux/psobjs.c (skip_string, ps_parser_skip_PS_token, + ps_tobytes): Add error messages. + +2005-02-12 Werner Lemberg + + * configure: Output more variables to the created Makefile so that + it can be used for ft2demos also (if the FT2DEMOS variable is + defined). + +2005-02-10 David Turner + + * src/pfr/pfrgload.c (pfr_glyph_load): Fix an unbounded growing + dynamic array when loading a glyph from a PFR font (Savannah bug + #11921). + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Small improvements to the + conversion function (mainly stupid optimization). + + * src/base/Jamfile: Adding ftbitmap.c to the list of compiled files. + +2005-02-10 Werner Lemberg + + * builds/unix/freetype-config.in: Add new flag `--ftversion' to + return the FreeType version. Suggested by George Williams + . + + * docs/CHANGES: Updated. + +2005-02-09 Werner Lemberg + + * src/otvalid/otvmod.c (otv_validate): Deallocate arrays in case + of error. Reported by YAMANO-UCHI Hidetoshi . + +2005-02-08 Werner Lemberg + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) + : Accept `T1_Parse_Have_Moveto' state also which can + happen in empty glyphs. Reported by Ian Brown + (Savannah bug #11856). + +2005-02-04 Werner Lemberg + + * src/otlayout/*: Removed. Obsolete. + +2004-12-28 Werner Lemberg + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.10. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.9.4. + * builds/unix/configure: Regenerated with autoconf 2.59b. + + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + + * builds/unix/install-sh: Updated from + `texinfo' CVS module at subversions.gnu.org. + + * builds/unix/ftsystem.c (FT_Stream_Open): Add proper cast for + ft_alloc. + Fix compiler warning. + +2004-12-27 Dirck Blaskey + + * src/cff/cffobjs.c (cff_face_init): Improve computation of + FT_STYLE_BOLD_FLAG. + +2004-12-27 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): A CFF within an SFNT can have + only a single font. This is undocumented but has been verified on + the opentype list. + +2004-12-26 Werner Lemberg + + * Jamfile (FT2_COMPONENTS): Add `otvalid'. + +2004-12-25 Werner Lemberg + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Fix compiler warning. + +2004-12-15 Werner Lemberg + + * vms_make.com: Add ftbitmap.obj. + +2004-12-14 Werner Lemberg + + * src/base/ftbitmap.c, include/freetype/ftbitmap.h: New files for + handling various bitmap formats. + + * include/freetype/config/ftheader.h (FT_BITMAP_H): New macro. + + * src/base/rules.mk (BASE_EXT_SRC): Add ftbitmap.c. + + * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Don't convert bitmaps to 8bpp + but return them as-is. + + * docs/CHANGES: Mention new bitmap API. + * include/freetype/ftchapters.h: Updated. + +2004-12-11 Robert Clark + + * src/base/ftobjs.c (FT_Get_Kerning): Make kerning amount + dependent on ppem by scaling down for ppem < 25, then do normal + rounding. This gives slightly better results than rounding towards + zero. + +2004-12-09 Werner Lemberg + + * src/base/ftobjs.c (FT_Get_Kerning): Always round towards zero + for FT_KERNING_DEFAULT. This greatly enhances the kerning for + small ppem values. + +2004-12-08 Werner Lemberg + + * src/base/ftobjs.c (ft_glyphslot_clear): Reset `lsb_delta' and + `rsb_delta'. + +2004-12-05 Werner Lemberg + + * builds/unix/install.mk (install): Use $(OBJ_BUILD) for ftconfig.h. + +2004-12-03 Antoine Leca + + * include/freetype/ttnameid.h: Updated to latest + specifications from Microsoft. + +2004-11-26 Jouk Jansen + + * vms_make.com: Include ftbbox.c. + Fix `ccopt'. + Handle `otvalid' module. + Update `vmslib.dat' default values. + Fixes to `libs.opt'. + +2004-11-23 Anders Kaseorg + + * src/base/ftoutln.c (FT_OrientationExtremumRec, + ft_orientation_extremum_compute): Removed. + (FT_Outline_Get_Orientation): Rewritten, simplified. + + * src/autohint/ahglyph.c: Include FT_OUTLINE_H. + (ah_test_extremum, ah_get_orientation): Removed. + (ah_outline_load): Use FT_Outline_Get_Orientation. + + * src/base/ftsynth.c (ft_test_extrema, ft_get_orientation): Removed. + (FT_GlyphSlot_Embolden): Use FT_Outline_Get_Orientation. + +2004-11-23 Fernando Papa + + * src/truetype/ttinterp.h: Fix typo. + +2004-11-22 Antoine Leca + + * builds/win32/detect.mk: Corrected logic that detects Windows NT to + use the previous change even if win32 is forced. Corrected + detection of win32 on Win9X. + + * builds/dos/detect.mk: Added same correction as for win32 about + COPY on Windows NT. Detection of plain DOS 7.x. + +2004-11-22 Werner Lemberg + + * builds/detect.mk: Undo change from 2004-11-20. + * builds/win32/detect.mk: If the `OS' environment variable contains + `Windows_NT', use `cmd.exe /c copy' for copying files. + +2004-11-20 Werner Lemberg + + * builds/detect.mk (dos_setup): Use `cmd.exe' for copying + $(CONFIG_MK) to force lowercase file name under Windows. + +2004-11-19 Werner Lemberg + + Fix a serious bug in the TT hinter. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Don't shift + points vertically before hinting. + + * docs/CHANGES: Updated. + + * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily, + FTC_GCache_Lookup): A new try to fix comparison with zero. + +2004-11-16 Werner Lemberg + + * builds/unix/configure.ac: Add `-fno-strict-aliasing' if gcc is + used. + * builds/unix/configure: Regenerated. + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + +2004-11-16 Dr. Martin P.J. Zinser + + * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily, + FTC_GCache_Lookup): Fix comparison with zero. + + * docs/INSTALL.VMS: Updated. + + * vms_make.com: Updated. All `descrip.mms' files are now created + automatically. + + * src/*/descrip.mms: Removed. + +2004-11-16 Owen Taylor + + * builds/unix/freetype-config.in: Suppress -L$libdir for + /usr/lib64 as well as /usr/lib. (Reported by Dan Winship - + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=139199) + +2004-11-11 Werner Lemberg + + * src/cff/cffdrivr.c (cff_service_ps_info): Updated. + * src/cid/cidriver.c (cid_service_ps_info): Updated. + * src/type42/t42drivr.c (t42_ps_get_font_private): New function. + (t42_service_ps_info): Updated. + + * src/type42/t42parse.c (t42_parse_dict): Remove compiler warning. + +2004-11-11 David Bevan + + Add new function FT_Get_PS_Font_Private(). + + * include/freetype/internal/services/svpsinfo.h + (PS_GetFontPrivateFunc): New service function. + + * include/freetype/t1tables.h, src/base/fttype1.c + (FT_Get_PS_Font_Private): New function. + + * src/type1/t1driver.c (t1_ps_get_font_private): New function. + (t1_service_ps_info): Updated. + +2004-10-13 Werner Lemberg + + * include/freetype/config/ftstdlib.h: Include `stddef.h'. + (ft_ptrdiff_t): Define. + + * include/freetype/fttypes.h (FT_PtrDist): Use `ft_ptrdiff_t'. + + * src/cid/cidload.c (cid_parse_dict), src/type1/t1load.c + (parse_dict): Fix compiler warning. + +2004-10-11 Joshua Neal + + * src/sfnt/ttcmap.c (tt_face_build_cmaps): Check for pointer + overflow. + + * src/sfnt/ttload.c (tt_face_load_hdmx): Protect against bad input. + Don't use FT_QNEW_ARRAY but FT_NEW_ARRAY to make deallocation work + in case of failure. + + * src/sfnt/ttsbit.c (Load_SBit_Range): Check range intervals. + (tt_face_load_sbit_strikes): Allocate `strike_sbit_ranges' after + frame test. + + * src/truetype/ttgload.c (TTLoad_Simple_Glyph): Add assertion for + `flag'. + +2004-10-09 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-10-09 Boris Letocha + + Fix handling of NPUSHW if skipped in data stream. + + * src/truetype/ttinterp.c (opcode_length): Set value for NPUSHW + to -2. + (SkipCode, TT_RunIns): Use opcode_length value for computation of + bytes to be skipped. + +2004-09-10 Jouk Jansen + + * vms_make.com: Updated. + +2004-09-09 Werner Lemberg + + Adding OpenType validation module. The code is based on the + (unfinished) `otlayout' module but has been heavily modified to make + it much more compact. + + * src/otvalid/*: New module. + + * include/freetype/ftotval.h, src/base/ftotval.c, + include/freetype/internal/services/svotval.h: New files. + + * include/freetype/config/ftmodule.h: Add otv_module_class. + * include/freetype/config/ftheader.h (FT_OPENTYPE_VALIDATE_H): New + macro. + * include/freetype/internal/ftserv.h + (FT_SERVICE_OPENTYPE_VALIDATE_H): New macro. + * include/freetype/internal/fttrace.h (otvmodule, otvcommon, + otvbase, otvgdef, otvgpos, otvgsub, otvjstf): New trace components. + + * include/freetype/ftchapters.h: Updated. + + * src/base/Jamfile (Library), src/base/descrip.mms (OBJS), + src/base/rules.mk (BASE_EXT_SRC): Updated. + + * docs/CHANGES: Updated. + +2004-09-08 Werner Lemberg + + * src/tools/docmaker/sources.py (re_source_block_format2) : + Use lookahead assertion to not match `*/'. This removes spurious + insertions of `/' in the HTML output. + +2004-09-07 Werner Lemberg + + * src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Fix call to + FT_NEW_ARRAY. + +2004-09-04 Werner Lemberg + + * include/freetype/internal/ftobjs.h: Don't include + FT_CONFIG_STANDARD_LIBRARY_H. + (FT_Validator, FT_ValidationLevel, FT_ValidatorRec, FT_VALIDATOR, + ft_validator_init, ft_validator_run, ft_validator_error, FT_INVALID, + FT_INVALID_TOO_SHORT, FT_INVALID_OFFSET, FT_INVALID_FORMAT, + FT_INVALID_GLYPH_ID, FT_INVALID_DATA): Move to... + + * include/freetype/internal/ftvalid.h: New file. + Make FT_INVALID return module-specific error codes. + + * include/freetype/internal/internal.h (FT_INTERNAL_VALIDATE_H): New + macro. + + * include/freetype/fterrors.h: Undefine FT_ERR_PREFIX only if + FT_KEEP_ERR_PREFIX isn't defined. + + * src/base/ftobjs.c: Include FT_INTERNAL_VALIDATE_H. + + * src/sfnt/ttcmap.h: Don't include FT_INTERNAL_OBJECTS_H but + FT_INTERNAL_VALIDATE_H. + + * src/sfnt/ttcmap.c: Don't include FT_INTERNAL_OBJECTS_H but + FT_INTERNAL_VALIDATE_H. + Include sferrors.h before FT_INTERNAL_VALIDATE_H. + s/FT_Err_Ok/SFNT_Err_Ok/. + + * src/sfnt/sferrors.h: Define FT_KEEP_ERR_PREFIX. + + * src/type1/t1afm.c: Include t1errors.h. + +2004-09-03 Werner Lemberg + + * src/base/ftdebug.c (ft_debug_init): Highest debug level is 7, + not 6. + * docs/DEBUG: Updated. + +2004-08-30 Werner Lemberg + + * include/freetype/tttags.h (TTAG_BASE, TTAG_GDEF, TTAG_GPOS, + TTAG_JSTF): New tags. + + * include/freetype/fttypes.h (FT_Bytes, FT_Tag): New typedefs. + (FT_Int): Add `signed'. + +2004-08-29 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_gpos_subtable_validate): Add argument + to pass number of lookups. + Update all callers. + Don't call otl_lookup_list_validate but otl_lookup_validate. + (otl_gpos_validate): Call otl_lookup_list_validate instead of + otl_gpos_subtable_validate. + + * src/otlayout/otlgpos.h: Updated. + + * src/otlayout/otljstf.c (otl_jstf_max_validate): Add argument to + pass number of lookups. + Update all callers. + + + * src/cff/cffparse.c (cff_parse_real): s/exp/exponent/ to avoid + compiler warning. + + + * src/sfnt/ttcmap0.c, src/sfnt/ttcmap0.h: Renamed to... + * src/sfnt/ttcmap.c, src/sfnt/ttcmap.h: This. + * src/sfnt/Jamfile, src/sfnt/rules.mk, src/sfnt/sfdriver.c, + src/sfnt/sfnt.c, src/sfnt/sfobjs.c: Updated. + + + * builds/compiler/gcc-dev.mk (CFLAGS): Don't add `-Wnested-externs' + if compiler is g++ (v3.3.3 emits a warning otherwise). + +2004-08-28 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_value_length): Return number of bytes, + not number of 16bit entities. + (otl_gpos_lookup2_validate): Check class definition tables for + format 2. + Fix loop for format 2. + (otl_liga_mark2_validate): Fix offset for otl_anchor_validate. + +2004-08-27 Werner Lemberg + + * src/base/ftmac.c: Don't include truetype/ttobjs.h. + Don't include type1/t1objs.h. + (FT_New_Face_From_FSSpec) [!__MWERKS__]: Remove compiler warnings. + +2004-08-27 Mathieu Malaterre + + * src/base/ftmac.c: Handle OS_INLINE for xlc compiler also. + +2004-08-27 Werner Lemberg + + * src/otlayout/otlayout.h: Add copyright. + (OTL_INVALID_OFFSET): Removed. + + * src/otlayout/otlgdef.h: Include otlayout.h. + Comment out inclusion of otltable.h. + + * src/otlayout/otlgpos.c (otl_gpos_lookup4_validate): Fix call + to otl_base_array_validate. + (otl_liga_mark2_validate): Fix `for' loop. + + * src/otlayout/otlgsub.c (otl_ligature_validate): Check `glyph_id', + not components array. + + * src/otlcommn.c (otl_lookup_get_count, otl_feature_get_count): + Comment out. + (otl_lookup_list_get_count, otl_feature_list_get_count): Activate. + (otl_feature_list_validate, otl_gsubgpos_get_lookup_count): + s/otl_lookup_get_count/otl_lookup_list_get_count/. + (otl_script_list_validate): + s/otl_feature_get_count/otl_feature_list_get_count/. + (otl_script_validate): Call otl_lang_validate for default language. + + * src/otlayout/otlcommn.h: Updated. + +2004-08-16 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_gpos_lookup1_validate, + otl_gpos_lookup2_validate, otl_gpos_lookup3_validate, + otl_gpos_lookup4_validate, otl_gpos_lookup5_validate, + otl_gpos_lookup6_validate, otl_gpos_lookup9_validate, + otl_gpos_validate): Update + function arguments. + (otl_gpos_lookup7_validate, otl_gpos_lookup8_validate): Update + function arguments. + Handle NULL offsets correctly. + Check sequence and lookup indices for format 3. + (otl_pos_rule_validate, otl_chain_pos_rule_validate): Add argument + to pass lookup count. + Check sequence and glyph indices. + (otl_gpos_subtable_validate): Update function arguments. + Update callers. + + * src/otlayout/otlgpos.h: Updated. + + * src/otlayout/otlgsub.c (otl_gsub_lookup1_validate, + otl_gsub_lookup3_validate, otl_gsub_lookup8_validate): Update + function arguments. + Add glyph index checks. + (otl_sequence_validate, otl_alternate_set_validate, + otl_ligature_validate): Add argument to pass glyph count. + Update callers. + Add glyph index check. + (otl_gsub_lookup2_validate, otl_gsub_lookup4_validate): Update + function arguments. + (otl_ligature_set_validate): Add argument to pass glyph count. + Update caller. + (otl_sub_class_rule_validate, + otl_sub_class_rule_set_validate): Removed. + (otl_sub_rule_validate, otl_chain_sub_rule_validate): Add argument + to pass lookup count. + Update callers. + Add lookup index check. + (otl_sub_rule_set_validate, otl_chain_sub_rule_set_validate): Add + argument to pass lookup count. + Update callers. + (otl_gsub_lookup5_validate): Update function arguments. + Handle NULL offsets correctly. + Don't call otl_sub_class_rule_set_validate but + otl_sub_rule_set_validate. + Check sequence and lookup indices for format 3. + (otl_gsub_lookup6_validate): Update function arguments. + Handle NULL offsets correctly. + Check sequence and lookup indices for format 3. + (otl_gsub_lookup7_validate, otl_gsub_validate): Update function + arguments. + + * src/otlayout/otlgsub.h: Updated. + + * src/otlayout/otlbase.c (otl_base_validate): Handle NULL offsets + correctly. + + * src/otlayout/otlcommn.c (otl_class_definition_validate): Fix + compiler warning. + (otl_coverage_get_first, otl_coverage_get_last): New functions. + (otl_lookup_validate): Add arguments to pass lookup and glyph + counts. + Update callers. + (otl_lookup_list_validate): Add argument to pass glyph count. + Update callers. + + * src/otlayout/otlcommn.h: Updated. + + * src/otlayout/otljstf.c (otl_jstf_extender_validate, + otl_jstf_max_validate, otl_jstf_script_validate, + otl_jstf_priority_validate, otl_jstf_lang_validate): Add parameter + to validate glyph indices. + Update callers. + (otl_jstf_validate): Add parameter which specifies number of glyphs + in font. + + * src/otlayout/otljstf.h: Updated. + +2004-08-15 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_liga_mark2_validate): Add parameter + to handle possible NULL values properly. + Update all callers. + +2004-08-15 Werner Lemberg + + * src/otlayout/gpos.c: Rename counting variables to be more + meaningful. + Add copyright. + (otl_liga_attach_validate): Renamed to... + (otl_liga_mark2_validate): This. + Update all callers. + (otl_mark2_array_validate): Removed. + (otl_gpos_lookup6_validate): Call otl_liga_mark2_validate, not + otl_mark2_array_validate. + (otl_pos_class_set_validate, otl_pos_class_rule_validate): Removed. + (otl_gpos_lookup7_validate): Complete code for format 2. + (otl_chain_pos_class_rule_validate, + otl_chain_pos_class_set_validate): Removed. + (otl_gpos_lookup8_validate): Don't call + otl_chain_pos_class_set_validate but + otl_chain_pos_rule_set_validate. + Simplify some code. + + * src/otlayout/otlgpos.h: Add copyright. + +2004-08-14 Werner Lemberg + + * src/otlayout/otljstf.c (otl_jstf_gsub_mods_validate): Removed. + (otl_jstf_gpos_mods_validate): Renamed to... + (otl_jstf_gsubgpos_mods_validate): This. + Test whether lookup_count is zero. + (otl_jstf_priority_validate): Use otl_jstf_gsubgpos_mods_validate. + (otl_jstf_validate): Initialize gsub_lookup_count and + gpos_lookup_count if gsub or gpos is zero. + + * src/otlayout/otlgsub.c: Rename counting variables to be more + meaningful. + Add copyright. + (otl_gsub_lookup1_validate): Simplify code. + (otl_gsub_lookup2_validate, otl_gsub_lookup3_validate, + otl_gsub_lookup4_validate, otl_gsub_lookup7_validate): Remove unused + variables. + (otl_gsub_lookup5_validate): Remove unused variable. + Fix call to otl_sub_rule_set_validate and + otl_sub_class_rule_set_validate. + (otl_chain_sub_class_rule_validate, + otl_chain_sub_class_set_validate): Removed. + (otl_gsub_lookup6_validate): Remove unused variable. + Fix call to otl_chain_sub_rule_set_validate. + (otl_gsub_lookup7_validate): Handle lookup type 8 also. + (otl_gsub_lookup8_validate: New function. + (otl_gsub_lookup1_apply, otl_gsub_lookup2_apply, + otl_gsub_lookup3_apply): Commented out. + (otl_gsub_validate_funcs): Add otl_gsub_lookup7_validate and + otl_gsub_lookup8_validate. + (otl_gsub_validate): Updated. + + * src/otlayout/otlgsub.h: Add copyright. + + * src/otlayout/otlcommn.c, src/otlayout/otlcommn.h + (otl_coverage_get_index): Comment out. + +2004-08-13 Werner Lemberg + + * src/otlayout/otlcommn.c (otl_gsubgpos_get_lookup_count): New + function. + * src/otlayout/otlcommn.h: Updated. + + * src/otlayout/otlbase.c: Rename counting variables to be more + meaningful. + Add copyright message. + * src/otlayout/otlbase.h: Add copyright message. + + * src/otlayout/otlgdef.c: Rename counting variables to be more + meaningful. + Add copyright message. + Use OTL_CHECK everywhere. + (otl_caret_value_validate): Remove unused variable. + (otl_gdef_validate): All tables are optional. + * src/otlayout/otlgdef.h: Add copyright message. + + * src/otlayout/otljstf.c: Rename counting variables to be more + meaningful. + Add copyright message. + (otl_jstf_gsub_mods_validate, otl_jstf_gpos_mods_validate): Add + parameter to pass lookup count. + Update all callers. + Check lookup array. + (otl_jstf_max_validate): + s/otl_gpos_subtable_check/otl_gpos_subtable_validate/. + (otl_jstf_priority_validate, otl_jstf_lang_validate, + otl_jstf_script_validate): Add two parameters to pass lookup counts. + Update all callers. + (otl_jstf_validate): Add two parameters to pass GPOS and GSUB + table offsets; use otl_gsubgpos_get_lookup_count to convert extract + lookup counts. + Fix typo. + * src/otlayout/otljstf.h: Updated. + Add copyright message. + + * src/otlayout/otlgpos.c (otl_gpos_subtable_validate): New function. + (otl_gpos_validate): Use it. + * src/otlayout/otlgpos.h: Updated. + +2004-08-13 Werner Lemberg + + * src/otlayout/otcommn.c: Use OTL_CHECK everywhere. + (otl_coverage_validate): Initialize `p', + s/count/num_glyphs/. + s/start_cover/start_coverage/. + (otl_coverage_get_index): Return OTL_Long, not OTL_Int. + Remove unused variables. + (otl_class_definition_validate): s/count/num_glyphs/. + Remove unused variables. + (otl_class_definition_get_value, otl_device_table_get_start, + otl_device_table_get_end, otl_device_table_get_delta, + otl_lookup_get_table, otl_lookup_list_get_count, + otl_lookup_list_get_lookup, otl_lookup_list_get_table, + otl_feature_get_lookups, otl_feature_list_get_count, + otl_feature_list_get_feature, otl_lang_get_count, + otl_lang_get_req_feature, otl_lang_get_features): Commented out + temporarily until we really need it. + (otl_lookup_validate): Removed. + (otl_lookup_table_validate): Renamed to ... + (otl_lookup_validate): This. Update callers. + (otl_lookup_list_validate): Remove already commented out definition + and move the other definition up. + (otl_feature_validate): Add parameter to pass number of lookups. + Update callers. + Check lookup indices. + (otl_feature_list_validate): Add parameter to pass lookup table. + Update callers. + (otl_lang_validate): Add parameter to pass number of features. + Update callers. + Handle req_feature and check feature indices. + (otl_script_validate): Add parameter to pass number of features. + Update callers. + (otl_script_list_validate): Add parameter to pass feature table. + Update callers. + + * src/otlayout/otcommn.h: s/LOCALDEF/LOCAL/. + Comment out the same functions as in otcommn.c. + (otl_script_list_get_script): Removed. + + * src/otlayout/otlgsub.c (otl_gsub_lookup1_apply): Change `index' to + type OTL_Long. + (otl_gsub_lookup2_apply, otl_gsub_lookup3_apply): Change `index' to + type OTL_Long. + Fix test. + (otl_gsub_validate): Fix order of validation. + + * src/otlayout/otlgpos.c (otl_gpos_validate): Fix order of + validation. + +2004-08-12 Werner Lemberg + + Make otlayout module compile (without actually working). + + * src/otlayout/*: s/OTL_Valid/OTL_Validator/. + s/NULL/0/. + + * src/otlayout/otlayout.h: Fix various typos. + (OTL_Bool): New typedef. + (OTL_Int, OTL_Long, OTL_Int16, OTL_Int32): Use `signed' keyword. + (OTL_Err_InvalidArgument): Removed. + (OTL_Err_InvalidData, OTL_Err_InvalidSize): New enum values. + (OTL_MAKE_TAG): Add missing parenthesis. + (OTL_INVALID_DATA): Use OTL_Err_InvalidData. + (OTL_INVALID_TOO_SHORT): Use OTL_Err_InvalidSize. + (OTL_INVALID_FORMAT, OTL_INVALID_OFFSET): New macros. + + * src/otlayout/otlgpos.c: s/FT_/OTL_/. + s/OTL_Short/OTL_Int16/. + (otl_gpos_pairset_validate): Add return type. + (otl_base_array_validate): Fix call to otl_anchor_validate. + (otl_liga_array_validate): Fix call to otl_liga_attach_validate. + (otl_gpos_lookup5_validate): Fix typos. + (otl_gpos_lookup6_validate): Fix call to otl_mark2_array_validate. + (otl_gpos_lookup7_validate): Comment out unfinished code. + Fix typos. + + * src/otlayout/otlgsub.c: Add forward declaration for + otl_gsub_validate_funcs. + (otl_gsub_lookup1_apply, otl_gsub_lookup2_apply, + otl_gsub_lookup3_apply): Fix call to otl_parser_check_property. + s/otl_coverage_lookup/otl_coverage_get_index/. + (otl_ligature_validate): Add missing variable declaration. + (otl_sub_rule_validate): Fix typo. + (otl_sub_class_rule_validate): Add missing variable declaration. + Fix typo. + (otl_gsub_lookup5_validate): Fix typo. + (otl_gsub_lookup6_validate): Fix call to + otl_chain_sub_class_set_validate. + (otl_gsub_validate_funcs): Don't use `const'. + + * src/otlayout/otlcommn.c (otl_class_definition_get_value, + otl_device_table_validate, otl_device_table_get_delta, + otl_lookup_validate, otl_script_validate): Add missing + variable declarations. + (otl_lookup_list_validate): Comment out first definition. + (otl_lookup_list_foreach, otl_feature_list_foreach): Comment out. + (otl_feature_list_validate): + s/otl_feature_table_validate/otl_feature_validate/. + (otl_script_list_validate): + s/otl_script_table_validate/otl_script_validate/. + + * src/otlayout/otlcommn.h: Comment out first declaration. + (otl_lookup_list_foreach, otl_feature_list_foreach): Comment out. + + * src/otlayout/otlbase.c (otl_base_coord_validate): Fix call to + otl_device_table_validate. + (otl_base_script_validate): Add missing variable declarations. + (otl_base_script_list_validate): Fix call to + otl_base_script_validate. + (otl_axis_table_validate): Fix calls to otl_base_tag_list_validate + and otl_base_script_list_validate. + (otl_base_validate): Fix calls to otl_axis_table_validate. + + * src/otlayout/otlgdef.c (otl_attach_list_validate): Fix call to + otl_attach_point_validate. + (otl_caret_value_validate): Add missing variable declaration. + Fix call to otl_device_table_validate. + (otl_ligature_glyph_validate): Fix call to otl_caret_value_validate. + (otl_ligature_caret_list_validate): Fix call to + otl_ligature_glyph_validate. + (otl_gdef_validate): Fix calls to otl_class_definition_validate, + otl_attach_list_validate, otl_ligature_caret_list_validate, and + otl_class_definition_validate. + + * src/otlayout/otltable.h (otl_table_validate, otl_table_init, + otl_table_set_script): Comment out. + + * src/otlayout/otlparse.h (OTL_ParserRec): + s/OTL_Alternate/OTL_GSUB_Alternate/. + (OTL_ParseError): Add OTL_Err_Parser_Memory and + OTL_Err_Parser_Internal. + (otl_parser_error): Fix typo. + (otl_parser_check_property): Remove third argument. + + * src/otlayout/otlparse.c (otl_string_ensure): + s/OTL_Parse_Err_Memory/OTL_Err_Parser_Memory/. + (OTL_STRING_ENSURE, otl_parser_error, otl_parser_get_index, + otl_parser_replace_1, otl_parser_replace_n): Fix typos. + (OTL_PARSER_UNCOVERED): Removed. + (otl_parser_check_property): Remove third argument. + + * src/otlayout/otljstf.c (otl_jstf_priority_validate): Add missing + variable declaration. + + * src/otlayout/otlutils.h (OTL_MEM_REALLOC): Fix typo. + +2004-08-11 Danny + + * src/base/ftstream.c (FT_Stream_Close): Don't reset stream->close + to NULL. This allows custom close functions to delete the FT_STREAM + object. + +2004-08-11 Werner Lemberg + + Add API to get information about SFNT tables. + + * include/freetype/internal/services/svsfnt.h + (FT_SFNT_Table_Info_Func): New typedef. + (SFNT_Table): Add it. + + * src/base/ftobjs (FT_Sfnt_Table_Info): New function. + + * include/freetype/tttables.h: Updated. + + * src/sfnt/sfdriver.c (sfnt_table_info): New function. + (sfnt_service_sfnt_table): Add it. + + * docs/CHANGES: Updated. + + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10. + + * builds/unix/configure.ac (version_info): Set to 9:8:3. + * builds/unix/configure: Updated. + + * builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj: s/219/2110/, s/2.1.9/2.1.10/. + + * builds/freetype.mk (refdoc), README, Jamfile (RefDoc): + s/2.1.9/2.1.10/. + + * docs/CHANGES, docs/VERSION.DLL: Updated. + +2004-08-11 Detlef Würkner + + * src/base/ftrfork.c (FT_Raccess_Guess) + [!FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK]: Remove compiler + warnings. + +2004-08-06 Adam Piotrowski + + * src/pfr/pfrload.c (pfr_sort_kerning_pairs): Single-byte + adjustments are unsigned, not signed. + +2004-08-05 David Turner + + `Activate' gray-scale specifying hinting within the TrueType + bytecode interpreter. This is an experimental feature which + should probably be made optional. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph, + load_truetype_glyph): Move the code to set the pedantic_hinting flag + to... + (TT_Load_Glyph): Here. + Set `grayscale' flag except for `FT_LOAD_TARGET_MONO'. + + * src/truetype/ttinterp.c (Ins_GETINFO): Return MS rasterizer + version 1.7. + Return rotation and stretching info only if glyph is rotated or + stretched, respectively. + Handle grayscale info. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Add `grayscale' + member. + +2004-08-02 George Williams + + * src/base/ftobjs.c (FT_Attach_File): Initialize `open.stream'. + +2004-08-01 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-08-01 George Williams + + FreeType now can read kerning values from PFM files. + + * src/type1/t1afm.c (T1_Done_AFM): Renamed to... + (T1_Done_Metrics): This. + Update all callers. + (T1_Read_AFM): Make it static. + Don't enter and leave a frame. + (LITTLE_ENDIAN_USHORT, LITTLE_ENDIAN_UINT): New macros. + (T1_Read_PFM): New function. + (T1_Read_Metrics): New higher-level function to be used instead of + T1_Read_AFM. + Update all callers. + +2004-07-31 Werner Lemberg + + * src/pcf/pcfread (pcf_load_font), src/bdf/bdfdrivr.c + (BDF_Face_Init), src/truetype/ttgxvar (TT_Get_MM_Var, + tt_face_vary_cvt): Fix compiler warnings. + +2004-07-26 Søren Sandmann + + * src/pcf/pcfread.c (pcf_interpret_style): Always allocate memory for + face->style_name. + * src/pcf/pcfdrivr.c (PCF_Face_Done): Free `style_name'. + +2004-07-26 Darren J Longhorn + + * include/freetype/config/ftconfig.h (FT_SIZEOF_LONG): Recognize + five-byte `long' (which is avoided then). + +2004-07-25 Detlef Würkner + + * src/pcf/pcfdrivr.c (PCF_Set_Pixel_Size): Compare heights, not + ppem values. + (PCF_Set_Point_Size): Don't call PCF_Set_Pixel_Size but provide own + code to compare ppem values. + * src/bdf/bdfdrivr.c (BDF_Set_Pixel_Size): Compare heights, not + ppem values. + (BDF_Set_Point_Size): Don't call BDF_Set_Pixel_Size but provide own + code to compare ppem values. + +2004-07-25 Kornfeld Eliyahu Peter + + * src/sfnt/sfobjs.c (sfnt_load_face): Handle + TT_NAME_ID_PREFERRED_FAMILY and TT_NAME_ID_PREFERRED_SUBFAMILY. + +2004-07-24 Derek B. Noonburg + + * src/cff/cffload.c (cff_font_load): Always create inverse mapping. + Even if the charstring count is the same as the CID count, it is + still possible that the font uses a different CID -> GID mapping. + +2004-07-23 Werner Lemberg + + * src/truetype/ttobjs.c (tt_face_init): Accept 0x00020000 format tag + found in some Arphic fonts made for Chinese version of Windows 3.1. + +2004-07-17 David Turner + + Fixed a dangling pointer bug in the cache code that happened in very + rare cases, i.e., when a new family object was destroyed by an + out-of-memory condition during a glyph node initialization. The + function FTC_Cache_Lookup would flush the cache and restart the + lookup with a bad pointer. + + * include/freetype/cache/ftcglyph.h (FTC_FAMILY_TREE): New macro. + (FTC_GCACHE_LOOKUP_CMP): Use it. + Handle reference count in `num_nodes' correctly. + + * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily): Use + FTC_FAMILY_FREE. + (FTC_GCache_Lookup): Handle reference count in `num_nodes' correctly. + + * src/cache/ftcmanag.c (FTC_Manager_FlushN): Fixed a cache flushing + bug. + + * src/truetype/ttinterp.c (Normalize): Fixed a bug that caused + long and unnecessary delays while normalizing huge vectors. + +2004-07-15 Werner Lemberg + + * docs/CHANGES: Updated. + + * src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix compiler + warning. + +2004-07-15 David Turner + + * src/base/ftstroke.c (FT_Stroker_ParseOutline): Single points + are not stroked, preventing a bug with pala.ttf and other + fonts. + + * include/freetype/ftstroke.h: Updating documentation comments. + +2004-07-13 Werner Lemberg + + * src/base/ftstroke.c (ft_stroke_border_reverse): Removed. Unused. + +2004-07-12 David Turner + + * src/base/ftstroke.c (ft_stroke_border_close): Add second parameter + to indicate reversion of points. + Update all callers. + (ft_stroke_border_reverse): Fix initialization of `point1' and + `tag1'. + + * src/cache/ftcsbits.c (ftc_snode_load): Fixing advance computation + for transformed glyphs. + +2004-07-11 David Turner + + Fix bugs that prevented the stroker to correctly generate stroked + paths from closed paths, i.e., nearly all glyphs in vectorial fonts. + + The code is still _very_ buggy though; treat with special care. + + * src/base/ftstroke.c (FT_STROKE_TAG_BEGIN_END): New macro. + (ft_stroke_border_reverse): New function. + (ft_stroker_inside): Remove local variable `sigma'; use different + threshold. + (ft_stroker_add_reverse_left): Switch begin/end tags if necessary. + (FT_Stroker_EndSubPath): Call ft_stroker_inside and + ft_stroke_border_reverse. + +2004-06-26 Peter Kovar + + * src/truetype/ttgload.c (load_truetype_glyph): Fix typo. + +2004-06-25 Werner Lemberg + + * src/type1/t1afm.c (afm_atoindex): Fix boundary test. Reported + by Dirck Blaskey. + +2004-06-24 David Turner + + + * Version 2.1.9 released. + ========================= + + + * src/truetype/ttgload.c, src/truetype/ttxgvar.c: Removing + compiler warnings. + +2004-06-23 Werner Lemberg + + * include/freetype/internal/ftmemory.h [FT_DEBUG_MEMORY]: Declare + FT_QAlloc_Debug and FT_QRealloc_Debug. + + * src/base/ftutil.c (FT_QAlloc): Fix error and debug messages. + (FT_QRealloc): Call FT_QAlloc if original pointer is NULL. + Fix error message. + +2004-06-23 David Turner + + * include/freetype/internal/ftmemory.h, src/base/ftutil.c + (FT_QAlloc, FT_QRealloc), src/base/ftdbgmem.c (FT_QAlloc_Debug, + FT_QRealloc_Debug): New functions that perform allocation without + zero-ing out the corresponding blocks. + + * include/freetype/internal/ftmemory.h (FT_MEM_QALLOC, + FT_MEM_QREALLOC, FT_MEM_QNEW, FT_MEM_QNEW_ARRAY, + FT_MEM_QRENEW_ARRAY, FT_QALLOC, FT_QREALLOC, FT_QNEW, FT_QNEW_ARRAY, + FT_QRENEW_ARRAY): New macros. + + * src/base/ftstream.c (FT_Stream_EnterFrame): Use FT_QALLOC. + * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use FT_QNEW_ARRAY. + * src/sfnt/sfobjs.c (tt_face_get_name): Use FT_QNEW_ARRAY. + + * src/sfnt/ttload.c (tt_face_load_directory, tt_face_load_metrics, + tt_face_load_gasp): Use FT_QNEW_ARRAY. + (tt_face_load_kern): Use FT_QNEW_ARRAY. + Small optimization in the kerning table verifier; this speeds up + TrueType face opening by about 7%. + (tt_face_load_hdmx): Use FT_QNEW_ARRAY and FT_QALLOC. + + * include/freetype/config/ftmodule.h: Changed the order of modules, + putting TrueType and Type 1 first. This dramatically improves the + performance of face open/close operations. For example, putting the + TrueType driver first in the list results in a 5x speedup when + opening `Vera.ttf'. + + The very problem is that both the PCF and BDF drivers do a lot more + than necessary to detect that they cannot handle a font file. + +2004-06-22 Werner Lemberg + + * src/pcf/pcfread.c (pcf_read_TOC, pcf_get_properties, + pcf_get_metrics, pcf_get_bitmaps, pcf_get_encodings): Improve + debugging messages. + + * src/pcf/pcfdrivr.c (FT_COMPONENT): Move up. + (PCF_Face_Init): Simplify code. + + * src/bdf/bdfdrivr.h (BDF_FaceRec): New element `default_glyph'. + + * src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_start), + src/bdf/bdf.h (bdf_font_t): s/default_glyph/default_char/. + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Fix number of glyphs. + Set `default_glyph'. + (BDF_Glyph_Load): Use `default_glyph' for undefined glyph. + + * docs/CHANGES: Updated. + +2004-06-21 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-06-21 David Turner + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph, + load_truetype_glyph): Don't access (unrounded) + `TT_Size.root.metrics' but (rounded) `TT_Size.metrics'. This fixes + a scaling bug that caused incorrect rendering when the bytecode + interpreter was enabled. + +2004-06-14 Huw D M Davies + + * src/winfonts/winfnt.c (FNT_Face_Init): Set x_ppem and y_ppem + based on pixel_width and pixel_height. + (FNT_Size_Set_Pixels): Updated. + +2004-06-14 Werner Lemberg + + * src/lzw/zopen.c: Comment out inclusion of signal.h and unistd.h. + Reported by Hyvärinen Jyrki Juhani. + +2004-06-11 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-06-10 David Turner + + * src/base/ftobject.c, src/base/fthash.c, src/base/ftexcept.c, + src/base/ftsysio.c, src/base/ftsysmem.c, src/base/ftlist.c: Removed. + Obsolete. + + * src/raster/ftraster.c (Alignment, PAlignment): New union to fix + problems with 64bit systems. + (AlignProfileSize): Use it. + +2004-06-08 David Turner + + * include/freetype/freetype.h (FT_Glyph_Metrics): Move `lsb_delta' + and `rsb_delta' elements to... + (FT_GlyphSlotRec): Here to retain binary compatibility with older + FreeType versions. + Update all users. + + * src/sfnt/sfobjs.c (tt_face_get_name): Remove compiler warning. + + * src/winfonts/winfnt.c (FNT_Load_Glyph): Add missing initialization + of slot->metrics.width and slot->metrics.height when loading a + Windows FNT glyph. Thanks to Huw Davies. + + * include/freetype/cache/ftcmru.h (FTC_MruNode_CompareFunc): Change + return type to FT_Bool. + + * src/cache/ftcbasic.c (ftc_basic_family_compare): Change return + type to FT_Bool. + + * src/cache/ftccache.c (FTC_Cache_Init, ftc_cache_init): Make + the former call the latter, not vice versa. + (FTC_Cache_Done, ftc_cache_done): Ditto. + + * src/cache/ftcglyph.c (FTC_GNode_Compare, ftc_gnode_compare): Make + the former call the latter, not vice versa. + (FTC_GCache_Init, ftc_gcache_init): Ditto. + (FTC_GCache_Done, ftc_gcache_done): Ditto. + + * src/cache/ftcimage.c (FTC_INode_Free, ftc_inode_free): Make the + former call the latter, not vice versa. + (FTC_INode_Weight, ftc_inode_weight): Ditto. + + * src/cache/ftcmanag.c (ftc_size_node_compare, + ftc_size_node_compare_faceid, ftc_face_node_compare): Change return + type to FT_Bool. + + * src/cache/ftcsbits.c (FTC_SNode_Free, ftc_snode_free): Make the + former call the latter, not vice versa. + (FTC_SNode_Weight, ftc_snode_weight): Ditto. + (FTC_SNode_Compare, ftc_snode_compare): Ditto. + + * src/cache/ftcsbits.c: Fix some bugs and inefficiencies in the cache + sub-system. + +2004-06-05 Werner Lemberg + + * src/autofit/afloader.c (af_loader_load_g): Set `lsb_delta' and + `rsb_delta' in slot->metrics and tune side bearings slightly. + +2004-06-04 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-06-04 David Chester + + Improve inter-letter spacing for autohinted glyphs. + + * include/freetype/freetype.h (FT_Glyph_Metrics): Add elements + `lsb_delta' and `rsb_delta'. + + * src/autohint/ahhint.c (ah_hinter_load): Set `lsb_delta' and + `rsb_delta' in slot->metrics and tune side bearings slightly. + +2004-06-04 David Turner + + * src/autofit/*: Important fixes to the auto-fitter. The output + now seems to be 100% equivalent to the auto-hinter, while being + about 2% faster (which proves that script-specific algorithm + selection isn't a performance problem). + + To test it, change `autohint' to `autofit' in + and recompile. + + A few more testing is needed before making this the official + auto-hinting module. + +2004-06-02 Werner Lemberg + + * src/truetype/ttgload.c (compute_glyph_metrics): Fix compiler + warnings. + +2004-06-01 Werner Lemberg + + * src/sfnt/sfobjs.c (tt_face_get_name): Make sure that an English + name record for the Apple platform is preferred to a non-English + entry for the Microsoft platform. Problem reported by HANDA + Ken'ichi. + +2004-05-19 George Williams + + * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): New + auxiliary functions. + (T1_Get_MM_Var): Provide axis tags. + Use mm_axis_unmap and mm_weights_unmap to provide default values + for design and normalized axis coordinates. + + * include/freetype/t1tables.h (PS_DesignMapRec): Change type of + `design_points' to FT_Long. + Update all users. + +2004-05-17 Werner Lemberg + + * src/base/ftbbox.c (BBox_Conic_Check): Fix boundary cases. + Reported by Mikey Anbary . + +2004-05-15 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_done_face): Free face->postscript_name. + +2004-05-15 George Williams + + * src/sfnt/ttload.c (tt_face_load_max_profile): Always set + face->root.num_glyphs. + +2004-05-14 Masatake YAMATO + George Williams + + * src/sfnt/ttload.c (sfnt_dir_check): Handle `bhed' properly. + +2004-05-14 Werner Lemberg + + * src/cache/ftcbasic.c (ftc_basic_family_compare, + ftc_basic_family_init, ftc_basic_family_get_count, + ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph, + ftc_basic_gnode_compare_faceid): Adjust parameters and return types + to prototypes given in header files from include/freetype/cache. + Use casts to proper types locally. + (ftc_basic_image_family_class, ftc_basic_image_cache_class, + ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class): Remove + casts. + + * src/cache/ftccback.h: Adjust parameters and return types to + prototypes given in header files from include/freetype/cache. + + * src/cache/ftcimage.c (ftc_inode_free, ftc_inode_new, + ftc_inode_weight): Adjust parameters and return types to prototypes + given in header files from include/freetype/cache. Use casts to + proper types locally. + + * src/cache/ftcsbits.c (ftc_snode_free, ftc_snode_new, + ftc_snode_weight, ftc_snode_compare): Adjust parameters and return + types to prototypes given in header files from + include/freetype/cache. Use casts to proper types locally. + + * src/cache/ftccmap.c (ftc_cmap_node_free, ftc_cmap_node_new, + ftc_cmap_node_weight, ftc_cmap_node_compare, + ftc_cmap_node_remove_faceid): Adjust parameters and return types to + prototypes given in header files from include/freetype/cache. Use + casts to proper types locally. + (ftc_cmap_cache_class): Remove casts. + + * src/cache/ftcglyph.c (ftc_gnode_compare, ftc_gcache_init, + ftc_gcache_done): Adjust parameters and return types to prototypes + given in header files from include/freetype/cache. Use casts to + proper types locally. + + * src/cache/ftcmanag.c (ftc_size_node_done, ftc_size_node_compare, + ftc_size_node_init, ftc_size_node_reset, + ftc_size_node_compare_faceid, ftc_face_node_init, + ftc_face_node_done, ftc_face_node_compare: Adjust parameters and + return types to prototypes given in header files from + include/freetype/cache. Use casts to proper types locally. + + (ftc_size_list_class, ftc_face_list_class): Remove casts. + +2004-05-13 Werner Lemberg + + * src/autohint/ahmodule.c (ft_autohinter_init, ft_autohinter_done): + Use FT_Module as parameter and do a cast to FT_AutoHinter locally. + (autohint_module_class): Remove casts. + + * src/base/ftglyph.c (ft_bitmap_glyph_init, ft_bitmap_glyph_copy, + ft_bitmap_glyph_done, ft_bitmap_glyph_bbox, ft_outline_glyph_init, + ft_outline_glyph_done, ft_outline_glyph_copy, + ft_outline_glyph_transform, ft_outline_glyph_bbox, + ft_outline_glyph_prepare): Use FT_Glyph as parameter and do a cast + to FT_XXXGlyph locally. + Use FT_CALLBACK_DEF throughout. + (ft_bitmap_glyph_class, ft_outline_glyph_class): Remove casts. + + * src/bdf/bdfdrivr.c (bdf_cmap_init, bdf_cmap_done, + bdf_cmap_char_index, bdf_cmap_char_next): Use FT_CMap as parameter + and do a cast to BDF_CMap locally. + (bdf_cmap_class): Remove casts. + +2004-05-12 Werner Lemberg + + * src/cff/cffgload.h (CFF_Builder): Remove `error'. + * src/cff/cffgload.c (cff_decoder_parse_charstrings): Replace + `Memory_Error' with `Fail' and update all users. + +2004-05-11 Werner Lemberg + + * include/freetype/internal/psaux.h (T1_ParseState): New + enumeration. + (T1_BuilderRec): Replace `path_begun' with `parse_state'. + Remove `error'. + * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Replace + `Memory_Error' with `Fail' and update all users. + Don't use `builder->error'. + Replace `path_begun' with `parse_state' and check parsing states. + + * src/psaux/psobjs.c (t1_builder_init, t1_builder_start_point): + Replace `path_begun' with `parse_state' and check parsing states. + +2004-05-10 George Williams + + * src/truetype/ttxgvar.c (ft_var_load_avar): Do free arrays in case + of error -- `avar' is optional so we can't rely on tt_done_blend + being called automatically. + +2004-05-09 George Williams + + * src/truetype/ttxgvar.c (ft_var_load_avar, ft_var_load_gvar): Fix + error handling. + +2004-05-07 Werner Lemberg + + * src/pfr/pfrobjs.c, src/pfr/pfrobjs.h (pfr_face_init, + pfr_face_done, pfr_face_get_kerning, pfr_slot_init, pfr_slot_done, + pfr_slot_load): Don't use PFR_XXX but FT_XXX arguments which are + typecast to the proper PFR_XXX types within the function. + Update code accordingly. + + * src/pfr/pfrdrivr.c (pfr_get_kerning, pfr_get_advance, + pfr_get_metrics, pfr_get_service): Don't use PFR_XXX but FT_XXX + arguments which are typecast to the proper PFR_XXX types within the + function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (pfr_metrics_service_rec, pfr_driver_class): Remove casts. + +2004-05-06 Masatake YAMATO + + * src/truetype/ttgxvar.c (ft_var_load_gvar): Use FT_FACE_STREAM. + (*): Rename local variable OffsetToData to offsetToData. + +2004-05-06 Werner Lemberg + + * src/cff/cffobjs.c (cff_size_done, cff_size_init, cff_size_reset, + cff_slot_done, cff_slot_init, cff_face_init, cff_face_done): Access + root fields directly. + * src/cff/cffdrivr.c (Load_Glyph): Access root fields directly. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Save current + frame before calling TT_Vary_Get_Glyph_Deltas. + + * src/pcf/pcfdrivr.c (PCF_CMapRec): Rename `cmap' to `root' for + consistency. + (pcf_cmap_init, pcf_cmap_done, pcf_cmap_char_index, + pcf_cmap_char_next): Don't use PCF_XXX but FT_XXX arguments which + are typecast to the proper PCF_XXX types within the function. + Update code accordingly. + (pcf_cmap_class): Remove casts. + (PCF_Face_Done, PCF_Face_Init, PCF_Set_Pixel_Size): Don't use + PCF_XXX but FT_XXX arguments which are typecast to the proper + PCF_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (PCF_Set_Point_Size): New wrapper function. + (PCF_Glyph_Load, pcf_driver_requester): Use FT_CALLBACK_DEF. + (pcf_driver_class): Remove casts. + +2004-05-04 Steve Hartwell + + * src/truetype/ttobjs.c (tt_driver_done): Fix typo. + +2004-05-04 Werner Lemberg + + * src/bdf/bdfdrivr.c (BDF_Face_Done, BDF_Face_Init, + BDF_Set_Pixel_Size): Don't use BDF_XXX but FT_XXX arguments which + are typecast to the proper BDF_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (BDF_Set_Point_Size): New wrapper function. + (bdf_driver_class): Remove casts. + + * src/cff/cffdrivr.c (Get_Kerning, Load_Glyph, cff_get_interface): + Don't use CFF_XXX but FT_XXX arguments which are typecast to the + proper CFF_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (cff_driver_class): Remove casts. + + * src/cff/cffobjs.h, src/cff/cffobjs.c (cff_size_done, + cff_size_init, cff_size_reset, cff_slot_done, cff_slot_init, + cff_face_init, cff_face_done, cff_driver_init, cff_driver_done): + Don't use CFF_XXX but FT_XXX arguments which are typecast to the + proper CFF_XXX types within the function. + Update code accordingly. + (cff_point_size_reset): New wrapper function. + + * src/cid/cidobjs.h, src/cid/cidobjs.c (cid_slot_done, + cid_slot_init, cid_size_done, cid_size_init, cid_size_reset, + cid_face_done, cid_face_init, cid_driver_init, cid_driver_done): + Don't use CID_XXX but FT_XXX arguments which are typecast to the + proper CID_XXX types within the function. + Update code accordingly. + (cid_point_size_reset): New wrapper function. + + * src/cid/cidgload.c, src/cid/cidgload.h (cid_slot_load_glyph): + Don't use CID_XXX but FT_XXX arguments which are typecast to the + proper CID_XXX types within the function. + Update code accordingly. + + * src/cid/cidriver.c (cid_get_interface): + Don't use CID_XXX but FT_XXX arguments which are typecast to the + proper CID_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF. + (t1cid_driver_class): Remove casts. + + * src/truetype/ttdriver.c (tt_get_interface): Use FT_CALLBACK_DEF. + * src/truetype/ttgxvar.c (ft_var_load_avar): Don't free non-local + variables (this is done later). + (ft_var_load_avar): Fix call to FT_FRAME_ENTER. + (TT_Get_MM_Var): Fix size for `fvar_fields'. + (TT_Vary_Get_Glyph_Deltas): Handle deallocation of local variables + correctly. + + * src/base/ftdbgmem.c (ft_mem_debug_realloc): Don't abort if + current size is zero. + +2004-05-03 Steve Hartwell + + * src/truetype/ttobjs.h, src/truetype/ttobjs.c (tt_face_init, + tt_face_done, tt_size_init, tt_size_done, tt_driver_init, + tt_driver_done): Don't use TT_XXX but FT_XXX arguments which are + typecast to the proper TT_XXX types within the function. + Update code accordingly. + + * src/truetype/ttdriver.c (Get_Kerning, Set_Char_Sizes, + Set_Pixel_Sizes, Load_Glyph, tt_get_interface): Don't use TT_XXX but + FT_XXX arguments which are typecast to the proper TT_XXX types + within the function. + Update code accordingly. + (tt_driver_class): Remove casts. + +2004-05-02 Werner Lemberg + + * src/sfnt/ttload.c (tt_face_free_names): Check that `table->names' + is not NULL. Reported by Gordon Childs . + +2004-04-29 Werner Lemberg + + * docs/formats.txt: Add more information on PFR format. + +2004-04-28 Werner Lemberg + + * docs/formats.txt: New file. + * docs/CHANGES: Updated. + +2004-04-28 Masatake YAMATO + + * include/freetype/internal/tttypes.h (GX_BlendRec_) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix a typo. + + * src/truetype/ttgxvar.h (GX_BlendRec_): Fix a typo. + +2004-04-27 Masatake YAMATO + + * src/truetype/ttgxvar.h: Use FT_LOCAL instead of FT_LOCAL_DEF + for function declarations. + +2004-04-25 George Williams + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix typo. + +2004-04-25 Werner Lemberg + + * src/truetype/Jamfile, docs/CHANGES: Updated. + +2004-04-24 Werner Lemberg + + * src/pcf/pcfdrivr.c: Revert change from 2004-04-17. + * src/pcf/pcfutil.c: Use FT_LOCAL_DEF. + * src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H. + Use FT_BEGIN_HEADER and FT_END_HEADER. + Use FT_LOCAL. + +2004-04-24 George Williams + + Add support for Apple's distortable font technology (in GX fonts). + + * devel/ftoption.h, include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro. + + * include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style, + FT_MM_Var): New structures. + (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates, + FT_Set_Var_Blend_Coordinates): New function declarations. + + * include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func, + FT_Set_Var_Design_Func): New typedefs. + Update MultiMasters service. + + * include/freetype/internal/tttypes.h + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H. + (GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef. + (TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend' + and `blend'. + + * include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New + macros. + + * include/freetype/internal/fttrace.h: Add `ttgxvar'. + + * src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates, + FT_Set_Var_Blend_Coordinates): New functions. + + * src/sfnt/sfobjs.c (sfnt_load_face) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS + flag for GX var fonts. + + * src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files. + + * src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.c. + + * src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h. + (tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: + New service. + (tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated. + + * src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.h. + (TT_Process_Simple_Glyph, load_truetype_glyph) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Support GX var fonts. + + * src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.h. + (tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call + tt_done_blend. + + * src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.h. + (tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call + tt_face_vary_cvt. + + * src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c. + + * src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var + and T1_Set_Var_Design. + + * src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros. + (T1_Get_MM_Var, T1_Set_Var_Design): New functions. + + * src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New + function declarations. + +2004-04-23 Werner Lemberg + + * include/freetype/ftcache.h (FT_Get_CharMap_Index): Rename + declaration and move to... + * include/freetype/freetype.h (FT_Get_Charmap_Index): Here. + (FREETYPE_PATCH): Set to 9. + + * src/base/ftobjs.c (FT_Get_Charmap_Index): New function. + + * builds/unix/configure.ac (version_info): Set to 9:7:3. + * builds/unix/configure: Updated. + + * builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj: s/218/219/. + + * builds/freetype.mk (refdoc), README, Jamfile (RefDoc): + s/2.1.8/2.1.9/. + + * docs/CHANGES, docs/VERSION.DLL: Updated. + +2004-04-21 Werner Lemberg + + * src/cff/cffparse.c (cff_parser_run), src/psaux/psobjs.c + (ps_parser_load_field): Use FT_CHAR_BIT. + +2004-04-21 David Turner + + + * Version 2.1.8 released. + ========================= + + + * src/cff/cffobjs.c (cff_face_init): Fix a small memory leak. + + * src/autofit/afloader.c (af_loader_load_g), src/autofit/afmodule.c + (af_autofitter_load_glyph), src/base/ftdebug.c (FT_Trace_Get_Name): + Remove compiler warnings. + + * src/autofit/aftypes.h: Undefine AF_DEBUG. + + * src/lzw/zopen.c (rmask), src/pcf/pcfdrivr.c (pcf_service_bdf, + pcf_services), src/pcf/pcfread.c (tableNames), src/psaux/psobjs.c + (ft_char_table), src/type42/t42drivr.c (t42_service_glyph_dict, + t42_service_ps_font_name): Decorate data arrays with `const' to + avoid populating the `.data' segment. + + * src/lzw/Jamfile: New file. + +2004-04-20 Werner Lemberg + + * src/psaux/psobjs.c (T1Radix): Renamed to... + (ps_radix): This. + Update current cursor position. + + * docs/CHANGES: Updated. + +2004-04-18 Werner Lemberg + + * src/truetype/ttgload.c, src/truetype/ttgload.h (TT_Load_Glyph), + src/ttdriver.c (Load_Glyph): Change type of `glyph_index' to + FT_UInt. From Lex Warners. + +2004-04-17 Chisato Yamauchi + + * src/sfnt/ttload.c (tt_face_load_sfnt_header): Really fix change + from 2004-03-19. + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Use `ft_strlen'. + + * src/pcf/pcfutil.c, src/pcf/pcfutil.h: Decorate functions with + `static'. + Remove unused function `RepadBitmap'. + * src/pcf/pcfdrivr.c: Don't include pcfutil.h. + +2004-04-16 Werner Lemberg + + * builds/unix/freetype-config.in (usage): Fix and improve usage + information. + +2004-04-15 Werner Lemberg + + * builds/unix/ftconfig.in, builds/vms/ftconfig.h: Define + FT_CHAR_BIT. + + * src/base/ftobjs.c (FT_Load_Glyph): Don't apply autohinting if + glyph is vertically distorted or mirrored. + + * src/cff/cffgload.c (cff_slot_load): Handle zero `size' properly + for embedded bitmaps. + + * docs/CHANGES: Updated. + +2004-04-15 bytesoftware + + * include/freetype/config/ftconfig.h, src/base/ftstream.c + (FT_Stream_ReadFields): More fixes using FT_CHAR_BIT. + +2004-04-14 Werner Lemberg + + * include/freetype/config/ftconfig.h (FT_CHAR_BIT): New macro. + +2004-04-14 Alex Strelnikov + + * src/cache/ftcsbits.c (ftc_snode_load): Initialize `*asize' in case + of error. + +2004-04-14 Werner Lemberg + + * src/base/ftmac.c [__GNUC__]: Define OS_INLINE. + * builds/unix/configure.ac: Don't try to remove `-ansi' compilation + switch on the Mac. + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.6. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.8a. + * builds/unix/configure: Regenerated with autoconf 2.59a. + +2004-04-13 Werner Lemberg + + * include/freetype/config/ftconfig.h: Use CHAR_BIT to define + size of FT_SIZEOF_xxx. + +2004-04-12 Chisato Yamauchi + + * include/freetype/internal/sfnt.h (TT_Find_SBit_Image_Func, + TT_Load_SBit_Metrics_Func): New typedefs. + (SFNT_Interface): Add find_sbit_image and load_sbit_metrics. + + * src/sfnt/sfdriver.c (sfnt_interface): Updated. + * src/sfnt/ttsbit.h (tt_find_sbit_image, tt_load_sbit_metrics): New + declarations. + * src/sfnt/ttsbit.c (find_sbit_image): Renamed to... + (tt_find_sbit_image): This. + Updated all callers. + (load_sbit_metrics): Renamed to... + (tt_load_sbit_metrics): This. + Updated all callers. + +2004-04-12 Werner Lemberg + + * configure: Accept makepp also. + + * builds/unix/detect.mk: Use proper path to unix-def.mk. + * builds/unix/unix-def.in (BUILD_DIR, PLATFORM): Remove. + * builds/unix/unix.mk (BUILD_DIR, PLATFORM): Define. + Use BUILD_DIR. + + * docs/INSTALL, docs/INSTALL.GNU, docs/INSTALL.UNX: Update + documentation on makepp. + +2004-04-11 Werner Lemberg + + * src/lzw/zopen.c: Don't include sys/param.h and sys/stat.h. + +2004-04-10 Werner Lemberg + + * src/lzw/ftlzw.c: Include zopen.h dependent on + FT_CONFIG_OPTION_USE_LZW. + + * src/base/ftdebug.c: s/index/idx/ to avoid compiler warnings. + +2004-04-02 Werner Lemberg + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.2. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.8a. + * builds/unix/configure: Regenerated with autoconf 2.59a. + +2004-04-01 Werner Lemberg + + * builds/unix/ft-munmap.m4 (FT_MUNMAP_PARAM): Fix arguments of + AC_COMPILE_IFELSE. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.8a. + * builds/unix/configure: Regenerated with autoconf 2.59a. + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from + `texinfo' CVS module at subversions.gnu.org. + * builds/freetype.mk (refdoc): Updated. + +2004-03-31 Werner Lemberg + + Handle broken FNT files which don't have a trailing NULL byte + in the face name string. + + * src/winfonts/winfnt.h (FNT_FontRec): New member `family_name'. + * src/winfonts/winfnt.c (fnt_font_done): Free font->family_name. + (FNT_Face_Init): Append a final zero byte to the font face name. + +2004-03-30 Werner Lemberg + + * src/sfnt/ttload.c (tt_face_load_sfnt_header): Fix change from + 2004-03-19. + +2004-03-27 Werner Lemberg + + * src/base/descrip.mms (OBJS): Add ftbbox.obj. + +2004-03-26 George Williams + + Add vertical phantom points. + + * include/freetype/internal/tttypes.h (TT_LoaderRec): Add + `top_bearing', `vadvance', `pp3', and `pp4'. + + * src/autofit/afloader.c (af_loader_load_g): Handle two more points. + + * src/autohint/ahhint.c (ah_hinter_load): Handle two more points. + * src/truetype/ttgload.c (Get_VMetrics): New function. + (TT_Load_Simple_Glyph, TT_Process_Simple_Glyph): Handle two more + points. + (load_truetype_glyph): Use Get_VMetrics. + Handle two more points. + (compute_glyph_metrics): Thanks to vertical phantom points we now + can always compute `advance_height' and `top_bearing'. + * src/truetype/ttobjs.h (TT_SubglyphRec): Add vertical phantom + points. + + + * src/autohint/ahglyph.c (ah_outline_load): Fix allocation of + `news'. + +2004-03-21 Werner Lemberg + + * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Fix left side bearing. + +2004-03-20 Steve Hartwell + + * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Handle a NULL + value for `selection' as `select all'. + +2004-03-19 Steve Hartwell + + * src/sfnt/ttload.c (tt_face_load_sfnt_header): Reject face_index + values > 0 if loading non-TTC fonts. + + * src/base/ftmac.c (open_face_from_buffer): Set positive face_index + to zero before calling FT_Open_Face. + + * docs/CHANGES: Updated. + +2004-03-04 Werner Lemberg + + * Jamfile, vms_make.com, builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype/vcproj, include/freetype/ftmoderr.h: + Add LZW module. + + * Jamfile.in: Removed. + + * docs/CHANGES: Updated. + + * include/freetype/internal/ftobjs.h: s/MIN/FT_MIN/, s/MAX/FT_MAX/, + s/ABS/FT_ABS/. Updated all callers. + + * src/type1/t1load.c (parse_dict), src/pcf/pcfdrivr.c + (PCF_Face_Init): Use FT_ERROR_BASE. + +2004-03-04 Albert Chin + + Add support for PCF fonts compressed with LZW (extension .pcf.Z, + created with `compress'). + + * include/freetype/config/ftoption.h, devel/ftoption.h + (FT_CONFIG_OPTION_USE_LZW): New macro. + + * include/freetype/ftlzw.h: New file. + * include/freetype/config/ftheader.h (FT_LZW_H): New macro for + ftlzw.h. + + * src/lzw/*: New files. + + * src/pcf/pcfdrivr.c: Include FT_LZW_H. + (PCF_Face_Init): Try LZW also. + + * src/gzip/ftgzip.c: s/0/Gzip_Err_Ok/ where appropriate. + Beautify. + +2004-03-03 Werner Lemberg + + * src/pshinter/pshalgo.c (psh_hint_table_init): Simplify code. + +2004-03-02 Werner Lemberg + + Add embedded bitmap support to CFF driver. + + * src/cff/cffobjs.h (CFF_SizeRec): New structure. + + * src/cff/cffgload.c (cff_builder_init): Updated. + (cff_slot_load): Updated. + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Load sbit. + + * src/cff/cffobjs.c (sbit_size_reset) + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New function. + (cff_size_get_globals_funcs, cff_size_done, cff_size_init): Updated. + (cff_size_reset): Updated. + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Call sbit_size_reset. + + * src/cff/cffdrivr.c (Load_Glyph): Updated. + (cff_driver_class): Use CFF_SizeRec. + + * docs/CHANGES: Updated. + +2004-03-01 Werner Lemberg + + * src/pshinter/pshglob.c (psh_globals_scale_widths): Don't use + FT_RoundFix but FT_PIX_ROUND. + (psh_blues_snap_stem): Don't use blue_shift but blue_threshold. + + * src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD_MAXIMUM): New macro. + (psh_glyph_find_strong_points): Use PSH_STRONG_THRESHOLD_MAXIMUM. + (psh_glyph_find_blue_points): New function. Needed for fonts like + p052003l.pfb (URW Palladio L Roman) which have flex curves at the + base line within blue zones, but the flex curves aren't covered by + hints. + (ps_hints_apply): Use psh_glyph_find_blue_points. + +2004-02-27 Garrick Meeker + + * builds/unix/configure.ac: Fix compiler flags for + `--with-old-mac-fonts'. + * builds/unix/configure: Regenerated. + + * src/base/ftmac.c: s/TARGET_API_MAC_CARBON/!TARGET_API_MAC_OS8/. + (FT_New_Face_From_Resource): New function. + (FT_New_Face): Use FT_New_Face_From_Resource. + (FT_New_Face_From_FSSpec): Use FT_New_Face_From_Resource. + [__MWERKS__]: Don't include FSp_fopen.h. + +2004-02-26 Werner Lemberg + + * src/pshinter/pshglob.c (psh_globals_new): Fix value of + `dim->stdw.count'. + Don't assign default values to blue scale and blue shift. + +2004-02-25 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-02-25 Garrick Meeker + Steve Hartwell + + Improve MacOS fond support. Provide a new API + `FT_New_Face_From_FSSpec' similar to `FT_New_Face'. + + * src/base/ftmac.c [__MWERKS__]: Include FSp_fopen.h. + STREAM_FILE [__MWERKS__]: New macro. + (ft_FSp_stream_close, ft_FSp_stream_io) [__MWERKS__]: New functions. + (file_spec_from_path) [__MWERKS__]: Updated #if statement. + (get_file_type, make_lwfn_spec): Use `const' for argument. + (is_dfont) [TARGET_API_MAC_CARBON]: Removed. + (count_face_sfnt, count_faces): New functions. + (parse_fond): Do some range checking. + (read_lwfn): Change type of second argument. + No longer call FSpOpenResFile. + (OpenFileAsResource): New function. + (FT_New_Face_From_LWFN): Use `const' for second argument. + Use OpenFileAsResource. + (FT_New_Face_From_Suitcase): Change type of second argument. + No longer call FSpOpenResFile. + Loop over all resource indices. + (FT_New_Face_From_dfont) [TARGET_API_MAC_CARBON]: Removed. + (FT_GetFile_From_Mac_Name): Use `const' for first argument. + (ResourceForkSize): Removed. + (FT_New_Face): Updated to use new functions. + (FT_New_Face_From_FSSpec): New function. + + * include/freetype/ftmac.h: Updated. + +2004-02-24 Malcolm Taylor + + * src/autohint/ahhint.c (ah_hinter_load) : + Handle case where outline->num_vedges is zero while computing hinted + metrics. + +2004-02-24 Gordon Childs + + * src/cff/cffcmap.c (cff_cmap_unicode_init): Provide correct value + for `count'. + +2004-02-24 Werner Lemberg + + * include/freetype/t1tables.h (PS_PrivateRec): Add + `expansion_factor'. + + * src/pshinter/pshglob (psh_blues_scale_zones): Fix computation + of blues->no_overshoots -- `blues_scale' is stored with a + magnification of 1000, and `scale' returns fractional pixels. + + * src/type1/t1load.c (T1_Open_Face): Initialize `blue_shift', + `blue_fuzz', `expansion_factor', and `blue_scale' according to the + Type 1 specification. + + * src/type1/t1tokens.h: Handle `ExpansionFactor'. + + * docs/CHANGES: Updated. + +2004-02-24 Masatake YAMATO + + Provide generic access to MacOS resource forks. + + * src/base/ftrfork.c, include/freetype/internal/ftrfork.h: New + files. + + * src/base/ftobjs.c: Include FT_INTERNAL_RFORK_H. + (Mac_Read_POST_Resource, Mac_Read_sfnt_Resource): Remove arguments + `resource_listoffset' and `resource_data' and adapt code + accordingly. These values are calculated outside of the function + now. + Add new argument `offsets'. + (IsMacResource): Use `FT_Raccess_Get_HeaderInfo' and + `FT_Raccess_Get_DataOffsets'. + (load_face_in_embedded_rfork): New function. + (load_mac_face): Use load_face_in_embedded_rfork. + (ft_input_stream_new): Renamed to... + (FT_Stream_New): This. Use FT_BASE_DEF. Updated all callers. + (ft_input_stream_free): Renamed to... + (FT_Stream_Free): This. Use FT_BASE_DEF. Updated all callers. + + * src/base/ftbase.c: Include ftrfork.c. + + * src/base/rules.mk (BASE_SRC), src/base/Jamfile: Updated. + + * include/freetype/internal/internal.h (FT_INTERNAL_RFORK_H): + New macro. + + * include/freetype/internal/fttrace.h: Added `rfork' as a new + trace definition. + + * include/freetype/internal/ftstream.h: Declare FT_Stream_New and + FT_Stream_Free. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK): New option. + + * include/freetype/config/ftstdlib.h (ft_strrchr): New macro. + +2004-02-23 Werner Lemberg + + * docs/CHANGES: Updated. + + * include/freetype/internal/ftdebug.h: Include FT_FREETYPE_H. + +2004-02-23 Masatake YAMATO + + Provide a simple API to control FreeType's tracing levels. + + * include/freetype/internal/ftdebug.h (FT_Trace_Get_Count, + FT_Trace_Get_Name): New declarations. + + * src/base/ftdebug.c (FT_Trace_Get_Count, FT_Trace_Get_Name): New + functions. + +2004-02-23 David Turner + + * src/autofit/afhints.c, src/autofit/afhints.h, + src/autofit/aflatin.c, src/autofit/afloader.c, src/types.h: Grave + bugs have been fixed. The auto-fitter works, doesn't crash, but + still produces unexpected results... + +2004-02-21 Werner Lemberg + + * src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD): Changed to hold + the accepted shift for strong points in fractional pixels (which + is a heuristic value). + (psh_glyph_find_strong_points): Compute threshold for + psh_hint_table_find_strong_points. + (psh_hint_table_find_strong_point): Add parameter to pass threshold. + +2004-02-20 Werner Lemberg + + * src/pshinter/pshrec.c (ps_mask_table_set_bits): Don't call + ps_mask_table_alloc but ps_mask_table_last. + (ps_hints_t2mask): Use correct position and number for vertical + and horizontal hinter mask bits. + + * docs/CHANGES: Updated. + +2004-02-19 Werner Lemberg + + * src/base/ftstroke.c (FT_Glyph_StrokeBorder): Fix enum handling. + * src/cff/cffdrivr.c (cff_get_cmap_info): Remove compiler warning. + +2004-02-18 Werner Lemberg + + * include/freetype/freetype.h: Document FT_LOAD_TARGET_XXX properly. + + * src/base/ftglyph.c (ft_bitmap_glyph_class, + ft_outline_glyph_class): Tag with FT_CALLBACK_TABLE_DEF. + + * src/smooth/ftsmooth.c (ft_smooth_render): Handle + FT_RENDER_MODE_LIGHT. + +2004-02-17 Werner Lemberg + + Fix callback functions in cache module. + + * src/cache/ftccback.h: New file for callback declarations. + + * src/cache/ftcbasic.c (ftc_basic_family_compare, + ftc_basic_family_init, ftc_basic_family_get_count, + ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph, + ftc_basic_gnode_compare_faceid): Use FT_CALLBACK_DEF. + (ftc_basic_image_family_class, ftc_basic_image_cache_class, + ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class): + Use FT_CALLBACK_TABLE_DEF and local wrapper functions. + + * src/cache/ftccache.c: Include ftccback.h. + (ftc_cache_init, ftc_cache_done): New wrapper functions which use + FT_LOCAL_DEF. + + * src/cache/ftccmap.c: Include ftccback.h. + (ftc_cmap_cache_class): Use local wrapper functions. + + * src/cache/ftcglyph.c: Include ftccback.h. + (ftc_gnode_compare, ftc_gcache_init, ftc_gcache_done): New wrapper + functions which use FT_LOCAL_DEF. + + * src/cache/ftcimage.c: Include ftccback.h. + (ftc_inode_free, ftc_inode_new, ftc_inode_weight): New wrapper + functions which use FT_LOCAL_DEF. + + * src/cache/ftcmanag.c (ftc_size_list_class, ftc_face_list_class): + Use FT_CALLBACK_TABLE_DEF. + + * src/cache;/ftcsbits.c: Include ftccback.h. + (ftc_snode_free, ftc_snode_new, ftc_snode_weight, + ftc_snode_compare): New wrapper functions which use FT_LOCAL_DEF. + + * src/cache/rules.mk (CACHE_DRV_H): Add ftccback.h. + +2004-02-17 Masatake YAMATO + + * include/freetype/ftmac.h (FT_GetFile_From_Mac_Name): Fix a typo + (FT_EXPORT_DEF -> FT_EXPORT). + + * include/freetype/ftxf86.h (FT_Get_X11_Font_Format): Ditto. + +2004-02-15 Werner Lemberg + + * src/base/ftobjs.c (FT_Set_Char_Size): Fix typo. + +2004-02-14 Masatake YAMATO + + * builds/unix/ftsystem.c: Include errno.h. + (ft_close_stream): Renamed to... + (ft_close_stream_by_munmap): This. + (ft_close_stream_by_free): New function. + (FT_Stream_Open): Use fallback method if mmap fails. + Use proper function for closing the stream. + +2004-02-14 Werner Lemberg + + * src/type1/t1load.c (parse_dict): Initialize `start_binary'. + +2004-02-13 Robert Etheridge + + * src/type42/t42objs.c (T42_Face_Init), src/type1/t1objs.c + (T1_Face_Init), src/cid/cidobjs.c (cid_face_init): Fix computation + of underline_position and underline_thickness. + +2004-02-12 Werner Lemberg + + * src/base/ftobjs.c (FT_Set_Char_Size): Return immediately if + ppem values don't change. Suggested by Graham Asher. + +2004-02-11 Werner Lemberg + + * src/cid/cidload.c (cid_face_open): Always allocate + face->cid_stream so that we can deallocate it safely. + +2004-02-10 Werner Lemberg + + Make the PS parser more tolerant w.r.t. non-standard font data. In + general, an error is only reported in case of a syntax error; a + wrong type is now simply ignored (if possible). To be independent + of the order of various MM-specific keywords, the parse_shared_dict + routine has been removed -- the PS parser is now capable to skip + this data. It no longer fails on parsing e.g. + + dup /WeightVector exch def + + Since the token following /WeightVector isn't `[' (starting an + array) it is simply ignored. + + * include/freetype/fterrdef.h: Define `FT_Err_Ignore' (0xA2) as a + new internal error value. + + * src/type1/t1load.c (parse_blend_axis_types, + parse_blend_design_positions, parse_blend_design_map): Return + T1_Err_Ignore if no proper array is following the keyword. + (parse_weight_vector): Use T1_ToTokenArray, initializing `blend' + structure, if necessary. + Return T1_Err_Ignore if no proper array is following the keyword. + (parse_shared_dict): Removed. + (parse_encoding): Set parser->root.error to return T1_Err_Ignore + if no result can be obtained. + Check for errors before accessing `elements' array. + (t1_keywords): Remove /shareddict. + (parse_dict): Reset error if t1_load_keyword returns T1_Err_Ignore. + Set keyword_flag only in case of success. + Check error code if skipping an unrecognized token. + (T1_Open_Face) [!T1_CONFIG_OPTION_NO_MM_SUPPORT]: Call T1_Done_Blend + if blend commands haven't set up a proper MM font. + + * src/psaux/psobjs.c (ps_parser_load_field_table): Remove special + code for synthetic fonts. + Return PSaux_Err_Ignore if no proper value has been found. + +2004-02-09 Werner Lemberg + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Preserve glyph width before calling + cff_operator_seac. + +2004-02-09 Martin Muskens + + * src/cff/cffgload.c (cff_decoder_parse_charstrings): Handle special + first argument for `hintmask' and `cntrmask' operators also. + +2004-02-08 Werner Lemberg + + * builds/unix/configure.in: Call AC_SUBST for `enable_shared', + `hardcode_libdir_flag_spec', and `wl'. + * builds/unix/configure: Regenerated. + + * builds/unix/freetype-config.in: Make --prefix and --exec-prefix + actually work. + Report a proper --rpath (or -R) value for --libs argument if a + shared library has been built. + + * docs/CHANGES: Updated. + +2004-02-07 Keith Packard + + * src/bdf/bdfdrivr.c (BDF_Face_Init, BDF_Set_Pixel_Size): Fix + computation of various vertical and horizontal metric values. + + * src/pcfdrivr.c (PCF_Set_Pixel_Size), src/pcfread (pcf_load_font): + Ditto. + +2004-02-07 Werner Lemberg + + * builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.dsw, docs/CHANGES: Updated. + +2004-02-07 Vitaliy Pasternak + + * builds/win32/visualc/freetype.sln, + builds/win32/visualc/freetype.vcproj: New files for VS.NET 2003. + +2004-02-03 Werner Lemberg + + * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): + Initialize `node'. + * src/type1/t1load.c (parse_dict): Initialize `have_integer'. + +2004-02-02 Werner Lemberg + + * src/type1/t1load.c (parse_dict): Handle `RD' and `-|' commands + outside of /Subrs or /CharStrings. This can happen if there is + additional code manipulating those two arrays so that FreeType + doesn't recognize them properly. + (T1_Open_Face): Improve an error message. + +2004-02-01 Werner Lemberg + + * src/type1/t1load.c (parse_charstrings): Exit immediately if + there are no elements in /CharStrings. This is needed for fonts + like Optima-Oblique which not only define /CharStrings but access it + also. + +2004-02-01 David Turner + + * src/sfnt/Jamfile: Removing `ttcmap' from the list of sources. + + * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP) + : Provide macro version which doesn't use inline code. + * include/freetype/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP) + : Ditto. + Use FTC_MRULIST_LOOKUP_CMP. + * include/freetype/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): New + macro. + (FTC_MRULIST_LOOKUP): Use it. + + * src/cache/Jamfile (_sources), src/cache/descrip.mms: Updated. + * src/cache/ftcbasic.c: Fix compiler warnings. + * src/cache/ftcmanag.c (FTC_Manager_LookupSize, + FTC_Manager_LookupFace) : Use FTC_MRULIST_LOOKUP_CMP. + * src/cache/ftcmru.c (FTC_MruList_Find): Fix a bug (found after + heavy testing). + + * Jamfile: Updating `refdoc' target, and adding `autohint' to the + list of modules to build. Both the autohinter and autofitter will + be built by default. But which one will be used is determined by + the content of `ftmodule.h'. + + * src/autofit/*: Many updates, but the code is still buggy... + +2004-01-31 Werner Lemberg + + * src/cff/cffgload.c (cff_operator_seac): Fix magnitude of + accent offset. + Update code similarly to the seac support for Type 1 fonts. + (cff_decoder_parse_charstrings) : Fix magnitude + of accent offset. + Don't hint glyphs twice if seac is emulated. + : Assign correct point tags. + * docs/CHANGES: Updated. + +2004-01-30 Werner Lemberg + + * src/type1/t1parse.c (T1_Get_Private_Dict): Use FT_MEM_MOVE, not + FT_MEM_COPY, for copying the private dict. + + * src/type1/t1load.c (parse_subrs): Assign number of subrs only + in first run. + (parse_charstrings): Parse /CharStrings in second run without + assigning values. + (parse_dict): Skip all /CharStrings arrays but the first. We need + this for non-standard fonts like `Optima' which have different + outlines depending on the resolution. Note that there is no + guarantee that we get fitting /Subrs and /CharStrings arrays; this + can only be done by a real PS interpreter. + +2004-01-29 Antoine Leca + + * builds/win32/visualc/index.html: New file, giving detailed + explanations about forcing CR+LF line endings for the VC++ project + files. + +2004-01-22 Garrick Meeker + + * src/cff/cffload.c (cff_subfont_load): Initialize `dict'. + +2004-01-22 Werner Lemberg + + Add support for the hexadecimal representation of binary data + started with `StartData' in CID-keyed Type 1 fonts. + + * include/freetype/internal/t1types.h (CID_FaceRec): Add new + members `binary_data' and `cid_stream'. + + * src/cid/cidload.c (cid_read_subrs): Use `face->cid_stream'. + (cid_hex_to_binary): New auxiliary function. + (cid_face_open): Add new argument `face_index' to return quickly + if less than zero. Updated all callers. + Call `cid_hex_to_binary', then open and assign memory stream to + `face->cid_stream' if `parser->binary_length' is non-zero. + * src/cid/cidload.h: Updated. + + * src/cid/cidobjs.c (cid_face_done): Free `binary_data' and + `cid_stream'. + + * src/cid/cidparse.c (cid_parser_new): Check arguments to + `StartData' and set parser->binary_length accordingly. + * src/cid/cidparse.h (CID_Parser): New member `binary_length'. + + * src/cid/cidgload.c (cid_load_glyph): Use `face->cid_stream'. + + * docs/CHANGES: Updated. + +2004-01-21 Werner Lemberg + + include/freetype/config/ftstdlib.h (ft_atoi): Replaced with... + (ft_atol): This. + * src/base/ftdbgmem.c: s/atol/ft_atol/. + * src/type42/t42drivr.c: s/ft_atoi/ft_atol/. + +2004-01-20 Masatake YAMATO + + * include/freetype/ftcache.h: Delete duplicated definition of + FTC_FaceID. + + * src/cff/cffdrivr.c (cff_get_cmap_info): Call sfnt module's TT CMap + Info service function if the cmap comes from sfnt. Return 0 if the + cmap is synthesized in cff module. + +2004-01-20 David Turner + + * src/cache/ftcmanag.c (ftc_size_node_compare): Call + FT_Activate_Size. + +2004-01-20 Werner Lemberg + + * src/type1/t1parse.c (T1_Get_Private_Dict): Skip exactly one + CR, LF, or CR/LF after `eexec'. + +2004-01-18 David Turner + + * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Remove compiler + warning. + + * src/tools/docmaker/*: Updating beautifier tool. + +2004-01-15 David Turner + + * src/base/ftoutln.c (ft_orientation_extremum_compute): Fix + infinite loop bug. + + * include/freetype/ftstroke.h: Include FT_GLYPH_H. + (FT_Stroker_Rewind, FT_Glyph_Stroke, FT_Glyph_StrokeBorder): New + declarations. + + * src/base/ftstroke.c: Include FT_INTERNAL_OBJECTS_H. + (FT_Outline_GetOutsideBorder): Inverse result. + (FT_Stroker_Rewind, FT_Glyph_Stroke, FT_Glyph_StrokeBorder): New + functions. + (FT_Stroker_EndSubPath): Close path if needed. + (FT_Stroker_Set, FT_Stroker_ParseOutline): Use FT_Stroker_Rewind. + + * include/freetype/cache/ftcmanag.h (FTC_ScalerRec, + FTC_Manager_LookupSize): Moved to... + * include/freetype/ftcache.h (FTC_ScalerRec, + FTC_Manager_LookupSize): Here. + + * src/tools/docmaker/docbeauty.py: New file to beautify the + documentation comments (e.g., to convert them to single block border + mode). + * src/tools/docmaker/docmaker.py (file_exists, make_file_list): + Moved to... + * src/tools/docmaker/utils.py (file_exists, make_file_list): Here. + +2004-01-14 David Turner + + * include/freetype/internal/ftmemory.h (FT_ARRAY_COPY, + FT_ARRAY_MOVE): New macros to make copying arrays easier. + Updated all relevant code to use them. + +2004-01-14 Werner Lemberg + + * src/cff/cffload.c (cff_font_load): Load charstrings_index earlier. + Use number of charstrings as argument to CFF_Load_FD_Select (as + documented in the CFF specs). + +2004-01-13 Graham Asher + + * src/pshinter/pshalgo.c (psh_glyph_init): Move assignment of + `glyph->memory' up to free arrays properly in case of failure. + +2004-01-10 Masatake YAMATO + + Make `FT_Get_CMap_Language_ID' work with CFF. Bug reported by + Steve Hartwell . + + * src/cff/cffdrivr.c: Include FT_SERVICE_TT_CMAP_H. + (cff_services): Added an entry for FT_SERVICE_ID_TT_CMAP. + (cff_get_cmap_info): New function. + (cff_service_get_cmap_info) New entry for cff_services. + + * src/sfnt/ttcmap0.c: Exit loop after a format match has been found. + Suggested by Steve Hartwell . + +2004-01-03 Masatake YAMATO + + * src/base/ftobjs.c (destroy_charmaps): New function. + (destroy_face, open_face): Use `destroy_charmaps'. + +2004-01-01 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-01-01 Michael Jansson + + * src/winfonts/winfnt.c (FNT_Size_Set_Pixels): Fix sign of + size->metrics.descender. + +2003-12-31 Wolfgang Domröse + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + [FT_DEBUG_LEVEL_TRACE]: Use `%ld' in FT_TRACE4. + : Change type of dx and dy to FT_Pos and remove + cast for accessing arguments. + +2003-12-31 Werner Lemberg + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Revert previous + change. It's not necessary. + +2003-12-29 Smith Charles + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Handle `repeated + flags set' correctly. + +2003-12-29 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Fix memory leak by deallocating + `full' and `weight' properly. + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + [FT_DEBUG_LEVEL_TRACE]: Use `0x' as prefix for + tracing output. + +2003-12-26 Werner Lemberg + + * include/freetype/internal/sfnt.h (TT_Set_SBit_Strike_Func): + Use FT_UInt for ppem values. + * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use FT_UInt for + ppem values. + * src/sfnt/ttsbit.h: Updated. + + * src/base/ftobjs.c (FT_Set_Pixel_Sizes): Don't allow ppem values + larger than -0FFFF. + +2003-12-25 Werner Lemberg + + * src/base/fttrigon.c, src/base/ftgloadr.c: Include + FT_INTERNAL_OBJECTS_H. + + * src/base/ftstroke.c (FT_Outline_GetInsideBorder, + FT_Outline_GetOutsideBorder): s/or/o/ to make it compile with + C++ compilers. + + * src/cache/ftcmru.c, include/freetype/cache/ftcmru.h: + s/select/selection/ to avoid compiler warning. + * src/cff/cffload.h: s/select/ftselect/ to avoid potential + compiler warning. + +2003-12-24 Werner Lemberg + + * src/cache/ftcsbits.c (FTC_SNode_Weight): + s/FTC_SBIT_ITEM_PER_NODE/FTC_SBIT_ITEMS_PER_NODE/. + +2003-12-24 David Turner + + * Fixed compilation problems in the cache sub-system. + + * Partial updates to src/autofit. + + * Jamfile (FT2_COMPONENTS): Add autofit module. + +2003-12-23 Werner Lemberg + + * src/cff/cffgload.c (cff_lookup_glyph_by_stdcharcode): Handle + CID-keyed fonts. + +2003-12-23 David Turner + + * include/freetype/internal/ftobjs.h (FT_PAD_FLOOR, FT_PAD_ROUND, + FT_PAD_CEIL, FT_PIX_FLOOR, FT_PIX_ROUND, FT_PIX_CEIL): New macros. + They are used to avoid compiler warnings with very pedantic compilers. + Note that `(x) & -64' causes a warning if (x) is not signed. Use + `(x) & ~63' instead! + Updated all related code. + + Add support for extraction of `inside' and `outside' borders. + + * src/base/ftstroke.c (FT_StrokerBorder): New enumeration. + (FT_Outline_GetInsideBorder, FT_Outline_GetOutsideBorder, + FT_Stroker_GetBorderCounts, FT_Stroker_ExportBorder): New functions. + (FT_StrokeBorderRec): New boolean member `valid'. + (ft_stroke_border_get_counts): Updated. + * include/freetype/ftstroke.h: Updated. + +2003-12-22 Werner Lemberg + + * include/freetype/ftwinfnt.h (FT_WinFNT_ID_*): New definitions + to describe the `charset' field in FT_WinFNT_HeaderRec. + * src/winfonts/winfnt.c (FNT_Face_Init): Set encoding to + FT_ENCODING_NONE except for FT_WinFNT_ID_MAC. + + * include/freetype/freetype.h (FT_Encoding): Improve comment, + based on work by Detlef Würkner . + + * docs/CHANGES: Updated. + +2003-12-22 David Turner + + * include/freetype/ftcache.h, + include/freetype/cache/ftcmanag.h, + include/freetype/cache/ftccache.h, + include/freetype/cache/ftcmanag.h, + include/freetype/cache/ftcmru.h (added), + include/freetype/cache/ftlru.h (removed), + include/freetype/cache/ftcsbits.h, + include/freetype/cache/ftcimage.h, + include/freetype/cache/ftcglyph.h, + src/cache/ftcmru.c, + src/cache/ftcmanag.c, + src/cache/ftccache.c, + src/cache/ftcglyph.c, + src/cache/ftcimage.c, + src/cache/ftcsbits.c, + src/cache/ftccmap.c, + src/cache/ftcbasic.c (added), + src/cache/ftlru.c (removed): + + *Complete* rewrite of the cache sub-system to `solve' the + following points: + + - all public APIs have been moved to FT_CACHE_H, everything + under `include/freetype/cache' is only needed by client + applications that want to implement their own caches + + - a new function named FTC_Manager_RemoveFaceID to deal + with the uninstallation of FaceIDs + + - the image and sbit cache are now abstract classes, that + can be extended much more easily by client applications + + - better performance in certain areas. Further optimizations + to come shortly anyway... + + - the FTC_CMapCache_Lookup function has changed its signature, + charmaps can now only be retrieved by index + + - FTC_Manager_Lookup_Face => FTC_Manager_LookupFace + FTC_Manager_Lookup_Size => FTC_Manager_LookupSize (still in + private header for the moment) + +2003-12-21 Werner Lemberg + + * src/type1/t1load.c (parse_dict): Stop parsing if `eexec' keyword + is encountered. + +2003-12-19 Werner Lemberg + + * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 32. For + example, the Japanese Hiragino font already contains 15 subfonts. + + * src/cff/cffload.c (cff_font_load): Deallocate `sids' array for + CID-keyed fonts. + + * devel/ftoption.h: Define FT_DEBUG_MEMORY. + +2003-12-18 Werner Lemberg + + * include/freetype/ttnameid.h (TT_ADOBE_ID_LATIN_1): New macro. + * src/type1/t1objs.c (T1_Face_Init): Use TT_ADOBE_ID* values. + +2003-12-18 Werner Lemberg + + * src/cff/cfftypes.h (CFF_FontRecDictRec): Change type of + `cid_count' to `FT_ULong'. + + * src/cff/cffgload.c (cff_slot_load): Take care of empty `cids' + array. + + * src/cff/cffload.c (cff_charset_done): Free `cids' array. + (cff_font_load): Create cids array only for CID-keyed fonts which + are subsetted. + + * src/cff/cffobjs.c (cff_face_init): Check the availability of + the PSNames modules for non-pure CFFs also. + Set FT_FACE_FLAG_GLYPH_NAMES for a non-pure CFF also if it isn't + CID-keyed. + + * src/cff/rules.mk (CFF_DRV_H): Add cfftypes.h. + +2003-12-17 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_init_face): Don't set + FT_FACE_FLAG_GLYPH_NAMES if the font contains a version 3.0 `post' + table. + + * docs/CHANGES: Updated. + +2003-12-17 Masatake YAMATO + + Add new function FT_Get_CMap_Language_ID to extract the language ID + for TrueType/sfnt fonts. + + * include/freetype/internal/services/svttcmap.h: New file. + * include/freetype/internal/ftserv.h (FT_SERVICE_TT_CMAP_H): Add + svttcmap.h. + + * src/sfnt/sfdriver.c: Include ttcmap0.h. + (tt_service_get_cmap_info): New service. + (sfnt_services): Updated. + + * src/sfnt/ttcmap0.c (tt_cmap*_get_info): New functions. + (tt_cmap*_class_rec): Add tt_cmap*_get_info members. + (tt_get_cmap_info): New function. + * src/sfnt/ttcmap0.h: Include FT_SERVICE_TT_CMAP_H. + (TT_CMap_ClassRec): New field `get_cmap_info'. + (tt_get_cmap_info): New declaration. + + * src/base/ftobjs.c: Include FT_SERVICE_TT_CMAP_H. + (FT_Get_CMap_Language_ID): New function implementation. + * include/freetype/tttables.h (FT_Get_CMap_Language_ID): New + function declaration. + +2003-12-16 Werner Lemberg + + * src/sfnt/ttcmap.c, src/sfnt/ttcmap.h: Removed. Obsolete. + + * include/freetype/internal/sfnt.h (SFNT_Interface): Remove + obsolete fields `load_charmap' and `free_charmap'. + (TT_CharMap_Load_Func, TT_CharMap_Free_Func): Removed. + * src/sfnt/sfnt.c: Don't include ttcmap.c. + * src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttcmap.c. + * src/sfnt/ttload.c: Don't include ttcmap.h. + * src/sfnt/sfdriver.c: Don't include ttcmap.h. + (sfnt_interface): Updated. + + * include/freetype/internal/tttypes.h (TT_TableDirRec, + TT_CMapDirRec, TT_CMapDirEntryRec, TT_CMap0, TT_CMap2SubHeaderRec, + TT_CMap2Rec, TT_CMap4Segment, TT_CMap4Rec, TT_CMap6, + TT_CMapGroupRec, TT_CMap8_12Rec, TT_CMap10Rec, TT_CharMap_Func, + TT_CharNext_Func, TT_CMapTableRec, TT_CharMapRec): Removed. + Obsolete. + * src/cff/cffobjs.h (CFF_CharMapRec): Removed. Obsolete. + +2003-12-15 Werner Lemberg + + * docs/CHANGES: Updated. + +2003-12-15 Wolfgang Domröse + + * builds/atari/*: New directory for building FreeType 2 on Atari + with the PureC compiler. + +2003-12-12 Wolfgang Domröse + + * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add + cast. + * src/cff/cffdrivr.c (cff_ps_has_glyph_names): Assure that return + value is either 0 or 1. + +2003-12-12 Werner Lemberg + + * src/cff/cffdrivr.c (cff_get_glyph_name): Improve error message. + (cff_get_name_index): Return if no PSNames service is available. + (cff_ps_has_glyph_names): Handle CID-keyed fonts correctly. + * src/cff/cfftypes.h (CFF_CharsetRec): New field `cids', used for + CID-keyed fonts. This is the inverse mapping of `sids'. + * src/cff/cffload.c (cff_charset_load): New argument `invert'. + Initialize charset->cids if `invert' is set. + (cff_font_load): In call to cff_charset_load, set `invert' to true + for CID-keyed fonts. + * src/cff/cffgload.c (cff_slot_load): Handle glyph index as CID + and map it to the real glyph index. + + * docs/CHANGES: Updated. + +2003-12-11 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Don't set + FT_FACE_FLAG_GLYPH_NAMES for CID-keyed fonts. + Don't construct a cmap for CID-keyed fonts. + +2003-12-10 Werner Lemberg + + Use implementation specific SID value 0xFFFF to indicate that + a dictionary element is missing. + + * src/cff/cffload.c (cff_subfont_load): Initialize all fields + which hold SIDs to 0xFFFF. + (cff_index_get_sid_string): Handle SID value 0xFFFF. + Handle case where `psnames' is zero. + (cff_font_load): Updated. + Don't load encoding for CID-keyed CFFs. + + * src/cff/cffobjs.c (cff_face_init): Updated. + Don't check for PSNames module if font is CID-keyed. + Compute style name properly (using the same algorithm as in the + CID driver). + Fix computation of style flags. + + * src/cff/cfftoken.h: Comment out handling of base_font_name. + Rename `postscript' field to `embedded_postscript' + * src/cff/cfftypes.h (CFF_FontRecDictRec): Remove `base_font_name' + and `postscript'. + +2003-12-10 Detlef Würkner + + * src/pcf/pcfdrivr.c (pcf_get_charset_id): New function (a clone + of the similar BDF function). + (pcf_service_bdf): Use it. + +2003-12-09 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_load_face): Set FT_FACE_FLAG_GLYPH_NAMES + only if a `post' table is present. + +2003-12-09 George Williams + + * src/base/ftobjs.c (load_mac_face): Recent versions of Linux + support Mac's HFS+ file system, thus enable code to read /rsrc on + non-Macintosh platforms also. + +2003-12-08 Werner Lemberg + + * include/freetype/internal/psaux.h (PS_TableRec): Change type + of `lengths' to FT_PtrDist. + (T1_DecoderRec): Change type of `subrs_len' to FT_PtrDist. + * include/freetype/internal/t1types.h (T1_FontRec): Change type + of `subrs_len' and `charstrings_len' to FT_PtrDist. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Replace `junk' + variable with better solution. + (IsMacResource): Remove unused variable `map_len'. + Replace `junk' variable with better solution. + (FT_Open_Face) [!FT_MACINTOSH]: Add conditional + FT_CONFIG_OPTION_MAC_FONTS. + +2003-12-08 Wolfgang Domröse + + * src/autohint/ahhint.c (ah_hinter_hint_edges, + ah_hinter_align_strong_points): Add some casts. + + * src/base/ftoutln.c (FT_OrientationExtremumRec): Change type + of `pos' to FT_Long. + + * src/base/ftobjs.c (Mac_Read_POST_Resource, + Mac_Read_sfnt_Resource): Change type of `len' to FT_Long. + + * src/type42/t42parse.c (t42_parse_dict): Add cast for `n_keywords'. + +2003-12-07 Werner Lemberg + + * docs/raster.txt: New file, taken from FreeType 1 and completely + revised. + +2003-12-04 Masatake YAMATO + + * src/type1/t1driver.c (Get_Interface): Remove FT_UNUSED for + t1_interface. t1_interface is used. + +2003-11-27 David Turner + + * src/pfr/pfrdrivr.c (pfr_get_metrics): Revert incorrect change of + 2003-11-23: For PFR fonts, metrics->x_scale and metrics->y_scale are + the scaling values for outline units, not for metric units. + +2003-11-25 Werner Lemberg + + * src/base/ftcalc.c, include/freetype/internal/ftcalc.h + (FT_MulDiv_No_Round): Surround code with `#ifdef + TT_CONFIG_OPTION_BYTECODE_INTERPRETER ... #endif'. + +2003-11-23 Werner Lemberg + + * src/base/ftcalc.c (FT_MulDiv_No_Round): New function (32 and + 64 bit version). + * include/freetype/internal/ftcalc.h: Updated. + + * src/truetype/ttinterp.c (TT_MULDIV_NO_ROUND): New macro. + (TT_INT64): Removed. + (DO_DIV): Use TT_MULDIV_NO_ROUND. + + * src/pfr/pfrdrivr.c (pfr_get_metrics): Directly use + metrics->x_scale and metrics->y_scale. + +2003-11-22 Rogier van Dalen + + * src/truetype/ttinterp.c (CUR_Func_move_orig): New macro. + (Direct_Move_Orig, Direct_Move_Orig_X, Direct_Move_Orig_Y): New + functions. Similar to Direct_Move, Direct_Move_X, and + Direct_Move_Y but without touching. + (Compute_Funcs): Use new functions. + + (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid, + Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, + Round_Super_45): Fix rounding of value zero. + + (DO_DIV): Don't use TT_MULDIV. + + (Ins_SHC): This instruction actually touches the points. + (Ins_MSIRP): Fix undocumented behaviour. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Updated. + +2003-11-22 Werner Lemberg + + * docs/VERSION.DLL, docs/CHANGES: Updated. + + * src/base/ftobjs.c (FT_Set_Char_Size): Make metrics->x_scale and + metrics->y_scale really precise. + + (FT_Load_Glyph): Update computation of linearHoriAdvance and + linearVertAdvance. + + * src/truetype/ttinterp.c (Update_Max): Use FT_REALLOC. + +2003-11-22 David Turner + + * src/autofit/*: More updates. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8. + * builds/unix/configure.ac (version_info): Set to 9:6:3. + * README: Updated. + +2003-11-13 John A. Boyd Jr. + + * src/bdf/bdfdrivr.c (bdf_interpret_style), src/pcf/pcfread.c + (pcf_interpret_style): Replace spaces with dashes in properties + SETWIDTH_NAME and ADD_STYLE_NAME to simplify parsing. + +2003-11-11 Werner Lemberg + + * docs/CHANGES: Updated. + +2003-11-11 John A. Boyd Jr. + + Handle SETWIDTH_NAME and ADD_STYLE_NAME properties for BDF and PCF + fonts. + + * src/bdf/bdfdrivr.c (bdf_interpret_style): New auxiliary function. + (BDF_Face_Init): Don't handle style properties but call + bdf_interpret_style. + + * src/pcf/pcfread.c (pcf_interpret_style): New auxiliary function. + (pcf_load_font): Don't handle style properties but call + pcf_interpret_style. + +2003-11-07 Werner Lemberg + + + * Version 2.1.7 released. + ========================= + + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7. + + * builds/unix/ft2unix.h: Fix comments. + + * builds/unix/ftconfig.in: Synchronized with ANSI version. + Use `#undef' in templates as recommended in the autoconf + documentation. + Since real `#undef' lines don't survive during configuration, use + `/undef' instead; the postprocessing facility of the + AC_CONFIG_HEADERS autoconf macro converts them to `#undef'. + + * builds/unix/install.mk (install): Install Unix version of + `ftconfig.h'. + + * builds/unix/unix-cc.in (CFLAGS): Set FT_CONFIG_CONFIG_H macro + to include the correct `ftconfig.h' file. + + * builds/unix/ft-munmap.m4 (FT_MUNMAP_DECL): Removed. + (FT_MUNMAP_PARAM): Updated syntax to autoconf 2.59. + + * builds/unix/freetype2.m4: Updated syntax to autoconf 2.59. + + * builds/unix/configure.ac: Use AC_CONFIG_HEADERS instead of + AC_CONFIG_HEADER to create ftconfig.h, and use second argument + to replace `/undef' with `#undef'. + Don't use FT_MUNMAP_DECL but AC_CHECK_DECLS to check for munmap. + Use AS_HELP_STRING in AC_ARG_WITH. + Update syntax to autoconf 2.59. + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.7.8. + * builds/unix/configure: Regenerated with autoconf 2.59. + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org + * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from + `texinfo' CVS module at subversions.gnu.org. + + * builds/vms/ftconfig.h: Synchronized with ANSI version. + + * docs/CUSTOMIZE: Fix documentation error. + * docs/CHANGES, docs/VERSION.DLL, docs/release: Updated. + + * builds/freetype.mk (refdoc): Updated --title. + +2003-11-07 David Turner + + + * Version 2.1.6 released. + ========================= + + + * install: Removed. Obsolete. + +2003-11-04 Werner Lemberg + + * src/sfnt/sfdriver.c: Include FT_SERVICE_SFNT_H. + (sfnt_service_sfnt_table): New service. + (sfnt_services): Updated. + + * docs/license.txt: Reworded. + +2003-11-03 Werner Lemberg + + * include/freetype/*: Add a guard to all public header files which + load FT_FREETYPE_H to reject freetype.h from FreeType 1. + +2003-11-02 Patrick Welche + + * builds/unix/freetype2.m4, builds/unix/ft-munmap.m4: Protect + first argument of AC_DEFUN with brackets to avoid possible + expansion. + +2003-11-02 Werner Lemberg + + * include/freetype/cache/ftcglyph.h: Don't include stddef.h. + + * include/freetype/freetype.h: Fix check for ft2build.h. + +2003-11-01 Werner Lemberg + + * include/freetype/freetype.h: Check that ft2build.h has been + loaded first. + + * src/base/fttype1.c (FT_Get_PS_Font_Info): Fix incorrectly applied + patch. + +2003-10-31 Detlef Würkner + + * src/base/fttype1.c (FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names): + Fix parameter order in calls to FT_FACE_FIND_SERVICE. + +2003-10-31 Werner Lemberg + + * include/freetype/internal/ftserv.h + (FT_SERVICE_POSTSCRIPT_NAMES_H): Removed. Unused. + + * src/type42/t42drivr.c (t42_services): Updated. + +2003-10-29 David Turner + + * include/freetype/internal/bdftypes.h: Removed. Obsolete. + * src/base/ftbdf.c: Updated. + + * include/freetype/internal/cfftypes.h: Moved to... + * src/cff/cfftypes.h: This place since no other module needs to + know about those types. + + * include/freetype/internal/t42types.h: Moved to... + * src/type42/t42types.h: This place since no other module needs to + know about those types. + + * include/freetype/internal/services/svbdf.h: Include FT_BDF_H. + + * include/freetype/internal/services/svpsname.h: Renamed to... + * include/freetype/internal/services/svpscmap.h: This. + Updated `FT_Service_PsNames' -> `FT_Service_PsCMaps' and + `POSTSCRIPT_NAMES' -> `POSTSCRIPT_CMAPS' everywhere. + + * include/freetype/internal/services/svpsinfo.h: New file, providing + PostScript info service. + + * include/freetype/internal/ftserv.h (FT_SERVICE_POSTSCRIPT_CMAPS_H, + FT_SERVICE_POSTSCRIPT_INFO_H): New macros for svpscmap.h and + svpsinfo.h. + * include/freetype/internal/internal.h (FT_INTERNAL_TYPE42_TYPES_H, + FT_INTERNAL_CFF_TYPES_H, FT_INTERNAL_BDF_TYPES_H): Removed. + + * src/base/fttype1.c: Don't include FT_INTERNAL_TYPE1_TYPES_H and + FT_INTERNAL_TYPE42_TYPES_H but FT_INTERNAL_SERVICE_H and + FT_SERVICE_POSTSCRIPT_INFO_H. + (FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names): Use new + POSTSCRIPT_INFO service. + + * src/cff/cffdrivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (cff_ps_has_glyph_names): New function. + (cff_service_ps_info): New service. + (cff_services): Updated. + + * src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h: Don't + include FT_INTERNAL_CFF_TYPES_H but cfftypes.h directly. + + * src/cid/cidriver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (cid_ps_get_font_info): New function. + (cid_service_ps_info): New service. + (cid_services): Updated. + + * src/type1/t1driver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (t1_ps_get_font_info, t1_ps_has_glyph_names): New functions. + (t1_service_ps_info): New service. + (t1_services): Updated. + + * src/type42/t42drivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (t42_ps_get_font_info, t42_ps_has_glyph_names): New functions. + (t42_service_ps_info): New service. + + * src/type42/t42objs.h: Don't include FT_INTERNAL_TYPE42_TYPES_H + but t42types.h directly. + + * src/psnames/psmodule.c (psnames_interface, psnames_services): + Renamed to... + (pscmaps_interface, pscmaps_services): This. + Updated all users. + + + * src/gzip/infblock.c (inflate_blocks): Remove compiler warning. + +2003-10-22 Werner Lemberg + + * src/type1/t1load.c (parse_encoding): Handle `/Encoding [ ... ]'. + + * src/type1/t1parse.c (T1_Get_Private_Dict): Test whether `eexec' + is real. + + * src/type42/t42parse.c (t42_parse_encoding): Improve boundary + checking while parsing. + + * docs/CHANGES: Updated. + +2003-10-21 Josselin Mouette + + * include/freetype/internal/t1types.h (T1_FontRec): `paint_type' + and `stroke_width' aren't pointers. + + * src/type42/t42objs.c (T42_Face_Done), src/type1/t1objs.c + (T1_Face_Done): Don't free `paint_type' and `stroke_width'. + +2003-10-20 Graham Asher + + * src/winfonts/winfnt.c (fnt_cmap_class): Fix position of `const'. + +2003-10-19 Werner Lemberg + + * src/autohint/ahhint.c (ah_hinter_load_glyph): Patch from + 2003-08-18 introduced a severe bug (FT_Render_Glyph was called + twice under some circumstances, causing strange results). This + is fixed now by clearing the FT_LOAD_RENDER bit of `load_flags'. + + * src/base/ftpfr.c (FT_Get_PFR_Metrics): Initialize `error'. + * src/psaux/psobjs.c (ps_tobytes): Initialize `n'. + * src/type42/t42parse.c (t42_parse_sfnts): Initialize `string_size'. + +2003-10-16 Werner Lemberg + + Completely revised Type 42 parser. It now handles both fonts + produced with ttftot42 (tested version 0.3.1) and + TrueTypeToType42.ps (tested version May 2001; it is necessary to + fix the broken header comment to be `%!PS-TrueTypeFont...'). + + * src/type42/t42objs.c (T42_GlyphSlot_Load): Change fourth + parameter to `FT_UInt'. + * src/type42/t42objs.h: Updated. + + * src/type42/t42parse.h (T42_ParserRec): Change type of `in_memory' + to FT_Bool. + (T42_Loader): Change type of `num_chars' and `num_glyphs' to + FT_UInt. + Add `swap_table' element. + * src/type42/t42parse.c (T42_KEYWORD_COUNT, T1_ToFixed, + T1_ToCoordArray, T1_ToTokenArray): Removed. + (T1_ToBytes): New macro. + (t42_is_alpha, t42_hexval): Removed. + (t42_is_space): Handle `\0'. + (t42_parse_encoding): Updated to use new PostScript parser routines + from psaux. + Handle `/Encoding [ ... ]' also. + (T42_Load_Status): New enumeration. + (t42_parse_sfnts): Updated to use new PostScript parser routines + from psaux. + (t42_parse_charstrings): Updated to use new PostScript parser + routines from psaux. + Handle `/CharStrings << ... >>' also. + Don't expect that /.notdef is the first element in dictionary. Copy + code from type1 module to handle this. + (t42_parse_dict): Updated to use new PostScript parser routines + from psaux. + Remove code for synthetic fonts (which can't occur in Type 42 + fonts). + (t42_loader_done): Release `swap_table'. + + * src/psaux/psobjs.c (skip_string): Increase `cur' properly. + + * src/type1/t1load.c (parse_charstrings): Make test for `.notdef' + faster. + +2003-10-15 Graham Asher + + * src/autohint/ahglobal.c (blue_chars), src/winfonts/winfnt.c + (fnt_cmap_class_rec, fnt_cmap_class), src/bdf/bdflib.c (empty, + _num_bdf_properties), src/gzip/infutil.c (inflate_mask), + src/gzip/inffixed.h (fixed_bl, fixed_bd, fixed_tl, fixed_td), + src/gzip/inftrees.h (inflate_trees_fixed), src/gzip/inftrees.c + (inflate_trees_fixed): Decorate with more `const' to avoid + writable global variables which are disallowed on ARM. + +2003-10-08 Werner Lemberg + + * src/type1/t1load.c (parse_font_matrix, parse_charstrings): Remove + code specially for synthetic fonts; this is handled elsewhere. + (parse_encoding): Remove code specially for synthetic fonts; this is + handled elsewhere. + Improve boundary checking while parsing. + (parse_dict): Improve boundary checking while parsing. + Use ft_memcmp to simplify code. + +2003-10-07 Werner Lemberg + + * src/type1/t1load.c (parse_subrs, parse_dict): Handle synthetic + fonts properly. + (parse_charstrings): Copy correct number of characters into + `name_table'. + +2003-10-06 Werner Lemberg + + Heavy modification of the PS parser to handle comments and strings + correctly. This doesn't slow down the loading of PS fonts + significantly since charstrings aren't affected. + + * include/freetype/config/ftstdlib.h (ft_xdigit): Renamed to... + (ft_isxdigit): This. Updated all callers. + (ft_isdigit): New alias to `isdigit'. + + * include/freetype/internal/psaux.h (PS_Parser_FuncsRec): Renamed + `skip_alpha' to `skip_PS_token'. + Add parameter to `to_bytes' and change some argument types. + + * src/psaux/psauxmod.c (ps_parser_funcs): Updated. + * src/psaux/psobjs.c (ft_char_table): New array to map character + codes (ASCII and EBCDIC) of digits to numbers. + (OP): New auxiliary macro holding either `>=' or `<' depending on + the character encoding. + (skip_comment): New function. + (skip_spaces): Use it. + (skip_alpha): Removed. + (skip_literal_string, skip_string): New functions. + (ps_parser_skip_PS_token): New function. This is a better + replacement of... + (ps_parser_skip_alpha): Removed. + (ps_parser_to_token, ps_parser_to_token_array): Updated. + (T1Radix): Rewritten, using `ft_char_table'. + (t1_toint): Renamed to... + (ps_toint): This. Update all callers. + Use `ft_char_table'. + (ps_tobytes): Add parameter to handle delimiters and change some + argument types. + Use `ft_char_table'. + (t1_tofixed): Renamed to... + (ps_tofixed): This. Update all callers. + Use `ft_char_table'. + (t1_tocoordarray): Renamed and updated to... + (ps_tocoordarray): This. Update all callers. + (t1_tofixedarray): Renamed and updated to... + (ps_tofixedarray): This. Update all callers. + (t1_tobool): Renamed to... + (ps_tobool): This. Update all callers. + (ps_parser_load_field): Updated. + (ps_parser_load_field_table): Use `T1_MAX_TABLE_ELEMENTS' + everywhere. + (ps_parser_to_int, ps_parser_to_fixed, ps_parser_to_coord_array, + ps_parser_to_fixed_array): Skip spaces. Updated. + (ps_parser_to_bytes): Add parameter to handle delimiters and change + some argument types. Updated. + * src/psaux/psobjs.h: Updated. + + * src/cid/cidload.c (cid_parse_dict): Updated. + * src/cid/cidparse.c (cid_parser_new): Check whether the `StartData' + token was really found. + * src/cid/cidparse.h (cid_parser_skip_alpha): Updated and renamed + to... + (cid_parser_skip_PS_token): This. + + * src/type1/t1parse.h (T1_ParserRec): Use `FT_Bool' for boolean + fields. + (T1_Skip_Alpha): Replaced with... + (T1_Skip_PS_Token): This new macro. + * src/type1/t1parse.c (hexa_value): Removed. + (T1_Get_Private_Dict): Use `ft_isxdigit' and + `psaux->ps_parser_funcs_to_bytes' for handling ASCII hexadecimal + encoding. + After decrypting, replace the four random bytes at the beginning + with whitespace. + * src/type1/t1load.c (t1_allocate_blend): Use proper error values. + (parser_blend_design_positions, parse_blend_design_map, + parse_weight_vector): Updated. + (is_space): Handle `\f' also. + (is_name_char): Removed. + (read_binary_data): Updated. + (parse_encoding): Use `ft_isdigit'. + Updated. + (parse_subrs): Updated. + (TABLE_EXTEND): New macro. + (parse_charstrings): Updated. + Provide a workaround for buggy fonts which have more entries in the + /CharStrings dictionary then expected; the function now adds some + slots and skips entries which still exceed the new limit. + (parse_dict): Updated. + Terminate on the token `closefile'. + + * src/type42/t42parse.c (T1_Skip_Alpha): Replaced with... + (T1_Skip_PS_Token): This new macro. Updated all callers. + (t42_parse_encoding): Use `ft_isdigit'. + + + * src/base/ftmm.c (ft_face_get_mm_service): Return FT_Err_Ok if + success. + +2003-10-05 Werner Lemberg + + * include/freetype/ftmodule.h: Renamed to... + * include/freetype/ftmodapi.h: This to avoid duplicate file names. + * include/freetype/config/ftheader.h (FT_MODULE_H): Updated. + +2003-10-04 Werner Lemberg + + * src/base/ftoutln.c (FT_OrientationExtremumRec, + FT_Outline_Get_Orientation): Trivial typo fixes to make it compile. + +2003-10-02 Markus F.X.J. Oberhumer + + * src/winfonts/winfnt.c (FT_WinFNT_HeaderRec): `color_table_offset' + has four bytes, not two. + Fix all users. + (fnt_font_load, FNT_Load_Glyph): Add more font validity tests. + +2003-10-01 David Turner + + * src/autofit/*: Adding first source files of the new multi-script + `auto-fitter'. + + * include/freetype/ftoutln.h (FT_Orientation): New enumeration. + (FT_Outline_Get_Orientation): New declaration. + + * src/base/ftoutln.c (FT_OrientationExtremumRec): New structure. + (ft_orientation_extremum_compute): New auxiliary function. + (FT_Outline_Get_Orientation): New function to compute the fill + orientation of a given glyph outline. + + * include/freetype/internal/ftserv.h (FT_FACE_LOOKUP_SERVICE): Fixed + trivial bug which could crash the font engine when a cached service + pointer was retrieved. + +2003-09-30 Werner Lemberg + + * src/cid/cidload.c (cid_parse_dict): Skip token if no keyword is + found. + + * src/type1/t1parse.c (IS_T1_WHITESPACE, IS_T1_LINESPACE, + IS_T1_SPACE): Removed. + (PFB_Tag): Removed. + (read_pfb_tag): Don't use PFB_Tag. + + * src/type42/t42parse.c (t42_is_space): Handle `\f' also. + (t42_parse_encoding): Handle synthetic fonts. + +2003-09-29 Werner Lemberg + + * include/freetype/internal/t1types.h: Don't include + FT_INTERNAL_OBJECTS_H but FT_INTERNAL_SERVICE_H. + * src/truetype/ttobjs.c: Don't include + FT_SERVICE_POSTSCRIPT_NAMES_H. + +2003-09-29 David Turner + + Added new service to handle glyph name dictionaries, replacing the + old internal header named `psnames.h' by `services/svpsname.h'. + Note that this is different from `services/svpostnm.h' which only + handles the retrieval of PostScript font names for a given face. + (Should we merge these two services into a single header?) + + * include/freetype/internal/psnames.h: Removed. Most of its + contents is moved to... + * include/freetype/internal/services/svpsname.h: New file. + + * include/freetype/internal/services/svpostnm.h + (FT_SERVICE_ID_POSTSCRIPT_NAME): Replaced with... + (FT_SERVICE_ID_POSTSCRIPT_FONT_NAME): New macro. + (PsName): Service named changed to... + (PsFontName): This. + Updated `FT_Service_PsName' -> `FT_Service_PsFontName' and + `POSTSCRIPT_NAME' -> `POSTSCRIPT_FONT_NAME' everywhere. + + * include/freetype/internal/internal.h + (FT_INTERNAL_POSTSCRIPT_NAMES_H): Removed. + * include/freetype/internal/psaux.h: Include + FT_SERVICE_POSTSCRIPT_NAMES_H. + (T1_DecoderRec): Updated type of `psnames'. + * include/freetype/internal/t1types.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + Include FT_INTERNAL_OBJECTS_H. + * include/freetype/internal/t42types.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H. + * include/freetype/internal/tttypes.h (TT_FaceRec): Updated. + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): Changed + order of parameters. All callers updated. + (FT_FACE_FIND_GLOBAL_SERVICE): New macro to look up a service + globally, checking all modules. + (FT_ServiceCacheRec): Updated. + (FT_SERVICE_POSTSCRIPT_NAMES_H): New macro for accessing + `svpsname.h'. + + * include/freetype/internal/ftobjs.h, src/base/ftobjs.c + (ft_module_get_service): New function. + + * src/cff/cffdrivr.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cff_get_glyph_name, cff_get_name_index): Use new POSTSCRIPT_NAMES + service. + * src/cff/cffcmap.c (cff_cmap_unicode_init): Updated. + * src/cff/cffload.c, src/cff/cffload.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cff_index_get_sid_string): Updated. + * src/cff/cffobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cff_face_init): Use new POSTSCRIPT_NAMES service. + * src/cff/cffobjs.h: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + + * src/cid/cidobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cid_face_init): Use new POSTSCRIPT_NAMES service. + * src/cid/cidriver.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H. + + * src/psaux/t1cmap.c (t1_cmap_std_init, t1_cmap_unicode_init): Use + new POSTSCRIPT_NAMES service. + * src/psaux/t1decode.h (t1_lookup_glyph_by_stdcharcode, + t1_decode_init): Use new POSTSCRIPT_NAMES service. + * src/psaux/t1cmap.h, src/psaux/t1decode.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H. + + * src/psnames/psmodule.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + (ps_build_unicode_table): Renamed to... + (ps_unicodes_init): This. + (ps_lookup_unicode): Renamed to... + (ps_unicodes_char_index): This. + (ps_next_unicode): Renamed to... + (ps_unicodes_char_next): This. + (psnames_interface): Updated. + (psnames_services): New services list. + (psnames_get_service): New function. + (psnames_module_class): Updated. + + * src/sfnt/sfobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (sfnt_init_face): Use new POSTSCRIPT_NAMES service. + * src/sfnt/ttpost.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (tt_face_get_ps_name): Updated. + + * src/truetype/ttobjs.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + + * src/type1/t1driver.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + * src/type1/t1objs.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + (T1_Face_Init): Use new POSTSCRIPT_NAMES service. + + * src/type42/t42drivr.c (t42_get_ps_name): Renamed to... + (t42_get_ps_font_name): This. + (t42_service_ps_name): Renamed to... + (t42_service_ps_font_name): This. + (t42_services): Updated. + * src/type42/t42objs.c (T42_Face_Init): Use new POSTSCRIPT_NAMES + service. + * src/type42/t42objs.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + + + * src/base/ftglyph.c (FT_Get_Glyph): Don't access `slot' before + testing its validity. Reported by Henry Maddocks + . + +2003-09-21 Werner Lemberg + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): + Fix compilation warning (s/pptr/Pptr/). + + * include/freetype/internal/internal.h (FT_INTERNAL_PFR_H, + FT_INTERNAL_FNT_TYPES_H): Removed. + +2003-09-21 David Turner + + Migrating the PFR and WINFNT drivers to the new service-based + internal API. + + * include/freetype/internal/fnttypes.h: Removed. Most of its data + are moved to winfnt.h and... + * include/freetype/internal/services/svwinfnt.h: New file. + + * include/freetype/internal/pfr.h: Removed. Most of its data are + moved to... + * include/freetype/internal/services/svpfr.h: New file. + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, + FT_FACE_LOOKUP_SERVICE): Simplify fix of 2003-09-16 by removing + pointer type argument. + Updated all callers. + Update macro names of services header files. + + * src/base/ftobjs.c (FT_Get_Name_Index): Simplified code. + + * src/base/ftpfr.c: Include FT_SERVICE_PFR_H instead of + FT_INTERNAL_PFR_H. + (ft_pfr_check, FT_Get_PFR_Metrics, FT_Get_PFR_Kerning, + FT_Get_PFR_Advance): Use services provided in `PFR_METRICS'. + + * src/base/ftwinfnt.c: Include FT_SERVICE_WINFNT_H instead of + FT_INTERNAL_FNT_TYPES_H. + (FT_Get_WinFNT_Header): Use service provided in `WINFNT'. + + * src/pfr/pfrdrivr.c: Include FT_SERVICE_PFR_H and + FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_PFR_H. + (pfr_service_bdf): Updated. + (pfr_services): New services list. + (pfr_get_service): New function. + (pfr_driver_class): Updated. + + * src/winfonts/winfnt.c: Include FT_SERVICE_WINFNT_H and + FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_FNT_TYPES_H. + (winfnt_get_header, winfnt_get_service): New functions. + (winfnt_service_rec): New structure providing WINFNT services. + (winfnt_services): New services list. + (winfnt_driver_class): Updated. + * src/winfonts/winfnt.h: Add most of the removed fnttypes.h data. + + * src/sfnt/sfdriver.c (sfnt_service_ps_name): Fix typo. + + * src/type1/t1driver.c (t1_service_ps_name): Fix typo. + + * src/cff/cffobjs.c, src/cid/cidobjs.c, src/pfr/pfrsbit.c, + src/psaux/psobjs.c, src/sfnt/sfobjs.c, src/truetype/ttobjs.c, + src/type1/t1objs.c, src/type42/t42objs.c: Removing various compiler + warnings. + +2003-09-19 David Bevan + + * src/type1/t1parse.c (pfb_tag_fields): Removed. + (read_pfb_tag): Fix code so that it doesn't fail on end-of-file + indicator (0x8003). + * docs/CHANGES: Updated. + +2003-09-16 Werner Lemberg + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, + FT_FACE_LOOKUP_SERVICE): Add parameter to pass pointer type. + Ugly, I know, but this is needed for compilation with C++ -- + maybe someone knows a better solution? + Updated all callers. + + * src/base/ftobjs.c (FT_Get_Name_Index, FT_Get_Glyph_Name): Remove + C++ compiler warnings. + + * src/base/ftbdf.c (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): + Fix order of arguments passed to FT_FACE_FIND_SERVICE. + +2003-09-15 Werner Lemberg + + Avoid header files with identical names. + + * include/freetype/internal/services/bdf.h: Renamed to... + * include/freetype/internal/services/svbdf.h: This. + Add copyright notice. + * include/freetype/internal/services/glyfdict.h: Renamed to... + * include/freetype/internal/services/svgldict.h: This. + Add copyright notice. + * include/freetype/internal/services/multmast.h: Renamed to... + * include/freetype/internal/services/svmm.h: This. + Add copyright notice. + Add FT_BEGIN_HEADER and FT_END_HEADER. + * include/freetype/internal/services/sfnt.h: Renamed to... + * include/freetype/internal/services/svsfnt.h: This. + Add copyright notice. + * include/freetype/internal/services/postname.h: Renamed to... + * include/freetype/internal/services/svpostnm.h: This. + Add copyright notice. + * include/freetype/internal/services/xf86name.h: Renamed to... + * include/freetype/internal/services/svxf86nm.h: This. + Add copyright notice. + + * include/freetype/internal/ftserv.h: Add FT_BEGIN_HEADER and + FT_END_HEADER. + Add copyright notice. + Update macro names of services header files. + + * builds/freetype.mk (SERVICES_DIR): New variable. + (BASE_H): Add services header files. + +2003-09-11 Werner Lemberg + + * builds/toplevel.mk (distclean): Remove `builds/unix/freetype2.pc'. + + * src/cff/cffdrivr.c: Don't load headers twice. + + * include/freetype/internal/ftserv.h (FT_SERVICE_SFNT_H): New macro. + * src/base/ftobjs.c: Include FT_SERVICE_SFNT_H. + + * src/cff/cffcmap.c: Include `cfferrs.h'. + * src/pfr/pfrdrivr.c: Include `pfrerror.h'. + * src/sfnt/sfdriver.c: Include `sferrors.h'. + * src/psaux/psobjs.h: Add declaration for `ps_parser_to_bytes'. + +2003-09-11 David Turner + + Introducing the concept of `module services'. This is the first + step towards a massive simplification of the engine's internals, in + order to get rid of various numbers of hacks. + + Note that these changes will break source & binary compatibility for + authors of external font drivers. + + * include/freetype/config/ftconfig.h (FT_BEGIN_STMNT, FT_END_STMNT, + FT_DUMMY_STMNT): New macros. + + * include/freetype/internal/ftserv.h: New file, containing the new + structures and macros to provide `services'. + + * include/freetype/internal/internal.h (FT_INTERNAL_EXTENSION_H, + FT_INTERNAL_EXTEND_H, FT_INTERNAL_HASH_H, FT_INTERNAL_OBJECT_H): + Removed, obsolete. + (FT_INTERNAL_SERVICE_H): New macro for `ftserv.h'. + + * include/freetype/internal/services/bdf.h, + include/freetype/internal/services/glyfdict.h, + include/freetype/internal/services/postname.h, + include/freetype/internal/services/xf86name.h: New files. + + * include/freetype/ftmm.h (FT_Get_MM_Func, FT_Set_MM_Design_Func, + FT_Set_MM_Blend_Func): Function pointers moved (in modified form) + to... + * include/freetype/internal/services/multmast.h: New file. + + * include/freetype/internal/sfnt.h (SFNT_Interface): `get_interface' + is now of type `FT_Module_Requester'. + (SFNT_Get_Interface_Func, SFNT_Load_Table_Func): Function pointers + moved (in modified form) to... + * include/freetype/internal/services/sfnt.h: New file. + + * include/freetype/tttables.h (FT_Get_Sfnt_Table_Func): Function + pointer moved (in modified form) to `services/sfnt.h'. + + * include/freetype/ftmodule.h (FT_Module_Interface): Make it a + a typedef to `FT_Pointer'. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Add + `postscript_name'. + * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove + `postscript_name'. + Add `services' element. + (FT_LibraryRec): Remove `meta_class'. + + * src/base/ftbdf.c: Include FT_SERVICE_BDF_H. + (test_font_type): Removed. + (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Use services + provided in `FT_SERVICE_ID_BDF'. + + * src/base/ftmm.c: Include FT_SERVICE_MULTIPLE_MASTERS_H. + (ft_face_get_mm_service): New auxiliary function to get services + from `FT_SERVICE_ID_MULTI_MASTERS'. + (FT_Get_Multi_Master, FT_Set_MM_Design_Coordinates, + FT_Set_MM_Blend_Coordinates): Use `ft_face_get_mm_service'. + + * src/base/ftobjs.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and + FT_SERVICE_GLYPH_DICT_H. + (ft_service_list_lookup): New function to get a specific service. + (destroy_face): Updated. + (Mac_Read_POST_Resource): Simplify some code. + (IsMacResource): Fix warnings. + (FT_Get_Name_Index, FT_Get_Glyph_Name): Use services provided in + `FT_SERVICE_ID_GLYPH_DICT'. + (FT_Get_Postscript_Name): Use service provided in + `FT_SERVICE_ID_POSTSCRIPT_NAME'. + (FT_Get_Sfnt_Table, FT_Load_Sfnt_Table): Use services provided in + `FT_SERVICE_ID_SFNT_TABLE'. + + * src/base/ftxf86.c: Include FT_SERVICE_XFREE86_NAME_H. + (FT_Get_X11_Font_Format): Use service provided in + `FT_SERVICE_ID_XF86_NAME'. + + * src/bdf/bdfdrivr.c: Include FT_SERVICE_BDF_H and + FT_SERVICE_XFREE86_NAME_H. + (bdf_get_charset_id): New function. + (bdf_service_bdf): New structure providing BDF services. + (bdf_services): New services list. + (bdf_driver_requester): Use `ft_service_list_lookup'. + + * src/cff/cffdrivr.c: Include FT_SERVICE_XFREE86_NAME_H and + FT_SERVICE_GLYPH_DICT_H. + (cff_service_glyph_dict): New structure providing CFF services. + (cff_services): New services list. + (cff_get_interface): Use `ft_service_list_lookup'. + + * src/cid/cidriver.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and + FT_SERVICE_XFREE86_NAME_H. + (cid_service_ps_name): New structure providing CID services. + (cid_services): New services list. + (cid_get_interface): Use `ft_service_list_lookup'. + + * src/pcf/pcfdrivr.c: Include FT_SERVICE_BDF_H and + FT_SERVICE_XFREE86_NAME_H. + (pcf_service_bdf): New structure providing PCF services. + (pcf_services): New services list. + (pcf_driver_requester): Use `ft_service_list_lookup'. + + * src/sfnt/sfdriver.c: Include FT_SERVICE_GLYPH_DICT_H and + FT_SERVICE_POSTSCRIPT_NAME_H. + (get_sfnt_glyph_name): Renamed to... + (sfnt_get_glyph_name): This. + (get_sfnt_postscript_name): Renamed to... + (sfnt_get_ps_name): This. + Updated. + (sfnt_service_glyph_dict, sfnt_service_ps_name): New structures + providing services. + (sfnt_services): New services list. + (sfnt_get_interface): Use `ft_service_list_lookup'. + + * src/truetype/ttdriver.c: Include FT_SERVICE_XFREE86_NAME_H. + (tt_services): New services list. + (tt_get_interface): Use `ft_service_list_lookup'. + + * src/type1/t1driver.c: Include FT_SERVICE_MULTIPLE_MASTERS_H, + FT_SERVICE_GLYPH_DICT_H, FT_SERVICE_XFREE86_NAME_H, and + FT_SERVICE_POSTSCRIPT_NAME_H. + (t1_service_glyph_dict, t1_service_ps_name, + t1_service_multi_masters): New structures providing Type 1 services. + (t1_services): New services list. + (Get_Interface): Use `ft_service_list_lookup'. + + * src/type42/t42drivr.c: Include FT_SERVICE_XFREE86_NAME_H, + FT_SERVICE_GLYPH_DICT_H, and FT_SERVICE_POSTSCRIPT_NAME_H. + (t42_service_glyph_dict, t42_service_ps_name): New structures + providing Type 42 services. + (t42_services): New services list. + (T42_Get_Interface): Use `ft_service_list_lookup'. + + + * README, docs/CHANGES: Updating version numbers for 2.1.6, and + removing obsolete warnings in the documentation. + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6. + * builds/unix/configure.ac (version_info): Set to 9:5:3. + * builds/unix/configure: Regenerated. + + * include/freetype/internal/ftcore.h, + include/freetype/internal/ftexcept.h, + include/freetype/internal/fthash.h, + include/freetype/internal/ftobject.h: Removed. Obsolete. + +2003-09-09 David Turner + + Fixing PFR kerning support. The tables within the font file contain + (charcode,charcode) kerning pairs, we need to convert them to + (gindex,gindex). + + * src/base/ftpfr.c (ft_pfr_check): Fix serious typo. + * src/pfr/pfrload.c: Remove dead code. + (pfr_get_gindex, pfr_compare_kern_pairs, pfr_sort_kerning_pairs): + New functions. + (pfr_phy_font_done): Free `kern_pairs'. + (pfr_phy_font_load): Call `pfr_sort_kerning_pairs'. + * src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix kerning extraction. + * src/pfr/pfrtypes.h (PFR_KERN_PAIR_INDEX): New macro. + (PFR_KernPairRec): Make `kerning' an FT_Int. + (PFR_PhyFontRec): New element `kern_pairs'. + (PFR_KernFlags): Values of PFR_KERN_2BYTE_CHAR and + PFR_KERN_2BYTE_ADJ were erroneously reversed. + + * include/freetype/ftoption.h: Commenting out the macro + TT_CONFIG_OPTION_BYTECODE_INTERPRETER. + +2003-09-02 David Turner + + + * Version 2.1.5 released. + ========================= + + +2003-08-31 Manish Singh + + * src/bdf/bdflib.c (_bdf_readstream): Don't use FT_MEM_COPY but + FT_MEM_MOVE. + +2003-08-30 Werner Lemberg + + * include/freetype/freetype.h (FT_ENCODING_SJIS, FT_ENCODING_GB2312, + FT_ENCODING_BIG5, FT_ENCODING_WANSUNG, FT_ENCODING_JOHAB): New + enumerations of FT_Encoding. The FT_ENCODING_MS_* variants except + FT_ENCODING_MS_SYMBOL are now deprecated. + Updated all users. + * docs/CHANGES: Document it. + +2003-08-27 Werner Lemberg + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Accept lowercase characters + for spacing. + +2003-08-27 Mike FABIAN + + * src/pcf/pcfread.c (pcf_load_font), src/bdf/bdfdrivr.c + (BDF_Face_Init): Accept lowercase characters for slant and weight. + +2003-08-18 David Turner + + * include/freetype/config/ftoption.h: Disabling TrueType bytecode + interpreter until the UNPATENTED_HINTING works as advertised. + + * src/autohint/ahhint.c (ah_hinter_load_glyph): Use `|' for + setting `load_flags'. + + * Jamfile: Adding the `refdoc' target to the Jamfile in order to + build the API Reference in `docs/reference' automatically. + + * include/freetype/t1tables.h (PS_FontInfoRec), src/cid/cidtoken.h, + src/type1/t1tokens.h, src/type42/t42parse.c: Resetting the types of + `italic_angle', `underline_position', and `underline_thickness' to + their previous values (i.e., long, short, and ushort) in order to + avoid breaking binary compatibility. + + * include/freetype/ttunpat.h: Fixing documentation comment. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING): Replaced with... + (TT_CONFIG_OPTION_UNPATENTED_HINTING): This. Updated all users. + (TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING): Removed. + + * include/freetype/internal/ftobjs.h (FT_DEBUG_HOOK_TYPE1): Removed. + (FT_DEBUG_HOOK_UNPATENTED_HINTING): New macro. Use this with + `FT_Set_Debug_Hook' to get the same effect as the removed + TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING. + + * src/truetype/ttobjs.c (tt_face_init): Use + `FT_DEBUG_HOOK_UNPATENTED_HINTING'. + +2003-08-06 Werner Lemberg + + * src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c + (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Fix + previous change. + +2003-08-05 Werner Lemberg + + * src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c + (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Apply + font matrix to advance width also. + * docs/CHANGES: Updated. + +2003-07-26 Werner Lemberg + + * builds/unix/configure.ac (version_info): Set to 9:4:3. + * builds/unix/configure: Updated. + * docs/CHANGES, docs/VERSION.DLL: Updated. + + * include/freetype/freetype.h (FT_GlyphSlot): Change 2003-06-16 + also breaks binary compatibility. Reintroduce an unsigned integer + at the old position of `flags' called `reserved'. + +2003-07-25 Werner Lemberg + + Make API reference valid HTML 4.01 transitional. + + * src/tools/docmaker/tohtml.py (html_header_1): Add doctype + and charset. + (html_header_2): Fix style elements and add some more. + Fix syntax. + (block_header, block_footer, description_header, description_footer, + marker_header, marker_footer, source_header, source_footer, + chapter_header): Don't use
    ...
    but `align=center' + table attribute. + (chapter_inter, chapter_footer): Add
  • and use special
  • x`7gN~{5jzT-P%qtgww}%Szp_RrWQO#~!CcEJ@J_P&{D!DS&JxeRAMgi;S)kVW zpb7qwfu_~}m3T@yB)RrCpX$rxORrhPbksQwVXVlqiofd3*B`F4r2Vm2Gk*gto+O9; z1kGGge>hW`m1j!Fq&vH=9fgNSt7lO zC1rB(Ib4K>O;`6|QAt))ZY_c+XSl^O2AT?#5$T!cv?M(U z0wnrP8nxoT)I-`>lXUnbmnkh<({>IzoTadhkFEATxiZt$pWv7)lgfFt)Zd;vSnphI Z6FU>PL=k_|+Ii@*pvLST*mJ5P{D0Y59`^tM literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/da.po b/local/recipes/dev/gnu-make/source/po/da.po new file mode 100644 index 0000000000..512179ebf7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/da.po @@ -0,0 +1,2656 @@ +# Danish messages for make +# Copyright (C) 2001, 2016, 2022 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Byrial Ole Jensen , 2001 +# Ask Hjorth Larsen , 2010, 2016, 2022. +# +# Ordliste +# -------- +# +# archive -> arkiv +# member (i arkiv) -> element +# library -> bibliotek +# recipe -> opskrift? +# pipe -> pipe +# +msgid "" +msgstr "" +"Project-Id-Version: make-4.3.91\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-20 19:19+0200\n" +"Last-Translator: Ask Hjorth Larsen \n" +"Language-Team: Danish \n" +"Language: da\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" + +#: 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:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "\"touch arkivelement\" er ikke tilgængelig pÃ¥ VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Arkivet \"%s\" findes ikke" + +#: 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:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Elementet \"%s\" findes ikke i \"%s\"" + +#: 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\"" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() kunne ikke udtrække modulinformation, status = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() fejlede med status = %d" + +#: src/arscan.c:261 +#, c-format +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: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 "Element \"%s\"%s: %ld byte ved %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (navnet kan være forkortet)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Tidsstempel %s" + +#: 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:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Opskriften har for mange linjer (grænsen er %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Afbrydelse.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Arkivelementet \"%s\" er mÃ¥ske falsk; ikke slettet" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Arkivelementet \"%s\" er mÃ¥ske falsk; ikke slettet" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Sletter filen \"%s\"" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Sletter filen \"%s\"" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# kommandoer der skal køres" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (indbyggede):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (fra \"%s\", linje %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Filkataloger\n" + +#: 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: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: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: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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (nøgle %s, mtime %s): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (enhed %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Ingen" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " filer, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "ingen" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " umuligheder" + +#: src/dir.c:1180 +msgid " so far." +msgstr " indtil videre." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " umuligheder i %lu kataloger.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "uafsluttet variabelreference" + +#: 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: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: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: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: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: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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Sletter mellemfil \"%s\"" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Sletter mellemfiler ...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Tidsstempel i forkert omrÃ¥de; bruger %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ikke et mÃ¥l:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Værdifuld fil (forudsætning for .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Falsk mÃ¥l (forudsætning for .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# KommandolinjemÃ¥l." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Et forvalg, MAKEFILES, eller -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Indbygget regel" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Der er udført implicit regelsøgning." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Der er ikke udført implicit regelsøgning." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Implicit/statisk mønsterstamme: \"%s\"\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Filen er en mellemfil." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Ændringstid ikke tjekket." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Filen findes ikke." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Filen er meget gammel." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Sidst ændret %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Filen er blevet opdateret." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Filen er ikke blevet opdateret." + +#: 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:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Kommandoer for afhængigheder køres nu (DETTE ER EN FEJL)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Opdateret med godt resultat." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Behøver opdatering (-q er sat)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Opdatering mislykkedes." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ugyldig værdi i \"command_state\"-felt!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Filer" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# Statistik for fil-hash-spande:\n" +"# " + +#: 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:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: tom værdi" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: \"%s\" uden for gyldigt interval" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "ugyldigt første argument til \"word\"-funktionen" + +#: src/function.c: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:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "ugyldigt første argument til \"wordlist\"-funktionen" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "ugyldigt andet argument til \"wordlist\"-funktionen" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "ikke-numerisk første argument til \"intcmp\"-funktionen" + +#: src/function.c: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=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) mislykkedes (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) mislykkedes (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() mislykkedes (e=%lu)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Afrydder midlertidig batchfil %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "fil: mangler filnavn" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "Ã¥bn: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "skriv: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "luk: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "fil: for mange argumenter" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "læs: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "fil: ugyldig filoperation: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "utilstrækkeligt antal argumenter (%u) til funktionen \"%s\"" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "ikke implementeret pÃ¥ denne platform: funktionen \"%s\"" + +#: 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:2791 +#, c-format +msgid "Empty function name" +msgstr "Tomt funktionsnavn" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Ugyldigt funktionsnavn: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Funktionsnavn er for langt: %s" + +#: 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:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Utilstrækkeligt antal argumenter (%u) til funktionen \"%s\"" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: tilvalget \"%s\" er flertydigt\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: tilvalget \"--%s\" tillader ikke et argument\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: tilvalget \"%c%s\" tillader ikke et argument\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s tilvalget \"%s\" kræver et argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: ukendt tilvalg \"--%s\"\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: ukendt tilvalg \"%c%s\"\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ulovligt tilvalg -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ugyldigt tilvalg -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: tilvalg kræver et argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: tilvalget \"-W %s\" er flertydigt\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: tilvalget \"-W %s\" tillader ikke et argument\n" + +# expand er normalt at skrive noget ud frem for at forkorte det. F.eks. %s -> "hello" +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Udskriver \"%s\"\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Evaluerer \"%s\"\n" + +#: src/hash.c:50 +#, c-format +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 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Fyldning=%lu/%lu=%.0f %%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Omgrupperinger=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Sammenstød=%lu/%lu=%.0f %%" + +#: 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:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Kigger efter en implicit regel for arkivelementer for \"%s\".\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Ingen implicit regel for arkivelementer for \"%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:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Prøver mønsterreglen \"%s\" med stammen \"%.*s\".\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stamme for lang: \"%s%.*s\".\n" + +#: src/implicit.c:768 +#, c-format +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:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Prøver regelforudsætning \"%s\".\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Prøver implicit forudsætning \"%s\".\n" + +#: 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 "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Bruger kompatibilitetsreglen \"%s\" pÃ¥ grund af \"%s\".\n" + +#: 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/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:552 +msgid " (core dumped)" +msgstr " (core-fil efterladt)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr "(ignoreret)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Fejl %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Venter pÃ¥ uafsluttede job...." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (eksternt)" + +#: 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: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:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Rydder midlertidig batchfil %s\n" + +#: 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: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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Frigav symbol for underproces %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() fejlede ved igangsætning af proces (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Talte %d argumenter i fejlet igangsætning\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Fik symbol for underproces %p (%s).\n" + +#: 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: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:2106 +msgid "cannot enforce load limit: " +msgstr "kan ikke gennemtvinge belastningsgrænse: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "ikke flere filhÃ¥ndtag: Kunne ikke duplikere stdin" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "ikke flere filhÃ¥ndtag: Kunne ikke duplikere stdout" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "ikke flere filhÃ¥ndtag: kunne ikke duplikere stderr" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Kunne ikke gendanne stdin" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Kunne ikke gendanne stdout" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Kunne ikke gendanne stderr" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: miljøplads er mÃ¥ske opbrugt" + +#: 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:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Opretter midlertidig batchfil %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Indhold af batchfil:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Indhold af batchfil:%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 (linje %d) Forkert skal-kontekst (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Kunne ikke Ã¥bne global symboltabel: %s" + +#: 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: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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Tomt symbolnavn ved indlæsning: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Indlæser symbol %s fra %s\n" + +#: 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" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Tilvalg:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignoreret af hensyn til kompabilitet.\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C KATALOG, --directory=KATALOG\n" +" Skift allerførst til KATALOG.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d Udskriv en masse fejlsøgningsinformation.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=FLAG] Udskriv diverse fejlsøgningsinformationer.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Miljøvariable har forrang for makefiler.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E STRENG, --eval=STRENG Evaluér STRENG som en makefil-erklæring.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FIL, --file=FIL, --makefile=FIL\n" +" Læs FIL som en makefil.\n" + +#: 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:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignorér fejl fra kommandoer.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I KATALOG, --include-dir=KATALOG\n" +" Søg i KATALOG efter inkluderede makefiler.\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] Tillad N samtidige job;\n" +" ubegrænset antal hvis N ikke er givet.\n" + +#: 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: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 kun flere job hvis belastning er under " +"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 Brug sidste mtime mellem symbolske lænker og " +"mÃ¥l.\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" +" Udfør ikke nogen kommandoer; udskriv dem " +"bare.\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 FIL, --old-file=FIL, --assume-old=FIL\n" +" Anse FIL som forældet og genskab den ikke.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synkronisér udskrift af parallelle job efter " +"TYPE\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Udfør ingen kommandoer; afslutningskoden " +"angiver\n" +" om mÃ¥let er tidssvarende.\n" + +#: 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: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: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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Udskriv opskrifter (slÃ¥ tilstanden --silent " +"fra).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" SlÃ¥r -k fra.\n" + +#: 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:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Udskriv trace-information.\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Udskriv det aktuelle katalog.\n" + +#: 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; ogsÃ¥ hvis slÃ¥et til 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 FIL, --what-if=FIL, --new-file=FIL, --assume-new=FIL\n" +" Anse FIL som værende nyskabt.\n" + +#: 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: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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "ukendt specifikation af fejlsøgningsniveau \"%s\"" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "ukendt type \"%s\" af output-sync" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Brug: %s [tilvalg] [mÃ¥l] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Dette program er bygget til %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Dette program er bygget til %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Send fejlmeldinger (pÃ¥ engelsk) til .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Afbrydelse/undtagelse fanget (kode = 0x%lx, addr = 0x%p)\n" + +#: src/main.c: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" +"UhÃ¥ndteret undtagelsesfilter kaldt fra program %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 "Adgangskrænkelse: skriveoperation pÃ¥ adresse 0x%p\n" + +#: 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: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: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: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." +msgstr "" +"advarsel: jobserver ikke tilgængelig: bruger -j1. Tilføj \"+\" til " +"ophavsmakeregel." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "advarsel: -j%d tvunget i undermake: nulstiller jobservertilstand." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefil fra standard-ind er angivet to gange" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: midlertidig fil %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "advarsel: -j%d tvunget i makefil: nulstiller jobservertilstand." + +#: 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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Sætter tilbage til enkelt job-tilstand (-j1)." + +#: 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: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: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: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:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Inkluderet makefil \"%s\" blev ikke fundet." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefilen \"%s\" blev ikke fundet" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Kunne ikke skifte tilbage til det oprindelige katalog" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Udfører igen[%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Ingen mÃ¥l" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Opdaterer endemÃ¥l....\n" + +# build? +#: 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: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:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "\"-%c\"-tilvalget kræver et positivt heltalligt argument" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sBygget til %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sBygget til %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicens GPLv3+: GNU GPL v3 eller nyere \n" +"%sDette er frit programmel: Du kan frit ændre og videredistribuere det.\n" +"%sDer gives INGEN GARANTI i den grad, som dette tillades af loven.\n" + +# %s giver dato og klokkeslæt +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Makedatabase, udskrevet %s" + +# %s giver dato og klokkeslæt +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Afsluttet makedatabase %s\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Bruger standardopskrift for \"%s\".\n" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "opret midlertidig fil %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink midlertidig fil %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: midlertidig fil %s: %s" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Forlader et ukendt katalog\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: GÃ¥r til katalog \"%s\"\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Forlader katalog \"%s\"\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Forlader et ukendt katalog\n" + +#: 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:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Forlader katalog \"%s\"\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"advarsel: Kan ikke indhente outputlÃ¥s, deaktiverer synkronisering af output." + +#: 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 "Kan ikke Ã¥bne jobserver %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "ukendt auth-stil \"%s\" for jobserver" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "opretter job-pipe" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "kopierer job-pipe" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "klargøring af jobserver-pipe" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "ugyldig \"--jobserver-auth\"-streng \"%s\"" + +# ? +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "skriv jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "jobserver lukket ned" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect job-pipe" + +# ? +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "læs job-pipe" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Læser makefilen \"%s\"" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (ingen standard-endemÃ¥l)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (søgesti)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (ikke nødvendig)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (ingen ~-udfoldning)" + +#: 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:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Springer UTF-8-BOM over i makefilbuffer\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "ugyldig syntaks i betingelse" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "kommandoer begynder før første mÃ¥l" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "manglende regel før kommandoer" + +#: 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:1156 +#, c-format +msgid "missing separator" +msgstr "manglende skilletegn" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "manglende mÃ¥lmønster" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "flere mÃ¥lmønstre" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "mÃ¥lmønster indeholder ingen \"%%\"" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "mangler \"endif\"" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "tomt variabelnavn" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "overskydende tekst efter \"define\"-direktiv" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "manglende \"endef\", uafsluttet \"define\"" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "overskydende tekst efter \"endef\"-direktiv" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "overskydende tekst efter \"%s\"-direktiv" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "overskydende \"%s\"" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "kun én \"else\" per betingelse" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Misdannet mÃ¥lspecifik variabeldefinition" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "grupperede mÃ¥l skal angive en opskrift" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "blandede implicitte og statiske mønsterregler" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "blandede implicitte og normale regler" + +#: 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: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: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:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "advarsel: tilsidesætter opskrift for mÃ¥let \"%s\"" + +#: 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:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** blandede implicitte og normale regler: forældet syntaks" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "advarsel: tilsidesætter gruppemedlemsskab for mÃ¥let \"%s\"" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "advarsel: NUL-tegn set; resten af linjen ignoreres" + +# 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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "\"%s\" er tidssvarende." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Beskærer fil \"%s\".\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sIngen regel til at skabe mÃ¥let \"%s\"%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Overvejer mÃ¥lfilen \"%s\".\n" + +#: 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Filen \"%s\" er allerede overvejet.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Opdaterer stadig fil \"%s\".\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Opdatering af fil \"%s\" afsluttet.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Filen \"%s\" findes ikke.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Advarsel: .LOW_RESOLUTION_TIME-fil \"%s\" har et tidsstempel med høj " +"opløsning" + +# peer? +#: src/remake.c:538 +#, c-format +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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Bruger standardopskrift for \"%s\".\n" + +#: 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:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Afsluttede forudsætningerne for mÃ¥lfilen \"%s\".\n" + +#: 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:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Opgiver mÃ¥lfil \"%s\".\n" + +#: 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: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: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: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: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: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: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:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Skaber \"%s\" pga. \"always-make\"-flag.\n" + +#: 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:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; bruger VPATH-navnet \"%s\"" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Skal genskabe mÃ¥let \"%s\".\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Ignorerer VPATH-navnet \"%s\".\n" + +#: 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:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Genskabelse af mÃ¥lfilen \"%s\" mislykkedes.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "MÃ¥lfilen \"%s\" genskabt.\n" + +#: 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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Bruger standardkommandoer for \"%s\".\n" + +#: 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:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +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:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customs kan ikke eksporteres: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "advarsel: ignorerer forudsætninger for suffiks-regeldefinition" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Implicitte regler" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Ingen implicitte regler." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u implicitte regler, %u (%.1f %%) terminal." + +#: 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" + +# De fleste af signalnavnene fra signame.c er kopieret fra libc.da.po, +# kun ganske enkelte findes ikke der. +#: src/signame.c:92 +msgid "Hangup" +msgstr "Læg pÃ¥" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Afbrudt" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Afslut" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Ulovlig instruktion" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Sporings-/stoppunkts-fælde" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Afbrudt" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT_fælde" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Emulatorfælde" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Undtagelsestilfælde ved flydendetals-operation" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Dræbt" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Busfejl" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Lagersegmentfejl" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Ugyldigt systemkald" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Pipe blev brudt" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarmen gik" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Termineret" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Brugerdefineret signal 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Brugerdefineret signal 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Barnet afsluttet" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Strømmen gik" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Stoppet" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Stoppet (ville læse fra tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Stoppet (ville skrive til tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Stoppet (signal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Begrænsning af CPU-tid overskredet" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Grænse for filstørrelse overskredet" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtuel tidsgrænse overskredet" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Profileringstiden udløb" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Vinduet blev ændret" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Fortsættes" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Kritisk I/O-tilstand" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O mulig" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Resurse tabt" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Faresignal" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Informationsforespørgsel" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Flydendetalshjælpeprocessor ikke tilgængelig" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Ingen strcache-buffere\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 strcache-buffere: %lu (%lu) / strenge = %lu / lager = %lu B / middel = " +"%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 nuværende buf: størrelse = %hu B / brugt = %hu B / antal = %hu / middel = " +"%u B\n" + +# Ikke sikker pÃ¥ hvad %s er +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s øvrigt brugt: i alt = %lu B / antal = %lu / middel = %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 øvrigt frit: i alt = %lu B / maks = %lu B / min = %lu B / middel = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache-ydelse: opslag = %lu / træffere = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# statistik for hashtabel:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatisk" + +#: src/variable.c:1789 +msgid "default" +msgstr "forvalgt" + +#: src/variable.c:1792 +msgid "environment" +msgstr "miljø" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefil" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "miljø med -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "kommandolinje" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "\"override\"-direktiv" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (fra \"%s\", linje %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# Statistik for variabelsæt-hash-spande:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabler\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Mønsterspecifikke variabelværdier" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Ingen mønsterspecifikke variabelværdier." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u mønsterspecifikke variabelværdier" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "advarsel: udefineret variabel \"%.*s\"" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() mislykkedes med %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-advarsel, du kan blive nødt til at genetablere CTRL-Y-behandling fra DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN 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 "Tilføj uddata til slutningen af %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Tilføj %.*s og ryd op\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Udfører i stedet %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH-søgestier\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Ingen \"vpath\"-søgestier." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u \"vpath\"-søgestier.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Ingen generel (\"VPATH\"-variabel) søgesti." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Generel (\"VPATH\"-variabel) søgesti:\n" +"# " + +#: 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:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "opretter jobserver-semafor: (Fejl %ld: %s)" + +#: 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:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Jobserverklient (semafor %s)\n" + +#: 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: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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Kommando ikke fundet\n" + +#~ 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..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "udført sleep(30). Fortsætter.\n" + +#~ 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" + +#~ msgid " terminal." +#~ msgstr " terminale." + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Ugyldig værdi i 'update_status'-felt!" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Fejl 0x%x (ignoreret)" + +#~ msgid "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] Fejl 0x%x" + +#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n" +#~ msgstr "Kører kommandoer fra %s:%lu for at opdatere mÃ¥let '%s'.\n" + +#~ msgid "Invoking builtin recipe to update target `%s'.\n" +#~ msgstr "Kører indbyggede kommandoer for at opdatere mÃ¥let '%s'.\n" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "intern fejl: flere '--jobserver-fds'-tilvalg" + +#~ msgid "dup jobserver" +#~ msgstr "dup jobserver" + +#~ msgid "virtual memory exhausted" +#~ msgstr "virtuel hukommelse opbrugt" + +#~ msgid "write error" +#~ msgstr "skrivefejl" + +#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n" +#~ msgstr "%s # strcache-buffere: %d (* %d B/buffer = %d B)\n" + +#~ msgid "" +#~ "\n" +#~ "# strcache hash-table stats:\n" +#~ "# " +#~ msgstr "" +#~ "\n" +#~ "# statistik for strcache-hashtabeller:\n" +#~ "# " + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Advarsel: Tom omdirigering\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "intern fejl: '%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 "Ukendt indbygget kommando '%s'\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Fejl, tom kommando\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Omdirigeret inddata from %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Omdirigeret fejl to %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Omdirigeret uddata til %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Fejl ved spawn, %d\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "Syntaksfejl, stadig inden i '\"'\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "Fik et SIGCHLD; %u uhøstede børn.\n" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-advarsel, CTRL-Y vil efterlade underproces(ser).\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Angiv ikke -j eller --jobs hvis sh.exe ikke er tilgængelig." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Sætter make tilbage til enkelt job-tilstand." + +#~ 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 "" +#~ "%sDette er frit programmel; se kildeteksten for kopieringsbetingelser.\n" +#~ "%sDer er INGEN garanti; end ikke for SALGBARHED eller EGNETHED TIL NOGET\n" +#~ "%sBESTEMT FORMÃ…L.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "fremmed 'endef'" + +#~ msgid "empty `override' directive" +#~ msgstr "tomt 'override'-direktiv" + +#~ msgid "invalid `override' directive" +#~ msgstr "ugyldigt 'override'-direktiv" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "intet filnavn for '%sinclude'" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "mÃ¥l '%s' efterlader forudsætningsmønstret tomt" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Ingen filer." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u filer i %u hash-spande .\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "# %.3f filer per spand i gennemsnit, maks. %u filer i en spand.\n" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "Stands proces for at tillade et fejlsøgningsprogram at hænge sig pÃ¥" + +#~ msgid "# No variables." +#~ msgstr "# Ingen variabler." + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "# %.1f variabler per spand i gennemsnit, maks. %u i en spand.\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "# %d.%d variabler per spand i gennemsnit, maks. %u i en spand.\n" diff --git a/local/recipes/dev/gnu-make/source/po/de.gmo b/local/recipes/dev/gnu-make/source/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..67840b8d5395ae13218ad15b00b7c6cb5a062883 GIT binary patch literal 52220 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 literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/de.po b/local/recipes/dev/gnu-make/source/po/de.po new file mode 100644 index 0000000000..915dd06026 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/de.po @@ -0,0 +1,2547 @@ +# 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. +# Jochen Hein , 1996. +# Alexander Mader , 1997. +# Alexander Mader , 2000. +# Karl Eichwalder , 2002, 2005. +# Philipp Thomas 2013, 2016 +# Roland Illig , 2020, 2022. +# +# Vereinheitlichen: +# ================= +# command(s) -> Befehl(e)? (nicht: Kommando(s)) +# target(s) -> Ziel(e) (nicht: Target(s)) +# +msgid "" +msgstr "" +"Project-Id-Version: 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-26 00:56+0200\n" +"Last-Translator: Roland Illig \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.2\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "Versuch, eine nicht unterstützte Funktionalität zu verwenden: „%s“" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "" +"VMS bietet keine Möglichkeit einer Änderung\n" +"der Zeitmarken von Archiveinträgen" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Archiv „%s“ existiert nicht" + +#: 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:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Eintrag „%s“ existiert nicht in „%s“" + +#: 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 von ar_member_touch auf „%s“" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "„lbr$set_module()“ konnte keine Modulinformation auslesen; Status = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "„lbr$ini_control()“ scheiterte mit Status = %d" + +#: src/arscan.c:261 +#, 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 " +"zu suchen" + +#: 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: %ld Bytes an Position %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (der Name ist möglicherweise abgeschnitten)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Datum %s" + +#: 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:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Das Rezept hat zu viele Zeilen (maximal %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Abbruch.\n" + +#: 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: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:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Datei „%s“ wird gelöscht" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Datei „%s“ wird gelöscht" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# Auszuführendes Rezept" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (eingebaut):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (aus „%s“, Zeile %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Verzeichnisse\n" + +#: 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:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "" +"# %s ( Schlüssel %s, letzte Änderung %s): konnte nicht geöffnet werden.\n" + +#: 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]): konnte nicht geöffnet werden.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (Gerät %ld, Inode %ld): konnte nicht geöffnet werden.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (Schlüssel %s, letzte Änderung %s): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (Gerät %ld, Inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Keine" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " Dateien, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "keine" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " Unmöglichkeiten" + +#: src/dir.c:1180 +msgid " so far." +msgstr " bisher." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " Unmöglichkeiten in %lu Verzeichnissen.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "Nicht abgeschlossene Variablenreferenz" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Das Rezept für die Datei „%s“ wurde in %s:%lu angegeben," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"Das Rezept für die Datei „%s“ wurde aufgrund der Suche nach impliziten " +"Regeln gefunden," + +#: 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 wie „%s“ betrachtet." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "Das Rezept für „%s“ wird ignoriert, das für „%s“ wird bevorzugt." + +#: 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 „%s“ mit doppeltem Doppelpunkt " +"geändert werden" + +#: 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 „%s“ mit einfachem Doppelpunkt " +"geändert werden" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Löschen der Zwischendatei „%s“" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\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:942 +msgid "Current time" +msgstr "Aktuelle Zeit" + +#: 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:1089 +msgid "# Not a target:" +msgstr "# Dies ist kein Ziel:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Wertvolle Datei (benötigt von .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Vorgetäuschtes Ziel (benötigt von .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Kommandozeilen-Ziel." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Eine standardmäßige, MAKEFILES oder -include/sinclude Makedatei." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Eingebaute Regel" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Die Suche nach impliziten Regeln wurde durchgeführt." + +#: 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:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Stamm für implizite/statische Muster: „%s“\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Datei ist ein Zwischenschritt in den Voraussetzungen." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Zeit der letzten Änderung wurde nicht überprüft." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Die Datei existiert nicht." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Datei ist sehr alt." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Zuletzt geändert %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Datei wurde aktualisiert." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Datei wurde nicht aktualisiert." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Derzeit läuft das Rezept (DIES IST EIN FEHLER)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Derzeit läuft das Rezept für Abhängigkeiten (DIES IST EIN FEHLER)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Erfolgreich aktualisiert." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Eine Aktualisierung ist notwendig (-q ist angegeben)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Aktualisierung ist fehlgeschlagen." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ungültiger Wert im „command_state“-Strukturelement!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Dateien" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# Statistik der Hash-Tabelle für Dateien:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Feld „%s“ wird nicht zwischengespeichert: %s" + +#: 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:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "Das erste Argument der Funktion „word“ muss größer als 0 sein" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "Das erste Argument der Funktion „wordlist“ ist ungültig" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "Das zweite Argument der Funktion „wordlist“ ist ungültig" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "Das erste Argument der Funktion „intcmp“ muss numerisch sein" + +#: src/function.c: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=%lu)\n" +msgstr "windows32_openpipe: „DuplicateHandle(In)“ ist fehlgeschlagen (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "" +"windows32_openpipe: „DuplicateHandle(Err)“ ist fehlgeschlagen (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "„CreatePipe()“ ist fehlgeschlagen (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() ist fehlgeschlagen\n" + +#: 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:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "Datei: fehlender Dateiname" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "Öffnen: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "Schreiben: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "Schließen: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "Datei: zu viele Argumente" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "Lesen: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "Unzulässige Dateioperation: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "Zu wenig Argumente (%u) für die Funktion „%s“" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "Auf dieser Rechnerkonfiguration nicht implementiert: Funktion „%s“" + +#: 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:2791 +#, c-format +msgid "Empty function name" +msgstr "Leerer Funktionsname" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Unzulässiger Funktionsname: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Der Funktionsname ist zu lang: %s" + +#: 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: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“" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: Option „%s“ ist mehrdeutig\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: Option „--%s“ erlaubt kein Argument\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: Option „%c%s“ erlaubt kein Argument\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: Option „%s“ erfordert ein Argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: unbekannte Option „--%s“\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: unbekannte Option „%c%s“\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: unzulässige Option -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ungültige Option -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: Option erfordert ein Argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: Option „-W %s“ ist mehrdeutig\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: Option „-W %s“ erlaubt kein Argument\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: „%s“ wird expandiert\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%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: " +"Arbeitsspeicher erschöpft" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Auslastung=%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 "Kollisionen=%lu/%lu=%.0f%%" + +#: 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: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:61 +#, c-format +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: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:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Muster-Regel „%s“ mit Stamm „%.*s“ wird probiert.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stamm zu lang: „%s%.*s“.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" +"Regel „%s“ wird abgelehnt, da die vorausgesetzte Regel „%s“ unmöglich ist.\n" + +#: src/implicit.c: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:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Regel-Voraussetzung „%s“ wird ausprobiert.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Implizite Voraussetzung „%s“ wird ausprobiert.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s“ sollte eigentlich existieren.\n" + +#: src/implicit.c:834 +#, c-format +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 "" +"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/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/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:557 +msgid " (ignored)" +msgstr " (ignoriert)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Fehler %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Es wird auf noch nicht beendete Prozesse gewartet …" + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (entfernt)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Erfolgreicher Kindprozess %p PID %s %s wird eingesammelt\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Erfolgloser Kindprozess %p PID %s %s wird eingesammelt\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Temporäre Stapelverarbeitungsdatei „%s“ wird aufgeräumt\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "" +"Fehler beim Aufräumen der temporären Stapelverarbeitungsdatei „%s“ (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Kindprozess %p PID %s%s wird aus der Kette entfernt.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Token des Kindprozesses %p PID (%s) wurde freigegeben.\n" + +#: 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:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"%d Argumente gehörten zum fehlgeschlagenen Prozessstart\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Kindprozess %p (%s) PID %s%s wird in die Kette aufgenommen.\n" + +#: 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:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: Ziel „%s“ wird aktualisiert wegen: %s" + +#: 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 der Lastbeschränkung nicht " +"erzwungen werden" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "Lasteinschränkung kann nicht erzwungen werden: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"Keine weiteren Datei-Handles verfügbar: die Standardeingabe konnte nicht " +"dupliziert werden" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"Keine weiteren Datei-Handles verfügbar: die Standardausgabe konnte nicht " +"dupliziert werden" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"Keine weiteren Datei-Handles verfügbar: die Standardfehlerausgabe konnte " +"nicht dupliziert werden" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Die Standardeingabe konnte nicht wiederhergestellt werden" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Die Standardausgabe konnte nicht wiederhergestellt werden" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Standardfehlerausgabe konnte nicht wiederhergestellt werden" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" +"„make“ hat den Kindprozess %s eingesammelt, wartet jedoch noch auf den " +"Prozess %s\n" + +#: 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:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL gewechselt (war „%s“, ist jetzt „%s“)\n" + +#: 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:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Inhalt der Stapelverarbeitungsdatei:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Inhalt der Stapelverarbeitungsdatei:%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 (Zeile %d) Falscher Shell-Kontext (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Die globale Symboltabelle konnte nicht geöffnet werden: %s" + +#: 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 "Das geladene Objekt %s wurde nicht als GPL-kompatibel deklariert" + +#: 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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Zu ladender Symbolname ist leer: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Symbol %s wird aus %s geladen\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Gemeinsames Objekt %s wird entladen\n" + +#: 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:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr "" +" -b, -m Wird aus Kompatibilitätsgründen ignoriert\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make Alle Ziele ohne Bedingungen erstellen.\n" + +#: 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\n" +" wird.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d Viele Informationen zur Fehlersuche ausgeben.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=KENNUNGEN] Verschiedene Arten von Informationen zur\n" +" Fehlersuche ausgeben.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Umgebungsvariablen überschreiben Makedateien.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E ZKETTE, --eval=ZKETTE ZEICHENKETTE wie einen Makedatei-Eintrag\n" +" auswerten.\n" + +#: 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 Makedatei einlesen.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Diese Meldung ausgeben und beenden.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Fehler in Rezepten ignorieren.\n" + +#: 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" + +#: 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;\n" +" weggelassenes N bedeutet beliebig viele.\n" + +#: 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 Ziele nicht\n" +" erzeugt werden konnten.\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" +" Jobs nur dann starten, wenn die Auslastung\n" +" unter N ist.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -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: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 Rezepte ausführen, nur ausgeben.\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 DATEI, --old-file=DATEI, --assume-old=DATEI\n" +" DATEI als sehr alt ansehen und nicht neu\n" +" erzeugen.\n" + +#: 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" +" Die Ausgabe paralleler Jobs nach TYP\n" +" synchronisieren.\n" + +#: 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" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Keine Rezepte ausführen; der Exit-Status gibt " +"an,\n" +" ob die Dateien aktuell sind.\n" + +#: 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:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Die eingebauten Variablenbelegungen\n" +" deaktivieren.\n" + +#: 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 Rezepte nicht ausgeben.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Rezepte ausgeben\n" +" (deaktiviert den --silent-Modus).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" -k abschalten.\n" + +#: 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" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" +" --trace Informationen zur Spurensuche ausgeben.\n" + +#: 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\n" +" Programm beenden\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Das aktuelle Verzeichnis ausgeben.\n" + +#: 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\n" +" eingeschaltet wurde.\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 DATEI, --what-if=DATEI, --new-file=DATEI, --assume-new=DATEI\n" +" DATEI als unendlich neu erachten.\n" + +#: 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" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "Schreibfehler: Standardausgabe" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "Unbekanntes Debug-Level „%s“ angegeben" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%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:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Diese Programm wurde für %s (%s) gebaut\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Fehlermeldungen (auf Englisch) bitte an senden.\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" +"%s: bekam Unterbrechung/Ausnahme signalisiert (Code = 0x%lx, Adr = 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" +"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:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Zugriffsverletzung: Schreiboperation an Adresse 0x%p\n" + +#: 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: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" + +#: 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 setzt default_shell = %s\n" + +#: 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 „+“ hinzu." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"Warnung: -j%d in „make“-Verarbeitungszweig erzwungen: Jobserver-Modus wird " +"zurückgesetzt." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Die Makedatei wurde zweimal über die Standardeingabe angegeben" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: temporäre Datei „%s“: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"Warnung: -j%d in Makedatei erzwungen: Jobserver-Modus wird zurückgesetzt." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "" +"Parallele Abarbeitung (-j) wird auf dieser Plattform nicht unterstützt." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Umstellung auf Einzel-Job-Verarbeitung (-j1)." + +#: 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 Verknüpfungen werden nicht unterstützt: -L wird abgeschaltet." + +#: 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 "Makedateien werden aktualisiert …\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" +"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:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Makedatei „%s“ konnte nicht neu erstellt werden." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Die eingebundene Makedatei „%s“ wurde nicht gefunden." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Die Makedatei „%s“ wurde nicht gefunden" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Konnte nicht in das ursprüngliche Verzeichnis wechseln" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Erneute Ausführung[%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Keine Ziele" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Es wurden keine Ziele angegeben und keine Makedatei gefunden" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Ziele werden aktualisiert …\n" + +#: 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" +" Der Bauauftrag könnte unvollständig sein." + +#: 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: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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sGebaut für %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sGebaut für %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLizenz GPLv3+: GNU GPL Version 3 oder später \n" +"%sDies ist freie Software: Sie können sie nach Belieben ändern und weiter " +"verteilen.\n" +"%sSoweit es die Gesetze erlauben, gibt es KEINE GARANTIE.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# „Make“-Datenbank; Stand vom %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Ende der „Make“-Datenbank vom %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s Wert %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s Wert %s: kein Verzeichnis" + +#: 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:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "Erzeugen der temporären Datei „%s“: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "Entfernen der temporären Datei „%s“: %s" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: ein unbekanntes Verzeichnis wird verlassen\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Verzeichnis „%s“ wird betreten\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Verzeichnis „%s“ wird verlassen\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Ein unbekanntes Verzeichnis wird verlassen\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Verzeichnis „%s“ wird betreten\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Verzeichnis „%s“ wird verlassen\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"Warnung: keine Ausgabesperre möglich, daher wird die Ausgabesynchronisation " +"deaktiviert." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Schluss.\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 "Jobserver %s kann nicht geöffnet werden: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Unbekannte Authentifizierungsart „%s“ für Jobserver" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "Öffnen der Pipe für die Jobs" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "Duplizieren der Pipe für die Jobs" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "Initialisierung der Pipe für den Jobserver" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "ungültige Zeichenkette „%s“ für --jobserver-auth" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "Schreiben zum Job-Server" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "Jobserver ist heruntergefahren" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect der Jobs-Pipeline" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +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/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 "Makedateien werden gelesen …\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Makedatei „%s“ wird gelesen" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (kein Standard-Ziel)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (Suchpfad)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (Datei darf auch fehlen)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (keine ~-Auflösung)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "UTF-8 BOM in Makedatei „%s“ wird übersprungen\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "UTF-8 BOM im Makedatei-Puffer wird übersprungen\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "Ungültige Syntax in der Bedingung" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "Rezept beginnt vor dem ersten Ziel" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "Es fehlt eine Regel vor dem Rezept" + +#: 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?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "Fehlender Trenner" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "Es fehlt ein Ziel-Muster" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "Mehrfache Ziel-Muster" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "Ziel-Muster enthält kein „%%“" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "Fehlendes „endif“" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "Leerer Variablenname" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "Überflüssiger Text nach einer „define“-Anweisung" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "Fehlendes „endef“, nicht abgeschlossenes „define“" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "Überflüssiger Text nach einer „endef“-Anweisung" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "Überflüssiger Text nach einer „%s“-Anweisung" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "Überflüssiges „%s“" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "Es ist nur ein „else“ pro Bedingung erlaubt" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Falsche Ziel-bezogene Variablendefinition" + +#: 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 Rezepten definiert werden" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "Gruppierte Ziele müssen ein Rezept angeben" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "Implizite und statische Muster-Regeln wurden vermischt" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "Implizite und normale Regeln wurden vermischt" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "Das Ziel „%s“ passt nicht zum Ziel-Muster" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "Die Zieldatei „%s“ enthält sowohl „:“- als auch „::“-Einträge" + +#: 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" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "Warnung: Das Rezept für das Ziel „%s“ wird überschrieben" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "Warnung: Das alte Rezept für das Ziel „%s“ wird ignoriert" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** Implizite und normale Regeln wurden vermischt" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" +"Warnung: Die Gruppenmitgliedschaft für das Ziel „%s“ wird überschrieben" + +#: 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: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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s“ ist bereits aktuell." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Die Datei „%s“ wird „gestutzt“ (der Abhängigkeitsgraph).\n" + +#: 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“, benötigt von „%s“, zu erstellen%s" + +#: 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:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Betrachte Zieldatei „%s“.\n" + +#: 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, dies schlug " +"aber fehl.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Die Datei „%s“ wurde bereits betrachtet.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Die Datei „%s“ wird immer noch aktualisiert.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Aktualisierung der Datei „%s“ beendet.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Die Datei „%s“ existiert nicht.\n" + +#: 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 " +"hochaufgelösten Zeitstempel" + +#: src/remake.c:538 +#, c-format +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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Das Standard-Rezept für „%s“ wird verwendet.\n" + +#: 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:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Fertig mit den Voraussetzungen für die Zieldatei „%s“.\n" + +#: 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:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Die Arbeit an der Zieldatei „%s“ wurde aufgegeben.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Das Ziel „%s“ wurde wegen Fehlern nicht neugemacht." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "Die Voraussetzung „%s“ ist „nur einsortiert“ für das Ziel „%s“.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Die Voraussetzung „%s“ für das Ziel „%s“ existiert nicht.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Die Voraussetzung „%s“ ist jünger als das Ziel „%s“.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Die Voraussetzung „%s“ ist älter als das Ziel „%s“.\n" + +#: 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 und keine Voraussetzungen.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" +"Kein Rezept für „%s“ und keine Voraussetzung wurde tatsächlich verändert.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "„%s“ wird aufgrund der Kennzeichnung als always-make erzeugt.\n" + +#: 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:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; VPATH-Name „%s“ wird verwendet" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Das Ziel „%s“ muss neu erzeugt werden.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Der VPATH-Name „%s“ wird ignoriert.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Das Rezept für „%s“ wird gerade ausgeführt.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Fehler beim Aktualisieren der Zieldatei „%s“.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Die Zieldatei „%s“ wurde erfolgreich aktualisiert.\n" + +#: 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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Für „%s“ werden die Standardbefehle verwendet.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "" +"Warnung: Die Änderungszeit der Datei „%s“ liegt %s Sekunden in der Zukunft" + +#: 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:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customs wird nicht exportieren: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "Warnung: Voraussetzungen der Suffixregel-Definition werden ignoriert" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Implizite Regeln" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Keine impliziten Regeln vorhanden." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u implizite Regeln, %u (%.1f%%) terminal." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %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" +msgstr "Unbekanntes Signal" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Aufgelegt" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Abgebrochen (Interrupt)" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Quit" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Illegaler Befehl" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Verfolgen/anhalten abfangen (Trace/breakpoint trap)" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Abgebrochen (Aborted)" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT abfangen (IOT trap)" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT abfangen (EMT trap)" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Gleitkommafehler" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Abgebrochen (Killed)" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Bus-Fehler" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Speicherzugriffsfehler" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Falscher Systemaufruf" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Zerstörte Pipe" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Wecksignal" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Beendet (Terminated)" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Nutzersignal 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Nutzersignal 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Kindprozess beendet" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Stromausfall" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Angehalten" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Angehalten (tty input)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Angehalten (tty output)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Angehalten (signal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU-Zeitschranke überschritten" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Dateigrößenschranke überschritten" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtueller Timer abgelaufen" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Profiling-Timer abgelaufen" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Fenster hat sich verändert" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Fortgesetzt" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Dringende I/O-Bedingung" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O möglich" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Ressource verlorengegangen" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Gefahrensignal" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Informationsanforderung" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Es ist kein Koprozessor für Gleitkommaoperationen vorhanden" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Keine Puffer für 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 Puffer für strcache: %lu (%lu) / Zeichenketten = %lu / Speicher = %lu B / " +"ø = %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 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: 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: Gesamt = %lu B / Max = %lu B / Min = %lu B / ø = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s Leistung von strcache: Suchen = %lu / Trefferrate = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# Statistik für Hashtabelle:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatisch" + +#: src/variable.c:1789 +msgid "default" +msgstr "Standard" + +#: src/variable.c:1792 +msgid "environment" +msgstr "Umgebung" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "Makedatei" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "Umgebung per -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "Kommandozeile" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "„override“-Anweisung" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (aus „%s“, Zeile %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "" +"# Hashtabellen-Statistik für Variablen:\n" +"\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variablen\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Musterspezifische Variablenwerte" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Keine musterspezifischen Variablenwerte." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u musterspezifische Variablenwerte" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "Warnung: undefinierte Variable „%.*s“" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "„sys$search“ schlug mit %d fehl\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-Warnung: Vielleicht müssen Sie STRG-Y aus DCL wieder ermöglichen.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN 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 "Ausgabe wird an %s angehängt\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "%.*s anhängen und aufräumen\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "%s wird stattdessen ausgeführt\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH-Suchpfade\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Keine „vpath“-Suchpfade." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u „vpath“-Suchpfade.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Kein allgemeiner Suchpfad (Variable „VPATH“)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Allgemeiner Suchpfad (Variable „VPATH“):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Zeitschlitze der Jobservers auf %d begrenzt\n" + +#: 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: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: (Fehler %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Jobserver-Klient (Semaphore %s)\n" + +#: 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:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "warten auf Semaphore oder Kindprozess: (Fehler %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "Mutex zur Ausgabesynchronisierung „%s“ hat falsche Form: %s" + +#: 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 "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: Nutzer %lu (tatsächlich %lu), Gruppe %lu (tatsächlich %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Initialisierter Zugriff" + +#~ msgid "User access" +#~ msgstr "Zugriff durch Benutzer" + +#~ msgid "Make access" +#~ msgstr "Zugriff durch „make“" + +#~ msgid "Child access" +#~ msgstr "Zugriff durch Kindprozess" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TYP] (--output-sync[=TYP]) ist für diese Bau-Aufgabe nicht " +#~ "konfiguriert." + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Jobserver-Klient (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "Initialisierung der Pipe für den Jobserver" diff --git a/local/recipes/dev/gnu-make/source/po/en@boldquot.header b/local/recipes/dev/gnu-make/source/po/en@boldquot.header new file mode 100644 index 0000000000..fedb6a06d1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/en@boldquot.header @@ -0,0 +1,25 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# diff --git a/local/recipes/dev/gnu-make/source/po/en@quot.header b/local/recipes/dev/gnu-make/source/po/en@quot.header new file mode 100644 index 0000000000..a9647fc35c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/en@quot.header @@ -0,0 +1,22 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# diff --git a/local/recipes/dev/gnu-make/source/po/es.gmo b/local/recipes/dev/gnu-make/source/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..4727bea4222d3e118bbdf69d0a69f4167236aa1f GIT binary patch literal 41411 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, 1996, 2011. +# Antonio Ceballos , 2013, 2014, 2016, 2019, 2020 +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2020-01-03 15:38+0100\n" +"Last-Translator: Antonio Ceballos \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "Se intentó utilizar una característica no implementada: '%s'" + +# Sugerencia: touch -> `touch'. sv +# Ok, aceptada. A falta de cursivas... mm +# No veo porqué no se ha de usar 'tocar' en vez de touch em+ +# El mensaje además hace referencia a un touch de un objeto dentro +# de una librería, y de eso no se dice nada en el mensaje. Creo que +# hay que tener cuidado con estas cosas. +# El programa para tocar un miembro de un archivo ... , y ahi estamos +# ya en problemas con el dichoso archivo/fichero. +# A ver que se os ocurre em+ +# 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: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:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: El archivo '%s' no existe" + +#: 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:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: El miembro '%s' no existe en '%s'" + +#: 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'" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"fallo en lbr$set_module() para extraer la información del módulo, estado = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "fallo en lbr$ini_control() con estado = %d" + +#: src/arscan.c:261 +#, c-format +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: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:996 +msgid " (name might be truncated)" +msgstr " (el nombre puede estar truncado)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Fecha %s" + +#: 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:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Las instrucciones tienen demasiadas líneas (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Interrumpir.\n" + +#: 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:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "" +"*** El miembro del archivo '%s' podría estar incorrecto; aunque no se elimina" + +# Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv +# Ok. mm +#: 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:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Se borra el archivo '%s'" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# las instrucciones para ejecutar" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (integrado):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (de '%s', linea %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Directorios\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +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: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:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "" +"# %s (dispositivo %d, nodo-i [%d,%d,%d]): posiblemente no se pueda abrir.\n" + +# ¿No sobraría el "posiblemente"? +# Propongo dejarlo en " no se pudo abrir ". sv +# Ok. Es consistente con otras traducciones. mm +#: 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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (llave %s, mtime %I64u): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (dispositivo %ld, nodo-i %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "No" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " archivos, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "no" + +#: 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:1180 +msgid " so far." +msgstr " hasta ahora." + +#: 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 +# No, no lleva acento. Me emocioné con elos. mm +# Creeis de veras que tiene sentido 'finalmente'em+ +# yo pondría ser termina autoreferenciando, por +# 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:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "la referencia a la variable está sin terminar" + +#: 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:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"Las instrucciones para el archivo '%s' se encontraron por búsqueda en reglas " +"implícitas," + +# "now" es "ahora". ¿te lo has comido consciente o inconscientemente? sv +# inconscientemente. mm +#: 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'." + +# Lo repetiré una y mil veces... :-) +# "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:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" +"Las instrucciones para '%s' no serán tenidas en cuenta en favor de las que " +"están en '%s'." + +# 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: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: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: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:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "*** Se borran los archivos intermedios...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Fecha fuera de intervalo; sustituyéndola %s" + +#: 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:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +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:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# objetivo falso (dependencia de .PHONY)." + +# FUZZY +# Pondria línea de comandos +# Y creo que no sé exactamente a que se refiere, No creo que haya visto +# este mensaje nunca en make lo marco con FUZZY em+ +# 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:1098 +msgid "# Command line target." +msgstr "# Objetivo en línea de instrucciones." + +# Habría que entender esto +# Creo que esto es lo que significa. El fuente no es demasiado claro. mm +# Se refiere a que el fichero makefile es uno que encuentra por +# defecto ( en este orden GNUmakefile, Makefile y makefile ) o uno +# que está definido en la variable de entorno MAKEFILE em+ +# 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:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Por omisión, MAKEFILES, o -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Regla incorporada" + +# Propongo efectuada en lugar de terminada. sv +# 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:1104 +msgid "# Implicit rule search has been done." +msgstr "# La búsqueda de reglas implícitas ha sido efectuada." + +# Propongo efectuada en lugar de terminada. sv +# 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:1105 +msgid "# Implicit rule search has not been done." +msgstr "# La búsqueda de reglas implícitas ha sido efectuada." + +#: 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: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:1117 +msgid "# Also makes:" +msgstr "# También hace:" + +# ¿y "comprobó"? sv +# 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:1123 +msgid "# Modification time never checked." +msgstr "# La fecha de modificación no se comprobó." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# El archivo no existe." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# El archivo es muy viejo." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Última modificación %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# El archivo ha sido actualizado." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# El archivo ha sido actualizado." + +#: 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: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:1151 +msgid "# Successfully updated." +msgstr "# Actualizado con éxito." + +#: 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:1158 +msgid "# Failed to be updated." +msgstr "# Fallo al ser actualizado." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# ¡Valor inválido en el miembro 'command_state'!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Archivos" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# estadísticas de la tabla «hash» de los archivos:\n" +"# " + +#: 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: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: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: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: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: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: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:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "Fallo en CreatePipe(), (e=%ld)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Limpiando el archivo temporal %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "archivo: falta el nombre del archivo" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "abrir: %s: %s" + +# Probablemente sea aquí donde haya que ponerle el "el" para que "Entering" +# concuerde bien con esta frase y con la anterior simultáneamente. sv +# No. Ya revisé el fuente y transcribo el trozo pertinente: +# 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/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "escribir: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "cerrar: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "archivo: demasiados argumentos" + +# 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/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "leer: %s: %s" + +#: 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: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:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "No implementado en esta plataforma: función '%s'" + +#: 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:2791 +#, c-format +msgid "Empty function name" +msgstr "Nombre de función vacío" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Nombre de función no válido: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Nombre de función demasiado largo: %s" + +#: 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: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" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: la opción '%s' es ambigua\n" + +# No admite ningún argumento. sv +# Ok. Y vuelve la burra al trigo. mm +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: la opción '--%s' no admite ningún argumento\n" + +# Lo mismo. sv +# Ok. mm +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: la opción '%c%s' no admite ningún argumento\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: la opción '%s' requiere un argumento\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opción no reconocida '--%s'\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opción no reconocida '%c%s'\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opción inválida -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opción inválida -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: la opción requiere un argumento -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: la opción '-W %s' es ambigua\n" + +# No admite ningún argumento. sv +# Ok. Y vuelve la burra al trigo. mm +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: la opción '-W %s' no admite ningún argumento\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Expandiendo '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Evaluando '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "no se pueden reservar %lu bytes para la tabla «hash»: memoria agotada" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Carga=%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 "Colisiones=%lu/%lu=%.0f%%" + +# 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:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +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: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+ +# ¿Qué te parecería "se evita"? sv +# 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: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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +# FUZZY +# Esto me suena fatal. Se a que se refiere, porque lo +# he visto, pero en cristiano no se si podría entenderlo. +# se refiere a las reglas del tipo % , lo pongo FUZZY , tendré +# que pensar un poco en ello em+ +# 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: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. +# 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: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 +# 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: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 +# Esto me suena fatal. Se a que se refiere, porque lo +# he visto, pero en cristiano no se si podría entenderlo. +# se refiere a las reglas del tipo % , lo pongo FUZZY , tendré +# que pensar un poco en ello em+ +# 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:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Intentando la regla de dependencia '%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+ +# ¿Qué te parecería "se evita"? sv +# 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:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Probando la dependencia implícita '%s'.\n" + +#: 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 '%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: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" + +# ## 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: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:557 +msgid " (ignored)" +msgstr " (no tiene efecto)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: 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: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:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Hijo activo %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 " (remoto)" + +# Lo mismo, pon Proceso hijo, y quita lo que hay +# entre paréntesis em+ +#: 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: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: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: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: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: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: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:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Se contaron %d argumentos en el lanzamiento fallido\n" + +# Proceso hijo em+ +# Ok. +#: 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: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:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: actualizar el objetivo '%s' a causa de: %s" + +#: 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:2106 +msgid "cannot enforce load limit: " +msgstr "no se puede forzar la carga límite: " + +#: 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: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: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:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "No se puede restaurar stdin\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "No se puede restaurar stdout\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "No se puede restaurar stderr\n" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: el espacio ambiental podría estar agotado" + +#: 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: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:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Contenido del archivo de lotes:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Contenido del archivo de lotes:%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 (linea %d) Contexto de shell erróneo (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Fallo al abrir tabla global de símbolos: %s" + +#: 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: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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Nombre de símbolo vacío en la carga: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Cargando símbolo %s desde %s\n" + +#: 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" +msgstr "La operación 'load' no está implementada en esta plataforma." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opciones:\n" + +# Lo mismo de arriba con "ignorar". sv +# Ok. mm. +#: 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:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" +" -B, --always-make Hace incondicionalmente todos los objetivos.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRECTORIO, --directory=DIRECTORIO\n" +" Se cambia al DIRECTORIO antes de hacer nada.\n" + +# ¿"depurado" o "depuración"? sv +# Puse de depurado para evitar la cacofonía información depuración. +# Sugerencias bienvenidas. mm +#: 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" + +# ¿"depurado" o "depuración"? sv +# Puse de depurado para evitar la cacofonía información depuración. +# Sugerencias bienvenidas. mm +#: 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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Las variables ambientales se imponen a las de los " +"makefiles.\n" + +#: 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:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f ARCHIVO, --file=ARCHIVO, --makefile=ARCHIVO\n" +" Lee al ARCHIVO como un makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Muestra este mensaje y finaliza.\n" + +# Ojo con ignorar. sv +# Ok. mm +# Por favor, si has traducido commands como instrucciones , hazlo aqui +# tambien. +# No me gusta este mensaje, preferiría: Se ignoran los errores obtenidos +# en la ejecución de las instrucciones em+ +#: 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:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIRECTORIO, --include-dir=DIRECTORIO\n" +" Busca dentro del DIRECTORIO los makefiles incluidos.\n" + +# Yo traduciría "infinite" por "infinitos", no por "una infinidad", que +# parece que son muchos menos... sv +# Ok. mm +#: 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] Se permiten N trabajos a la vez; si no se " +"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: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: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" +" No inicia con trabajos múltiples a menos que la carga esté por debajo " +"de 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 Utiliza el último mtime entre los enlaces " +"simbólicos y los objetivos.\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" +" No ejecuta ninguna instrucción; sólo las " +"muestra.\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 ARCHIVO, --old-file=ARCHIVO, --assume-old=ARCHIVO\n" +" Supone que ARCHIVO es muy viejo y no lo " +"reconstruye.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TIPO], --output-sync[=TIPO]\n" +" Sincroniza la salida de tareas paralelas por " +"tipo.\n" + +# de 'make' em+ +# ok. mm +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question No se ejecutan las instrucciones; el estado de " +"salida\n" +" indicará si están actualizados.\n" + +# ¿desabilitan o deshabilitan? sv +# Error de dedo. mm +# ¡ 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:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules Se deshabilitan las reglas implícitas " +"almacenadas internamente.\n" + +# ¿desabilitan o deshabilitan? sv +# Error de dedo. mm +# ¡ 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: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: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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Muestra las instrucciones (desactiva el modo --" +"silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Desactiva la opción -k.\n" + +# Se *tocan*, ¿no? sv +# Si. mm +# +# Pues entonces cámbialo arriba tambien em+ +# En donde? mm +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Se tocan los objetivos en vez de " +"reconstruirlos.\n" + +# ¿"depurado" o "depuración"? sv +# Puse de depurado para evitar la cacofonía información depuración. +# Sugerencias bienvenidas. mm +#: 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: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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Muestra el directorio actual.\n" + +# Lo mismo. sv +# Turn off , desactiva o deshabilita , pero no apaga em+ +# 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:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Desactiva -w, aún cuando haya sido activado " +"implícitamente.\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 ARCHIVO, --what-if=ARCHIVO, --new-file=ARCHIVO, --assume-new=ARCHIVO\n" +" Supone que ARCHIVO es infinitamente " +"reciente.\n" + +# Lo mismo. sv +# Todas estas parecen descripciones de opciones. +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Advierte cuando se hace una referencia a una " +"variable no definida.\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/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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "se especificó un nivel de depuración desconocido '%s'" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "tipo de sincronización de salida desconocido '%s'" + +# ¿Y Modo de empleo? sv +# Soy medio bestia. Debería hacerlo automático. mm +# "target" es "objetivo", no "objetivos". Fíjate que lleva puntos +# suspensivos, permitiendo así varios objetivos. sv +# Ok. mm +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Modo de empleo: %s [opciones] [objetivo] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa fue construido para %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa construido para %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Informe sobre los errores a \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" +"%s: Se atrapó una interrupción/excepción (código = 0x%lx, dirección = 0x%p)\n" + +#: src/main.c: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" +"Se ha llamado un filtro de excepción no manejado desde el programa %s\n" +"Código de la excepción = %lx\n" +"Banderas de la excepción = %lx\n" +"Dirección de la excepción = 0x%p\n" + +#: 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: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: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: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: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." +msgstr "" +"atención: el servidor de tareas no está disponible: se utilizará -j1. Añada " +"'+' a la regla padre del make." + +#: 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: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:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (archivo temporal)" + +#: 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: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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Reajustando al modo monotarea (-j1)." + +#: 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:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Actualizando archivos makefiles....\n" + +# Me comería el "archivo" inicial. +# Ok. mm +# "El Makefile `%s' ..." sv +# 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: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:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Fallo al reconstruir el makefile '%s'." + +# Lo mismo. sv +#: 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:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "No se encontró el makefile '%s'" + +#: 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:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Re-ejecutando[%u]:" + +#: 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: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: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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Actualizando los objetivos finales....\n" + +#: 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." + +# Me comería el "de" de "requiere de" sv +# Ok. mm +#: 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: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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sEste programa fue construido para %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sEste programa fue construido para %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicencia GPLv3+: GNU GPL versión 3 o posterior \n" +"%sEste es software libre: cualquiera es libre para redistribuirlo y " +"modificarlo.\n" +"%sNo existe GARANTÃA ALGUNA, hasta los límites permitidos por las leyes " +"aplicables.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Base de datos del Make, mostrada en %s" + +# make -> Make. sv +# Ok. mm +# Porqué 'del', o pones 'del programa' Make o pones +# 'de Make' em+ +# Ok. mm +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Se termina la base de datos de Make en %s\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +# 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:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Se crea el archivo temporal %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (archivo temporal)" + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (archivo temporal)" + +#: 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:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: se sale del directorio desconocido\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:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: se entra en el 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:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: se sale del directorio '%s'\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: se sale del directorio desconocido\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:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: se entra en el 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:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: se sale del directorio '%s'\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +# Interrumpido (?). sv +# Mmgmh... El mensaje indica que hubo algún error muy grave y que por +# eso se detiene el make. Probablemente sea mejor dejarlo así. mm +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Alto.\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 "" + +#: 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:190 +msgid "creating jobs pipe" +msgstr "creando una tubería de tareas" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duplicando una tubería de tareas" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "se inicializa la tubería al servidor de tareas" + +#: 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:363 +msgid "write jobserver" +msgstr "escribir en el servidor de tareas" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "servidor de tareas detenido" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "tubería de trabajos «pselect»" + +#: 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:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Leyendo makefiles...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Leyendo makefile '%s'" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (no hay objetivo por defecto)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (ruta de búsqueda)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (no importa)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (no hay expansión del ~)" + +#: 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: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:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintaxis no válida en condicional" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "las instrucciones comenzaron antes del primer objetivo" + +# "falta una regla". sv +# (es que extraviada me suena muy raro). +# 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:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "falta una regla antes de las instrucciones" + +#: 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:1156 +#, c-format +msgid "missing separator" +msgstr "falta un separador" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "falta un patrón de objetivos" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "hay varios patrones de objetivos" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "el patrón de objetivo no contiene '%%'" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "falta un 'endif'" + +#: 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: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:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "falta un 'endef', no se terminó un 'define'" + +#: 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: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:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "irrelevante o mal colocado '%s'" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "sólo se admite un 'else' por condicional" + +#: 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: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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "los objetivos agrupados deben proporcionar instrucción" + +#: 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:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "las reglas implícitas y las normales están mezcladas" + +#: 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: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: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" + +# 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/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: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:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "" +"*** las reglas implícitas y las normales están mezcladas: sintaxis obsoleta" + +# 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/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: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" + +# 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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s' está actualizado." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Se poda el archivo '%s'.\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "" +"%sNo hay ninguna regla para construir el objetivo '%s', necesario para '%s'%s" + +# Sugerencia: No hay ninguna regla... sv +# Como una no hay ninguna. mm +#: 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" + +# ¿target file no sería "archivo objetivo"? sv +# Literalmente si pero un archivo make puede tener varios objetivos. mm +# Max , pero no existe un archivo de objetivos. Esta línea, que es +# 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:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Se considera el archivo objetivo '%s'.\n" + +# Un compañero mío dice que una buena regla es poner siempre que se pueda +# un número par de comas. +# Es decir: "Se intentó, sin éxito, actualizar ..." +# o bien "Se intentó sin éxito actualizar ..." +# ¿Qué te parece? sv +# Bien y tiene razón. mm +#: 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Ya se ha tenido en cuenta el archivo '%s'.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Se continúa actualizando el archivo '%s'.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Se terminó de actualizar el archivo '%s'.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "El archivo '%s' no existe.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Atención: el archivo .LOW_RESOLUTION_TIME '%s' tiene una marca de tiempo " +"de alta resolució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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Se utilizan las instrucciones por omisión para '%s'.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +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:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Se terminaron las dependencias del archivo objetivo '%s'.\n" + +#: 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:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Se abandona el archivo objetivo '%s'.\n" + +#: 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: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: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: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: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: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: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: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:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "No es necesario reconstruir el objetivo '%s'." + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +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:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Se debe reconstruir el objetivo '%s'.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Se ignora el nombre del VPATH '%s'.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +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: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: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: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: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: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:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "El elemento .LIBPATTERNS '%s' no es un patrón" + +# ¿Las aduanas? sv +# Si, las aduanas de exportación de procesos. Suena rarísimo pero +# revisé el código y todo parece apuntar a que así son las cosas. +# Creo que esto es otra cosa. Custom se refiere a los valores dados +# por el usuario ( customizables ) , y que no se exportarán se refiere +# a que al llamar a otros makefiles, no serán pasados como valores +# que se antepongan ( otro término para override ) a los que make +# tiene por defecto . +# La traducción exacta por tanto es, los valores definidos por el usuario +# 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: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:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Reglas implícitas." + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# No hay reglas implícitas." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u reglas implícitas, %u (%.1f%%) terminal." + +# ## Añado ¡ con tu permiso. sv +# Gracias. mm +# ¿ qué tal erróneo ? em+ +# Si, suena mejor. mm +#: 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" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Colgado" + +# ¿ Y por qué no Interrupción ? em+ +# Porque es una acción. De hecho es un mensaje que se envía a través +# del sistema en este caso le enviarías un kill -INT num_proceso para +# interrumpir al programa. Lo revisé contra el fuente. mm +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interrumpir" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Finalizar" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Instrucción no válida" + +# Los trap los hemos dejado como traps, simplemente. em+ +# Ok. mm +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Trace/breakpoint trap" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Abortado" + +# Ponte de acuerdo con Enrique en cómo se traduce esto. +# Enrique tiene esta misma frase en glibc. sv +# Eso es :) IOT trap em+ +# Ok. mm +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT trap" + +# Otra em+ +# Ok. mm +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT trap" + +# Coma flotante, por favor. sv +# Creeme que aquí lo de coma flotante no vale. Somos pro-yanquis y +# por eso usamos el punto flotante. Debemos llegar a un acuerdo. +# Por ahora pongo coma flotante para facilitar las cosas, pero bajo +# protesta ;-) mm +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Excepción de coma flotante" + +# "Terminado por la señal kill" quedaría un poco más suave ... sv +# Enrique tiene en glibc "Terminado (killed)". sv +# Bueno, creo que mi traducción es más exacta, concisa y clara +# pero si insisten... Además recuerda en que estoy en un país +# en donde asesinado es palabra de todos los días. mm +#: src/signame.c:121 +msgid "Killed" +msgstr "Terminado (killed)" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Error en el bus" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Fallo de segmentación" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Llamada al sistema errónea" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Tubería rota" + +# ¿Temporizador? (así lo tradujo Enrique en glibc). sv +# Suena como StarTrek. Mejor lo platico con él. A lo mejor +# hasta lo convenzo. mm +# Pues tendrás que darme razones em+ +# Bueno, un alarm clock es una alarma del reloj. No tiene pierde. +# Temporizador es una bonita palabra pero en donde dice que va a +# sonar una campana para despertarte? mm +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarma del reloj" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Finalizado" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Señal 1 definida por el usuario" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Señal 2 definida por el usuario" + +# Proceso hijo terminado em+ +# Ok. mm +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Proceso hijo terminado" + +# Fallo. sv +# Alimentación eléctrico em+ +# Ok. mm +#: src/signame.c:156 +msgid "Power failure" +msgstr "Falla de alimentación eléctrica" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Detenido" + +# Enrique hizo una preciosa traducción de este mensaje que, según él, +# mejora el original. Era algo así como: +# "Detenido (requiere entrada de terminal)". sv +# Tiene razón se ve bien. mm +# Requiere 'de';) , como te vea Santiago que le metes +# otro 'de' otra vez ... em+ +# Ok. mm +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Detenido (se requiere entrada de terminal)" + +# lo mismo, se requiere entrada de terminal , em+ +# Ok. mm +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Detenido (se requiere salida de terminal)" + +# idem em+ +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Detenido (se requiere una señal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Se agotó el tiempo de CPU permitido" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Se excedió el tamaño máximo de archivo permitido" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "El contador de tiempo virtual ha expirado" + +# Nunca me enteré de cómo se traducía profile, pero perfil me suena raro. +# ¿De dónde lo has sacado? sv +# Es lo que quiere decir, ni modo. Perfil de un avión es plane profile. +# Por cierto, lo más probable es que esta "traducción" haya que +# modificarla para que sea entendible. mm +# Esto lo tengo en glibc, lo mirare otro día. Estos mensajes no son +# importantes em+ +# Agregué unas palabras en aras de claridad (espero) mm +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "El contador de tiempo para la generación del perfil ha expirado" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "La ventana ha cambiado" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continuado" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Condición urgente de I/O" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Posible I/O" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Recurso perdido" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Señal de peligro" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Petición de información" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Coprocesador de punto flotante no disponible" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s No hay «buffers» 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 «buffers» strcache: %lu (%lu) / cadenas = %lu / almacenamiento = %lu B / " +"promedio = %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 «buffer» actual: tamaño = %hu B / utilizado = %hu B / número = %hu / " +"promedio = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" +"%s otros utilizado: total = %lu B / / número = %lu / promedio = %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 otros libre: total = %lu B / máx = %lu B / mín = %lu B / promedio = %hu " +"B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s rendimiento de strcache: búsquedas = %lu / coincidencias = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# estadísticas de la tabla «hash»:\n" +"# " + +# Lo he cmabiado em+ +# Ok. Deberíamos platicarlo con Ulrich. mm +#: src/variable.c:1786 +msgid "automatic" +msgstr "automática/o" + +#: src/variable.c:1789 +msgid "default" +msgstr "por defecto" + +#: src/variable.c:1792 +msgid "environment" +msgstr "entorno" + +# Sugerencia: No poner archivo. sv +# Ok. mm +#: 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: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: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:1804 +msgid "'override' directive" +msgstr "directiva 'override'" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (de '%s', línea %lu):" + +# Bueno. Aquí un punto de discusión. Traduzco buckets por cubetas o +# mejor las dejo tal cual? Opiniones bienvenidas. mm +# 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:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# estadísticas del conjunto de variables de la tabla «hash»:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variables\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valores de variables específicas al patrón" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# No hay valores de variables específicas al patrón." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valores de variables específicas al patrón" + +# ¿Qué te parece "atención"? Lo hemos usado mucho en otros programas. sv +# Pero que bestia soy. Perdón por el desbarre. mm +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "atención: la variable '%.*s' no ha sido definida" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "fallo en sys$search() con %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-atención, deberás rehabilitar el manejo del CTRL-Y desde el DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "CD INTEGRADO %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 "Salida redirigida a %s\n" + +#: 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: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:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Rutas de búsqueda VPATH\n" + +# Rutas creo que queda mejor. sv +# Ok. Es más común. mm +#: 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:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u rutas de búsqueda 'vpath'.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# No hay ruta de búsqueda general (variable 'VPATH')." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Ruta de búsqueda general (variable 'VPATH'):\n" +"# " + +#: 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: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:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"error interno: no se pudo abrir el semáforo del servidor de tareas '%s': " +"(Error %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Cliente del servidor de tareas (semáforo %s)\n" + +#: 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: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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: No se encontró el programa\n" + +# ¿Y "el programa Shell"? (a secas) sv +# Si. Suena mucho mejor. mm +# Suena, pero no es mejor. Tal y como esta escrito, incluso +# yo pensaria que me falta un programa en mi sistema que se +# llame shell. No se ha encontrado el 'shell'em+ +# Es bueno contar con una segunda opinión ... mm +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: No se ha encontrado el `shell'" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s está suspendida por 30 segundos..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "se hizo un sleep(30). Continuando.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Error desconocido %d" + +# Ubicada :)) , que tal futura, a secas ? em+ +# Bueno, sonaba como StarTrek, muy chido, pero acepto tu sugerencia. mm +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "" +#~ "Atención: El archivo '%s' tiene una hora de modificación en el futuro" + +#~ msgid " terminal." +#~ msgstr " terminal." + +# 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 +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: fallo en las instrucciones para el objetivo '%s'" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Error 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "servidor de tareas duplicado" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Atención: redirección vacía\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "error interno: '%s' command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "INTEGRADA(S) [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "ECO INTEGRADO %s->%s\n" + +# Por defecto, como haces arriba em+ +# en efecto, mm +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Instrucción integrada desconocida '%s'\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ "La instrucción integrada se desconoce o no funciona en .ONESHELL: '%s'\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Error, comando vacío\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Entrada redirigida desde %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. +#~ msgid "Redirected error to %s\n" +#~ msgstr "Se redirecciona el error a %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Salida redirigida a %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Error al lanzar el proceso %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "error interno: hay varias opciones --sync-mutex" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "error interno: hay varias opciones --jobserver-fds" + +# Propongo eliminar la palabra virtual. sv +# Pero si es muy bonita. :) Bueno. Como ya platicamos puede que sea +# una buena idea pero, por ahora la dejaría. mm +#~ msgid "virtual memory exhausted" +#~ msgstr "memoria virtual agotada" + +#~ msgid "write error" +#~ msgstr "error al escribir" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "RM INTERCONSTRUIDO %s\n" diff --git a/local/recipes/dev/gnu-make/source/po/fi.gmo b/local/recipes/dev/gnu-make/source/po/fi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c42628617c8170c58ca7008bca69c63429e3caf2 GIT binary patch literal 30675 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 literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/fi.po b/local/recipes/dev/gnu-make/source/po/fi.po new file mode 100644 index 0000000000..a0290aa8fd --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/fi.po @@ -0,0 +1,2583 @@ +# Finnish messages for make. +# Copyright (C) 2005 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Lauri Nurmi , 2005, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2021-05-26 23:12+0300\n" +"Last-Translator: Lauri Nurmi \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 2.4.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: 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:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "arkistojäsenten kosketus ei ole mahdollista VMS:ssä" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Arkistoa â€%s†ei ole olemassa" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: â€%s†ei ole kelvollinen arkisto" + +#: 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:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: ar_member_touch antoi virheellisen paluuarvon kohteesta â€%sâ€" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() epäonnistui moduulitietojen noutamisessa, tila = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() epäonnistui, tila = %d" + +#: src/arscan.c:261 +#, fuzzy, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "kirjastoa â€%s†ei voi avata jäsenen â€%s†etsimiseksi" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (nimi voi olla typistynyt)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Päiväys %s" + +#: 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:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Reseptissä on liikaa rivejä (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Katkaisu.\n" + +#: 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:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Arkistojäsen â€%s†voi olla viallinen – ei poisteta" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Poistetaan tiedosto â€%sâ€" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Poistetaan tiedosto â€%sâ€" + +#: src/commands.c:685 +#, fuzzy +msgid "# recipe to execute" +msgstr "# käynnisetttävät komennot" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (sisäänrakennettu):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (tiedosto â€%sâ€, rivi %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Hakemistot\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: tilaa ei voitu lukea.\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: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: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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (avain %s, maika %d: " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (laite %ld, i-solmu %ld): " + +#: 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:1171 src/dir.c:1192 +msgid " files, " +msgstr " tiedostoa, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "ei" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " mahdottomuutta" + +#: src/dir.c:1180 +msgid " so far." +msgstr " tähän mennessä." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " mahdottomuutta %lu hakemistossa.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "päättämätön muuttujaviittaus" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Tiedostolle â€%s†määriteltiin resepti paikassa %s:%lu," + +#: 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: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: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:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Poistetaan aputiedosto â€%sâ€" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Poistetaan aputiedostot...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Aikaleima ei ole sallitulla välillä, korvataan %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ei kohde:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Arvokas tiedosto (ennakkoehto .PRECIOUS:ille)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Valekohde (ennakkoehto .PHONY:lle)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Komentorivikohde." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Oletus-, MAKEFILES- tai -include/sinclude -makefile-tiedosto." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Sisäänrakennettu sääntö" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Oletussääntöhaku on suoritettu." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Oletussääntöhakua ei ole suoritettu." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Tiedosto on välitason ennakkoehto." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Muutosaikaa ei koskaan tarkastettu." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Tiedosto ei ole olemassa." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Tiedosto on hyvin vanha." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Viimeksi muutettu %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Tiedosto on päivitetty." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Tiedostoa ei ole päivitetty." + +#: src/file.c:1139 +#, fuzzy +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Ajossa olevat komennot (TÄMÄ ON OHJELMISTOVIKA)." + +#: src/file.c:1142 +#, fuzzy +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Ajossa olevat riippuvuuskomennot (TÄMÄ ON OHJELMISTOVIKA)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Päivitetty onnistuneesti." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Vaatii päivitystä (-q on asetettu)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Päivitys epäonnistui." + +#: src/file.c:1163 +#, fuzzy +msgid "# Invalid value in 'command_state' member!" +msgstr "# Virheellinen arvo â€command_stateâ€-jäsenessä!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Tiedostot" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# tilasto tiedostojen hajautustaulusta:\n" +"# " + +#: 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: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: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:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "ei-numeerinen ensimmäinen argumentti â€wordlistâ€-funktiolle" + +#: 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:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) epäonnistui (v=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) epäonnistui (v=%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:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() epäonnistui\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Siivotaan väliaikainen komentotiedosto %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "tiedosto: tiedostonimi puuttuu" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "tiedosto: liian monta argumenttia" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "tiedosto: virheellinen tiedostotoiminto: %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:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "ei toteutettu tällä alustalla: funktio â€%sâ€" + +#: 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:2791 +#, c-format +msgid "Empty function name" +msgstr "Tyhjä funktionimi" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Virheellinen funktionimi: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Funktionimi on liian pitkä: %s" + +#: 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:2801 +#, fuzzy, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Virheellinen enimmäisargumenttimäärä (%d) funktiolle %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: valitsin â€%s†on moniselitteinen\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: valitsin â€--%s†ei salli argumenttia\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: valitsin â€%c%s†ei salli argumenttia\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: valitsin â€%s†vaatii argumentin\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: tunnistamaton valitsin â€--%sâ€\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: tunnistamaton valitsin â€%c%sâ€\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: virheellinen valitsin -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: virheellinen valitsin -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: valitsin vaatii argumentin -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: valitsin â€-W %s†on moniselitteinen\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: valitsin â€-W %s†ei salli argumenttia\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Lavennetaan â€%sâ€\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Lavennetaan â€%sâ€\n" + +#: src/hash.c:50 +#, fuzzy, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "ei voida varata %ld tavua hajautustaululle: muisti lopussa" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Kuormitus=%lu/%lu=%.0f %%, " + +#: src/hash.c:282 +#, fuzzy, c-format +msgid "Rehash=%u, " +msgstr "Uudelleenhajautus=%d, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Törmäykset=%lu/%lu=%.0f %%" + +#: 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: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: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:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Vältetään oletussääntörekursio.\n" + +#: src/implicit.c:451 +#, c-format +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: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: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:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Yritetään käyttää säännön ennakkoehtoa â€%sâ€.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Yritetään käyttää oletusennakkoehtoa â€%sâ€.\n" + +#: 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 '%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: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/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:552 +msgid " (core dumped)" +msgstr " (muisti vedostettu)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ei huomioida)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: 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:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Odotetaan keskeneräisiä töitä...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "" + +#: 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:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Siivotaan väliaikainen komentotiedosto %s\n" + +#: 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: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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "" + +#: 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:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Laskettiin %d argumenttia epäonnistuneessa käynnistyksessä\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "" + +#: 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: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:2106 +msgid "cannot enforce load limit: " +msgstr "kuormarajaa ei voi ottaa käyttöö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: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: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:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Vakiosyötettä ei voitu palauttaa\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Vakiotulostetta ei voitu palauttaa\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Vakiovirhetulostetta ei voitu palauttaa\n" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: ympäristötila saattaa olla lopussa" + +#: 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:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Luodaan väliaikainen komentotiedosto %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Komentojonotiedoston sisältö:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Komentojonotiedoston sisältö:%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 (rivi %d) Väärä kuoriympäristö (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: 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 "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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: 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" +msgstr "Rinnakkaiset työt (-j) eivät ole tuettuja tällä alustalla." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Valitsimet:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr "" +" -b, -m Yhteensopivuuden vuoksi jätetään huomiotta.\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C HAKEMISTO, --directory=HAKEMISTO\n" +" Siirry HAKEMISTOon ennen jatkamista.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Näytä runsaasti vianetsintätietoja.\n" + +#: 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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Ympäristömuuttujat kumoavat makefile-" +"tiedostot.\n" + +#: src/main.c:332 +#, fuzzy +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr " -E MJONO, --eval=MJONO Lavenna MJONO makefile-lausekkeena.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f TIEDOSTO, --file=TIEDOSTO, --makefile=TIEDOSTO\n" +" Käytä TIEDOSTOa makefile-tiedostona.\n" + +#: 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:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" +" -i, --ignore-errors Älä huomioi suoritettujen reseptien virheitä.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I HAKEMISTO, --include-dir=HAKEMISTO\n" +" Etsi sisällytettäviä makefile:ja " +"HAKEMISTOsta.\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] Salli N yhtäaikaista työtä; ilman N:ää " +"ääretön.\n" + +#: 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: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" +" Älä aloita useita töitä ellei kuormitus alle " +"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 Käytä uusinta mtime-aikaa symlinkkien ja\n" +" kohteen välillä.\n" + +#: src/main.c:355 +#, fuzzy +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" +" Näytä ajettavat komennot, älä käynnistä " +"niitä.\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 TIEDOSTO, --old-file=TIEDOSTO, --assume-old=TIEDOSTO\n" +" Käsittele TIEDOSTO vanhana, älä tuota sitä.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Älä aja reseptiä; paluuarvo kertoo ajan-\n" +" tasaisuuden.\n" + +#: 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: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: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: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:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Kumoaa valitsimen -k.\n" + +#: 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:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Näytä jäljitystietoja.\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Näytä nykyinen hakemisto.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Kumoa -w, vaikka se olisi käytössä " +"oletuksena.\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 TIEDOSTO, --what-if=TIEDOSTO, --new-file=TIEDOSTO, --assume-" +"new=TIEDOSTO\n" +" Käsittele TIEDOSTO aina uutena.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Varoita viittauksista määrittelemättömiin\n" +" muuttujiin.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "tuntematon vianetsintätason määritys â€%sâ€" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Käyttö: %s [valitsimet] [kohde] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Tämä ohjelma on käännetty järjestelmälle %s.\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Tämä ohjelma on käännetty järjestelmälle %s (%s).\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Ilmoita ohjelmistovioista (englanniksi) osoitteeseen .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Keskeytys/poikkeus siepattu (koodi = 0x%lx, osoite = 0x%p)\n" + +#: src/main.c:947 +#, fuzzy, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Ohjelmasta %s kutsuttiin käsittelemätöntä poikkeussuodinta\n" +"Poikkeuskoodi = %x\n" +"Poikkeusliput = %x\n" +"Poikkeusosoite = %x\n" + +#: 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:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Suojausvirhe: lukuoperaatio osoitteeseen 0x%p\n" + +#: 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: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: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." +msgstr "" +"varoitus: työpalvelin ei käytettävissä: käytetään -j1. Lisää â€+†ylemmän " +"tason make-sääntöön." + +#: 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:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile-tiedosto vakiosyötteestä määritelty kahdesti." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (väliaikaistiedosto)" + +#: 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: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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Palataan yhden työn (-j1) tilaan." + +#: 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: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: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: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:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Sisällytettyä makefile-tiedostoa â€%s†ei löytynyt." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile-tiedostoa â€%s†ei löytynyt" + +#: 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:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Uudelleenkäynnistetään[%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Ei kohteita" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"varoitus: Havaittu väärä kellonaika. Koonnos saattaa olla epätäydellinen." + +#: 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:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "valitsin â€-%c†vaatii positiivisen kokonaislukuargumentin" + +#: 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: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:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Make-tietokanta, tulostettu %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Make-tietokanta saatu valmiiksi %s\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Käytetään oletuskomentoja kohteelle â€%sâ€.\n" + +#: 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:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (väliaikaistiedosto)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (väliaikaistiedosto)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Siirrytään tuntemattomaan hakemistoon\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Poistutaan tuntemattomasta hakemistosta\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Siirrytään hakemistoon â€%sâ€\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Poistutaan hakemistosta â€%sâ€\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Poistutaan tuntemattomasta hakemistosta\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Siirrytään hakemistoon â€%sâ€\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Poistutaan hakemistosta â€%sâ€\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Seis.\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 "" + +#: 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:201 src/posixos.c:434 +#, fuzzy +msgid "duping jobs pipe" +msgstr "luodaan työputki" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "alustetaan työpalvelimen putki" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "sisäinen virhe: virheellinen --jobserver-fds -merkkijono â€%sâ€" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "työpalvelimen kirjoitus" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +#, fuzzy +msgid "pselect jobs pipe" +msgstr "työputken luku" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "työputken luku" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Luetaan makefile-tiedosto â€%sâ€" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr "" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (hakupolku)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (ei välitetä)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (ei ~-laajennusta)" + +#: 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:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Ohitetaan UTF-8-BOM makefile-puskurissa\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "virheellinen syntaksi ehtolauseessa" + +#: src/read.c:1002 +#, fuzzy, c-format +msgid "recipe commences before first target" +msgstr "komennot alkavat ennen ensimmäistä kohdetta" + +#: src/read.c:1053 +#, fuzzy, c-format +msgid "missing rule before recipe" +msgstr "puuttuva sääntö ennen komentoja" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "puuttuva erotin (tarkoititko sarkainta eikä kahdeksaa välilyöntiä?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "puuttuva erotin" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "puuttuva kohdehahmo" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "useita kohdehahmoja" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "kohdehahmo ei sisällä â€%%â€-merkkiä" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "puuttuva â€endifâ€" + +#: 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:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "ylimääräistä tekstiä â€endefâ€-toimintaohjeen jälkeen" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "puuttuva â€endefâ€, päättämätön â€defineâ€" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "ylimääräistä tekstiä â€endefâ€-toimintaohjeen jälkeen" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "ylimääräistä tekstiä â€%sâ€-toimintaohjeen jälkeen" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "ylimääräinen â€%sâ€" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "vain yksi â€else†ehtolausetta kohden" + +#: 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:2039 +#, fuzzy, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "ennakkoehtoja ei voi määritellä komentoskripteissä" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "" + +#: 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: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: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:2186 +#, fuzzy, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "varoitus: syrjäytetään kohteen â€%s†komennot" + +#: 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:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "" + +#: 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:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "varoitus: havaittu NUL-merkki, rivin loppuosaa ei huomioida" + +#: 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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "â€%s†on ajan tasalla." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Karsitaan tiedosto â€%sâ€.\n" + +#: 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:426 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sKohteen â€%s†tuottamiseen ei ole sääntöä%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Tarkastellaan kohdetiedostoa â€%sâ€.\n" + +#: 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Tiedostoa â€%s†on jo tarkasteltu.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Päivitetään edelleen tiedostoa â€%sâ€.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Tiedoston â€%s†päivitys valmistui.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Tiedosto â€%s†ei ole olemassa.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Varoitus: .LOW_RESOLUTION_TIME-tiedostolla â€%s†on korkearesoluutioinen " +"aikaleima" + +#: 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:558 +#, fuzzy, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Käytetään oletuskomentoja kohteelle â€%sâ€.\n" + +#: 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:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Kohdetiedoston â€%s†ennakkoehdot täytetty.\n" + +#: 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:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Luovutaan kohdetiedostosta â€%sâ€.\n" + +#: 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: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: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:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Ennakkoehto â€%s†on uudempi kuin kohde â€%sâ€.\n" + +#: 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:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" + +#: 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:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Ei tarvetta uudelleentuottaa kohdetta â€%sâ€" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; käytetään VPATH-nimeä â€%sâ€" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Kohde â€%s†on tuotettava uudelleen.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Ei huomioida VPATH-nimeä â€%sâ€.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Kohdetiedoston â€%s†uudelleentuottaminen epäonnistui.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Kohdetiedosto â€%s†uudelleentuotettiin onnistuneesti.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Käytetään oletuskomentoja kohteelle â€%sâ€.\n" + +#: 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:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS-elementti â€%s†ei ole hahmo" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Oletussäännöt" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Ei oletussääntöjä." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u oletussääntöä, %u (%.1f %%) päättyvää." + +#: 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" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Linjankatkaisu" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Keskeytys" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Lopetettu" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Virheellinen käsky" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Jäljitys/katkaisupisteansa" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Keskeytetty" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT-ansa" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT-ansa" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Liukulukupoikkeus" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Tapettu" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Väylävirhe" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Muistialueen ylitys" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Virheellinen järjestelmäkutsu" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Katkennut putki" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Herätyskello" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Päätetty" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Käyttäjän määrittelemä signaali 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Käyttäjän määrittelemä signaali 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Lapsi lopetti" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Sähkökatko" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Pysäytetty" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Pysäytetty (päätteen syöte)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Pysäytetty (päätteen tuloste)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Pysäytetty (signaali)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Suoritinaikaraja ylittynyt" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Tiedoston kokoraja ylitetty" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtuaaliajastin vanhentunut" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Profilointiajastin vanhentunut" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Ikkuna vaihtunut" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Jatkettu" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Kiireellinen I/O-tilanne" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O mahdollista" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Resurssi menetetty" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Vaarasignaali" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Tietopyyntö" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Käytettävissä ei ole liukulukusuoritinta" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# tilasto tiedostojen hajautustaulusta:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automaattinen" + +#: src/variable.c:1789 +msgid "default" +msgstr "oletus" + +#: src/variable.c:1792 +msgid "environment" +msgstr "ympäristö" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "-e:n alainen ympäristö" + +#: src/variable.c:1801 +msgid "command line" +msgstr "komentorivi" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "â€overrideâ€-toimintaohje" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (tiedosto â€%sâ€, rivi %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# muuttujajoukon hajautustaulutilastot:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Muuttujat\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Hahmokohtaisia muuttujien arvoja" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Ei hahmokohtaisia muuttuja-arvoja." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u hahmokohtaista muuttuja-arvoa" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "varoitus: määrittelemätön muuttuja â€%.*sâ€" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search epäonnistui arvolla %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-varoitus, Ctrl-Y-käsittely on ehkä otettava uudelleen käyttöön DCL:stä.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "SISÄÄNRAKENNETTU CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, fuzzy, c-format +msgid "Append output to %s\n" +msgstr "Tuloste uudelleenohjattu kohteeseen %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Käynnistetään sen sijaan %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH-hakupolut\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Ei â€vpathâ€-hakupolkuja." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u â€vpathâ€-hakupolkua.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Ei yleistä (â€VPATHâ€-muuttuja) hakupolkua." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Yleinen (â€VPATHâ€-muuttuja) hakupolku:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: 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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Komentoa ei löytynyt\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Kuoriohjelmaa ei löytynyt" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s keskeytyy 30 sekunniksi..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) valmis. Jatketaan.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Tuntematon virhe %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Varoitus: Tiedoston â€%s†muutosaika on tulevaisuudessa" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Virhe 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "kaksinkertainen työpalvelin" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Varoitus: Tyhjä uudelleenohjaus\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "sisäinen virhe: â€%s†command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "SISÄÄNRAKENNETTU [%s][%s]\n" + +#, fuzzy +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "SISÄÄNRAKENNETTU CD %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Tuntematon sisäänrakennettu komento â€%sâ€\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Virhe, tyhjä komento\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Syöte uudelleenohjattu kohteesta %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Virhetuloste uudelleenohjattu kohteeseen %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Tuloste uudelleenohjattu kohteeseen %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Virhe käynnistyksessä, %d\n" + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Virheellinen arvo â€update_statusâ€-jäsenessä!" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Virhe 0x%x (ei huomioida)" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Älä anna -j tai --jobs -valitsinta jos sh.exe ei ole käytettävissä." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Palautetaan make yhden työn tilaan." + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "sisäinen virhe: useitan --jobserver-fds -valitsimia" + +#~ 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 "" +#~ "%sTämä on vapaa ohjelmisto; katso kopiointiehdot lähdekoodista.\n" +#~ "%sTakuuta EI ole, ei edes KAUPALLISESTI HYVÄKSYTTÄVÄSTÄ LAADUSTA tai\n" +#~ "%sSOPIVUUDESTA TIETTYYN TARKOITUKSEEN.\n" + +#~ msgid "virtual memory exhausted" +#~ msgstr "virtuaalimuisti lopussa" + +#~ msgid "write error" +#~ msgstr "kirjoitusvirhe" + +#~ msgid "extraneous `endef'" +#~ msgstr "ylimääräinen â€endefâ€" + +#~ msgid "empty `override' directive" +#~ msgstr "tyhjä â€overrideâ€-toimintaohje" + +#~ msgid "invalid `override' directive" +#~ msgstr "virheellinen â€overrideâ€-toimintaohje" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-varoitus, Ctrl-Y jättää aliprosessi(n/t) käyntiin.\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "SISÄÄNRAKENNETTU RM %s\n" + +#~ msgid "Syntax error, still inside 'â€'\n" +#~ msgstr "Syntaksivirhe, edelleen â€:n sisällä\n" diff --git a/local/recipes/dev/gnu-make/source/po/fr.gmo b/local/recipes/dev/gnu-make/source/po/fr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..3cb2e38340edb6854d1edcf261958509dff40af4 GIT binary patch literal 41807 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 I1M0zl1DFNA7ytkO literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/fr.po b/local/recipes/dev/gnu-make/source/po/fr.po new file mode 100644 index 0000000000..4076a2e78a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/fr.po @@ -0,0 +1,2917 @@ +# Messages français pour make. +# Copyright © 2010 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# 30-juillet-2001, n'avons plus de nouvelle de Marc depuis 5 janvier 1997 +# Marc Baudoin , Frédéric Liné , 1996. +# Michel Robitaille , 1996-2006 +# Christophe Combelles , 2009, 2010 +# Kévin Raymond , 2012-2016, 2018, 2020 +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2020-05-25 08:54+0200\n" +"Last-Translator: Kévin Raymond \n" +"Language-Team: French \n" +"Language: fr\n" +"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=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.3\n" + +#: 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: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:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch : l'archive « %s » n'existe pas" + +#: 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: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: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 »" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() n'a pas pu extraire les infos du module. Code = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() a échoué avec un code = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"impossible d'ouvrir la bibliothèque « %s » pour récupérer le statut du " +"membre « %d »" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (le nom peut être tronqué)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Date %s" + +#: 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:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "La recette contient trop de lignes (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Arrêt.\n" + +#: 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: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:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Suppression du fichier « %s »" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Suppression du fichier « %s »" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# recette à exécuter" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (commande interne) :" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (de « %s », ligne %lu) : \n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Répertoires\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: « stat » impossible.\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: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: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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (clé %s, mtime %I64u) : " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (périphérique %ld, inode %ld) : " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Aucun" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " fichier(s), " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "aucune" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " impossibilité(s)" + +#: src/dir.c:1180 +msgid " so far." +msgstr " jusqu'ici." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " impossibilités dans %lu répertoires.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "référence incomplète à une variable" + +#: 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: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: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: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: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: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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Suppression du fichier intermédiaire « %s »" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Suppression des fichiers intermédiaires...\n" + +#: 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:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s : horodatage hors limite ; remplacement par %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Pas une cible :" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Fichier précieux (dépendance de .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Cible factice (dépendance de .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Cible de la ligne de commande." + +#: 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:1102 +msgid "# Builtin rule" +msgstr "# Pas de règle interne" + +#: 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: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:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Préfixe de motif implicite ou statique : « %s »\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Le fichier est une dépendance intermédiaire." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Heure de modification jamais vérifiée." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Le fichier n'existe pas." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Le fichier est très ancien." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Dernière modification %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Le fichier a été mis à jour." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Le fichier n'a pas été mis à jour." + +#: 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: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:1151 +msgid "# Successfully updated." +msgstr "# Mise à jour réussie." + +#: 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:1158 +msgid "# Failed to be updated." +msgstr "# N'a pas pu être mis à jour." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valeur non valable dans le membre « command_state » !" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Fichiers" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# stats des tables de hachage des fichiers :\n" +"# " + +#: 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: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: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:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "le premier argument de la fonction « wordlist » doit être numérique" + +#: 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: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: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:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() a échoué (e=%ld)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Nettoyage du fichier de commandes temporaire %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file : fichier manquant" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open : %s : %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write : %s : %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close : %s : %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file : trop d'arguments" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read : %s : %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file : opération invalide : %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:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "non implémenté sur cette plateforme : fonction « %s »" + +#: 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:2791 +#, c-format +msgid "Empty function name" +msgstr "Nom de fonction absent" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Nom de fonction invalide : %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Nom de fonction trop long : %s" + +#: 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:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Nombre d'arguments excessif (%u) pour la fonction %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s : l'option « %s » est ambiguë\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s : l'option « --%s » ne prend pas d'argument\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s : l'option « %c%s » ne prend pas d'argument\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s : l'option « %s » nécessite un argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s : option non reconnue « --%s »\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s : option non reconnue « %c%s »\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s : option non admise -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s : option incorrecte -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s : l'option nécessite un argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s : l'option « -W %s » est ambiguë\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s : l'option « -W %s » ne prend pas d'argument\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile : expansion de « %s »\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile : évaluation de « %s »\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"impossible d'allouer %lu octets pour la table de hachage : mémoire épuisée" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Charge=%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 "Collisions=%lu/%lu=%.0f%%" + +#: 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: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: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:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Évitement de récursion dans une règle implicite.\n" + +#: src/implicit.c:451 +#, c-format +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:506 +#, c-format +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: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:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Essai de la dépendance de règle « %s ».\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Essai de la dépendance implicite « %s ».\n" + +#: 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 '%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: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/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:552 +msgid " (core dumped)" +msgstr " (core dump créé)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignorée)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: 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:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Attente des tâches non terminées...." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (distant)" + +#: 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: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:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Nettoyage du fichier de commande temporaire %s\n" + +#: 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: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: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: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:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"%d arguments comptés lors du lancement échoué\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Jeton obtenu pour le processus fils %p (%s).\n" + +#: 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: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:2106 +msgid "cannot enforce load limit: " +msgstr "impossible d'imposer des limites de charge : " + +#: 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: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: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:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Impossible de restaurer stdin\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Impossible de restaurer stdout\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Impossible de restaurer stderr\n" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe : l'espace d'environnement est peut-être épuisé" + +#: 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: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:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Contenu du fichier de commande :\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Contenu du fichier Batch :%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 (ligne %d) Mauvais contexte du shell (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +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: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: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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Nom du symbole absent pour l'opération « load » : %s" + +#: 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: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" +msgstr "" +"Les opérations « load » ne sont pas prises en charge sur cette plateforme." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Options :\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignoré pour compatibilité.\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C RÉPERTOIRE, --directory=RÉPERTOIRE\n" +" Se placer dans le RÉPERTOIRE avant toute " +"action.\n" + +#: 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: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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Les variables d'environment sont prioritaires " +"sur les makefiles.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E STRING, --eval=STRING Évaluer la chaîne STRING comme une instruction " +"de makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FICHIER, --file=FICHIER, --makefile=FICHIER\n" +" Lire le FICHIER comme un makefile.\n" + +#: 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:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" +" -i, --ignore-errors Ignorer les erreurs venant des recettes.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I RÉPERTOIRE, --include-dir=RÉPERTOIRE\n" +" Chercher dans le RÉPERTOIRE les makefiles " +"traités par inclusion.\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] Autoriser N tâches simultanées ; nombre infini " +"si utilisé sans argument.\n" + +#: 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: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" +" Ne pas lancer de tâches multiples à moins que " +"la charge soit inférieure à 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 Utiliser le « mtime » le plus récent entre les " +"liens symboliques et la cible.\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" +" N'exécuter aucune recette ; seulement les " +"afficher.\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 FICHIER, --old-file=FICHIER, --assume-old=FICHIER\n" +" Considérer le FICHIER comme étant très ancien " +"et ne pas le refabriquer.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronise la sortie des tâches parallèles " +"par TYPE.\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Ne pas exécuter de recette ; le code de sortie " +"indique si la cible est à jour.\n" + +#: 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: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: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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Répéter les recette (désactive le mode --" +"silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Désactiver -k.\n" + +#: 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:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Afficher les traces mémoire.\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Afficher le répertoire courant.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Désactiver l'option -w, même si elle a été " +"activée implicitement.\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 FICHIER, --what-if=FICHIER, --new-file=FICHIER, --assume-new=FICHIER\n" +" Considérer le FICHIER comme étant toujours " +"nouveau.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Prévenir lorsqu'une variable non définie est " +"référencée.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "niveau de débogage inconnu « %s »" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "type de output-sync « %s » inconnu" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Utilisation : %s [options] [cible] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Ce programme est construit pour %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Ce programme est construit pour %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Signaler les anomalies à .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" +"%s: interception de l'interruption/exception (code = 0x%lx, addr = 0x%p)\n" + +#: src/main.c: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" +"Filtre d'exception non pris en charge appelé depuis le programme %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 "Violation d'accès : opération d'écriture à l'adresse 0x%p\n" + +#: 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: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: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: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." +msgstr "" +"avertissement : jobserver n'est pas disponible : utilisation de -j1. Ajouter " +"« + » à la règle parent du make." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"avertissement : -j%d forcé dans un submake : réinitialisation du mode " +"jobserver." + +#: 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:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (fichier temporaire)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"avertissement : -j%d forcé dans un makefile : réinitialisation du mode " +"jobserver." + +#: 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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "On revient en mode monotâche (-j1)." + +#: 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: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: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: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:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Le makefile inclus « %s » est introuvable." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Le makefile « %s » est introuvable" + +#: 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:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Réexécution[%u] :" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Pas de cible" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Mise à jour des objectifs cibles....\n" + +#: 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 " +"incomplète." + +#: 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: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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sConstruit pour %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sConstruit pour %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicence GPLv3+ : GNU GPL version 3 ou ultérieure \n" +"%sCeci est un logiciel libre : vous êtes autorisé à le modifier et à la " +"redistribuer.\n" +"%sIl ne comporte AUCUNE GARANTIE, dans la mesure de ce que permet la loi.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Base de données de Make, imprimée le %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Base de données de Make terminée le %s\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: 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:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Création d'un fichier de commande temporaire %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (fichier temporaire) : " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (fichier temporaire)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (fichier temporaire)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s : on entre dans un répertoire inconnu\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s : on quitte un répertoire inconnu\n" + +#: 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:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s : on quitte le répertoire « %s »\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u] : on quitte un répertoire inconnu\n" + +#: 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:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u] : on quitte le répertoire « %s »\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Arrêt.\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 "" + +#: 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:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duplication d'un tube pour les tâches" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "initialisation du tube du serveur de tâches" + +#: 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:363 +msgid "write jobserver" +msgstr "écriture vers le serveur de tâches" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "le serveur de tâche est arrêté" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect du tube de tâches" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "lecture du tube des processus" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Lecture du makefile « %s »" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (pas d'objectif par défaut)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (chemin de recherche)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (peu importe)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (pas de remplacement du ~)" + +#: 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: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:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "syntaxe incorrecte dans la condition" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "la recette commence avant la première cible" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "règle manquante avant la recette" + +#: 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:1156 +#, c-format +msgid "missing separator" +msgstr "séparateur manquant" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "motif de cible manquant" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "motifs de cible multiples" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "le motif de cible ne contient pas « %% »" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "« endif » manquant" + +#: 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:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "texte superflu après la directive « define »" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "« endef » manquant, « define » non terminé" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "texte superflu après la directive « endef »" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "texte superflu après la directive « %s »" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "« %s » superflu" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "un seul « else » par condition" + +#: 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: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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "les cibles groupées doivent fournir une recette" + +#: 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:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "mélange de règles implicites et normales" + +#: 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: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: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" + +#: 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:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "avertissement : ancienne recette ignorée pour la cible « %s »" + +#: 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:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" +"avertissement : surchargement des groupes d'appartenance pour la cible « %s »" + +#: 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é" + +#: 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:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Rien à faire pour « %s »." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "« %s » est à jour." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Élagage du fichier « %s ».\n" + +#: 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sAucune règle pour fabriquer la cible « %s »%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Étude du fichier cible « %s ».\n" + +#: 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Le fichier « %s » a déjà été étudié.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Mise à jour du fichier « %s » en cours.\n" + +#: 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:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Le fichier « %s » n'existe pas.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Avertissement : le fichier .LOW_RESOLUTION_TIME « %s » a un horodatage à " +"haute résolution" + +#: 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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Utilisation de la recette par défaut pour « %s ».\n" + +#: 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:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Fin des dépendances du fichier cible « %s ».\n" + +#: 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:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Abandon du fichier cible « %s ».\n" + +#: 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: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: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: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:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "La dépendance « %s » est plus ancienne que la cible « %s ».\n" + +#: 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: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: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:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Inutile de refabriquer la cible « %s »" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr " ; utilisation du nom VPATH « %s »" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Il faut refabriquer la cible « %s ».\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " On ignore le nom VPATH « %s ».\n" + +#: 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:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Échec de refabrication du fichier cible « %s ».\n" + +#: 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: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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Utilisation des commandes par défaut pour « %s ».\n" + +#: 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: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:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "« customs » n'exportera pas : %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Règles implicites" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Pas de règle implicite." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u règles implicites, terminal %u (%.1f%%)." + +#: 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" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Raccroche" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interrompt" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Quitte" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Instruction non admise" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Point de trace/arrêt" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Annulé" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Appel IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Appel EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Exception en virgule flottante" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Tué" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Erreur de bus" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Erreur de segmentation" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Mauvais appel système" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Tube cassé" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarme" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminé" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Signal utilisateur 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Signal utilisateur 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Processus fils terminé" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Coupure d'alimentation" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Arrêté" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Arrêté (entrée tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Arrêté (sortie tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Arrêté (signal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Limite du temps CPU dépassée" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Limite de taille de fichier dépassée" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Compteur virtuel expiré" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Compteur de profiling expiré" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Fenêtre modifiée" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Reprise" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Condition d'E/S urgente" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "E/S possible" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Ressource perdue" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Signal de danger" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Demande d'informations" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Coprocesseur en virgule flottante non disponible" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s pas de tampons 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 strcache utilisé : %lu (%lu) / chaînes = %lu / espace = %lu o / moy = %lu " +"o\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 tampon courant : taille = %hu o / utilisé = %hu o / nombre = %hu / moy = " +"%u o\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s autre utilisé : total = %lu o / nombre = %lu / moy = %lu o\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 autre libre : total = %lu o / max = %lu o / min = %lu o / moy = %hu o\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s performance strcache : lookups = %lu / accès = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# stats des tables de hachage :\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatique" + +#: src/variable.c:1789 +msgid "default" +msgstr "défaut" + +#: src/variable.c:1792 +msgid "environment" +msgstr "environnement" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "environnement avec l'option -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "ligne de commande" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "directive « override »" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (depuis « %s », ligne %lu)" + +#: 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:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variables\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valeurs de variable spécifiques au motif" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Pas de valeurs de variable spécifiques au motif." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valeurs de variable spécifiques au motif" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "avertissement : variable « %.*s » indéfinie" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() a échoué avec %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-attention, vous pourriez avoir besoin de réactiver le traitement de CTRL-Y " +"par DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "COMMANDE CD INTERNE %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 "Sortie ajoutée à %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Ajoute %.*s et nettoie\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Exécution de %s à la place\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Chemins de recherche VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Aucun chemin de recherche « vpath »." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u chemins de recherche « vpath ».\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Aucun chemin de recherche général (variable « VPATH »)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Chemin de recherche général (variable « VPATH ») :\n" +"# " + +#: 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:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "création du sémaphore du jobserver : (erreur %ld : %s)" + +#: 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 le sémaphore « %s » du jobserver : " +"(erreur %ld : %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Client jobserver (semaphore %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "libération du sémaphore jobserver : erreur (%ld : %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u] : %s : commande introuvable\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s : programme Shell introuvable" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s s'arrête pendant 30 secondes..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) terminé. On continue.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Erreur inconnue %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "" +#~ "Avertissement : le fichier « %s » a une date de modification dans le futur" + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s : la recette pour la cible « %s » a échoué" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Erreur 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "duplication du serveur de tâches" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "AVERTISSEMENT : redirection vide\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "erreur interne : « %s » command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "COMMANDE INTERNE [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "COMMANDE ECHO INTERNE %s->%s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Commande interne inconnue « %s »\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ "Commande interne inconnue ou non prise en charge par .ONESHELL : « %s »\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Erreur, commande vide\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Entrée redirigée depuis %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Erreur redirigée vers %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Sortie redirigée vers %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Erreur de lancement, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "erreur interne : options --sync-mutex multiples" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "erreur interne : options --jobserver-fds multiples" + +#~ msgid "virtual memory exhausted" +#~ msgstr "mémoire virtuelle épuisée" + +#~ msgid "write error" +#~ msgstr "erreur d'écriture" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "COMMANDE RM INTERNE %s\n" + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Valeur non valable dans le membre « update_status » !" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Erreur 0x%x (ignorée)" + +#~ msgid "[%s] Error %d (ignored)" +#~ msgstr "[%s] Erreur %d (ignorée)" + +#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n" +#~ msgstr "" +#~ "Invocation de recette de %s:%lu pour mettre à jour la cible « %s ».\n" + +#~ msgid "Invoking builtin recipe to update target `%s'.\n" +#~ msgstr "" +#~ "Invocation de la recette incorporée pour mettre à jour la cible « %s ».\n" + +#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n" +#~ msgstr "%s nombre de tampons strcache : %d (* %d B/buffer = %d B)\n" + +#~ msgid "" +#~ "\n" +#~ "# strcache hash-table stats:\n" +#~ "# " +#~ msgstr "" +#~ "\n" +#~ "# stats des tables de hachage strcache :\n" +#~ "# " + +#~ msgid "process_easy() failed failed to launch process (e=%ld)\n" +#~ msgstr "process_easy() n'a pas pu lancer de processus (e=%ld)\n" + +#~ 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 "" +#~ "%sCeci est un logiciel libre ; consultez le code source pour connaître " +#~ "les conditions de copie.\n" +#~ "%sIl n'y a PAS de garantie ; ni pour une utilisation COMMERCIALE ni pour\n" +#~ "%sune ADÉQUATION À UN BESOIN PARTICULIER.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "« endef » superflu" + +#~ msgid "empty `override' directive" +#~ msgstr "directive « override » vide" + +#~ msgid "invalid `override' directive" +#~ msgstr "directive « override » incorrecte" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-warning, CTRL-Y va laisser des sous-processsus dans la nature.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Ne pas spécifier -j ou --jobs si sh.exe n'est pas disponible." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Réinitialisation de make en mode de traitement simple des tâches." + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "Erreur de syntaxe, toujours à l'intérieur de « \" »\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "" +#~ "Réception du signal SIGCHLD ; %u processus fils dont le statut de\n" +#~ "sortie n'a pas été récupé.\n" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "pas de nom de fichier pour « %sinclude »" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "la cible « %s » a laissé un schéma de dépendance vide" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Pas de fichiers." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u fichiers dans %u tables de hachage.\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "" +#~ "# moyenne de %.3f fichiers par table, maximum de %u fichiers dans une " +#~ "table.\n" + +#~ msgid "DIRECTORY" +#~ msgstr "RÉPERTOIRE" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "Changer de RÉPERTOIRE avant de faire quoi que ce soit" + +#~ msgid "FLAGS" +#~ msgstr "FANIONS" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "Suspension de processus pour permettre au déboggeur de se rattacher" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "" +#~ "Les variables d'environnement écrasent celles définies dans les makefiles" + +#~ msgid "FILE" +#~ msgstr "FICHIER" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "Lit FICHIER en tant que makefile" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "Recherche les makefiles inclus dans DIRECTORY" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "N'exécute pas de tâches multiples si la charge dépasse N" + +#~ msgid "Don't actually run any commands; just print them" +#~ msgstr "N'exécute pas les commandes ; elles sont juste affichées" + +#~ msgid "Consider FILE to be very old and don't remake it" +#~ msgstr "Considère FILE comme étant très vieux et ne le refabrique pas" + +#~ msgid "Don't echo commands" +#~ msgstr "N'affiche pas les commandes" + +#~ msgid "Turns off -k" +#~ msgstr "Désactive -k" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "Considère FILE comme étant infiniment récent" + +#~ msgid "Entering" +#~ msgstr "Entre dans" + +#~ msgid "Leaving" +#~ msgstr "Quitte" + +#~ msgid "# No variables." +#~ msgstr "# Pas de variables." + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "" +#~ "# moyenne de %.1f variables par table, maximum de %u dans une table.\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "" +#~ "# moyenne de %d.%d variables par table, maximum de %u dans une table.\n" + +#~ msgid "Error in lbr$ini_control, %d\n" +#~ msgstr "Erreur dans lbr$ini_control, %d\n" + +#~ msgid "Error looking up module %s in library %s, %d\n" +#~ msgstr "Erreur en recherchant le module %s dans la bibliothèque %s, %d\n" + +#~ msgid "Error getting module info, %d\n" +#~ msgstr "Erreur lors de l'obtention des informations du module, %d\n" + +#~ msgid "touch: " +#~ msgstr "touch: " + +#~ msgid " not" +#~ msgstr " non" + +#~ msgid "# Last modified %.24s (%0lx)\n" +#~ msgstr "# Dernière modification %.24s (%0lx)\n" + +#~ msgid "undefined" +#~ msgstr "indéfini" + +#~ msgid "file" +#~ msgstr "fichier" + +#~ msgid "environment override" +#~ msgstr "écrasement par l'environnement" + +#~ msgid "override" +#~ msgstr "écrasement" + +#~ msgid "the `word' function takes a one-origin index argument" +#~ msgstr "la fonction `word' prend un argument d'index à une seule origine" + +#~ msgid "implicit" +#~ msgstr "dépendance implicite" + +#~ msgid "rule" +#~ msgstr "règle de dépendance" + +#~ msgid "Trying %s dependency `%s'.\n" +#~ msgstr "Essai de la %s `%s'.\n" + +#~ msgid "Found dependency as `%s'.%s\n" +#~ msgstr "Dépendance trouvée en tant que `%s'.%s\n" + +#~ msgid "intermediate" +#~ msgstr "intermédiaire" + +#~ msgid "Unknown%s job %d" +#~ msgstr "Tâche%s inconnue %d" + +#~ msgid " remote" +#~ msgstr " distante" + +#~ msgid "%s finished." +#~ msgstr "%s terminée." + +#~ msgid "losing" +#~ msgstr "perdant" + +#~ msgid "winning" +#~ msgstr "gagnant" + +#~ msgid "%sGNU Make version %s" +#~ msgstr "%sGNU Make version %s" + +#~ msgid "Unknown error 12345678901234567890" +#~ msgstr "Erreur inconnue 12345678901234567890" + +#~ msgid "User" +#~ msgstr "utilisateur" + +#~ msgid "Make" +#~ msgstr "make" + +#~ msgid "Child" +#~ msgstr "enfant" + +#~ msgid "Dependency `%s' does not exist.\n" +#~ msgstr "La dépendance `%s' n'existe pas.\n" + +#~ msgid "newer" +#~ msgstr "plus récente" + +#~ msgid "older" +#~ msgstr "plus ancienne" + +#~ msgid "exporting: Couldn't create return socket." +#~ msgstr "exportation : N'a pas pu créer la socket de retour." + +#~ msgid "exporting: " +#~ msgstr "exportation : " + +#~ msgid "exporting: %s" +#~ msgstr "exportation : %s" + +#~ msgid "Job exported to %s ID %u\n" +#~ msgstr "Tâche exportée vers %s ID %u\n" + +#~ msgid "Error getting load average" +#~ msgstr "Erreur lors de l'obtention de la charge moyenne" + +#~ msgid "1-minute: %f " +#~ msgstr "1 minute : %f " + +#~ msgid "5-minute: %f " +#~ msgstr "5 minutes : %f " + +#~ msgid "15-minute: %f " +#~ msgstr "15 minutes : %f " + +#~ msgid "digits occur in two different argv-elements.\n" +#~ msgstr "des chiffres apparaissent dans deux éléments différents de argv.\n" + +#~ msgid "option %c\n" +#~ msgstr "option %c\n" + +#~ msgid "option a\n" +#~ msgstr "option a\n" + +#~ msgid "option b\n" +#~ msgstr "option b\n" + +#~ msgid "option c with value `%s'\n" +#~ msgstr "option c ayant pour valeur `%s'\n" + +#~ msgid "?? getopt returned character code 0%o ??\n" +#~ msgstr "?? getopt a renvoyé le caractère de code 0%o ??\n" + +#~ msgid "non-option ARGV-elements: " +#~ msgstr "éléments de ARGV qui ne sont pas des options : " + +#~ msgid "option d with value `%s'\n" +#~ msgstr "option d ayant pour valeur `%s'\n" + +#~ msgid "%s: unknown signal" +#~ msgstr "%s : signal inconnu" + +#~ msgid "Signal 12345678901234567890" +#~ msgstr "Signal 12345678901234567890" + +#~ msgid "Signal %d" +#~ msgstr "Signal %d" diff --git a/local/recipes/dev/gnu-make/source/po/ga.gmo b/local/recipes/dev/gnu-make/source/po/ga.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d0af64772d4cae35b629fa511d1cc8421e204329 GIT binary patch literal 38938 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 NWa<>84>H61e*t%Kt@i)` literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/ga.po b/local/recipes/dev/gnu-make/source/po/ga.po new file mode 100644 index 0000000000..c5873c4aa7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/ga.po @@ -0,0 +1,2593 @@ +# Irish translations for make. +# Copyright (C) 2005 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Kevin Patrick Scannell , 2005, 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.2.1\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\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 \n" +"Language-Team: Irish \n" +"Language: ga\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" + +#: 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: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:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Níl an chartlann '%s' ann" + +#: 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: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: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'" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"níorbh fhéidir le lbr$set_module eolas faoin mhodúl a fháil, stádas = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "theip ar lbr$ini_control le stádas = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"ní féidir leabharlann '%s' a oscailt chun cuardach a dhéanamh ar stádas " +"baill %d" + +#: 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:996 +msgid " (name might be truncated)" +msgstr " (seans go dteascfar an t-ainm)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Dáta %s" + +#: 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:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "An iomarca línte san oideas (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Briseadh.\n" + +#: 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: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:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Comhad '%s' á scriosadh" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Comhad '%s' á scriosadh" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# oideas le rith" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (insuite):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (ó '%s', líne %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Comhadlanna\n" + +#: 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: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: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: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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (eochair %s, mtime %I64u): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (gléas %ld, i-nód %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Níl" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " comhad, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "níl" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " rudaí neamhfhéideartha" + +#: src/dir.c:1180 +msgid " so far." +msgstr " go dtí seo." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " rudaí neamhfhéideartha i %lu comhadlann.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "tagairt d'athróg gan chríochnú" + +#: 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: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: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: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: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: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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Comhad idirmheánach '%s' á scriosadh" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Comhaid idirmheánacha á mbaint...\n" + +#: 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: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:1089 +msgid "# Not a target:" +msgstr "# Ní sprioc é:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Comhad luachmhar (réamhriachtanas de .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Sprioc bhréige (réamhriachtanas de .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Sprioc líne na n-orduithe." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Makefile réamhshocraithe, nó ó MAKEFILES, nó -include/sinclude." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Riail insuite" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Rinneadh cuardach ar rialacha intuigthe." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Ní dhearnadh cuardach ar rialacha intuigthe." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Stoc patrúin intuigthe/statach: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Tá an comhad ina réamhriachtanas idirmheánach." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Níor seiceáladh an t-am mionathraithe riamh." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Níl a leithéid de chomhad ann." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Tá an comhad an-aosta." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Athraithe %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Nuashonraíodh an comhad." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Níor nuashonraíodh an comhad." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Oideas á rith faoi láthair (IS FABHT É SEO)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Oideas spleáchais á rith (IS FABHT É SEO)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# D'éirigh leis an nuashonrú." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Tá gá le nuashonrú (-q sainithe)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Theip ar an nuashonrú." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Luach neamhbhailí sa bhall 'command_state'!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Comhaid" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# comhaid hais-tábla stait:\n" +"# " + +#: 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: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: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: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:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "neamhuimhriúil an dara hargóint le feidhm 'wordlist'" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: theip ar DuplicateHandle(In) (e=%ld)\n" + +#: src/function.c: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:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "Theip ar CreatePipe() (e=%ld)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Baisc-chomhad sealadach %s á ghlanadh\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "comhad: ainm comhaid ar iarraidh" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "oscailt: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "scríobh: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "dúnadh: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "comhad: an iomarca argóintí" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "léamh: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "comhad: oibríocht neamhbhailí ar chomhad: %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: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: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:2791 +#, c-format +msgid "Empty function name" +msgstr "Tá ainm na feidhme folamh" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Tá ainm na feidhme neamhbhailí: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Tá ainm na feidhme rófhada: %s" + +#: 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:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Uasmhéid argóintí neamhbhailí (%u) d'fheidhm %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: Tá an rogha '%s' débhríoch\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '--%s'\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '%c%s'\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: tá argóint de dhíth i ndiaidh na rogha '%s'\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: rogha anaithnid '--%s'\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: rogha anaithnid '%c%s'\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: rogha neamhcheadaithe -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: rogha neamhbhailí -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: tá argóint de dhíth i ndiaidh na rogha -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: Tá an rogha '-W %s' débhríoch\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '-W %s'\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: '%s' á leathnú\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: '%s' á luacháil\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "ní féidir %lu beart a dháileadh le haghaidh hais-tábla: cuimhne ídithe" + +#: src/hash.c:280 +#, fuzzy, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Lód=%ld/%ld=%.0f%%, " + +#: src/hash.c:282 +#, fuzzy, c-format +msgid "Rehash=%u, " +msgstr "Ath-haiseáil=%d, " + +#: src/hash.c:283 +#, fuzzy, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Tuairteanna haiseála=%ld/%ld=%.0f%%" + +#: 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: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: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:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Athchúrsáil de bharr rialacha intuigthe á seachaint.\n" + +#: src/implicit.c:451 +#, c-format +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: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: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:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Ag baint triail as réamhriachtanas rialach '%s'.\n" + +#: 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: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 '%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: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/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:552 +msgid " (core dumped)" +msgstr " (córdhumpa)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (rinneadh neamhshuim air)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: 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:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Ag fanacht le jabanna neamhchríochnaithe..." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (i gcéin)" + +#: 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: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:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Baisc-chomhad sealadach %s á ghlanadh\n" + +#: 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: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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Saoradh ceadchomhartha le haghaidh mac %p (%s).\n" + +#: 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:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"%d argóint sa tosú teipthe\n" + +#: 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Fuarthas ceadchomhartha le haghaidh mac %p (%s).\n" + +#: 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: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:2106 +msgid "cannot enforce load limit: " +msgstr "ní féidir srian lóid a chur i bhfeidhm: " + +#: 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: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: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:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Níorbh fhéidir stdin a athchóiriú\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:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Níorbh fhéidir stderr a athchóiriú\n" + +#: 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: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: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:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Baisc-chomhad sealadach %s á chruthú\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Inneachar an bhaisc-chomhaid:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Inneachar an bhaisc-chomhaid:%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 (líne %d) Droch-chomhthéacs blaoisce (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Níorbh fhéidir an tábla siombailí comhchoiteann a oscailt: %s" + +#: 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: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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Tá ainm na siombaile le lódáil folamh: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Siombail %s á lódáil ó %s\n" + +#: 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" +msgstr "Níl an oibríocht 'load' ar fáil ar an gcóras seo." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Roghanna:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Déan neamhshuim (comhoiriúnacht)\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C COMHADLANN, --directory=COMHADLANN\n" +" Téigh go COMHADLANN roimh dhéanamh aon rud.\n" + +#: 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: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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Sáraíonn athróga timpeallachta makefileanna.\n" + +#: 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:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f COMHAD, --file=COMHAD, --makefile=COMHAD\n" +" Léigh COMHAD mar makefile.\n" + +#: 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: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:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I COMHADLANN, --include-dir=COMHADLANN\n" +" Cuardaigh i gCOMHADLANN ar makefileanna " +"breise.\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] Ceadaigh N jab le chéile; éigríoch mura " +"gceaptar arg.\n" + +#: 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: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" +" Ná tosaigh jabanna iomadúla mura bhfuil an lód " +"níos lú ná 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 Úsáid an t-am modhnaithe is déanaí, ar an " +"nasc\n" +" siombalach nó ar an sprioc.\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" +" Ná rith aon oideas; taispeáin na orduithe " +"amháin.\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 COMHAD, --old-file=COMHAD, --assume-old=COMHAD\n" +" Caith le COMHAD mar cheann cianaosta; ná " +"hathdhéan é.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[CINEÃL], --output-sync[=CINEÃL]\n" +" Sioncronaigh aschur ó jabanna comhthreomhara " +"de réir CINEÃL.\n" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Ná rith aon oideas; stádas scortha = 0 má tá " +"sé cothrom le dáta.\n" + +#: 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: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: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: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:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Múch -k.\n" + +#: 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:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Taispeáin faisnéis dífhabhtaithe.\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Taispeáin an chomhadlann reatha.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Múch -w, fiú má tá sé i bhfeidhm go " +"hintuigthe.\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 COMHAD, --what-if=COMHAD, --new-file=COMHAD, --assume-new=COMHAD\n" +" Caith le COMHAD mar cheann úrnua (go " +"héigríoch).\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Tabhair rabhadh má dhéantar tagairt d'athróg " +"gan sainmhíniú.\n" + +#: 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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "leibhéal dífhabhtaithe anaithnid '%s'" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "cineál anaithnid '%s' le haghaidh output-sync" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Úsáid: %s [roghanna] [sprioc] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Tógadh an clár seo le haghaidh %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Tógadh an clár seo le haghaidh %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Seol tuairiscí fabhtanna chuig \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Fuarthas idirbhriseadh/eisceacht (cód = 0x%lx, seoladh = 0x%p)\n" + +#: src/main.c: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" +"Cuireadh glaoch ar scagaire eisceachta gan láimhseáil ón chlár %s\n" +"CódEisceachta = %lx\n" +"BratachaEisceachta = %lx\n" +"SeoladhEisceachta = 0x%p\n" + +#: 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: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: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: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: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." +msgstr "" +"rabhadh: níl an jabfhreastalaí ar fáil: ag úsáid -j1. Cuir '+' leis an " +"máthair-riail." + +#: 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:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Sonraíodh Makefile ón ionchur caighdeánach faoi dhó." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (comhad sealadach)" + +#: 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: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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "à athshocrú le haghaidh jabanna aonair (-j1)." + +#: 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: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: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: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:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Níor aimsíodh makefile '%s' atá san áireamh." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Níor aimsíodh makefile '%s'" + +#: 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:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "à rith arís[%u]:" + +#: 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:2887 +#, c-format +msgid "No targets" +msgstr "Níl aon sprioc ann" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Cinn sprice á nuashonrú....\n" + +#: 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: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: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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sTógadh an clár seo le haghaidh %s\n" + +#: 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:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sCeadúnas GPLv3+: GNU GPL leagan 3 nó níos déanaí \n" +"%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:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Bunachar sonraí Make, priontáilte ar %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Críochnaíodh an bunachar sonraí Make seo ar %s\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: 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:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (comhad sealadach): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (comhad sealadach)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (comhad sealadach)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Ag dul isteach i gcomhadlann anaithnid\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Ag dul amach as comhadlann anaithnid\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Ag dul isteach i gcomhadlann '%s'\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Ag dul amach as comhadlann '%s'\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Ag dul amach as comhadlann anaithnid\n" + +#: 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:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Ag dul amach as comhadlann '%s'\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: 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 "" + +#: 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:190 +msgid "creating jobs pipe" +msgstr "píopa na jabanna á chruthú" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "píopa na jabanna á chóipeáil" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "píopa an jabfhreastalaí á thú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:363 +msgid "write jobserver" +msgstr "scríobh jabfhreastalaí" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect píopa na jabanna" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "léadh píopa na jabanna" + +#: 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Makefile '%s' á léamh" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (gan ceann sprice réamhshocraithe)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (conair chuardaigh)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (is cuma)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (ná leathnaigh ~)" + +#: 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: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:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "comhréir neamhbhailí i gcoinníollach" + +#: 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:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "riail ar iarraidh roimh an oideas" + +#: 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:1156 +#, c-format +msgid "missing separator" +msgstr "deighilteoir ar iarraidh" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "patrún sprice ar iarraidh" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "ilphatrúin sprice" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "níl aon '%%' sa phatrún sprice" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "'endif' ar iarraidh" + +#: 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:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "téacs breise i ndiaidh treorach 'define'" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "'endef' ar iarraidh, 'define' gan chríochnú" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "téacs breise i ndiaidh treorach 'endef'" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "téacs breise i ndiaidh treorach '%s'" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "'%s' breise" + +#: 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: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: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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: 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:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "rialacha intuigthe agus gnáthrialacha measctha le chéile" + +#: 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: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: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:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "rabhadh: oideas le haghaidh sprioc '%s' á shárú" + +#: 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: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:2325 +#, fuzzy, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "rabhadh: oideas le haghaidh sprioc '%s' á shárú" + +#: 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: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:255 +#, c-format +msgid "'%s' is up to date." +msgstr "Tá '%s' cothrom le dáta." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Comhad '%s' á bhearradh.\n" + +#: 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: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:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Comhad sprice '%s' á scrúdú.\n" + +#: 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Rinneadh scrúdú ar chomhad '%s' cheana.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Comhad '%s' á nuashonrú fós.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Nuashonraíodh comhad '%s'.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Níl comhad '%s' ann.\n" + +#: 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: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: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: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: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:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Réamhriachtanais '%s' á ndéanamh anois.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Comhad sprice '%s' á thréigean.\n" + +#: 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: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: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: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: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: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: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: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:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Ní gá an sprioc '%s' a athdhéanamh" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; ag baint úsáid as ainm VPATH '%s'" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Caithfidh an sprioc '%s' a athdhéanamh.\n" + +#: 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:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Oideas le haghaidh '%s' á rith.\n" + +#: 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: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: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: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: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:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Ní patrún é eilimint .LIBPATTERNS '%s'" + +#: 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:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Rialacha Intuigthe" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Níl aon riail intuigthe." + +#: src/rule.c:610 +#, fuzzy, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u riail intuigthe, %u" + +#: 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" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Croch suas" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Idirbhriseadh" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Scoir" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Treoir Neamhcheadaithe" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Rianaigh/brisphointe" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Tobscortha" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Gaiste IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Gaiste EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Eisceacht snámhphointe" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Maraithe" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Busearráid" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Fabht deighilte" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Drochghlao ar an gcóras" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Píopa briste" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Clog aláraim" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Scortha" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Comhartha saincheaptha 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Comhartha saincheaptha 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Scoir an mhacphróiseas" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Cliseadh cumhachta" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Stoptha" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Stoptha (ionchur tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Stoptha (aschur tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Stoptha (comhartha)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Teorainn ama LAP sáraithe" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Uasmhéid na gcomhad sáraithe" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Am fíorúil caite" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Am próifíle caite" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Athraíodh an fhuinneog" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Leanta" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Staid phráinneach A/I" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "A/I indéanta" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Acmhainn caillte" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Comhartha guaise" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Iarratas ar eolas" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Níl comhphróiseálaí snámhphointe ar fáil" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Gan maoláin 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 maolán strcache: %lu (%lu) / teaghráin = %lu / stóras = %lu B / meán = " +"%lu B\n" + +#: src/strcache.c:308 +#, fuzzy, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s maolán reatha: méid = %hu B / úsáidte = %hu B / líon = %hu / meán = %hu " +"B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s eile úsáidte: iomlán = %lu B / líon = %lu / meán = %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 eile saor: iomlán = %lu B / uas = %lu B / íos = %lu B / meán = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s feidhmíocht strcache: cuardaigh = %lu / ráta aimsithe = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# staitisticí an hais-tábla:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "uathoibríoch" + +#: src/variable.c:1789 +msgid "default" +msgstr "réamhshocraithe" + +#: src/variable.c:1792 +msgid "environment" +msgstr "timpeallacht" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "timpeallacht le -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "líne na n-orduithe" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "treoir 'override'" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (ó '%s', líne %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# athróg tacar hais-tábla stait:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Athróga\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Luachanna Athróige sainiúil don phatrún" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Níl aon luach athróige atá sainiúil don phatrún." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u luach athróige atá sainiúil don phatrún" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "rabhadh: athróg gan sainmhíniú '%.*s'" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "Theip ar sys$search() le stádas %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-rabhadh, is féidir gur gá duit ionramháil CTRL-Y a athchumasú ó DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "CD INSUITE %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 "Iarcheangail aschur le %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Iarcheangal %.*s agus glanadh\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "%s á rith ina áit\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH Conairí Cuardaigh\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Níl aon chonair chuardaigh 'vpath' ann." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u conair chuardaigh 'vpath'.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Níl aon chonair ghinearálta chuardaigh (athróg 'VPATH') ann." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Conair ghinearálta chuardaigh (athróg 'VPATH'):\n" +"# " + +#: 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: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:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"earráid inmheánach: níorbh fhéidir séamafór an jabfhreastalaí '%s' a " +"oscailt: (Earráid %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Cliant an jabfhreastalaí (séamafór %s)\n" + +#: 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: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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Ordú gan aimsiú\n" + +#~ 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..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) críochnaithe. Ag leanúint ar aghaidh.\n" + +#~ 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'" + +#~ msgid " terminal." +#~ msgstr " teirminéal." + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Luach neamhbhailí sa bhall `update_status'!" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Earráid 0x%x (rinneadh neamhshuim air)" + +#~ msgid "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] Earráid 0x%x" + +#~ msgid "process_easy() failed failed to launch process (e=%ld)\n" +#~ msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%ld)\n" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "earráid inmheánach: roghanna --jobserver-fds iomadúla" + +#~ msgid "dup jobserver" +#~ msgstr "jabfhreastalaí dup" + +#~ 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 "" +#~ "%sIs saorbhogearra an ríomhchlár seo; féach ar an bhunchód le haghaidh\n" +#~ "%scoinníollacha cóipeála. Níl baránta ar bith ann; go fiú níl baránta " +#~ "ann\n" +#~ "%sd'INDÃOLTACHT nó FEILIÚNACHT D'FHEIDHM AR LEITH.\n" + +#~ msgid "virtual memory exhausted" +#~ msgstr "cuimhne fhíorúil ídithe" + +#~ msgid "write error" +#~ msgstr "earráid sa scríobh" + +#~ msgid "extraneous `endef'" +#~ msgstr "`endef' breise" + +#~ msgid "empty `override' directive" +#~ msgstr "treoir `override' folamh" + +#~ msgid "invalid `override' directive" +#~ msgstr "treoir neamhbhailí `override'" + +#~ msgid "" +#~ "\n" +#~ "%s # of strings in strcache: %d\n" +#~ msgstr "" +#~ "\n" +#~ "%s líon na dteaghrán i strcache: %d\n" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Rabhadh: Atreorú folamh\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "earráid inmheánach: `%s' command_state" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-rabhadh, fágfaidh CTRL-Y fo-phróisis gan ghlanadh.\n" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "INSUITE [%s][%s]\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "RM INSUITE %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Ordú anaithnid insuite '%s'\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Earráid, ordú folamh\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Atreoraíodh ionchur ó %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Atreoraíodh earráidí go %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Earráid le linn sceitheadh, %d\n" diff --git a/local/recipes/dev/gnu-make/source/po/gl.gmo b/local/recipes/dev/gnu-make/source/po/gl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..5fa3c55f0052b3fb2cef2431e55b12c97d093e01 GIT binary patch literal 20076 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, 2000, 2002. +# Leandro Regueiro , 2012. +# +# Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas +# colaborar connosco, podes atopar máis información en http://www.trasno.net +# +msgid "" +msgstr "" +"Project-Id-Version: make 3.82\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2012-11-12 16:40+0100\n" +"Last-Translator: Leandro Regueiro \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: 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: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:151 +#, fuzzy, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: O arquivo «%s» non existe" + +#: 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: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: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»" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"a chamada a lbr$set_module() fallou ao extraer a información do módulo, " +"estado = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "a chamada a lbr$ini_control() fallou con estado = %d" + +#: src/arscan.c:261 +#, fuzzy, c-format +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: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:996 +msgid " (name might be truncated)" +msgstr " (o nome pode quedar truncado)" + +#: 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, modo = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Interrompido.\n" + +#: 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: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:647 +#, fuzzy, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Eliminando o ficheiro «%s»" + +#: src/commands.c:649 +#, fuzzy, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Eliminando o ficheiro «%s»" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (incorporadas):" + +#: src/commands.c:690 +#, fuzzy, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (desde «%s», liña %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Directorios\n" + +#: 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: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: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: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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (clave %s, mtime %d): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (dispositivo %ld, inodo %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Non" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " ficheiros, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "non" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " imposíbeis" + +#: src/dir.c:1180 +msgid " so far." +msgstr " ata aquí." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " imposíbeis en %lu directorios.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "referencia a variábel non rematada" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "" + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" + +#: 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:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" + +#: 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: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:407 +#, fuzzy, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Eliminando o ficheiro intermedio «%s»" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Retirando os ficheiros intermedios...\n" + +#: 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: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:1089 +msgid "# Not a target:" +msgstr "# Non é un obxectivo:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Ficheiro precioso (prerrequisito de .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Obxectivo falso (prerrequisito de .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Obxectivo da liña de ordes." + +#: 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:1102 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# Non hai regras implícitas." + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Fíxose a busca de regras implícitas." + +#: 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: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:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# O ficheiro é un prerrequisito intermedio." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Nunca se comprobou o tempo de modificación." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# O ficheiro non existe." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# O ficheiro é moi antigo." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Última modificación: %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# O ficheiro foi actualizado." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# O ficheiro non foi actualizado." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "" + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "" + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Actualizado con éxito." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Ten que ser actualizado (-q está definido)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Produciuse un erro ao actualizar." + +#: src/file.c:1163 +#, fuzzy +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valor non válido no membro «command_state»!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Ficheiros" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# estatísticas da táboa hash de ficheiros:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "" + +#: 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 da función «word» non numérico" + +#: 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:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "primeiro argumento da función «wordlist» non numérico" + +#: 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 'intcmp' function" +msgstr "segundo argumento da función «wordlist» non numérico" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe(): a chamada a DuplicateHandle(In) fallou (e=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +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:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "A chamada a CreatePipe() fallou (e=%ld)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Limpando o ficheiro de lotes temporal %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "" + +#: src/function.c:2347 src/function.c:2383 +#, fuzzy, c-format +msgid "open: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2360 +#, fuzzy, c-format +msgid "write: %s: %s" +msgstr "erro de escritura: %s" + +#: src/function.c:2363 src/function.c:2402 +#, fuzzy, c-format +msgid "close: %s: %s" +msgstr "%s%s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "" + +#: src/function.c:2397 +#, fuzzy, c-format +msgid "read: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2409 +#, fuzzy, c-format +msgid "file: invalid file operation: %s" +msgstr "%s: opción incorrecta -- %c\n" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»" + +#: 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:2608 +#, fuzzy, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "chamada á función «%s» non rematada: falta «%c»" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "" + +#: 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: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»" + +#: src/getopt.c:659 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: a opción «%s» é ambigua\n" + +#: src/getopt.c:683 +#, fuzzy, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: a opción «--%s» non permite ningún argumento\n" + +#: src/getopt.c:688 +#, fuzzy, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: a opción «%c%s» non permite ningún argumento\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, fuzzy, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: a opción «%s» require un argumento\n" + +#: src/getopt.c:734 +#, fuzzy, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opción «--%s» non recoñecida\n" + +#: src/getopt.c:738 +#, fuzzy, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opción «%c%s» non recoñecida\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opción inaceptábel -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opción incorrecta -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opción require un argumento -- %c\n" + +#: src/getopt.c:844 +#, fuzzy, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: a opción «-W %s» é ambigua\n" + +#: src/getopt.c:862 +#, fuzzy, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: a opción «-W %s» non permite ningún argumento\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "non se poden reservar %lu bytes para a táboa hash: memoria esgotada" + +#: src/hash.c:280 +#, fuzzy, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Carga=%ld/%ld=%.0f%%, " + +#: src/hash.c:282 +#, fuzzy, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%d, " + +#: src/hash.c:283 +#, fuzzy, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Colisións=%ld/%ld=%.0f%%" + +#: 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: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: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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Probando a regra de patrón con raíz «%.*s».\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Rexeitando o prerrequisito imposíbel «%s».\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Rexeitando o prerrequisito implícito imposíbel «%s».\n" + +#: src/implicit.c:787 +#, fuzzy, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Probando o prerrequisito «%s».\n" + +#: src/implicit.c:788 +#, fuzzy, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Probando o prerrequisito implícito «%s».\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +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: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/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:552 +msgid " (core dumped)" +msgstr " (memoria envorcada)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignorado)" + +#: src/job.c:561 src/job.c:1900 +#, fuzzy +msgid "" +msgstr " (incorporadas):" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "*** [%s] Erro %d" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Agardando por traballos non rematados...." + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (remoto)" + +#: 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: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:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Limpando o ficheiro de lotes temporal %s\n" + +#: 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: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: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: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:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Contáronse %d argumentos no inicio que fallou\n" + +#: 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: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: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: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:2106 +msgid "cannot enforce load limit: " +msgstr "non é posíbel impoñer un límite de carga: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "" + +#: 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: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:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" +"%s (liña %d) Contexto do intérprete de ordes incorrecto (!unixy && !" +"batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: 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" +msgstr "Non se admiten os traballos en paralelo (-j) nesta plataforma." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opcións:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignorado por compatibilidade.\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRECTORIO, --directory=DIRECTORIO\n" +" Cambiar ao DIRECTORIO antes de facer nada.\n" + +#: 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: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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" As variábei de ambiente substitúen aos " +"makefiles.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n" +" Ler o FICHEIRO como makefile.\n" + +#: 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:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIRECTORIO, --include-dir=DIRECTORIO\n" +" Buscar os makefiles incluídos\n" +" no DIRECTORIO.\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] Permitir N traballos á vez; infinitos sen\n" +" un argumento.\n" + +#: 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: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" +" Non iniciar varios traballos con carga\n" +" superior a N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" + +#: src/main.c:355 +#, fuzzy +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" +" Non executar ningún comando; só amosalos.\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 FICHEIRO, --old-file=FICHEIRO, --assume-old=FICHEIRO\n" +" Tratar o FICHEIRO como moi antigo e non " +"refacelo.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: 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:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" + +#: 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: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: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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Desactiva -k.\n" + +#: 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:384 +#, fuzzy +msgid " --trace Print tracing information.\n" +msgstr "" +" -d Mostrar moita información de depuración.\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Mostrar o directorio actual.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Desactivar -w, incluso se se activou\n" +" implicitamente.\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 FICHEIRO, --what-if=FICHEIRO, --new-file=FICHEIRO, --assume-" +"new=FICHEIRO\n" +" Tratar o FICHEIRO como infinitamente novo.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Avisar cando se faga referencia a\n" +" unha variábel non definida.\n" + +#: 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:834 +#, fuzzy, c-format +msgid "unknown debug level specification '%s'" +msgstr "especificación de nivel de depuración descoñecido «%s»" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [opcións] [obxectivo] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa compilou para %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa compilou para %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Envíe informes de fallo no programa a .\n" +"Envíe informes de fallo na tradución a .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" +"%s: Atrapouse unha Interrupción/Excepción (código = 0x%lx, enderezo = 0x%p)\n" + +#: src/main.c: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" +"Filtro de excepcións non manexadas chamado desde o programa %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 "Violación de acceso: operación de escritura no enderezo 0x%p\n" + +#: 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: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: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: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." +msgstr "" +"aviso: o servidor de traballos non está dispoñíbel: usando -j1. Engada «+» á " +"regra do make pai." + +#: 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: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:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (ficheiro temporal)" + +#: 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: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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Reiniciando para entrar no modo de traballo único (-j1)." + +#: 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: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: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: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: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:2552 +#, fuzzy, c-format +msgid "Makefile '%s' was not found" +msgstr "Non se atopou o ficheiro de make «%s»" + +#: 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:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Re-executando[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Non hai obxectivos" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Actualizando os obxectivos meta....\n" + +#: 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: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: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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sCompilado para %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sCompilado para %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicenza GPLv3+: GNU GPL versión 3 ou posterior \n" +"%sIsto é software libre: pode modificalo e redistribuílo.\n" +"%sNon hai NINGUNHA GARANTÃA, ata onde o permita a lei.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Base de datos de Make, imprimida en %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Base de datos de Make rematada en %s\n" + +#: src/misc.c:602 +#, fuzzy, 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 "" + +#: 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:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Creando un ficheiro por lotes temporal %s\n" + +#: 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:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporal)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Entrando nun directorio descoñecido\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Saíndo dun directorio descoñecido\n" + +#: src/output.c:100 +#, fuzzy, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Entrando no directorio «%s»\n" + +#: src/output.c:102 +#, fuzzy, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Saíndo do directorio «%s»\n" + +#: 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:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Saíndo dun directorio descoñecido\n" + +#: 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:113 +#, fuzzy, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Saíndo do directorio «%s»\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Detido.\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 "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "creando a canalización de traballos" + +#: src/posixos.c:201 src/posixos.c:434 +#, fuzzy +msgid "duping jobs pipe" +msgstr "creando a canalización de traballos" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inicializar a canalización do servidor de traballos" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "erro interno: cadea --jobserver-fds non válida «%s»" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +#, fuzzy +msgid "pselect jobs pipe" +msgstr "lectura da canalización de traballos" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "lectura da canalización de traballos" + +#: 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:330 +#, fuzzy, c-format +msgid "Reading makefile '%s'" +msgstr "Lendo o ficheiro de make «%s»" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (non hai unha meta por defecto)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (ruta de busca)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (non importa)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (non hai expansión de ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintaxe non válida no condicional" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "" + +#: 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:1156 +#, fuzzy, c-format +msgid "missing separator" +msgstr "falta un separador%s" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "falta un patrón obxectivo" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "patróns de obxectivo múltiples" + +#: src/read.c:1306 +#, fuzzy, c-format +msgid "target pattern contains no '%%'" +msgstr "o patrón obxectivo non contén «%%»" + +#: src/read.c:1349 +#, fuzzy, c-format +msgid "missing 'endif'" +msgstr "falta «endif»" + +#: 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:1423 +#, fuzzy, c-format +msgid "extraneous text after 'define' directive" +msgstr "texto superfluo trala directiva «define»" + +#: src/read.c:1448 +#, fuzzy, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "falta «endef», «define» sen rematar" + +#: src/read.c:1476 +#, fuzzy, c-format +msgid "extraneous text after 'endef' directive" +msgstr "Texto superfluo trala directiva «endef»" + +#: src/read.c:1548 +#, fuzzy, c-format +msgid "extraneous text after '%s' directive" +msgstr "Texto superfluo trala directiva «%s»" + +#: src/read.c:1549 +#, fuzzy, c-format +msgid "extraneous '%s'" +msgstr "«%s» superfluo" + +#: src/read.c:1577 +#, fuzzy, c-format +msgid "only one 'else' per conditional" +msgstr "só un «else» por condicional" + +#: 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: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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: 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:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "regras implícitas e normais mesturadas" + +#: 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: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: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:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "" + +#: 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:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" + +#: 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: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:255 +#, fuzzy, c-format +msgid "'%s' is up to date." +msgstr "«%s» está actualizado." + +#: src/remake.c:350 +#, fuzzy, c-format +msgid "Pruning file '%s'.\n" +msgstr "Podando o ficheiro «%s».\n" + +#: 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: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:452 +#, fuzzy, c-format +msgid "Considering target file '%s'.\n" +msgstr "Considerando o ficheiro obxectivo «%s».\n" + +#: 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:471 +#, fuzzy, c-format +msgid "File '%s' was considered already.\n" +msgstr "O ficheiro «%s» xa fora considerado.\n" + +#: 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:484 +#, fuzzy, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Rematouse de actualizar o ficheiro «%s».\n" + +#: src/remake.c:513 +#, fuzzy, c-format +msgid "File '%s' does not exist.\n" +msgstr "O ficheiro «%s» non existe.\n" + +#: src/remake.c:520 +#, fuzzy, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Aviso: o ficheiro «%s» de .LOW_RESOLUTION_TIME ten unha marca de tempo " +"de alta resolución" + +#: src/remake.c:538 +#, fuzzy, c-format +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:558 +#, fuzzy, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Usando as ordes por defecto para «%s».\n" + +#: 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: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: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:757 +#, fuzzy, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Abandonando no ficheiro obxectivo «%s».\n" + +#: 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: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: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: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: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: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:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" + +#: 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:865 +#, fuzzy, c-format +msgid "No need to remake target '%s'" +msgstr "Non é preciso refacer o obxectivo «%s»" + +#: src/remake.c:867 +#, fuzzy, c-format +msgid "; using VPATH name '%s'" +msgstr "; usando o nome de VPATH «%s»" + +#: src/remake.c:891 +#, fuzzy, c-format +msgid "Must remake target '%s'.\n" +msgstr "Debe refacerse o obxectivo «%s».\n" + +#: src/remake.c:897 +#, fuzzy, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Ignorando o nome VPATH «%s».\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "" + +#: 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: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: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:1118 +#, fuzzy, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Usando as ordes por defecto para «%s».\n" + +#: 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: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:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "A Aduana non exporta: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Regras implícitas" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Non hai regras implícitas." + +#: src/rule.c:610 +#, fuzzy, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u regras implícitas, %u" + +#: 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" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Colgar" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interrompido" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Saír" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Instrución inaceptábel" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Trampa de trazado/punto de detención" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Abortado" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Trampa de IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Trampa EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Excepción de coma flotante" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Matado" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Erro do bus" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Fallo de segmento" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Chamada ao sistema incorrecta" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Canalización rota" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Temporizador" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminado" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Sinal definido polo usuario 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Sinal definido polo usuario 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "O proceso fillo saíu" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Fallo de subministración eléctrica" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Detido" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Detido (entrada de consola)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Detido (saída de consola)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Detido (sinal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Excedeuse o límite de tempo de CPU" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Excedeuse o límite de tamaño do ficheiro" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Temporizador virtual esgotado" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "A xanela cambiou" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continuado" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Condición de E/S urxente" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "A E/S é posíbel" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Recurso perdido" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Sinal de perigo" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Petición de información" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "O coprocesador de coma flotante non está dispoñíbel" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +#, fuzzy +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"\n" +"# estatísticas da táboa hash de ficheiros:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automático" + +#: src/variable.c:1789 +msgid "default" +msgstr "por defecto" + +#: src/variable.c:1792 +msgid "environment" +msgstr "ambiente" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "ficheiro de make" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "ambiente baixo -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "liña de ordes" + +#: src/variable.c:1804 +#, fuzzy +msgid "'override' directive" +msgstr "directiva «override»" + +#: src/variable.c:1814 +#, fuzzy, c-format +msgid " (from '%s', line %lu)" +msgstr " (desde «%s», liña %lu)" + +#: 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:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variábeis\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valores de variábeis específicas do patrón" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Non hai valores específicos do patrón." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valores de variábeis específicos do patrón" + +#: src/variable.h:237 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "aviso: variábel non definida «%.*s»" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "a chamada a sys$search() fallou con %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-aviso, pode que teña que reactivar o manexo de CTRL-Y desde o DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Executando %s no canto\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Rutas de busca VPATH\n" + +#: src/vpath.c:617 +#, fuzzy +msgid "# No 'vpath' search paths." +msgstr "# Non hai rutas de busca «vpath»" + +#: src/vpath.c:619 +#, fuzzy, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u rutas de busca «vpath».\n" + +#: src/vpath.c:622 +#, fuzzy +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Non hai unha ruta de busca xeral (variábel «VPATH»)." + +#: src/vpath.c:628 +#, fuzzy +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Ruta de busca xeral (variábel «VPATH»):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: 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»!" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Erro 0x%x (ignorado)" + +#~ msgid "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] Erro 0x%x" + +#~ msgid "[%s] Error %d (ignored)" +#~ msgstr "[%s] Erro %d (ignorado)" + +#~ msgid "%s: Command not found" +#~ msgstr "%s: Orde non atopada" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Programa para o intérprete de ordes non atopado" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s está suspendido durante 30 segundos..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "rematouse sleep(30). Continuando.\n" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "erro interno: opcións --jobserver-fds múltiples" + +#~ msgid "dup jobserver" +#~ msgstr "dup jobserver" + +#~ msgid "Unknown error %d" +#~ msgstr "Erro %d descoñecido" + +#~ 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" + +#~ msgid "Warning: File `%s' has modification time in the future" +#~ msgstr "Aviso: O ficheiro «%s» ten un tempo de modificación no futuro" + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "" +#~ "\n" +#~ "# strcache hash-table stats:\n" +#~ "# " +#~ msgstr "" +#~ "\n" +#~ "# estatísticas da táboa hash strcache:\n" +#~ "# " + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Aviso: Redirección baleira\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "erro interno: «%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 "Orde incorporada descoñecida «%s»\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Erro, orde baleira\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Entrada redirixida desde %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Erros redirixidos a %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Saída redirixida a %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Erro ao lanzar, %d\n" + +#~ msgid "create_child_process: DuplicateHandle(In) failed (e=%d)\n" +#~ msgstr "" +#~ "create_child_process: a chamada a DuplicateHandle(In) fallou (e=%d)\n" + +#~ msgid "create_child_process: DuplicateHandle(Err) failed (e=%d)\n" +#~ msgstr "" +#~ "create_child_process: a chamada a DuplicateHandle(Err) fallou (e=%d)\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "Erro de sintaxe, ainda dentro de '\"'\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "Recibiuse un sinal SIGCHLD; %u procesos fillos non colleitados.\n" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-aviso, CTRL-Y deixará subprocesos ceibos.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Non especifique -j ou --jobs se sh.exe non está dispoñible." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Reiniciando make para entrar no modo de un traballo." + +#~ 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 "" +#~ "%sIsto é software libre; vexa o código fonte polas condicións de copia.\n" +#~ "%sNON hai garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA\n" +#~ "%sUN FIN DETERMINADO.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "`endef' superfluo" + +#~ msgid "empty `override' directive" +#~ msgstr "directiva `override' baleira" + +#~ msgid "invalid `override' directive" +#~ msgstr "directiva `override' non válida" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "non hai un home de ficheiro en `%sinclude'" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "o obxectivo `%s' deixa o patrón prerrequisito baleiro" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Non hai ficheiros." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u ficheiros en %u baldes hash.\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "" +#~ "# %.3f ficheiros de media por balde, máximo de %u ficheiros nun balde.\n" + +#~ msgid "DIRECTORY" +#~ msgstr "DIRECTORIO" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "Entrar no DIRECTORIO antes de facer nada" + +#~ msgid "FLAGS" +#~ msgstr "MODIFICADORES" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "Suspende-lo proceso para poder conectar un depurador" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "" +#~ "As variables de ambiente teñen prioridade sobre os ficheiros de make" + +#~ msgid "FILE" +#~ msgstr "FICHEIRO" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "Le-lo FICHEIRO coma un ficheiro de make" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "Busca-los ficheiros de make incluidos no DIRECTORIO" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "Non comezar traballos múltiples se a carga non é inferior a N" + +#~ msgid "Don't actually run any commands; just print them" +#~ msgstr "Non executar ningún comando; só amosalos" + +#~ msgid "Consider FILE to be very old and don't remake it" +#~ msgstr "Considerar que o FICHEIRO é moi vello, e non o refacer" + +#~ msgid "Don't echo commands" +#~ msgstr "Non amosa-los comandos" + +#~ msgid "Turns off -k" +#~ msgstr "Desactiva -k" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "Considerar que o FICHEIRO é infinitamente novo" + +#~ msgid "Entering" +#~ msgstr "Entrando" + +#~ msgid "Leaving" +#~ msgstr "Saindo" + +#~ msgid "# No variables." +#~ msgstr "# Non hai variables." + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "# %.1f variables de media por balde, máximo de %u nun balde.\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "# %d.%d variables de media por balde, máximo de %u nun balde.\n" + +#~ msgid "the `word' function takes a positive index argument" +#~ msgstr "a función `word' toma un argumento índice positivo" + +#~ msgid " not" +#~ msgstr " non" + +#~ msgid " remote" +#~ msgstr " remoto" + +#~ msgid " with arg %s" +#~ msgstr " co argumento %s" + +#~ msgid "%s finished." +#~ msgstr "%s rematou." + +#~ msgid "%s: unknown signal" +#~ msgstr "%s: sinal descoñecido" + +#~ msgid "%sGNU Make version %s" +#~ msgstr "%sGNU Make versión %s" + +#~ msgid "1-minute: %f " +#~ msgstr "1 minuto: %f " + +#~ msgid "15-minute: %f " +#~ msgstr "15 minutos: %f " + +#~ msgid "5-minute: %f " +#~ msgstr "5 minutos: %f " + +#~ msgid "?? getopt returned character code 0%o ??\n" +#~ msgstr "?? getopt devolveu o código do carácter 0%o ??\n" + +#~ msgid "Child" +#~ msgstr "Fillo" + +#~ msgid "Dependency `%s' does not exist.\n" +#~ msgstr "A dependencia `%s' non existe.\n" + +#~ msgid "Error %ld" +#~ msgstr "Erro %ld" + +#~ msgid "Error getting load average" +#~ msgstr "Erro ao obte-la carga media" + +#~ msgid "Error mallocing for FAB\n" +#~ msgstr "Erro ao reservar memoria para FAB\n" + +#~ msgid "Error mallocing for NAM\n" +#~ msgstr "Erro ao reservar memoria para NAM\n" + +#~ msgid "Error mallocing for direct\n" +#~ msgstr "Erro ao reservar memoria para direct\n" + +#~ msgid "Error mallocing for searchspec\n" +#~ msgstr "Erro ao reservar memoria para searchspec\n" + +#~ msgid "ExceptionAddress = %x\\r\n" +#~ msgstr "ExceptionAddress = %x\\r\n" + +#~ msgid "ExceptionCode = %x\\r\n" +#~ msgstr "ExceptionCode = %s\\r\n" + +#~ msgid "ExceptionFlags = %x\\r\n" +#~ msgstr "ExceptionFlags = %x\\r\n" + +#~ msgid "Job exported to %s ID %u\n" +#~ msgstr "Traballo exportado a %s ID %u\n" + +#~ msgid "MyExecute: Cannot allocate space for calling a command" +#~ msgstr "MyExecute: Non se pode reservar espacio para chamar un comando" + +#~ msgid "Trying %s dependency `%s'.\n" +#~ msgstr "Probando a dependencia %s `%s'.\n" + +#~ msgid "Unknown error 12345678901234567890" +#~ msgstr "Erro 12345678901234567890 descoñecido" + +#~ msgid "Unknown%s job %d" +#~ msgstr "Traballo%s %d descoñecido" + +#~ msgid "User" +#~ msgstr "Usuario" + +#~ msgid "arg with white space or doublequotes: %s\n" +#~ msgstr "argumento con espacios en branco ou comiñas dobres: %s\n" + +#~ msgid "digits occur in two different argv-elements.\n" +#~ msgstr "aparecen díxitos en dous elementos de argv distintos.\n" + +#~ msgid "empty string arg: %s\n" +#~ msgstr "argumento de cadea baleiro: %s\n" + +#~ msgid "environment override" +#~ msgstr "supli-lo ambiente" + +#~ msgid "execve: " +#~ msgstr "execve: " + +#~ msgid "execvp: " +#~ msgstr "execvp: " + +#~ msgid "expand_function: unable to launch process (e=%d)\n" +#~ msgstr "expand_function: non se puido lanza-lo proceso (e=%d)\n" + +#~ msgid "exporting: " +#~ msgstr "exportando: " + +#~ msgid "exporting: %s" +#~ msgstr "exportando: %s" + +#~ msgid "exporting: Couldn't create return socket." +#~ msgstr "exportando: Non se puido crea-lo socket de retorno." + +#~ msgid "getcwd: " +#~ msgstr "getcwd: " + +#~ msgid "getwd: %s" +#~ msgstr "getwd: %s" + +#~ msgid "implicit" +#~ msgstr "implícita" + +#~ msgid "intermediate" +#~ msgstr "intermedia" + +#~ msgid "losing" +#~ msgstr "que perde" + +#~ msgid "never" +#~ msgstr "nunca" + +#~ msgid "newer" +#~ msgstr "máis novo" + +#~ msgid "non-option ARGV-elements: " +#~ msgstr "elementos ARGV que non son opcións: " + +#~ msgid "older" +#~ msgstr "máis vello" + +#~ msgid "option %c\n" +#~ msgstr "opción %c\n" + +#~ msgid "option %s" +#~ msgstr "opción %s" + +#~ msgid "option a\n" +#~ msgstr "opción a\n" + +#~ msgid "option b\n" +#~ msgstr "opción b\n" + +#~ msgid "option c with value `%s'\n" +#~ msgstr "opción c co valor `%s'\n" + +#~ msgid "option d with value `%s'\n" +#~ msgstr "opción d co valor `%s'\n" + +#~ msgid "original arg: %s\n" +#~ msgstr "argumento orixinal: %s\n" + +#~ msgid "override" +#~ msgstr "suplir" + +#~ msgid "plain arg: %s\n" +#~ msgstr "argumento simple: %s\n" + +#~ msgid "process_begin: CreateProcess(%s, %s, ...) failed.\n" +#~ msgstr "process_begin: a chamada a CreateProcess(%s, %s, ...) fallou.\n" + +#~ msgid "process_easy: DuplicateHandle(Out) failed (e=%d)\n" +#~ msgstr "process_easy: a chamada a DuplicateHandle(Out) fallou (e=%d)\n" + +#~ msgid "read" +#~ msgstr "lectura" + +#~ msgid "rule" +#~ msgstr "regra" + +#~ msgid "touch %s" +#~ msgstr "tocar %s" + +#~ msgid "undefined" +#~ msgstr "non definido" + +#~ msgid "unlink: " +#~ msgstr "unlink: " + +#~ msgid "winning" +#~ msgstr "que gaña" + +#~ msgid "write" +#~ msgstr "escritura" diff --git a/local/recipes/dev/gnu-make/source/po/he.gmo b/local/recipes/dev/gnu-make/source/po/he.gmo new file mode 100644 index 0000000000000000000000000000000000000000..fb73f0a09232ee3383c7da5651ac834efadc86e3 GIT binary patch literal 9710 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 BBhLT; literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/he.po b/local/recipes/dev/gnu-make/source/po/he.po new file mode 100644 index 0000000000..4743ec08fc --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/he.po @@ -0,0 +1,2616 @@ +# Hebrew messages for GNU Make +# Copyright (C) 2002 Free Software Foundation, Inc. +# Eli Zaretskii , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: make 3.79.1\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2002-03-30 21:33+0300\n" +"Last-Translator: Eli Zaretskii \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, fuzzy, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "úëîúð äððéàù `%s' äðåëúá ùåîéù ïåéñð" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "VMS úëøòîá ïåéëøàá øáà ìù äòù/êéøàú éåðéùá äëéîú ïéà" + +#: src/ar.c:151 +#, fuzzy, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "íéé÷ åðéà `%s' ïåéëøà õáå÷ :touch" + +#: src/ar.c:154 +#, fuzzy, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "ïé÷ú ïåéëøà õáå÷ åðéà `%s' :touch" + +#: src/ar.c:161 +#, fuzzy, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "`%s' øáà ìéëî åðéà `%s' ïåéëøà :touch" + +#: src/ar.c:168 +#, fuzzy, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "`%s' øåáò ïé÷ú-àì ãå÷ äøéæçä ar_member_touch :touch" + +#: src/arscan.c:130 +#, fuzzy, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "%d ñåèèñ ,lib$rset_module é\"ò ìåãåî ìò òãéî úôéìùá ïåìùë" + +#: src/arscan.c:236 +#, fuzzy, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "%d ñåèèñ íò ìùëð lbr$ini_control" + +#: src/arscan.c:261 +#, fuzzy, c-format +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: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:996 +msgid " (name might be truncated)" +msgstr " (name might be truncated)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Date %s" + +#: 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:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Break. ***\n" + +#: src/commands.c:629 +#, fuzzy, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] ÷çîéé àì ;ïé÷ú-éúìá úåéäì ìåìò `%s' ïåéëøà øáà ***" + +#: src/commands.c:633 +#, fuzzy, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** ÷çîéé àì ;ïé÷ú-éúìá úåéäì ìåìò `%s' ïåéëøà øáà ***" + +#: src/commands.c:647 +#, fuzzy, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] `%s' õáå÷ ÷çåî ***" + +#: src/commands.c:649 +#, fuzzy, c-format +msgid "*** Deleting file '%s'" +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:685 +#, fuzzy +msgid "# recipe to execute" +msgstr "# commands to execute" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (built-in):" + +#: src/commands.c:690 +#, fuzzy, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (from `%s', line %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Directories\n" + +#: 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: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: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: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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (key %s, mtime %d): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (device %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "No" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " files, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "no" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " impossibilities" + +#: src/dir.c:1180 +msgid " so far." +msgstr " so far." + +#: src/dir.c:1197 +#, fuzzy, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " impossibilities in %u directories.\n" + +#: 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:295 +#, c-format +msgid "unterminated variable reference" +msgstr "äëìäë úîééúñî äðéà äðúùîì äééðôä" + +#: src/file.c:272 +#, fuzzy, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr ",`%s' õáå÷ øåáò úåãå÷ô åðúéð %s õáå÷á %lu äøåùá" + +#: src/file.c:277 +#, fuzzy, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr ",íéùøåôî-éúìá íéììëá ùåôéç é\"ò åàöîð `%s' õáå÷ øåáò úåãå÷ô" + +#: src/file.c:281 +#, fuzzy, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr ".õáå÷ åúåàì äúò íéáùçð `%s' ïäå `%s' ïä íìåàå" + +#: 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:304 +#, fuzzy, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "`%s' íéããåá íééúåãå÷ðî `%s' íéìåôë íééúåãå÷ðì êåôäì ïúéð àì" + +#: src/file.c:310 +#, fuzzy, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "`%s' íéìåôë íééúåãå÷ðî `%s' íéããåá íééúåãå÷ðì êåôäì ïúéð àì" + +#: src/file.c:407 +#, fuzzy, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***" + +#: src/file.c:411 +#, fuzzy, c-format +msgid "Removing intermediate files...\n" +msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***" + +#: 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: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:1089 +msgid "# Not a target:" +msgstr "# Not a target:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Precious file (prerequisite of .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Phony target (prerequisite of .PHONY)." + +#: src/file.c:1098 +#, fuzzy +msgid "# Command line target." +msgstr "# Command-line target." + +#: src/file.c:1100 +#, fuzzy +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# A default or MAKEFILES makefile." + +#: src/file.c:1102 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# No implicit rules." + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Implicit rule search has been done." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Implicit rule search has not been done." + +#: src/file.c:1107 +#, fuzzy, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Implicit/static pattern stem: `%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# File is an intermediate prerequisite." + +#: 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:1123 +msgid "# Modification time never checked." +msgstr "# Modification time never checked." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# File does not exist." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# File is very old." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Last modified %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# File has been updated." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# File has not been updated." + +#: src/file.c:1139 +#, fuzzy +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Commands currently running (THIS IS A BUG)." + +#: src/file.c:1142 +#, fuzzy +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Dependencies commands running (THIS IS A BUG)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Successfully updated." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Needs to be updated (-q is set)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Failed to be updated." + +#: src/file.c:1163 +#, fuzzy +msgid "# Invalid value in 'command_state' member!" +msgstr "# Invalid value in `command_state' member!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Files" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "" + +#: 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:803 +#, fuzzy, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "éáåéç úåéäì áééç `word' úééö÷ðåôì ïåùàø èðîåâøà" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "øôñî åðéà `wordlist' úééö÷ðåôì ïåùàø èðîåâøà" + +#: 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:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "create_child_process: DuplicateHandle(In) failed (e=%d)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "create_child_process: DuplicateHandle(Err) failed (e=%d)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() failed (e=%d)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "" + +#: src/function.c:2409 +#, fuzzy, c-format +msgid "file: invalid file operation: %s" +msgstr "%s úéðëú øåáò éåâù ïééôàî -- %c\n" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô" + +#: src/function.c:2539 +#, fuzzy, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "åæ úëøòîá úùîåîî äðéà `%s' äéö÷ðåô" + +#: src/function.c:2608 +#, fuzzy, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "`%s' äéö÷ðåôì äàéø÷á `%c' øñç" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "" + +#: src/function.c:2798 +#, fuzzy, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô" + +#: src/function.c:2801 +#, fuzzy, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô" + +#: src/getopt.c:659 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `%s' ïééôàî\n" + +#: src/getopt.c:683 +#, fuzzy, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `--%s' ïééôàî\n" + +#: src/getopt.c:688 +#, fuzzy, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `%c%s' ïééôàî\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, fuzzy, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s úéðëú øåáò èðîåâøà áééçî `%s' ïééôàî\n" + +#: src/getopt.c:734 +#, fuzzy, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s úéðëú øåáò `--%s' ääåæî-éúìá ïééôàî\n" + +#: src/getopt.c:738 +#, fuzzy, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s úéðëú øåáò `%c%s' ääåæî-éúìá ïééôàî\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: é÷åç-éúìá ïééôàî -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s úéðëú øåáò éåâù ïééôàî -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: èðîåâøà áééçî ïééôàî -- %c\n" + +#: src/getopt.c:844 +#, fuzzy, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `-W %s' ïééôàî\n" + +#: src/getopt.c:862 +#, fuzzy, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `-W %s' ïééôàî\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "" + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "" + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "" + +#: src/implicit.c:41 +#, fuzzy, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr ".`%s' øåáò ùøåôî-éúìá ììë ùôçî\n" + +#: src/implicit.c:57 +#, fuzzy, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr ".`%s' øåáò ïåéëøà éøáàì ùøåôî-éúìá ììë ùôçî\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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr ".`%.*s' ùøåù íò úéðáú ììë äñðî\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr ".úéøùôà-éúìá äðéäù íåùî `%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:787 +#, fuzzy, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr ".`%s' íã÷ úùéøã ììë äñðî\n" + +#: src/implicit.c:788 +#, fuzzy, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr ".`%s' úùøåôî-éúìá íã÷ úùéøã äñðî\n" + +#: 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 "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: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/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" +msgstr "fwrite (temporary file)" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (core õáå÷á íùøð ïåøëæä ïëåú)" + +#: src/job.c:557 +#, fuzzy +msgid " (ignored)" +msgstr "[%s] %d äì÷úî éúîìòúä" + +#: src/job.c:561 src/job.c:1900 +#, fuzzy +msgid "" +msgstr " (built-in):" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "*** [%s] %d äì÷ú" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** ...åîééúñð íøèù úåãåáòì ïéúîî" + +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr "(ú÷çåøî)" + +#: 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:915 +#, fuzzy, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "äìùëðù 0x%08lx PID=%ld %s úá-úéðëú óñåà\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n" + +#: src/job.c:972 +#, fuzzy, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n" + +#: 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:1146 +#, fuzzy, c-format +msgid "Released token for child %p (%s).\n" +msgstr ".øøçåù 0x%08lx (%s) úá-úéðëú øåáò ïåîéñàä\n" + +#: 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:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"ìùëðù øåâéùá åðîð íéèðîåâøà %d\n" + +#: 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:1883 +#, fuzzy, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr ".0x%08lx (%s) úá-úéðëú øåáò ïåîéñà ìá÷úä\n" + +#: src/job.c:1909 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%säúééðáì íéììë ïéà êà ,`%s' úùøåã `%s'%s äøèî" + +#: 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:2106 +msgid "cannot enforce load limit: " +msgstr "cannot enforce load limit: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "" + +#: src/job.c:2869 +#, fuzzy, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "(`%s' äéä íãå÷ ,`%s' åéùëò) äðúùä $SHELL ìù åëøò" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "`%s' éðîæ batch õáå÷ øöåé\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" +"(!unixy && !batch_mode_shell) shell-mode úòéá÷á äì÷ú :%s õáå÷ ìù %d äøåù\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: 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:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: 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" +msgstr ".åæ úëøòîá êîúð åðéà (-j) éìéá÷î òåöéá" + +#: src/main.c:317 +msgid "Options:\n" +msgstr " :íéðééôàî\n" + +#: src/main.c:318 +#, fuzzy +msgid " -b, -m Ignored for compatibility.\n" +msgstr "úåîéàú ïòîì èîùåî" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" + +#: src/main.c:325 +#, fuzzy +msgid " -d Print lots of debugging information.\n" +msgstr "úåàéâù éåôéð úáåèì òãéî ìù òôù âöä" + +#: src/main.c:327 +#, fuzzy +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "úåàéâù éåôéð úáåèì òãéî ìù íéðåù íéâåñ âöä" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" + +#: src/main.c:337 +#, fuzzy +msgid " -h, --help Print this message and exit.\n" +msgstr "úéðëúäî àöå äæ äøæò êñî âöä" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" + +#: 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: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: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:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" + +#: 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: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:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: src/main.c:364 +#, fuzzy +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "Make ìù éîéðô íéðåúð ñéñá âöä" + +#: src/main.c:366 +#, fuzzy +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "úðëãåòî äøèî íàá øîåà äàéöé ãå÷ ;úåãå÷ô õéøú ìà" + +#: src/main.c:368 +#, fuzzy +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "íéùøåôî-éúìá íéðáåî íéììë ìøèð" + +#: src/main.c:370 +#, fuzzy +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "íéðúùî ìù úåðáåî úåøãâä ìøèð" + +#: 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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" + +#: src/main.c:382 +#, fuzzy +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "ïúåðáì íå÷îá úåøèî ìù ïîæ úîéúç ïëãò" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" + +#: src/main.c:386 +#, fuzzy +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "úéðëúäî àöå Make ìù àñøéâ øôñî âöä" + +#: src/main.c:388 +#, fuzzy +msgid " -w, --print-directory Print the current directory.\n" +msgstr "úéçëåð äé÷éú íù âöä" + +#: 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: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:395 +#, fuzzy +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "øãâåä àìù äðúùîì äééðôä äø÷îá äøäæà âöä" + +#: 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:834 +#, fuzzy, c-format +msgid "unknown debug level specification '%s'" +msgstr "úåàéâù éåôéðì òãéî ìù `%s' øëåî-éúìá ïééôàî" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "%s [íéðééôàî] [äøèî] ... :ùåîéù ïôåà\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" + +#: src/main.c:909 +#, fuzzy, c-format +msgid "Report bugs to \n" +msgstr "" +"\n" +".-ì äì÷ú éçååéã çåìùì àð\n" + +#: src/main.c:940 +#, fuzzy, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s úéðëúá (code = 0x%x, addr = 0x%x) äâéøç åà ä÷éñô\n" + +#: src/main.c:947 +#, fuzzy, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"%s úéðëú êåúî àø÷ð ìåôéè àìì úåâéøç ïðñî\n" +"ExceptionCode = %x\n" +"ExceptionFlags = %x\n" +"ExceptionAddress = %x\n" + +#: src/main.c:955 +#, fuzzy, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "%x úáåúëì äáéúë :ïåøëæì äùéâ úì÷ú\n" + +#: src/main.c:956 +#, fuzzy, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "%x úáåúëî äàéø÷ :ïåøëæì äùéâ úì÷ú\n" + +#: 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: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: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:1841 +#, fuzzy, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "jobserver ïôåà ìèáî ;-jN áééçî Make-úú :äøäæà" + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr ".úçà íòôî øúåé ïúéð éð÷ú èì÷ õåøòî Makefile" + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (temporary file)" + +#: src/main.c:2095 +#, fuzzy, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "jobserver ïôåà ìèáî ;-jN áééçî Make-úú :äøäæà" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr ".åæ úëøòîá êîúð åðéà (-j) éìéá÷î òåöéá" + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr ".(-j1) éúøãñ ïôåàá åòöåáé úåãå÷ô" + +#: 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: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:2397 +#, fuzzy, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr ".ùãçî åøöééìî òðîð ;úéôåñðéà äàìåì øåöéì ìåìò `%s' Makefile\n" + +#: 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:2548 +#, fuzzy, c-format +msgid "Included makefile '%s' was not found." +msgstr ".àöîð àì `%s' ììëåî makefile" + +#: src/main.c:2552 +#, fuzzy, c-format +msgid "Makefile '%s' was not found" +msgstr "àöîð àì `%s' Makefile" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr ".úéøå÷îä äé÷éúì øåæçì ïúéð àì" + +#: src/main.c:2708 +#, fuzzy, c-format +msgid "Re-executing[%u]:" +msgstr "Re-executing:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "úåøèî ïéà" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "makefile éöá÷ åàöîð àìå úåøèî ïåéö ïéà" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "...ãòé úåøèî ïëãòî\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr ".äîìù àì úåéäì äìåìò äéðáä .ïåòù úùéìâ äúìâúð :úåøéäæ" + +#: src/main.c:3186 +#, fuzzy, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî" + +#: src/main.c:3267 +#, fuzzy, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Make data base, printed on %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Finished Make data base on %s\n" + +#: 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 "using default temporary directory '%s'" +msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "`%s' éðîæ batch õáå÷ øöåé\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (temporary file): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (temporary file)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (temporary file)" + +#: src/output.c:95 +#, fuzzy, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "an unknown directory" + +#: src/output.c:97 +#, fuzzy, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "an unknown directory" + +#: src/output.c:100 +#, fuzzy, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "directory `%s'\n" + +#: src/output.c:102 +#, fuzzy, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "directory `%s'\n" + +#: src/output.c:106 +#, fuzzy, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "an unknown directory" + +#: src/output.c:108 +#, fuzzy, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "an unknown directory" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "" + +#: src/output.c:113 +#, fuzzy, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "directory `%s'\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Stop.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "" + +#: 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 "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "creating jobs pipe" + +#: src/posixos.c:201 src/posixos.c:434 +#, fuzzy +msgid "duping jobs pipe" +msgstr "creating jobs pipe" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "init jobserver pipe" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "--jobserver-fds ïééôàîá `%s' äéåâù úæåøçî :úéîéðô äðëú úì÷ú" + +# 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:363 +msgid "write jobserver" +msgstr "write jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +#, fuzzy +msgid "pselect jobs pipe" +msgstr "read jobs pipe" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "read jobs pipe" + +#: 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:330 +#, fuzzy, c-format +msgid "Reading makefile '%s'" +msgstr "Reading makefile `%s'" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (no default goal)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (search path)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (don't care)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (no ~ expansion)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "éàðú ìù éåâù øéáçú" + +#: src/read.c:1002 +#, fuzzy, c-format +msgid "recipe commences before first target" +msgstr "äðåùàø äøèî éðôì úåìéçúî úåãå÷ô" + +#: src/read.c:1053 +#, fuzzy, c-format +msgid "missing rule before recipe" +msgstr "ïäéðôì ììë àìì úåãå÷ô" + +#: src/read.c:1154 +#, fuzzy, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "(?íéçååø 8 íå÷îá TAB-ì úðååëúä íàä) " + +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator" +msgstr "%sãéøôî øñç" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "äøèî úéðáú ïéà" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "úåáåøî äøèî úåéðáú" + +#: src/read.c:1306 +#, fuzzy, c-format +msgid "target pattern contains no '%%'" +msgstr "`%%' àìì äøèî úéðáú" + +#: src/read.c:1349 +#, fuzzy, c-format +msgid "missing 'endif'" +msgstr "øñç `endif'" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "÷éø äðúùî íù" + +#: src/read.c:1423 +#, fuzzy, c-format +msgid "extraneous text after 'define' directive" +msgstr "`endef' úàøåä éøçà øúåéî èñ÷è" + +#: src/read.c:1448 +#, fuzzy, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "íåéñ àìì `define' úàøåä ,øñç `endef'" + +#: src/read.c:1476 +#, fuzzy, c-format +msgid "extraneous text after 'endef' directive" +msgstr "`endef' úàøåä éøçà øúåéî èñ÷è" + +#: src/read.c:1548 +#, fuzzy, c-format +msgid "extraneous text after '%s' directive" +msgstr "`%s' úàøåä éøçà øúåéî èñ÷è" + +#: src/read.c:1549 +#, fuzzy, c-format +msgid "extraneous '%s'" +msgstr "øúåéî `%s'" + +#: src/read.c:1577 +#, fuzzy, c-format +msgid "only one 'else' per conditional" +msgstr "éàðú ìëì ãéçé `else' ÷ø øúåî" + +#: src/read.c:1853 +#, fuzzy, c-format +msgid "Malformed target-specific variable definition" +msgstr "äøèîì éôéöôñ äðúùî ìù äéåâù äøãâä" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "íéùøåôî-éúìáå íééèèñ úéðáú éììë ìù áåáøò" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "íéùøåôî-éúìáå íéìéâø íéììë ìù áåáøò" + +#: src/read.c:2155 +#, fuzzy, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "ãòéä úéðáú úà úîàåú äðéà `%s' äøèî" + +#: src/read.c:2170 src/read.c:2221 +#, fuzzy, c-format +msgid "target file '%s' has both : and :: entries" +msgstr ":: ïäå : âåñî ïä íéììë ùé `%s' äøèî õáå÷ì" + +#: src/read.c:2176 +#, fuzzy, c-format +msgid "target '%s' given more than once in the same rule" +msgstr ".ììë åúåàá úçà íòôî øúåé äòéôåî `%s' äøèî" + +#: src/read.c:2186 +#, fuzzy, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "`%s' äøèî øåáò úåãå÷ô ñøåã :úåøéäæ" + +#: src/read.c:2189 +#, fuzzy, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "`%s' äøèî øåáò úåîãå÷ úåãå÷ôî íìòúî :úåøéäæ" + +#: src/read.c:2308 +#, fuzzy, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "íéùøåôî-éúìáå íéìéâø íéììë ìù áåáøò" + +#: src/read.c:2325 +#, fuzzy, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "`%s' äøèî øåáò úåãå÷ô ñøåã :úåøéäæ" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "äçðæð äøåùä úøúé ;NUL åú éúùâô :äøäæà" + +#: 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:255 +#, fuzzy, c-format +msgid "'%s' is up to date." +msgstr ".éðëãò øáë `%s'" + +#: src/remake.c:350 +#, fuzzy, c-format +msgid "Pruning file '%s'.\n" +msgstr ".`%s' øåáò úåéåìú óøâ õö÷î\n" + +#: 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:426 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%s`%s'%s äøèî úééðáì íéììë ïéà" + +#: src/remake.c:452 +#, fuzzy, c-format +msgid "Considering target file '%s'.\n" +msgstr ".`%s' äøèî õáå÷ ïçåá\n" + +#: src/remake.c:459 +#, fuzzy, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr ".`%s' õáå÷ ïåëãòá éúìùëðå éúéñéð ïîæî àì\n" + +#: src/remake.c:471 +#, fuzzy, c-format +msgid "File '%s' was considered already.\n" +msgstr ".ïë-éðôì ïçáð øáë `%s' õáå÷\n" + +#: src/remake.c:481 +#, fuzzy, c-format +msgid "Still updating file '%s'.\n" +msgstr ".`%s' õáå÷ ïëãòî ïééãò\n" + +#: src/remake.c:484 +#, fuzzy, c-format +msgid "Finished updating file '%s'.\n" +msgstr ".`%s' õáå÷ ïëãòì éúîééñ\n" + +#: src/remake.c:513 +#, fuzzy, c-format +msgid "File '%s' does not exist.\n" +msgstr ".íéé÷ åðéà `%s' õáå÷\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" + +#: 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:558 +#, fuzzy, c-format +msgid "Using default recipe for '%s'.\n" +msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr ".%s <- %s úéìâòî ìåìú èéîùî" + +#: src/remake.c:737 +#, fuzzy, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr ".`%s' äøèî õáå÷ ìù íã÷-úåùéøã íò éúîééñ\n" + +#: src/remake.c:743 +#, fuzzy, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr ".äéðáá `%s' ìù íã÷ä úåùéøã\n" + +#: src/remake.c:757 +#, fuzzy, c-format +msgid "Giving up on target file '%s'.\n" +msgstr ".`%s' äøèî õáå÷ éáâì íééãé éúîøä\n" + +#: src/remake.c:762 +#, fuzzy, c-format +msgid "Target '%s' not remade because of errors." +msgstr ".úåàéâù á÷ò ùãçî äúðáð àì `%s' äøèî" + +#: src/remake.c:814 +#, fuzzy, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr ".`%s' íã÷ä úùéøãî äùãç `%s' äøèî\n" + +#: src/remake.c:819 +#, fuzzy, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr ".íéé÷ åðéàù `%s' éàðúë úùøåã `%s' äøèî\n" + +#: src/remake.c:824 +#, fuzzy, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr ".`%s' íã÷ä úùéøãî äðùé `%s' äøèî\n" + +#: src/remake.c:827 +#, fuzzy, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr ".`%s' íã÷ä úùéøãî äùãç `%s' äøèî\n" + +#: src/remake.c:845 +#, fuzzy, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr ".íã÷ úåùéøã àììå íéìåôë íééúåãå÷ð íò äðéä `%s' äøèî\n" + +#: src/remake.c:852 +#, fuzzy, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr ".äùòîì äúðúùä àì íã÷ úùéøã óàå `%s' øåáò úåãå÷ô ïéà\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "" + +#: src/remake.c:865 +#, fuzzy, c-format +msgid "No need to remake target '%s'" +msgstr "`%s' äøèî ùãçî úåðáì êøåö ïéà" + +#: src/remake.c:867 +#, fuzzy, c-format +msgid "; using VPATH name '%s'" +msgstr " (`%s' :VPATH õáå÷ íù)" + +#: src/remake.c:891 +#, fuzzy, c-format +msgid "Must remake target '%s'.\n" +msgstr ".`%s' äøèî ùãçî úåðáì áééç\n" + +#: src/remake.c:897 +#, fuzzy, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " .`%s' VPATH íùî íìòúî\n" + +#: src/remake.c:906 +#, fuzzy, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr ".`%s' øåáò úåãå÷ô õéøî\n" + +#: src/remake.c:913 +#, fuzzy, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr ".ùãçî `%s' úåðáì ïåéñð ìùëð\n" + +#: src/remake.c:916 +#, fuzzy, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr ".`%s' ùãçî úééðáá äçìöä\n" + +#: 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:1118 +#, fuzzy, c-format +msgid "Using default commands for '%s'.\n" +msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n" + +#: 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:1747 +#, fuzzy, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "úéðáú åðéà .LIBPATTERNS ìù `%s' èðîìà" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "%s àöééî åðéà Customs\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +#, fuzzy +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# No implicit rules." + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# No implicit rules." + +#: src/rule.c:610 +#, fuzzy, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u implicit rules, %u" + +#: 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" +msgstr "unknown signal" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Hangup" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interrupt" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Quit" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Illegal Instruction" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Trace/breakpoint trap" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Aborted" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT trap" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT trap" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Floating point exception" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Killed" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Bus error" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Segmentation fault" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Bad system call" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Broken pipe" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarm clock" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminated" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "User defined signal 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "User defined signal 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Child exited" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Power failure" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Stopped" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Stopped (tty input)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Stopped (tty output)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Stopped (signal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU time limit exceeded" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "File size limit exceeded" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtual timer expired" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Profiling timer expired" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Window changed" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continued" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Urgent I/O condition" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O possible" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Resource lost" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Danger signal" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Information request" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Floating point co-processor not available" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatic" + +# These are printed under -p, so they are left in English. +#: src/variable.c:1789 +msgid "default" +msgstr "default" + +#: src/variable.c:1792 +msgid "environment" +msgstr "environment" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "environment under -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "command line" + +#: src/variable.c:1804 +#, fuzzy +msgid "'override' directive" +msgstr "`override' directive" + +#: src/variable.c:1814 +#, fuzzy, c-format +msgid " (from '%s', line %lu)" +msgstr " (from `%s', line %lu):\n" + +#: src/variable.c:1877 +#, fuzzy +msgid "# variable set hash-table stats:\n" +msgstr "# %u variables in %u hash buckets.\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variables\n" + +#: src/variable.c:1892 +#, fuzzy +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Pattern-specific variable values" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# No pattern-specific variable values." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u pattern-specific variable values" + +#: src/variable.h:237 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "`%.*s' øãâåî-éúìá äðúùî :úåøéäæ" + +#: src/vmsfunctions.c:91 +#, fuzzy, c-format +msgid "sys$search() failed with %d\n" +msgstr "%d íò ìùëð sys$search\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr ".DCL-î CTRL-Y-á ìåôéè øåùôéàá êøåö úåéäì ìåìò :úåøéäæ\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "" + +#: src/vmsjobs.c:1281 +#, fuzzy, c-format +msgid "Append output to %s\n" +msgstr "%s-ì èìô úééðôä\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "%s õéøî úàæ íå÷îá\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH Search Paths\n" + +#: src/vpath.c:617 +#, fuzzy +msgid "# No 'vpath' search paths." +msgstr "# No `vpath' search paths." + +#: src/vpath.c:619 +#, fuzzy, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u `vpath' search paths.\n" + +#: src/vpath.c:622 +#, fuzzy +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# No general (`VPATH' variable) search path." + +#: src/vpath.c:628 +#, fuzzy +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# General (`VPATH' variable) search path:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: 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!" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# No files." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "# average %.3f files per bucket, max %u files in one bucket.\n" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] 0x%x äì÷úî éúîìòúä ***" + +#~ msgid "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] 0x%x äì÷ú ***" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "ä÷éø äééðôä :úåøéäæ\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "'\"' êåúá ïééãò ,øéáçú úàéâù\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr ".åôñàð íøèù úá-úåéðëú %u ;SIGCHLD ìá÷úä\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "command_state `%s' :úéîéðô äðëú úì÷ú" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr ".úåìéòô úá-úåéðëú øéàùäì ìåìò CTRL-Y :úåøéäæ\n" + +#~ 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 "úøëåî äðéà '%s'úéðáåî äãå÷ô\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "ä÷éø äãå÷ô :äì÷ú\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "%s-î èì÷ úééðôä\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "%s-ì úåàéâù úééðôä\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "%d :úá-úéðëú úìòôäá äì÷ú\n" + +#~ msgid "%s: Command not found" +#~ msgstr "äàöîð àì åæ äãå÷ô :%s" + +#~ msgid "%s: Shell program not found" +#~ msgstr "äàöîð àì shell úãå÷ô :%s" + +#~ msgid "DIRECTORY" +#~ msgstr "DIRECTORY" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "äãåáò úìéçú éðôì DIRECTORY-ì äé÷éú äðù" + +#~ msgid "FLAGS" +#~ msgstr "FLAGS" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "äéìà äôðîä øåáéç êøåöì úéðëúä á÷ò" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "makefile-á íéðúùî íéñøåã äáéáñ éðúùî" + +#~ msgid "FILE" +#~ msgstr "FILE" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "makefile-ë FILE àø÷" + +#~ msgid "Ignore errors from commands" +#~ msgstr "úåéðëú-úúá úåàéâùî íìòúä" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "DIRECTORY-á íéììëð makefile éöá÷ ùôç" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "N-ì úçúî ñîåòä íà àìà úåáåøî úåãåáò ìéçúú ìà" + +#~ msgid "Don't actually run any commands; just print them" +#~ msgstr "íúåà ñôãä ÷ø ;ììë úåãå÷ô õéøú ìà" + +#~ msgid "Consider FILE to be very old and don't remake it" +#~ msgstr "ùãçî åúåà äðáú ìàå ,ïùé ãàî äéä åìéàë FILE-á âäð" + +#~ msgid "Don't echo commands" +#~ msgstr "úåòöåáî úãå÷ô âéöú ìà" + +#~ msgid "Turns off -k" +#~ msgstr "-k ìèáî" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "øùôàù ùãç éëä äéä FILE åìéàë âäð" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr ".úåéðù 30 ìù %s úééäùä" + +# Pay attention: this is written to the _right_ of the previous string, +# but should look like a single sentence together with it. +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr " äîééúñð\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr ".ïéîæ åðéà sh.exe íà --jobs åà -j-á êåîúì ïúéð àì" + +#~ msgid "Resetting make for single job mode." +#~ msgstr ".éúøãñ ïôåàá åòöåáé úåãå÷ô" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "íéáåøî --jobserver-fds éðééôàî :úéîéðô äðëú úì÷ú" + +#~ msgid "dup jobserver" +#~ msgstr "dup jobserver" + +#~ msgid "" +#~ ", by Richard Stallman and Roland McGrath.\n" +#~ "%sBuilt for %s\n" +#~ "%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n" +#~ "%s\tFree Software Foundation, Inc.\n" +#~ "%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" +#~ "\n" +#~ "%sReport bugs to .\n" +#~ "\n" +#~ msgstr "" +#~ ", by Richard Stallman and Roland McGrath.\n" +#~ "%s %s øåáò äúðáð\n" +#~ "%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n" +#~ "%s\tFree Software Foundation, Inc.\n" +#~ "%s .øå÷î éöá÷á ïééò ä÷úòä úåéåëæì ;úéùôç äðëú éäåæ\n" +#~ "%s äîàúä åà úåøéçñ øåáò àì åìéôà ;úåéøçà áúëá äååìî äðéà åæ úéðëåú\n" +#~ "%s .éäùìë úéìëúì\n" +#~ "\n" +#~ "%s -ì äì÷ú éçååéã çåìùì àð\n" +#~ "\n" + +#~ msgid "Entering" +#~ msgstr "Entering" + +#~ msgid "Leaving" +#~ msgstr "Leaving" + +#~ msgid "Unknown error %d" +#~ msgstr "Unknown error %d" + +#~ 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'" + +#~ msgid "empty `override' directive" +#~ msgstr "ä÷éø `override' úàøåä" + +#~ msgid "invalid `override' directive" +#~ msgstr "äéåâù `override' úàøåä" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "õáå÷ íù àìì `%sinclude' úàøåä" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "ä÷éø íã÷ä úùéøã úéðáú úà äøéàùî `%s' äøèî" + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "# No variables." +#~ msgstr "# No variables." + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "# average of %.1f variables per bucket, max %u in one bucket.\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "# average of %d.%d variables per bucket, max %u in one bucket.\n" diff --git a/local/recipes/dev/gnu-make/source/po/hr.gmo b/local/recipes/dev/gnu-make/source/po/hr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..a823d813a619b8430593116a92e5deb73edca12f GIT binary patch literal 50639 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 aNyl1mj+8N~5`?*m`lqzvyea48r2h}yJE5Nd literal 0 HcmV?d00001 diff --git a/local/recipes/dev/gnu-make/source/po/hr.po b/local/recipes/dev/gnu-make/source/po/hr.po new file mode 100644 index 0000000000..60dcecf584 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/hr.po @@ -0,0 +1,2751 @@ +# Translation of CNU make messages to Croatian. +# Copyright © 2016 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Hrvoje Niksic , 2002. +# Tomislav Krznar , 2012. +# Božidar Putanec , 2016, 2018, 2019, 2020, 2022. +msgid "" +msgstr "" +"Project-Id-Version: 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-28 10:58-0700\n" +"Last-Translator: Božidar Putanec \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.2\n" + +#: 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:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "u VMS sustavu nije moguće promijeniti vremenske oznake Älanu arhive" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: arhiva „%s“ ne postoji" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: „%s“ nije valjana arhiva" + +#: 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:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +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 podatke o modulu, status = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() nije uspjela, status = %d" + +#: src/arscan.c:261 +#, c-format +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: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:996 +msgid " (name might be truncated)" +msgstr " (ime je možda skraćeno)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Datum %s" + +#: 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:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Recept ima previÅ¡e redaka (max. je %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Prekid.\n" + +#: 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 izbrisan" + +#: 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 izbrisan" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] BriÅ¡emo datoteku „%s“" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** BriÅ¡emo datoteku „%s“" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# recept koji treba izvrÅ¡iti" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (ugraÄ‘eno):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (iz „%s“, redak %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Direktoriji\n" + +#: 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:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "" +"# %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: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: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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (kljuÄ %s, vrijeme zadnje izmjene %s): " + +#: 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:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (ureÄ‘aj %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Ne" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " datoteke, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "ne" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " nemogućnosti" + +#: src/dir.c:1180 +msgid " so far." +msgstr " do sada." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " nemogućnosti u %lu direktorija.\n" + +#: 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“ pokazuje na samu sebe (eventualno)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "nedovrÅ¡ena referencija na varijablu" + +#: 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: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:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "ali se „%s“ sada smatra istom datotekom kao i „%s“." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "Recept za „%s“ je zanemaren u korist ovog za „%s“." + +#: 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: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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** BriÅ¡emo privremenu posredniÄku datoteku „%s“" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\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: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 "Trenutno vrijeme" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Vremenski žig je izvan granica raspona; zamijenjen je s %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Nije cilj (target):" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Dragocjena (precious) datoteka (preduvjet za .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Lažni (phony) cilj (preduvjet za .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Cilj naredbenog retka." + +# Zadan > standardni +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Zadano, MAKEFILES ili -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# UgraÄ‘eno pravilo" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Provedeno je pretraživanje pomoću implicitnih pravila." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Nije provedeno pretraživanje pomoću implicitnih pravila." + +#: 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:1109 +msgid "# File is an intermediate prerequisite." +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:1117 +msgid "# Also makes:" +msgstr "# TakoÄ‘er napravi:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Vrijeme zadnje izmjene nije nikada provjereno." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Datoteka ne postoji." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Datoteka je vrlo stara." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Posljednja promjena %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Datoteka je osvježena." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Datoteka nije osvježena." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Recept je joÅ¡ u tijeku (OVO JE PROGRAMSKA GREÅ KA)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Recept za ovisnosti je joÅ¡ u tijeku (OVO JE PROGRAMSKA GREÅ KA)" + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# UspjeÅ¡no osvježena." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Osvježavanje je nužno (dana je opcija -q)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Osvježavanje nije uspjelo." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Nevaljana vrijednost u command_state Älanu!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Datoteke" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# status datoteka hash-tablice:\n" +"# " + +#: 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: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: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:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "nevaljani prvi argument funkcije ‘wordlist’" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "nevaljani drugi argument funkcije ‘wordlist’" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "ne numeriÄki prvi argument funkcije ‘intcmp’" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "ne numeriÄki drugi argument funkcije ‘intcmp’" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) nije uspjeÅ¡na (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_open_pipe: DuplicateHandle(Err) nije uspjeÅ¡na (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() nije uspjeÅ¡na (e=%lu)\n" + +#: 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:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Izbrisana je privremena batch datoteka %s.\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "datoteka: nema imena datoteke" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open(): %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write(): %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close(): %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: previÅ¡e argumenata" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read(): %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: nevaljana operacija na datoteci: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "nedovoljan broj argumenata (%u) za funkciju ‘%s’" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "nije realizirana na ovoj platformi: funkcija „%s“" + +#: 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:2791 +#, c-format +msgid "Empty function name" +msgstr "Prazno ime funkcije" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Nevaljani naziv funkcije: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Predugo ime funkcije: %s" + +#: 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:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +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“ nije jednoznaÄna\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: opcija „--%s“ ne dopuÅ¡ta argument\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: opcija „%c%s“ ne dopuÅ¡ta argument\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: opcija „%s“ zahtijeva argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: neprepoznata opcija „--%s“\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: neprepoznata opcija „%c%s“\n" + +# * 1003.2 specifies the format of this message. */ +# fprintf (stderr, _("%s: illegal option -- %c\n"), +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: nedopuÅ¡tena opcija -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: nevaljana opcija -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +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“ nije jednoznaÄna\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: opcija „-W %s“ ne dopuÅ¡ta argument\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: ProÅ¡irivanje „%s“\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Procjenjivanje „%s“\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "ne može dodijeliti %lu bajtova za hash-tablicu: nema dovoljno memorije" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Opterećenje=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%u, " + +# možda bi bolje bilo > Kontradikcije +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Sudari=%lu/%lu=%.0f%%" + +#: 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:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Tražimo implicitno pravilo za Älana arhive za „%s“\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Nije pronaÄ‘eno implicitno pravilo arhivske stavke za ‘%s’.\n" + +#: src/implicit.c:326 +#, c-format +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:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Predugi korijen uzorka: „%s%.*s“.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Odbijamo pravilo ‘%s’ s nemogućim zahtjevom pravila ‘%s’.\n" + +#: src/implicit.c:770 +#, c-format +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:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Isprobavamo pravilo preduvjeta „%s“.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%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:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "NaÄ‘eni preduvjet „%s“ kao VPATH „%s“\n" + +#: 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 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/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:552 +msgid " (core dumped)" +msgstr " (**krah**: stanje (dump) memorije je zapisano!)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (zanemareno)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] GreÅ¡ka %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** ÄŒekamo na nedovrÅ¡ene poslove..." + +# child > dijete > potomak; pridjev potamaÄki +#: 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (udaljeno)" + +#: 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:915 +#, c-format +msgid "Reaping losing child %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:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "ÄŒišćenje iza privremene batch datoteke %s\n" + +#: 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" + +#: 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: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: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:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"izbrojeno je %d argumenata pri neuspjelom pokretanju\n" + +#: 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: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:1909 +#, c-format +msgid "%s: update target '%s' due to: %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:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "nije moguće nametnuti granice opterećenja na ovom operacijskom sustavu" + +#: 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:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"nema viÅ¡e datoteÄnih kvaÄica: nije moguće duplicirati standardni ulaz, stdin" + +# stdout > standardni izlaz +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"nema viÅ¡e datoteÄnih kvaÄica: nije moguće duplicirati standardni izlaz, " +"stdout" + +# stderr > standard error +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"nema viÅ¡e datoteÄnih kvaÄica: nije bilo duplicirati standardne greÅ¡ke, stderr" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Nije moguće obnoviti standardni ulaz, stdin" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Nije moguće obnoviti standardni izlaz, stdout" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Nije moguće obnoviti standardne greÅ¡ke, stderr" + +#: 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: može biti da u okolini nema dovoljno prostora" + +#: 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:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Stvaramo privremenu batch datoteku %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Sadržaj batch datoteke:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Sadržaj batch datoteke:%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 (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 uspio: %s" + +#: 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: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:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Prazno ime simbola za uÄitavanje: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %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:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Operacija „load“ nije podržana na ovoj platformi" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opcije:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m zanemareno zbog kompatibilnosti\n" + +#: 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:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIREKTORIJ, --directory=DIREKTORIJ\n" +" prije poÄetka rada prijeÄ‘e u DIREKTORIJ\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d ispisuje puno podataka za debugiranje\n" + +#: 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:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" uÄini da „make“ rabi varijable okoline " +"umjesto\n" +" tih istih varijabli iz Makefiles\n" + +#: 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:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f DATOTEKA, --file=DATOTEKA, --makefile=DATOTEKA\n" +" Äita i koristi DATOTEKU kao Makefile\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help ova pomoć\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors zanemari sve greÅ¡ke u receptima\n" + +#: 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 ukljuÄene Makefiles u DIREKTORIJU\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] dopuÅ¡ta N istovremenih poslova; ako se " +"izostavi\n" +" argument N, nema ograniÄenja broju poslova\n" + +#: 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: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" +" ne pokreće viÅ¡e poslova istovremeno ako\n" +" je opterećenje veće od 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 koristi najkasniji mtime izmeÄ‘u simboliÄke " +"veze i njena cilja\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" +" ne pokreće recepte već ih samo ispiÅ¡e\n" + +# 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: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 DATOTEKA, --old-file=DATOTEKA, --assume-old=DATOTEKA\n" +" ne obnavlja DATOTEKU jer je vrlo stara\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYPE], --output-sync[=TIP]\n" +" TIP sinkronizacije izlaznih paralelnih " +"poslova\n" + +#: 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: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 trenutni\n" + +#: 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: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: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:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent odjekuje recepte (poniÅ¡ti --silent naÄin)\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" ukida opciju -k\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch „touch“ (osvježi vrijeme) ciljeve umjesto\n" +" da ih iznova napravi\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" +" -d ispisuje informacije praćenja (tracing)\n" + +#: 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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory ispiÅ¡e trenutni direktorij\n" + +#: 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:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W DATOTEKA, --what-if=DATOTEKA, --new-file=DATOTEKA, --assume-" +"new=DATOTEKA\n" +" smatra da je DATOTEKA zauvijek nova\n" + +#: 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: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:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "nepoznata specifikacija „%s“ za razinu dijagnostike" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "nepoznati tip sinkronizacije izlaza „%s“" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uporaba: %s [opcije] [cilj] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Ovaj program je proizveden za %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Ovaj program je proizveden za %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"GreÅ¡ke (bugs) na engleskom javite na \n" +"PogreÅ¡ke u prijevodu i vaÅ¡e prijedloge javite na \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Prekid/iznimka primljena (kÈd = 0x%lx, adresa = 0x%p)\n" + +#: src/main.c: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" +"Filtar neobraÄ‘ene iznimke pozvan je iz programa %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 "Povreda prava pristupa: operacija pisanja na adresi 0x%p\n" + +#: 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: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: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:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"upozorenje: jobserver nije dostupni: koristi se -j1.\n" +"Dodajte „+“ make pravilu pretka (parent)" + +#: 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:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile iz standardnog ulaza je dva puta naveden" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: privremena datoteka %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "upozorenje: -j%d je nametnut u makefile: resetira mÈd jobservera." + +#: 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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Povratak na naÄin rada s jednim poslom (-j1)." + +#: 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ć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:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Osvježavamo Makefiles....\n" + +#: 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 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: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 preraditi Makefile „%s“." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "„%s“ ukljuÄeni Makefile nije pronaÄ‘en." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile „%s“ nije pronaÄ‘en" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Nije bilo moguće vratiti se u izvorni direktorij" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Ponovno izvrÅ¡avanje[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL sadrži viÅ¡e od jednog cilja" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Nema ciljeva" + +#: 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:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Osvježavamo ciljeve....\n" + +#: 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:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "opcija %s%s zahtijeva ne-prazni string za argument" + +#: 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:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sProizvedeno za %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sProizvedeno za %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicenca GPLv3+: GNU GPL v. 3 ili kasnija \n" +"%sOvo je slobodan softver: slobodno ga mijenjajte i dijelite.\n" +"%sNEMA JAMSTVA do granica dopuÅ¡tenih zakonom.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# „Make“ baza podataka, ispisana na %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Gotova „Make“ baza podataka je spremna na %s\n" + +#: 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 "using default temporary directory '%s'" +msgstr "rabimo zadani (default) privremeni direktorij „%s“" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "stvori privremenu datoteku %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "brisanje privremene datoteke %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: privremena datoteka %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: privremena datoteka %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Ulazimo u nepoznati direktorij\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Izlazimo iz nepoznatog direktorija\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Ulazimo u direktorij „%s“\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Izlazimo iz direktorija „%s“\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Ulazimo u nepoznati direktorij\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Izlazimo iz nepoznatog direktorija\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Ulazimo u direktorij „%s“\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Izlazimo iz direktorija „%s“\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"upozorenje: Nije moguće postići zakljuÄavanje izlaza: Onemogućujemo " +"sinkronizaciju izlaza." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Zaustavljeno.\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 "Nije moguće otvoriti jobserver %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +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:190 +msgid "creating jobs pipe" +msgstr "otvaramo cijevi za poslove" + +# http://make.mad-scientist.net/papers/jobserver-implementation/ +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "dupliciramo cijevi za poslove" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inicijalizacija cijevi jobservera" + +#: src/posixos.c:261 +#, c-format +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:363 +msgid "write jobserver" +msgstr "pisati na jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "jobserver je ugaÅ¡en" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect() cijevi poslova" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "Äitanje iz cijevi poslova" + +#: 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 "ÄŒitamo Makefiles...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "ÄŒitamo Makefile „%s“" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (nema zadanog cilja)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (staza pretraživanja)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (nije važno)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (bez proÅ¡irenja znaka ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "PreskaÄemo UTF-8 BOM u Makefile „%s“\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "PreskaÄemo UTF-8 BOM u Makefile meÄ‘uspremniku\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "nevaljana sintaksa u uvjetnom izrazu" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "recept zapoÄinje prije prvog cilja" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "nema pravila prije recepta" + +#: 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:1156 +#, c-format +msgid "missing separator" +msgstr "nema separatora" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "nema uzorka za cilj" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "nekoliko uzoraka za cilj" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "uzorak cilja ne sadrži „%%“" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "nema „endif“" + +#: 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:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "suviÅ¡ni tekst nakon direktive „define“" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "nema „endef“, nedovrÅ¡eni „define“" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "suviÅ¡ni tekst nakon direktive „endef“" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "suviÅ¡ni tekst nakon „%s“ direktive" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "suviÅ¡ni „%s“" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "samo jedan „else“ po uvjetnom izrazu" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Deformirana definicija varijable specifiÄne za cilj" + +#: 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:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "grupirani ciljevi moraju osigurati recept" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "pomijeÅ¡ana su implicitna i statiÄka pravila za uzorak" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "pomijeÅ¡ana su implicitna i normalna pravila" + +#: 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: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: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:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "upozorenje: zanemaren je recept za cilj „%s“" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "upozorenje: zanemarujemo stari recept za cilj „%s“" + +#: 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:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "upozorenje: zanemareno je Älanstvo grupe za cilj „%s“" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "upozorenje: proÄitan je NUL znak; ostatak retka je zanemaren" + +# 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 "NiÅ¡ta se ne može napraviti za„%sâ€." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s“ je osvježena." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "ÄŒistimo datoteku „%s“.\n" + +#: 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 potreban za „%s“%s" + +#: 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:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Razmatramo ciljnu datoteku „%s“.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Nedavni pokuÅ¡aj osvježavanja datoteke „%s“ nije uspio.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Datoteka „%s“ je već bila razmatrana.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Datoteka „%s“ se joÅ¡ uvijek osvježava.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Osvježavanje datoteke „%s“ je zavrÅ¡eno.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Datoteka „%s“ ne postoji.\n" + +#: 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" +" vremenski žig visoke rezolucije" + +#: src/remake.c:538 +#, c-format +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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Rabimo zadani recept za „%s“.\n" + +#: 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:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Preduvjeti za ciljnu datoteku „%s“ su ispunjeni.\n" + +#: 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:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Odustajemo od izrade ciljne datoteke „%s“.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +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: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" +"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: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: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: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: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: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: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:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Nema potrebe preraditi cilj „%s“" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; rabimo naziv „%s“ za VPATH" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Cilj „%s“ se mora preraditi.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Zanemareni naziv „%s“ za VPATH.\n" + +#: 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:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Prerada ciljne datoteke „%s“ nije uspjela.\n" + +#: 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: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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Rabimo zadane naredbe za „%s“.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "" +"Upozorenje: Vremenski žig modifikacije datoteke „%s“ je za\n" +" %s sekunda u budućnosti" + +#: 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:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customs nije moguće eksportirati: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" +"upozorenje: zanemarujemo preduvjete (zahtjeve) definicije pravila sufiksa" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Implicitna pravila" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Nema implicitnih pravila." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u implicitnih pravila, %u (%.1f%%) terminal." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %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" +msgstr "nepoznati signal" + +# Keep signal names in sync with GNU libc translations. +#: src/signame.c:92 +msgid "Hangup" +msgstr "Poklopi (SIGHUP)" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Prekini (SIGINT)" + +#: src/signame.c:98 +msgid "Quit" +msgstr "ZavrÅ¡i" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Nepropisna instrukcija" + +# Breakpoint trap just means the processor has hit a breakpoint.Your process is running more than one thread. +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Trace/breakpoint (SIGTRAP)" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Prekid (SIGABRT)" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT zamka (SIGIOT)" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT zamka (SIGEMT)" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Iznimka (broja) s pomiÄnim zarezom (SIGFPE)" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Ubijen (SIGKILL)" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "GreÅ¡ka sabirnice (SIGBUS)" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Segmentacijska greÅ¡ka (SIGSEGV)" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "LoÅ¡i sustavski poziv (SIGSYS)" + +# a condition in programming (also known in POSIX as EPIPE error code and SIGPIPE signal), when a process requests an output to pipe or socket, which was closed by peer +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Prekinuta cijev (SIGPIPE)" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Budilica (SIGALRM)" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "ZavrÅ¡eno (SIGTERM)" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Korisnikom definiran signal 1 (SIGUSR1)" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Korisnikom definiran signal 2 (SIGUSR2)" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Potomak (child process) je zavrÅ¡io (SIGCHLD)" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Prekinuto napajanje (SIGPWR)" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Zaustavljeno" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Zaustavljeno (tty ulaz) (SIGTTIN)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Zaustavljeno (tty izlaz) (SIGTTOU)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Zaustavljeno (signal) (SIGSTOP)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Procesor je premaÅ¡io ograniÄenje za vrijeme procesora (SIGCPU)" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "VeliÄina datoteke je premaÅ¡ila ograniÄenje za veliÄinu" + +# Kako prevesti "virtual timer"? +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtualni tajmer je istekao (SIGVTALRM)" + +# Kako prevesti "profiling timer"? +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Isteklo je vrijeme za profiliranje (SIGPROF)" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Prozor se promijenio (SIGWINCH)" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Nastavlja se (SIGCONT)" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Hitno U/I stanje" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "U/I je sada moguć" + +# Jesu li ova dva signala vic ili Å¡to? U svakom sluÄaju, ovo su samo +# descriptioni. Za svaki sluÄaj, nisam ih dirao. +#: 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 je izgubljen (SIGLOST)" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Signal za opasnost (SIGDANGER)" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Zahtjev za informacijom (SIGINFO)" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Koprocesor za rad s pomiÄnim zarezom/toÄkom nije dostupan (SIGNOFP)" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Nema meÄ‘uspremnika za 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 strcache meÄ‘uspremnici: %lu (%lu) / stringova = %lu\n" +" pohrana = %lu B / prosjek = %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 trenutni meÄ‘uspremnik: veliÄina = %hu B / koriÅ¡teno = %hu B\n" +" broj = %hu / prosjek = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s ostalo koriÅ¡teno: ukupno = %lu B / broj = %lu / prosjek = %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 ostalo slobodno: ukupno = %lu B / max = %lu B / min = %lu B\n" +" prosjek = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache uÄinkovitost: pretraga = %lu / pogodaka = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# statistika hash-tablice:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatsko" + +#: src/variable.c:1789 +msgid "default" +msgstr "zadano" + +#: src/variable.c:1792 +msgid "environment" +msgstr "okolina" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "Makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "okolina ispod -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "naredbeni redak" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "„override“ direktiva" + +#: 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:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# statistika varijabli u hash-tablici:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Varijable\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Vrijednosti varijabli specifiÄne za uzorke" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Nema vrijednosti varijabli specifiÄne za uzorke." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u vrijednosti varijabli specifiÄne za uzorke" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "upozorenje: nedefinirana varijabla %.*s" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "neuspjeÅ¡na sys$search() s greÅ¡kom %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-upozorenje, možda ćete morati ponovno omogućiti obraÄ‘ivanje CTRL-Y iz DCL-" +"a.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "UGRAÄENI 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 "Izlaz pripojen na kraj %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "%.*s pripojiti i poÄistiti\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Umjesto toga izvrÅ¡avamo %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH staza za pretraživanje\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Nema „vpath“ staze za pretraživanje." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u „vpath“ staza za pretraživanje.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Nema općenite („VPATH“ varijable) staze za pretraživanje." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Općenita („VPATH“ varijabla) staza za pretraživanje:\n" +"# " + +# 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:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Jobserver broj mjesta je ograniÄen na %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "stvaranje semafora jobservera: (GreÅ¡ka %ld: %s)" + +#: 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 jobservera „%s“: (GreÅ¡ka %ld: " +"%s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Klijent jobservera (semafor %s)\n" + +#: 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: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" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Naredba nije pronaÄ‘ena\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Shell program (ljuska: interpreter komandi) nije pronaÄ‘en" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s će spavati 30 sekundi..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "proÅ¡lo je 30 sekunda spavanja. Nastavlja se.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Nepoznata greÅ¡ka %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "" +#~ "Upozorenje: Vremenska oznaka modifikacije datoteke „%s“ je u budućnosti" + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Nevaljana vrijednost u elementu „update_statusâ€!" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] GreÅ¡ka 0x%x (zanemarena)" + +#~ msgid "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] GreÅ¡ka 0x%x" + +#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n" +#~ msgstr "Pozivam recept iz %s:%lu za ažuriranje mete „%sâ€.\n" + +#~ msgid "Invoking builtin recipe to update target `%s'.\n" +#~ msgstr "Pozivam ugraÄ‘eni recept za ažuriranje mete „%sâ€.\n" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "interna greÅ¡ka: viÅ¡estruko pojavljivanje opcije --jobserver-fds" + +# Treba li ovo prevesti? +#~ msgid "dup jobserver" +#~ msgstr "dup server poslova" + +#~ msgid "virtual memory exhausted" +#~ msgstr "virtualna memorija iscrpljena" + +# Å to bi ovdje trebalo ići? +#~ msgid "write error" +#~ msgstr "gresÌŒka pisanja" + +#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n" +#~ msgstr "%s # strcache meÄ‘uspremnika: %d (* %d B/meÄ‘uspremniku = %d B)\n" + +#~ msgid "" +#~ "\n" +#~ "# strcache hash-table stats:\n" +#~ "# " +#~ msgstr "" +#~ "\n" +#~ "# statistike strcache tablice rasprÅ¡ivanja:\n" +#~ "# " + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Upozorenje: Prazno preusmjeravanje\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "interna greÅ¡ka: „%s†command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "UGRAÄEN [%s][%s]\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "UGRAÄEN RM %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Nepoznata ugraÄ‘ena naredba „%sâ€\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "GreÅ¡ka, prazna naredba\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Preusmjeren ulaz iz %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Preusmjerene greÅ¡ke u %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Preusmjeren izlaz u %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "GreÅ¡ka pri pokretanju, %d\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "GreÅ¡ka u sintaksi, joÅ¡ uvijek unutar '\"'\n" + +# Nepožetene ili nepožnjete? +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "Dobio SIGCHLD; %u nepožetene djece.\n" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-upozorenje, CTRL-Y će ostaviti potproces(e) na životu.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Nemojte koristiti -j ili --jobs ako sh.exe nije dostupan." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Resetiram make u mÈd jednog posla." + +#~ 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 "" +#~ "%sOvaj program je slobodan; u izvornom kodu nalaze se uvjeti kopiranja.\n" +#~ "%sNema NIKAKVOG jamstva, Äak ni za PROIZVODNOST ili UPOTREBLJIVOST ZA\n" +#~ "%sPOJEDINU SVRHU.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "suviÅ¡an `endef'" + +#~ msgid "empty `override' directive" +#~ msgstr "prazna direktiva `ovverride'" + +#~ msgid "invalid `override' directive" +#~ msgstr "neispravna direktiva `override'" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "nedostaje naziv spisa za `%sinclude'" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "meta `%s' ostavlja prerekvizitni uzorak praznim" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Nijedan spis." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u spisa u %u rasprÅ¡enih džepova.\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "# prosjeÄno %.3f spisa po džepu, maks. %u spisa u jednom džepu.\n" + +#~ msgid "DIRECTORY" +#~ msgstr "DIREKTORIJ" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "Promijeni u DIREKTORIJ prije nego Å¡to iÅ¡ta napraviÅ¡" + +#~ msgid "FLAGS" +#~ msgstr "ZASTAVICE" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "Zaustavi proces tako da se debugger može zakaÄiti" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "Varijable iz okoliÅ¡a imaju veću važnost od makefilea" + +#~ msgid "FILE" +#~ msgstr "SPIS" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "ProÄitaj SPIS kao makefile" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "Pretraži DIREKTORIJ za ukljuÄenim makefileovima" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "Ne pokreći viÅ¡estruke poslove osim ako je opterećenje ispod N" + +#~ msgid "Don't actually run any commands; just print them" +#~ msgstr "Nemoj zapravo pokrenuti nijednu naredbu; samo ih ispiÅ¡i" + +#~ msgid "Consider FILE to be very old and don't remake it" +#~ msgstr "Pretpostavi da je SPIS vrlo star i nemoj ga ponovo napraviti" + +#~ msgid "Don't echo commands" +#~ msgstr "Ne ispisuj naredbe" + +#~ msgid "Turns off -k" +#~ msgstr "IskljuÄuje -k" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "Smatraj SPIS beskonaÄno novim" + +#~ msgid "Entering" +#~ msgstr "Ulazim u" + +#~ msgid "Leaving" +#~ msgstr "Izlazim iz" + +#~ msgid "# No variables." +#~ msgstr "# Nema varijabli." + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "# prosjeÄno %.1f varijabli po džepu, maks. %u u jednom džepu.\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "# prosjeÄno %d.%d varijabli po džepu, maks. %u u jednom džepu.\n" diff --git a/local/recipes/dev/gnu-make/source/po/id.gmo b/local/recipes/dev/gnu-make/source/po/id.gmo new file mode 100644 index 0000000000000000000000000000000000000000..5098f791fd33733993b13ff9e60671be2d66e4f1 GIT binary patch literal 39490 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

    3vrbY_pf|Vb(I)-}neV3gEy^ZilAm;JBdB^!wZ9 zQ<>rN@^CiWqZT*qT)xV*$MOiX8sRU>;2#fy;(}?6@r$nTSVK&fi*%gODOT4>%LTtB z#JegXp2r~^SB0~cbDQwtYTEJ1)tR!g!@XPZ$M;V5_J?#x_xlz?3F*%?ung8gtD5BR zFh*QEn#R21#VHe)XTJ)mfs~Wtq!wK4XjQuXEKevGuD!yO0e()JGfv86;KqT6Sm_-$ zYPGNfOfT?mqP95qX8LtTRUhZC>gTmWT_w^@>CS_drT7!r$BPesT-=OuT<0*DR#D<9 z>`_!jF>9p~jE8Z~+7&D**=l&0(Aw#UNp%O8iXQ_r_EdN(lzT!u>2@$>y1G?Wmz(nj zFQSML$U7T#4hc?aB6pa6@)|a8Ee;%WD=Si?=QUh@&UuXJ6OLKwM=ju&CUhRI;iHo% z+Tv}j^91DQ&8T&_>*+K_Et+|5NNFWO?)B6PqAi_H!O_^N_WrFA(;{>cQTL4Ur>y0a z6q~hp5zKW0d#x6VapYul%eOcZ^c?N)9kza#se~#JkK*inkp7eJgi8z*j%5PDuNGNJ zu2>;=iyR1!BcKQ`)yQ;<44Gn5VzAb?;gC>X=CBrDRNCFRP;^|gV~24`Oziy>^8kK` z0D*Q!TF0tvMcs)}F+;rTvn;EfQn<=#{Lh8xIvah^hk>a7d|g6bs6s{RN?$o*a)lb6 zK^LS#`0Sm2^xldYyV4ehDK|1glojoxPWAa|Bafo$Sv*G1&xcS1uS?UxSyqoa)dlhf zcDK)h7q|XL5%AIR-pjp1a;!d0*C+tbqaaT)wRfMhI@kly^+Tpd6Z5I9Cv+6ejm1>*A0}0bfN+ zphjHQ<#*_(ZMzL3W@35Yj;kRq4%Un6aXK35!YM$4M_&gcSNw~T-vPODFNW2h>dZBDCVT6Y%J z%SFSdkD+EPzN-ejAQ#48=RXhd ze+k~_{XAH3-i4B zUh34Z5@kgm24Q2!&{G=nh{JnX=jLE1Cu{B`t*g<|M+9U!GmZ|VYWAXQ$m8n-OM8}HE$9#nP? z2I|KOJHX?3^G#r%wa`gcIN@jn+!^}P8--O8HxBO_>+wfxktx6nR8Vr@N285iZCQ%Y z8sG;CatjmJ(zNPf{yg|f-}B};CZ31TI)>6OaDq(1?sF=A9gor1*F@*)+vK<8tDsu? z)lQE-TS+F)2ttZRt zUPLoK+c1`{iUN;x*kx$eH0KGPY@pBDM|L4_fF?P=9dsF|)yZw8tOXW+p}glH6@%#} z%45GL&+TI7y}X=axZ@z42UYy1wotRJm@2CfE8iLkPB6Ui15P-gy*jOQo7dT>-=i4F z^HKIeNnBF^YB{uoA!;j8)4%ZJ{k!q_>ElQLvHtkc#uNCz$4}w;`uaB;PyZwOOHHId zxWCAc%D64!DvAS>+;=07ULL-oDEvlcCmY_5$a}oHQ;XLB{R@AQ)KaW-AQdN^;+>w)v67-uIrKbj)b``N> zGuY?1_<*fGcrB;0gVO7IRvPtd;|6INnzXCM_bkY<#m z>?xWMl5+G&H6XQ-)x8>zIhdXkBGkx70D&_{75UB^tQk{JIiO!;LrHW=mP?Q$P6-|P zY|p`cc6sm=RjN-wVum}!X$2+f} z{Py#`{k@Z)B1#x}a@cCOqZdcVm2Keb$0vI`Z}zv3qt|baUmvwmQc<@CQ>Kz&d^3te zAaGU~=1;J2lA4Ml4M3w$K%Zyt&Ef4l>qF78blpK_9SNr3yMjT68Q7p_-(HNz!+djf z_4@j{aXy$dveEf!pR34MpXqe(0@1O6M||UAL0=dkSvEPbX4YeR58gc}R1Xe8kaUXr zQb*<8Yrvfp})~B@&8yT_0 z?a$mcgY5!`3E6DzTC6<7mgP%5G$gaKqTG>A6My1WUIJ$TJG5~omqYTeR>eO8QHGF# zH4zBlP2F3J=lBqWq|qoF)l|#M$+7O1Z8PAmeXp~*gaz_XT@UBwzZ8&BZ(=BR(Dt;w zZ+~M$lzF|hVbb`0$!c=uu?nxHPJ)NJxf#GNXr4U|O)BKVHDsj{PkXc0;?!nNl#~6D zN=98TLL(+KKBWxRJ{OSo(y?IST*Qq1H&`+0p&9-R>iNhlw@o~FGLjQ-lnfF7pF(H` zN%+z}l30Y(N%updkdH`l<3xEJ90M9qI?(VtWW1tB1e(U73yWyhSXAeOnD|>iVl=>; z!;{YQy_0qntv|7V=b+|u%qOap`_ptR;W4BNfhKc`m)#gJUa0P1`$x2yRoB1$)@`G< zvR*6PUh7S6xtJ90QvDDEvqBaod2`xV)`F-|u1Hc7|bIgtCD+9X&`O@&*Va=ndJ zv01g5-0Fe8In)7M8FMVcIXKUh78APr&BnA`nkcMhC6uv`PCR65FTjJl(`zn8z2%9~ zK!f`kXgwXrgci?pG|v$3xGvDk4tXtZx-6kNvn>v)dA43B>yG$OU!t~=C;hV(@g*L^ zYR)bW=sx@7)ib|DLs0CW<=6ptlT&k=>IZka- z@+;in3gw(a2i{TEZUk79_ZeZIqYejcIVSl+`gmEsSLVPfUPR2*A4mfKQ&IDY{dDj_BSqu+X{NvITB=!c);N+dQa{~3r+J6`iO0d??PN5e z8)1qiBp$_uJ(TLgWD#&T>ZGMMd~c$x>yN2-Dl|Ej0yfy>>@2-0KIdNYb2qh2z$r|A zX)0lnpv0P9tztm6fz z-;$D6a@&F%Vc^O{)lzDgzjJ*`+AOV+T#swf&y^^er&VsL>NHiu>m0e1;POD+6V{Ci zanD{DbLqqhGFjCg;QR|lDgmg||FrzA6$Q{$ZIiBB%Cj_aHJJQqsM}bAMuzIk(zHlA zYn0u$8k4z3St3G5PKR)-c!(;b3)OJuIiAXRv3b76XU=mOOR6vDzMo%uP5{ZMOO_LF z67`gk2aX|dzD9D3b5a49y}?Ie&rZ7-98P_T?2;MD2_0SjK#@OO1&;LewsW1044uH> z?4IIH&)mIL6EjWl33fYBNk>iS9V=7cl?`b6V7&FUE7lbj(t()@nUr96UWq&MD81}R z61H4XHh+rg*7}(E4nc)c9!eR8h8yc+Yv`O6s zu(HqHsedK^a_q!+_^#BO_O64sXk7%PUD3h{m~sk1IbcCj(vP=f)j_>qzp7{T5o>K$ z;Cf(XtJOiRUhTvGuHb(e{BKmN|2%s@(*fY>hkN@kY9%8R`!!7kLh(_M=qC@i)5Y&$ z(03d%l5chv!S4up@h=!Z>CyyV_{l?uD$Huv&;Et$T|KMaakv7Oc!$yQ7oTOoln!A^ zpP`TFYP*=e)2c()@Kr~b!fw=}UiRy(t%NSJ z?x#lSK~eg=rb^DhSMKL|&!ms2VD4*0L;cK}J`&Pjb*-lCwo65KhAH}~iUezh%=KEGx1UvuR`@%llPp;FYsMaL zES%!-~adN+BaYPfBz)^-{Yj4je6Rz6|Iw}lN7x+F|iotJxRw2U#sDb z8v1Kqe(?qV;tTxO^#x`CD453RTh6T4xOhgFL~sUUR~FRM1q9%s=_kb5VcMtl$CHG; zM?%$v58=&i`+|dHm)4|C7#tv+A(#;Qyl^M(7zi(%H`59<=Eyuv*iI zQix^;2T6{{S@h;`@5iW1u@jW>5$i|>_<((I$m5%jtGEvgl}-SxG{-%kjxieID#3Fi zlI+e|p5An%Nn#ragNdmja`L|QKBPu4YI2fOH=^~1jAVNP=iq2F`p@iQ5W(qn5ce-n zlhJua9Rsciv$3}RcrFpoUw0>OxM5Y_YH8(}{WKrvAb8+I3ViM*-R=Y2 z*z9k>n-+ZlL}1zJyx88MrS2Ra8KK2_9If3vdV)Mw%Pr`qm|bHU^nP*<%R)IcCS6La zqnHPhxBRTh;oL890+4(<9m90FdR=wgLq<-1mhi=!K`-l)+gF0rFv2(~*s`~r!JSA= zJZep2b`FXYD=2NZwXlX+U(rRC}TaJBQ#68H?TAat(J}(2Ifh%xfRib zzS!Q|e{%f58Oj?z|h&vaeEAo2~46p${L2`xW{YMb{{A|_v?k36lbu6dSg*lc`kK;HQO;oIvDNCXN?q}Gc4aubC?jd^<3ecs~VXJQnRV`G* z$??&f=ldmF1GLMD1cl+)u5srP+ee*xob`LcxS*p%U`R9ezF@Um#?6*w`Vy`EKAn+ExIDGd3|9^7H5m`#L70} z$4aUGN4D+!_VP6Ae;!3}y8ibFetiA!(Kj0#U-Z8}N&kC+sGLz??L~=dXF#MP%I2KJ zMg@x5*Eh!Nua|Hf7c#=#oqenW{)xC+((=A2Utg53FUr^NR=ylPtCwb|X4#L>a_c|q z_0v=LSuz?8GEZ#-X{MQRy8TqjR=ygJ;`7TGp}bC$Q77)} z+%B;8`t2YqyvH@hKmm0RjBt+Rz|wg{N{;ps1X>#DU@Pw_%7!Ez5zZX!lC!us3Y1$y z>?^7QnZ zbehU_g5eh2DL15SiGvVPAXMXMe}-|)`mSU&bM|nzwck2v{q9cAZtyEhQHMiJTI|qG z{l=3gHPrM$dEPlb*~goa=-F2E&Dx{24HU^AK8)@w&yr5(?e>o~SMj&%d%L~=rWIBH zw*L1G3~{4O^wW#3uWdXw(Qs<$-M*aOHtxK63M1>MgAW$`d||TC*{Fk0rWIlmQ>Ew% zh%!C|W@$NEf3HGbmqn$c0|2u%L@HZDCMq3OMYX>R4ttp@o4=}I+2#xxgDkouiXfAqp51iX&Bu8e`WhPMh45oRk!!LM=Ju zSLybXcx1JrJ!71n@GofFsf4K*3XD$?Y!Nri_nn>nz0Us8&Nj_xQw&1N7^GA)s#B1V zX?+{G_SYSinZ`~{L;QxoD;V0%7P^=jg(M-RDsE?l-#iOq!qHB5Ksc~~5Z+ot3c zP!k~7ooe|I;6uR?D8W@y_@tx2V&>Ljk{yoMP*u@URcHj+lHJL_a5?~fwiO~dFQIFq zL&24d9Whu5%8ZDk(wmGJ6d`3ds3o+i3^JXOlB8%j*Rs(q;j7r$S*0KMwObAy98%t?rKj$cd- z5iRg1Ta-|Sk-M-Wm0%~rHAef=TP2v8y`1y#NN-0f3>O}~ zdQ0R_BFUT-vX^IcN2f=uy)`XtB9%o-0phEuTTJSxa{^EqiwYc53#xK~HpF>A8!S}! zF~t>ExS}S}m@G6muu3b)7+qL;rHecZoX|DDmST~ntlYp#k)%eiJ~RoE)RXstq{`tv zn2L=av3EmWAhw)+D*R>f#{|!pgWgL3%~IaU3TH#-&tM%T zNh(D?F5@c#xQh~^Wy`P|arSO843D?LT)R2+Rv|-76S^pJ3AMxKC!X2!31rMikcvB^ z0R=b<2c(uuTEdfLZa9MiC$JzejuNgD(O75kB(;j_(m|b*-!YY{MA2(aL$XzQh(v{w zb(Pvt6kH_X8$~**vir2n<2)e}#;IT|w1V_WzX5~94*X=C+)Q4sq)dDO)cD-N~v z%kuMLu4YS45>ep!G%0e)`izS80PJG#rhoHZ?UV9;#~qc7ZObV!{j1YXZ+tsMv0%5o z1H5SW@}{kB+|{*U&1_>`Qxwu$3t5LuV|cDe zvvXHAHz5V5yiJ-A-c+D3g_E(`GfqQlFFB$;-vvx)~=b5i)^(I*E_*Oy-j}&=WT) z@D9Zhp$aKrD|nl0k^dB)qJ=3D(nR#K4k(l9if^!Wk!L~9qKqn5O<@M)=r5`l^+;#P zQWdZkqh&tx!ck`0a{_goz#@dN22tF@x1=GS zCz#HmijM45C)0rv4y7u6$6~jl1xM}%qCBFLR=*!TcmUc`PRPsJ`+_S{riBNr4dJa2 znF-Pn6n~&pGpSIr)3aZIsws*ot&7p7L@2g2XKMvi-Y=0~Rap>S<=1!X@15LXw)EOh z&b0a^#Z9($e93Jp;#e{Dub4%qkm#lnOQiJ5ip@%?vS($Q+GTP{!JevmV9BQUb?S+u zv=wK>DevY&n`?6ujxrI!g9mlxctRdp&NjE_)W}1ndgRCAc6NnIOLv<8P@n%Gzl)($ zorv?;Fd3x@5BAu)bC+P1SlMIb?wGt!^4q~UzTw+#%C5qYWu!y%lR0c(e}r}G^Bb?W zLgo&-{e;h3dxyYLjmd*%RtX9EgqUsSnqlJlH!)hZKcqu+TVo-7VQayfOJp<^7eL$< z12yrM*jXfvr5t!}-XO|lP3}y-bnL-c@|leW2bMiVLo* zo$;8{H3e?-*2&pe-N#Yj111_m;L=O;r`+4w>6`Sspp6A~h2`e^D(Pd;MHfyOI;uw5 zWQ@(>2`mQ?5*f`IR!R2}=l!>q;lz2v(Fv=Wxb(}q zRYlNVq|Tb@L&jp7L;Ew24%3|uIt9aI>&tfbi6qB>q60DrcO$}t1(HKa48!JNC!C)r zBk~L#k1o@k;1eT>iKm!3zxH05lQV`@-d-9J3}al21mq7L219D*-=bGJUZ`ckjscsF6A!}R&0S}h97~mSM&xz z*i{jG^vO{So%o#I6Q6JmP;SJTZUA!ccHGMkvxd;_Lctw$A@~JR9+n@&3i4l#GX>D&fpd@hxg%qogNPyDlNIA{cF?&Dh10q3E|? zb{1F@UpI5Ag~hNqWchNtA`xdXtuDxs<#+2W24%Fj8GYU3?B#xJhPCN!(YM^5ECNQ& z8b!14LBL+`vJC%&DLU5t_U0+(8m)EQ-Q4^6wLzay3Wn7ZRq*#1Qa_opqUu6FJ$-=K zJ#q}NeEPe{D{QZHFP_cS9gm9+KD}M)mU&j4c-B>PF&C{KP06<8k=&rOf(8DDWuE<^l>Xb!i-i_blc!)lSRoPY%x}ug!SLO!r`Vq!$Qx;M`Sp2 z^ARauYfj%upSqDgWgq<;ZzJ47wvl+<+BpwM$bMrEvj4SGAbFRR?o94Z z)5=rQ8PrE55BQ#kMXLRmto!F*b_%jidU)w#M*#8M!VFGdeZEMv;u^oC{{CI~KNvPe zxdgkPH8gTc{O9Ax8-D)pji+DofBy^OKh4@p=qEXmUuNhUfbn!!DMjgHK=)**{H!I; zjuTJ@zC$1ML`)Lw+KLX_6S{?xdv>}c7PKM!T=hd$K`ue3x18S&ub?O6w4aVs=#1bJ zpC#8(GPuBWeG)OZM9%HvmuAofxqo|j(VMWDFrN(dEyt_vw=FbL?RQ=uAH6)@#&G(# zM?2dmdq;qmMRS(G05C>XfW#XjRXGUJnHr{i7U-=WkSY^BD^$~ z8mv$Q=9Urfa9e?pc$9ThOiCvm@jOCPy7A~dNOH=qt{ zp6=7cR02fC7c45=*@uu2itUAGA0{QaNxBG>6=P1}@$7}*NMc3x9I#4*Q{$Oq6!s8k zM4?g0*;<6bm<&J+9h{pn;o29cR&X(T$(Wl}D23>=#5fj64{o( zH!)t~BMjgY8|AOC$mY9VI(n}r0j9CJu7#3AB!xcRcCEk?kV^tlD-NvD`mxmQPjk(Xx@^0~=3E@}ceA8}`u!CUZ?m)FP zXb<%-7`Si2%ICnxI_dbb5AAN0w2R5gi!b0K)w;R1A7%qgTuZG?M+a#C)JE-m_wC*f zmJ2Uub3O9|_5D%9>Fkx574Obx*R+qU`A261ni8+P%yOFLr=d61CD_1YSb&;4pjz2z zXteOjaC8}N3B$NST2gWTIA@r@qrJ0zI7f*8sEe6LD?v1c!rH5=y-*@K9}D2D-wS4& zD(y==xq)+_v|5)&YdUo?DhDD$;jb(VTM8D+f*@6j@J?Q+CnWlL;w0Ua3p%s|((Gs> zI%wVa4n<^_1ZAUx5>dyP8O3wV_H4qJ=x7Rcz1w*5^u4T^|Dld|);N4-mq|JzZE>)I zlcq&_?XxD8h5QT8h7-(ZxUd~LpQ0M)!^W}l5aqWyY))G1M$ujl2SqX(X`5Jlio{g4 zq4m6FroK7$Q03?_ZLL*?c_Kii7vf~2gSIH$tKuciV0V@>$zMcvY|iQuOH_DPlQ2R! zgXbi6jE(Sz?nO2dJ2~}>=1V=$wL#ywUGfb#ng&!nzD`5}%lk2imbvtkqz0UL3ADBP zrd>Hvl~WD+y5CuP13jG#8)ddrt8Z8r`no(|(8`^ogV+0eAoq1%Z=bxvv$m}a0Z{jb zGm-eIU7MvJ@Ej_UR8qm$siR6%&Bp}0muSV1dfo77wdmd@XM_aDCO2c6yQbrluFgh_ z``PCR{*J#Q;zl^y2xONIo+s}f>k`x=kUAe(@18y``&O6f=oISZJXn;sPLF+TbVDHR zf4Iu}hHHhpsY^LwI#afciT}YBdx>b983kms5rgt-oT73-)C$$x_vTcP@Z5hw<3^39(1<%_jg-wffhprS++vQoKG^BB4quSB=|ijHx~8((*{T#T zMd#J^wwQZwL7$BREe{6x)K z#$VU`xI&hl0?qzYhn$AjM<0`G@4ZE0KkTxR%rO?MR*l4Nreru%2IP*&4dMz@lmU}) z4iq<~Yw;BEKF7V^fl@3g6v`l|f(-}8Iut7(X!=s;RFS?SOAK+2v-hFVD~1p{BKW`o!LEzkmh1Q&vR`s;K(=V*U9|EAdXMxZ-52SuvseqTkza$Xg}*dGhGpY0(St56 zghsOsTU@O5xCrAB5F%^2pjyuuf;Dp-GXmq;yz_XD{i|ZjNXZ<)sRSsZJ@P8U8xP;)VwEV< zj49Gj#h#dB*A0{Oji6^~((h4XTdPQ^ZB^R@EG5hY{L&~3k8L~}KN#36N;q5kp&n1E zw!j83f}X(xHFNfw`+2~@SQ!SxAI#Jn{Nl582DJBNgT*oKZ}wwQrW|ACHQ6vg^Hnz! zKB;kf5dknjgBL8RZ75C$!-+%=<&vDisHX7%FUN^7Nm2p@s-WY>WulNksV1v=v;J%E z8>)L-(Tn!Z;e!rY^k27jn&IMl{?|$h=xY~a!7genY7gbcMy3sHXDSuTFzJSSy1{rmH7_l(hV(^+D^~H??oP0g$Fq9zcxo>k{oUL}&AN=LJ=EKNrXH`m0tczZW|dY? z#u!8&w-5JeNQazLv7uZYwAycq7=&NNe70Vzn{315G+}I|m&{`4 zY~we^60`+tCzfK*vom5(R7cQBvGt-&a||a$GNLO4n|&L(#qx}ZZf&>8JPCI<=O0_g#wiyO#3=;AQ6ZJ%B}auF3~H_bv((Ut@3%PlK_Ky*|K z`VIk4xF9oH#o^Kg`(~NE%jHA*u+>NXs|Mgf{2d#LurLduZBfuk!h*H|64XHpVd=UE z`Qd7c+2v(QM9H`?3WSk*=&hZ1nP{~V+yzAOxWgIf1ChCi%u^-#A`vZ6h_K(1;tNHc zfFFiW4zCx4Ul2HhVA<}5wD^y4wQkcR4kS0PP>>E9J>*gHOn2P#jTPGILk3o(R~6H%_~ zc#$gU2z461i{VV-d4g~#V{xyhOlyHFx=->9#DjqMo>*|b|b;#W5Sg|KRbVwABh~f#M>!=myc5lGG_LnFwFBheVI(rj) z9>#HCdX?;A{10-AyX#;EO0@^H$Y)Fz1!@|@VwkhRNJSZD?ih`g2MEUq041|plm}{} zB6{7?FMR-#*eLCqO~?rVDTZW}#5p_=A1QwoU@P0p?#%FFBP3j?ucj<~XfM$7@L?mU zfoa}L&oRKw_}Jm1)l@&+ftxT_>p1#l$^37y;^*Li{ZnB05Ta7vYjuG}$WC(hsgzVE=4yCJ! z$$6u+kXbpI{!-GMJ+?6Q&mvkQEB`JDIXJQUz$4DdNt9LG7a28#6=U8{QX{Ewk@s!q zsB9`oR7?_jmL@$@7aZMuLmyUk&(x(cyB5}?1+o9(y)oW4peqw!u3uvq7+y+Zopxxh z!PWd&2Hq6i5xq$RT&-=$MQ_nBRJM7z|NZYz=ZYaC zwTAQ!vUIWdW+HFDgqVE^G5do<%;4a`kSDaC?(Q99G?PHK>IYUR6p#1S~K$uo9} z?kMPHo&bRorKqL}O#)0_d+-11>Eu7Fy+%)+ zEThOhtgSp#eS(+jqvhxkOmFo69@R`1&R!=SWcSoS@7-Hn(&5n@&ntn36l#p0NOC@; z+ z_vRrIS{MO0$EVmQc}4W`5xdqj1dIBOo-m3zSu^2#@_3Y7 zgE9u4ufqRe6=92gz`yvAM0XfQXrqR(7D8hhxjRI?=zK3Abcv=!ZS!+8Lq z3?~4Tzd`ljMk~)q`cRi#c@mGh7vxN3)#->pY-v$- zbh{5=PC8PF>Ww@VC;D8Qq;&1|XyNO8sj<|=zy+ENsue4x9zE!H&IU1Bh4m**=lv^R9%xy=KZW->Lkjbx==8PsF-u_n053@}#}2fP zBJa8fqDTA^MKf(~lPBo<>OS%YWu?5RiYJjabINm)U_Tnsa54n3xErHzh7?hYex^i6 z5ewzN%D-y$$CtyVeuONd3Qxpqx7MWhXmelud2O+Yp*hRTHCdi;`S8h>IkoDx&iYK_jZ(YhAI0-=T zUuZ1UOnT+})oMy<)A9#QSwf^CDlJsi;V2~juv&A%kSGEP6pgetlTLZWI4n?i?K~A` zY}cR=+PM(TC#)!{D>m)q9Vp<{hGygCLK}Ds@$I+K`cqi|T@7p5I8{MCxakyTRo7|r zlnvU;&LcdGnszo8rwWiqYyyxcUL(bplXrd@N(zD-)Wg2nZnrQSZ0oSScd`c$UbNAO zVAzA-9|t`_t)`||NzLr*g=*i?f~KQzO6pmg(kgSujj1o0@QZ?Pm|?RPqo2)$4X6GX zzG8^PZbAD2x#kfZ_9%wKvB#N_-hR`#QIKBS6kx05#293C_>Ce6khvkRPtVe>2;=DK zjZF`-Uh<&#Azoiw+kA&`i8)G6C>g!S{}2+|<8LZ-e?{I8sRT7FTy{s%0`}pOBv`!c z!Nzoo0u1Avj0tB+0GR3i&er2A7P`Ns;4eiMb_Z^h&N%8DSYv*P0)vt+mZIDU71chx zdQ1}w{1Ns;HLpu=>)!L_#{%d9^Wh{)Q#sOjO5+c)!Q=QNrk8U%Plh(S1>?40koRS7 zfG!O<-+#eR-MH@1TaotxNCkX$a_ z%1%%4GxH64^MpQugC5F1*y%jq+vUugYz*a2scl*QH5}UHae(LoOhWniwx38?Io3gx zqax-Ai)H)x<=YM@z;Lj&Pk!2O)reRayb`F91W|NF2{SacS<5(@8%8ByNxnTdvapy` z%#+>HnM(h*C6s4QWiwxX;6*3J%uPi6g+%pGQJY)qO`Z(@z`tANT^d046Hnyhbq2DFr&L zy>3O$Y`PzSq?Qd;5w-FCIw{Viv*~o{UavENGqZPs7$Z&43!V zs%fuf6G8pdq!zcj^R*tE;c35xKf_w3|I$!LUfJy+ zeLn_SLZhk9fFTG&;Bti0!0TAr6+N*V4erCqs=v!eu#N}lt&G|p+FM@ zRG^YxnD}U88uh}aYeYBkfYra#bWGklGH38?dw2Jk%>oMIfud>?fxOYNEV5oEFFS|* z;$4)0Yf9XnQ;5O8)g{Q@;oeDSx4qM8R|%CZ?)655Zc@Xm5WWP#H?^rC5Ga56CByg+ z#gY~hMV0KhmczDN(t*6dj#_1Zu6(rbKz{e)kedHye?_An^~?gbgNwtjo7TLOaVe)f z5?BdyTfD!-u81~RD_M@6_Q~v|oa(Iah7#m5EpYdb4hl%qJ+Qu<-lDy>y=g1HH80tb}=`70ShX3+Z5J#yK zQW7WD$`_CG0&nD+d1;)vdB~TrpW>pA<7D?N?vP|Bw@P!$@!XEhkqS5}$6U#A#jcqj z6&ikyL&er=m3zNd?&19-{ufK$lW-UQ93!0Wv6z3)t6EnT*m5X6`t2j1erDA!HW&qWn^u})aZQ%y#*d?=MAdZ)F-C3@n`@=ijIJ;QLX72 ztVT)RAFJ4qD0;BlYVREHy*@cQrl{ZknBg?(SH6NJ-&guud|#*M@RsD<7Fp8(G3V2T zmCFgCdc>SsSKCcT^c49k$uCsPf<0b`k1tdd)|1co7~z0NrqGQ{C<{&xf}O&NoZsdh zHLnlNHxJeD)vx&2-1d^$<>7kGG9&!zUd}EonC$TB8DoxM>2~`;=kVwRq|ce3@xrN& zSa*++ec2<6$R5G6Sab!N+iU7v>$p?}%YBVpP^KwYxBI5d_}!EBjrW#CmazneIEUk= z9w2iuXm;`EpBHOI3kw;073awV3@s=2f*%WiftHq+am(e_b~6vn7BgmuF>kSCFkxsQ z97h6j$RVP@9G}$T7e*+;-;Q3l4(Z7ez1Z0Y!F`t>9JZp5O?@EJr2^}BY&%zg!>Ibv z6DTH<%~}Miph`(4mt-7+r97u^NzBqwx~SOI%=hc=_xdAKV#8}eRitzo^GSs-(9SZT zlxxYFpzjAz<&5RF=-$11Aosw3(B=GIbpuv_EVK9S>HgnCE>FMQ(>iXYvVO0zdhg!1 z-Rs`7d-vYGzlXn1Mi?ezy78<5zg9NxHK^zX-VFh_qfgww+&}57%AgXj?H*RD-o^Lc z#W;BVcV&J39yLMFy_a0W1{OG_m-OGpDHVdhD(jEv-Ku_UzvZtVbBV6JlYbjsE`?7j z>rbT2s`b(@#UoySdJm@v9yX|}(Eo4lQTOR@^^}|b+db}ggFD_(eQQwH|9($;F3;Wf zObToFRNot_^9|iWepK05zo$E|UKUDm?>9E?(R1iwhyH=L9nc`&(}RvG_2}NaoA>W- z-~ST|+%%kj<(JCFV=6-r%gR(Xo#fRGf=Aur>SC~l z&BZ_km5rx`lAw*iR>nM&G3-bn_{DdN(c=5y=fVIOc+R9%L?QlK^!jloNel%@k}moX zY?Dr1iBLu+KVGEUT0R&~Cue8LsEKi|JwoBTMv%{OrsV2$+^G0jRVs5tGQi=pis>V7 zqKzj{1f337WTf{xQ_Lfu;R^XIX8623Da@ReE2K0|Fpuwz=t=*|%nIYSq3(w(r z8?8hA)dhuX+$<^}-h=hRlMOBKgzrrFniAR-fG5g0#ed46=*Eo)zopJ#l{1B)3^txf z;JW}x3{OWN6g<_!gUtmabGbRzS6A&+O=bka=Nl$51y)3-r~|HJN1NyCRwjV)GU$=8 zzZ{%|e4|j}{h|}#ZA&#I_8|&Nur*tB5>T#HM|dj3NU~5(4BAxzOpAn7Ghl+Zg#q5z zShqM9AEnMT05Yp-VB!5jp?)C*Yqh5V$U4a9&YaI2%qI?H<{-)j@X;u5npB@Ulxi>8 zyTv=vX$hH5CA{fxiHz2TZ0^l7wf9Qq)FD-S#S{*hW0i z-oL9epqe>;VZH8sv@(w<-0Ju5EI6B7b1zdck5I-Y1Y;7LVS%9OoMdw}383iJ zfp!)Q9~Q7P`DeAL@l#GRuqYosN?D1HB|0(mFW< z-lMt5v6Dnnr^y8($(Wi&&B7T6;-S(Acd_^$B#7^%jH>&dOe|w1Meo^eSLZbHTr?M} zl2t7khe%DsQIMj>W*v`$bHz08xx}klrLahxmiM|_{5=d*$0gJ($`ZwL-QYP{J$S#U zpUQES%Y%<%4^+**!}}x~yu`kSR|naeo$P6pWoX?+$7!qsU0HBM%9sOU1(&ExE{j2q zx}?$tEIMQo5}E`_4}Hj~MWqfC7g|Ggg_e0N7lQpP8|q1-rQk72(yDuk-Gbgm69SWV zPmN@~sosC&Uv$0=Q%PfHC2OHt)FV}Dqv=qt9?-fP5Q4A73O4)`$Ma~Oo;)t;$%g6) zOX*H$%8z1)giW}~9xo5f6I1TpTL5~W1 z`JRy_4E?cO!8)Z`&Z#>=mRZR;(#xUE&3U;k*0Q-cyE{gl&|i2PPGQam$xcz-BAWab zy{_17043f9buKSBGxzs9_7V?7-npEzLT(;A+vf&UtfB+W z325_N`znbDgFFSBO&UK*2pM9d#gy?9jTfp|TJFOupi1*pepHtl#6>)kvXYnlFwCQh(X?(?*g$@*Yt_7tgdU5vx6Mk7g4ppl4`+ zO9vC)PMDMrL2^gdeCc&84(|Pw!M!gIj=qIqY^?B}KmiKB*WWbMNA`%s5HO(ZExfN5 zm{Jz%5eNwP%`5~bfQBr`oLz50k;<7V7=lwQOqUSB{GK9dEyEX1y4|A_t1dSD46P2i zld4yUAKA-YDzn++bhd-q-}Y`UV+o!%pjk+;#Va|(OlztS)0(4+C@8NYT*$qF%TxZw ze+ZWiOI4;%VSMtdA*g!jz7U_GCkeNM-VuamgQ|sQ<@1Q8HfIq5m9~mHbMjz&-f)$a7^CG&CC5XgrBROr#QjWrq}$I-Mp>Ml#Tmu zCF6d&DMCm*%B@>qX9CvOaQg3{<2DNho_7J6%$kn7X~pYnWy;1D4rKM~mbaVc8c0><`Hb=LbE^e70CC=#)$D`KrzWc=}A~SMJIxS$j*_q;0{@ zl3xO{qH`STZyfGgRs$U4D`ES9x3V}(1@@uLSq1X*xxwF@8Gj#`ZlAE{s`l@jLfT~U zsk4O@8aa4WA#BTYhX_8I~OGEGA87PIPY?AYGR_Tt;%QbgLR_ zQ4W_Z`j^xt;C(zeut>});0(yuVzi~ z%(kWmtohb7;suC3XU4qm&P>QK>8?(ZecUttbxH{Xo-6$DN;uY{OqbHn_36>H3@T2S z4d*VL15|T1NFoYSFIqrsZ8=~(p69etcX;D$81<8@q>t%3x)(_=Y?E;2BWNQS7A#<{ zY7e~pZy`H?**%((PBF{`tQ5KhwojH>)Pwce^D~PhO_6TIQ(uv3Nau=Xi2G%#G;y!L z)i>6R7XABfTl^EqW|jrcWZ0{)(fY=^Pat+0N9zE!2~TsqDGb$B&!;WSblGrS-*T?k zHzaH+&1rvzF9v7dQLfK(Gq_%QNvUrsH|oq*3pbVIWo2EdnhxF%2@U!cnIo`fOr+gt z+}zw4@xCOrbl5ZEUeNPGHc2m&{&OpflF9{P4~RhYIxm#Ca*4m!-#=^z;<$qlq zr^B-FedomT4=k4p-Lp>&b6yxR!BO2*Tli*WMfS99djHkf-~%^J7jZ8nbxF0%=pBw( z>@M}u>Lin=RJ;o8p-`uD$LxGB+NV&7zv;9|PfyE7n>h5fp}zkak7{-lS%6J$7{1MR z>2iOL*{7KoZ~DyOVcP} zR-r6edV1&0Lpp67rDF-_(6aYqA?vNrJPQjS-j8M7{d;kG9q}27+;g7ePoG6=I*<0p zig>`9*d-G}gr5JhM9Svl1T~>^njLviF~h*31XwYQG5frx+ltCFXk^PZJNuO0(%3OK zI*YAeEBYxv2y8_{3XXEPtXMScWQjb6*cX`XY$VIp8jQv+~YzPZg(Vlt>z@+DdCIjr`?``f?@w z<&;kwi<>1)QH2f9ftSL;le2izAFJ<3&I<6XkHrb_0yXvctw>Gd>uXKC8`wQG@tXyA zVQph~F4^qMSKCTkj3zK%$FgwyYb zbp29{Vyu9?E+-UJ87W*K!mpz5RC4IJ+fDL3$(4Lz@(fkJ;D~*}5&Mg$oC!jE1+lie zeTB7!$Jfcx?h(k92xzPjtzqNENOMHkAaeI8g&n~_+nY;cgcUlHmt%QdWofU{OS;_$ zbU$7-h{ZKRg^2dE>jZXkKRHLhmTa(+PiWs#59u4qOAOQYw}@koai$3<9ucl3)HtV7 zIl7;$*P{(7+0I~ZvRwi8WU7R&$gm()*h{GpkJYt!Li!uyxsn>=2pDBv)|d@J8X6K zTZb=CUPX`B{{Ey`V&`DjDfPGYzi$Xq>(tsX*W}E~5avc_h4jjv9DUz9bZQF~Xh-WC z-w1$6JQ-)5VLC(rkwJ#P5Wrc7f9rMo{1Smeyi|Q9N%{<$6lK3g5h6JoT*mnak=
    }kb|TJOMKM)ah(-x()2<9FT{%MohB6$=+!mv=Ul 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
    T?E=} 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

  • 1~{u9DB&St z$sh0&NwC>yb*9RJubmI*=t1?z><9*9GQAA2tPujbi|X+FD z{;`7v0~Q{w?E>$u;7FM4g;miC*>-~FXSL}I8m39r@{sz5YlDu5P1 zZkjUH^9XV4i0u8|2O8gfppQ6yCB0mMy+rvS3@}gdapvahfs6p>U{;v4H#Lkk(Pal} zb=8fgo;%Ju@^l$?tUm}@-tl=g?XdHecA-LTM{Z`QVC^dy6R`F_BtUoK{HV#2E92l} zza1Z>^~l%LJSbPdTCQ@XCoh0k4(6bp4g_$Y^yJ-4A5*48=-sYZ^mD{96QHkCB(n=S z-{?x=H(U>xA9_4xI?-3xopJ^T0IIG$5Kfw|{IT-A2O*g|P&Pnc(JKXrk>7L$(*-&W zK+c{J(E#+9Hr;S^K)Fk|)6`+cuFs_-&hd6X#2ok{1Yicf=UsWVhZ1*usPemz<1UrZ zDPGKm+%fW5Z{pNx^C4HT7eE^%@yeeskmm~aixk)`ybC27M$b3H0k^$wNgMB6!~Y^B zKBx~8XJ3L|Z_l-R7pev9y%GhV>C@Xhw$a*%GQUcI*1P{*0t_pf-eleCqx(+^kTpTz z*`F$(C-m5P2qHSO?CJ#94TZhn0Q%6z?2=B*U)`_f4)1;l#}2e4R3)(wL!F{?V>@QM zj*Y*^l+CTbqJtF{VD;D@+Kaa40UsF2~E35p@FqOfQD3T%tQvkH&H>-gZp<~S1=^t z%LxW}-7NkJ5crENacG4N4Ee`41hP)Me(cr!`v8u=@qgZAOWY=pzlN+(Jh=PD?JkS~ z^YckA`<&y(_WR;rDZpY^IxrHT5AlgLe@?XRX~y;MC4L+P_?-6ma<&gBfHR!ptMGQW zU^>+a4IFM^gLxv4@l{=(3qoxOPZ0CrNcpb{-#&2a4R}2axb;f(J!t}wDm&Cw-QZ@t zBYk=AOhq!wveXK4ULn9)lKBa+8ehP3%i{|RZx+wswdBCXwp+;Z@*3voel)QPxwFIo zFmMbr0%FOUl@I@ek~p-Tw-b1u`_TqYF?Y|+S#0DMQm201`SJ>FDXCqHO7raaACW+I z`@}{r{IBg^CB*r-G0AeD+`2sL&X=863NSJ6$o27VUWEtb^Zn${(z=i2rmF;KyC?6g z=fx}HVPO3gWD0zx0AUw#%RE~%z~{9K03L`v5Ohep0e+EaHyiT4@--p>FK-R(!=Ale zK!H%a2zaJ9uN2$`{o(R(zGH*U2|OPMCIh&-2VMwXN^gt&x(f9CKK2}I1KcXJrYMLN z=%%ClzI(GRHS`E$0+{DaKVRd3hYDs~y3B-MF~CPo2zb+=EY&t+`7+YlhX&-4@$_KS zq*4bGoq~8yQ950=1Gl^*POiE3pe6r-0p7l1fU&O_;PM~@wH<$k4`lj%|7Dve-_L#H zZ>l?>Zd-Ef3^MONohSw8gdCqVZ6t;^;XIhwQ1%^z`Dx)p1`&|(V<5oPGvV0#f~F52 z%m+K3aRmkbp#ei!!Po!(fseCz0*+o8K>7m9&ZkBQpqBX9CtnZj4qfxvQZI&VY_rZl z{`p<{)IMw;`)mb50sBxNh)QJYRTvkC{`X@a;5q<2gnr}$c#Ss$z8nGe;XdAOU2U&k zkl(4Alg++b{`RIs$JXm7MR@&!etGb(k9`ZinKzx;cZ&oG56A8{GwJPzJg=bUkCpTA z_Q4ylRX`xt{BYE=zF(*>&*Mmm`wv`KozMnUx;}NTD;R7EDRG{h=SDPOk!j!4A$jau zVDj-ruj1dtzH$H4WJNl7IXPt?sB0VoJ&WzGHLV}^Z}W~`hI|C7?EpEi|M?igUhqG4 ztG!r9k6oN)c5JQix4jMmS>JQJrakU1rsBp}Gkx*{EwjhY6gf7wS4qn!&{%ys_PqGYkKvj;&Z>V6VFKRlAM|5U|}l@ECZBR#!m3{sk83 z8M^*VPVN)XcgmF51WJa^_w|kgUzQX{_kUyp^PM7Dqo_JWOf6ubTcZ8Dr_3xfSgbyz zJ0BIrpMsa_ zr5_+2`|7&}?|o*h#9qpGJ7V@bC%|n3kUJpW3JFAW^3d8vO4+~nF#wp66o@!}@uA!* z10PP7FLVH=%XLk<8~|;FKOK-25cd-2s~6_B{JMI%5YB{GIZDx|c|SgT_Y;5MePET? z*rqHPd#aIwlo#BM1fD{=;XlBTo5il~UUaXHjcgNB?@xO@ZBzb7yC(T?kqiFkfO24< z^1@R=@s`;oR*F(YRG}_r9Qt7xa9OHT1*>oMC*{quAEhqx@@} z-nVUJ1)!_E=>}CydRzAj$`sy&DGXC&A@w!lLPdcz+ z9`x>EA=~-IArCqNuZF;S1;4;Dkjl&!>KH&T`iT42{{0uv2K{%Y3p;lrvpZfJXkd5~ zZdnsp5V(~f-GBD42p!lR_y;iq6u5^N@g#uH+ucV3&J^j`x==kzR2TLMgqx&-N8l|J z`w-6}QE=4p`|-2e;H0MqRmRIU>9<>O*YW+E8?wY@|Je1qmiB^6GBCaU>lo5A0)eJP zEw>O~KdQa=$E#JuxkP6+1^1D=`k8f(`ClH;&CA*)J|rUpP5Ym16CXy*HZ1}0m9v%c@WC)%SZPCM9_VOU6S=}-!ohy(-ZeeKQl~8gB}=`{dVOy`e5=Kbw4As0@?BT z^0}^`Vxw>Tu#yL z27G}LnkIH7y7YJh24As1!m@ezJw_&I;2TBVy6Moq5R7W{+mTS*@y$01`0sB(<1NNs z(Ac-ETF{lybQ|d6b&m*O^415cSvIx|m^?ciO1$azUoV*+3p~+0$^>yv;`U`MUyOe9 z*#=I1gFfN+W?D?rdBVe8s zjBNBlX?yVO0ag9AS6BT;RQm4C{&Ov>&qm6IP(ZBM$5 zM-D^iwJhpEy?6!Oqu*p-&fa@TGMF z9>|6B@jZO!LZyJm7d_K&L;_gQbxaFL*oNShfz|s$*PrMwzx;cu^geRij=I{Kc$9*x znHEStsBNLYyyS(zrN@A(l4JYrw>0zH)FY4*uxnr7d)Q0PF)%OiR~K-j_piw-A-z3v z<_k3eNQ1j$kDqNuAc@-}`_C!f?$W(#0R0h2{H3+e{r;tOJLt(NzpgF-U%KbvO6qZQ z54wK2d&A?$Q$~xzS8$nNAw_wR7U2% zE%3f3NE-ZbwgtY~M&ANM9;+^opRXa({rlbA`P(qWEqeIg>l~p2zcKge9Ni}$ej3VI zo(p|T_rTg0{q!8VJ?wv|-W$E_3XU8Wdz}ZlY|`xdNQn+!aQ8#z#YS=AX~V=;n{ABJ zEgR<5w7bXP{qBK2^?~jAt7Y=bhN7|EOTNdap1sA(y;Z!xn z+`hB&Lh}2L@W>s+u=UV?Ne^y_i-FNOilOapwiR+F@3%k{iZ2tRk0q6|Y@Vrp%O`-T z`=b12344j5N{>&dN?G8*Dm{2g(8I3^@Fbsf0AF|4o8Ik6k8r0;H@2WRt-+htw5ks~4-t+23p6ye#I4)xBK?F_Rr-gV%vunj{ zcnZbXgB?5&;k1wJp^&*-q))#alpXYx+5We|@i7491&?-Da#ty-AeJAF=gC~W)x&nV zpN(@!S3`Rs0v8*58c@1ANAi>oYQzK-$Yx`V;k-Nx0B6E%kROzQFMNX}7ycc>k)Q-i z?m*^CI&%06jG6PBWTqvhxk)#uykZ%@&*bsR`KnjG+Yb}=f>#>N>@W46?n(R__hH>k zt~110I-;98pAq(aLQ@cJ7UkB<=BL+uhr0JrwR_nLd>CRQr!(($Q}u^SI{Mez!(Y_* ze5BLhhzF@`^Tnn|7!Vs+s6W2X8EDuIXe~MD?IIoRkN*;Y57VBR%+qIZH0TE5R^Jtve4wvjL;&x%Yr@2KOkVd6`EP5j_alntAtwmyx8r(T*%T0bQq{+M+8 z@{)%i)5SLGL3r`sw07f%xE#M)l)^wYC$UYJiD0=4m!+{|N#X<3zYIo|5c5 z*eG-$u5QyzDc*q3P>s_*f}^~-uKzx{S9f)i24*JI(?o;*&=LDY3NL|@EjzBgfZnKM z^8QcuA8nLA=RYx=P7ik#0|QC_E(3*2;yEQM^b#LebO*^bTeT77IK3i_pF_$n!xvCG zXCq_F#f1 z0N45C-ejDS3=>V2mUPUCR%Cs@jmi19uitOz|0dr}Rl?v@~#ao-q2@RJ8Lkg*gUpy0* zrXdK0?u{Fqos0}+`upBCRkaip7q81Z8w!1e+J9O$|4fLfNvY2mW~wK*tpp^z*n}H< zCvncIlgo2yZW-SHm79{3PWWZ|iUH!Jm9@m~-*x7i-9S zrp3?8cW6*BZ_T08;9L{Rpj?|qkXaDW8U+cTPX5Zx{rN`#_6g+>ld|98+#sTGfucaG z&M&tW)OoLbaDSBBa<>Tm;l7fEZoEqZFP&3*8;q^c%@6ov>#Ch15+UHc$Cax_0I%h{ z{N0qWZq%>$B|eiKdR3@*ca{!76UTHdTumZfa=@-}{zihJxCV? z6gRqPL9m396>}_fvyLd{K6Gk}8jpu@X8IN9lnCl$e)mjEzP2IG0$T2Q2Hw7hqwyP#a}>cU^73AHmr4Dmpa>lppEVGTSlj%b`;)d!sR==&EFcw zVk2G_ND6z7TmPRFAU)4Dm5aFvLLHz8BgibZTt>2AGILj#Ku=}CSA@IYC~}*~1~2sc zv^mw_+n9{=96DA*Rt?=~s(%wl;UZ+kTl<%ILxG>Ajh%YbLW#n;w)mq{ikUtXd}$2_eBqPGM;pH%exvPY8VpSG1QvK*TW2=I5pWj&AB$okxQd?#36zM z80cx!1MN`LsVqA6RPA;wQU_GRbDMWtpPX4HVrHkt^KB`@6C<)FBvFu=>B=JHYHYp} z{xeOS)ud-^ur;s#8{nu#vh9SBi zGUsnrr4A5QVA_W_(e}7?8~D=MY06IXLuRcgD3o>O1dVYPDDXGc_AmE%t|4UASwu%a zOVopvkGg2vb+1neRoo7jTyb87y0j6H-7)9mM+g7@3C3uR6xNN9ovSQgS##x`D9r@? ztd%F;pdp2(Bnd1P&0@YCPBpWvp+!_9G2c(vuE*`S_wi7P#VRBMe`2*=FeM=_&PP%Z z*#0L=sYB=`7)U{cRH~z(rVtutF1u|~?)(gceMg2Dcv%b2+-XBaRfTXEl+xHC=w7Hd zE8)~p91bIwd{-N9V?O_+%02B(za|Z+Qh02kvi>Z0Y59wEm5nVMzbAJ&vl2kU!O1&o z{$zpmLuYP3&9At$yO58Xc`W>FVl~8@R-ky~=Z?u|uK`>mCLkRhr#w=9R?KTl7Fz_{ zWRrzMMsx0p#dK~j44H)T_qS_>nsbzTa*V`tsi9!%b{RzXpiM62z2<$w#IN3;G?O}x zGewr#n?EFRuOK>0WG`5}Azil7*P!x{6@3}_1i;Shk?cDl1YMntGjMBn>pa2(p0(BV z!0zvATw6Efr1>+8@ge83Ux|(DT_vjybgE}Az@$1?p+PX+Em+ONDMMK< z8KrdMPR!`OiYB5u7mX~A4-ABpx;ktkAFSmJc#*h0jyCGweMu~)637an28z8r;q;cf zOz~&cLe~g1r};CD`&f{LlssC0V53Y9Ab}Jp2`^jg>-|qAPdCzlzdh$L@m%B5X0X#smz!Ie+Q8ww<+62@4Jfdd126om+|iK;0R+f zF^>38ZEDmOxRn&m8-J0K9og(W zHb}K~HXq68+kRB$FPfFpa+=Buk{ot3p2#C9AD9Mrze%%4?KsZqJehaA~}Co=Sh z9U~Xk8A@nsVOh2#O<*Vj1CvzL6@s=TPj9GN{lJo5VhaL-FCSuTYW%Uz{jKqP_QTwK z7739vkx!cG#M=4O`=F^C9k-pdoV1mWq?{4We#)W4zXM0Dl$N0w&2Vm!PN}5O-&Ubz z*v2fFycK!@0BCr*Oq3`dNd1lst-OW17zK5i~_=93@PCC@Ek(zLi6psjo zVI+(DHbDqozexF8OiXmH&K17o4<{!lS6XKtDzSuA$I=Rd{{aJ*DE=o5IHmnxFksxW z%74Is!&Y5X4i-9=+*8npX$v{*Qf>^}!r$9mmXzo`>bYEZ>TJ-A;oL7&aqQf)$OgkH zb`s@(UGL`c-i6eNMh!MIQ*RLVdF5z|8fa}o4rfjwX#2sTiCu_syJ8^q*>|W{D!X2E ze;Dl#Zf}2gK&@m+A#y1>k*kjH7ZjYNeC&wuizZ_=#tnXRAE(LWOsPZ{_Xa6kTIRoH zA#bqVTBg1uCawJLOG|O&bmsA4eLnSDPW4Y#Z^ZBoHz&ll4{FZy>kQcw2H8qSAHF#v z>d9D~;EUdpp|<`qN#drN8SD46!vww>Ww}NM8stR0te>%2`CAI>DHA9{13V0+gBC5fwKhTEklXi#(?9wJM!McP z3_8g(0H00khW9(L7=_N*22T07ikRYe+(s*^*GlyHON8v~y{Z{ZzHKB2DQJXoby6rA zNT}O_W=zm8?`BiWG~l0UlR48?wpkd9-yeGO!J5W`DNEjmmeN`Xe62z##-34SY$H0~ zpP+63ym0Hr(dqjkT91y5(QcZ?<=Y9u(3zK6C*}``ENujTa@nXMv-R%1iRBN<{+-`J zgBk0?CS)_1RzUj2)an41J<()gyx>XzEEAR`T0m&f)Yh3`y7w?<;7bQ?Wa zvH!dv_&NM8)LTD5>u%h+{bRIHjoe7rpQhb&VxIVg$s(6Pty^wd*kv^o!7v^}ZviJc z=i93B$6y8rUS40lKe}zXQi4*uKUVP|p9(CD*-sk{0I>6f4Nsu;aB9 zq+%g&2xR=-Ogz;H(&|cmsG3_#;`WWSPj;cHAy8O)cbb!DZ-Xjrb^a%Tk%cTDKxDWP zYvIRqJ1Q*X){->iN(KFQxBp6_B+p;P-DW<+WZB8b4JcY7C;a8bbIbP_g7+=!Y|BVKmEBQatfTPU0 zDUow2UQO8oM5T@Vdm3We?jeS5hZW`_yVcB0sF6BhUFI~g25A~k_t(q&z>KRN5wW$o#^WpP2jU2cr@RrZUVQ zPo>VN%dDHNDPP`OFYOKNL`cmv2bQype(&4Y#f{=#igDv;)-PnpyP3v70dgka7e|aC zeraC+fT49oGp%W%=6QqBK|!IAKt10ZK(U%5B;RB=0qX(Q742QofputhCr%G zJp!wF6uB@QjMAOXhLQN%TCZY#KM}Egtwj9QjJ{AWC0Sy$uHrKO`|3VWS38PA%Wp%L z(dj9_o|@pWv?B{sdU`RGhSo=8LF!0X{__$=mr;RBDcuOFDx<8+qN=)MjxE;U`wwD% zTD8*-#*!UqWqzD3g4Q3fTp;Cx3g=DZ83tEmsYBShY^V6CH=^DvUx&pe>spr)G{nJ& zyv>vUShvv4jeJm>ehmMUQPsTRjecDu_h@gYXC0U0>AomQ?+R4a)aoF!qh_7YE&Vh3 zp55iZyDZAStcHaYTfX;XB>gg=B_&KU?@dqo|L3bh0;OlJhKT z%G2f(?%F;W^>I#qVNOs9v*K%UC=0Q1$EkBlr>U~gIU|zjnuW8&%mK5W9cR^B(nFKT1%cH`1sS%D$w+^z0 z!2HEP$*S7rK%Dnj^5GM^bW3pu)ttxrJ(8WdQze+EX##?x zf?4!5llTduBNIROhO5wGLqjEP%`+oIT_vmcYVmD4--`Q(|L7M(?_r15x)Y7IH+!Oc zG@?GCcvNewiQ$r-trORlr`?$=&=g#8TNR_#acFDfY?WIVhhvRj^;MeqjGyi5)MbET2 zQoG)lc3}iQpwoyupv8S6W3MOmmMJgX)mq-z1L|acktz{Su}ph)0GnSfm9m&$BNE^Ju*VQV)8yTX z)EZ3E8(_6Jw%S-{LOfrxN>Dtrcnfo2s5|!g-S2$}{iv+73#HuAyOi+!v%}}@3|5-D zuqV|cOY6qI{D^!~V&I-v@F+}0J_%X8N=Bb!BhK@BjcG;n$ zEq0Tt{Q0N7j5K;+aV#PZYx7xZQ!w%|B@;z}`HnNv?3_9YEzcMFZTGy>hQfhO1$5Le z>ue(XPW!)kJMc1x(s?o>KWTkd0?)+;QXop8SGuwlS;f|mP`iz`B<4!be%T&LM?FJS zZVTL#pPVacGCQH7vh4WD*pF3z%p?21jE^3E@K-5pl1?OFi38Z12!TQZo zV>^eZ#J?PVb$3Hx-=Twk0PD)FrvDn`qeZB|+r4utX5am-a@+SO_ENbrNJ6F5w*go6 zC5sg=GGQu`rQB@j3wDRWolbO$IS-G@(QddqKB z>HWR#xUu;0@r|=6Q@=0C`CKmum!fq&kGbjq+R1tbkL&>jC!UVug}N`Ql5iG$O7+MBZ0{BJU#3sH<19do@KHxOZTRJgTa;7h3F zW3ZVhCHPJ1*Ock6!c9JojhG)~QZ^?ZE*!jipM_U10hNDiI@_GQu@7K*<(#7d5CkXpIN`6KY! zJ`SGvWKzb>;!|@BUq`05f!8Zm%)HMj!TMPU!K5Pl$LB8zLEi1pKA)-{pVX zBO>FLe)6%x&oaGSG3{0i@0rH?$J3l|aI5JRp#0na>#me7c8yv=#-xP)a5@!`p>;8P; zcopL+2D{TEgb_4HvxT#ou#k1$WU=7?;88)tBZ&>e(Rp80gTNnVl-E?#_c07V>))ux z=yq$So;t(&2-gz-OPdK`+F&7V_aTm$Ea8gSC+=D1Yg}2$ z^Xw^ferS&yaI` z_hK5zv^{iZ-V}2sSKA;Bl34o&_o(8HaA{Gt+L2J{aa%k@BhyPxd7Vw_qp53JKe8$* zChIh?Sx~X7y(X!KaTtf0P&pK-oscZ3OZ9r!pQ1S?H2{c+-}wZK8P|1So2ds5Rt1^k zt@onF+>)5SkNmrHSD)81Ea^ORsYIr&Z5=fiH9``{1;rV9`<(b)zt(^5!3~x!O2vU6|LXWoGit z^?x`i;du(hnhv8l6MCe~L|^;q!Z3D8P(!}!jH83;M;EharPFa&%*Mk~5Xi(3 zRv1EX?s!`xM+c2tFJJ9~b z_{VpsbAXwuYD>lX@xAR-q~m9zs78j9|xu{X*d~&%2z}BBlOyVTrSL|IR5!s%iD3r-Uvb8tn;B_rCes-Nb!molJ&$_Ie(`qE;j|x88By* zG2WuTlS57JRZt#(PH47zS$aD<@jlZZ|3rxZG8k1X^>4+iDq}k^_`xdTdPriYSb{Tn2YHxneg0cET^`) zw(;N&uzy8Pu9mjkZITrR55DER>)`Y&hO)Kx*OOSk@$cwrmvJc(>2Gt!=v4`p`K>cG z6REhfDhD~^5GBC3Q%=6?>27eyFSJNPjj;E4Br~D42(kvj6dZ_Ijh=|!TF2?|&EY4{t>QdA2_c;=V6KQe*) zRB2cKb=OeT?qm1(g#A)OW+4f7E|P23S7^R_#N-o%QD0apBkSOTtuwJHr~tp9iC6@6 zOyJ>Y80Oy_hSZVMj{H2}L*SV4Sz>j1Y1?h*gDf%bnXO*EqA-ZKl&ocv3^$4Nx&sGO2Vor3T$ zZo{Hk1fx>FJj?e()s}BFZMMwEV3jdHnZmic z=c~dlpUQ3aVe{edkk;KJg){oqX_ZiD7v-ncSKj7}{SeIi!?+l89P=b1<(P~|Z6l74 zPBk5J(-dmg8kYb0hn5*4dc=p7Ify0>>Y~Ba3=0S z<3O%>auV}+;adrW)Wihk9@>KM3L9bJF~;SCLs!UNw$>CY{(!`2A5AqSpwe5X!!VBS zl3(nLCds-9Ev4j1lZ@db<5YJV{=8qkEOHfkmZlZjM!)OosvJ;r?hSC_;Bpv$!M7|+ ztkt&2-T@xLtV(lp#~qBWyQec`c~?+_M{Kc5XQlQsJ)-%MS$zdZx6`IKiyyf+OB zYXEr>#3nC{$osqYR`F>%!&yYN=^TgXBh&W}C5!g;WPBN)t}ltJq$hPb?P3H zqq@TV{K1t!C`0--XXAY2dOVW6zrC^(dsRf5**IZUJOyxve&rik`X^mX#5g1hkITuS zvEMXZEi{eTd@aYtsZ^c2GMEJYv*CK}fHx>ZLiEp$6_G$pF*w8=k6-l90bSunpH?aH zIXQ-KvjC^TmUgn|^f2a|8te(m-s;4{M%TTs0md~l5Q=fQF4+tfi!5$jurRU#r&*~b zW*+Akb(LddM#Fl3KW;NqHhmof!`@Bnd$KY}n6+VMeC|Y&?7_M0neRx{p)W#Tl*fs& zV-_<;QmO1WMtkdV`68Mcwj>!w(R9=zl%%~h86?T%eG0+GiA+uGkdN90e9b|Djo4)& zPt@O~i^AtoHu=$I5jP9BaSDr9e*F-ntrppb5?mTF{iY(=#(7xS|Uw{$>k*Ek9gNeTrv4IT22!uik|O*&O8{|>wswcd8oo> z4lk;rRH|WNrrgnZtewHlz%9u-jPFL5a9Jp&PB?HN;iC=uc0KY=i9P0tQ-*n01;TsN zYg23n{0_CKPL3r3;gTt=fCIvuBI26342CuvBK6CuwOw2q>M*W`B-}@f>1y^3stz75 zqgxY}!|>u4R&vvf*m;j*rVylM``;u=27d@ySwn4q_-i}poMLW&krraYku8 z>f$w1y5PNxxqq2aQ>Q{EH#|eJz?gdXE288bpZ06u{mN=!P!ye~jm$1WiQ=RFZ`)Ml z4L07oX6saT?0Eh=Hp1y%tkqmxZFBvhe!ZYSr0OhGu1PQrYoUt5Mn=96jPGFGW~-8U zl-q3@BRRfd_Z6yl^=>T_H8~Wq!|5Svg*sS!q8wcS2`XnM(I7vj8x-tHS&HcH-HrVs zI&9B*zL8SdcFs|ARzXBM#v<`h;41-pgN>P8C8PyG`ATKu99>B?aAv zp>o9z;_NcEd@-ZlY{_42Ygr}Yl{7jODtB{o{mTN*65bE36J(Bu{|u<(y6wwIM{{x!--WS%X7b;5}&3^ zD*a(YArwD|Ht4b`lo+xnuZStBGUGNbq*@^j9u=$| zpsU9Q>hgtDCuV9EezvFrt5rFmau?uEKHc=3Rb?s;V~LKGh8MrR`nVil%=R{_k9D7g z<~2pg$h#-(u!>VqG28>-jRbZNzaf5h`P*noEhG08^fpH)tM#D0w67r?SL_4`tWuxF zU-F7b=)|;3xqvfI8|8%!E@{SNR-sNcIflRd4teMKBbw1{Hu_ynr(jo;$`3SDP!QHR zMs+T8kCrg+Ym|g0Q_5_nx%fQkv&$Pc8n#n*cNIca6sC#kol1SruoQx3Tdp-R4NUS4 z_efIfWy_6}Ga=j|-YI?sWL(TGC4b8WB!5nX{l<@opM)P}N}!ys9c=m;jGuVjE%~ZF zFp<8aSf@@ZX|Q9ANtRi_BZ@MUOZ|C;AR?vCD({ee7Ch*-gU0dr6vn#S-mx zZ}CMoMxviAPV*C}hAD2_p)*-Z-m`;@R}Ni{e@|~yvAZEoD0Hy{b}D$74f7y;S>Ln zw4yXGr+93^SeGT395lB^z8*I=?zz`5@P1=JZfUZEBM5%U;T|U`fIH3^o!)_jIcn`1oAgNX^+GN4~8)gmT==M_%jqg*YY@}Bf>j?tt$ z)5o8ulS4CaYl(UXMLuJ1CeI;_sOI+6FWEcT{;4M;rx`Om!6OkV0X9-F_h|E0idRV# zjEVY|-jB3EnSYM3AK zM&LEo_R+x+j*p@Oz0+c$bI5sxXqR_52mH;9~(x$Rx+-pHBwPYQ0JuJ{=&sA zcF`@GtT(5~2Yb33v9(#w zH^HPr-CMZrS9j5jGV7}HhZLojxo0dshzl%*C$=&m@o7__hK35Owpo$qKL*9x(h|>lS<$x zs70A;hhh$W!yu~RJFr`0}9#EPc<0?@r^z@!w|G%;B)aO5o4&i*3P z-BH8`8x*bPkJXPaKgt;_KzgE5SCsgzrlb^$>EJ0=kaYHGWs%bR^eHS+zRE#FO5cB0 zixiO~F5V+cT)9Ys#xV_MOIL=9MN~$qqVfe_3FTfRveJTtz%%V@1g>rO&-hMWjn2#7 zIW{aNcYL(QdjaGx{w9+O@dl6f5z3QnRH~~H4!xtyeuPPA*2`)9E$@vDsk9n*8SJXo zCZfo{sFWL0$3xsaDRo;&#Z?o05GEde2|N`3d{>LU903y)Bl(^zjBRVh|NB(iXik=| zY;k3xc422>-QGF*%9;0TFMgqZj42^lH<(;C*PumQ{> zu~b0B-?^12zV^hxmd4K+jS&3^NBGE%U@~A*=4Qs6ftFk|GlG@em+uJy>yIb0KwD_F5 zYi!z58+}_2Z1o;T^V>wQt)s44`ELMoK#aeZ(tdU{`fQ1kjnyeQiO5|B7)?5iW(gy& zG@ds#9!P^~^eo_%dSuQCoxew0HE+sSm)kLD z=^9M`4M;Yc&nXpBX9U<(dnp+-O;*9sa9d-{=v1F4GeBc{+$s!6wv|D0swqM>X<)it zQ~+euOC{Q&cH?F>b-xo$wl}tzcRMAI8l~i_?_JhMK~9!-E$W`%*F_n+>eV-< z{Y|#g+;AG{h(PC_(0zgV7J6sa!%AG9~v|iP;N80IV_T{jJB?<;Y z8Bv28YM2m1?baCK!b1NL3cHL}M#!HEm`HUlnz&GGwj#?IK||9K6>sv!_iF1sv?0= zJ!Nhv0}dS9Q$rw#3A&Dhg03qQ71Y#zyVCwbC1a~VBd)b*JliO6O!O20pD)et>$EVt zg=mo7z~xG9{MzF7ny_nBuv@^)kHEAWy8>CevVTavn* z^iilTim{f6oafRK z_B!?94~5e|}iwQ*fFMMlDBVgKb^;rMoG zR2_+Xh^p|q_W1Dz)LK#sYAZQ}_dp3nP~(im#r!rwRwumIaWbTo0`Xb^rnu+Cs*0hG zPBmP*sc}`(S?rrf1g)F9WeBQo0N$!HD0$$LXDgq~lg$DUtz z{dEQm+8d)cIJl-f)6ETjFu`bz!l08Jxj-k2q&hLBDbYgO1n}$l|P% z%kb$OIRs@1Bv&K-%uy*Uw$i51eL}l!Z5`oPsTds&w!!I|X?BfgF$Hiu5bB9~n5qD( zoy`ig-CgFL=M3I51vFCiEOc3&TCIm~(6rF-s#>kfWZX3zLkk9~-I) zejI~BV^ece^j%xb27=)ZhO?e0ZGBJ(3-B<+mxyb#E&9$p6gbAxhbm|(>_Q&XOsi41 ztEE?0SWMVuD-LLMyqX(~r@eH}^$ZP#L#@QL)7Bb42fmS@WS?Gm7QzudVj3}Dn!{Sl zMDY%Jx|<<3H+00K9qi~iN5-CU^Li`QMl&%t-@=XpF}x<54?^(b=7Dy7AmsUj$WeLG zzg$X0`Xx=is=&UPXkg#S#f^$`Q-}F>-1krhj)?jc^bQ)y*+neZ8H?i8xi*_oYi($+ zcyXV$bGgWn1zciQO?s9_`d96nY(}xI!+7`AMF#;NC!J5lMoN!sqN$wqw$_MF%a!9z z$F*p@U0bZSL_8qpqNh-$Cd0A2;~H%**G-tJ>~Lu~5ZE}+60I0AQjo}L*j#-iY%`MW z4XLt7+FPy~$!iJu9UwdC6y1>`+J>49)i?oU#uW}faOMDcAPJ6`>NMAKNclHe87)lx^B{-UF?tpZt@D9VgSRe8URXtg&tSL6klY^-_? z6wOU$Zn(9v%7(9w3zbW#rXf^f&1H*`&}Ha0-wHE)^;ssio2iwy=5no|LeeglX~q~} zPHhLZwB)%HZ!*QfGK)d5O!g`x{VwT;MW9TyR~fQPp60bO4N*5E$iilA!nVh?Gm$hC z%0b_phr$3o#)B)NQq@PI#dbkb+4|TSZLR^(iSms;395ikUTH@NG?%InwpIm9Rx?*?)1Io7k}= z2I={m+$?b&9amu=4xA0~rB@N8yEai6YqC;gyX+utQMd%125r_=*6HDx7*IN#W?w_D$ zaWr%tnet)NW7=zLZ7=KRi9t1RV1fZb15=KsO&l2Mpp?^%VxnZQJQRrAXWmNiJ%8W| z*#Q*ELhd^%(rpdbjI>Y6Q$t)t5I1z8GS=;FWyrXSLA=Un<+13rmqDk>;klZy>oNGW zmsN#{OHOpvChrrpo>38rPm31UocSC>VQ!-RG=pd^=P9^~^hrUQscdmHN|2F;rkKvw zj8{uJX1+W;p>%H?ASNx8?k&NwV_+2B8_JLSRVAQ_o0YOFnqj;8VgTu}&V5j3Wf94w~oRI0hT;sVg6Fd8wVz}P36y-K+|CBg>9;IfkJf&=n0 zaJrA_KmdptchX+BdSUu%=jtA}AI0VNs0qzNcJWBl#jj;67oh`L)e^j0p-(K#vD`y} zQKL<^v;>Z^v;90-pw2DiLm^wJp}qX|izgM4aE!zK%R7*L8a;`TG z_{3(8GvL$OT8-VrG@49^cFhjO<=geGT52-2Q^p~h>^h1SP+(J82f)z8AW9gZBt2wj z^C7YP`f1C(X23ILc4J%N!1#G&^oyC|kcVjNS>J@Gm`%=rMoW8>^0TqoYy=TXDiDNi z%h{zoOq2Mo+8+g`bXS{?z=&;|ifxPe22>jPF2oB@bSxm#I*n{RI zQzFD_v$7hH=xB(&A!fUG>2IjW@KLkst2*3D3{p|COSBmmw^H24^v54X!>u%?VqMk= zKE^6cV}w0B!zrsg-`Yi(2mvK|qp0nRb@aZb+*byKTPq@|hIW~1+OBAW9p#S0dDj|7 zk!*ndaL@=-i`0~n2AUX@JgYA!&OSWL&S9FjLFm8cTdqfP5^(%zhv<@qp$|q%#VGYQ zHa4_P7tU^}IL%0NHU$&bjj8Fv8ibi?#+st}nviZPr+-@LqeuA$3K25s)*>Q|6wm`C zU-dMXJwF@U)~2(n#^a}}rE#jQYtvFy>v6;0Vh-p^QLy1$ID*D+v^&W3Qvf`dvocefM5{$jX}t2YHCoAbWJVh z*d!dmoHBb?G|FD6Wkam~h|$z!KK#L4F9_O7bKG#@?X|9Wi<2I5Eq7obL~9&hyhQ2l zR4k13LWs09HckN%?hAm7(0eQnp(>%~V`#R9VxpqeU8a`eK6AV*!edL(ntfdLU)aW9}_N~ZIngp zWYUXU2G%i~^!hDxLQ`?zNC)T{8*glAjhiqQtV5mGcvyw58%V#=?D)PapOXzvh1eR) zYRvoK5IGA=&I+6fB;f_g3BsoH8r21E246Xakd!Rmeog|j3B9789L94j2DI|^z{|+e z&C^1@F5~3WT98-2W)P6pO7_=T$zjX*r(47$qm!w6KM;yhT@i*ZyAtB9HeOUnk1QcpG? zWR#Sd;f=VfuGi4uLTgd?imruy%T}zxrv0#v^ZeJeBUxqtEF_@>*@s^Xc-sJ7A-G85 zc7C*o7deI=PY(hl<|wU;ypmZweL8f}T*?E*;z*@k&o&QDi!!a5_{NqOKu!g&gvas$ zPJ1`VLB)76qG5iB_{uWYNpxnd|yfy}9AMz&3#$0QY9J8yB%{3R>b8}P*lkr*?o zI6C4~iFifG0{2XI6J~s|irEpudJ4Vh(0kz^2`G|x(#7b2*$hW@u0RA`io`C1XF^W} z1V12?Y1v&sd#XK;r~Eh&M%X7qAnNe)=%y`#}3B#)kf9ex8#w%ff8KK&do<)uV#Da%Y z@d{hTD)ZzI34>l#G14m>5KgeH-etptPE&(D4hUh~A`L<*ZtESbjo_$AAXm;0fEI`*YwB5b~&O^U=x`o1dDDUl?^ z!Cp+urxF~S_AB~=vFHs6i;cK8r*tan*0%}~E)BPgDQy;PR-kMaC_4yXnX+tRnh;n> z)(NblSGFv={PmYH0rz4CCbYcnvDWskM~v`xdF{Mjg-g#TSAt%;cg7gLZa(eIMGlQ_ z*$%%Zi=8}0DFwmA(C;$vm!pLax*YTd_tqSd7?ThCE#Z_SeDd|<+`>x8V9fa>95~GV zZB>Xi>F1P8dc{##%PafV!20BwrNq?~JQqLVHWwuSpj|DC;L}7$;yxIK|8^x6ph1T?Jh)a=13k7tuUo;`>qMR!ZWK@w9ECo$|BGQ?G|1duf0)a78rGYSXS?-Vy<05MV6 zqkRBCiHMfb;VIjIO?p#I0S?TX#1L);w+W0TM=oW2n+ec_&Lj=2Sm&;d8F?L#njV+)nSAJCNG;=M4ZxMVNk|Af%@rzgI3CjAxw$gOtdu!HZbl}Z+hK;JBwupUXq z=Og;bxEwK>PLOywG!fFrf)Wv6ATMb_0WC*nAi^92G}M$E)HHsrp{;+}+P*c*yNCrS zsl(UKqqo)U`A~X@a*R9TZUy&-5xW3%C(;yS0C@yw7%FJJd-*a$>-e^s)`JA+mP~9; zT1%fRNla*6qJ)j0%_GyS?1dwU5|Mo}1IPYkzwJ4ih=~I{%M(d^04$cmLSZSh44{=v z^4XxW%mGBfDr0A`RiD9ou>}%UQ75H~^|0Iknq2iL1xmBhYp>uQ68!8P9G>L%c&l))WkMwn`zi;X)%KL9T4K*4(F% zPHCl}!a&%jVJx~MRZu}+sgOr)*#JoFh7Mi>Z0sM3TejlNE!voQgLT6V7Ux%;hZo%9 zgzsO-p)x)@EIgByup4ZU&3W2pQT1T76OgOBov9o!Q6r3Qf3La~6X2NY(cflkkjdjZCYVmso4Q&}1asv!$ zHL*fEYsa5j+e16xCLEbfoEtkvA4GB-eGg(W@vVVLJ5&*DuyqGrHo+-M9#i)p~Po}n!}k0(qIRcSU!8N|%EXi;$si9btpgm$>qzTm!j z$cD{$z?a+e&Ss+^5AUz#Y$3Hpa6$t}hGF>^!69{j?kGkx!Eq{ zlchYRV{kI6JhB?TuolP8TYiZ^%E@}flVm2YjEOelq0a~L)3c=thxK1Ut}x+06{PSI zdNPqU!q~UA#&+#zQ+!-M*1L8_?9d!`Yk}=WiSs85g_~5GFU_t-P;WjD~~DVYa!P z>)%UhipU^bPc*fVM5C=N8p`>QuG+#0*0Uqjv|4Po7aR}$eOw+BYpcS^9H?v+UM!#q zgte9f&3NmrwY;UTw?YYzR(Y;0Njn^r^c6yW;ZU<34b9~Y@B7Hcpx_P`>|s7Qkfy!H zn4$FxEaHgb!*&obA1~yyIe9&=n^^dWv|be=WQcxk*!UnKD8-~9q@;#GcN9+kCin+k zO5HM;FV(w+!JD;k3(g>%+1Y#>DbM^vXwVLeiu)3qh-aPXnDO}^K&(;~h1 zmYUoaG!e`c_}56(NURe*3y@(5)|FKpndSgHc0>q&0ExLheV}-v#`xy03ORy(Te-Ph zm1iqt6o+IFfL&m0Zj8H#mLPanC1+b0)cL(#$ejdi^!JN%Hq40O!+aPAR9!Q|CR$kx zt%GP4bQ>8PSvzA+92wpbbvgk#eGF)Yhq1-zpEjQo9>5ml=0v1X-Xj8QA-hO(kEOyr zz5{DdXep zdf*h<3UYR>RE@}7Qv4ogQ{#Zfs)|O$iK!pK)Vv88!H?J&a)$3g>Fiw=Lm<3rkjx=V z!~i_5nxrWVniz-)e^a=SUDJz#<&TNcCJ1h<61 z&o;mP>4L|&Z9ds6iv#APzptQ#rc;)qRW9JYHeX}P~xws-hIuEHgWF6)iJ-r7$& zhFJ_OdAOHQ3z)^DlpjRn@UNV@5q*_%toaZgoYolM?SLxyr` z&fn>k`Vl0qE=j2Yx~S5L@0NsgA4RT3iA%!D$YaobN*JaBRl&a7bb&%(=;{^?uY9A` zY_&$KjhGEMHaxB?9E~~J`e@lyAMJ(%Z&!q3K&G)dMzq(bRi+7Z z3b6*nKE#%WiZO-MNT=xhl={dkTsfSQrgSB~;MwZ%8&8hJ2f_UDLC_tfjL2>r|M z;HI0y7fYH5;+iIV7!YZkizc#YGDk7(%Hvj%@$U(c5IQSPLX$bf`6~2s#jXTaNTG9@ zp6Utj5PgF*^C2xRqP@=($(NRWn{uu@GFP~d2`z6_Fke>!wztjkYy3RPvj|>o<0z4k1Yi&&8r#gd1XegnXA8_T@`1HArS+X=3J{;d zK-*i5vTpsNuEq0L_4I96vTS}2?G{kpW8YrNY32G^bc5!il}KbI`yz_16yz*6AkrQe zK}lRHg(D@E2i8#@m?Hk+RY~3r$RtET;l?zn57TqfXTNqVLB;9ZBnQWaqt+#q?iYmo?DD2iMTv0d`ugN3G97hhXjxgjX#tICF1jiMg)KtwfEViQ6 z)xyok2b}kH&}4|JXSnd463mg(3B_bh+Jqr+f@~3^E}; z5&YJoP;IO;YSBax#R9=ft zg9zOZ+ED?y#WKX3jwK^!QXH2-FUV!i=xC#r_0r@~-B>oh zoyh1K6^0|?u!PqV<6Is9LV?US$wEmW zYTFkkrkT)jp;F_ihK7pW*B4Q2$JzZTC>)JWthCx#sn6vbjp=RKCS#H-)3IkNbIld5 ze!f!;?d343e$u)8)lPgWRn>Tun}^UyOoaeaP1TG+<;JH@2r(&B{8NvJiEF1x7MHgD zcoM2pG=t(b>M83@yO!Tvb6~Aoj|OS(h$g<_HBf;Dt)iVASCCizzAUxWf$+sjdBT48VsoADd{|AZob+l9O*EUE5H>Do@1lV>SgM$y zwwj@`e_-ix--YS#L%+?XAqU1?R{ z;$*wEVA)dDKp-Ne1*P(a+a=G=;T4O4gj&t9$1AknUm6&23RSev1Q@w%`>b*DFT9 zC*IR#{2~hXj45~xcOyP7EylT*>82@7g}{UH3o!5vi#VUO(rN^;XuB!1!dSNJIU^LI zu7Lhx8Pc^5J8(+so4-JHCu-;5n%?IX>i4TU0cx{xf-q`g#@S>GAktf?og;33zSe|f zYgI^=Z9EFL$$So%U`51ek?JjgEpxR61CD7VXO)@UCNrV=(G~QTyl_)WxPvO1GT+Q- zEd*DGc}y);GfN|9*}qV3CcJC$Zx7iC7kEmIVXH_rHFuO7*jX_D*#V`|ubiSc#-!*z z%=UKece6M`PRwz0?}O>$XkIU53-cydvHW?Xl^va-%=z^7slnnSe^C& z-fhfc7m``xgq+=^G|CQuIHDK}6G|Z&Wn4_i$0us`LHf!mhG81xX0siDI>yextU60e zYA6*qvAREOb#w;QR6AC_T(*&lF$qVBvkP`dp?WmLVG@nMBSUK*H^Z zt;-SD!quSKWWMOZ^lTLtZzl{A@Ypm7N_^VX)4Nq#(`b$%4xti~VZJdyZI$y)tk~l8 z-`-Gmr0Ow^PJV8d4NSQJMM$QBJ`9E3j?-xQQs_7vlu9dMB02|`kFr?^J)wl_xg=y$>2Ntl4~ zyo(#N$XPVvINIRXf2`|HAl_&`o%gyFhgmrGXHc&4lUGJlSE`P4Hit*U{a7)yFt%(Y zQ(~T3PegK}FisJ9R*$n}fZY_6U8_){WOL?3vzS#5bt=BihQUb0Z=pFAbMf5kvMQy> zrlsnH)&akEGHmdLzx9hgE0hQnM{ke}e+rIaE)f{2=rLTgGScc*VSsGo)RDa=oN-V@V1wYmf?q63Gb%x{aTz}mmY*H6 z){W)?mp1<~Shg93oW+{0ds++v;+sR(Ia)6HI4qRG>_}dmqo%?Gnm_MF!}+ZxIa4&kQd=1OF4Oo2Qp{-m}O z%Ji|mR3tDqwjsJP#BTe;b^#;}+-!u+6~`X2kpzplNn+as*3{Leawcs{w6h>@fie^P zK$Qc3%~{_ATwBUG(a9?)Mf!};-!&N^`e?K^H0du=saEr?VYZMi?V=m z78hr^ahc!WkAZ*48+A(iTU)DfXYEstqtaO~gJXcHEh$nV2Vt+*61$idjUqbpt`GkV zGGvN~?Iyx$H>c!MC_pT6%vo80eJx2!$IvmPniWsR>$$k&hI!oD&5nUl>;j7Z7v)Fo zjn$7{-r0=D2UImoedI{9;77{3w`9`QlpRR3&#QTwbD3*IRK^LuI#iomDy*B3#|fr%2Hk-{Vc27-wLBZ!9P(9S29JM1rv$iSsd*=0PG` zuchWT8pzp$@$5PqN!g1#3RHo?SD>uBJ_aT8*4pdRVNG$jHL68=nK>#)G07o~=OSbK z#vz$2Vv5|ce16}poa0Py84IwmLHCPXF1{6WV1=cqdXM(65@BbYO}-;vup`8buh|e@ zWc)C6F%$^0H{3g4pJ#3_CdStaUMNx)pyUE<_MnIO?9yGQ%dUy?;y_2taU$%-T~;Jm zAx1akO=8?he3$MRbj-##>^(M6qPY4jAe6;uv9WzcE}%%9MN^7h({I^IkK;sZ^?plYzXjD|a@?iom<-i6C3? zM38DWCy(?`ii@>Fp>)y<&Vwl5%iD*65}f6fs|VAmP(1)z=#azPtpsdw>Uaia(ubzn z%;DMUd%73ETJGyw(Yw-ea+H565Mjt|EOOP9nAaUU8Ug zzRi=k5SXAl>{**Ru=W;=`4NuH(L>ry&&>yB)Of){Q77EsfP0Yk~O7JV|Dmyc1?Y1pr)o)o)U9L6rf=EPQ_f?h?sH7Em*ar6T>8L z5OlhMgX{zOZZ5d_!Rsu9f89Lze}GU-9iUoHldDydXox^Du_ep-oSo*|XG|48JW^|dkZSNF$aPcjpPbd5#~nVcFS2gA>pQ;9rx~0- zntd1?d`^GCu{VymBBJ<+x|@rOr(&p_8LS_mettj2Fj81{J`WqVZJv`<%Ab_(Wqold zz$bHMe{Q;###V+;=F0xuEY7*CsO53+gK#R6mLCWc(?nzoY+~x_c5w>qMt{<7$JtOu zV^unx^~^)j=ugdplE-=q1p{_K$Y9h|&s^PSek+~9VOIKMAW_`zO>jI>DwcRtO}^U^ zW#Ar#v;QzfB-K`qhy{uPsjz^}e8Nn9O}^jDf`Yrz$%h;~mZR9qfmhvP90=b{WPZ*r z06yp!r^J`tgpo&Ls`^CQ=Nkd4_aqU+KBaDRV<1O?03?l*m=#&6aDZFKN?E=R6NqTy;oAnXFp{nn4*jHp^5=6FxNtc*1oj9$ll}yd%;d zi<6C+#@joTTV+g+r~;As5@WCkM443uj6z~{&si3jyJ}$Au9a>EuuzH0n`cABq6^+M zHuw~ZbvZVeY6&Kq6@gJqKpPu^McBP$b$9O~g>K{vQ?(YQ+VWeM^>%6X#2Z7!R7weM z>6Qv(pY|8w+!i7Nr{u#KIt^!0^J)gv7RZi%mKKV!`jB>7rXy=rX^ShEOX>+zfkIjJB{lJ3}QCk3UVxd$u6^)JYQ^5#h%&jQG!}b>S z7aSlWBsXN73hn`gvodv|99+LcL*+WuTJ3@w;k~C||j8wf)^*XkZoh`M}&FrgE^|J9%K*Ze9<=hu2v8rmola zw^HeTs<_noZ_HKO4Gl}ZwiCr5tfG#A+a4%2gdUo#Viku0v}Mgm{j(bf#owoA2|Ho4 ze_7zGwC;LYaNYGWKvOYZ*A$%0ju6CSRruhzQj!%){< zUmu57dqov;B@|<{$D0h}Hia=8>TEPyPWe{=h8$wEYU)21=X4QZ0Sg0)iTe+k0!%?+ z*c&M2NulY{jhhJzZ`At?M?RQcD@|W1@I*~UC0MPPdeca(iOVYOV!#fL%WY~iDY{DI!&6+Ou{7G>}uV^8E0ix&2TFa46i(9}gD%xZV?B49gS%G;cD zN7xQvQ#Y&}~ovGSz6d?g1pi zw@=C|6C5*c^GDFyPsTbax*?eJ(`graEk4`v;A8x~1$ZPvvN}oU96MhcF*HF%(E25p z_0mpUD`vs9OGdcH8%GfiKuhBTJI_Z)rH{W16CdsjhV`JktOf&%CewnI9RCAY>rf1@ zUe1v~vTDv6s%va1rEEvQAZO8sS(XxJL}iLMaJbYgr=l1!v?Ku3o0{sV$o!1Wo4Z-2 zae!2B>}+GBaaZ6w_MA0)7LC&^pTpIvh}4%EY%M_$r^_Ocjx}3lgarO8@70<{r_r!0 zFR2PKqr6)Nzw)?61z{~-nwb^c<_Glha&FNRia;_R(K+-=_^ijY;Yz z$I56c7khE}>f(+0J7idrIa|ueC@&2xj;4Wd@k|wpLnH zNtiNbzetKDgU{D%ct&~GK*ocer>-Uwo^>z9J}3UaKmRZNgNq~C zT;Dur#GP}GT|YSNPJbH>@Tax8nV#@Rf2LZ{G%=BCZfb06ZEc3XiH1}|TXRdo`d2lO z;m-Xl`SX`Q`$Grt`JEYw#HZl-jh{*+Hvd2(@ug4m_d93t`!(>q5uTgi`B`{A56_>5 z=kLJtN8$OW@VpM5e*@1XJb!3*BJl}$Ho_Apa?xyl@4)lt;rSRmp=jb|c-{cdZ^82y z;Q8O-`IGSciP}U0QTQZ0e+i!L@LUehFTisywhzzi5r268J9y6c9JljncoyM#Gdz3X zc^00Fup>8e{jMAN_d$4i@ceUlcEEF4T_Uj*o;%@r3q1cLJaH-f5+J<C=P=w)03|Gh=k4$ufagAVZh+@MHgG@gNF@@T z@O%`W%i#I@DTedu#zf-R;5h`(54g~#vP@caqH2c9tXi63m`@&DOYo)4>)$G;7p$i|n$^ONvg z3(ucLdT8Z&-r36VpK4_|FSasWyaCUjf#(PCtbykri1*)vXB#~KNtADCV|rQy&tHUR zA3R|Q6S+2S|A=`1COm%`$El6!;}Se!=o3HOo=5=cB%0fK9M;40-{L&9GrhhD&(9%! zi{JmFo$2{kI=I|z9ZZKC#B&=wfwU6GJD6_21y3M}#Q*MKeCj&6UKcz+1JAoUdA@%g zp1%Umci;(Al=zcQ#`h=YGM=BE%k;WxE|25AbGhGp=JI$Snak_w>|BQX$MBp7&;JR} zW?Tn1B@!v*+cz;?J}aJ=ZsPXm%wu@jc|6af^LV@u!t>u?`FXtlUYf`A|Gp^qSMzv0 z|JOXGmrvfzc-(O_ANbpIZgsd(Og3%9=!p7Y_k_ZDvV4{zad|0{U@0n(8u|IvJ= zmkaZmPJV6y!@Y32au??UD;2jJO?d~YF-(=RXL-z|%Ho#qztx;V9n$M4NWOox9h%Kbza)62pxhTGr8 z_&?Oe^`3#}kHGUp7vuF>7t{CObTNKEznJOqy2XrtCp>ZUS+%w}kn{A@Tm$5+2XrUBdnQ+a*l5 zzi=zl!`xdL&Z=7(e(_eu_x@YCokQaHnOhm(uiwh;{I^?q{(q*M+iUD*c%ScPdS27b ze5zmk9_i-!9PQ@z_KNbabo2cFRyX7I7u`%3Gj3zNXWz!-e(P<#9&@+xy4Zdj<8|^j zrrVEhV|xCF+n6u>)a_zlx}EX+!tD&_i?{Q>Hhw$9J9#^|^R?S~z9(+yb@-_su6IKZ zX1xGojHy&fL7?L7?tksj{Xn?1~5{!l!Ba4FAg+fwfTolCi$%}W{Y`a;Af)mh-;xTg#aq{^N3< zm+vj-@%Y6r@OWPL1*U^LzrgJei09*9;PvvAFYx~OJ@LDJ1=HOs-zAZ?EQl z>|M?4;H#^7U;D4CdHz0qCx4%PC(q-CJ9+$e-O2pt=$(xJYj-ld|8OVwFR_N{!dk=h zwO|e7_r*0lU!!XnpGQQwm)0=cuZ!nju3>oJlW^{0xC`#$_0WG8!yUVe%RhY=?{jDG zV*dEuyI6ks=ewA`X02sO$oO5if$QJAf%~y;1CRgs z28Q$G2FC044Lr|ZgXgU%H*8>hy6)z7@41`lWB1)+zrUN|Ubvg-Wrof3(qQxZWj6P3 z*yeiUHqXy1HjnRRo9X;h{Y;NF{X7mm{Y)q8`gz@M?&ta1+0XcX)X#MAXZ<`r|FfUR z;rcZ5rMYPyhnv&9o?Y?#S@HXu;&&p$a8en;?=wu_U(E3Lof&Tb-3-&yH$=HV&+xch z&M?3HNr%gKIy?>=9Uk{59sd5d!*qAiVLJVV0dA*mfZJa^z~jDofcg080j_s(fce8G z2Km`M$m6zpP|U+1*L!o2=i~1Oc^p4E#N$7Ii1FSq#QY&Y#CYu(Vtij5;`YBY#P$Ah zi22^9vpi30v&_d2iQj*e<$nCsJ&fNi_wc+7-^28B{2rEP|KT3)U(H6Q!{r+p|D79o z{9h68|6(Ka*PqWZ{VmP${M$KRXZOPMzrY#x*K^EYhVv{ZJ(6emU(GW;d^gYa{*5c- z6qn~=uFLE49+&I?n#=e<=kj=b+vRokUtFf|Ul?I{Z6nP0dPlfFYeu-g504N_OS}iq zn-K4NncuItmwz9)m*v_&g6B){{I>;=wXr-rSK|50Ba%xDczj;`J$R0xJX_>?uNL|J zcZ+-uTn2~4ZOETWe2%Q{4AA^ZE6dz9-9-^ca-LOhed%ID|%f0g0<br-MSIlH-k^L7h)emBdnqq}*2x9;X~ zIVLeCR9{&E!9$tTcvxnRN>AgZe+{^PZu$TM4M?7EO%k%u5y^PPN zA7(z~Jk0N(eVE@*KFsT)ejoGE(S5w$UlY%Xed64_A7~lR&HH&?UfIud^SAK)TcoE) z7|&mNl<9umqujrD9_4oa_)+G!pMH#g_ddqI4?f1_e)}<=rwfnqzWk}jVJ|{{|2XeA z4?WKO?y<+Y-ucIQT)+D`>#MFmz`4{HeoC zw@VK*U)^z->GIjbyiU#^=Jx*fFz;VK`y{X1Tb|_hmp{q<-t;8HdG1N3lfQV9*Y%G- z#rx%TPx1Jzev0X1zxe&9PjR`QJ;L-e`w0JDb%f`8;}LH6dGY+_5ndnve1z9m1iI{pL~Yfx&0a5f5xBT`G4sd)-(Lq zXT(1BEYr_D&+>XaEuMe!EaUY9N4Z|ZQKri+N0|;@Ju2knqdflKJIedWC!XW+TKOFJ z`_Z;W%hv7K`&zr}Yul(t89>*I_Fy42< z^KO)LPH_Lfe?sVCUlx4-Wrn-sWgf@(U*>i3-Itj!%s9#8v-%{%%betXyl|4&;a|aX zJ+7Nmylx&n#qIpbDWL~E#eAs!73PoIUg2@t^$PEQ&%eU^*GI4LJ~LdMQ*m!$qk6ovK*2lO%-76Yz`{s}CMGY;yI{dN$PwkAZ zU8shC@84S)Sp|Ea%y%0D?&t&s{WIP-Ju)U9Wi7o0-`2D%Ru+1P-WU5EnerU_hHk$f z;46A?_l`Z@cFlSTeNq8Kk&X`mcQ1}C{Oo;Wp9%wGkAAQ88L_tZH~2S^ zF9<7_Yo1yR?|(dhEVBWbg^_zF&Vbz>zC`@nA89jy;4%2NcjEn+v2Wq%ZSy5N0V8T} z{+(_jzHj02iT?hpaqsl=p>XuQ9TBULoRCTI;yq}>_yg48^d7O3a1Ri44_NiCfPLp% z*=v974KNT``20{j^$vVDJk>5Z|4drn9wB7u`yPwb`z{nX27J8?41H8k74!s#zWl^F z6fj5l@uNdc{G@oCyK;2t`MFt`;2oHHyiXjMy6n29{qX&#i8YUEc<|i+hJN#MteGXK zMdUO` zcwzr5`~AwkTRHH}E?`*qNgvP;(BP+56x~JZ1FDpKv_8 zluP6tm_JDf{IUDO|EOAh8XH@C1#dk&cSi<(?9r!t#&7TUdnYdb12dOTXSWYN?_0Ml zd4_NN2As74iGhRw{(=|5PyS-TkBCLWfKb3g-`>9a9RlCV#uulTf5V%9LE~v);r-|M z?PK?=?maFesMFp@x}Xt{_8p{L;nCp>YvAC~M`qyQX?E^c(gJ7YSJK4o%AQ#-M_}sd z?WZG)0PDcmi#Kim*!yC~z}T(ei=h9bqUr~7W38fp?)mk+BdbB8f9_1* zr@et?;G2EHLh0QA*FGzV#z$Wizg=HE=OE8- zXm7@gTg$so%7?1c{k;LsP=H$@h;4B1d!(oD!7Zzl<>C84?vTqlp$Y%%`;RS9G%eE^ zF*5MmIRx-d82jK0UWaHQcAN2ya{_h$Md0sP{d2oxa*Kx?(Ak2q|cz}2GG5oI2nzhbV z@^u6Dct?NtrL2s|IMpgeSOT|v<-HTAq%rufw(Z+6X&`Ek%GMs~HkMVZLPWqvv&s;) zbNs&F6r%9m8Qz~*?Js2-hu!^c>fsCR;ftLYL+((U2j?yUQ{AVK%B_8fSpS(5e3F3T4*qXGYL_Dr?s5&o)Sh^FYw4{o!`t_`f(F?E81~ zdp*j63Fq15OxRb%0|Br-j@aA4hd-2l?*2jC{JppWi zAb8+j$UtDaQNc$W)#LUdfRt4Wv*Zh42>q9ks^<^P9^zrP8N`f4XFuh=0|X%03e|hq zoi(e{Ph@a|BXqr2v9O9V+|zM*?;F;etiku#p4E%7I{38bu7ltl{Hq~yKoBU9cmI}g zWUu`0g&)|KKX(4f@&InvH5wu9*@F7}iz3Y%{)=O1Z(s-zdW!tY8`6#B^#w^6>Kbb4 zq$lWw8FGrSBzWvkb?YZPNIUedIo9!$|9uPfrxg};=3I03vvKVr$_xfIj%XmZ}E({y6bas?&VqkzBSQy;X zO`;@4%pPJn^3Eev4n*ChhsDdo?mgWh@8^eDP`Vl=`r^`-%%J$Q$zgeSvLv zxeT$8xPN=;)gbyOyy{UDrWX>`&mbxA;qJO8e1`$XpNjA3Sin7-0)h zc&n7b2lpKS^%a2oWq@ICC>VN@)-!fH;&(FfUSKtXF`#_&4%homaFfoe#qfr-u=w-R zxFu2QUc@&WFs649108dQSTru-GV(bF9|w-G;S1iya1}=$->Ecbjl5A7=&05MOdw_k z+9;AH=8d>fzwIIeZzn#L2fbK^SctCWSvLe^zMymS4zq12r$Y}pr_-tmzuc=jfWCGi z0|QY3=|S<9(rLGjm;>J(P01sIyaxa=s4pF_m)gVkMih|y1Oe8uiJFqL=$7;y^5zYa z2N)0LJ`DC?VSB!>NGMpvie+p#^WTa6;AeD`;3X$WJiXpXcz?Iv9^U!7VM7v>U2`|pq|j53S(?phVfOp?Ia(u5U^QWGIagVf;E zLEW&-U|_SN^5ZSAp=i!(o#}tCR0R0J#NQU#{LB7}e6T1pri}3*OI&fD#c9HVYn)6` zu1nL z-R!8Sj18)Hb7?B!62}V=kqY+br6|A0113v!wk$d~lc*b3j#mD`og!mEHC$ZtPmEBy zuY$l;!#7Q1?&33}%U*V@fEGiuL*~Q2-O3})ikuNs*?h%vrM2<;3T?rWkYio0dkytB zfB!oBVYk?rKFUKv1wiLB9~^c8zy7h-w*+ReP63SRjiE%AW*@O-KyRZts545i)r7;0 zy0I;E!egL)oTlugGHcYpWV$jwt~F?D#7{1_u5L+XeK`w z?@~klnmHRZ1%#m!+pXzFf2G@Q0{?T;>|XHQJv>QYR;4XP5dfdP$a{1MwE<9`z8Jf9 z*QR~faC>1G8pkuTe0-&x<8tBD+dM=+$-aNABh@VN>V>P+o#4$?Je9$Qyl=#D9l``{ zbN&r0ggs!)tiZnk!&Lb+UdG9jH}jX1f*C1067-t8&C7-3@8+)vYCqip)t#$BxtL)& zA-)GVC9e&ljjBj_^4a2JByI;lgP~ND2XGhidxudwBiLAcebvz~i5>b}&1i>YEp73` z<2&x?VCHl!jI$JK2;*{~)+J|&lu!o1%E$w4Hz_)j#LYgl@5W@2hHh++Z+Fw%Ut-)X zye!JV)BHJUJg@KYYwvPn$i0MFLrg}MS4iVeJUW=Jl)5tTysL_I0 zd%I%t zgKBq8>#xhxL(}>_3>sUw=NC?P<}?@^fqSH&l}_Kl1{U?BywMGWSutYj-jc@$$ z?Vl0tRBxMnV~5}Ws%PiSqE6X>8; z!si1)MQEPRaL4JcQQNE>QMDjz7Key;fW2#ny)5fWw~*w3w@~6p#H5}t98-Xi>d~A2 z&}I6}%xZdqv*qK}g+V&vq0lFalVp%dbO12jrNGO$2W#tovDVY{d+e{{SZ{*PPp%0a~;=O{W5>?8l;B+RmTJz5ZxNglQO@HSj# zl#zOS|6QB~ACH961$?MU31xNDzr&-kZGQl;7NRa|Q|*_O2L_SEYGm;WT0XnBVgR_M zzT}9}O2)}!uf}?0kKN9q*&zjAe_^;RUF4SS!Ej%=yn|xdlczl+4xQT& zI&UR~|9}0@Y<|(C^exReq+?6@2k$A)M(Xxw?VU?4aTnJ;VD06KJ};D+3`-Y2!AdE% zim`RTlX)zlOyx9=wD7lUq9Hrq&t4-3l_&2IdPnZGD4SrE?$sWvBe$B&DeTUGY91SF z3mgwSkg5!cK_Z8a#Q^IigoRfc^5A2|gsAQH+5MJbphvlfiWtGwrQ^5Rv{rjVZi}O? zq7p%B08v9V%ahmUf+vBT{+kS5PhRNq>gaD@sjgn!raNsu3Z^23%yV$g?i!%}YKi9b z>dKvjo3HG(7Cj;pk153J7Y&K_7BR{aJ1`bbSfYpph(5&v#3=t$qb}H;9ktZh-TJ*k zTFRl@s=PwoJxIWOI=`xe_D)dt8xI1TibpqSxPkVhRac^ZAz-b$VUM9A zl4BpCB^bup9@zqvXZ<#073(i*+vV?C$C`#?*09khu^@7{N@Bli5X%^6-D-+fBm}{d z@4sTaUj~STpDJIWj|30i?Lnxrjy*~5Eet~`)uMh}tp7-Y+lF@F1sUdfgvtUWWR_Vh zJ~%$@h+O^b@&3Avz~hHOU{JNM9=ES*dr+t%;dJXn>>O?6PLoo|X59^Eousj9UOwo} z(EbZ$(@7(qtg2(>Q^7k~D%%sDx8j3dtgVxxJ#-;Vk*=kfg9iv}krcnk+JFQf#c zH^+nLK@oAYQ?EbHUJS@3vN-k1N}NH&QZl zw0=9`vkXroF%nz?n9~2x7ma`d-nS$Z8yCP z4}^nFtVZ24TD#)VdAmj+z4%jZ!~BUi?*N?k$;xxeO%Df}SbpR~Y0)1sM4`NfJBN8q zA8i}M#>1+NcxbtVKNLuRp~DxbuDBOLKJ)h_Y1Cxo0H5qOWW?J}|9dsPN?=I8B!o$X z*1MBzRd61I3!NlTX0@?k?+;|&B<4$%Cd-S_tmQQfIdZBVn{(=7`c57a_D^?*lIg89 zcUQNPv#@5-d~kBgq3n*>HcV6Eeumh!4ZWgNp==uA>Ti!yyOfY8xGeuVHxZuTRTuz69{^&8pre4g2>iZ&mjoRJi( z%P_S49piO$>)e}T#vD8e5urmC$84Uo3K`0VR#n^0jvmXwqdQppS?38`3lo=&4&`kl zmXc2|H?ye8Rb_o{OXjSKozQg$B@S4JqiJ4H^3_&=e;OeT;XQOHYmX+CP#@@agr#^O zWH}>+OQZa5XaCT#@6Q&~n3k#mc5j0&X| z?*!dgc?%KZ5L={(VvcN!g9J$SqkKyR@;5vm5o=8Y`mTv0h z#LcP&u_|WoBTEV&{ny6jL1IXi2u8aAOS<6GajF5z=3klyLjd(r0FfOx*{w==MGA22 zJJ(6!v=S_rK4Z}CDFQ)|x5Y?*VA zG=*+&EL|8u-C~G~b(v)UeS@sLt3j$8v1HL-$PpE5(6su91F~A@SZjQz zcpoZ)gl;shdh6htDg(F~y{SZ{G{{31DX>ok4gP|h)B2a~s#LsckJy$DSBE)O3dF`P*rejxUW`9jr zZ!WEA`?Vc;7o{}1K|8&1>PuDIx`s48=i*{bHtbm7+m|Vz%J)ZCq;d}rAE@EVI7tW3 ziaPE$1#QUMucaD-D0xM<=nTRQagzsHP6A`%BX9(!GI=MZtn~nT4q3*xzo8X+tB)FR zF(MWytxo8u;f{VxA*6#lt#TM`pCeCvZ^B?7I|@TLazvzTz*}rlELKycO%UQ98=GJ| z3=u8F?jVHqdZp`Ky&mmX(UZbd6xNyMd1s`+w>N(m{A(rV`!AqYp9zdd?C>JRU8)!@ zGmunSJtIL3hl8lZ@2fmZojmMKU9$jM_iyqW9?+Gd-X2fg-))C|`2 z^Caug-ck_=S7>tyn(Zt)jFZT-I`8B@#|W{tM$vEVaZ)zB&`>dr!>Zp&SX8`3Zs{m5 z?na&Q?|Zeg*Jt3Pn)-N$s2Cu4l+_PO8V8K9NI})wBb(al-}vNFlu=XSD`R--8P2VOT9OIG*CEd$u*uT-3b^q&yz zzRRRyFjnkp3z0DCarcY(YLYp4Yu=>C&nggZsU-P4=HWanx}n#9Dqf(v(7>VAIH7!w znNiw7RHwQ!vTR7&z>u!~epDa>mBRpujRz~7=jTJMM+k`{5 zo(0wD$dutzlcrwDU|f|%G>piGDR$Te##`j&xB2ljTUG%cP@##qRLg{rM2r`2nZ+(=2Yax>I01 zBk07!k|vPMkgXL>l{}|OtV)%f7N^!pT%}b`Hp1cKMj#~Q941N}m%YqgH4q8f0FoXDu(j*-uF_ky;8ih$ z=R&yLJG}5I52!OxS2s2?skDxkx`*UdsXWU^tCp(X?unV5P_7_iI6FQ~83T9dGh<_5 zTNRG4bCVK@WD|!i+JzN|jdT;;5JocVXqqhA2?el+?hcbA*>t z&Dm*~2C7F8de5Y0gUi&M`S4t7xDYH~7R)P3{VO_T;1RmgS%dsEHejmqV>i9U1lSqT zD`7}dula)Z(9R|(w7%X$;^x{dys5pR_Kv*X?KzjZ7rZ!@Ej+wkXsn17m}wAwW`*0< z;ptnfnT)axP8`Y1Dk%QPJoV!d2s}jgw{lw4=SCRe((kakz*a0iU1-B1r1G7u?yJGLG; zLC`LBS5pO%KoFH8P~J8>4wZ%?kldnyVhPPY&zAp@?Fnh9yuh_!Fxzf3+dG5Gr|UpF z1&W;?1{np1t_>il9tm~XU}0)E!@MhiOIGp?Z0CAZz-d&F-GQQllDRcD)~@>}tplW=^;depY#E;QVVbD4XIdjR__$Izs#!-#O7M{Yfj6SCkZ8#JVz0-v8j`22TxqZ!t; z(w{JEDzb3kY5Wnho!`ay1Akz4bnTCl#lw`S<}RHB}sNO&cSBz~L}f+^H#B4R57J_RSKl zNY=*Ja``9X)Qb=bq8{IX@8O0p81M5{_&sw-U{J;qbs5T8;x1mhyRqF%_rD)DFhg8nPt!Hm^37{**jIo~Q=-8Kki-G8 zUU&&NR;FZQTz(JJv&I;Z@YEd8^AhY4W%DBwb6m9EsA(ld;#J;8_>Ax287}I3uwH^8 z79k>LBN|&21fs^?(dsHR^PAdwPCX=INH(wQdGKkK{2~5PPbG7~;%FqIL4dX0!}%#g z|I1oTVr<6l zCspsimqjGVj6Kj6^R{Dzn?2Dq%<(eAWOF`mf*6q7A;wbMyj4X-#Oa=INrbu12}MF4 zrG@lV#M|R~; zro0~j8dMT#2NK>n)8<$IGdrR=Y34)31#3P*_%fdsx zX6w^n+AKGYs1pf>oBfE~8ey0Q?ses|iTxb+9~^~}5SQUquTLkaih5sn?8h#Md3jz= zkeuB5#+k=(Rd|vKAJSHzBQvMQ#`g7S;nFeE3rkLYlC}4FEv7_#8PC6wX;E{iH;kq4 zx;}_Mj=*z%qmrTZEzAT{umNdN7@^*UM0*;BD7X1&|JVzUBft)4h!PD1?%ziHSzVJ= z%Iv(;He#tj94S0{-B0cUh_^IhF2q!xZ=gK4NIff#+5o^*L{*tVDwGO>zJMv^QJ9&K)Uf;7sHpGBmGy`+ z1y>qXfX`tuWTPD~GJgRMcrD9PiO5j};`*_wBhX78pJWJqDj{7_bEa~^c=}V7R`?Q5wNW#;qvvhGs2U|GgS`#We|I#`OU?*?O*+3~eVNy?&$C=mO+?)xaY z^w4QxDV}dnWMRTl2}s&KI=4F2i>J!&)V(r>Ko2#BZ<4~IE#>3z*#TR`IUAxddmuW# zMHz$OG%yEIH;#djjTK>OoVfxriafq1w%m~yu@`rQLyAQ?~)sQHn5lshyYo2?L~IDiZRE= zxIVx0dsNJY>%QJ=&|hF~6)_}b?)L|g)nFUa^a~_6eTh@>*Ju+MF>oW^IOVK1Mh#YK z4dpg!3^`%>ou7i4`04@S^ zbGlAYc->aP$iCrC{?JRu5B7j>?i<2K?j5Eu11cibr9g3g2(iZtR8&cYNfoX?5h|8s zN)-K>QZ(iN)ciNO7MJ$39|!p;uyvUC=e4Bue=gh zod%5(Vvj2LI2KiSk=2WB)Vd-iwGaXx3}V~TZl!loDVQqGWg!W>UccUdOo^(JOOtdf zz4}{#`OySSO3!|UBsPk$e_~cFGkhmQ%ROzke02%6dO@kY&x%(*94$cQW+E=RcD8Sa zS;&zAqe5KkShIB`JJjNAwLtYNChq(Wuats6-&VrTLfnbGC!YmR+?D%8=}A_hrfVWm zBQe?=zrMIUHW$1m=xX3a{9*-yF3-)WWf+mueV_hAWK^X_YH|uN-tP18FxmC_b{m=E zl7}lsE=*e1R@n0D;J2<6kH4aRw5K`!4U$rZK@M^@THPzVrZdhuOL>O=WYG0U`* z*6`6S&Cmuzz#XwPbR*5J5Yr$o8Fn#!r)M(pGD94Hyi~6z(t;0MG3w|zex~A;(v58p zvH~72fzSPxz)}3X5?WhgHn3Zeaf4YWHVD^XYC4v~L#8kpN3xTj8Ru$Op|{atHRB3D ztV?|u_KjVr-mgH$lx@fk;|<@`n^U1Dd!1tk#6Pntp+nlMpskk5I2p3>u9lw zqLmL59Zvr0UDo)Eet+AztLOQN=h!dSFBmsfQ$n0@A)4|gc=-kE&$%_w05lFm0V++Z z5BbsN&}g(6k|e_ye6`U~ewCi1y{4QYC=>r@^&RR70tgtQxMJ9M3J<){Ie!`_1@PCn zYw4dXr6PuynVnl;m)%orbU0UnYn_Xtcxe%=#l`}o# z`dVd~S-FxR_=9NmM{ytOse!1qRvpSdNKav|*S9j&h;m(%doj7JlL1qgq5X z=I#vN`-fk(-B^%FesW^XhjhE*k)Ti!s|*^bO;MPQc)PmhSi<5y{6dyqK;n{id;|Sq zrtDvQs9<-g*OZL>Up&qz80sF$I!9OOkj8@@)GOXtrmzYH{7lXPoYjAe=Z!V;4K{cn za)F#uV+jTP0i*A2#CVqGaQi5nFEJG|+@#^|sGW#q0!MQ-)^Bi(ZqoCVr9rrYtn7<( zg-a!9Z!phJWy7|6d`J7QSG8L(s()H(*zszJx>`zPKa~oCNonY0ml*byX0nwh08Ip3 z$qU}7iGDvr*c9!{@uAuk^|l}dlgi8CpJzn0siMM_mzBv?s4TCcM(6tIyuKy^q3S>E zFYREW5Izp?J9T6|<`C9piaSgAabxY<>7j`VrCAoyzW)1E;LpK@jIN^N9t{zNHm1^?5v$mW!} zckgKglg;hzg~!dZ>$^C|8kOaEEfR`S7{XAn4HM2LmV}Wgce6p5B8nQYAx8#c2t`c) zyPr!~Uu+|;^*3yF=dpFb;qOls4!?ztCwaL%LGSaW^^nEfEqx$7n8bc&z%VGWbhCk5 zlE$O-(V(pIYdtO`m$EBVEHK>Y=;RBOtS>BNCZ zT@2NGm=C%&ad;hmh!D0(L!x7i%03YXh}Mvq(RfF!*Lv_Q%D(yRXwB=ZGm4}@jXwV>W6U8{w(d`WeP{e$KJoqJnVbJ@?Bpza?(Jb)hX|+De{J>K)J#C}SeCV4 zcynwE%Vxiv(FJQ@;8m{ap`Rb&6U&k!=LsWXST_viXvZ1ZhIhQmCJM%`7Q?DkEVkRN zVZuAqIz3D*rXZ(hKu$3{ayiatbWZEE^hU;8Chz4196UtVkCrRqIFbjU8Akr0gvjY0 zAU1r`EcIS*Ch<-1Fau-wH#(A;&_@dn1RAIYzd%74V8AatO2taE`Vc$nRA*z;)GwUk zBM$U-(bM~RJi6T&n~E&*C%nV{NThi50y@xk<#ilQvzY<@jR$ND1uGHY#B!vLR-yQt ze&mI1INaT)!-vWA@iJ;$mHX^m?_qh~GpV=izUPT}(-rzFUV_@KXdRuKC5JJ;FoBpl zg5+(y+A!3auCm)U>j7>e&X0W+U3pOf`!nh<*>Z)6Uc4QWS!;I^cWk0^A0g#k%C@9bNudri+|r!y9+`4lhKu_~(NJglk*S`eWKXl!#I=H4IsmYk@g zRw#>GTQfqu40(|bq5Mf_wm_r=C%Jk+COISRa)jEiqP>ya>0mM3v$xUo%H3Q)&+l}~ zM7cbHTqtOv2aZiCBHpIhqoaOMxB`kwgZ%ix3JuH+DI|99=k!uU`Q9GKhku^NS!*(+P&2HbR0zl_ zF{O#DwuG;G3yB`H>5KM9q>WS@)48IdA>8x`g4PvP!+UT$cvZ~D z1XxG{2}wE+95f=Eo@Bw2u%5-^vof9Q_j16*~cA?02v4j)rf5pJ=>peI&zH&FMnuFAbv3M@oL zE-8$9C3qS6uRkY2$L0V8>>ztpJ~{;2haQ4@V;Z6jwym;zB@yq;b88&SF0%<_M zpSNUa5tR%(E47}_?EruC5k0YLRMbhGe78g~2Xg5yTOLBX5SXjgq9HN+EH)VZj*^E} zPE&NgFXhWMq6tY6=qXn`&BgX6;%X*}8VO^EDp*K3)hz6sNNV2O0(9|%7?nkW@=SH; z5`$>1mB+)RbZ_-~96g9Ws!n0Pmmz%KP;eVfwH=8r=#&mbBQ=qw3CdtH*KjvRmC(1_ z`L%wku3_2!qd2eu9$ef3Fg@3Sp)LP1oc;?-`5WRB#hA>7QF!PuH*Y}ctSG9WVpL*SfwQAu*96{+^C_QrefNemGY{v!;F%Q7 z`fhAz9_&Ts^x(85p_dJ*h7`!7e%Ggtrujrmj~XE#`_e<#ORY!X-moQEwoUd* zex*No5Ka?YT~y3VN=yvw7*h>W=zXiu4WccBBOn>6?q8;@vnPpC{HXXf7S0-1aUTyH+|TG16^W?ZDW}k;=C5T$ON}@oaVK_76d_Y|A2&rNzA-=(cxsQ zQQkc{$@*xdoad+|+tU7rYUZwA_3Xc}S-ZjD;zeOOS+BwVtD#FQ2;_~j{DO^pwmWVi zMqRwKSkXN7D~P<3?aA5^VNo_;^1*xo1#4R zWTYxBwTVqq3jyzEp|b|Qn+)GX5I@LiRJ>&6bf=O{Y`;{-Yc|Fm6H^rSq+fTBVPmm$ z%duy2L3a&^lL_Byqx7YIcs+(bm$XhQ zL#OK+*oUbz4{n}DbZJ5<`c_CGz1?qNE!LWgkg4S7HlN5S3SP(jcq>&;KDU$VQ^rEC zkdaKPPIdj^oIeaCDuWIF=Xa3(Xpr%1$_CIpjQFKRF+FLGJ%Wx(PgIiTq&%9I9F8>@ z(Zou?VJJ}41eOMf@X=Cs8W`6KfaR}ITf)WXk^<;MIxg)J7~LBKQPlolr%$2`iI3@( zg~XzHrp5W5ib>F=AV)C5R(U*Nt9YtWX5o$bC7iw|lzgnyV0bMnydefw+*~3TG=a#& z5s~B8!y3Yb5lSow@h8=AmUfA79<~CM;F~KkXd7elfE5&*9y#yP z#+-2Py=Tdzf?DFuyP<@ONTd=S_6LJvY623Nqk$4$DG48-k?{6>ti zgSCcPym_NP$cLR&dfs9)PzvwEP^F`W-|(&Z#)O@ojkv_!J5ZfUZk#_5Ng7lsbdWD% zL))GeE(pjIp&~JL9NcZ>3Ra5mTzeCqQXr-hE938UXWR_(F zwy{;=I8}~s(oDWZXbP+HNV?E9q3OcOZ4L=VmI<3G1db$S5x<^;T7aCBewvC177edt zPtoR>=OigzWNIn3y`ly|{b<={QR=kh_8a!d@e<(vBQ1{Y8e--{7iO|X}MTtbT& zTe1Spg_q%{yE6xhaq7{WYv@L=j%QCVw+>mkbOk@x<{5TiMVV`4v$01sAE1`VCOljr zqOb&XbKm7k=lXzWxRx*Sg%^sc^^4jKPF?+5Mx3y`!0@n4YfC}88gsf8^<9$8!McF; zaK3AzfzTOs<+~F2tBr$m1@-G}LE?2~C*}Wm1(B=)aY}q;3%Ie0zCz>_7LC5B@ru>_Ar!A?vl=6S) zE3S*?3&=4@Zj)5BESS&?e4+d`JxZGh7#2o`0#~Iv;yv^r_3$Ar3Ngai)NTZ8Tr-NO zD7IT_cfbh`v~a+_X`EoI%+3FL<0H4MAsuZ>c&l`roOdkKlkEFL>v-K??|bey`(|be z!a~(;roG2vTYbIccv&IbafYy$;{4X?(Z5UoYLuIDH(+tGw#p)5e61GqwI}!OSpMy~ z|BZ`#_8kx8@t4V>v*o|OdeQLj?tT%MI(Kg>Rs9e;nr=UB!<0PDQtg%;6%A2SOHIvtQncFVQpeIpNgALOYfamU)(mhwz?%dHZY^(=eY!KkTD^8SpO z?s80M^WEV@R>!lp-v48*XTB}fPaBOyhK-P$VkK^Qjv&{1iAO`n6sF;f3+%)M;qnr$&-MhBmhKOHQv<73;U zpgFIDbN;TDc!TV>HM7r}K3j`C+n~-}Y;sX5N|Sd~X{Cmv8N01vkKi;MpgF1SKe5}(U0o(4X#nmXxyjZMs zPizD1uxLP<3&3aXO3wq!4Bl-(+0s6yfcJmJ_Wp1*?Lfy1@j8_0i;m2HtnJx6CK9bV z3^Adsx?m>| zu_8LUlU$jvC+7XiD;mpxKVxj7;E{`eS!^Zcv*8(qdK`+3PYBr~YGIjIOItkt%BNY0 zIp$yny92OFeDsE*1{4ZYW z*Ep%VK#!37tG;;z2x^Ud^>kH)D!Lr}R1GSA)}pO-_VSYkb8-X+PlHE$1qb6&hHh@9 z!0T^>*5Y43Vj|y2yQX#cAP%w1U*&Cu`0)a*C0BXwFf!wLVh~aCJfjxS%!a_JLIJY~ ziJb+R*9(7J#Ep!Q(WcEfV}|V=?+$zz@cdx@;q<^)a>sz2G2Jv7likC`$MK*t8R)Cz zC5*~l(73e64SI}R?t~S=-NnmdE773yA(^<8Vyut&ca0zMr~Wo>7|U1yC8{e`krV$q zg2HgPk#)_}n|;+~X{Mf02Dcof<^r%G1pcQkam~&$HI*^r>SuyQPODt-+zE0m1t4im zW9AP#aU?<(0@)KD0d=u-TngK!3BqpK*wVQ=Y`~pDID&ogCy9p>So$lDO%=j)S_9V}2YYv*7*rhp6_hQ|kru!~&#+W`Ppr)AQ z4OuQ4I`X}2`E%lA8dG?ntGNEKnL!qAe#%Vw7R7ZuSLXPI3Z*(NyCCw9yaZV9n~(iM zz6uhwyC4cw8)ti#rv~g_<*3O|2WP6BU(g;9{GX~)2b}QOr6n62oO-bB0ke-Z%Jm$S z>SzlXqy^|rEq4gMouj(EQ1s_|Q!6*}4a6zFU}Fguh6n~)G=nbS04N0P>4JJN5RO%c zc;v}CfmuGown#}jOb;ZZPH4YPR-5=`+77%tF(>`VR3EAUQPHlD)=qnG|(jDX%rWe4%P%uC9-aV&`6r}e#gnf zUYiefZ)!gQWDPmAIiKz*dHnXn5M{5r1=dx)_q&%>^qBG2wsJd>ay6mWi ztrBoh*on1R7!}!heV0~OTbSCaOHONOIh8WCY(-XfXoD!*e)XAkO$ap^5b`j2eFm>N zqddporE1F}HRUY4CfwRo9+C50TK!(9-madc*#M?d?c!2514qs@+tQFWE)U1>f|VX} z(i@$O-luCyhik&5B|O-=aYMNgH3eogHPL36Pw3#N<>oSF;hS?F8=7c}QFU8rxrG;s ze5SAQ!s}H}IBZ;*O_34u*_JrmJ)LK+d zxw4c-!|H(&3e?7#DVL4e1YMo{UdPFhei2R`0yw3tCQewaH8(W%4A&+!R9S1WZ>$sG z5z|S7b&COdtIGJKr3d`KDu*50QGIo)~qwG1-ZYt+WS+gsh<6fouWx z7&wQNhUuj1$`BQ@nsV;FhL9F9=ol|ADxzc!mpsyF3{tKiG*$;$vq4c;PG_7JGwO}0 zDo2vTX-sW2s|mpogH~f0Efzhm4zI@P!V5&4_TVZopUeX;1vruz#!PzQM=`r*=l?j= zI!vgU#;t1H8m9@jRx?|u)_X}(y*4(|)*3%CzA>w0rCxYy;v&GsG-kHR zP(zRe4d`!8;F=pc;&Bi5_8b{R6-dpYH&Io5JagMEW=EQA-YX3ZWZ~Ed`wr|!Xn6|4 zpFe&U#!kZx$rp(9%eSi!vlfG9Q-|5e0q^P^L!fVX zo)*`NaT8svLZ`K#bI}t|ZKgsRy}0(;%k>K8H9K4y4&=483-iq@g{(~^UMeEjmeee4%*4|VJvt&|wv7tQ$tYddG-ZjV(t%xYsM=m3S z^HA!W*qFO9c(zv@!SuD^$@Q-h&$fmZ{Y86Qdo@!}cN7K3n;OP)cRAy4=_x;b0n?=! z$);HCM=4)`gV4G7SMKS z$S!%Buh{i7um6|M4S-FmDksrJkX=lD>~ZZ(Bo%Cce@w1e1N0d4W&BQQxHOyXNRloC zK(pS$&E+UCh8My~LHW6-FP$8Ve3tN~2{M@>nn%RlNV*2}@Xd!zmVNVCmCB}?0#+qJ z1)Y|*is-PzVp4`*xEj=^lxsEyQ?u`PuUiR0v;vsTvR~SVchipucsUdNdnTz7cuc2J? z(!R(a4jE#=85Uu_G}NXg-BB!}#@Sqns03$HKYv*it+MIPVj68TN4!|!V3Z&npkQD! zC30DnZbV2?_)W77iVzfS6dy;fKf02Q>r`9A)pyEYH03+?F=tsfnS8Dg$tKBksv zD;A6PGFVhOfKx~_7K28+S@0Hj<ryv5L@N*@A4C|_w;6`ue*4hi!ykb;-RZ3q}y zcXv3Eavc0-qXe>wG=6D!7#JA4^o>TTI@0_#qydXVuf@o;mWQXF3;_cCq`}+0B{-uE zjH1_3*%|xzk|W3U%gjP}S|fyw_}{U7e&4OpA(yWO-p7r2n+PHfvG$gV;uMcGZDh_C zu^4@S7kv>v@$jW%@5&1>lb6~QMX2`n)~TRpcFC#W6LZzb#hlcu+ZV2VpS#L*x#f1c zj;0uqwJ5~WIFWQ}f@Uh!T!zc(VkR{ZBMr;N8+W28yCC9`GYgm;ur8oF1GB77Xs?j` zHXg0EnB&AXoF5_whOoi0ip@Q4Kb{f-hw_E&SCuAf0Q8^nugG!jh400U`PX8jPH|%` zErCP+?6g~OU?mNYgd!=SyU6(SWD|Z?$=i#QTpI=07623;pc=4AYcYfAZ*>IjU= zZt7>hj++CZH-%g}ZjL}}k5T!p^}9oAMZ<0shm zQ`W2Wd+G6KQLu{1$*olhwcDspS4XNO~Dyyp#x5(C$Ir$l5tm7nWM-wPS&77`r5r{%*Q<<>qHLQ6gj!px zF}wL#Ep7xR=D-5wG4U;=YBIG`#|qf5z{;S(lpu91fmWN!x&(*j4pGFAOX(pyn-9sr z*O;Q-fLzM#_qoD>LG;K7eWSzLB5kef%9@zPjUxKq*Nj<}O{lcAHz_|Go6Ytzp&UX% zV9T6c%EL5^?=nS@isy8vA2Rl#P3=RB;z`<|FT^`^^pGKYO^>4*P=B~HrYKkvwbK&! z<5-;|u=uw`=yAnK=d^s|;WLHLJ&gyQ<)va#qfdon1AUR7~VW|xRf zUyerF&1-2{e-W^_W^z5n7dX)?9cI%p1+_x>Lg3 zEfuE+^|HzKqNq2ft{HWwP?#3ft4wkj?SnZ;@CCel-H;kv%{cp+|A5zJ|jRV(W?x?TT@emdd6&OF^5Cq zTo*9U)975FB%(LZZ&Q=`UX#AZxrSVPb`AhOmes`Wgy7jiG8YwG^?Rg9H*fTZ-1~>q`0TmQm}o zpS7-|nZpS84(Cv>)s2eqlqkd4s>W#|WFW;nIZJ}et0XM!s0>_o0i_Pq@tE%z{8J6Z znjg%${dNvysNsG$CoOYSVUi+fy(%*{of2WSwjH4jO7UhD(dPHX$u7DXvp~^omW|dm z4i2r2@z~sc)Srjd4iCOQd1NQacn4AMgogr*3@M2I^2t|0+z$!;h9NS?P8aR_4a*!A z87G}1l-PZG$?_gw>#M3agT`?uI2wZ_Fbe=6l)pfgr(d{yVym>LFYA9Ja8H>p^n>{& z;ZsbkJo$&6LDcCKV+RjPiH%ACr7K&BMH`K)3=F_2N&NvMiELXxw04%@I**_7!Up!HPF}2 zFC)uMuT!5J%_>t12JS-$VwhXW{yHl;Y#IM_i|CJZzE`huLir8K!3gfZqj4X{j@Mb* zUBdY8dK12l4GO*spsl2x+iZ_|lpITGYgHb7akDrm6akJtlLHT((!DU+Wk3O1(i-X% zW)%&msD4x??mQfev>Jc`8e3>B>R!>cuy5IlHQ20-0X#a-e@$DjRrb$9lGBip`L%%S z4$!5Kiz~*?j~4L)E__ouT?kOGVN;tpzFTJKj-+u7P`fa8?$Yu1NPl)1rH{CwYEkAl z6W{pqLKdXyoQoQd0oZx^OM`b#Te6W!D+5Jt@Xyh@dylq? zbIQ6yj4=ckUJ1v~T8Dyi78~Qc_oT=?sPD=$A0dfn95gDjzm)-^1ZF0o?Ze0EYWi7U znWH2|j>Wh+rPEorzQc%ckGRuJX^&wm5@j1f`9lE9lw}|PKR}=YC>fXYj5HwG$>XVz zG}*RLNJshrApM5TqaIq__gHIt*JF3l8e#3cUS*S*Pd+@oWT$}9-Q9fJnTxv(hJA4O zH5rBFU2GSmB*UPVfzO8F7z41Euf#Y-f@bw_`NZoJ`_9ZI$1ibTc9iVPMG?tH$tnX^*ttb+r2G{0G70=XJUot%i=;@v2S^oKMt*B)&^wot6ocoWqz&T=d=)8& zH-Rnm9)DM{fEKyfVc1CvMQgZ}D`rP>f^bXu99}%ri9U<53X#?UUaw(TrV}H+okATb zQ2peQlVs<5T)6z>h1IUh$F_4|1$7;;&`f*5Nph@uz&w^s`dIcLh7=?-31{+LHoq~6 z(KC^gukswCb2xuG7yy!@YW6$D%@{^e6!vI415hG{aCB(OG@zXGPm1W9_zz-dW05lv zM)<~vgTNFn9XKg3P#?g?88v^|m^UOe`Hz?r z$4V7?1V8l!3R-p6#6x=}Q>(DrT0;`dvbB9{mUj_Xa7)FJQW4ffKD~Axy{$%afYL*7 zcFEr7SPTI7pAowN)aT@wZ}pE_2+lBM*V_8Ub1zNoI216QvD5yQ95qRKS@vzC+j}!7 zZ*5j~*%3s9NIsddi*~Z#_8d)Y#xb7du|;{_&RJLr3x)UBGJwQ1;RVE%Z71mP$}!Xr z(?8y+=J49us!!s**xbD(;EAZW(~mH){z2A}%OAyjnLF0AN1-bNWW`3(5So=3CaDbc zXbe_mWwTMqa=K_)rE~H~_oJQB`{SpDHtTZK`H(MX0?%cVNcePnhI6 zWH}Y-KpBA14zS)p+`LwaeMnJ|^oB|U133^ZesyJ6*P<^KfLXf3Un*drYtQ*o-pxC| zR?RwI?i5fTWC?J@LKIgB-qQzNJ7+orO&1b+AajETlt`VzrEWVww}`Z7Z5=m`l&azL za9TW!zgFb6ly!>Qc1;(dF=yH`mDS~^oV-uQG5|vxiJ!U0|$cqp~|kfAgVC{Ap+oZ?h)katvobk^Ij2kSLhIjLJL_Fm}R{( zFrzC#kuwluO02SvbE{Bcx@a%c8FjNwVw!lTjM^K&SJD;7!ywiCE4-&xuNH0(?W~({ zbdZlkwmx5xMxr8p4J&Z}MRuQa}59Gm{MVqs5z?j(g_Ea@&?do2+SrJO)RY;^S zB1*iUu`zP8XwOrGZ+u^g zvbxyvbE7dVE2e?uX3MZfWqy*eQLJkP$O7SxKgO1QXy4pWFY#y>< zs~_-B4tZy@@hAcBujO37h zIl0*`ZB_1B4PRKTWallvL?B9KJtPu817*fUB=OM6^XbV;=U?{aDYO(5 zIWqZL`&sG}-W*D7JIFz)-YIi9lOf1eCKXU2cZj1)_k% zi+>oM*uQ7;$g>mA?2c*69KUfDUd^B(i?x>HRe9^JwY5^nXg8NOqQS zAn_4vy(+}W?_#Rhk*~&8pcs>+ml6pB!BXCjo8TXGD|pLbzEtlP25;6KTlPx|^=)I$ z80uJj?_iw5xO|75RyS%b3Z;?aoUScthhw0nZHkC6JB@<(JgZ?#O>Rq_WoI%4{xwn? z4uZyEwwSlfxp;mzCRP}KbaL;3$-O&O=H^`U^C<(4 zwJGc7L{w+qYy!(LyGYZCrNYC5Est|fu6Hhe`1Ivh-@Y<-U}E21^hHu|!fJd2b6VZ3 zI4-mi)z<1zEzq&& zSYuV>6wzwvb0%%;4YuDtj^;hc*wBcLv8(vP*h5dStH2c_S-sQE(tw>LG#Fea1=vluQbxNR-v?M-$z$M(}Da-2@y zld88Y;3w9s8!4CZh)oA9cJ?S~`6bc&l4Qirm}^*&EqA;OTN8))=tO^miKm{ysfT9# z>n7=IZ(V-rq&QCo!5mImcLN@DHhJ{&haZq{n;hQp?RZyZ7z1;(KYsv{_tcQhWSSFa zd!>HLkcVzGf}n#TLKTm>%M&}#Ouq7*e>uxgQR(nLddA751X?^t;~)v&`<-~ez+-1X zMYQpUvb4!Qc9`XCnYokq7q4hzwnFSB-gE?M<%^rMYW8}~D~c0QkDXSHdiGp=cMr^* zF=xC1H}j@GAkrM@#2&Hkmc^n3ABq1j8fukmdul1ga(O%GdiBVmT}Uy6Ycz;9VjmMSRF1x%GaWmESfpyh^DwdZ37`lK z)fBR3Ih-i{o{aEd(^xh(x5tMM3+MpdV+t;eZXse_Z!|eMD>X^%cfxT@yfBwDYzU2w zW`A==NIkp_mx|7ou$jGbX!8qH*Q#;RtR%;RY}#V$1dWtBEmp46M$uDmbU26_BAhW1 zODGpavd0RYvJDg0WR6wUmB$S%{ys`28vSL@9O+qm2)K6fX_c=lJ!x$ekZ;RPyG=OG>LuvY8x_LCED zzb*onqVT`#!r0R^B^We`LTJOs;C9{=L`kCAERy^9zdJa`9@8ua1xm$+1ql28oA`Qj z8#^GPluYqWVh@W0ngfvzS@)|lI0Ho+ZfR^U@1`VdE3~1lj~j9h5R30BWvKMqZ;nZl z5i)TU;aNp`R*IUXt;(ovqj2M}!Wf!^pP3R?`#74tl9$G#7C$}}T8}o~*3b~^5{);M z>@REe+v$zuHCV_FX2}9Vs?AkDrES72KXd_rDO2Awrtdc46B9Ew>1=V*C1ee2Yf9@o zwb0m#2?8={Q6LPuz11ku*DvZ?JbzVB--ad2=J(KM1?4?<;io)`uAi7bXjHGnavhBO z#rIykcy1Tj!$q#p_MZy*i5W0#kBjOiF8IpD+lbAv6F~1M4_%RK@eV8R2E-jAyJ+i? z++n*&_6iVm~qu`l~t3v(_k0&kIU(8Q&|%oN9y6O=1qID7GW6mn~wbI5f%{bP6VH zscIBia<)D_dEgB+$F3U3m{4#v-hvp7c#Su$x^O_CxiSI~&3Ab$u1@FO)Y{q-qa3O6 zdf-Hy_sBtdQ`3!|){@>;SPeqQFc0)h0>8|DRmDhXEft}mJZPIFF$J_q9HX#TvC@KQKV=k_Shp$kwu%BO zu%Za%HpC%hg$LRoN>xO3q=NxqGgs0M9|p^3b8VgXXB=!EiQ8+>5{LeJxkP$ zYtXEA9>{R2)JiHpQLGx3pJ>l~|29xvb5*zIA7ndP;!d7jcumQk-IjmjFUcyBk|{z$ zv!kyj_U~m=fLiixf6y4uj6M+m* zcVQtV%*pZGwZ-)~#eL*WOXy8wQ&Z%PakYqXr>IoH)j>31k=aR=f=@l-OEXp(q}y2& zy1A(l|1wHuS137OJJ)va($$=Fuff`r}KqB3rAV3jel{5DX@yW?rJ zoZEBI*o--onzT_=eVoO76=a%2Lt^J>d0%}IJ4sEgO}aUz51|sJqTBRoHmflKZZ-!Y z#;ZIrlHO1WWAJXSc#DRin*E!a9heS*!!{eW^(qFwA^eEP4(4SELu4lt^Ja-UCde%f zjiEQKsa7>t{gfKQ3Z_R~sOiYT1yz3v7QDGg*6``GrQ5|X2TSwIT zwTAYa&Fu?YEwtOx+7|X#WQ%12*J=jGzR+pApl7|9eC?2wR{V$xfcFC?$nCKMbw4JP zvh%1Q)S%x_cYc)XmffDCU|Y@CIx9D3M`&YP)wej=ZY@~0RJB-%$d-|5=TJ&YZE^~E z2Lp2A)EqL})%hs3UIj}1rGWvbV5WKz&6G~q*M?i0`2;RGBrvClsjLF_O%1*7N*KT>>3OQ&njBjhv=tPpb)&;7oS;t+S!1l+pH6W=+0q-*eE9 z9*#ihgP9=>_pk%U$G-UsR1d#)4!7)mURf~{J0807)bp25Ji$(5ldl{lGy-I-+3g~y z!=;zsy>$2k|0))+ucH>|WO9srnszB)cYnUt)RESzIx+@l?7Tw}3^A;;J%D#rv)Bu4me5aRHz_Uo-!2_|9eihCR-IL%M2FeDjTb8t7ky5koTXF!E@-$e z=oPYY;Z=GlHukWOSX=8922M0@8aMH2dWS8><|hU_N~2;x4c|{UUL6(iiX27!Rzk-P zAEY^vo14##lG(~EC+ETBj<6MGbUQ~wP_)N5t?cWk=*?dF3Hr5L!jZ<1JIc^TyLoS2 zYUl6;8hsHbOG*d6VD%Cy5{j|h?9$G6Fch-Cs)Y;Yo=foWbLZk%YKK|msb4+6yAMv( ze)fkUdy}4uQ(@^`_`=v3Em{Pus6AsB#-58GkH!XbrY3XaC=J>9jHz9+i+x6<1gWN7 zvwfu=UPGKt`^Dh1RksKLq3qdumwgdv;-LpI>8zN9m^>psKIV*-g9W!V;!}kOhhB